diff --git a/.buildinfo b/.buildinfo new file mode 100644 index 000000000..e776ae29b --- /dev/null +++ b/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: 61ade23f5fa4a2c2962ce17c94d589a5 +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 000000000..e69de29bb diff --git a/BlockStream/Assignments/SignalAssignment.html b/BlockStream/Assignments/SignalAssignment.html new file mode 100644 index 000000000..9f923f350 --- /dev/null +++ b/BlockStream/Assignments/SignalAssignment.html @@ -0,0 +1,179 @@ + + + + + + + Signal Assignment — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Signal Assignment

+
+

SignalAssignmentBlock

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/Assignments/VariableAssignment.html b/BlockStream/Assignments/VariableAssignment.html new file mode 100644 index 000000000..6480f1c8c --- /dev/null +++ b/BlockStream/Assignments/VariableAssignment.html @@ -0,0 +1,179 @@ + + + + + + + Variable Assignment — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Variable Assignment

+
+

VariableAssignmentBlock

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/Assignments/index.html b/BlockStream/Assignments/index.html new file mode 100644 index 000000000..b2ea97492 --- /dev/null +++ b/BlockStream/Assignments/index.html @@ -0,0 +1,183 @@ + + + + + + + Assignments — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Assignments

+

VHDL distinguishes two assignment statements based on the kind of object the +assignment is targeting.

+ +
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/Attributes/AttributeDeclaration.html b/BlockStream/Attributes/AttributeDeclaration.html new file mode 100644 index 000000000..078bac846 --- /dev/null +++ b/BlockStream/Attributes/AttributeDeclaration.html @@ -0,0 +1,179 @@ + + + + + + + Attribute Declaration — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Attribute Declaration

+
+

AttributeDeclarationBlock

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/Attributes/AttributeSpecification.html b/BlockStream/Attributes/AttributeSpecification.html new file mode 100644 index 000000000..ce2c0c7a3 --- /dev/null +++ b/BlockStream/Attributes/AttributeSpecification.html @@ -0,0 +1,179 @@ + + + + + + + Attribute Specification — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Attribute Specification

+
+

AttributeSpecificationBlock

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/Attributes/index.html b/BlockStream/Attributes/index.html new file mode 100644 index 000000000..6cbadc123 --- /dev/null +++ b/BlockStream/Attributes/index.html @@ -0,0 +1,181 @@ + + + + + + + Attributes — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Attributes

+ +
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/BlockGenerator.html b/BlockStream/BlockGenerator.html new file mode 100644 index 000000000..f3f240a56 --- /dev/null +++ b/BlockStream/BlockGenerator.html @@ -0,0 +1,156 @@ + + + + + + + Block Generator — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Block Generator

+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/CommonBlocks.html b/BlockStream/CommonBlocks.html new file mode 100644 index 000000000..0ee2577d3 --- /dev/null +++ b/BlockStream/CommonBlocks.html @@ -0,0 +1,161 @@ + + + + + + + Common Blocks — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Common Blocks

+
+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/ControlStructures/Case.html b/BlockStream/ControlStructures/Case.html new file mode 100644 index 000000000..156f435e9 --- /dev/null +++ b/BlockStream/ControlStructures/Case.html @@ -0,0 +1,209 @@ + + + + + + + Case Statement — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Case Statement

+
+

EndBlock

+

pyVHDLParser.Blocks.Generic1.EndBlock

+
+
+

ArrowBlock

+

pyVHDLParser.Blocks.Generic.SequentialBeginBlock

+
+
+

WhenExpressionBlock

+

pyVHDLParser.Blocks.BaseExpression.ExpressionBlockEndedByCharORClosingRoundBracket

+
+
+

WhenBlock

+

pyVHDLParser.Blocks.Generic.SequentialBeginBlock

+
+
+

IsBlock

+

pyVHDLParser.Blocks.Generic.SequentialBeginBlock

+
+
+

CaseExpressionBlock

+

pyVHDLParser.Blocks.BaseExpression.ExpressionBlockEndedByKeywordORClosingRoundBracket

+
+
+

CaseBlock

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/ControlStructures/Exit.html b/BlockStream/ControlStructures/Exit.html new file mode 100644 index 000000000..b8036bde2 --- /dev/null +++ b/BlockStream/ControlStructures/Exit.html @@ -0,0 +1,193 @@ + + + + + + + Exit Statement — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Exit Statement

+
+

EndBlock

+

pyVHDLParser.Blocks.Generic1.EndOfStatementBlock

+
+
+

ExitConditionBlock

+

pyVHDLParser.Blocks.BaseExpression.ExpressionBlockEndedBySemicolon

+
+
+

ExitBlock

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/ControlStructures/For.html b/BlockStream/ControlStructures/For.html new file mode 100644 index 000000000..49a2d428e --- /dev/null +++ b/BlockStream/ControlStructures/For.html @@ -0,0 +1,204 @@ + + + + + + + For Loop — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

For Loop

+
+

IteratorBlock

+
+
+

EndBlock

+

pyVHDLParser.Blocks.Generic1.EndBlock

+
+
+

LoopBlock

+

pyVHDLParser.Blocks.Generic.SequentialBeginBlock

+
+
+

ExpressionBlockEndedByLoopORToORDownto

+

pyVHDLParser.Blocks.BaseExpression.ExpressionBlockEndedByKeywordOrToOrDownto

+
+
+

ExpressionBlockEndedByLoop

+

pyVHDLParser.Blocks.BaseExpression.ExpressionBlockEndedByKeywordORClosingRoundBracket

+
+
+

LoopIterationDirectionBlock

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/ControlStructures/If.html b/BlockStream/ControlStructures/If.html new file mode 100644 index 000000000..4ee292839 --- /dev/null +++ b/BlockStream/ControlStructures/If.html @@ -0,0 +1,204 @@ + + + + + + + If Statement — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

If Statement

+
+

EndBlock

+

pyVHDLParser.Blocks.Generic1.EndBlock

+
+
+

ThenBlock

+

pyVHDLParser.Blocks.Generic.SequentialBeginBlock

+
+
+

ElseBlock

+

pyVHDLParser.Blocks.Generic.SequentialBeginBlock

+
+
+

ExpressionBlockEndedByThen

+

pyVHDLParser.Blocks.BaseExpression.ExpressionBlockEndedByKeywordORClosingRoundBracket

+
+
+

IfConditionBlock

+
+
+

ElsIfConditionBlock

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/ControlStructures/Next.html b/BlockStream/ControlStructures/Next.html new file mode 100644 index 000000000..b5146c4ce --- /dev/null +++ b/BlockStream/ControlStructures/Next.html @@ -0,0 +1,193 @@ + + + + + + + Next Statement — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Next Statement

+
+

EndBlock

+

pyVHDLParser.Blocks.Generic1.EndOfStatementBlock

+
+
+

NextConditionBlock

+

pyVHDLParser.Blocks.BaseExpression.ExpressionBlockEndedBySemicolon

+
+
+

NextBlock

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/ControlStructures/Null.html b/BlockStream/ControlStructures/Null.html new file mode 100644 index 000000000..aabccbe66 --- /dev/null +++ b/BlockStream/ControlStructures/Null.html @@ -0,0 +1,189 @@ + + + + + + + Null Statement — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Null Statement

+
+

EndBlock

+

pyVHDLParser.Blocks.Generic1.EndOfStatementBlock

+
+
+

NullBlock

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/ControlStructures/Return.html b/BlockStream/ControlStructures/Return.html new file mode 100644 index 000000000..e9cb429f2 --- /dev/null +++ b/BlockStream/ControlStructures/Return.html @@ -0,0 +1,193 @@ + + + + + + + Return Statement — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Return Statement

+
+

EndBlock

+

pyVHDLParser.Blocks.Generic1.EndOfStatementBlock

+
+
+

ReturnExpressionBlock

+

pyVHDLParser.Blocks.BaseExpression.ExpressionBlockEndedBySemicolon

+
+
+

ReturnBlock

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/ControlStructures/While.html b/BlockStream/ControlStructures/While.html new file mode 100644 index 000000000..9809b5927 --- /dev/null +++ b/BlockStream/ControlStructures/While.html @@ -0,0 +1,189 @@ + + + + + + + While Loop — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

While Loop

+
+

EndBlock

+

pyVHDLParser.Blocks.Generic1.EndBlock

+
+
+

ConditionBlock

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/ControlStructures/index.html b/BlockStream/ControlStructures/index.html new file mode 100644 index 000000000..0947b6b2c --- /dev/null +++ b/BlockStream/ControlStructures/index.html @@ -0,0 +1,196 @@ + + + + + + + Control Structures — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Control Structures

+

VHDL has two control flow statements: if and case; two loop statements: +for and while; two loop control statements: next and exit; and +finally two miscellaneous statements: return and null.

+ +
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/Examples.html b/BlockStream/Examples.html new file mode 100644 index 000000000..e51b08f23 --- /dev/null +++ b/BlockStream/Examples.html @@ -0,0 +1,185 @@ + + + + + + + Examples — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Examples

+
+

List all entity names

+

The following example lists all entity names from a given source file. To have +full forward and backward linking between blocks, the chain of blocks must be +fully generated. One easy approach is to use a list comprehension.

+

VHDL Sourcefile

+
entity myEntity_1 is
+end;
+
+entity myEntity_2 is
+end;
+
+
+

Expected Outputs

+
Found entity: myEntity_1
+Found entity: myEntity_2
+
+
+

Algorithm

+
+

Todo

+

Document algorithm

+
+

Drawbacks

+

Now drawbacks compare to the purely token-base solution.

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/Expressions.html b/BlockStream/Expressions.html new file mode 100644 index 000000000..e6f98f02d --- /dev/null +++ b/BlockStream/Expressions.html @@ -0,0 +1,279 @@ + + + + + + + Expressions — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Expressions

+

BaseExpression blocks are base-classes for a specific expression implementation. All +four expression base-classes are derived from another base-class called ExpressionBlock +E.g. ConstantDeclarationDefaultExpressionBlock +is derived from ExpressionBlockEndedBySemicolon.

+
+

Generic BaseExpression Form

+
+

ExpressionBlock

+

Condensed definition of class ExpressionBlock:

+
@Export
+class ExpressionBlock(Block):
+  CHARACTER_TRANSLATION = {
+    "=":    EqualOperator,
+    "+":    PlusOperator,
+    "-":    MinusOperator,
+    "*":    MultiplyOperator,
+    "/":    DivideOperator,
+    "&":    ConcatOperator,
+    "<":    LessThanOperator,
+    ">":    GreaterThanOperator,
+    ",":    DelimiterToken
+    # ";":    EndToken
+  }
+  FUSED_CHARACTER_TRANSLATION = {
+    "**":   PowerOperator,
+    "/=":   UnequalOperator,
+    "<=":   LessThanOrEqualOperator,
+    ">=":   GreaterThanOrEqualOperator,
+    "?=":   MatchingEqualOperator,
+    "?/=":  MatchingUnequalOperator,
+    "?<":   MatchingLessThanOperator,
+    "?<=":  MatchingLessThanOrEqualOperator,
+    "?>":   MatchingGreaterThanOperator,
+    "?>=":  MatchingGreaterThanOrEqualOperator
+    # "=>":   MapAssociationKeyword,
+    # "<=>":  SignalAssociationKeyword
+  }
+  OPERATOR_TRANSLATIONS = {
+    "or":    OrKeyword,
+    "nor":   NorKeyword,
+    "and":   AndKeyword,
+    "nand":  NandKeyword,
+    "xor":   XorKeyword,
+    "xnor":  XnorKeyword,
+    "sla":   SlaKeyword,
+    "sll":   SllKeyword,
+    "sra":   SraKeyword,
+    "srl":   SrlKeyword,
+    "not":   NotKeyword,
+    "abs":   AbsKeyword
+  }
+
+
+
+
+
+

Specific BaseExpression Forms

+

Expressions can be ended by:

+
+
) or a user-defined character

See ExpressionBlockEndedByCharORClosingRoundBracket

+
+
+
    +
  • ) or a user-defined keyword +See ExpressionBlockEndedByKeywordORClosingRoundBracket

  • +
  • to or downto keyword +See ExpressionBlockEndedByKeywordOrToOrDownto

  • +
  • ; +See ExpressionBlockEndedBySemicolon

  • +
+
+

ExpressionBlockEndedByCharORClosingRoundBracket

+

This block is derived from ExpressionBlock. +It implements an expression that is either ended by a closing round bracket +(``)``) or a user-defined character. When this base-class is inherited, the user +needs to overwrite:

+
+
EXIT_CHAR

The character causing this parser to exit and close this expression block.

+
+
EXIT_TOKEN

The token that is emitted as a replacement for the CharacterToken.

+
+
EXIT_BLOCK

The block that is generated when exiting the block.

+
+
+

Condensed definition of class ExpressionBlockEndedByCharORClosingRoundBracket:

+
@Export
+class ExpressionBlockEndedByCharORClosingRoundBracket(ExpressionBlock):
+  EXIT_CHAR  : str =   None
+  EXIT_TOKEN : Token = None
+  EXIT_BLOCK : Block = None
+
+  @classmethod
+  def stateBeforeExpression(cls, parserState: ParserState):
+
+  @classmethod
+  def stateExpression(cls, parserState: ParserState):
+
+  @classmethod
+  def stateWhitespace1(cls, parserState: ParserState):
+
+
+
+
+

ExpressionBlockEndedByKeywordORClosingRoundBracket

+

This block is derived from ExpressionBlock.

+
+
+

ExpressionBlockEndedByKeywordOrToOrDownto

+

This block is derived from ExpressionBlock.

+
+
+

ExpressionBlockEndedBySemicolon

+

This block is derived from ExpressionBlock.

+
+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/Generates/CaseGenerate.html b/BlockStream/Generates/CaseGenerate.html new file mode 100644 index 000000000..3737b42f5 --- /dev/null +++ b/BlockStream/Generates/CaseGenerate.html @@ -0,0 +1,177 @@ + + + + + + + Case Generate Statement — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Case Generate Statement

+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/Generates/ForGenerate.html b/BlockStream/Generates/ForGenerate.html new file mode 100644 index 000000000..fe5c8d0bd --- /dev/null +++ b/BlockStream/Generates/ForGenerate.html @@ -0,0 +1,177 @@ + + + + + + + For Generate Statement — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

For Generate Statement

+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/Generates/IfGenerate.html b/BlockStream/Generates/IfGenerate.html new file mode 100644 index 000000000..7c3df6faa --- /dev/null +++ b/BlockStream/Generates/IfGenerate.html @@ -0,0 +1,177 @@ + + + + + + + If Generate Statement — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

If Generate Statement

+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/Generates/index.html b/BlockStream/Generates/index.html new file mode 100644 index 000000000..22b69c7b3 --- /dev/null +++ b/BlockStream/Generates/index.html @@ -0,0 +1,185 @@ + + + + + + + Generate Statements — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Generate Statements

+

VHDL supports three different generate-statements: if, case and +for generate.

+ +
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/Instantiation/Entity.html b/BlockStream/Instantiation/Entity.html new file mode 100644 index 000000000..dc7e32a56 --- /dev/null +++ b/BlockStream/Instantiation/Entity.html @@ -0,0 +1,178 @@ + + + + + + + Entity Instantiation — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Entity Instantiation

+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/Instantiation/Function.html b/BlockStream/Instantiation/Function.html new file mode 100644 index 000000000..ba28e1521 --- /dev/null +++ b/BlockStream/Instantiation/Function.html @@ -0,0 +1,178 @@ + + + + + + + Function Instantiation — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Function Instantiation

+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/Instantiation/Package.html b/BlockStream/Instantiation/Package.html new file mode 100644 index 000000000..089d3d140 --- /dev/null +++ b/BlockStream/Instantiation/Package.html @@ -0,0 +1,178 @@ + + + + + + + Package Instantiation — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Package Instantiation

+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/Instantiation/Procedure.html b/BlockStream/Instantiation/Procedure.html new file mode 100644 index 000000000..e83c5d7f3 --- /dev/null +++ b/BlockStream/Instantiation/Procedure.html @@ -0,0 +1,178 @@ + + + + + + + Procedure Instantiation — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Procedure Instantiation

+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/Instantiation/index.html b/BlockStream/Instantiation/index.html new file mode 100644 index 000000000..202152183 --- /dev/null +++ b/BlockStream/Instantiation/index.html @@ -0,0 +1,185 @@ + + + + + + + Instantiations — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Instantiations

+ +
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/Lists/GenericList.html b/BlockStream/Lists/GenericList.html new file mode 100644 index 000000000..0ee08e192 --- /dev/null +++ b/BlockStream/Lists/GenericList.html @@ -0,0 +1,180 @@ + + + + + + + Generic List — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Generic List

+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/Lists/GenericMap.html b/BlockStream/Lists/GenericMap.html new file mode 100644 index 000000000..767c306f4 --- /dev/null +++ b/BlockStream/Lists/GenericMap.html @@ -0,0 +1,180 @@ + + + + + + + Generic Map — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Generic Map

+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/Lists/ParameterList.html b/BlockStream/Lists/ParameterList.html new file mode 100644 index 000000000..10d1587fd --- /dev/null +++ b/BlockStream/Lists/ParameterList.html @@ -0,0 +1,180 @@ + + + + + + + Parameter List — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Parameter List

+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/Lists/PortList.html b/BlockStream/Lists/PortList.html new file mode 100644 index 000000000..487604157 --- /dev/null +++ b/BlockStream/Lists/PortList.html @@ -0,0 +1,180 @@ + + + + + + + Port List — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Port List

+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/Lists/PortMap.html b/BlockStream/Lists/PortMap.html new file mode 100644 index 000000000..bd7574b49 --- /dev/null +++ b/BlockStream/Lists/PortMap.html @@ -0,0 +1,180 @@ + + + + + + + Port Map — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Port Map

+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/Lists/SensitivityList.html b/BlockStream/Lists/SensitivityList.html new file mode 100644 index 000000000..64fa20178 --- /dev/null +++ b/BlockStream/Lists/SensitivityList.html @@ -0,0 +1,180 @@ + + + + + + + Sensitivity List — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Sensitivity List

+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/Lists/index.html b/BlockStream/Lists/index.html new file mode 100644 index 000000000..0c54dc700 --- /dev/null +++ b/BlockStream/Lists/index.html @@ -0,0 +1,189 @@ + + + + + + + Lists and Maps — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Lists and Maps

+ +
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/MetaBlocks.html b/BlockStream/MetaBlocks.html new file mode 100644 index 000000000..881aed091 --- /dev/null +++ b/BlockStream/MetaBlocks.html @@ -0,0 +1,179 @@ + + + + + + + Meta Blocks — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Meta Blocks

+

There are two meta-blocks: StartOfDocumentBlock +and EndOfDocumentBlock. These blocks represent +a start and end of a token stream. These blocks have a length of 0 characters.

+
+

StartOfDocumentBlock

+

This block starts a chain of double-linked blocks in a block stream. It’s used, +if the input source is a whole file, otherwise StartOfSnippetBlock. +It is derived from base-class StartOfBlock +and mixin StartOfDocument.

+

Interitance diagram:

+
+
+

EndOfDocumentBlock

+

This block ends a chain of double-linked blocks in a block stream. It’s used, +if the input source is a whole file, otherwise EndOfSnippetBlock. +It is derived from base-class EndOfBlock +and mixin EndOfDocument.

+

Interitance diagram:

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/Objects/BaseClasses.html b/BlockStream/Objects/BaseClasses.html new file mode 100644 index 000000000..86585e999 --- /dev/null +++ b/BlockStream/Objects/BaseClasses.html @@ -0,0 +1,187 @@ + + + + + + + Base Classes — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Base Classes

+
+

ObjectDeclarationBlock

+
+
+

ObjectDeclarationEndMarkerBlock

+

pyVHDLParser.Blocks.Generic1.EndOfStatementBlock

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/Objects/Constant.html b/BlockStream/Objects/Constant.html new file mode 100644 index 000000000..42fb81e27 --- /dev/null +++ b/BlockStream/Objects/Constant.html @@ -0,0 +1,192 @@ + + + + + + + Constants — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Constants

+
+

ConstantDeclarationEndMarkerBlock

+

pyVHDLParser.Blocks.Object.ObjectDeclarationEndMarkerBlock

+
+
+

ConstantDeclarationDefaultExpressionBlock

+

pyVHDLParser.Blocks.BaseExpression.ExpressionBlockEndedBySemicolon

+
+
+

ConstantDeclarationBlock

+

pyVHDLParser.Blocks.Object.ObjectDeclarationBlock

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/Objects/File.html b/BlockStream/Objects/File.html new file mode 100644 index 000000000..f71e06b86 --- /dev/null +++ b/BlockStream/Objects/File.html @@ -0,0 +1,180 @@ + + + + + + + File — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

File

+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/Objects/SharedVariable.html b/BlockStream/Objects/SharedVariable.html new file mode 100644 index 000000000..78ce95727 --- /dev/null +++ b/BlockStream/Objects/SharedVariable.html @@ -0,0 +1,188 @@ + + + + + + + Shared Variables — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Shared Variables

+
+

SharedVariableDeclarationEndMarkerBlock

+

pyVHDLParser.Blocks.Object.ObjectDeclarationEndMarkerBlock

+
+
+

SharedVariableDeclarationBlock

+

pyVHDLParser.Blocks.Object.ObjectDeclarationBlock

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/Objects/Signal.html b/BlockStream/Objects/Signal.html new file mode 100644 index 000000000..8748329aa --- /dev/null +++ b/BlockStream/Objects/Signal.html @@ -0,0 +1,192 @@ + + + + + + + Signals — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Signals

+
+

SignalDeclarationEndMarkerBlock

+

pyVHDLParser.Blocks.Object.ObjectDeclarationEndMarkerBlock

+
+
+

SignalDeclarationDefaultExpressionBlock

+

pyVHDLParser.Blocks.BaseExpression.ExpressionBlockEndedBySemicolon

+
+
+

SignalDeclarationBlock

+

pyVHDLParser.Blocks.Object.ObjectDeclarationBlock

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/Objects/Variable.html b/BlockStream/Objects/Variable.html new file mode 100644 index 000000000..f8b7bf443 --- /dev/null +++ b/BlockStream/Objects/Variable.html @@ -0,0 +1,192 @@ + + + + + + + Variables — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Variables

+
+

VariableDeclarationEndMarkerBlock

+

pyVHDLParser.Blocks.Object.ObjectDeclarationEndMarkerBlock

+
+
+

VariableDeclarationDefaultExpressionBlock

+

pyVHDLParser.Blocks.BaseExpression.ExpressionBlockEndedBySemicolon

+
+
+

VariableDeclarationBlock

+

pyVHDLParser.Blocks.Object.ObjectDeclarationBlock

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/Objects/index.html b/BlockStream/Objects/index.html new file mode 100644 index 000000000..e7f675ced --- /dev/null +++ b/BlockStream/Objects/index.html @@ -0,0 +1,212 @@ + + + + + + + Objects — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ + + +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/References/Context.html b/BlockStream/References/Context.html new file mode 100644 index 000000000..3039f565a --- /dev/null +++ b/BlockStream/References/Context.html @@ -0,0 +1,177 @@ + + + + + + + Context Statement — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Context Statement

+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/References/Library.html b/BlockStream/References/Library.html new file mode 100644 index 000000000..d05b5b730 --- /dev/null +++ b/BlockStream/References/Library.html @@ -0,0 +1,177 @@ + + + + + + + LibraryStatement Statement — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

LibraryStatement Statement

+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/References/Use.html b/BlockStream/References/Use.html new file mode 100644 index 000000000..85e828b1c --- /dev/null +++ b/BlockStream/References/Use.html @@ -0,0 +1,177 @@ + + + + + + + Use Statement — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Use Statement

+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/References/index.html b/BlockStream/References/index.html new file mode 100644 index 000000000..a5a96540b --- /dev/null +++ b/BlockStream/References/index.html @@ -0,0 +1,183 @@ + + + + + + + References — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

References

+ +
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/Reporting/Assert.html b/BlockStream/Reporting/Assert.html new file mode 100644 index 000000000..0581b47a1 --- /dev/null +++ b/BlockStream/Reporting/Assert.html @@ -0,0 +1,180 @@ + + + + + + + Assert Statement — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Assert Statement

+
+

Todo

+

Not yet implemented. Thus no documentation available.

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/Reporting/Report.html b/BlockStream/Reporting/Report.html new file mode 100644 index 000000000..a1b44db02 --- /dev/null +++ b/BlockStream/Reporting/Report.html @@ -0,0 +1,180 @@ + + + + + + + Report Statement — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Report Statement

+
+

Todo

+

Not yet implemented. Thus no documentation available.

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/Reporting/index.html b/BlockStream/Reporting/index.html new file mode 100644 index 000000000..d8f13f0f9 --- /dev/null +++ b/BlockStream/Reporting/index.html @@ -0,0 +1,181 @@ + + + + + + + Reporting — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Reporting

+ +
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/Sequential/Function.html b/BlockStream/Sequential/Function.html new file mode 100644 index 000000000..a49d4c61e --- /dev/null +++ b/BlockStream/Sequential/Function.html @@ -0,0 +1,197 @@ + + + + + + + Function — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Function

+
+

EndBlock

+

EndBlockBase

+
+
+

BeginBlock

+

SequentialBeginBlock

+
+
+

DeclarativeRegion

+

SequentialDeclarativeRegion

+
+
+

NameBlock

+
+
+

ReturnTypeBlock

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/Sequential/Package.html b/BlockStream/Sequential/Package.html new file mode 100644 index 000000000..a23cba4f0 --- /dev/null +++ b/BlockStream/Sequential/Package.html @@ -0,0 +1,190 @@ + + + + + + + Package — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Package

+
+

EndBlock

+

EndBlockBase

+
+
+

DeclarativeRegion

+

SequentialDeclarativeRegion

+
+
+

NameBlock

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/Sequential/PackageBody.html b/BlockStream/Sequential/PackageBody.html new file mode 100644 index 000000000..9f332319f --- /dev/null +++ b/BlockStream/Sequential/PackageBody.html @@ -0,0 +1,190 @@ + + + + + + + Package Body — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Package Body

+
+

EndBlock

+

EndBlockBase

+
+
+

DeclarativeRegion

+

SequentialDeclarativeRegion

+
+
+

NameBlock

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/Sequential/Procedure.html b/BlockStream/Sequential/Procedure.html new file mode 100644 index 000000000..035917f30 --- /dev/null +++ b/BlockStream/Sequential/Procedure.html @@ -0,0 +1,197 @@ + + + + + + + Procedure — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Procedure

+
+

EndBlock

+

EndBlockBase

+
+
+

BeginBlock

+

SequentialBeginBlock

+
+
+

DeclarativeRegion

+

SequentialDeclarativeRegion

+
+
+

NameBlock

+
+
+

VoidBlock

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/Sequential/Process.html b/BlockStream/Sequential/Process.html new file mode 100644 index 000000000..9cde7961f --- /dev/null +++ b/BlockStream/Sequential/Process.html @@ -0,0 +1,197 @@ + + + + + + + Process — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Process

+
+

EndBlock

+

EndBlockBase

+
+
+

BeginBlock

+

SequentialBeginBlock

+
+
+

DeclarativeRegion

+

SequentialDeclarativeRegion

+
+
+

OpenBlock

+
+
+

OpenBlock2

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/Sequential/index.html b/BlockStream/Sequential/index.html new file mode 100644 index 000000000..fa747aa02 --- /dev/null +++ b/BlockStream/Sequential/index.html @@ -0,0 +1,218 @@ + + + + + + + Sequential — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Sequential

+ +
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/SpecificBlocks.html b/BlockStream/SpecificBlocks.html new file mode 100644 index 000000000..1d3848000 --- /dev/null +++ b/BlockStream/SpecificBlocks.html @@ -0,0 +1,261 @@ + + + + + + + Specific Blocks — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Specific Blocks

+

The following subsections will describe the meaning of individual blocks +generated by the block generator. A set of blocks (block classes) corresponds +to a VHDL language construct like a declaration or statement.

+ +
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/Structural/Architecture.html b/BlockStream/Structural/Architecture.html new file mode 100644 index 000000000..1f24c8522 --- /dev/null +++ b/BlockStream/Structural/Architecture.html @@ -0,0 +1,194 @@ + + + + + + + Architecture — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Architecture

+
+

EndBlock

+

EndBlock

+
+
+

BeginBlock

+

ConcurrentBeginBlock

+
+
+

DeclarativeRegion

+

ConcurrentDeclarativeRegion

+
+
+

NameBlock

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/Structural/Block.html b/BlockStream/Structural/Block.html new file mode 100644 index 000000000..76c0f59ed --- /dev/null +++ b/BlockStream/Structural/Block.html @@ -0,0 +1,194 @@ + + + + + + + Block — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Block

+
+

EndBlock

+

EndBlockBase

+
+
+

BeginBlock

+

ConcurrentBeginBlock

+
+
+

DeclarativeRegion

+

ConcurrentDeclarativeRegion

+
+
+

NameBlock

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/Structural/Component.html b/BlockStream/Structural/Component.html new file mode 100644 index 000000000..b2bae7cb7 --- /dev/null +++ b/BlockStream/Structural/Component.html @@ -0,0 +1,186 @@ + + + + + + + Component — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Component

+
+

EndBlock

+

EndBlock

+
+
+

NameBlock

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/Structural/Configuration.html b/BlockStream/Structural/Configuration.html new file mode 100644 index 000000000..24916e2b6 --- /dev/null +++ b/BlockStream/Structural/Configuration.html @@ -0,0 +1,190 @@ + + + + + + + Configuration — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Configuration

+
+

EndBlock

+

EndBlock

+
+
+

BeginBlock

+

ConcurrentBeginBlock

+
+
+

NameBlock

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/Structural/Entity.html b/BlockStream/Structural/Entity.html new file mode 100644 index 000000000..0b8cc4e97 --- /dev/null +++ b/BlockStream/Structural/Entity.html @@ -0,0 +1,194 @@ + + + + + + + Entity — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Entity

+
+

EndBlock

+

EndBlockBase

+
+
+

BeginBlock

+

ConcurrentBeginBlock

+
+
+

DeclarativeRegion

+

ConcurrentDeclarativeRegion

+
+
+

NameBlock

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/Structural/index.html b/BlockStream/Structural/index.html new file mode 100644 index 000000000..81678f4fc --- /dev/null +++ b/BlockStream/Structural/index.html @@ -0,0 +1,214 @@ + + + + + + + Structural — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Structural

+ +
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/Types/Subtype.html b/BlockStream/Types/Subtype.html new file mode 100644 index 000000000..81bb69633 --- /dev/null +++ b/BlockStream/Types/Subtype.html @@ -0,0 +1,180 @@ + + + + + + + Subtype — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Subtype

+
+

Todo

+

Not yet implemented. Thus no documentation available.

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/Types/Type.html b/BlockStream/Types/Type.html new file mode 100644 index 000000000..e13c2aced --- /dev/null +++ b/BlockStream/Types/Type.html @@ -0,0 +1,180 @@ + + + + + + + Type — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Type

+
+

Todo

+

Not yet implemented. Thus no documentation available.

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/Types/index.html b/BlockStream/Types/index.html new file mode 100644 index 000000000..e3f5180f2 --- /dev/null +++ b/BlockStream/Types/index.html @@ -0,0 +1,181 @@ + + + + + + + Types — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Types

+
+ +
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/Usage.html b/BlockStream/Usage.html new file mode 100644 index 000000000..fb4897093 --- /dev/null +++ b/BlockStream/Usage.html @@ -0,0 +1,244 @@ + + + + + + + Usage — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Usage

+

The following shows two code examples on how to use the block generator. The +first is generator-based. The second one retrieves an iterator from the generator +and uses low-level access to the chain of blocks.

+
+

Block Generator

+

At first, a file is opened and the file content is read into a string buffer +called content. Strings are iterable, thus a string can be an input for the +Tokenizer.

+

At second, two chained generator objects are created by GetVHDLTokenizer(...) +and Transform(...).

+

Finally, a for-loop can process each block from StartOfDocumentBlock +to EndOfDocumentBlock.

+
# Open a source file
+with file.open('r') as fileHandle:
+  content = fileHandle.read()
+
+from pyVHDLParser.Token.Parser      import Tokenizer
+from pyVHDLParser.Blocks            import TokenToBlockParser
+from pyVHDLParser.Base              import ParserException
+
+# get a token generator
+tokenStream = Tokenizer.GetVHDLTokenizer(content)
+# get a block generator
+blockStream = TokenToBlockParser.Transform(tokenStream)
+
+try:
+  for block in blockStream:
+    print("{block!s}".format(block=block))
+    for token in block:
+      print("  {token!s}".format(token=token))
+except ParserException as ex:
+  print("ERROR: {0!s}".format(ex))
+except NotImplementedError as ex:
+  print("NotImplementedError: {0!s}".format(ex))
+
+
+
+
+

Block Iterator

+

Similar to the previous example, a stream of blocks is generated by a block +generator. This time, iteration is manually implemented with a while-loop. The +function iter() creates an iterator object from a generator object. At +next, calling next() returns a new block for each call.

+

The example wants to print the outer objects (first and last) of the block chain. +So at first, next() is called once to get the first element. Then an +endless loop is used to generate all blocks. If the generator ends, it raises +a :exec:`StopIteration` exception. The last block will be stored in variable +lastBlock.

+
# Open a source file
+with file.open('r') as fileHandle:
+  content = fileHandle.read()
+
+from pyVHDLParser.Token.Parser      import Tokenizer
+from pyVHDLParser.Blocks            import TokenToBlockParser
+from pyVHDLParser.Base              import ParserException
+
+# get a token generator
+tokenStream = Tokenizer.GetVHDLTokenizer(content)
+# get a block generator
+blockStream = TokenToBlockParser.Transform(tokenStream)
+
+# get the iterator for that generator
+blockIterator = iter(blockStream)
+firstBlock =    next(blockIterator)
+
+try:
+  while lastBlock := next(blockIterator):
+    pass
+except StopIteration:
+  pass
+
+print("first block: {block}".format(block=firstBlock))
+print("last block:  {block}".format(block=lastBlock))
+
+
+
+
+

Token Iterator

+
+

Todo

+

Document the token iterator for a block. (limited range)

+
+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/BlockStream/index.html b/BlockStream/index.html new file mode 100644 index 000000000..da1be3f7f --- /dev/null +++ b/BlockStream/index.html @@ -0,0 +1,193 @@ + + + + + + + 2. Pass - Blocks — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

2. Pass - Blocks

+

In the second pass a stream of double-linked +Token objects is read and grouped in another Python +generator to blocks. Blocks are again a chain of double-linked +objects of base-class Block.

+

Condensed definition of class Block:

+
@Export
+class Block(metaclass=MetaBlock):
+  """Base-class for all :term:`block` classes."""
+
+  __STATES__ :      List = None   #: List of all `state...` methods in this class.
+
+  _previousBlock : Block = None   #: Reference to the previous block.
+  NextBlock :      Block = None   #: Reference to the next block.
+  StartToken :     Token = None   #: Reference to the first token in the scope of this block.
+  EndToken :       Token = None   #: Reference to the last token in the scope of this block.
+  MultiPart :      bool =  None   #: True, if this block has multiple parts.
+
+  def __init__(self, previousBlock, startToken, endToken=None, multiPart=False):
+  def __len__(self):
+  def __iter__(self):
+  def __repr__(self):
+  def __str__(self):
+
+  @property
+  def PreviousBlock(self):
+
+  @property
+  def Length(self):
+
+  @property
+  def States(self):
+
+  @classmethod
+  def stateError(cls, parserState: ParserState):
+
+
+
+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/ChangeLog/index.html b/ChangeLog/index.html new file mode 100644 index 000000000..0fff1f29f --- /dev/null +++ b/ChangeLog/index.html @@ -0,0 +1,151 @@ + + + + + + + ChangeLog — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

ChangeLog

+
+

Todo

+

Start to write change logs.

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/Concepts.html b/Concepts.html new file mode 100644 index 000000000..c7664ef40 --- /dev/null +++ b/Concepts.html @@ -0,0 +1,426 @@ + + + + + + + Concepts — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Concepts

+
+

Multiple Passes

+

The parser is implemented as a multiple-pass parser, so the gained knowledge is +deepened pass-by-pass. More over, the parser is implemented as a +streaming-parser implemented with Python generators.

+

Passes:

+
    +
  1. VHDL file pre-processing - needed for tool directives:

    +
      +
    • File decryption

    • +
    • Conditional analysis (new since VHDL-2019)

    • +
    +
  2. +
  3. Token generation

    +
      +
    • Slice a text file into character groups (tokens/words)

    • +
    • Preserve whitespace (space, tab, linebreak)

    • +
    • Preserved comments (single-/multi-line comments)

    • +
    +
  4. +
  5. Block generation

    +
      +
    • Assemble tokens in blocks (snippets of a statements) for faster document +navigation

    • +
    • Exchange simple tokens (e.g. string token) with specific tokens (e.g. +identifier or keyword)

    • +
    +
  6. +
  7. Group generation

    +
      +
    • Assemble blocks in groups (statements)

    • +
    +
  8. +
  9. Code-DOM generation

    +
      +
    • Consume a stream of groups to assemble the Code-DOM

    • +
    • Extract information from a group, their blocks or their specific tokens

    • +
    +
  10. +
  11. Comment annotation

    +
      +
    • Scan the data structure for comments and annotate comment to statements

    • +
    +
  12. +
  13. Build language model

    +
      +
    • Combine multiple Code-DOMs to form a full language model

    • +
    +
  14. +
  15. Build dependencies

    +
      +
    • Analyze order

    • +
    • Type hierarchy

    • +
    • Instance hierarchy

    • +
    +
  16. +
  17. Checkers

    +
      +
    • Check symbols (identifiers, types, …)

    • +
    • Check code style

    • +
    • Check documentation

    • +
    +
  18. +
  19. Statistics

    +
      +
    • Create statistics (SLoC, Comments vs. Code, …)

    • +
    +
  20. +
+
+
+

Object-Oriented Programming

+
+

Data Structures

+

All internal data structures are implemented as classes with fields (Python +calls it attributes), methods, properties (getter and setters) and references +(pointers) to other instances of classes.

+

All data is accompanied by its modification procedures in form of methods. New +instances of a class can be created by calling the class and implicitly +executing its initializer method __init__ or by calling a classmethod to +help constructing that instance.

+
+
+

Inheritance

+

pyVHDLParser makes heavy use of inheritance to share implementations and to +allow other classes or a user to modify the behavior of all derived classes by +modifying a single source.

+
+
+

Multiple Inheritance (Mixins)

+

pyVHDLParser uses multiple inheritance via mixin classes. This allows e.g. an +abstract definition of data models, which are later combined with a parser.

+
+
+

Properties

+

Instead of individual getter and setter methods, pyVHDLParser user Python +properties.

+
+
+

Overwriting

+
+

Todo

+

Concepts -> OOP -> Overwriting

+
+
+
+

Overloading

+
+

Todo

+

Concepts -> OOP -> Overloading

+
+
+
+

Meta-Classes

+

Some additional behaviour can be easier implemented by modifying the class +constructing other classes. Python calls this a meta-class. One prominent +example is type.

+
+
+

Type Annotations

+

pyVHDLParser uses type annotations in method parameter definitions and in +class field declarations to give hints in IDEs and documentation, what objects +of which types are expected.

+
+
+
+

Double-Linked Lists

+

Data structures with direct references (pointers) in general and double linked +lists in specific are approaches to implement fast and typed navigation from +object to object. If a reference has multiple endpoints, it is either an +order-preserving list or OrderedDict.

+

Many parts in pyVHDLParser form a chain of double-linked objects like tokens, +blocks and groups. These object chains (or linked lists) can easily be +iterated. Iterators can consume such linked lists and reemit +the content in a modified way.

+

More over, such iterators can be packaged into Python generators.

+

Iterators and generators can be used in Python’s for [1] loops.

+
+
+

Python iterators

+

A Python iterable is an object implementing an __iter__ method returning an +iterator. The iterator implements a __next__ method to return the next +element in line. Usually, the iterator has some internal state, so it can compute +the next element. At the end of an iteration, StopIteration is raised.

+
class Data:
+  list : List = []
+
+  class Iterator:
+    obj :   Data = None
+    value : Int =  None
+
+    def __init__(self, obj):
+      self.obj =   obj
+      self.value = 1
+
+    def __next__(self):
+      x = self.value
+      try:
+        self.value += 1
+        return obj.list[x]
+      except KeyError:
+        raise StopIteration
+
+  def __iter__(self):
+    return Iterator(self)
+
+myData = Data()
+
+for x in myData:
+  print(x)
+
+
+
+
+

Python generators

+

A Python generator is a co-routine (function or method) that return execution +flow from callee and in most cases with a return value to the caller. The state +of the routine is preserved (e.g. local variables). When the execution in the +co-routine is continued, it continues right after the yield statement.

+

It’s also possible to send parameters from caller to callee, when continuing the +co-routines execution. (use send method.)

+

The generation of tokens, blocks and groups is implemented as a generator heavily +using the yield statement.

+
+
+

Parallelism

+
+

Todo

+

Describe how to parallelize on multiple cores.

+
+
+
+

Token replacement

+
+

Todo

+

Describe why and how tokens are replaced. Describe why this is not corrupting data.

+
+
+
+

Classmethods as States

+
+

Todo

+

Describe why pyVHDLParser uses classmethods to represent parser states.

+
+
+
+

Parser State Machine

+
+

Todo

+

Describe how the parser works in pyVHDLParser.

+
+
+
+

Code-DOM

+
+

Todo

+

Describe what a Code-DOM is.

+
+
    +
  • Clearly named classes that model the semantics of VHDL.

  • +
  • All language constructs (statements, declarations, specifications, …) +have their own classes. These classes are arranged in a logical hierarchy, +with a single common base-class.

  • +
  • Child objects shall have a reference to their parent.

  • +
  • Comments will be associated with a particular code object.

  • +
  • Easy modifications of the object tree.

  • +
  • Support formatting code objects as text for export and debugging.

  • +
  • Allow creating a CodeDOM from input file or via API calls.

  • +
  • Support resolving of symbolic references into direct references to other +objects.

  • +
+ +
+

Footnotes:

+ +
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/Dependency.html b/Dependency.html new file mode 100644 index 000000000..56452da4d --- /dev/null +++ b/Dependency.html @@ -0,0 +1,393 @@ + + + + + + + Dependencies — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Dependencies

+ + + + + + + + + + + +

Libraries.io

Vulnerabilities Summary

Libraries.io status for latest release

Snyk Vulnerabilities for GitHub Repo

+
+

pyTooling Package (Mandatory)

+

Manually Installing Package Requirements

+

Use the requirements.txt file to install all dependencies via pip3 or install the package directly from +PyPI (see Installation/Updates).

+
pip3 install -U -r requirements.txt
+
+
+

Dependency List

+

When installed as pyTooling:

+ + + + + + + + + + + + + + + +

Package

Version

License

Dependencies

No dependencies

— — — —

— — — —

— — — —

+

When installed as pyTooling[yaml]:

+ + + + + + + + + + + + + + + +

Package

Version

License

Dependencies

ruamel.yaml

≥0.17

MIT

Not yet evaluated.

+
+
+

Unit Testing / Coverage / Type Checking (Optional)

+

Additional Python packages needed for testing, code coverage collection and static type checking. These packages are +only needed for developers or on a CI server, thus sub-dependencies are not evaluated further.

+

Manually Installing Test Requirements

+

Use the tests/requirements.txt file to install all dependencies via pip3. The file will recursively install +the mandatory dependencies too.

+
pip3 install -U -r tests/requirements.txt
+
+
+

Dependency List

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Package

Version

License

Dependencies

pytest

≥7.2.0

MIT

Not yet evaluated.

pytest-cov

≥4.0.0

MIT

Not yet evaluated.

pytest-benchmark

≥4.0.0

BSD 2-Clause

Not yet evaluated.

Coverage

≥7.2

Apache License, 2.0

Not yet evaluated.

mypy

≥1.1.1

MIT

Not yet evaluated.

lxml

≥4.9

BSD 3-Clause

Not yet evaluated.

+
+
+

Sphinx Documentation (Optional)

+

Additional Python packages needed for documentation generation. These packages are only needed for developers or on a +CI server, thus sub-dependencies are not evaluated further.

+

Manually Installing Documentation Requirements

+

Use the doc/requirements.txt file to install all dependencies via pip3. The file will recursively install +the mandatory dependencies too.

+
pip3 install -U -r doc/requirements.txt
+
+
+

Dependency List

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Package

Version

License

Dependencies

pyTooling

≥2.11.0

Apache License, 2.0

None

Sphinx

≥5.3.0

BSD 3-Clause

Not yet evaluated.

sphinxcontrib-mermaid

≥0.8.1

BSD

Not yet evaluated.

autoapi

≥2.0.1

Apache License, 2.0

Not yet evaluated.

sphinx_btd_theme

≥0.5.2

MIT

Not yet evaluated.

!! sphinx_fontawesome

≥0.0.6

GPL 2.0

Not yet evaluated.

sphinx_autodoc_typehints

≥1.19.5

MIT

Not yet evaluated.

ruamel.yaml

≥0.17

MIT

Not yet evaluated.

+
+
+

Packaging (Optional)

+

Additional Python packages needed for installation package generation. These packages are only needed for developers or +on a CI server, thus sub-dependencies are not evaluated further.

+

Manually Installing Packaging Requirements

+

Use the build/requirements.txt file to install all dependencies via pip3. The file will recursively +install the mandatory dependencies too.

+
pip3 install -U -r build/requirements.txt
+
+
+

Dependency List

+ + + + + + + + + + + + + + + + + + + + +

Package

Version

License

Dependencies

pyTooling

≥2.11.0

Apache License, 2.0

None

wheel

≥0.38.1

MIT

Not yet evaluated.

+
+
+

Publishing (CI-Server only)

+

Additional Python packages needed for publishing the generated installation package to e.g, PyPI or any equivalent +services. These packages are only needed for maintainers or on a CI server, thus sub-dependencies are not evaluated +further.

+

Manually Installing Publishing Requirements

+

Use the dist/requirements.txt file to install all dependencies via pip3. The file will recursively +install the mandatory dependencies too.

+
pip3 install -U -r dist/requirements.txt
+
+
+

Dependency List

+ + + + + + + + + + + + + + + + + + + + +

Package

Version

License

Dependencies

wheel

≥0.38.1

MIT

Not yet evaluated.

Twine

any

Apache License, 2.0

Not yet evaluated.

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/Doc-License.html b/Doc-License.html new file mode 100644 index 000000000..4f347edcc --- /dev/null +++ b/Doc-License.html @@ -0,0 +1,493 @@ + + + + + + + Creative Commons Attribution 4.0 International — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+
    +
  • »
  • +
  • Creative Commons Attribution 4.0 International
  • +
  • + Edit on GitHub +
  • +
+
+
+ +
+
+ +

This license applies to the documentation of this project.

+ +
+

Creative Commons Attribution 4.0 International

+

Creative Commons Corporation (“Creative Commons”) is not a law firm and does not +provide legal services or legal advice. Distribution of Creative Commons public +licenses does not create a lawyer-client or other relationship. Creative Commons +makes its licenses and related information available on an “as-is” basis. +Creative Commons gives no warranties regarding its licenses, any material +licensed under their terms and conditions, or any related information. Creative +Commons disclaims all liability for damages resulting from their use to the +fullest extent possible.

+ +
+

Creative Commons Attribution 4.0 International Public License

+

By exercising the Licensed Rights (defined below), You accept and agree to be +bound by the terms and conditions of this Creative Commons Attribution 4.0 +International Public License (“Public License”). To the extent this Public +License may be interpreted as a contract, You are granted the Licensed Rights +in consideration of Your acceptance of these terms and conditions, and the +Licensor grants You such rights in consideration of benefits the Licensor +receives from making the Licensed Material available under these terms and +conditions.

+
+

Section 1 – Definitions.

+
    +
  1. Adapted Material means material subject to Copyright and Similar +Rights that is derived from or based upon the Licensed Material and in +which the Licensed Material is translated, altered, arranged, transformed, or +otherwise modified in a manner requiring permission under the Copyright and +Similar Rights held by the Licensor. For purposes of this Public License, +where the Licensed Material is a musical work, performance, or sound +recording, Adapted Material is always produced where the Licensed Material +is synched in timed relation with a moving image.

  2. +
  3. Adapter’s License means the license You apply to Your Copyright and +Similar Rights in Your contributions to Adapted Material in accordance with +the terms and conditions of this Public License.

  4. +
  5. Copyright and Similar Rights means copyright and/or similar rights +closely related to copyright including, without limitation, performance, +broadcast, sound recording, and Sui Generis Database Rights, without regard +to how the rights are labeled or categorized. For purposes of this Public +License, the rights specified in Section 2(b)(1)-(2) are not Copyright and +Similar Rights.

  6. +
  7. Effective Technological Measures means those measures that, in the +absence of proper authority, may not be circumvented under laws fulfilling +obligations under Article 11 of the WIPO Copyright Treaty adopted on +December 20, 1996, and/or similar international agreements.

  8. +
  9. Exceptions and Limitations means fair use, fair dealing, and/or any +other exception or limitation to Copyright and Similar Rights that applies to +Your use of the Licensed Material.

  10. +
  11. Licensed Material means the artistic or literary work, database, or +other material to which the Licensor applied this Public License.

  12. +
  13. Licensed Rights means the rights granted to You subject to the terms +and conditions of this Public License, which are limited to all Copyright and +Similar Rights that apply to Your use of the Licensed Material and that the +Licensor has authority to license.

  14. +
  15. Licensor means the individual(s) or entity(ies) granting rights under +this Public License.

  16. +
  17. Share means to provide material to the public by any means or process +that requires permission under the Licensed Rights, such as reproduction, +public display, public performance, distribution, dissemination, +communication, or importation, and to make material available to the public +including in ways that members of the public may access the material from a +place and at a time individually chosen by them.

  18. +
  19. Sui Generis Database Rights means rights other than copyright +resulting from Directive 96/9/EC of the European Parliament and of the +Council of 11 March 1996 on the legal protection of databases, as amended +and/or succeeded, as well as other essentially equivalent rights anywhere +in the world.

  20. +
  21. You means the individual or entity exercising the Licensed Rights +under this Public License. Your has a corresponding meaning.

  22. +
+
+
+

Section 2 – Scope.

+
    +
  1. License grant.

    +
      +
    1. Subject to the terms and conditions of this Public License, the Licensor +hereby grants You a worldwide, royalty-free, non-sublicensable, +non-exclusive, irrevocable license to exercise the Licensed Rights in the +Licensed Material to:

      +
      +
        +
      1. reproduce and Share the Licensed Material, in whole or in part; and

      2. +
      3. produce, reproduce, and Share Adapted Material.

      4. +
      +
      +
    2. +
    3. Exceptions and Limitations. For the avoidance of doubt, where +Exceptions and Limitations apply to Your use, this Public License does not +apply, and You do not need to comply with its terms and conditions.

    4. +
    5. Term. The term of this Public License is specified in Section 6(a).

    6. +
    7. Media and formats; technical modifications allowed. The Licensor +authorizes You to exercise the Licensed Rights in all media and formats +whether now known or hereafter created, and to make technical +modifications necessary to do so. The Licensor waives and/or agrees not to +assert any right or authority to forbid You from making technical +modifications necessary to exercise the Licensed Rights, including +technical modifications necessary to circumvent Effective Technological +Measures. For purposes of this Public License, simply making modifications +authorized by this Section 2(a)(4) never produces Adapted Material.

    8. +
    9. Downstream recipients.

      +
      +
        +
      1. Offer from the Licensor – Licensed Material. Every recipient of +the Licensed Material automatically receives an offer from the +Licensor to exercise the Licensed Rights under the terms and +conditions of this Public License.

      2. +
      3. No downstream restrictions. You may not offer or impose any +additional or different terms or conditions on, or apply any Effective +Technological Measures to, the Licensed Material if doing so restricts +exercise of the Licensed Rights by any recipient of the Licensed +Material.

      4. +
      +
      +
    10. +
    11. No endorsement. Nothing in this Public License constitutes or may +be construed as permission to assert or imply that You are, or that Your +use of the Licensed Material is, connected with, or sponsored, endorsed, +or granted official status by, the Licensor or others designated to +receive attribution as provided in Section 3(a)(1)(A)(i).

    12. +
    +
  2. +
  3. Other rights.

    +
      +
    1. Moral rights, such as the right of integrity, are not licensed under this +Public License, nor are publicity, privacy, and/or other similar +personality rights; however, to the extent possible, the Licensor waives +and/or agrees not to assert any such rights held by the Licensor to the +limited extent necessary to allow You to exercise the Licensed Rights, but +not otherwise.

    2. +
    3. Patent and trademark rights are not licensed under this Public License.

    4. +
    5. To the extent possible, the Licensor waives any right to collect royalties +from You for the exercise of the Licensed Rights, whether directly or +through a collecting society under any voluntary or waivable statutory or +compulsory licensing scheme. In all other cases the Licensor expressly +reserves any right to collect such royalties.

    6. +
    +
  4. +
+
+
+

Section 3 – License Conditions.

+

Your exercise of the Licensed Rights is expressly made subject to the following conditions.

+
    +
  1. Attribution.

    +
      +
    1. If You Share the Licensed Material (including in modified form), You must:

      +
      +
        +
      1. retain the following if it is supplied by the Licensor with the +Licensed Material:

      2. +
      +
      +
        +
      1. identification of the creator(s) of the Licensed Material and any +others designated to receive attribution, in any reasonable manner +requested by the Licensor (including by pseudonym if designated);

      2. +
      3. a copyright notice;

      4. +
      5. a notice that refers to this Public License;

      6. +
      7. a notice that refers to the disclaimer of warranties;

      8. +
      9. a URI or hyperlink to the Licensed Material to the extent reasonably +practicable;

      10. +
      +
      +
        +
      1. indicate if You modified the Licensed Material and retain an +indication of any previous modifications; and

      2. +
      3. indicate the Licensed Material is licensed under this Public License, +and include the text of, or the URI or hyperlink to, this Public +License.

      4. +
      +
      +
    2. +
    3. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner +based on the medium, means, and context in which You Share the Licensed +Material. For example, it may be reasonable to satisfy the conditions by +providing a URI or hyperlink to a resource that includes the required +information.

    4. +
    5. If requested by the Licensor, You must remove any of the information +required by Section 3(a)(1)(A) to the extent reasonably practicable.

    6. +
    7. If You Share Adapted Material You produce, the Adapter’s License You apply +must not prevent recipients of the Adapted Material from complying with +this Public License.

    8. +
    +
  2. +
+
+
+

Section 4 – Sui Generis Database Rights.

+

Where the Licensed Rights include Sui Generis Database Rights that apply to Your +use of the Licensed Material:

+
    +
  1. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, +reuse, reproduce, and Share all or a substantial portion of the contents of +the database;

  2. +
  3. if You include all or a substantial portion of the database contents in a +database in which You have Sui Generis Database Rights, then the database +in which You have Sui Generis Database Rights (but not its individual +contents) is Adapted Material; and

  4. +
  5. You must comply with the conditions in Section 3(a) if You Share all or a +substantial portion of the contents of the database.

  6. +
+

For the avoidance of doubt, this Section 4 supplements and does not replace +Your obligations under this Public License where the Licensed Rights include +other Copyright and Similar Rights.

+
+
+

Section 5 – Disclaimer of Warranties and Limitation of Liability.

+
    +
  1. Unless otherwise separately undertaken by the Licensor, to the extent +possible, the Licensor offers the Licensed Material as-is and as-available, +and makes no representations or warranties of any kind concerning the +Licensed Material, whether express, implied, statutory, or other. This +includes, without limitation, warranties of title, merchantability, +fitness for a particular purpose, non-infringement, absence of latent or +other defects, accuracy, or the presence or absence of errors, whether or +not known or discoverable. Where disclaimers of warranties are not allowed +in full or in part, this disclaimer may not apply to You.

  2. +
  3. To the extent possible, in no event will the Licensor be liable to You +on any legal theory (including, without limitation, negligence) or +otherwise for any direct, special, indirect, incidental, consequential, +punitive, exemplary, or other losses, costs, expenses, or damages arising +out of this Public License or use of the Licensed Material, even if the +Licensor has been advised of the possibility of such losses, costs, expenses, +or damages. Where a limitation of liability is not allowed in full or in +part, this limitation may not apply to You.

  4. +
  5. The disclaimer of warranties and limitation of liability provided above +shall be interpreted in a manner that, to the extent possible, most +closely approximates an absolute disclaimer and waiver of all liability.

  6. +
+
+
+

Section 6 – Term and Termination.

+
    +
  1. This Public License applies for the term of the Copyright and Similar Rights +licensed here. However, if You fail to comply with this Public License, then +Your rights under this Public License terminate automatically.

  2. +
  3. Where Your right to use the Licensed Material has terminated under +Section 6(a), it reinstates:

    +
      +
    1. automatically as of the date the violation is cured, provided it is cured +within 30 days of Your discovery of the violation; or

    2. +
    3. upon express reinstatement by the Licensor.

    4. +
    +

    For the avoidance of doubt, this Section 6(b) does not affect any right the +Licensor may have to seek remedies for Your violations of this Public License.

    +
  4. +
  5. For the avoidance of doubt, the Licensor may also offer the Licensed Material +under separate terms or conditions or stop distributing the Licensed Material +at any time; however, doing so will not terminate this Public License.

  6. +
  7. Sections 1, 5, 6, 7, and 8 survive termination of this Public License.

  8. +
+
+
+

Section 7 – Other Terms and Conditions.

+
    +
  1. The Licensor shall not be bound by any additional or different terms or +conditions communicated by You unless expressly agreed.

  2. +
  3. Any arrangements, understandings, or agreements regarding the Licensed +Material not stated herein are separate from and independent of the terms +and conditions of this Public License.

  4. +
+
+
+

Section 8 – Interpretation.

+
    +
  1. For the avoidance of doubt, this Public License does not, and shall not be +interpreted to, reduce, limit, restrict, or impose conditions on any use of +the Licensed Material that could lawfully be made without permission under +this Public License.

  2. +
  3. To the extent possible, if any provision of this Public License is deemed +unenforceable, it shall be automatically reformed to the minimum extent +necessary to make it enforceable. If the provision cannot be reformed, it +shall be severed from this Public License without affecting the +enforceability of the remaining terms and conditions.

  4. +
  5. No term or condition of this Public License will be waived and no failure to +comply consented to unless expressly agreed to by the Licensor.

  6. +
  7. Nothing in this Public License constitutes or may be interpreted as a +limitation upon, or waiver of, any privileges and immunities that apply to +the Licensor or You, including from the legal processes of any jurisdiction +or authority.

  8. +
+
+

Creative Commons is not a party to its public licenses. Notwithstanding, +Creative Commons may elect to apply one of its public licenses to material it +publishes and in those instances will be considered the “Licensor.” Except for +the limited purpose of indicating that material is shared under a Creative +Commons public license or as otherwise permitted by the Creative Commons +policies published at creativecommons.org/policies, +Creative Commons does not authorize the use of the trademark “Creative Commons” +or any other trademark or logo of Creative Commons without its prior written +consent including, without limitation, in connection with any unauthorized +modifications to any of its public licenses or any other arrangements, +understandings, or agreements concerning use of licensed material. For the +avoidance of doubt, this paragraph does not form part of the public licenses.

+

Creative Commons may be contacted at creativecommons.org

+
+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/DocumentObjectModel/index.html b/DocumentObjectModel/index.html new file mode 100644 index 000000000..4b1269918 --- /dev/null +++ b/DocumentObjectModel/index.html @@ -0,0 +1,178 @@ + + + + + + + 4. Pass - Code-DOM — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

4. Pass - Code-DOM

+

A Code-DOM is a Document-Object-Model for source code files.

+

Condensed definition of class Document:

+
class Document(DocumentModel):
+  def __init__(self, file):
+
+  def Parse(self, content=None):
+
+  @classmethod
+  def stateParse(cls, document, startOfDocumentGroup):
+
+  def AddLibrary(self, library):
+  def AddUse(self, use):
+
+  @property
+  def Libraries(self):
+
+  @property
+  def Uses(self):
+
+  def AddEntity(self, entity):
+  def AddArchitecture(self, architecture):
+  def AddPackage(self, package):
+  def AddPackageBody(self, packageBody):
+
+  def Print(self, indent=0):
+
+
+
+

Todo

+

Describe the Code-DOM.

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/Glossary.html b/Glossary.html new file mode 100644 index 000000000..6e5cc57ac --- /dev/null +++ b/Glossary.html @@ -0,0 +1,165 @@ + + + + + + + Glossary — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Glossary

+
+
Meta-Class

A Python meta-class is a class used to construct classes. Python’s class +type is such a |meta-class|.

+
+
Token

XXX

+
+
Block

A block is a collection of tokens.

+
+
Multipart Block

A |block| split into multiple parts.

+
+
LRM

IEEE Standard for VHDL Language Reference Manual

+ +
+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/GroupStream/Examples.html b/GroupStream/Examples.html new file mode 100644 index 000000000..5f3f502d2 --- /dev/null +++ b/GroupStream/Examples.html @@ -0,0 +1,158 @@ + + + + + + + Examples — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Examples

+
+

Todo

+

Add examples for group generator.

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/GroupStream/GroupGenerator.html b/GroupStream/GroupGenerator.html new file mode 100644 index 000000000..bb835b0ae --- /dev/null +++ b/GroupStream/GroupGenerator.html @@ -0,0 +1,158 @@ + + + + + + + Group Generator — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Group Generator

+
+

Todo

+

Describe the stream of groups.

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/GroupStream/MetaGroups.html b/GroupStream/MetaGroups.html new file mode 100644 index 000000000..ed82f770f --- /dev/null +++ b/GroupStream/MetaGroups.html @@ -0,0 +1,177 @@ + + + + + + + Meta Groups — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Meta Groups

+

There are two meta-groups: StartOfDocumentGroup +and EndOfDocumentGroup. These groups represent +a start and end of a token stream. These groups have a length of 0 characters.

+
+

StartOfDocumentGroup

+

This group starts a chain of double-linked groups in a group stream. It’s used, +if the input source is a whole file, otherwise StartOfSnippetGroup. +It is derived from base-class StartOfGroup +and mixin StartOfDocument.

+

Interitance diagram:

+
+
+

EndOfDocumentGroup

+

This group ends a chain of double-linked groups in a group stream. It’s used, +if the input source is a whole file, otherwise EndOfSnippetGroup. +It is derived from base-class EndOfGroup +and mixin EndOfDocument.

+

Interitance diagram:

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/GroupStream/Usage.html b/GroupStream/Usage.html new file mode 100644 index 000000000..2ba81e34b --- /dev/null +++ b/GroupStream/Usage.html @@ -0,0 +1,158 @@ + + + + + + + Usage — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Usage

+
+

Todo

+

Document group generator usage.

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/GroupStream/index.html b/GroupStream/index.html new file mode 100644 index 000000000..723394e51 --- /dev/null +++ b/GroupStream/index.html @@ -0,0 +1,191 @@ + + + + + + + 3. Pass - Groups — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

3. Pass - Groups

+

In the third pass a stream of double-linked +Block objects is read and grouped in another Python +generator to group’s. Groups are again a chain of double-linked +objects of base-class Group.

+

Condensed definition of class Group:

+
@Export
+class Group(metaclass=MetaGroup):
+  __STATES__ = None
+
+  _previousGroup : 'Group' =              None    #: Reference to the previous group.
+  NextGroup :      'Group' =              None    #: Reference to the next group.
+  InnerGroup :     'Group' =              None    #: Reference to the first inner group.
+  _subGroups :     {MetaGroup: 'Group'} = {}      #: References to all inner groups by group type.
+
+  StartBlock :     Block =                None    #: Reference to the first block in the scope of this group.
+  EndBlock :       Block =                None    #: Reference to the last block in the scope of this group.
+  MultiPart :      bool =                 False   #: True, if this group has multiple parts.
+
+  def __init__(self, previousGroup, startBlock, endBlock=None):
+  def __len__(self):
+  def __iter__(self):
+  def __repr__(self):
+  def __str__(self):
+
+  def GetSubGroups(self, groupTypes=None):
+
+  @property
+  def PreviousGroup(self):
+
+  @property
+  def Length(self):
+
+  @property
+  def States(self):
+
+
+
+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/Installation.html b/Installation.html new file mode 100644 index 000000000..08729e9af --- /dev/null +++ b/Installation.html @@ -0,0 +1,220 @@ + + + + + + + Installation/Updates — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Installation/Updates

+
+

Using PIP

+
+

Installation using PIP

+
pip3 install pyVHDLParser
+
+
+
+
+

Updating using PIP

+
pip3 install -U pyVHDLParser
+
+
+
+
+
+

Using setup.py

+
+

Todo

+

Describe setup procedure using setup.py

+
+
+
+

Dependencies

+
+

pyVHDLParser Package

+
    +
  • colorama

  • +
  • py-flags

  • +
  • pydecor

  • +
  • pyExceptions

  • +
  • pyAttributes

  • +
  • pyCallBy

  • +
  • pyTerminalUI

  • +
  • pyVHDLModel

  • +
+
+
+

Unit Testing / Coverage

+
    +
  • Coverage

  • +
+
+
+

Sphinx Documentation

+
    +
  • Sphinx

  • +
  • sphinx-rtd-theme

  • +
  • sphinx.ext.coverage

  • +
  • autoapi

  • +
  • sphinx_fontawesome

  • +
  • sphinx_autodoc_typehints

  • +
  • btd.sphinx.autoprogram

  • +
  • btd.sphinx.graphviz

  • +
  • btd.sphinx.inheritance_diagram

  • +
  • Pygments

  • +
+
+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/LanguageModel/ConcurrentStatements.html b/LanguageModel/ConcurrentStatements.html new file mode 100644 index 000000000..118d0e7be --- /dev/null +++ b/LanguageModel/ConcurrentStatements.html @@ -0,0 +1,235 @@ + + + + + + + Concurrent Statements — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Concurrent Statements

+
    +
  • Assert

  • +
  • Signal assignment

  • +
  • Instantiation

  • +
  • If generate

  • +
  • Case generate

  • +
  • For generate

  • +
  • Procedure call

  • +
  • Process

  • +
+
+

Assert

+
+

Todo

+

Write documentation.

+
+
+
+

Signal Assignment

+
+

Todo

+

Write documentation.

+
+
+
+

Instantiation

+
+

Todo

+

Write documentation.

+
+
+
+

If Generate

+
+

Todo

+

Write documentation.

+
+
+
+

Case Generate

+
+

Todo

+

Write documentation.

+
+
+
+

For Generate

+
+

Todo

+

Write documentation.

+
+
+
+

Procedure Call

+
+

Todo

+

Write documentation.

+
+
+
+

Process

+
+

Todo

+

Write documentation.

+
+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/LanguageModel/DesignUnits.html b/LanguageModel/DesignUnits.html new file mode 100644 index 000000000..408cfb0fd --- /dev/null +++ b/LanguageModel/DesignUnits.html @@ -0,0 +1,237 @@ + + + + + + + Design Units — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Design Units

+
    +
  • Primary Units

    +
      +
    • Context

    • +
    • Configuration

    • +
    • Entity

    • +
    • Package

    • +
    +
  • +
  • Secondary Units

    +
      +
    • Architeture

    • +
    • Package Body

    • +
    +
  • +
+
+

Primary Units

+
+

Context

+
+

Todo

+

Write documentation.

+
+
+
+

Configuration

+
+

Todo

+

Write documentation.

+
+
+
+

Entity

+
+

Todo

+

Write documentation.

+
+
+
+

Package

+
+

Todo

+

Write documentation.

+
+
+
+
+

Secondary Units

+
+

Architeture

+
+

Todo

+

Write documentation.

+
+
+
+

Package Body

+
+

Todo

+

Write documentation.

+
+
+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/LanguageModel/Enumerations.html b/LanguageModel/Enumerations.html new file mode 100644 index 000000000..55f58e704 --- /dev/null +++ b/LanguageModel/Enumerations.html @@ -0,0 +1,177 @@ + + + + + + + Enumerations — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Enumerations

+
+

Modes

+
+

Todo

+

Write documentation.

+
+
+
+

Object Classes

+
+

Todo

+

Write documentation.

+
+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/LanguageModel/InterfaceItems.html b/LanguageModel/InterfaceItems.html new file mode 100644 index 000000000..06e2ed833 --- /dev/null +++ b/LanguageModel/InterfaceItems.html @@ -0,0 +1,320 @@ + + + + + + + Interface Items — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Interface Items

+

Interface items are used in generic, port and parameter declarations.

+
    +
  • GenericInterfaceItem

    +
      +
    • GenericConstantInterfaceItem

    • +
    • GenericTypeInterfaceItem

    • +
    • GenericSubprogramInterfaceItem

    • +
    • GenericPackageInterfaceItem

    • +
    +
  • +
  • PortInterfaceItem

    +
      +
    • PortSignalInterfaceItem

    • +
    +
  • +
  • ParameterInterfaceItem

    +
      +
    • ParameterConstantInterfaceItem

    • +
    • ParameterVariableInterfaceItem

    • +
    • ParameterSignalInterfaceItem

    • +
    • ParameterFileInterfaceItem

    • +
    +
  • +
+
+

Generic Interface Item

+
+

GenericConstantInterfaceItem

+
+

Todo

+

Write documentation.

+
+

Condensed definition of class GenericConstantInterfaceItem:

+
@Export
+class GenericConstantInterfaceItem(GenericInterfaceItem):
+
+
+
+
+

GenericTypeInterfaceItem

+
+

Todo

+

Write documentation.

+
+

Condensed definition of class GenericTypeInterfaceItem:

+
@Export
+class GenericTypeInterfaceItem(GenericInterfaceItem):
+
+
+
+
+

GenericSubprogramInterfaceItem

+
+

Todo

+

Write documentation.

+
+

Condensed definition of class GenericSubprogramInterfaceItem:

+
@Export
+class GenericSubprogramInterfaceItem(GenericInterfaceItem):
+
+
+
+
+

GenericPackageInterfaceItem

+
+

Todo

+

Write documentation.

+
+

Condensed definition of class GenericPackageInterfaceItem:

+
@Export
+class GenericPackageInterfaceItem(GenericInterfaceItem):
+
+
+
+
+
+

Port Interface Item

+
+

PortSignalInterfaceItem

+
+

Todo

+

Write documentation.

+
+

Condensed definition of class PortSignalInterfaceItem:

+
@Export
+class PortSignalInterfaceItem(PortInterfaceItem):
+
+
+
+
+
+

Parameter Interface Item

+
+

ParameterConstantInterfaceItem

+
+

Todo

+

Write documentation.

+
+

Condensed definition of class ParameterConstantInterfaceItem:

+
@Export
+class ParameterConstantInterfaceItem(ParameterInterfaceItem):
+
+
+
+
+

ParameterVariableInterfaceItem

+
+

Todo

+

Write documentation.

+
+

Condensed definition of class ParameterVariableInterfaceItem:

+
@Export
+class ParameterVariableInterfaceItem(ParameterInterfaceItem):
+
+
+
+
+

ParameterSignalInterfaceItem

+
+

Todo

+

Write documentation.

+
+

Condensed definition of class ParameterSignalInterfaceItem:

+
@Export
+class ParameterSignalInterfaceItem(ParameterInterfaceItem):
+
+
+
+
+

ParameterFileInterfaceItem

+
+

Todo

+

Write documentation.

+
+

Condensed definition of class ParameterFileInterfaceItem:

+
@Export
+class ParameterFileInterfaceItem(ParameterInterfaceItem):
+
+
+
+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/LanguageModel/Miscellaneous.html b/LanguageModel/Miscellaneous.html new file mode 100644 index 000000000..0c9591bb2 --- /dev/null +++ b/LanguageModel/Miscellaneous.html @@ -0,0 +1,259 @@ + + + + + + + Concepts not defined by IEEE Std. 1076 — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Concepts not defined by IEEE Std. 1076

+

Some features required for a holistic language model are not defined in +the VHDL LRM or made explicitly implementation specific to the implementer.

+
+

Design

+

The root element in the language model is a design mode out of multiple +sourcecode files (documents). Sourcecode files are compiled into libraries. Thus +a design has the two child nodes: Libraries and Documents. Each is a +list.

+

Condensed definition of class Design:

+
@Export
+class Design(ModelEntity):
+  _libraries :  List =  []    #: List of all libraries defined for a design
+  _documents :  List =  []    #: List of all documents loaded for a design
+
+  def __init__(self):
+
+  @property
+  def Libraries(self):
+
+  @property
+  def Documents(self):
+
+
+
+
+

LibraryStatement

+

A library contains multiple design units. Each design unit listed in a library +is a primary design unit like: configuration, entity, package or +context.

+

Condensed definition of class LibraryStatement:

+
@Export
+class LibraryStatement(ModelEntity):
+  _contexts :       List =  None    #: List of all contexts defined in a library.
+  _configurations : List =  None    #: List of all configurations defined in a library.
+  _entities :       List =  None    #: List of all entities defined in a library.
+  _packages :       List =  None    #: List of all packages defined in a library.
+
+  def __init__(self):
+
+  @property
+  def Context(self):
+
+  @property
+  def Configurations(self):
+
+  @property
+  def Entities(self):
+
+  @property
+  def Packages(self):
+
+
+
+
+

Sourcecode File

+

A source file contains multiple design units. Each design unit listed in a +sourcecode file is a primary or secondary`design unit like: ``configuration`, +entity, architecture, package, package body or context.

+

Design unit may be preceded by a context made of library, use and +context statements. These statements are not directly visible in the Document +object, because design unit contexts are consumed by the design units. See the +Libraries and Uses fields of each design unit to investigate the consumed +contexts.

+

Condensed definition of class Document:

+
@Export
+class Document(ModelEntity):
+  _contexts :       List =  None    #: List of all contexts defined in a document.
+  _configurations : List =  None    #: List of all configurations defined in a document.
+  _entities :       List =  None    #: List of all entities defined in a document.
+  _architectures :  List =  None    #: List of all architectures defined in a document.
+  _packages :       List =  None    #: List of all packages defined in a document.
+  _packageBodies :  List =  None    #: List of all package bodies defined in a document.
+
+  def __init__(self):
+
+  @property
+  def Contexts(self):
+
+  @property
+  def Configurations(self):
+
+  @property
+  def Entities(self):
+
+  @property
+  def Architectures(self):
+
+  @property
+  def Packages(self):
+
+  @property
+  def PackageBodies(self):
+
+
+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/LanguageModel/ObjectDeclarations.html b/LanguageModel/ObjectDeclarations.html new file mode 100644 index 000000000..2c81fef14 --- /dev/null +++ b/LanguageModel/ObjectDeclarations.html @@ -0,0 +1,208 @@ + + + + + + + Object Declartions — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Object Declartions

+
    +
  • Constant

  • +
  • Variable

  • +
  • Shared variable

  • +
  • Signal

  • +
  • File

  • +
+
+

Constant

+
+

Todo

+

Write documentation.

+
+
+
+

Variable

+
+

Todo

+

Write documentation.

+
+
+
+

Shared Variable

+
+

Todo

+

Write documentation.

+
+
+
+

Signal

+
+

Todo

+

Write documentation.

+
+
+
+

File

+
+

Todo

+

Write documentation.

+
+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/LanguageModel/SequentialStatements.html b/LanguageModel/SequentialStatements.html new file mode 100644 index 000000000..b69d1612c --- /dev/null +++ b/LanguageModel/SequentialStatements.html @@ -0,0 +1,244 @@ + + + + + + + Sequential Statements — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Sequential Statements

+
    +
  • Signal assignment

  • +
  • Variable assignment

  • +
  • If statement

  • +
  • Case statement+

  • +
  • For loop

  • +
  • While loop

  • +
  • Report statement

  • +
  • Assert statement

  • +
  • Procedure call

  • +
+
+

Signal Assignment

+
+

Todo

+

Write documentation.

+
+
+
+

Variable Assignment

+
+

Todo

+

Write documentation.

+
+
+
+

If Statement

+
+

Todo

+

Write documentation.

+
+
+
+

Case Statement

+
+

Todo

+

Write documentation.

+
+
+
+

For Loop

+
+

Todo

+

Write documentation.

+
+
+
+

While Loop

+
+

Todo

+

Write documentation.

+
+
+
+

Report Statement

+
+

Todo

+

Write documentation.

+
+
+
+

Assert Statement

+
+

Todo

+

Write documentation.

+
+
+
+

Procedure Call

+
+

Todo

+

Write documentation.

+
+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/LanguageModel/SubprogramDefinitions.html b/LanguageModel/SubprogramDefinitions.html new file mode 100644 index 000000000..a367509e6 --- /dev/null +++ b/LanguageModel/SubprogramDefinitions.html @@ -0,0 +1,181 @@ + + + + + + + Subprogram Declarations — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Subprogram Declarations

+
    +
  • Procedure

  • +
  • Function

  • +
+
+

Procedure

+
+

Todo

+

Write documentation.

+
+
+
+

Function

+
+

Todo

+

Write documentation.

+
+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/LanguageModel/TypeDefinitions.html b/LanguageModel/TypeDefinitions.html new file mode 100644 index 000000000..cd0dcb766 --- /dev/null +++ b/LanguageModel/TypeDefinitions.html @@ -0,0 +1,269 @@ + + + + + + + Type Declarations — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Type Declarations

+
    +
  • Types

    +
      +
    • Scalar types

      +
        +
      • Enumeration

      • +
      • Integer

      • +
      • Real

      • +
      • Physical

      • +
      +
    • +
    • Composite types

      +
        +
      • Array

      • +
      • Record

      • +
      +
    • +
    • Access

    • +
    • File

    • +
    • Protected

    • +
    +
  • +
  • Subtype

  • +
+
+

Scalar Types

+
+

Enumeration

+
+

Todo

+

Write documentation.

+
+
+
+

Integer

+
+

Todo

+

Write documentation.

+
+
+
+

Real

+
+

Todo

+

Write documentation.

+
+
+
+

Physical

+
+

Todo

+

Write documentation.

+
+
+
+
+

Composite Types

+
+

Array

+
+

Todo

+

Write documentation.

+
+
+
+

Record

+
+

Todo

+

Write documentation.

+
+
+
+
+

Access

+
+

Todo

+

Write documentation.

+
+
+
+

File

+
+

Todo

+

Write documentation.

+
+
+
+

Protected

+
+

Todo

+

Write documentation.

+
+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/LanguageModel/index.html b/LanguageModel/index.html new file mode 100644 index 000000000..66a8782f9 --- /dev/null +++ b/LanguageModel/index.html @@ -0,0 +1,264 @@ + + + + + + + VHDL Language Model — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ + + +
+
+
+
+ + + + \ No newline at end of file diff --git a/License.html b/License.html new file mode 100644 index 000000000..fc5df54c3 --- /dev/null +++ b/License.html @@ -0,0 +1,278 @@ + + + + + + + Apache License 2.0 — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Note

+

This is a local copy of the Apache License Version 2.0.

+
+
+

Apache License 2.0

+

Version 2.0, January 2004

+

TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

+
+

1. Definitions.

+

“License” shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.

+

“Licensor” shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.

+

“Legal Entity” shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that +entity. For the purposes of this definition, “control” means (i) the power, direct or indirect, to cause the direction or management of such entity, whether +by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.

+

“You” (or “Your”) shall mean an individual or Legal Entity exercising permissions granted by this License.

+

“Source” form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and +configuration files.

+

“Object” form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object +code, generated documentation, and conversions to other media types.

+

“Work” shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is +included in or attached to the work (an example is provided in the Appendix below).

+

“Derivative Works” shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, +annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works +shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.

+

“Contribution” shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative +Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to +submit on behalf of the copyright owner. For the purposes of this definition, “submitted” means any form of electronic, verbal, or written communication +sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue +tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is +conspicuously marked or otherwise designated in writing by the copyright owner as “Not a Contribution.”

+

“Contributor” shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently +incorporated within the Work.

+
+ +
+

3. Grant of Patent License.

+

Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, +irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such +license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of +their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim +or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then +any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.

+
+
+

4. Redistribution.

+

You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, +provided that You meet the following conditions:

+
    +
  • You must give any other recipients of the Work or Derivative Works a copy of this License; and

  • +
  • You must cause any modified files to carry prominent notices stating that You changed the files; and

  • +
  • You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source +form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and

  • +
  • If the Work includes a “NOTICE” text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the +attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the +following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the +Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE +file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, +alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.

  • +
+

You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or +distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise +complies with the conditions stated in this License.

+
+
+

5. Submission of Contributions.

+

Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and +conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any +separate license agreement you may have executed with Licensor regarding such Contributions.

+
+
+

6. Trademarks.

+

This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable +and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.

+
+
+

7. Disclaimer of Warranty.

+

Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an “AS IS” BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, +MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and +assume any risks associated with Your exercise of permissions under this License.

+
+
+

8. Limitation of Liability.

+

In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate +and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or +consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages +for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been +advised of the possibility of such damages.

+
+
+

9. Accepting Warranty or Additional Liability.

+

While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other +liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole +responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability +incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.

+
+

Appendix: How to apply the Apache License to your work

+

To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets “[]” replaced with your own identifying +information. (Don’t include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or +class name and description of purpose be included on the same “printed page” as the copyright notice for easier identification within third-party archives.

+
Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+
+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/Preprocessing/index.html b/Preprocessing/index.html new file mode 100644 index 000000000..0aa84d8d4 --- /dev/null +++ b/Preprocessing/index.html @@ -0,0 +1,158 @@ + + + + + + + 0. Pass - Preprocessing — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

0. Pass - Preprocessing

+
+

Note

+

Currently, pyVHDLParser doesn’t implement any pre-processing steps. It accepts +either an input filename or a string as content.

+
+

Possible Use Cases

+

The following pre-processing steps could be envisions:

+
    +
  • Conditional analysis (new since VHDL-2019)

  • +
  • File decryption according to IEEE Std. 1735-2014

  • +
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/ProjectGoals.html b/ProjectGoals.html new file mode 100644 index 000000000..960125403 --- /dev/null +++ b/ProjectGoals.html @@ -0,0 +1,172 @@ + + + + + + + Project Goals — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Project Goals

+

The main goal of this project is to parse VHDL source files for language +revisions (1987), 1993, 2002/2008 and soon for 2019. The result of the parser +is a Code Document-Object-Model (Code-DOM), for deep inspection of VHDL source +files.

+

The inspection capabilities and the Code-DOM offers:

+
    +
  • Object-oriented data model

  • +
  • Bidirectional linking / fast navigation

  • +
  • Python iterators / generators

  • +
+

The parser is implemented as a multiple-pass parser, so the gained knowledge is +deepened pass-by-pass. More over, the parser is implemented as a +streaming-parser / Python generator. This means for example, the first pass +slices a source file into a chain of double-linked Token. While token +creation, the start and end of a token is preserved as a SourceCodePosition. +In contrast to ordinary parsers, pyVHDLParser preserves cases, whitespaces and +comments.

+

The finally generated Code-DOM offers an API for single file introspections. It +can be used for static documentation generation or rule-based coding style +checking.

+

When multiple Code-DOMs are combined to a project, a Generic VHDL Language Model +can be assembled. It’s possible to implement two model flavors for simulation +(full model) and synthesis (limited model). With such information, a +documentation with detailed type information and cross-references can be +generated.

+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/References/index.html b/References/index.html new file mode 100644 index 000000000..7f2df2a47 --- /dev/null +++ b/References/index.html @@ -0,0 +1,386 @@ + + + + + + + Scripts and Applications — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Scripts and Applications

+

The pyVHDLParser package comes with an executables registered by pip in the +search path.

+
    +
  • VHDLParser is a wrapper for pyVHDLParser.CLI.VHDLParser:main.

  • +
+
+

VHDLParser

+

Test application to test pyVHDLParser capabilities.

+
usage: VHDLParser [-d] [-v] [-q]
+                  {help,version,token-stream,token-check,block-stream,block-check,group-stream,CodeDOM,antlr}
+                  ...
+
+
+

pyVHDLParser is a streaming parser to read and understand VHDL code equipped +with comments for documentation extraction.

+
+

options

+
+
+-d, --debug
+

Enable debug mode.

+
+ +
+
+-v, --verbose
+

Print out detailed messages.

+
+ +
+
+-q, --quiet
+

Reduce messages to a minimum.

+
+ +
+
+

VHDLParser CodeDOM

+

Create a code document object model (CodeDOM).

+
usage: VHDLParser CodeDOM [-h] filename
+
+
+
+
+filename
+

The filename to parse.

+
+ +
+
+-h, --help
+

show this help message and exit

+
+ +
+
+

VHDLParser antlr

+

Create DOM from ANTLR4 grammar.

+
usage: VHDLParser antlr [-h] filename
+
+
+
+
+filename
+

The filename to parse.

+
+ +
+
+-h, --help
+

show this help message and exit

+
+ +
+
+

VHDLParser block-check

+

Check a stream of block objects.

+
usage: VHDLParser block-check [-h] [-T] filename
+
+
+
+
+filename
+

The filename to parse.

+
+ +
+
+-h, --help
+

show this help message and exit

+
+ +
+
+-T, --with-tokens
+

Display tokens in between.

+
+ +
+
+

VHDLParser block-stream

+

Create a stream of block objects.

+
usage: VHDLParser block-stream [-h] [-T] filename
+
+
+
+
+filename
+

The filename to parse.

+
+ +
+
+-h, --help
+

show this help message and exit

+
+ +
+
+-T, --with-tokens
+

Display tokens in between.

+
+ +
+
+

VHDLParser group-stream

+

Create a stream of group objects.

+
usage: VHDLParser group-stream [-h] [-T] [-B] filename
+
+
+
+
+filename
+

The filename to parse.

+
+ +
+
+-h, --help
+

show this help message and exit

+
+ +
+
+-T, --with-tokens
+

Display tokens in between.

+
+ +
+
+-B, --with-blocks
+

Display blocks in between.

+
+ +
+
+

VHDLParser help

+
usage: VHDLParser help [-h] [Command]
+
+
+
+
+command
+

Print help page(s) for a command.

+
+ +
+
+-h, --help
+

show this help message and exit

+
+ +
+
+

VHDLParser token-check

+

Generates and checks a stream of token objects for correct double-pointers.

+
usage: VHDLParser token-check [-h] filename
+
+
+
+
+filename
+

The filename to parse.

+
+ +
+
+-h, --help
+

show this help message and exit

+
+ +
+
+

VHDLParser token-stream

+

Create a stream of token objects.

+
usage: VHDLParser token-stream [-h] filename
+
+
+
+
+filename
+

The filename to parse.

+
+ +
+
+-h, --help
+

show this help message and exit

+
+ +
+
+

VHDLParser version

+
usage: VHDLParser version [-h]
+
+
+
+
+-h, --help
+

show this help message and exit

+
+ +
+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/TODOs.html b/TODOs.html new file mode 100644 index 000000000..2e3a0d6df --- /dev/null +++ b/TODOs.html @@ -0,0 +1,139 @@ + + + + + + + <no title> — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ + + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/TestApplication/VHDLParser.html b/TestApplication/VHDLParser.html new file mode 100644 index 000000000..de836792d --- /dev/null +++ b/TestApplication/VHDLParser.html @@ -0,0 +1,233 @@ + + + + + + + Command Line Interface VHDLParser — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Command Line Interface VHDLParser

+

For a full list of command line options see VHDLParser

+
+

Token Generation

+

The command token-stream creates a colored stream of tokens.

+

Usage

+
> VHDLParser token-stream <filename>
+
+
+

Result

+../_images/tokenize.png +
+
+

Testing Token Generation

+

The double-linking between tokens can be tested with the following command:

+
> VHDLParser token-check <filename>
+
+
+

Result

+

Only errors are reported.

+../_images/check-tokenize.png +
+
+

Block Generation

+

The command block-stream creates a colored stream of blocks. The tokens per +block can be displayed as nested items by enabling the verbose mode (-v).

+

Usage

+
> VHDLParser block-stream <filename>
+
+
+

Result

+../_images/blockstream.png +

Usage (verbose)

+
> VHDLParser -v block-stream <filename>
+
+
+

Result (verbose)

+../_images/blockstream-verbose.png +
+
+

Testing Blocks Generation

+

Usage

+
> VHDLParser block-check <filename>
+
+
+

Result

+
+

Todo

+

add image

+
+
+
+

Testing Groups Generation

+

Usage

+
> VHDLParser group-stream <filename>
+
+
+

Result

+
+

Todo

+

add image

+
+
+
+

Testing CodeDOM Generation

+

Usage

+
> VHDLParser CodeDOM <filename>
+
+
+

Result

+
+

Todo

+

add image

+
+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/TestApplication/index.html b/TestApplication/index.html new file mode 100644 index 000000000..183d47a9d --- /dev/null +++ b/TestApplication/index.html @@ -0,0 +1,165 @@ + + + + + + + Test Applications — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Test Applications

+

The pyVHDLParser package comes with an executable registered by pip in the +search path. VHDLParser is a wrapper for pyVHDLParser.CLI.VHDLParser:main.

+ +
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/TokenStream/Examples.html b/TokenStream/Examples.html new file mode 100644 index 000000000..fe08dbd50 --- /dev/null +++ b/TokenStream/Examples.html @@ -0,0 +1,217 @@ + + + + + + + Examples — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Examples

+
+

List all entity names

+

The following example lists all entity names from a given source file. To have +full forward and backward linking between tokens, the chain of tokens must be +fully generated. One easy approach is to use a list comprehension.

+

VHDL Sourcefile

+
entity myEntity_1 is
+end;
+
+entity myEntity_2 is
+end;
+
+
+

Expected Outputs

+
Found entity: myEntity_1
+Found entity: myEntity_2
+
+
+

Algorithm

+
    +
  1. Forward scan via main iterator searching for a WordToken of value entity.

  2. +
  3. Start a second (local) forward iteration to search for the next WordToken, +because an entity keyword must be followed by an identifier.

  4. +
+
# Open a source file
+with file.open('r') as fileHandle:
+  content = fileHandle.read()
+
+from pyVHDLParser.Base         import ParserException
+from pyVHDLParser.Token        import StartOfDocumentToken, EndOfDocumentToken
+from pyVHDLParser.Token.Parser import Tokenizer
+
+# get a list of all tokens
+tokenList = [token for token in Tokenizer.GetVHDLTokenizer(content)]
+
+try:
+  for token in tokenList:
+    if (isinstance(token, WordToken) and token <= "entity"):
+      tok = token.NextToken
+      while tok is not None:
+        if isinstance(tok, WordToken):
+          print("Found entity: {name}".format(name=tok.Value))
+          break
+        tok = tok.NextToken
+  except ParserException as ex:
+    print("ERROR: {0!s}".format(ex))
+  except NotImplementedError as ex:
+    print("NotImplementedError: {0!s}".format(ex))
+
+
+

Drawbacks

+
    +
  • Reports also end entity
    +Solution: scan backward, if last WordToken before entity was not of value end.

  • +
  • Reports also entity from attribute specifications.
    +This is a rare case.

  • +
+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/TokenStream/MetaTokens.html b/TokenStream/MetaTokens.html new file mode 100644 index 000000000..2ff7a0570 --- /dev/null +++ b/TokenStream/MetaTokens.html @@ -0,0 +1,179 @@ + + + + + + + Meta Tokens — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Meta Tokens

+

There are two meta-tokens: StartOfDocumentToken +and EndOfDocumentToken. These tokens represent +a start and end of a token stream. These tokens have a length of 0 characters.

+
+

StartOfDocumentToken

+

This token starts a chain of double-linked tokens in a token stream. It’s used, +if the input source is a whole file, otherwise StartOfSnippetToken. +It is derived from base-class StartOfToken +and mixin StartOfDocument.

+

Interitance diagram:

+
+
+

EndOfDocumentToken

+

This token ends a chain of double-linked tokens in a token stream. It’s used, +if the input source is a whole file, otherwise EndOfSnippetToken. +It is derived from base-class EndOfToken +and mixin EndOfDocument.

+

Interitance diagram:

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/TokenStream/SimpleTokens.html b/TokenStream/SimpleTokens.html new file mode 100644 index 000000000..690dfb07c --- /dev/null +++ b/TokenStream/SimpleTokens.html @@ -0,0 +1,231 @@ + + + + + + + Simple Tokens — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Simple Tokens

+

Simple tokens, are tokens created by the Token Generator (Tokenizer).

+

The tokenizer has no deep knowledge of the VHDL language, thus it can only detect +a limited number of distinct tokens. These token require only a context of up to +two characters while parsing.

+

List of simple tokens:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Kind

Examples

pyVHDLParser Token Class

Single character

;, (

CharacterToken

Multiple characters

<=, :=, **

FusedCharacterToken

Whitespace (space, tab)

SpaceToken

Word

entity, xor

WordToken

Single-line comment

-- TODO

SingleLineCommentToken

Multi-line comment

/*comment*/

MultiLineCommentToken

Integer literal

42

IntegerLiteralToken

Real literal

1.25

RealLiteralToken

Character literal

'a', 'Z'

CharacterLiteralToken

String literal

"hello"

StringLiteralToken

Bit string literal

x"42"

BitStringLiteralToken

Extended identifiers

\$cell35\

ExtendedIdentifierToken

Tool directives

DirectiveToken

Linebreak

\n

LineBreakToken

indentation

\t

IndentationToken

+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/TokenStream/SpecificTokens.html b/TokenStream/SpecificTokens.html new file mode 100644 index 000000000..e07e19fa6 --- /dev/null +++ b/TokenStream/SpecificTokens.html @@ -0,0 +1,160 @@ + + + + + + + Specific Tokens — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Specific Tokens

+
+

Todo

+

Explain specifi tokens and token replacement.

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/TokenStream/Tokenizer.html b/TokenStream/Tokenizer.html new file mode 100644 index 000000000..cb593b2d3 --- /dev/null +++ b/TokenStream/Tokenizer.html @@ -0,0 +1,190 @@ + + + + + + + Token Generator (Tokenizer) — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Token Generator (Tokenizer)

+
+

Todo

+

Describe tokenizer and generators and co-routines/yield.

+
+

The Tokenizer is implemented as a Python +generator returning one token at a time. It has 15 states defined in +pyVHDLParser.Token.Parser.Tokenizer.TokenKind.

+

Tokenizer States:

+
+
+

State Transitions of Tokenizer

+
+
+

Parser states defined in TokenKind:

+
class TokenKind(Enum):
+  """Enumeration of all Tokenizer states."""
+
+  SpaceChars =                       0   #: Last char was a space
+  NumberChars =                      1   #: Last char was a digit
+  AlphaChars =                       2   #: Last char was a letter
+  DelimiterChars =                   3   #: Last char was a delimiter character
+  PossibleSingleLineCommentStart =   4   #: Last char was a dash
+  PossibleLinebreak =                5   #: Last char was a ``\r``
+  PossibleCharacterLiteral =         6   #: Last char was a ``'``
+  PossibleStringLiteralStart =       7   #: Last char was a ``"``
+  PossibleExtendedIdentifierStart =  8   #: Last char was a ``\``
+  SingleLineComment =                9   #: Found ``--`` before
+  MultiLineComment =                10   #: Found ``/*`` before
+  Linebreak =                       11   #: Last char was a ``\n``
+  Directive =                       12   #: Last char was a `` ` ``
+  FuseableCharacter =               13   #: Last char was a character that could be fused
+  OtherChars =                      14   #: Any thing else
+
+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/TokenStream/Usage.html b/TokenStream/Usage.html new file mode 100644 index 000000000..0b4227bb2 --- /dev/null +++ b/TokenStream/Usage.html @@ -0,0 +1,229 @@ + + + + + + + Usage — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Usage

+

The following shows two code examples on how to use the Tokenizer. The first is +generator-based. The second one retrieves an iterator from the generator and +uses low-level access to the chain of tokens.

+
+

Token Generator

+

At first, a file is opened and the file content is read into a string buffer +called content. Strings are iterable, thus a string can be an input for the +Tokenizer.

+

At second, a generator object is created by GetVHDLTokenizer(...).

+

Finally, a for-loop can process each token from StartOfDocumentToken +to EndOfDocumentToken.

+
# Open a source file
+with file.open('r') as fileHandle:
+  content = fileHandle.read()
+
+from pyVHDLParser.Base         import ParserException
+from pyVHDLParser.Token        import StartOfDocumentToken, EndOfDocumentToken
+from pyVHDLParser.Token.Parser import Tokenizer
+
+# get a token generator
+tokenStream = Tokenizer.GetVHDLTokenizer(content)
+
+try:
+  for token in tokenStream:
+    print("{token}".format(token=token))
+  except ParserException as ex:
+    print("ERROR: {0!s}".format(ex))
+  except NotImplementedError as ex:
+    print("NotImplementedError: {0!s}".format(ex))
+
+
+
+
+

Token Iterator

+

Similar to the previous example, a stream of tokens is generated by a token +generator. This time, iteration is manually implemented with a while-loop. The +function iter() creates an iterator object from a generator object. At +next, calling next() returns a new token for each call.

+

The example wants to print the outer objects (first and last) of the token chain. +So at first, next() is called once to get the first element. Then an +endless loop is used to generate all tokens. If the generator ends, it raises +a StopIteration exception. The last token will be stored in variable +lastToken.

+
# Open a source file
+with file.open('r') as fileHandle:
+  content = fileHandle.read()
+
+from pyVHDLParser.Base         import ParserException
+from pyVHDLParser.Token        import StartOfDocumentToken, EndOfDocumentToken
+from pyVHDLParser.Token.Parser import Tokenizer
+
+# get a token generator
+tokenStream = Tokenizer.GetVHDLTokenizer(content)
+
+# get the iterator for that generator
+tokenIterator = iter(tokenStream)
+firstToken =    next(tokenIterator)
+
+try:
+  while lastToken := next(tokenIterator):
+    pass
+except StopIteration:
+  pass
+
+print("first token: {token}".format(token=firstToken))
+print("last token:  {token}".format(token=lastToken))
+
+
+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/TokenStream/index.html b/TokenStream/index.html new file mode 100644 index 000000000..7fdcda9cf --- /dev/null +++ b/TokenStream/index.html @@ -0,0 +1,229 @@ + + + + + + + 1. Pass - Tokens — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

1. Pass - Tokens

+

In the first pass a source file is sliced into a chain +of double-linked objects of base-class Token. While +token creation, the start and end position of a token is preserved as a +SourceCodePosition object within each token.

+

In contrast to ordinary parsers, pyVHDLParser preserves cases, whitespaces (space, +tab, …), linebreaks and comments.

+

Condensed definition of class SourceCodePosition:

+
@Export
+class SourceCodePosition:
+  """Represent a position (row, column, absolute) in a source code file."""
+  Row :       int = None    #: Row in the source code file
+  Column :    int = None    #: Column (character) in the source code file's line
+  Absolute :  int = None    #: Absolute character position regardless of linebreaks.
+
+
+

Condensed definition of class Token:

+
@Export
+class Token:
+  """Base-class for all token classes."""
+  _previousToken :  Token =               None    #: Reference to the previous token
+  _NextToken :      Token =               None    #: Reference to the next token
+  Start :           SourceCodePosition =  None    #: Position for the token start
+  End :             SourceCodePosition =  None    #: Position for the token end
+
+  def __init__(self, previousToken : Token, start : SourceCodePosition, end : SourceCodePosition = None):
+  def __len__(self):
+
+  @property
+  def PreviousToken(self):
+
+
+
+
+

Example of a VHDL Entity

+

Source code:

+
entity myEntity is
+  generic (
+    constant BITS : in positive := 8    -- 1 Byte
+  );
+  port (
+    signal Clock : in  std_logic;  -- $IsClock:
+    signal Reset : out std_logic   -- @Clock: generated reset pulse
+  );
+end entity;
+
+
+

Token Stream:

+../_images/tokenize.png +
+

Note

+

The 3 comments have been preserved and are shown in lime green. Please also +note the preserved positions in the last column.

+
+

Simplified Double-Linked List:

+
+
+

digraph Tokenize { + rankdir=LR; + + node [shape=box]; + + n1 [label="StartOfDocumentToken\n"]; + n2 [label="WordToken\n'entity'"]; + n3 [label="SpaceToken\n' '"]; + n4 [label="WordToken\n'myEntity'"]; + n5 [label="..."]; + n6 [label="EndOfDocumentToken\n"]; + + n1 -> n2 -> n3 -> n4 -> n5 -> n6 [dir=both]; +}

+
+

Source: TokenStream.vhdl

+
+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/UseCases.html b/UseCases.html new file mode 100644 index 000000000..580ba1817 --- /dev/null +++ b/UseCases.html @@ -0,0 +1,265 @@ + + + + + + + Use Cases — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Use Cases

+

The following list is an excerpt of possible use cases for pyVHDLParser.

+
+

Sourcecode Document Object Model

+

A sourcecode document object model (Code-DOM) is a object-oriented programming +model to represent a sourcecode file as a complex structure of object instances. +A Code-DOM can offer an immutable access to source files e.g. to find identifiers +and defined entities. This is called introspection.

+

Bringing this idea to the next level, adds a modification API to the Code-DOM. +Such an API also allows creating sourcecode from scratch with a Python API.

+
+
+

Language Model

+

While a Code-DOM focuses on a single file, a language model combines multiple +files, thus Code-DOMs, to an overall project or design understanding. In such +an extended scenario, a language model can offer several additional features +compared to a Code-DOM like:

+
    +
  • Type analysis,

  • +
  • Cross-references,

  • +
  • Design hierarchy,

  • +
  • Component and package dependencies, and

  • +
  • Compile order detection.

  • +
+
+
+

Dependency Graphs and Cross-References

+

Using a language model, a tool can calculate and visualize the following +dependency graphs:

+
    +
  • Compile order

  • +
  • Component hierarchy

  • +
  • Static call graph for functions

  • +
  • Type system / type graphs

  • +
+
+
+

Syntax Highlighting

+

As a Code-DOM has already knowledge about comments, keywords, identifiers, etc. +it’s straight forward to colorize a source document. While syntax-highlighting +and cross-referencing based on pure Code-DOMs might be limited, it can be at +full beauty if syntax highlighting is based on a language model.

+
+
+

Syntax-Checking

+

A parser is already checking the input for syntax correctness, but pyVHDLParser +is not very strict at all parts of an input file, because some parts might not +be parsed to its full depth. Therefore, the Code-DOM can get an additional syntax +checking pass.

+

As an example, pyVHDLParser considers any number as an integer literal, +regardless of the integers value. Thus, an integer literal might exceed an +(universal) integers value range. An additional check can catch such mistakes.

+
+
+

Documentation Extraction

+

A Code-DOM, which still includes all comments, can be used in another pass for +correlation of comments and language elements. The resulting mapping can be +exported in various documentation format like JSON, XML, Restructured Text, …

+
+

See also

+

A VHDL domain for Sphinx: sphinxcontrib-vhdldomain

+
+
+
+

Documentation Coverage Collection

+

Simulators and frameworks like OSVVM are +collecting statement, branch and even functional coverage, but non of the tools +is collecting documentation coverage.

+
    +
  • Are all Source files equipped with a file header?

    +
      +
    • Does the file header match the style/pattern?

    • +
    • Does the file header include necessary information (e.g. license)?

    • +
    +
  • +
  • Are all entities documented?

  • +
  • Are all public functions/procedures in a package documented?

  • +
  • Are all user-defined types documented?

  • +
  • Are all ports documented?

  • +
+
+
+

Static Code Analysis

+

The Code-DOM also allows for static checks like:

+
    +
  • Coding style

  • +
  • Code statistics / complexity checks

  • +
+
+
+

Document Transformation

+

As a combination of coding style checks and a Code-DOM or language model, +source files can be manipulated or reformatted according to rules.

+
+
+

Code Generation

+

As a Code-DOM is a structure of object instances, a Code-DOM can be constructed +from code itself. Thus, a sourcefile can be created from scratch purely in +memory. By using a rule-based formatting from objects to text, a Code-DOM can +be persisted as a VHDL source file.

+
+
+

Test Platform for new Language Revisions

+

And finally, this project could be used for testing upcoming language features +in syntax and functionality.

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_images/blockstream-verbose.png b/_images/blockstream-verbose.png new file mode 100644 index 000000000..4b1838864 Binary files /dev/null and b/_images/blockstream-verbose.png differ diff --git a/_images/blockstream.png b/_images/blockstream.png new file mode 100644 index 000000000..90fecf528 Binary files /dev/null and b/_images/blockstream.png differ diff --git a/_images/check-tokenize.png b/_images/check-tokenize.png new file mode 100644 index 000000000..298021bc0 Binary files /dev/null and b/_images/check-tokenize.png differ diff --git a/_images/graphviz-a79a058a84323e787b0b489a673934f2959321a7.svg b/_images/graphviz-a79a058a84323e787b0b489a673934f2959321a7.svg new file mode 100644 index 000000000..3238c8f51 --- /dev/null +++ b/_images/graphviz-a79a058a84323e787b0b489a673934f2959321a7.svg @@ -0,0 +1,87 @@ + + + + + + +Tokenize + + + +n1 + +StartOfDocumentToken + + + +n2 + +WordToken +'entity' + + + +n1->n2 + + + + + + +n3 + +SpaceToken +' ' + + + +n2->n3 + + + + + + +n4 + +WordToken +'myEntity' + + + +n3->n4 + + + + + + +n5 + +... + + + +n4->n5 + + + + + + +n6 + +EndOfDocumentToken + + + +n5->n6 + + + + + + diff --git a/_images/graphviz-ba58786f07ca51cccfdc8870fb796492f1785f43.svg b/_images/graphviz-ba58786f07ca51cccfdc8870fb796492f1785f43.svg new file mode 100644 index 000000000..2e396d525 --- /dev/null +++ b/_images/graphviz-ba58786f07ca51cccfdc8870fb796492f1785f43.svg @@ -0,0 +1,443 @@ + + + + + + +State transitions of Tokenizer + + + +n00 + + + + +n15 + +OtherChars + + + +n00->n15 + + + + + +n01 + +SpaceChars + + + +n01->n01 + + +WHITESPACE + + + +n02 + +NumberChars + + + +n01->n02 + + +NUMBER + + + +n03 + +AlphaChars + + + +n01->n03 + + +ALPHA + + + +n05 + +PossibleSingleLineCommentStart + + + +n01->n05 + + +- + + + +n06 + +PossibleLinebreak + + + +n01->n06 + + +\r + + + +n07 + +PossibleCharacterLiteral + + + +n01->n07 + + +' + + + +n08 + +PossibleStringLiteralStart + + + +n01->n08 + + +" + + + +n09 + +PossibleExtendedIdentifierStart + + + +n01->n09 + + +\\ + + + +n13 + +Directive + + + +n01->n13 + + +` + + + +n14 + +FuseableCharacter + + + +n01->n14 + + +FUSEABLE + + + +n01->n15 + + +\n + + + +n01->n15 + + +else + + + +n02->n01 + + +WHITESPACE + + + +n02->n02 + + +NUMBER + + + +n02->n03 + + +ALPHA + + + +n02->n05 + + +- + + + +n02->n06 + + +\r + + + +n02->n07 + + +' + + + +n02->n08 + + +" + + + +n02->n09 + + +\\ + + + +n02->n13 + + +` + + + +n02->n14 + + +FUSEABLE + + + +n02->n15 + + +\n + + + +n02->n15 + + +else + + + +n03->n01 + + +WHITESPACE + + + +n03->n03 + + +ALPHA + + + +n03->n05 + + +- + + + +n03->n06 + + +\r + + + +n03->n07 + + +' + + + +n03->n08 + + +" + + + +n03->n09 + + +\\ + + + +n03->n13 + + +` + + + +n03->n14 + + +FUSEABLE + + + +n03->n15 + + +\n + + + +n03->n15 + + +else + + + +n04 + +DelimiterChars + + + +n05->n01 + + +WHITESPACE + + + +n05->n02 + + +NUMBER + + + +n05->n03 + + +ALPHA + + + +n05->n06 + + +\r + + + +n05->n07 + + +' + + + +n05->n08 + + +" + + + +n05->n09 + + +\\ + + + +n10 + +SingleLineComment + + + +n05->n10 + + +- + + + +n05->n13 + + +` + + + +n05->n14 + + +FUSEABLE + + + +n05->n15 + + +\n + + + +n05->n15 + + +else + + + +n11 + +MultiLineComment + + + +n12 + +Linebreak + + + diff --git a/_images/inheritance-003a0278a9bbbe3d671282c0be5b4fb75fee19e6.svg b/_images/inheritance-003a0278a9bbbe3d671282c0be5b4fb75fee19e6.svg new file mode 100644 index 000000000..2742509df --- /dev/null +++ b/_images/inheritance-003a0278a9bbbe3d671282c0be5b4fb75fee19e6.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance71e0cbd012 + + +KeywordToken + + +KeywordToken + + + + + +UnbufferedKeyword + + +UnbufferedKeyword + + + + + +KeywordToken->UnbufferedKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-0047cf9fb3e9caef31f3dfb40ab3de8d4fdeb06e.svg b/_images/inheritance-0047cf9fb3e9caef31f3dfb40ab3de8d4fdeb06e.svg new file mode 100644 index 000000000..8e2da72d0 --- /dev/null +++ b/_images/inheritance-0047cf9fb3e9caef31f3dfb40ab3de8d4fdeb06e.svg @@ -0,0 +1,96 @@ + + + + + + +inheritance041c5cd8df + + +AngleBracketToken + + +AngleBracketToken + + + + + +BracketToken + + +BracketToken + + + + + +BracketToken->AngleBracketToken + + + + + +SpecificVHDLToken + + +SpecificVHDLToken + + + + + +SpecificVHDLToken->BracketToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->SpecificVHDLToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-00eb247d5e62460861002d9aa8a0699ef48ada65.svg b/_images/inheritance-00eb247d5e62460861002d9aa8a0699ef48ada65.svg new file mode 100644 index 000000000..2398c8dd6 --- /dev/null +++ b/_images/inheritance-00eb247d5e62460861002d9aa8a0699ef48ada65.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance0ebba85e07 + + +ImpureKeyword + + +ImpureKeyword + + + + + +KeywordToken + + +KeywordToken + + + + + +KeywordToken->ImpureKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-0129a213a739d457092742eeb1544f5282dc7ed3.svg b/_images/inheritance-0129a213a739d457092742eeb1544f5282dc7ed3.svg new file mode 100644 index 000000000..eba4cc199 --- /dev/null +++ b/_images/inheritance-0129a213a739d457092742eeb1544f5282dc7ed3.svg @@ -0,0 +1,51 @@ + + + + + + +inheritancee4a29086ea + + +BeginBlock + + +BeginBlock + + + + + +SequentialBeginBlock + + +SequentialBeginBlock + + + + + +BeginBlock->SequentialBeginBlock + + + + + +Block + + +Block + + + + + +Block->BeginBlock + + + + + diff --git a/_images/inheritance-016b3f8c46ae2e847ebc2a57ea7b85dca33cbf46.svg b/_images/inheritance-016b3f8c46ae2e847ebc2a57ea7b85dca33cbf46.svg new file mode 100644 index 000000000..f4385c620 --- /dev/null +++ b/_images/inheritance-016b3f8c46ae2e847ebc2a57ea7b85dca33cbf46.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance108362d1bc + + +Group + + +Group + + + + + +UseGroup + + +UseGroup + + + + + +Group->UseGroup + + + + + diff --git a/_images/inheritance-02758d8acd344c9622323f3058abee4997c83cfe.svg b/_images/inheritance-02758d8acd344c9622323f3058abee4997c83cfe.svg new file mode 100644 index 000000000..047160ff9 --- /dev/null +++ b/_images/inheritance-02758d8acd344c9622323f3058abee4997c83cfe.svg @@ -0,0 +1,51 @@ + + + + + + +inheritance4e0e4303f5 + + +Block + + +Block + + + + + +FinalBlock + + +FinalBlock + + + + + +Block->FinalBlock + + + + + +EndBlock + + +EndBlock + + + + + +FinalBlock->EndBlock + + + + + diff --git a/_images/inheritance-029ee8ce92a5882b56c2025a8e4f3c7dc2b25864.svg b/_images/inheritance-029ee8ce92a5882b56c2025a8e4f3c7dc2b25864.svg new file mode 100644 index 000000000..a9837fdb4 --- /dev/null +++ b/_images/inheritance-029ee8ce92a5882b56c2025a8e4f3c7dc2b25864.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance6191dd399d + + +Group + + +Group + + + + + +VariableAssignmentGroup + + +VariableAssignmentGroup + + + + + +Group->VariableAssignmentGroup + + + + + diff --git a/_images/inheritance-02f89a302d6c1c41bcfd51270e099ba9354be5c6.svg b/_images/inheritance-02f89a302d6c1c41bcfd51270e099ba9354be5c6.svg new file mode 100644 index 000000000..ca9ecc799 --- /dev/null +++ b/_images/inheritance-02f89a302d6c1c41bcfd51270e099ba9354be5c6.svg @@ -0,0 +1,51 @@ + + + + + + +inheritancee92964742b + + +Block + + +Block + + + + + +InterfaceObjectBlock + + +InterfaceObjectBlock + + + + + +Block->InterfaceObjectBlock + + + + + +InterfaceConstantBlock + + +InterfaceConstantBlock + + + + + +InterfaceObjectBlock->InterfaceConstantBlock + + + + + diff --git a/_images/inheritance-03e4d3120a33e67af9ea3ee7bb56accdc0cd78d9.svg b/_images/inheritance-03e4d3120a33e67af9ea3ee7bb56accdc0cd78d9.svg new file mode 100644 index 000000000..bd9d9ee35 --- /dev/null +++ b/_images/inheritance-03e4d3120a33e67af9ea3ee7bb56accdc0cd78d9.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance45d9bdd109 + + +Procedure + + +Procedure + + + + + +SubProgram + + +SubProgram + + + + + +SubProgram->Procedure + + + + + diff --git a/_images/inheritance-03e584bb71bd90d068e2dbf9f241f8a53ef2ce88.svg b/_images/inheritance-03e584bb71bd90d068e2dbf9f241f8a53ef2ce88.svg new file mode 100644 index 000000000..4cfedb37e --- /dev/null +++ b/_images/inheritance-03e584bb71bd90d068e2dbf9f241f8a53ef2ce88.svg @@ -0,0 +1,36 @@ + + + + + + +inheritancecaede6546a + + +EntityGroup + + +EntityGroup + + + + + +Group + + +Group + + + + + +Group->EntityGroup + + + + + diff --git a/_images/inheritance-03eb63680d9740560969cd48219bb0334aaeeaec.svg b/_images/inheritance-03eb63680d9740560969cd48219bb0334aaeeaec.svg new file mode 100644 index 000000000..97dad12b0 --- /dev/null +++ b/_images/inheritance-03eb63680d9740560969cd48219bb0334aaeeaec.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance799c1021b1 + + +CaseGroup + + +CaseGroup + + + + + +Group + + +Group + + + + + +Group->CaseGroup + + + + + diff --git a/_images/inheritance-051ef971e1bb262b62cd0ead04b0dadf891cfd44.svg b/_images/inheritance-051ef971e1bb262b62cd0ead04b0dadf891cfd44.svg new file mode 100644 index 000000000..a3f91e40d --- /dev/null +++ b/_images/inheritance-051ef971e1bb262b62cd0ead04b0dadf891cfd44.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance89ffd4dccf + + +Group + + +Group + + + + + +ProcedureGroup + + +ProcedureGroup + + + + + +Group->ProcedureGroup + + + + + diff --git a/_images/inheritance-05b9760b24c5045eab55c23830d8511f6639250b.svg b/_images/inheritance-05b9760b24c5045eab55c23830d8511f6639250b.svg new file mode 100644 index 000000000..f9de513fd --- /dev/null +++ b/_images/inheritance-05b9760b24c5045eab55c23830d8511f6639250b.svg @@ -0,0 +1,21 @@ + + + + + + +inheritance29e4db7ad8 + + +Type + + +Type + + + + + diff --git a/_images/inheritance-0618a687c4c5d702a339a4aa25df78432c600d6c.svg b/_images/inheritance-0618a687c4c5d702a339a4aa25df78432c600d6c.svg new file mode 100644 index 000000000..97d9c8c7f --- /dev/null +++ b/_images/inheritance-0618a687c4c5d702a339a4aa25df78432c600d6c.svg @@ -0,0 +1,57 @@ + + + + + + +inheritance93cba77a7d + + +BeginBlock + + +BeginBlock + + + + + +SequentialBeginBlock + + +SequentialBeginBlock + + + + + +BeginBlock->SequentialBeginBlock + + + + + +Block + + +Block + + + + + +Block->BeginBlock + + + + + +SequentialBeginBlock->BeginBlock + + + + + diff --git a/_images/inheritance-0774c2676dc2a84554a9373165c8266fad1968c7.svg b/_images/inheritance-0774c2676dc2a84554a9373165c8266fad1968c7.svg new file mode 100644 index 000000000..21d010f1d --- /dev/null +++ b/_images/inheritance-0774c2676dc2a84554a9373165c8266fad1968c7.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance7560b029b7 + + +KeywordToken + + +KeywordToken + + + + + +SequenceKeyword + + +SequenceKeyword + + + + + +KeywordToken->SequenceKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-077e92e51097b08f29eefe0b8d0f8ffcfa5818b3.svg b/_images/inheritance-077e92e51097b08f29eefe0b8d0f8ffcfa5818b3.svg new file mode 100644 index 000000000..23a887979 --- /dev/null +++ b/_images/inheritance-077e92e51097b08f29eefe0b8d0f8ffcfa5818b3.svg @@ -0,0 +1,21 @@ + + + + + + +inheritance5ed14ca82c + + +Signal + + +Signal + + + + + diff --git a/_images/inheritance-07f1ee592031b14dc8e42c87d1d875552c408e0e.svg b/_images/inheritance-07f1ee592031b14dc8e42c87d1d875552c408e0e.svg new file mode 100644 index 000000000..d09353048 --- /dev/null +++ b/_images/inheritance-07f1ee592031b14dc8e42c87d1d875552c408e0e.svg @@ -0,0 +1,36 @@ + + + + + + +inheritancec1ceb6b2de + + +Block + + +Block + + + + + +EntityInstantiationBlock + + +EntityInstantiationBlock + + + + + +Block->EntityInstantiationBlock + + + + + diff --git a/_images/inheritance-0847aecfd1b613c3950354be424546673d948669.svg b/_images/inheritance-0847aecfd1b613c3950354be424546673d948669.svg new file mode 100644 index 000000000..e74b18fb7 --- /dev/null +++ b/_images/inheritance-0847aecfd1b613c3950354be424546673d948669.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance26586f34fe + + +Block + + +Block + + + + + +ReportBlock + + +ReportBlock + + + + + +Block->ReportBlock + + + + + diff --git a/_images/inheritance-094a715351bfe9119078646d7563871566718e85.svg b/_images/inheritance-094a715351bfe9119078646d7563871566718e85.svg new file mode 100644 index 000000000..4723e7bf4 --- /dev/null +++ b/_images/inheritance-094a715351bfe9119078646d7563871566718e85.svg @@ -0,0 +1,42 @@ + + + + + + +inheritanced9ef7a3b00 + + +DeclarativeRegion + + +DeclarativeRegion + + + + + +SequentialDeclarativeRegion + + +SequentialDeclarativeRegion + + + + + +DeclarativeRegion->SequentialDeclarativeRegion + + + + + +SequentialDeclarativeRegion->DeclarativeRegion + + + + + diff --git a/_images/inheritance-0a01e139ad236daa816e88d06806d6f0c977a6c5.svg b/_images/inheritance-0a01e139ad236daa816e88d06806d6f0c977a6c5.svg new file mode 100644 index 000000000..6da5397e7 --- /dev/null +++ b/_images/inheritance-0a01e139ad236daa816e88d06806d6f0c977a6c5.svg @@ -0,0 +1,66 @@ + + + + + + +inheritance1307261d89 + + +Block + + +Block + + + + + +ExpressionBlock + + +ExpressionBlock + + + + + +Block->ExpressionBlock + + + + + +ExpressionBlockEndedByKeywordOrToOrDownto + + +ExpressionBlockEndedByKeywordOrToOrDownto + + + + + +ExpressionBlock->ExpressionBlockEndedByKeywordOrToOrDownto + + + + + +ExpressionBlockEndedByLoopORToORDownto + + +ExpressionBlockEndedByLoopORToORDownto + + + + + +ExpressionBlockEndedByKeywordOrToOrDownto->ExpressionBlockEndedByLoopORToORDownto + + + + + diff --git a/_images/inheritance-0a6f46c950f114f9a61c20f002ad4a7fd6da71a8.svg b/_images/inheritance-0a6f46c950f114f9a61c20f002ad4a7fd6da71a8.svg new file mode 100644 index 000000000..3a59bc202 --- /dev/null +++ b/_images/inheritance-0a6f46c950f114f9a61c20f002ad4a7fd6da71a8.svg @@ -0,0 +1,51 @@ + + + + + + +inheritance86cc104440 + + +Block + + +Block + + + + + +ExpressionBlock + + +ExpressionBlock + + + + + +Block->ExpressionBlock + + + + + +ExpressionBlockEndedBySemicolon + + +ExpressionBlockEndedBySemicolon + + + + + +ExpressionBlock->ExpressionBlockEndedBySemicolon + + + + + diff --git a/_images/inheritance-0bc4cc0fd50428058bf4753c835307928d4f82fe.svg b/_images/inheritance-0bc4cc0fd50428058bf4753c835307928d4f82fe.svg new file mode 100644 index 000000000..758dde831 --- /dev/null +++ b/_images/inheritance-0bc4cc0fd50428058bf4753c835307928d4f82fe.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance4394a81dcd + + +Group + + +Group + + + + + +NextGroup + + +NextGroup + + + + + +Group->NextGroup + + + + + diff --git a/_images/inheritance-0c031d54f37ba9e484c9260fb86603869204443f.svg b/_images/inheritance-0c031d54f37ba9e484c9260fb86603869204443f.svg new file mode 100644 index 000000000..1d7b4e75f --- /dev/null +++ b/_images/inheritance-0c031d54f37ba9e484c9260fb86603869204443f.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance116f06fa3a + + +Block + + +Block + + + + + +OpenBlock + + +OpenBlock + + + + + +Block->OpenBlock + + + + + diff --git a/_images/inheritance-0c7f8ae7c1fd4567032816c2db54a3d2ee68b419.svg b/_images/inheritance-0c7f8ae7c1fd4567032816c2db54a3d2ee68b419.svg new file mode 100644 index 000000000..0cb3d4717 --- /dev/null +++ b/_images/inheritance-0c7f8ae7c1fd4567032816c2db54a3d2ee68b419.svg @@ -0,0 +1,111 @@ + + + + + + +inheritancef69c4f1311 + + +EqualOperator + + +EqualOperator + + + + + +RelationalOperator + + +RelationalOperator + + + + + +RelationalOperator->EqualOperator + + + + + +OperatorToken + + +OperatorToken + + + + + +OperatorToken->RelationalOperator + + + + + +SpecificVHDLToken + + +SpecificVHDLToken + + + + + +SpecificVHDLToken->OperatorToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->SpecificVHDLToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-0cdf4d85d3a5230f98e18b163e5bba13a3458eab.svg b/_images/inheritance-0cdf4d85d3a5230f98e18b163e5bba13a3458eab.svg new file mode 100644 index 000000000..631660060 --- /dev/null +++ b/_images/inheritance-0cdf4d85d3a5230f98e18b163e5bba13a3458eab.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance153eaec537 + + +ArrayConstrainedSubtypeIndicationBlock + + +ArrayConstrainedSubtypeIndicationBlock + + + + + +Block + + +Block + + + + + +Block->ArrayConstrainedSubtypeIndicationBlock + + + + + diff --git a/_images/inheritance-0e8bf53773bf8f41b94e34237f1768dc945df7fd.svg b/_images/inheritance-0e8bf53773bf8f41b94e34237f1768dc945df7fd.svg new file mode 100644 index 000000000..1467e678d --- /dev/null +++ b/_images/inheritance-0e8bf53773bf8f41b94e34237f1768dc945df7fd.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance5874cb6ade + + +Block + + +Block + + + + + +SubtypeIndicationBlock + + +SubtypeIndicationBlock + + + + + +Block->SubtypeIndicationBlock + + + + + diff --git a/_images/inheritance-0e8e6f9df92ee5cf3783d401d73a37a50a924932.svg b/_images/inheritance-0e8e6f9df92ee5cf3783d401d73a37a50a924932.svg new file mode 100644 index 000000000..617bc3763 --- /dev/null +++ b/_images/inheritance-0e8e6f9df92ee5cf3783d401d73a37a50a924932.svg @@ -0,0 +1,111 @@ + + + + + + +inheritance1e805d6b63 + + +KeywordToken + + +KeywordToken + + + + + +Operator + + +Operator + + + + + +KeywordToken->Operator + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +LogicalOperator + + +LogicalOperator + + + + + +NorOperator + + +NorOperator + + + + + +LogicalOperator->NorOperator + + + + + +Operator->LogicalOperator + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-0ed7c3dfc625cb10c29e45f5561ebb46186ddf9f.svg b/_images/inheritance-0ed7c3dfc625cb10c29e45f5561ebb46186ddf9f.svg new file mode 100644 index 000000000..d415d16ee --- /dev/null +++ b/_images/inheritance-0ed7c3dfc625cb10c29e45f5561ebb46186ddf9f.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance06ea69b805 + + +Group + + +Group + + + + + +ParameterListGroup + + +ParameterListGroup + + + + + +Group->ParameterListGroup + + + + + diff --git a/_images/inheritance-0f0e8c5323fdbc4a5a090e9f02567a45db83bbad.svg b/_images/inheritance-0f0e8c5323fdbc4a5a090e9f02567a45db83bbad.svg new file mode 100644 index 000000000..75ca621d1 --- /dev/null +++ b/_images/inheritance-0f0e8c5323fdbc4a5a090e9f02567a45db83bbad.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance0d2f6fb771 + + +KeywordToken + + +KeywordToken + + + + + +ProtectedKeyword + + +ProtectedKeyword + + + + + +KeywordToken->ProtectedKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-0f9fcf7dd8a8c33117f3fcd12d95c1d4164df373.svg b/_images/inheritance-0f9fcf7dd8a8c33117f3fcd12d95c1d4164df373.svg new file mode 100644 index 000000000..b0b25be9c --- /dev/null +++ b/_images/inheritance-0f9fcf7dd8a8c33117f3fcd12d95c1d4164df373.svg @@ -0,0 +1,51 @@ + + + + + + +inheritance960d6feb94 + + +Block + + +Block + + + + + +SkipableBlock + + +SkipableBlock + + + + + +Block->SkipableBlock + + + + + +DelimiterBlock + + +DelimiterBlock + + + + + +SkipableBlock->DelimiterBlock + + + + + diff --git a/_images/inheritance-0fa3dccb1913c333ff890d9c545dfeb8505554f2.svg b/_images/inheritance-0fa3dccb1913c333ff890d9c545dfeb8505554f2.svg new file mode 100644 index 000000000..cddf970c4 --- /dev/null +++ b/_images/inheritance-0fa3dccb1913c333ff890d9c545dfeb8505554f2.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance540893a295 + + +KeywordToken + + +KeywordToken + + + + + +WhileKeyword + + +WhileKeyword + + + + + +KeywordToken->WhileKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-0fda13d2d5ecade35e93cf08cf953cbe662e07f6.svg b/_images/inheritance-0fda13d2d5ecade35e93cf08cf953cbe662e07f6.svg new file mode 100644 index 000000000..051d8b474 --- /dev/null +++ b/_images/inheritance-0fda13d2d5ecade35e93cf08cf953cbe662e07f6.svg @@ -0,0 +1,21 @@ + + + + + + +inheritancebe1daaefb8 + + +SubProgram + + +SubProgram + + + + + diff --git a/_images/inheritance-105c785cf8b1cd72001a616af600834e7d2fb0a3.svg b/_images/inheritance-105c785cf8b1cd72001a616af600834e7d2fb0a3.svg new file mode 100644 index 000000000..e446fedde --- /dev/null +++ b/_images/inheritance-105c785cf8b1cd72001a616af600834e7d2fb0a3.svg @@ -0,0 +1,81 @@ + + + + + + +inheritancef32b7b794a + + +AssociationKeyword + + +AssociationKeyword + + + + + +MultiCharKeyword + + +MultiCharKeyword + + + + + +MultiCharKeyword->AssociationKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->MultiCharKeyword + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-10d11fac04faa71700434befb05da76833db8da2.svg b/_images/inheritance-10d11fac04faa71700434befb05da76833db8da2.svg new file mode 100644 index 000000000..c58811710 --- /dev/null +++ b/_images/inheritance-10d11fac04faa71700434befb05da76833db8da2.svg @@ -0,0 +1,45 @@ + + + + + + +inheritance44bd9a4db3 + + +DOMParserException + + +DOMParserException + + + + + +ParserException + +ParserException + + + +ParserException->DOMParserException + + + + + +ExceptionBase + +ExceptionBase + + + +ExceptionBase->ParserException + + + + + diff --git a/_images/inheritance-10d79aeb098eb1b924695948c695d9ecdd145841.svg b/_images/inheritance-10d79aeb098eb1b924695948c695d9ecdd145841.svg new file mode 100644 index 000000000..a771af6cf --- /dev/null +++ b/_images/inheritance-10d79aeb098eb1b924695948c695d9ecdd145841.svg @@ -0,0 +1,21 @@ + + + + + + +inheritance8c06cc578b + + +TokenToBlockParser + + +TokenToBlockParser + + + + + diff --git a/_images/inheritance-10e16187938c4bdf85e95f3c9ca25ac106111697.svg b/_images/inheritance-10e16187938c4bdf85e95f3c9ca25ac106111697.svg new file mode 100644 index 000000000..bb2a0bf5b --- /dev/null +++ b/_images/inheritance-10e16187938c4bdf85e95f3c9ca25ac106111697.svg @@ -0,0 +1,66 @@ + + + + + + +inheritance0406cd4f64 + + +Block + + +Block + + + + + +InterfaceObjectBlock + + +InterfaceObjectBlock + + + + + +Block->InterfaceObjectBlock + + + + + +GenericListInterfaceConstantBlock + + +GenericListInterfaceConstantBlock + + + + + +InterfaceConstantBlock + + +InterfaceConstantBlock + + + + + +InterfaceConstantBlock->GenericListInterfaceConstantBlock + + + + + +InterfaceObjectBlock->InterfaceConstantBlock + + + + + diff --git a/_images/inheritance-1108552b5efd06eacd6860ec3a90151072b62aa2.svg b/_images/inheritance-1108552b5efd06eacd6860ec3a90151072b62aa2.svg new file mode 100644 index 000000000..2c64481e4 --- /dev/null +++ b/_images/inheritance-1108552b5efd06eacd6860ec3a90151072b62aa2.svg @@ -0,0 +1,96 @@ + + + + + + +inheritance6cac54b768 + + +AssignmentKeyword + + +AssignmentKeyword + + + + + +SignalAssignmentKeyword + + +SignalAssignmentKeyword + + + + + +AssignmentKeyword->SignalAssignmentKeyword + + + + + +MultiCharKeyword + + +MultiCharKeyword + + + + + +MultiCharKeyword->AssignmentKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->MultiCharKeyword + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-11bc9a5310e5f26ca51abc951064654d064c9fc2.svg b/_images/inheritance-11bc9a5310e5f26ca51abc951064654d064c9fc2.svg new file mode 100644 index 000000000..cfc74a42e --- /dev/null +++ b/_images/inheritance-11bc9a5310e5f26ca51abc951064654d064c9fc2.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance0a1eb008d2 + + +CharacterLiteralToken + + +CharacterLiteralToken + + + + + +LiteralToken + + +LiteralToken + + + + + +LiteralToken->CharacterLiteralToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->LiteralToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-11d26615584a3f9c5e4d9b32676f4956f1abb672.svg b/_images/inheritance-11d26615584a3f9c5e4d9b32676f4956f1abb672.svg new file mode 100644 index 000000000..69a34a820 --- /dev/null +++ b/_images/inheritance-11d26615584a3f9c5e4d9b32676f4956f1abb672.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance9a9b234b73 + + +Block + + +Block + + + + + +StartBlock + + +StartBlock + + + + + +Block->StartBlock + + + + + diff --git a/_images/inheritance-12e9d5c516e7ae90045dcb3921f02aaf5bbbaa0f.svg b/_images/inheritance-12e9d5c516e7ae90045dcb3921f02aaf5bbbaa0f.svg new file mode 100644 index 000000000..daae1320a --- /dev/null +++ b/_images/inheritance-12e9d5c516e7ae90045dcb3921f02aaf5bbbaa0f.svg @@ -0,0 +1,111 @@ + + + + + + +inheritancee6beadf586 + + +CommentKeyword + + +CommentKeyword + + + + + +MultiLineCommentKeyword + + +MultiLineCommentKeyword + + + + + +CommentKeyword->MultiLineCommentKeyword + + + + + +MultiCharKeyword + + +MultiCharKeyword + + + + + +MultiCharKeyword->CommentKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->MultiCharKeyword + + + + + +MultiLineCommentEndKeyword + + +MultiLineCommentEndKeyword + + + + + +MultiLineCommentKeyword->MultiLineCommentEndKeyword + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-13157ebbd1e32b5094010a590379aa64a9ab99d7.svg b/_images/inheritance-13157ebbd1e32b5094010a590379aa64a9ab99d7.svg new file mode 100644 index 000000000..aab0908f6 --- /dev/null +++ b/_images/inheritance-13157ebbd1e32b5094010a590379aa64a9ab99d7.svg @@ -0,0 +1,21 @@ + + + + + + +inheritance18e96f5f30 + + +RecordMember + + +RecordMember + + + + + diff --git a/_images/inheritance-134211f4c303eeae4917a6e9122149ee3066dcc9.svg b/_images/inheritance-134211f4c303eeae4917a6e9122149ee3066dcc9.svg new file mode 100644 index 000000000..01167d4c7 --- /dev/null +++ b/_images/inheritance-134211f4c303eeae4917a6e9122149ee3066dcc9.svg @@ -0,0 +1,66 @@ + + + + + + +inheritance7b9b88f563 + + +Block + + +Block + + + + + +ExpressionBlock + + +ExpressionBlock + + + + + +Block->ExpressionBlock + + + + + +ExpressionBlockEndedBySemicolon + + +ExpressionBlockEndedBySemicolon + + + + + +ExpressionBlock->ExpressionBlockEndedBySemicolon + + + + + +ReturnExpressionBlock + + +ReturnExpressionBlock + + + + + +ExpressionBlockEndedBySemicolon->ReturnExpressionBlock + + + + + diff --git a/_images/inheritance-1397a4ae2c943af92e4666c59a2e241fe524d846.svg b/_images/inheritance-1397a4ae2c943af92e4666c59a2e241fe524d846.svg new file mode 100644 index 000000000..42040ebb0 --- /dev/null +++ b/_images/inheritance-1397a4ae2c943af92e4666c59a2e241fe524d846.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance58d7670d03 + + +Group + + +Group + + + + + +PortMapGroup + + +PortMapGroup + + + + + +Group->PortMapGroup + + + + + diff --git a/_images/inheritance-13a52d726d117fdf19f0a2b4e5b172d33c6a907b.svg b/_images/inheritance-13a52d726d117fdf19f0a2b4e5b172d33c6a907b.svg new file mode 100644 index 000000000..264a72705 --- /dev/null +++ b/_images/inheritance-13a52d726d117fdf19f0a2b4e5b172d33c6a907b.svg @@ -0,0 +1,66 @@ + + + + + + +inheritancea67f1b9923 + + +MultiCharKeyword + + +MultiCharKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->MultiCharKeyword + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-140c11b5fb5ea81e6466ad2938559da8a219e6c9.svg b/_images/inheritance-140c11b5fb5ea81e6466ad2938559da8a219e6c9.svg new file mode 100644 index 000000000..7f010e2cb --- /dev/null +++ b/_images/inheritance-140c11b5fb5ea81e6466ad2938559da8a219e6c9.svg @@ -0,0 +1,21 @@ + + + + + + +inheritance126e0bfaa0 + + +Subtype + + +Subtype + + + + + diff --git a/_images/inheritance-146fc3305f37aa55963ff911c62f0d2fd5d7b7c2.svg b/_images/inheritance-146fc3305f37aa55963ff911c62f0d2fd5d7b7c2.svg new file mode 100644 index 000000000..d2eab3549 --- /dev/null +++ b/_images/inheritance-146fc3305f37aa55963ff911c62f0d2fd5d7b7c2.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance999b5fa800 + + +Group + + +Group + + + + + +SignalGroup + + +SignalGroup + + + + + +Group->SignalGroup + + + + + diff --git a/_images/inheritance-14e0c7a383c3ad9abb362dee9651aca9edde190f.svg b/_images/inheritance-14e0c7a383c3ad9abb362dee9651aca9edde190f.svg new file mode 100644 index 000000000..1bd15f4da --- /dev/null +++ b/_images/inheritance-14e0c7a383c3ad9abb362dee9651aca9edde190f.svg @@ -0,0 +1,138 @@ + + + + + + +inheritanceb4a5d6e370 + + +ConcurrentDeclarations + +ConcurrentDeclarations + + + +Entity + + +Entity + + + + + +ConcurrentDeclarations->Entity + + + + + +ConcurrentStatements + +ConcurrentStatements + + + +ConcurrentStatements->Entity + + + + + +DesignUnit + + +DesignUnit + + + + + +PrimaryUnit + + +PrimaryUnit + + + + + +DesignUnit->PrimaryUnit + + + + + +ModelEntity + + +ModelEntity + + + + + +ModelEntity->DesignUnit + + + + + +NamedEntityMixin + + +NamedEntityMixin + + + + + +NamedEntityMixin->DesignUnit + + + + + +DocumentedEntityMixin + + +DocumentedEntityMixin + + + + + +DocumentedEntityMixin->DesignUnit + + + + + +DesignUnitWithContextMixin + +DesignUnitWithContextMixin + + + +DesignUnitWithContextMixin->Entity + + + + + +Entity->Entity + + + + + +PrimaryUnit->Entity + + + + + diff --git a/_images/inheritance-153c1ac63be50bb5509139fb5233864072ea7613.svg b/_images/inheritance-153c1ac63be50bb5509139fb5233864072ea7613.svg new file mode 100644 index 000000000..1dc910b7f --- /dev/null +++ b/_images/inheritance-153c1ac63be50bb5509139fb5233864072ea7613.svg @@ -0,0 +1,66 @@ + + + + + + +inheritance3f8fdbead0 + + +Block + + +Block + + + + + +EndOfStatementBlock + + +EndOfStatementBlock + + + + + +Block->EndOfStatementBlock + + + + + +ObjectDeclarationEndMarkerBlock + + +ObjectDeclarationEndMarkerBlock + + + + + +EndOfStatementBlock->ObjectDeclarationEndMarkerBlock + + + + + +SharedVariableDeclarationEndMarkerBlock + + +SharedVariableDeclarationEndMarkerBlock + + + + + +ObjectDeclarationEndMarkerBlock->SharedVariableDeclarationEndMarkerBlock + + + + + diff --git a/_images/inheritance-15777d096ade06b8d04a36625ddd4ee16b01f06e.svg b/_images/inheritance-15777d096ade06b8d04a36625ddd4ee16b01f06e.svg new file mode 100644 index 000000000..220c238d1 --- /dev/null +++ b/_images/inheritance-15777d096ade06b8d04a36625ddd4ee16b01f06e.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance392925af69 + + +StartOf + + +StartOf + + + + + +StartOfSnippet + + +StartOfSnippet + + + + + +StartOf->StartOfSnippet + + + + + +StartOfSnippetToken + + +StartOfSnippetToken + + + + + +StartOfSnippet->StartOfSnippetToken + + + + + +StartOfToken + + +StartOfToken + + + + + +StartOfToken->StartOfSnippetToken + + + + + +Token + + +Token + + + + + +Token->StartOfToken + + + + + diff --git a/_images/inheritance-16273a8d58618de7def1a8e9e8bbcce6840b79eb.svg b/_images/inheritance-16273a8d58618de7def1a8e9e8bbcce6840b79eb.svg new file mode 100644 index 000000000..b666d5a18 --- /dev/null +++ b/_images/inheritance-16273a8d58618de7def1a8e9e8bbcce6840b79eb.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance542b43d70a + + +Group + + +Group + + + + + +ReturnTypeGroup + + +ReturnTypeGroup + + + + + +Group->ReturnTypeGroup + + + + + diff --git a/_images/inheritance-1734091c629169faf974bd78f0c4cb404f5bb0a2.svg b/_images/inheritance-1734091c629169faf974bd78f0c4cb404f5bb0a2.svg new file mode 100644 index 000000000..2f9d83f1a --- /dev/null +++ b/_images/inheritance-1734091c629169faf974bd78f0c4cb404f5bb0a2.svg @@ -0,0 +1,57 @@ + + + + + + +inheritance4e0e4303f5 + + +Block + + +Block + + + + + +FinalBlock + + +FinalBlock + + + + + +Block->FinalBlock + + + + + +EndBlock + + +EndBlock + + + + + +EndBlock->EndBlock + + + + + +FinalBlock->EndBlock + + + + + diff --git a/_images/inheritance-1755c7442a475b7e152c00a3356b7fd76f41d904.svg b/_images/inheritance-1755c7442a475b7e152c00a3356b7fd76f41d904.svg new file mode 100644 index 000000000..8fe0b6c58 --- /dev/null +++ b/_images/inheritance-1755c7442a475b7e152c00a3356b7fd76f41d904.svg @@ -0,0 +1,21 @@ + + + + + + +inheritancef538defda9 + + +BlockReverseIterator + + +BlockReverseIterator + + + + + diff --git a/_images/inheritance-179da07c1fd4249d4c0fd6846a263e6854b36499.svg b/_images/inheritance-179da07c1fd4249d4c0fd6846a263e6854b36499.svg new file mode 100644 index 000000000..1e76f9e8d --- /dev/null +++ b/_images/inheritance-179da07c1fd4249d4c0fd6846a263e6854b36499.svg @@ -0,0 +1,57 @@ + + + + + + +inheritance4e0e4303f5 + + +Block + + +Block + + + + + +FinalBlock + + +FinalBlock + + + + + +Block->FinalBlock + + + + + +EndBlock + + +EndBlock + + + + + +EndBlock->EndBlock + + + + + +FinalBlock->EndBlock + + + + + diff --git a/_images/inheritance-1848f2208bc31ad7245cd9b4340cb60da239123c.svg b/_images/inheritance-1848f2208bc31ad7245cd9b4340cb60da239123c.svg new file mode 100644 index 000000000..4bf48ef7d --- /dev/null +++ b/_images/inheritance-1848f2208bc31ad7245cd9b4340cb60da239123c.svg @@ -0,0 +1,96 @@ + + + + + + +inheritanced422b077a0 + + +KeywordToken + + +KeywordToken + + + + + +Operator + + +Operator + + + + + +KeywordToken->Operator + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +ShiftOperator + + +ShiftOperator + + + + + +Operator->ShiftOperator + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-18a68089a1586ad6f40b95189120214c65712842.svg b/_images/inheritance-18a68089a1586ad6f40b95189120214c65712842.svg new file mode 100644 index 000000000..4ba0ccb8d --- /dev/null +++ b/_images/inheritance-18a68089a1586ad6f40b95189120214c65712842.svg @@ -0,0 +1,81 @@ + + + + + + +inheritancea94ecf2810 + + +BracketToken + + +BracketToken + + + + + +SpecificVHDLToken + + +SpecificVHDLToken + + + + + +SpecificVHDLToken->BracketToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->SpecificVHDLToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-18fc9937d763411b6d9b162a0009c808156bd1b5.svg b/_images/inheritance-18fc9937d763411b6d9b162a0009c808156bd1b5.svg new file mode 100644 index 000000000..5064f104b --- /dev/null +++ b/_images/inheritance-18fc9937d763411b6d9b162a0009c808156bd1b5.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance116f06fa3a + + +Block + + +Block + + + + + +OpenBlock + + +OpenBlock + + + + + +Block->OpenBlock + + + + + diff --git a/_images/inheritance-19382cf3533662f0cc89554b723478d7714ef4ce.svg b/_images/inheritance-19382cf3533662f0cc89554b723478d7714ef4ce.svg new file mode 100644 index 000000000..2f2098054 --- /dev/null +++ b/_images/inheritance-19382cf3533662f0cc89554b723478d7714ef4ce.svg @@ -0,0 +1,51 @@ + + + + + + +inheritance1c182bd1c9 + + +Block + + +Block + + + + + +ObjectDeclarationBlock + + +ObjectDeclarationBlock + + + + + +Block->ObjectDeclarationBlock + + + + + +VariableDeclarationBlock + + +VariableDeclarationBlock + + + + + +ObjectDeclarationBlock->VariableDeclarationBlock + + + + + diff --git a/_images/inheritance-19f3daa50ce8f81663f4d578e2b6fe6558a941b6.svg b/_images/inheritance-19f3daa50ce8f81663f4d578e2b6fe6558a941b6.svg new file mode 100644 index 000000000..cf5bfa69d --- /dev/null +++ b/_images/inheritance-19f3daa50ce8f81663f4d578e2b6fe6558a941b6.svg @@ -0,0 +1,81 @@ + + + + + + +inheritancedd6813cd34 + + +KeywordToken + + +KeywordToken + + + + + +SelectKeyword + + +SelectKeyword + + + + + +KeywordToken->SelectKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-19fc174a19fde151fbdcf7599a5596c4674f3f1b.svg b/_images/inheritance-19fc174a19fde151fbdcf7599a5596c4674f3f1b.svg new file mode 100644 index 000000000..6c1a9827b --- /dev/null +++ b/_images/inheritance-19fc174a19fde151fbdcf7599a5596c4674f3f1b.svg @@ -0,0 +1,57 @@ + + + + + + +inheritance4e0e4303f5 + + +Block + + +Block + + + + + +FinalBlock + + +FinalBlock + + + + + +Block->FinalBlock + + + + + +EndBlock + + +EndBlock + + + + + +EndBlock->EndBlock + + + + + +FinalBlock->EndBlock + + + + + diff --git a/_images/inheritance-1a0cf80e19206507e293e154b930026887d29cd3.svg b/_images/inheritance-1a0cf80e19206507e293e154b930026887d29cd3.svg new file mode 100644 index 000000000..1bdd59fd6 --- /dev/null +++ b/_images/inheritance-1a0cf80e19206507e293e154b930026887d29cd3.svg @@ -0,0 +1,36 @@ + + + + + + +inheritancef3978ab0a3 + + +GenericListGroup + + +GenericListGroup + + + + + +Group + + +Group + + + + + +Group->GenericListGroup + + + + + diff --git a/_images/inheritance-1a183e4e4cb02dc959ef5d021ba01683809e6045.svg b/_images/inheritance-1a183e4e4cb02dc959ef5d021ba01683809e6045.svg new file mode 100644 index 000000000..b3cf644f4 --- /dev/null +++ b/_images/inheritance-1a183e4e4cb02dc959ef5d021ba01683809e6045.svg @@ -0,0 +1,81 @@ + + + + + + +inheritancee385f4b349 + + +CommentToken + + +CommentToken + + + + + +SingleLineCommentToken + + +SingleLineCommentToken + + + + + +CommentToken->SingleLineCommentToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->CommentToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-1ab64be8bf6c3b99e94d4ed57030e799fc6f0888.svg b/_images/inheritance-1ab64be8bf6c3b99e94d4ed57030e799fc6f0888.svg new file mode 100644 index 000000000..7611b63f9 --- /dev/null +++ b/_images/inheritance-1ab64be8bf6c3b99e94d4ed57030e799fc6f0888.svg @@ -0,0 +1,21 @@ + + + + + + +inheritanceccf11164d3 + + +TimeLine + + +TimeLine + + + + + diff --git a/_images/inheritance-1ae34b878d7df5690ad9264f30c166aaa4cfa929.svg b/_images/inheritance-1ae34b878d7df5690ad9264f30c166aaa4cfa929.svg new file mode 100644 index 000000000..c61e17324 --- /dev/null +++ b/_images/inheritance-1ae34b878d7df5690ad9264f30c166aaa4cfa929.svg @@ -0,0 +1,111 @@ + + + + + + +inheritance8f1924f411 + + +KeywordToken + + +KeywordToken + + + + + +Operator + + +Operator + + + + + +KeywordToken->Operator + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +ShiftOperator + + +ShiftOperator + + + + + +Operator->ShiftOperator + + + + + +SllOperator + + +SllOperator + + + + + +ShiftOperator->SllOperator + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-1b60b5ab5b3230958119b7c6c5b2f319bad49d21.svg b/_images/inheritance-1b60b5ab5b3230958119b7c6c5b2f319bad49d21.svg new file mode 100644 index 000000000..41b32b879 --- /dev/null +++ b/_images/inheritance-1b60b5ab5b3230958119b7c6c5b2f319bad49d21.svg @@ -0,0 +1,21 @@ + + + + + + +inheritance481f540e22 + + +Path + + +Path + + + + + diff --git a/_images/inheritance-1d1b4b147d6461eea52ca67031d504b23f3fae91.svg b/_images/inheritance-1d1b4b147d6461eea52ca67031d504b23f3fae91.svg new file mode 100644 index 000000000..8ffa37769 --- /dev/null +++ b/_images/inheritance-1d1b4b147d6461eea52ca67031d504b23f3fae91.svg @@ -0,0 +1,81 @@ + + + + + + +inheritanceb8d7c4e7b4 + + +BufferKeyword + + +BufferKeyword + + + + + +KeywordToken + + +KeywordToken + + + + + +KeywordToken->BufferKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-1dbeda6c4b9c231d256ef2a416bf99274ffe5f05.svg b/_images/inheritance-1dbeda6c4b9c231d256ef2a416bf99274ffe5f05.svg new file mode 100644 index 000000000..927df9b22 --- /dev/null +++ b/_images/inheritance-1dbeda6c4b9c231d256ef2a416bf99274ffe5f05.svg @@ -0,0 +1,111 @@ + + + + + + +inheritance63f3f8ad42 + + +AngleBracketToken + + +AngleBracketToken + + + + + +OpeningAngleBracketToken + + +OpeningAngleBracketToken + + + + + +AngleBracketToken->OpeningAngleBracketToken + + + + + +BracketToken + + +BracketToken + + + + + +BracketToken->AngleBracketToken + + + + + +SpecificVHDLToken + + +SpecificVHDLToken + + + + + +SpecificVHDLToken->BracketToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->SpecificVHDLToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-1ed96285db45a6f03ed2b005307817fa0838c394.svg b/_images/inheritance-1ed96285db45a6f03ed2b005307817fa0838c394.svg new file mode 100644 index 000000000..efb429bed --- /dev/null +++ b/_images/inheritance-1ed96285db45a6f03ed2b005307817fa0838c394.svg @@ -0,0 +1,51 @@ + + + + + + +inheritance960d6feb94 + + +Block + + +Block + + + + + +SkipableBlock + + +SkipableBlock + + + + + +Block->SkipableBlock + + + + + +DelimiterBlock + + +DelimiterBlock + + + + + +SkipableBlock->DelimiterBlock + + + + + diff --git a/_images/inheritance-2157d47d01ad70f490b11ed9d6e093955350ffc5.svg b/_images/inheritance-2157d47d01ad70f490b11ed9d6e093955350ffc5.svg new file mode 100644 index 000000000..3aba7231b --- /dev/null +++ b/_images/inheritance-2157d47d01ad70f490b11ed9d6e093955350ffc5.svg @@ -0,0 +1,81 @@ + + + + + + +inheritanced661cc6778 + + +IntegerLiteralToken + + +IntegerLiteralToken + + + + + +LiteralToken + + +LiteralToken + + + + + +LiteralToken->IntegerLiteralToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->LiteralToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-21c949c5ff8c83c26d816949fb25a27d828b7073.svg b/_images/inheritance-21c949c5ff8c83c26d816949fb25a27d828b7073.svg new file mode 100644 index 000000000..06805ba28 --- /dev/null +++ b/_images/inheritance-21c949c5ff8c83c26d816949fb25a27d828b7073.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance800fdd174a + + +RecordType + + +RecordType + + + + + +Type + + +Type + + + + + +Type->RecordType + + + + + diff --git a/_images/inheritance-225170c9d0b819015b1d8e21e565b67429c0f408.svg b/_images/inheritance-225170c9d0b819015b1d8e21e565b67429c0f408.svg new file mode 100644 index 000000000..1efdda405 --- /dev/null +++ b/_images/inheritance-225170c9d0b819015b1d8e21e565b67429c0f408.svg @@ -0,0 +1,66 @@ + + + + + + +inheritanced5ebce6976 + + +CommentToken + + +CommentToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->CommentToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-22ccc026f4414fb55ba64e19976a84ae0bbf19aa.svg b/_images/inheritance-22ccc026f4414fb55ba64e19976a84ae0bbf19aa.svg new file mode 100644 index 000000000..f0ca521e3 --- /dev/null +++ b/_images/inheritance-22ccc026f4414fb55ba64e19976a84ae0bbf19aa.svg @@ -0,0 +1,96 @@ + + + + + + +inheritancee840b28669 + + +DirectionKeyword + + +DirectionKeyword + + + + + +DowntoKeyword + + +DowntoKeyword + + + + + +DirectionKeyword->DowntoKeyword + + + + + +KeywordToken + + +KeywordToken + + + + + +KeywordToken->DirectionKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-22e63fab9d0451b0a8df552d9a7c3661c2ebbdc1.svg b/_images/inheritance-22e63fab9d0451b0a8df552d9a7c3661c2ebbdc1.svg new file mode 100644 index 000000000..3dead37dd --- /dev/null +++ b/_images/inheritance-22e63fab9d0451b0a8df552d9a7c3661c2ebbdc1.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance75c432c6f3 + + +KeywordToken + + +KeywordToken + + + + + +OfKeyword + + +OfKeyword + + + + + +KeywordToken->OfKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-2336bfbc5be3b118be62bdb35de200817372b650.svg b/_images/inheritance-2336bfbc5be3b118be62bdb35de200817372b650.svg new file mode 100644 index 000000000..058b34307 --- /dev/null +++ b/_images/inheritance-2336bfbc5be3b118be62bdb35de200817372b650.svg @@ -0,0 +1,96 @@ + + + + + + +inheritance73f5efe28d + + +MinusOperator + + +MinusOperator + + + + + +OperatorToken + + +OperatorToken + + + + + +OperatorToken->MinusOperator + + + + + +SpecificVHDLToken + + +SpecificVHDLToken + + + + + +SpecificVHDLToken->OperatorToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->SpecificVHDLToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-23bf447d88a065184f2fed2e79248e3f79ef32ae.svg b/_images/inheritance-23bf447d88a065184f2fed2e79248e3f79ef32ae.svg new file mode 100644 index 000000000..8b843e9e5 --- /dev/null +++ b/_images/inheritance-23bf447d88a065184f2fed2e79248e3f79ef32ae.svg @@ -0,0 +1,51 @@ + + + + + + +inheritance2f64e99b11 + + +Block + + +Block + + + + + +FinalBlock + + +FinalBlock + + + + + +Block->FinalBlock + + + + + +GenericMapEndBlock + + +GenericMapEndBlock + + + + + +FinalBlock->GenericMapEndBlock + + + + + diff --git a/_images/inheritance-24c10774ce8d67ebbef795975d81450db965ae6f.svg b/_images/inheritance-24c10774ce8d67ebbef795975d81450db965ae6f.svg new file mode 100644 index 000000000..7b53e7a4d --- /dev/null +++ b/_images/inheritance-24c10774ce8d67ebbef795975d81450db965ae6f.svg @@ -0,0 +1,36 @@ + + + + + + +inheritanceb51afc4c0c + + +Block + + +Block + + + + + +ExpressionBlock + + +ExpressionBlock + + + + + +Block->ExpressionBlock + + + + + diff --git a/_images/inheritance-24e10793883254616dc2b2d46a8e002acaa07e42.svg b/_images/inheritance-24e10793883254616dc2b2d46a8e002acaa07e42.svg new file mode 100644 index 000000000..a426ec891 --- /dev/null +++ b/_images/inheritance-24e10793883254616dc2b2d46a8e002acaa07e42.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance51cc53d5f2 + + +KeywordToken + + +KeywordToken + + + + + +SeverityKeyword + + +SeverityKeyword + + + + + +KeywordToken->SeverityKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-255bca8308e591727cd09b438868fd31155db9c4.svg b/_images/inheritance-255bca8308e591727cd09b438868fd31155db9c4.svg new file mode 100644 index 000000000..ec1f1cf85 --- /dev/null +++ b/_images/inheritance-255bca8308e591727cd09b438868fd31155db9c4.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance7bf801dd88 + + +Block + + +Block + + + + + +ItemBlock + + +ItemBlock + + + + + +Block->ItemBlock + + + + + diff --git a/_images/inheritance-25c58e7a309f4afc0cfaebe4a399faa705935b1c.svg b/_images/inheritance-25c58e7a309f4afc0cfaebe4a399faa705935b1c.svg new file mode 100644 index 000000000..64a955cac --- /dev/null +++ b/_images/inheritance-25c58e7a309f4afc0cfaebe4a399faa705935b1c.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance2c7517578b + + +Block + + +Block + + + + + +LibraryNameBlock + + +LibraryNameBlock + + + + + +Block->LibraryNameBlock + + + + + diff --git a/_images/inheritance-26109075a0882b33b38ca7003b6ac0c002c62818.svg b/_images/inheritance-26109075a0882b33b38ca7003b6ac0c002c62818.svg new file mode 100644 index 000000000..f8e7193a6 --- /dev/null +++ b/_images/inheritance-26109075a0882b33b38ca7003b6ac0c002c62818.svg @@ -0,0 +1,66 @@ + + + + + + +inheritance604be7491e + + +Block + + +Block + + + + + +InterfaceObjectBlock + + +InterfaceObjectBlock + + + + + +Block->InterfaceObjectBlock + + + + + +InterfaceSignalBlock + + +InterfaceSignalBlock + + + + + +InterfaceObjectBlock->InterfaceSignalBlock + + + + + +ParameterListInterfaceSignalBlock + + +ParameterListInterfaceSignalBlock + + + + + +InterfaceSignalBlock->ParameterListInterfaceSignalBlock + + + + + diff --git a/_images/inheritance-26d6bd8c2371615f2fa18dbcf38b8bb3e96715e1.svg b/_images/inheritance-26d6bd8c2371615f2fa18dbcf38b8bb3e96715e1.svg new file mode 100644 index 000000000..bceb24e81 --- /dev/null +++ b/_images/inheritance-26d6bd8c2371615f2fa18dbcf38b8bb3e96715e1.svg @@ -0,0 +1,96 @@ + + + + + + +inheritance3a30f24683 + + +ConcatOperator + + +ConcatOperator + + + + + +OperatorToken + + +OperatorToken + + + + + +OperatorToken->ConcatOperator + + + + + +SpecificVHDLToken + + +SpecificVHDLToken + + + + + +SpecificVHDLToken->OperatorToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->SpecificVHDLToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-26e4841dcd6e0b33db20935522018e1169826569.svg b/_images/inheritance-26e4841dcd6e0b33db20935522018e1169826569.svg new file mode 100644 index 000000000..1816de88c --- /dev/null +++ b/_images/inheritance-26e4841dcd6e0b33db20935522018e1169826569.svg @@ -0,0 +1,36 @@ + + + + + + +inheritancec503ddde6e + + +Group + + +Group + + + + + +SensitivityListGroup + + +SensitivityListGroup + + + + + +Group->SensitivityListGroup + + + + + diff --git a/_images/inheritance-271e011eca710b033f1ad3c3c6745ee5967256d1.svg b/_images/inheritance-271e011eca710b033f1ad3c3c6745ee5967256d1.svg new file mode 100644 index 000000000..c6be55287 --- /dev/null +++ b/_images/inheritance-271e011eca710b033f1ad3c3c6745ee5967256d1.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance155c3ebb1d + + +AllKeyword + + +AllKeyword + + + + + +KeywordToken + + +KeywordToken + + + + + +KeywordToken->AllKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-2776765d164c9c6b2663aab99fe4cdf6e8d76974.svg b/_images/inheritance-2776765d164c9c6b2663aab99fe4cdf6e8d76974.svg new file mode 100644 index 000000000..6f8734e6e --- /dev/null +++ b/_images/inheritance-2776765d164c9c6b2663aab99fe4cdf6e8d76974.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance465261a0db + + +KeywordToken + + +KeywordToken + + + + + +WaitKeyword + + +WaitKeyword + + + + + +KeywordToken->WaitKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-27ab49d5843f38c937f171b64f8b46f4b530106c.svg b/_images/inheritance-27ab49d5843f38c937f171b64f8b46f4b530106c.svg new file mode 100644 index 000000000..ebd8da277 --- /dev/null +++ b/_images/inheritance-27ab49d5843f38c937f171b64f8b46f4b530106c.svg @@ -0,0 +1,51 @@ + + + + + + +inheritance33a87aa20e + + +Block + + +Block + + + + + +ExpressionBlock + + +ExpressionBlock + + + + + +Block->ExpressionBlock + + + + + +ExpressionBlockEndedByKeywordORClosingRoundBracket + + +ExpressionBlockEndedByKeywordORClosingRoundBracket + + + + + +ExpressionBlock->ExpressionBlockEndedByKeywordORClosingRoundBracket + + + + + diff --git a/_images/inheritance-27f42fb6d1d7e752a54fc697bf2a94a2f434cfba.svg b/_images/inheritance-27f42fb6d1d7e752a54fc697bf2a94a2f434cfba.svg new file mode 100644 index 000000000..df1938797 --- /dev/null +++ b/_images/inheritance-27f42fb6d1d7e752a54fc697bf2a94a2f434cfba.svg @@ -0,0 +1,36 @@ + + + + + + +inheritancecf62669a27 + + +Block + + +Block + + + + + +PortMapItemBlock + + +PortMapItemBlock + + + + + +Block->PortMapItemBlock + + + + + diff --git a/_images/inheritance-2858a37cfe2cd98ac94dfcd08cc23edb3ee90394.svg b/_images/inheritance-2858a37cfe2cd98ac94dfcd08cc23edb3ee90394.svg new file mode 100644 index 000000000..d315646d6 --- /dev/null +++ b/_images/inheritance-2858a37cfe2cd98ac94dfcd08cc23edb3ee90394.svg @@ -0,0 +1,51 @@ + + + + + + +inheritance2e6cfbbe25 + + +Block + + +Block + + + + + +ExpressionBlock + + +ExpressionBlock + + + + + +Block->ExpressionBlock + + + + + +ExpressionBlockEndedByToOrDownto + + +ExpressionBlockEndedByToOrDownto + + + + + +ExpressionBlock->ExpressionBlockEndedByToOrDownto + + + + + diff --git a/_images/inheritance-289b1d7d5dc760fafc8766625940192365565758.svg b/_images/inheritance-289b1d7d5dc760fafc8766625940192365565758.svg new file mode 100644 index 000000000..4e3aae7b4 --- /dev/null +++ b/_images/inheritance-289b1d7d5dc760fafc8766625940192365565758.svg @@ -0,0 +1,66 @@ + + + + + + +inheritance72f6e264b0 + + +Block + + +Block + + + + + +InterfaceObjectBlock + + +InterfaceObjectBlock + + + + + +Block->InterfaceObjectBlock + + + + + +InterfaceConstantBlock + + +InterfaceConstantBlock + + + + + +ParameterListInterfaceConstantBlock + + +ParameterListInterfaceConstantBlock + + + + + +InterfaceConstantBlock->ParameterListInterfaceConstantBlock + + + + + +InterfaceObjectBlock->InterfaceConstantBlock + + + + + diff --git a/_images/inheritance-28b1c3ff483255fed48f36495c5f3e6f431ad961.svg b/_images/inheritance-28b1c3ff483255fed48f36495c5f3e6f431ad961.svg new file mode 100644 index 000000000..571c241a6 --- /dev/null +++ b/_images/inheritance-28b1c3ff483255fed48f36495c5f3e6f431ad961.svg @@ -0,0 +1,57 @@ + + + + + + +inheritance0376ade860 + + +Document + + +Document + + + + + +Document->Document + + + + + +ModelEntity + + +ModelEntity + + + + + +ModelEntity->Document + + + + + +DocumentedEntityMixin + + +DocumentedEntityMixin + + + + + +DocumentedEntityMixin->Document + + + + + diff --git a/_images/inheritance-29957c6a5fd33c8a4cd753b54d2cf9405942a59f.svg b/_images/inheritance-29957c6a5fd33c8a4cd753b54d2cf9405942a59f.svg new file mode 100644 index 000000000..43f90df5d --- /dev/null +++ b/_images/inheritance-29957c6a5fd33c8a4cd753b54d2cf9405942a59f.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance816144873a + + +Group + + +Group + + + + + +ReportGroup + + +ReportGroup + + + + + +Group->ReportGroup + + + + + diff --git a/_images/inheritance-29a3c9a7007a5baa65161f2cb6c89c59e5f2f08f.svg b/_images/inheritance-29a3c9a7007a5baa65161f2cb6c89c59e5f2f08f.svg new file mode 100644 index 000000000..f65e172fc --- /dev/null +++ b/_images/inheritance-29a3c9a7007a5baa65161f2cb6c89c59e5f2f08f.svg @@ -0,0 +1,96 @@ + + + + + + +inheritance0177e8e0e0 + + +DirectionKeyword + + +DirectionKeyword + + + + + +ToKeyword + + +ToKeyword + + + + + +DirectionKeyword->ToKeyword + + + + + +KeywordToken + + +KeywordToken + + + + + +KeywordToken->DirectionKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-2abb5ab4d88e3920237131c454e91fcef44138d8.svg b/_images/inheritance-2abb5ab4d88e3920237131c454e91fcef44138d8.svg new file mode 100644 index 000000000..45e803e72 --- /dev/null +++ b/_images/inheritance-2abb5ab4d88e3920237131c454e91fcef44138d8.svg @@ -0,0 +1,57 @@ + + + + + + +inheritance93cba77a7d + + +BeginBlock + + +BeginBlock + + + + + +ConcurrentBeginBlock + + +ConcurrentBeginBlock + + + + + +BeginBlock->ConcurrentBeginBlock + + + + + +Block + + +Block + + + + + +Block->BeginBlock + + + + + +ConcurrentBeginBlock->BeginBlock + + + + + diff --git a/_images/inheritance-2ade61403b38291b92c448ff9593c8bf0ca63367.svg b/_images/inheritance-2ade61403b38291b92c448ff9593c8bf0ca63367.svg new file mode 100644 index 000000000..ba8888cbb --- /dev/null +++ b/_images/inheritance-2ade61403b38291b92c448ff9593c8bf0ca63367.svg @@ -0,0 +1,36 @@ + + + + + + +inheritancec2b72e7715 + + +AttributeDeclarationBlock + + +AttributeDeclarationBlock + + + + + +Block + + +Block + + + + + +Block->AttributeDeclarationBlock + + + + + diff --git a/_images/inheritance-2b66afbccd5e21e017494b8010f905602d6b6e9b.svg b/_images/inheritance-2b66afbccd5e21e017494b8010f905602d6b6e9b.svg new file mode 100644 index 000000000..203c52987 --- /dev/null +++ b/_images/inheritance-2b66afbccd5e21e017494b8010f905602d6b6e9b.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance2bd1aca5d1 + + +Group + + +Group + + + + + +ParameterMapGroup + + +ParameterMapGroup + + + + + +Group->ParameterMapGroup + + + + + diff --git a/_images/inheritance-2baa69672ce964843c68ced41ef4ae405e37b76f.svg b/_images/inheritance-2baa69672ce964843c68ced41ef4ae405e37b76f.svg new file mode 100644 index 000000000..0b76cccc2 --- /dev/null +++ b/_images/inheritance-2baa69672ce964843c68ced41ef4ae405e37b76f.svg @@ -0,0 +1,96 @@ + + + + + + +inheritance60df39e48f + + +CommentKeyword + + +CommentKeyword + + + + + +MultiLineCommentKeyword + + +MultiLineCommentKeyword + + + + + +CommentKeyword->MultiLineCommentKeyword + + + + + +MultiCharKeyword + + +MultiCharKeyword + + + + + +MultiCharKeyword->CommentKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->MultiCharKeyword + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-2bae202571a3188ba9bd3fd1a213ca1acbd14aba.svg b/_images/inheritance-2bae202571a3188ba9bd3fd1a213ca1acbd14aba.svg new file mode 100644 index 000000000..981a21b16 --- /dev/null +++ b/_images/inheritance-2bae202571a3188ba9bd3fd1a213ca1acbd14aba.svg @@ -0,0 +1,111 @@ + + + + + + +inheritance8544d78969 + + +MatchingUnequalOperator + + +MatchingUnequalOperator + + + + + +RelationalOperator + + +RelationalOperator + + + + + +RelationalOperator->MatchingUnequalOperator + + + + + +OperatorToken + + +OperatorToken + + + + + +OperatorToken->RelationalOperator + + + + + +SpecificVHDLToken + + +SpecificVHDLToken + + + + + +SpecificVHDLToken->OperatorToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->SpecificVHDLToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-2c022655af5ec1339c9ebdca6b8c5292516ca554.svg b/_images/inheritance-2c022655af5ec1339c9ebdca6b8c5292516ca554.svg new file mode 100644 index 000000000..e19283491 --- /dev/null +++ b/_images/inheritance-2c022655af5ec1339c9ebdca6b8c5292516ca554.svg @@ -0,0 +1,111 @@ + + + + + + +inheritance107d906cdc + + +BracketToken + + +BracketToken + + + + + +RoundBracketToken + + +RoundBracketToken + + + + + +BracketToken->RoundBracketToken + + + + + +SpecificVHDLToken + + +SpecificVHDLToken + + + + + +SpecificVHDLToken->BracketToken + + + + + +OpeningRoundBracketToken + + +OpeningRoundBracketToken + + + + + +RoundBracketToken->OpeningRoundBracketToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->SpecificVHDLToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-2d133d2c3e0a3ddd79fb58b3013afa7bd91f21bc.svg b/_images/inheritance-2d133d2c3e0a3ddd79fb58b3013afa7bd91f21bc.svg new file mode 100644 index 000000000..9a1b09773 --- /dev/null +++ b/_images/inheritance-2d133d2c3e0a3ddd79fb58b3013afa7bd91f21bc.svg @@ -0,0 +1,81 @@ + + + + + + +inheritancec154c7b220 + + +Group + + +Group + + + + + +StartOfGroup + + +StartOfGroup + + + + + +Group->StartOfGroup + + + + + +StartOf + + +StartOf + + + + + +StartOfDocument + + +StartOfDocument + + + + + +StartOf->StartOfDocument + + + + + +StartOfDocumentGroup + + +StartOfDocumentGroup + + + + + +StartOfDocument->StartOfDocumentGroup + + + + + +StartOfGroup->StartOfDocumentGroup + + + + + diff --git a/_images/inheritance-2d3e2d17e81ab081035faacdaeb6f5c08afcf893.svg b/_images/inheritance-2d3e2d17e81ab081035faacdaeb6f5c08afcf893.svg new file mode 100644 index 000000000..3dff94c16 --- /dev/null +++ b/_images/inheritance-2d3e2d17e81ab081035faacdaeb6f5c08afcf893.svg @@ -0,0 +1,81 @@ + + + + + + +inheritanceb346dbedc4 + + +EndOf + + +EndOf + + + + + +EndOfSnippet + + +EndOfSnippet + + + + + +EndOf->EndOfSnippet + + + + + +EndOfGroup + + +EndOfGroup + + + + + +EndOfSnippetGroup + + +EndOfSnippetGroup + + + + + +EndOfGroup->EndOfSnippetGroup + + + + + +Group + + +Group + + + + + +Group->EndOfGroup + + + + + +EndOfSnippet->EndOfSnippetGroup + + + + + diff --git a/_images/inheritance-2d6efb9022684d9b0df9adbe6bf0ed368f18e7d1.svg b/_images/inheritance-2d6efb9022684d9b0df9adbe6bf0ed368f18e7d1.svg new file mode 100644 index 000000000..660bb5ca8 --- /dev/null +++ b/_images/inheritance-2d6efb9022684d9b0df9adbe6bf0ed368f18e7d1.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance446fea3401 + + +KeywordToken + + +KeywordToken + + + + + +TypeKeyword + + +TypeKeyword + + + + + +KeywordToken->TypeKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-2d738f9cda617717df0bf39cdf25d8283db87c90.svg b/_images/inheritance-2d738f9cda617717df0bf39cdf25d8283db87c90.svg new file mode 100644 index 000000000..d8a68e4ce --- /dev/null +++ b/_images/inheritance-2d738f9cda617717df0bf39cdf25d8283db87c90.svg @@ -0,0 +1,36 @@ + + + + + + +inheritancecf62669a27 + + +Block + + +Block + + + + + +PortMapItemBlock + + +PortMapItemBlock + + + + + +Block->PortMapItemBlock + + + + + diff --git a/_images/inheritance-2d88f2747bb7d6f04bf2b63c3bc464ad26d2fdd2.svg b/_images/inheritance-2d88f2747bb7d6f04bf2b63c3bc464ad26d2fdd2.svg new file mode 100644 index 000000000..91cbaab4b --- /dev/null +++ b/_images/inheritance-2d88f2747bb7d6f04bf2b63c3bc464ad26d2fdd2.svg @@ -0,0 +1,111 @@ + + + + + + +inheritance4946b76910 + + +BracketToken + + +BracketToken + + + + + +CurlyBracketToken + + +CurlyBracketToken + + + + + +BracketToken->CurlyBracketToken + + + + + +SpecificVHDLToken + + +SpecificVHDLToken + + + + + +SpecificVHDLToken->BracketToken + + + + + +OpeningCurlyBracketToken + + +OpeningCurlyBracketToken + + + + + +CurlyBracketToken->OpeningCurlyBracketToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->SpecificVHDLToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-2de9542fd1d0d8bd9dd34ad96f06a0e71768b8f5.svg b/_images/inheritance-2de9542fd1d0d8bd9dd34ad96f06a0e71768b8f5.svg new file mode 100644 index 000000000..97862b7f3 --- /dev/null +++ b/_images/inheritance-2de9542fd1d0d8bd9dd34ad96f06a0e71768b8f5.svg @@ -0,0 +1,21 @@ + + + + + + +inheritance7ae8be122d + + +Source + + +Source + + + + + diff --git a/_images/inheritance-2e55055f0ab7af00b1d05ae3bdf0d30314d4e515.svg b/_images/inheritance-2e55055f0ab7af00b1d05ae3bdf0d30314d4e515.svg new file mode 100644 index 000000000..5be091923 --- /dev/null +++ b/_images/inheritance-2e55055f0ab7af00b1d05ae3bdf0d30314d4e515.svg @@ -0,0 +1,81 @@ + + + + + + +inheritancea8c2968dcf + + +Block + + +Block + + + + + +EndOfBlock + + +EndOfBlock + + + + + +Block->EndOfBlock + + + + + +EndOf + + +EndOf + + + + + +EndOfDocument + + +EndOfDocument + + + + + +EndOf->EndOfDocument + + + + + +EndOfDocumentBlock + + +EndOfDocumentBlock + + + + + +EndOfBlock->EndOfDocumentBlock + + + + + +EndOfDocument->EndOfDocumentBlock + + + + + diff --git a/_images/inheritance-2f399e988c44465a55ac9f011271d6ee8d81b895.svg b/_images/inheritance-2f399e988c44465a55ac9f011271d6ee8d81b895.svg new file mode 100644 index 000000000..03a91883e --- /dev/null +++ b/_images/inheritance-2f399e988c44465a55ac9f011271d6ee8d81b895.svg @@ -0,0 +1,66 @@ + + + + + + +inheritancee698c170dd + + +Block + + +Block + + + + + +ExpressionBlock + + +ExpressionBlock + + + + + +Block->ExpressionBlock + + + + + +ConstantDeclarationDefaultExpressionBlock + + +ConstantDeclarationDefaultExpressionBlock + + + + + +ExpressionBlockEndedBySemicolon + + +ExpressionBlockEndedBySemicolon + + + + + +ExpressionBlockEndedBySemicolon->ConstantDeclarationDefaultExpressionBlock + + + + + +ExpressionBlock->ExpressionBlockEndedBySemicolon + + + + + diff --git a/_images/inheritance-30276b27c9641c7c286c8384f0b0c2f119ce654a.svg b/_images/inheritance-30276b27c9641c7c286c8384f0b0c2f119ce654a.svg new file mode 100644 index 000000000..88de873fa --- /dev/null +++ b/_images/inheritance-30276b27c9641c7c286c8384f0b0c2f119ce654a.svg @@ -0,0 +1,111 @@ + + + + + + +inheritance7a7ee2d43b + + +BracketToken + + +BracketToken + + + + + +CurlyBracketToken + + +CurlyBracketToken + + + + + +BracketToken->CurlyBracketToken + + + + + +SpecificVHDLToken + + +SpecificVHDLToken + + + + + +SpecificVHDLToken->BracketToken + + + + + +ClosingCurlyBracketToken + + +ClosingCurlyBracketToken + + + + + +CurlyBracketToken->ClosingCurlyBracketToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->SpecificVHDLToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-312304402af910c8d1dfd7e09dd67359b329df63.svg b/_images/inheritance-312304402af910c8d1dfd7e09dd67359b329df63.svg new file mode 100644 index 000000000..3010c9079 --- /dev/null +++ b/_images/inheritance-312304402af910c8d1dfd7e09dd67359b329df63.svg @@ -0,0 +1,66 @@ + + + + + + +inheritance1cbba8a72f + + +Block + + +Block + + + + + +ExpressionBlock + + +ExpressionBlock + + + + + +Block->ExpressionBlock + + + + + +ExpressionBlockEndedByKeywordORClosingRoundBracket + + +ExpressionBlockEndedByKeywordORClosingRoundBracket + + + + + +ExpressionBlock->ExpressionBlockEndedByKeywordORClosingRoundBracket + + + + + +ExpressionBlockEndedByThen + + +ExpressionBlockEndedByThen + + + + + +ExpressionBlockEndedByKeywordORClosingRoundBracket->ExpressionBlockEndedByThen + + + + + diff --git a/_images/inheritance-31698c3fdb9ef5a39aca23b944c34f45c3a463f6.svg b/_images/inheritance-31698c3fdb9ef5a39aca23b944c34f45c3a463f6.svg new file mode 100644 index 000000000..eff4c0905 --- /dev/null +++ b/_images/inheritance-31698c3fdb9ef5a39aca23b944c34f45c3a463f6.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance46ba0346bf + + +ChoiceGroup + + +ChoiceGroup + + + + + +Group + + +Group + + + + + +Group->ChoiceGroup + + + + + diff --git a/_images/inheritance-31763c9c383d7abf853d523c3506c949c9abdd89.svg b/_images/inheritance-31763c9c383d7abf853d523c3506c949c9abdd89.svg new file mode 100644 index 000000000..b9c7c8a00 --- /dev/null +++ b/_images/inheritance-31763c9c383d7abf853d523c3506c949c9abdd89.svg @@ -0,0 +1,111 @@ + + + + + + +inheritance0a063f7974 + + +LessThanOrEqualOperator + + +LessThanOrEqualOperator + + + + + +RelationalOperator + + +RelationalOperator + + + + + +RelationalOperator->LessThanOrEqualOperator + + + + + +OperatorToken + + +OperatorToken + + + + + +OperatorToken->RelationalOperator + + + + + +SpecificVHDLToken + + +SpecificVHDLToken + + + + + +SpecificVHDLToken->OperatorToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->SpecificVHDLToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-3188f3821c19fa76e7cd6af726f95d08c1622215.svg b/_images/inheritance-3188f3821c19fa76e7cd6af726f95d08c1622215.svg new file mode 100644 index 000000000..6d632b6f2 --- /dev/null +++ b/_images/inheritance-3188f3821c19fa76e7cd6af726f95d08c1622215.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance9d067213e0 + + +FileKeyword + + +FileKeyword + + + + + +KeywordToken + + +KeywordToken + + + + + +KeywordToken->FileKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-32212f32ad2d39f5f58b02b287f845ec2136af26.svg b/_images/inheritance-32212f32ad2d39f5f58b02b287f845ec2136af26.svg new file mode 100644 index 000000000..ce20fd578 --- /dev/null +++ b/_images/inheritance-32212f32ad2d39f5f58b02b287f845ec2136af26.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance3251a1975f + + +KeywordToken + + +KeywordToken + + + + + +RejectKeyword + + +RejectKeyword + + + + + +KeywordToken->RejectKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-324667ae4679788063b7ad7f5047a9e6284f128b.svg b/_images/inheritance-324667ae4679788063b7ad7f5047a9e6284f128b.svg new file mode 100644 index 000000000..5f293f844 --- /dev/null +++ b/_images/inheritance-324667ae4679788063b7ad7f5047a9e6284f128b.svg @@ -0,0 +1,81 @@ + + + + + + +inheritancee5bea8a7fc + + +Group + + +Group + + + + + +StartOfGroup + + +StartOfGroup + + + + + +Group->StartOfGroup + + + + + +StartOf + + +StartOf + + + + + +StartOfDocument + + +StartOfDocument + + + + + +StartOf->StartOfDocument + + + + + +StartOfDocumentGroup + + +StartOfDocumentGroup + + + + + +StartOfDocument->StartOfDocumentGroup + + + + + +StartOfGroup->StartOfDocumentGroup + + + + + diff --git a/_images/inheritance-327125a3fdba07a276e93c7d9aa6e5d8a3981a90.svg b/_images/inheritance-327125a3fdba07a276e93c7d9aa6e5d8a3981a90.svg new file mode 100644 index 000000000..b5edf8ffd --- /dev/null +++ b/_images/inheritance-327125a3fdba07a276e93c7d9aa6e5d8a3981a90.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance34260c13d6 + + +Block + + +Block + + + + + +StartOfBlock + + +StartOfBlock + + + + + +Block->StartOfBlock + + + + + diff --git a/_images/inheritance-327a13d0d08c94f96466fb86d8571b3d88aff312.svg b/_images/inheritance-327a13d0d08c94f96466fb86d8571b3d88aff312.svg new file mode 100644 index 000000000..f7111cb91 --- /dev/null +++ b/_images/inheritance-327a13d0d08c94f96466fb86d8571b3d88aff312.svg @@ -0,0 +1,42 @@ + + + + + + +inheritanced9ef7a3b00 + + +DeclarativeRegion + + +DeclarativeRegion + + + + + +SequentialDeclarativeRegion + + +SequentialDeclarativeRegion + + + + + +DeclarativeRegion->SequentialDeclarativeRegion + + + + + +SequentialDeclarativeRegion->DeclarativeRegion + + + + + diff --git a/_images/inheritance-329ec1c649b652106b5ca7fda26ee846b5e4cec9.svg b/_images/inheritance-329ec1c649b652106b5ca7fda26ee846b5e4cec9.svg new file mode 100644 index 000000000..5af30e228 --- /dev/null +++ b/_images/inheritance-329ec1c649b652106b5ca7fda26ee846b5e4cec9.svg @@ -0,0 +1,81 @@ + + + + + + +inheritancea5b802e7c1 + + +LiteralToken + + +LiteralToken + + + + + +StringLiteralToken + + +StringLiteralToken + + + + + +LiteralToken->StringLiteralToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->LiteralToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-32d5d40287923f48ec7af23b59e026870432cf59.svg b/_images/inheritance-32d5d40287923f48ec7af23b59e026870432cf59.svg new file mode 100644 index 000000000..493e642a4 --- /dev/null +++ b/_images/inheritance-32d5d40287923f48ec7af23b59e026870432cf59.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance46fbecf69f + + +Group + + +Group + + + + + +PackageGroup + + +PackageGroup + + + + + +Group->PackageGroup + + + + + diff --git a/_images/inheritance-334824752f930242ea0ae1961524d207554b2d6c.svg b/_images/inheritance-334824752f930242ea0ae1961524d207554b2d6c.svg new file mode 100644 index 000000000..65c153ec5 --- /dev/null +++ b/_images/inheritance-334824752f930242ea0ae1961524d207554b2d6c.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance116f06fa3a + + +Block + + +Block + + + + + +OpenBlock + + +OpenBlock + + + + + +Block->OpenBlock + + + + + diff --git a/_images/inheritance-3421952e5ef200b966f7e54476add1ca0cf2f922.svg b/_images/inheritance-3421952e5ef200b966f7e54476add1ca0cf2f922.svg new file mode 100644 index 000000000..435414c9b --- /dev/null +++ b/_images/inheritance-3421952e5ef200b966f7e54476add1ca0cf2f922.svg @@ -0,0 +1,21 @@ + + + + + + +inheritance8dc5d29343 + + +SubProgramDeclaration + + +SubProgramDeclaration + + + + + diff --git a/_images/inheritance-34421767dfd7a05d94e8929bbaa4d50a1e30cb05.svg b/_images/inheritance-34421767dfd7a05d94e8929bbaa4d50a1e30cb05.svg new file mode 100644 index 000000000..87388bb8a --- /dev/null +++ b/_images/inheritance-34421767dfd7a05d94e8929bbaa4d50a1e30cb05.svg @@ -0,0 +1,81 @@ + + + + + + +inheritanceb99bceb158 + + +Block + + +Block + + + + + +EndOfBlock + + +EndOfBlock + + + + + +Block->EndOfBlock + + + + + +EndOf + + +EndOf + + + + + +EndOfSnippet + + +EndOfSnippet + + + + + +EndOf->EndOfSnippet + + + + + +EndOfSnippetBlock + + +EndOfSnippetBlock + + + + + +EndOfBlock->EndOfSnippetBlock + + + + + +EndOfSnippet->EndOfSnippetBlock + + + + + diff --git a/_images/inheritance-3477ed36fd8c29ef42b1822164ee729e62012a74.svg b/_images/inheritance-3477ed36fd8c29ef42b1822164ee729e62012a74.svg new file mode 100644 index 000000000..fc79ee822 --- /dev/null +++ b/_images/inheritance-3477ed36fd8c29ef42b1822164ee729e62012a74.svg @@ -0,0 +1,66 @@ + + + + + + +inheritance0fe16915f8 + + +Block + + +Block + + + + + +SkipableBlock + + +SkipableBlock + + + + + +Block->SkipableBlock + + + + + +CommentBlock + + +CommentBlock + + + + + +MultiLineCommentBlock + + +MultiLineCommentBlock + + + + + +CommentBlock->MultiLineCommentBlock + + + + + +SkipableBlock->CommentBlock + + + + + diff --git a/_images/inheritance-348b12bbe5868f49b15681139b3c169c614fa285.svg b/_images/inheritance-348b12bbe5868f49b15681139b3c169c614fa285.svg new file mode 100644 index 000000000..27b882cfe --- /dev/null +++ b/_images/inheritance-348b12bbe5868f49b15681139b3c169c614fa285.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance8e87ebbbca + + +KeywordToken + + +KeywordToken + + + + + +PureKeyword + + +PureKeyword + + + + + +KeywordToken->PureKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-3503a87df47ff911d5ba51531373c8d65961cf2e.svg b/_images/inheritance-3503a87df47ff911d5ba51531373c8d65961cf2e.svg new file mode 100644 index 000000000..01df0138a --- /dev/null +++ b/_images/inheritance-3503a87df47ff911d5ba51531373c8d65961cf2e.svg @@ -0,0 +1,81 @@ + + + + + + +inheritanced243b21235 + + +KeywordToken + + +KeywordToken + + + + + +TransportKeyword + + +TransportKeyword + + + + + +KeywordToken->TransportKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-352c32de03aa43a4f61baeb2f426034b8318af1b.svg b/_images/inheritance-352c32de03aa43a4f61baeb2f426034b8318af1b.svg new file mode 100644 index 000000000..508fe0009 --- /dev/null +++ b/_images/inheritance-352c32de03aa43a4f61baeb2f426034b8318af1b.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance6e8561387a + + +Block + + +Block + + + + + +NameBlock + + +NameBlock + + + + + +Block->NameBlock + + + + + diff --git a/_images/inheritance-359f237aa39e989059d8497d707c3ebde143971a.svg b/_images/inheritance-359f237aa39e989059d8497d707c3ebde143971a.svg new file mode 100644 index 000000000..05f512039 --- /dev/null +++ b/_images/inheritance-359f237aa39e989059d8497d707c3ebde143971a.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance056012f463 + + +Block + + +Block + + + + + +ReturnTypeBlock + + +ReturnTypeBlock + + + + + +Block->ReturnTypeBlock + + + + + diff --git a/_images/inheritance-35a5f9f048b493be5b66c9c910e0d94121ab7dc2.svg b/_images/inheritance-35a5f9f048b493be5b66c9c910e0d94121ab7dc2.svg new file mode 100644 index 000000000..450b1c504 --- /dev/null +++ b/_images/inheritance-35a5f9f048b493be5b66c9c910e0d94121ab7dc2.svg @@ -0,0 +1,96 @@ + + + + + + +inheritance4b443d2b84 + + +CommentKeyword + + +CommentKeyword + + + + + +SingleLineCommentKeyword + + +SingleLineCommentKeyword + + + + + +CommentKeyword->SingleLineCommentKeyword + + + + + +MultiCharKeyword + + +MultiCharKeyword + + + + + +MultiCharKeyword->CommentKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->MultiCharKeyword + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-372177d658e238ee65fd0fcfb2115911a804c5d5.svg b/_images/inheritance-372177d658e238ee65fd0fcfb2115911a804c5d5.svg new file mode 100644 index 000000000..12b5c47ae --- /dev/null +++ b/_images/inheritance-372177d658e238ee65fd0fcfb2115911a804c5d5.svg @@ -0,0 +1,114 @@ + + + + + + +inheritanceca535f21be + + +DesignUnit + + +DesignUnit + + + + + +PrimaryUnit + + +PrimaryUnit + + + + + +DesignUnit->PrimaryUnit + + + + + +ModelEntity + + +ModelEntity + + + + + +ModelEntity->DesignUnit + + + + + +NamedEntityMixin + + +NamedEntityMixin + + + + + +NamedEntityMixin->DesignUnit + + + + + +DocumentedEntityMixin + + +DocumentedEntityMixin + + + + + +DocumentedEntityMixin->DesignUnit + + + + + +DesignUnitWithContextMixin + +DesignUnitWithContextMixin + + + +Package + + +Package + + + + + +DesignUnitWithContextMixin->Package + + + + + +Package->Package + + + + + +PrimaryUnit->Package + + + + + diff --git a/_images/inheritance-373a5ca38e9a2dab119bf00a1a08888dd5914e23.svg b/_images/inheritance-373a5ca38e9a2dab119bf00a1a08888dd5914e23.svg new file mode 100644 index 000000000..5a8b3ded1 --- /dev/null +++ b/_images/inheritance-373a5ca38e9a2dab119bf00a1a08888dd5914e23.svg @@ -0,0 +1,102 @@ + + + + + + +inheritance953873d1d9 + + +Context + + +Context + + + + + +Context->Context + + + + + +PrimaryUnit + + +PrimaryUnit + + + + + +PrimaryUnit->Context + + + + + +DesignUnit + + +DesignUnit + + + + + +DesignUnit->PrimaryUnit + + + + + +ModelEntity + + +ModelEntity + + + + + +ModelEntity->DesignUnit + + + + + +NamedEntityMixin + + +NamedEntityMixin + + + + + +NamedEntityMixin->DesignUnit + + + + + +DocumentedEntityMixin + + +DocumentedEntityMixin + + + + + +DocumentedEntityMixin->DesignUnit + + + + + diff --git a/_images/inheritance-37ba1d0f96e1c06a70e54598836ce9e3c7fbc634.svg b/_images/inheritance-37ba1d0f96e1c06a70e54598836ce9e3c7fbc634.svg new file mode 100644 index 000000000..52119374e --- /dev/null +++ b/_images/inheritance-37ba1d0f96e1c06a70e54598836ce9e3c7fbc634.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance76d06d6a43 + + +CaseKeyword + + +CaseKeyword + + + + + +KeywordToken + + +KeywordToken + + + + + +KeywordToken->CaseKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-38e13d050393f5df4c25513de6c738c9dad91997.svg b/_images/inheritance-38e13d050393f5df4c25513de6c738c9dad91997.svg new file mode 100644 index 000000000..6ddb63cb3 --- /dev/null +++ b/_images/inheritance-38e13d050393f5df4c25513de6c738c9dad91997.svg @@ -0,0 +1,51 @@ + + + + + + +inheritanceccd2751566 + + +Block + + +Block + + + + + +ObjectDeclarationBlock + + +ObjectDeclarationBlock + + + + + +Block->ObjectDeclarationBlock + + + + + +ConstantDeclarationBlock + + +ConstantDeclarationBlock + + + + + +ObjectDeclarationBlock->ConstantDeclarationBlock + + + + + diff --git a/_images/inheritance-3947708da0fbd68a879423ed05a9e71fdf3925bc.svg b/_images/inheritance-3947708da0fbd68a879423ed05a9e71fdf3925bc.svg new file mode 100644 index 000000000..1be181153 --- /dev/null +++ b/_images/inheritance-3947708da0fbd68a879423ed05a9e71fdf3925bc.svg @@ -0,0 +1,51 @@ + + + + + + +inheritance2f64e99b11 + + +Block + + +Block + + + + + +FinalBlock + + +FinalBlock + + + + + +Block->FinalBlock + + + + + +GenericMapEndBlock + + +GenericMapEndBlock + + + + + +FinalBlock->GenericMapEndBlock + + + + + diff --git a/_images/inheritance-3a0756f0d7439130a28a329790a5d2ccc4c3d716.svg b/_images/inheritance-3a0756f0d7439130a28a329790a5d2ccc4c3d716.svg new file mode 100644 index 000000000..7cc4a4548 --- /dev/null +++ b/_images/inheritance-3a0756f0d7439130a28a329790a5d2ccc4c3d716.svg @@ -0,0 +1,36 @@ + + + + + + +inheritancea1206756f9 + + +Group + + +Group + + + + + +PortListGroup + + +PortListGroup + + + + + +Group->PortListGroup + + + + + diff --git a/_images/inheritance-3abb2970c7c7c4c2d8008eb2a6afd2f8f4fb5fdb.svg b/_images/inheritance-3abb2970c7c7c4c2d8008eb2a6afd2f8f4fb5fdb.svg new file mode 100644 index 000000000..1922dce31 --- /dev/null +++ b/_images/inheritance-3abb2970c7c7c4c2d8008eb2a6afd2f8f4fb5fdb.svg @@ -0,0 +1,66 @@ + + + + + + +inheritance01ac3a42c9 + + +BeginBlock + + +BeginBlock + + + + + +SequentialBeginBlock + + +SequentialBeginBlock + + + + + +BeginBlock->SequentialBeginBlock + + + + + +Block + + +Block + + + + + +Block->BeginBlock + + + + + +ElseBlock + + +ElseBlock + + + + + +SequentialBeginBlock->ElseBlock + + + + + diff --git a/_images/inheritance-3b07b63898f08aefc35f899cce52d51f51a40204.svg b/_images/inheritance-3b07b63898f08aefc35f899cce52d51f51a40204.svg new file mode 100644 index 000000000..1981264c2 --- /dev/null +++ b/_images/inheritance-3b07b63898f08aefc35f899cce52d51f51a40204.svg @@ -0,0 +1,81 @@ + + + + + + +inheritancee25dc43af8 + + +AfterKeyword + + +AfterKeyword + + + + + +KeywordToken + + +KeywordToken + + + + + +KeywordToken->AfterKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-3b75bee2697d06bfe99fa4279d0cb4c5d1fc05bf.svg b/_images/inheritance-3b75bee2697d06bfe99fa4279d0cb4c5d1fc05bf.svg new file mode 100644 index 000000000..0e375f1e4 --- /dev/null +++ b/_images/inheritance-3b75bee2697d06bfe99fa4279d0cb4c5d1fc05bf.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance6e8561387a + + +Block + + +Block + + + + + +NameBlock + + +NameBlock + + + + + +Block->NameBlock + + + + + diff --git a/_images/inheritance-3b928919a3a0ef5bab7fd424b1df1e611efd814c.svg b/_images/inheritance-3b928919a3a0ef5bab7fd424b1df1e611efd814c.svg new file mode 100644 index 000000000..de9b13285 --- /dev/null +++ b/_images/inheritance-3b928919a3a0ef5bab7fd424b1df1e611efd814c.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance082620010a + + +KeywordToken + + +KeywordToken + + + + + +ReportKeyword + + +ReportKeyword + + + + + +KeywordToken->ReportKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-3c690b6a0d84b62229eba5320a92abd5a80d51f5.svg b/_images/inheritance-3c690b6a0d84b62229eba5320a92abd5a80d51f5.svg new file mode 100644 index 000000000..58f29d88c --- /dev/null +++ b/_images/inheritance-3c690b6a0d84b62229eba5320a92abd5a80d51f5.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance64f66685e3 + + +OperatorToken + + +OperatorToken + + + + + +SpecificVHDLToken + + +SpecificVHDLToken + + + + + +SpecificVHDLToken->OperatorToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->SpecificVHDLToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-3c7769e18e8a8f686bfeaeaefcc3b96f4cbb35e2.svg b/_images/inheritance-3c7769e18e8a8f686bfeaeaefcc3b96f4cbb35e2.svg new file mode 100644 index 000000000..6c2c191b2 --- /dev/null +++ b/_images/inheritance-3c7769e18e8a8f686bfeaeaefcc3b96f4cbb35e2.svg @@ -0,0 +1,102 @@ + + + + + + +inheritance953873d1d9 + + +Context + + +Context + + + + + +Context->Context + + + + + +PrimaryUnit + + +PrimaryUnit + + + + + +PrimaryUnit->Context + + + + + +DesignUnit + + +DesignUnit + + + + + +DesignUnit->PrimaryUnit + + + + + +ModelEntity + + +ModelEntity + + + + + +ModelEntity->DesignUnit + + + + + +NamedEntityMixin + + +NamedEntityMixin + + + + + +NamedEntityMixin->DesignUnit + + + + + +DocumentedEntityMixin + + +DocumentedEntityMixin + + + + + +DocumentedEntityMixin->DesignUnit + + + + + diff --git a/_images/inheritance-3d137feac2dd7fd1e8dbf1aaa9bccf98fb4bcf82.svg b/_images/inheritance-3d137feac2dd7fd1e8dbf1aaa9bccf98fb4bcf82.svg new file mode 100644 index 000000000..7f8a7d948 --- /dev/null +++ b/_images/inheritance-3d137feac2dd7fd1e8dbf1aaa9bccf98fb4bcf82.svg @@ -0,0 +1,57 @@ + + + + + + +inheritance4e0e4303f5 + + +Block + + +Block + + + + + +FinalBlock + + +FinalBlock + + + + + +Block->FinalBlock + + + + + +EndBlock + + +EndBlock + + + + + +EndBlock->EndBlock + + + + + +FinalBlock->EndBlock + + + + + diff --git a/_images/inheritance-3d57c1dbc465e27412ee6aee298b495964d3cce7.svg b/_images/inheritance-3d57c1dbc465e27412ee6aee298b495964d3cce7.svg new file mode 100644 index 000000000..1ea100112 --- /dev/null +++ b/_images/inheritance-3d57c1dbc465e27412ee6aee298b495964d3cce7.svg @@ -0,0 +1,138 @@ + + + + + + +inheritanceb4a5d6e370 + + +ConcurrentDeclarations + +ConcurrentDeclarations + + + +Entity + + +Entity + + + + + +ConcurrentDeclarations->Entity + + + + + +ConcurrentStatements + +ConcurrentStatements + + + +ConcurrentStatements->Entity + + + + + +DesignUnit + + +DesignUnit + + + + + +PrimaryUnit + + +PrimaryUnit + + + + + +DesignUnit->PrimaryUnit + + + + + +ModelEntity + + +ModelEntity + + + + + +ModelEntity->DesignUnit + + + + + +NamedEntityMixin + + +NamedEntityMixin + + + + + +NamedEntityMixin->DesignUnit + + + + + +DocumentedEntityMixin + + +DocumentedEntityMixin + + + + + +DocumentedEntityMixin->DesignUnit + + + + + +DesignUnitWithContextMixin + +DesignUnitWithContextMixin + + + +DesignUnitWithContextMixin->Entity + + + + + +Entity->Entity + + + + + +PrimaryUnit->Entity + + + + + diff --git a/_images/inheritance-3dd6b62239430a37c6a6b9fd53716d5ab985dfad.svg b/_images/inheritance-3dd6b62239430a37c6a6b9fd53716d5ab985dfad.svg new file mode 100644 index 000000000..dc8a27d9d --- /dev/null +++ b/_images/inheritance-3dd6b62239430a37c6a6b9fd53716d5ab985dfad.svg @@ -0,0 +1,66 @@ + + + + + + +inheritancee388f23632 + + +Block + + +Block + + + + + +InterfaceObjectBlock + + +InterfaceObjectBlock + + + + + +Block->InterfaceObjectBlock + + + + + +InterfaceSignalBlock + + +InterfaceSignalBlock + + + + + +InterfaceObjectBlock->InterfaceSignalBlock + + + + + +PortListInterfaceSignalBlock + + +PortListInterfaceSignalBlock + + + + + +InterfaceSignalBlock->PortListInterfaceSignalBlock + + + + + diff --git a/_images/inheritance-3e073f1332b1caefcdb06da496884e232fea10a2.svg b/_images/inheritance-3e073f1332b1caefcdb06da496884e232fea10a2.svg new file mode 100644 index 000000000..4bb2e8175 --- /dev/null +++ b/_images/inheritance-3e073f1332b1caefcdb06da496884e232fea10a2.svg @@ -0,0 +1,81 @@ + + + + + + +inheritancee98a35675d + + +KeywordToken + + +KeywordToken + + + + + +LoopKeyword + + +LoopKeyword + + + + + +KeywordToken->LoopKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-3e9134b9a7fab88a44be88ad5e23a6fda80790df.svg b/_images/inheritance-3e9134b9a7fab88a44be88ad5e23a6fda80790df.svg new file mode 100644 index 000000000..8249ce04d --- /dev/null +++ b/_images/inheritance-3e9134b9a7fab88a44be88ad5e23a6fda80790df.svg @@ -0,0 +1,45 @@ + + + + + + +inheritancec8c8e365bc + + +ExceptionBase + +ExceptionBase + + + +ParserException + +ParserException + + + +ExceptionBase->ParserException + + + + + +TokenizerException + + +TokenizerException + + + + + +ParserException->TokenizerException + + + + + diff --git a/_images/inheritance-3f838a023ebbf1c4e165e0b58f258b8b8035fcfc.svg b/_images/inheritance-3f838a023ebbf1c4e165e0b58f258b8b8035fcfc.svg new file mode 100644 index 000000000..ffa18c2a2 --- /dev/null +++ b/_images/inheritance-3f838a023ebbf1c4e165e0b58f258b8b8035fcfc.svg @@ -0,0 +1,36 @@ + + + + + + +inheritanced1518717bc + + +Block + + +Block + + + + + +NullBlock + + +NullBlock + + + + + +Block->NullBlock + + + + + diff --git a/_images/inheritance-3fae50c8a0aae23a44087857518d27c6cc184dbc.svg b/_images/inheritance-3fae50c8a0aae23a44087857518d27c6cc184dbc.svg new file mode 100644 index 000000000..294856bbe --- /dev/null +++ b/_images/inheritance-3fae50c8a0aae23a44087857518d27c6cc184dbc.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance9ecbbb7768 + + +EndToken + + +EndToken + + + + + +SpecificVHDLToken + + +SpecificVHDLToken + + + + + +SpecificVHDLToken->EndToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->SpecificVHDLToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-3fde9ec84629e7d353eeb934e41fead895863b4f.svg b/_images/inheritance-3fde9ec84629e7d353eeb934e41fead895863b4f.svg new file mode 100644 index 000000000..155680d9c --- /dev/null +++ b/_images/inheritance-3fde9ec84629e7d353eeb934e41fead895863b4f.svg @@ -0,0 +1,66 @@ + + + + + + +inheritance4ec308a447 + + +Block + + +Block + + + + + +EndOfStatementBlock + + +EndOfStatementBlock + + + + + +Block->EndOfStatementBlock + + + + + +ObjectDeclarationEndMarkerBlock + + +ObjectDeclarationEndMarkerBlock + + + + + +EndOfStatementBlock->ObjectDeclarationEndMarkerBlock + + + + + +VariableDeclarationEndMarkerBlock + + +VariableDeclarationEndMarkerBlock + + + + + +ObjectDeclarationEndMarkerBlock->VariableDeclarationEndMarkerBlock + + + + + diff --git a/_images/inheritance-400e2d3a8aae6ac97a9c88f93c1e6d1e14f527eb.svg b/_images/inheritance-400e2d3a8aae6ac97a9c88f93c1e6d1e14f527eb.svg new file mode 100644 index 000000000..70be15b57 --- /dev/null +++ b/_images/inheritance-400e2d3a8aae6ac97a9c88f93c1e6d1e14f527eb.svg @@ -0,0 +1,51 @@ + + + + + + +inheritance960d6feb94 + + +Block + + +Block + + + + + +SkipableBlock + + +SkipableBlock + + + + + +Block->SkipableBlock + + + + + +DelimiterBlock + + +DelimiterBlock + + + + + +SkipableBlock->DelimiterBlock + + + + + diff --git a/_images/inheritance-402bae689cf0e4c8d84f91bcf17190a7fc667f56.svg b/_images/inheritance-402bae689cf0e4c8d84f91bcf17190a7fc667f56.svg new file mode 100644 index 000000000..0e71a5a77 --- /dev/null +++ b/_images/inheritance-402bae689cf0e4c8d84f91bcf17190a7fc667f56.svg @@ -0,0 +1,36 @@ + + + + + + +inheritancebca963e155 + + +Block + + +Block + + + + + +CloseBlock + + +CloseBlock + + + + + +Block->CloseBlock + + + + + diff --git a/_images/inheritance-402be2ea61e75a52a5873bb2f106774230bd67f6.svg b/_images/inheritance-402be2ea61e75a52a5873bb2f106774230bd67f6.svg new file mode 100644 index 000000000..a1694d0e8 --- /dev/null +++ b/_images/inheritance-402be2ea61e75a52a5873bb2f106774230bd67f6.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance7d5b36e250 + + +Block + + +Block + + + + + +GenericMapBeginBlock + + +GenericMapBeginBlock + + + + + +Block->GenericMapBeginBlock + + + + + diff --git a/_images/inheritance-42a3390956ffcd0f3bac5756a965979d0cb2cc4c.svg b/_images/inheritance-42a3390956ffcd0f3bac5756a965979d0cb2cc4c.svg new file mode 100644 index 000000000..c751dbb87 --- /dev/null +++ b/_images/inheritance-42a3390956ffcd0f3bac5756a965979d0cb2cc4c.svg @@ -0,0 +1,36 @@ + + + + + + +inheritancecf62669a27 + + +Block + + +Block + + + + + +PortMapItemBlock + + +PortMapItemBlock + + + + + +Block->PortMapItemBlock + + + + + diff --git a/_images/inheritance-433285a55e08b75fdee9ae8a875e5d00f6c94d1d.svg b/_images/inheritance-433285a55e08b75fdee9ae8a875e5d00f6c94d1d.svg new file mode 100644 index 000000000..18638ebd9 --- /dev/null +++ b/_images/inheritance-433285a55e08b75fdee9ae8a875e5d00f6c94d1d.svg @@ -0,0 +1,66 @@ + + + + + + +inheritance47ed1eba79 + + +Block + + +Block + + + + + +InterfaceObjectBlock + + +InterfaceObjectBlock + + + + + +Block->InterfaceObjectBlock + + + + + +InterfaceVariableBlock + + +InterfaceVariableBlock + + + + + +InterfaceObjectBlock->InterfaceVariableBlock + + + + + +ParameterListInterfaceVariableBlock + + +ParameterListInterfaceVariableBlock + + + + + +InterfaceVariableBlock->ParameterListInterfaceVariableBlock + + + + + diff --git a/_images/inheritance-435fcf392af1e4c73125a65a81cb44f3fb3d5ae7.svg b/_images/inheritance-435fcf392af1e4c73125a65a81cb44f3fb3d5ae7.svg new file mode 100644 index 000000000..843c6595e --- /dev/null +++ b/_images/inheritance-435fcf392af1e4c73125a65a81cb44f3fb3d5ae7.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance6dd8ceea40 + + +AssignmentKeyword + + +AssignmentKeyword + + + + + +MultiCharKeyword + + +MultiCharKeyword + + + + + +MultiCharKeyword->AssignmentKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->MultiCharKeyword + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-438f51a17d7768317929cf50cf95d380c3b95cc8.svg b/_images/inheritance-438f51a17d7768317929cf50cf95d380c3b95cc8.svg new file mode 100644 index 000000000..72da73ccf --- /dev/null +++ b/_images/inheritance-438f51a17d7768317929cf50cf95d380c3b95cc8.svg @@ -0,0 +1,66 @@ + + + + + + +inheritance69f6c1b3ea + + +CharacterToken + + +CharacterToken + + + + + +FusedCharacterToken + + +FusedCharacterToken + + + + + +CharacterToken->FusedCharacterToken + + + + + +ValuedToken + + +ValuedToken + + + + + +ValuedToken->CharacterToken + + + + + +Token + + +Token + + + + + +Token->ValuedToken + + + + + diff --git a/_images/inheritance-43acfd6ad184e319941a6bd565dd7826f166833c.svg b/_images/inheritance-43acfd6ad184e319941a6bd565dd7826f166833c.svg new file mode 100644 index 000000000..634c364fa --- /dev/null +++ b/_images/inheritance-43acfd6ad184e319941a6bd565dd7826f166833c.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance0a3c5980bc + + +IntegerSubtype + + +IntegerSubtype + + + + + +Subtype + + +Subtype + + + + + +Subtype->IntegerSubtype + + + + + diff --git a/_images/inheritance-4446cf45949a39577d6d79f2159d20576663cdc1.svg b/_images/inheritance-4446cf45949a39577d6d79f2159d20576663cdc1.svg new file mode 100644 index 000000000..a856027b8 --- /dev/null +++ b/_images/inheritance-4446cf45949a39577d6d79f2159d20576663cdc1.svg @@ -0,0 +1,36 @@ + + + + + + +inheritanceddee40f98b + + +Group + + +Group + + + + + +SignalAssignmentGroup + + +SignalAssignmentGroup + + + + + +Group->SignalAssignmentGroup + + + + + diff --git a/_images/inheritance-4519159d934dce6fb182e0f93c54dfb02868afde.svg b/_images/inheritance-4519159d934dce6fb182e0f93c54dfb02868afde.svg new file mode 100644 index 000000000..902084651 --- /dev/null +++ b/_images/inheritance-4519159d934dce6fb182e0f93c54dfb02868afde.svg @@ -0,0 +1,81 @@ + + + + + + +inheritanceab8688acb3 + + +BeginKeyword + + +BeginKeyword + + + + + +KeywordToken + + +KeywordToken + + + + + +KeywordToken->BeginKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-45e8f676f5ae737ee7a741928cb2541e88c13fb2.svg b/_images/inheritance-45e8f676f5ae737ee7a741928cb2541e88c13fb2.svg new file mode 100644 index 000000000..c34ec4a9e --- /dev/null +++ b/_images/inheritance-45e8f676f5ae737ee7a741928cb2541e88c13fb2.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance06f40ed0b6 + + +KeywordToken + + +KeywordToken + + + + + +NewKeyword + + +NewKeyword + + + + + +KeywordToken->NewKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-460956674af11f1ea77440beb23bd37f80d09c93.svg b/_images/inheritance-460956674af11f1ea77440beb23bd37f80d09c93.svg new file mode 100644 index 000000000..fccedc1db --- /dev/null +++ b/_images/inheritance-460956674af11f1ea77440beb23bd37f80d09c93.svg @@ -0,0 +1,57 @@ + + + + + + +inheritance93cba77a7d + + +BeginBlock + + +BeginBlock + + + + + +ConcurrentBeginBlock + + +ConcurrentBeginBlock + + + + + +BeginBlock->ConcurrentBeginBlock + + + + + +Block + + +Block + + + + + +Block->BeginBlock + + + + + +ConcurrentBeginBlock->BeginBlock + + + + + diff --git a/_images/inheritance-46e5bf0eebf5313d9952e4798eae6423b2637662.svg b/_images/inheritance-46e5bf0eebf5313d9952e4798eae6423b2637662.svg new file mode 100644 index 000000000..dd03a0f89 --- /dev/null +++ b/_images/inheritance-46e5bf0eebf5313d9952e4798eae6423b2637662.svg @@ -0,0 +1,111 @@ + + + + + + +inheritance57fe81b8ef + + +LessThanOperator + + +LessThanOperator + + + + + +RelationalOperator + + +RelationalOperator + + + + + +RelationalOperator->LessThanOperator + + + + + +OperatorToken + + +OperatorToken + + + + + +OperatorToken->RelationalOperator + + + + + +SpecificVHDLToken + + +SpecificVHDLToken + + + + + +SpecificVHDLToken->OperatorToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->SpecificVHDLToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-479a7849de50b8968c7f20a658d079e9c2b4e16f.svg b/_images/inheritance-479a7849de50b8968c7f20a658d079e9c2b4e16f.svg new file mode 100644 index 000000000..c955ed97f --- /dev/null +++ b/_images/inheritance-479a7849de50b8968c7f20a658d079e9c2b4e16f.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance0b61d6722c + + +KeywordToken + + +KeywordToken + + + + + +UnaffectedKeyword + + +UnaffectedKeyword + + + + + +KeywordToken->UnaffectedKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-47f7e063d2d2f329b5252923f51294131e3167a1.svg b/_images/inheritance-47f7e063d2d2f329b5252923f51294131e3167a1.svg new file mode 100644 index 000000000..1d2da7d69 --- /dev/null +++ b/_images/inheritance-47f7e063d2d2f329b5252923f51294131e3167a1.svg @@ -0,0 +1,36 @@ + + + + + + +inheritancefccad148d3 + + +Group + + +Group + + + + + +ProcessGroup + + +ProcessGroup + + + + + +Group->ProcessGroup + + + + + diff --git a/_images/inheritance-485883c1cbf25eba43989160792cf67bbb9e57b3.svg b/_images/inheritance-485883c1cbf25eba43989160792cf67bbb9e57b3.svg new file mode 100644 index 000000000..51d7c8108 --- /dev/null +++ b/_images/inheritance-485883c1cbf25eba43989160792cf67bbb9e57b3.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance681cfbed2e + + +ElsIfBranchGroup + + +ElsIfBranchGroup + + + + + +Group + + +Group + + + + + +Group->ElsIfBranchGroup + + + + + diff --git a/_images/inheritance-4881eb60b9c6f56f2b7a4b75a280ae6549df8e48.svg b/_images/inheritance-4881eb60b9c6f56f2b7a4b75a280ae6549df8e48.svg new file mode 100644 index 000000000..5e8818216 --- /dev/null +++ b/_images/inheritance-4881eb60b9c6f56f2b7a4b75a280ae6549df8e48.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance263efa2749 + + +FunctionGroup + + +FunctionGroup + + + + + +Group + + +Group + + + + + +Group->FunctionGroup + + + + + diff --git a/_images/inheritance-48a225d0ed6efcb925c82abd98c65f1f22598b55.svg b/_images/inheritance-48a225d0ed6efcb925c82abd98c65f1f22598b55.svg new file mode 100644 index 000000000..7eed5388a --- /dev/null +++ b/_images/inheritance-48a225d0ed6efcb925c82abd98c65f1f22598b55.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance93cba77a7d + + +BeginBlock + + +BeginBlock + + + + + +Block + + +Block + + + + + +Block->BeginBlock + + + + + diff --git a/_images/inheritance-48db9badb2b7bd682a17c08810dff560b610323a.svg b/_images/inheritance-48db9badb2b7bd682a17c08810dff560b610323a.svg new file mode 100644 index 000000000..7cce7a3ba --- /dev/null +++ b/_images/inheritance-48db9badb2b7bd682a17c08810dff560b610323a.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance2e9e33798c + + +KeywordToken + + +KeywordToken + + + + + +RangeKeyword + + +RangeKeyword + + + + + +KeywordToken->RangeKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-497c7b09bfd395c0f85d185119b1caf7bf9d3ca0.svg b/_images/inheritance-497c7b09bfd395c0f85d185119b1caf7bf9d3ca0.svg new file mode 100644 index 000000000..9cc98600b --- /dev/null +++ b/_images/inheritance-497c7b09bfd395c0f85d185119b1caf7bf9d3ca0.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance7d8e947efa + + +KeywordToken + + +KeywordToken + + + + + +ThenKeyword + + +ThenKeyword + + + + + +KeywordToken->ThenKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-497edefc51851cbab952ccdb320b2bcfb7c45ef9.svg b/_images/inheritance-497edefc51851cbab952ccdb320b2bcfb7c45ef9.svg new file mode 100644 index 000000000..c62d9bacb --- /dev/null +++ b/_images/inheritance-497edefc51851cbab952ccdb320b2bcfb7c45ef9.svg @@ -0,0 +1,51 @@ + + + + + + +inheritance20587f4c43 + + +BeginBlock + + +BeginBlock + + + + + +ConcurrentBeginBlock + + +ConcurrentBeginBlock + + + + + +BeginBlock->ConcurrentBeginBlock + + + + + +Block + + +Block + + + + + +Block->BeginBlock + + + + + diff --git a/_images/inheritance-49bd095cb14a326b6565320be281ded7b208fb16.svg b/_images/inheritance-49bd095cb14a326b6565320be281ded7b208fb16.svg new file mode 100644 index 000000000..64bdd0257 --- /dev/null +++ b/_images/inheritance-49bd095cb14a326b6565320be281ded7b208fb16.svg @@ -0,0 +1,36 @@ + + + + + + +inheritancee2e542aabe + + +Block + + +Block + + + + + +IfConditionBlock + + +IfConditionBlock + + + + + +Block->IfConditionBlock + + + + + diff --git a/_images/inheritance-49fa2f35963985d82a088ad9ca8146e989c7f3b7.svg b/_images/inheritance-49fa2f35963985d82a088ad9ca8146e989c7f3b7.svg new file mode 100644 index 000000000..5877af779 --- /dev/null +++ b/_images/inheritance-49fa2f35963985d82a088ad9ca8146e989c7f3b7.svg @@ -0,0 +1,36 @@ + + + + + + +inheritancebca963e155 + + +Block + + +Block + + + + + +CloseBlock + + +CloseBlock + + + + + +Block->CloseBlock + + + + + diff --git a/_images/inheritance-4afc07746e253c9ce2b3713e83f3c90a32c1d8bd.svg b/_images/inheritance-4afc07746e253c9ce2b3713e83f3c90a32c1d8bd.svg new file mode 100644 index 000000000..ee50cb6d0 --- /dev/null +++ b/_images/inheritance-4afc07746e253c9ce2b3713e83f3c90a32c1d8bd.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance946a684f6e + + +KeywordToken + + +KeywordToken + + + + + +ProcedureKeyword + + +ProcedureKeyword + + + + + +KeywordToken->ProcedureKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-4b3a5c7fe9275f2d95367e089f632092d7199803.svg b/_images/inheritance-4b3a5c7fe9275f2d95367e089f632092d7199803.svg new file mode 100644 index 000000000..e23cd2153 --- /dev/null +++ b/_images/inheritance-4b3a5c7fe9275f2d95367e089f632092d7199803.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance4824134f59 + + +ArchitectureKeyword + + +ArchitectureKeyword + + + + + +KeywordToken + + +KeywordToken + + + + + +KeywordToken->ArchitectureKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-4bb4b69d5291d82daebb335734b50e7a8a668907.svg b/_images/inheritance-4bb4b69d5291d82daebb335734b50e7a8a668907.svg new file mode 100644 index 000000000..4dfb5fb71 --- /dev/null +++ b/_images/inheritance-4bb4b69d5291d82daebb335734b50e7a8a668907.svg @@ -0,0 +1,66 @@ + + + + + + +inheritance3a2848f940 + + +Block + + +Block + + + + + +ExpressionBlock + + +ExpressionBlock + + + + + +Block->ExpressionBlock + + + + + +DefaultValueExpressionBlock + + +DefaultValueExpressionBlock + + + + + +ExpressionBlockEndedByCharORClosingRoundBracket + + +ExpressionBlockEndedByCharORClosingRoundBracket + + + + + +ExpressionBlockEndedByCharORClosingRoundBracket->DefaultValueExpressionBlock + + + + + +ExpressionBlock->ExpressionBlockEndedByCharORClosingRoundBracket + + + + + diff --git a/_images/inheritance-4bd1236419d39aba9e7bbde6e91ef8d611a3542c.svg b/_images/inheritance-4bd1236419d39aba9e7bbde6e91ef8d611a3542c.svg new file mode 100644 index 000000000..929dfc995 --- /dev/null +++ b/_images/inheritance-4bd1236419d39aba9e7bbde6e91ef8d611a3542c.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance6e9c18b346 + + +Group + + +Group + + + + + +PortMapItemGroup + + +PortMapItemGroup + + + + + +Group->PortMapItemGroup + + + + + diff --git a/_images/inheritance-4bf038ecf248693b0be533f1cacd917958f06701.svg b/_images/inheritance-4bf038ecf248693b0be533f1cacd917958f06701.svg new file mode 100644 index 000000000..95866e951 --- /dev/null +++ b/_images/inheritance-4bf038ecf248693b0be533f1cacd917958f06701.svg @@ -0,0 +1,51 @@ + + + + + + +inheritance49a8ddf0db + + +Block + + +Block + + + + + +ExpressionBlock + + +ExpressionBlock + + + + + +Block->ExpressionBlock + + + + + +ExpressionBlockEndedByKeywordOrToOrDownto + + +ExpressionBlockEndedByKeywordOrToOrDownto + + + + + +ExpressionBlock->ExpressionBlockEndedByKeywordOrToOrDownto + + + + + diff --git a/_images/inheritance-4cea62d906cf6e02ef6a54c97eebe9b708b8fa08.svg b/_images/inheritance-4cea62d906cf6e02ef6a54c97eebe9b708b8fa08.svg new file mode 100644 index 000000000..3741be0ab --- /dev/null +++ b/_images/inheritance-4cea62d906cf6e02ef6a54c97eebe9b708b8fa08.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance31883903c8 + + +Block + + +Block + + + + + +ExitBlock + + +ExitBlock + + + + + +Block->ExitBlock + + + + + diff --git a/_images/inheritance-4d90cd1e63d8c8f98194622bd6e2ca18a44d58f2.svg b/_images/inheritance-4d90cd1e63d8c8f98194622bd6e2ca18a44d58f2.svg new file mode 100644 index 000000000..5f3a2dd60 --- /dev/null +++ b/_images/inheritance-4d90cd1e63d8c8f98194622bd6e2ca18a44d58f2.svg @@ -0,0 +1,51 @@ + + + + + + +inheritance4e0e4303f5 + + +Block + + +Block + + + + + +EndOfStatementBlock + + +EndOfStatementBlock + + + + + +Block->EndOfStatementBlock + + + + + +EndBlock + + +EndBlock + + + + + +EndOfStatementBlock->EndBlock + + + + + diff --git a/_images/inheritance-4db261b3cb1b341d2755a259cf6d5593f1dc8968.svg b/_images/inheritance-4db261b3cb1b341d2755a259cf6d5593f1dc8968.svg new file mode 100644 index 000000000..17f7bcbd6 --- /dev/null +++ b/_images/inheritance-4db261b3cb1b341d2755a259cf6d5593f1dc8968.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance6b02f308c6 + + +DeclarativeRegion + + +DeclarativeRegion + + + + + +SequentialDeclarativeRegion + + +SequentialDeclarativeRegion + + + + + +DeclarativeRegion->SequentialDeclarativeRegion + + + + + diff --git a/_images/inheritance-4df55ba72502c7d8b27ab6a5a0bf0fe6953eee75.svg b/_images/inheritance-4df55ba72502c7d8b27ab6a5a0bf0fe6953eee75.svg new file mode 100644 index 000000000..137ddfa8e --- /dev/null +++ b/_images/inheritance-4df55ba72502c7d8b27ab6a5a0bf0fe6953eee75.svg @@ -0,0 +1,96 @@ + + + + + + +inheritancee92962b4e5 + + +BracketToken + + +BracketToken + + + + + +RoundBracketToken + + +RoundBracketToken + + + + + +BracketToken->RoundBracketToken + + + + + +SpecificVHDLToken + + +SpecificVHDLToken + + + + + +SpecificVHDLToken->BracketToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->SpecificVHDLToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-4f2ed908bf97a5485d4cd6ed7ff4b7a7ea36b269.svg b/_images/inheritance-4f2ed908bf97a5485d4cd6ed7ff4b7a7ea36b269.svg new file mode 100644 index 000000000..e1c400a42 --- /dev/null +++ b/_images/inheritance-4f2ed908bf97a5485d4cd6ed7ff4b7a7ea36b269.svg @@ -0,0 +1,21 @@ + + + + + + +inheritanceca535f21be + + +Package + + +Package + + + + + diff --git a/_images/inheritance-4f9a02e3bca4790641e8ddd55d85d9e1a6f44f75.svg b/_images/inheritance-4f9a02e3bca4790641e8ddd55d85d9e1a6f44f75.svg new file mode 100644 index 000000000..d1fa0d8be --- /dev/null +++ b/_images/inheritance-4f9a02e3bca4790641e8ddd55d85d9e1a6f44f75.svg @@ -0,0 +1,36 @@ + + + + + + +inheritancea2ad267436 + + +Block + + +Block + + + + + +PortMapBeginBlock + + +PortMapBeginBlock + + + + + +Block->PortMapBeginBlock + + + + + diff --git a/_images/inheritance-500aa44cf72c9e4698c02523358bf5b6074b5b53.svg b/_images/inheritance-500aa44cf72c9e4698c02523358bf5b6074b5b53.svg new file mode 100644 index 000000000..151309e2e --- /dev/null +++ b/_images/inheritance-500aa44cf72c9e4698c02523358bf5b6074b5b53.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance56627bad38 + + +Group + + +Group + + + + + +IfGroup + + +IfGroup + + + + + +Group->IfGroup + + + + + diff --git a/_images/inheritance-501050bfc56d13615924667b66ac00ad22442f1c.svg b/_images/inheritance-501050bfc56d13615924667b66ac00ad22442f1c.svg new file mode 100644 index 000000000..df93a746a --- /dev/null +++ b/_images/inheritance-501050bfc56d13615924667b66ac00ad22442f1c.svg @@ -0,0 +1,81 @@ + + + + + + +inheritancea1a89f3de4 + + +CommentToken + + +CommentToken + + + + + +MultiLineCommentToken + + +MultiLineCommentToken + + + + + +CommentToken->MultiLineCommentToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->CommentToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-501cf578c8769354b7334eabc1736129e7714418.svg b/_images/inheritance-501cf578c8769354b7334eabc1736129e7714418.svg new file mode 100644 index 000000000..583660083 --- /dev/null +++ b/_images/inheritance-501cf578c8769354b7334eabc1736129e7714418.svg @@ -0,0 +1,111 @@ + + + + + + +inheritanced7988a1934 + + +MatchingLessThanOperator + + +MatchingLessThanOperator + + + + + +RelationalOperator + + +RelationalOperator + + + + + +RelationalOperator->MatchingLessThanOperator + + + + + +OperatorToken + + +OperatorToken + + + + + +OperatorToken->RelationalOperator + + + + + +SpecificVHDLToken + + +SpecificVHDLToken + + + + + +SpecificVHDLToken->OperatorToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->SpecificVHDLToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-50f4512e40bceecbaace5e28810339588c462918.svg b/_images/inheritance-50f4512e40bceecbaace5e28810339588c462918.svg new file mode 100644 index 000000000..8425bcabc --- /dev/null +++ b/_images/inheritance-50f4512e40bceecbaace5e28810339588c462918.svg @@ -0,0 +1,111 @@ + + + + + + +inheritanced410792e39 + + +MatchingGreaterThanOrEqualOperator + + +MatchingGreaterThanOrEqualOperator + + + + + +RelationalOperator + + +RelationalOperator + + + + + +RelationalOperator->MatchingGreaterThanOrEqualOperator + + + + + +OperatorToken + + +OperatorToken + + + + + +OperatorToken->RelationalOperator + + + + + +SpecificVHDLToken + + +SpecificVHDLToken + + + + + +SpecificVHDLToken->OperatorToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->SpecificVHDLToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-52012fbbf02f689822e8b6b377a70f2f7122439a.svg b/_images/inheritance-52012fbbf02f689822e8b6b377a70f2f7122439a.svg new file mode 100644 index 000000000..1ca62bef4 --- /dev/null +++ b/_images/inheritance-52012fbbf02f689822e8b6b377a70f2f7122439a.svg @@ -0,0 +1,66 @@ + + + + + + +inheritance8d86db4a58 + + +ExtendedIdentifier + + +ExtendedIdentifier + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->ExtendedIdentifier + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-522c3311b0331d1eb93c2d02e8821784729c5ae0.svg b/_images/inheritance-522c3311b0331d1eb93c2d02e8821784729c5ae0.svg new file mode 100644 index 000000000..ee5ab056c --- /dev/null +++ b/_images/inheritance-522c3311b0331d1eb93c2d02e8821784729c5ae0.svg @@ -0,0 +1,51 @@ + + + + + + +inheritancedebe506773 + + +Block + + +Block + + + + + +SkipableBlock + + +SkipableBlock + + + + + +Block->SkipableBlock + + + + + +CommentBlock + + +CommentBlock + + + + + +SkipableBlock->CommentBlock + + + + + diff --git a/_images/inheritance-52b600a0b701084444feb01fdedecc995cd71a12.svg b/_images/inheritance-52b600a0b701084444feb01fdedecc995cd71a12.svg new file mode 100644 index 000000000..68282eb8b --- /dev/null +++ b/_images/inheritance-52b600a0b701084444feb01fdedecc995cd71a12.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance6ea43f60f0 + + +Group + + +Group + + + + + +WhileLoopGroup + + +WhileLoopGroup + + + + + +Group->WhileLoopGroup + + + + + diff --git a/_images/inheritance-539f358b188823c76f35e8db97520c7b2d61f406.svg b/_images/inheritance-539f358b188823c76f35e8db97520c7b2d61f406.svg new file mode 100644 index 000000000..e486d17a3 --- /dev/null +++ b/_images/inheritance-539f358b188823c76f35e8db97520c7b2d61f406.svg @@ -0,0 +1,36 @@ + + + + + + +inheritanceecfb82148b + + +Block + + +Block + + + + + +EndOfBlock + + +EndOfBlock + + + + + +Block->EndOfBlock + + + + + diff --git a/_images/inheritance-53a947b8d0a4d50154d1174d63a8c9ba05518fc6.svg b/_images/inheritance-53a947b8d0a4d50154d1174d63a8c9ba05518fc6.svg new file mode 100644 index 000000000..a6bda3ec4 --- /dev/null +++ b/_images/inheritance-53a947b8d0a4d50154d1174d63a8c9ba05518fc6.svg @@ -0,0 +1,21 @@ + + + + + + +inheritance0785193e71 + + +DrivingValue + + +DrivingValue + + + + + diff --git a/_images/inheritance-53d130f3f02d84a2994328dd39115f04bfcd7960.svg b/_images/inheritance-53d130f3f02d84a2994328dd39115f04bfcd7960.svg new file mode 100644 index 000000000..8accb0773 --- /dev/null +++ b/_images/inheritance-53d130f3f02d84a2994328dd39115f04bfcd7960.svg @@ -0,0 +1,21 @@ + + + + + + +inheritance137d88b7f3 + + +Simulation + + +Simulation + + + + + diff --git a/_images/inheritance-5432a3c28e4296e7eae08adda9c8d0dbb6bf0225.svg b/_images/inheritance-5432a3c28e4296e7eae08adda9c8d0dbb6bf0225.svg new file mode 100644 index 000000000..bdd127473 --- /dev/null +++ b/_images/inheritance-5432a3c28e4296e7eae08adda9c8d0dbb6bf0225.svg @@ -0,0 +1,51 @@ + + + + + + +inheritance960d6feb94 + + +Block + + +Block + + + + + +SkipableBlock + + +SkipableBlock + + + + + +Block->SkipableBlock + + + + + +DelimiterBlock + + +DelimiterBlock + + + + + +SkipableBlock->DelimiterBlock + + + + + diff --git a/_images/inheritance-56522da42691d252f7e8834a65f94a5223bef10a.svg b/_images/inheritance-56522da42691d252f7e8834a65f94a5223bef10a.svg new file mode 100644 index 000000000..40b230643 --- /dev/null +++ b/_images/inheritance-56522da42691d252f7e8834a65f94a5223bef10a.svg @@ -0,0 +1,21 @@ + + + + + + +inheritanced61365b579 + + +BlockIterator + + +BlockIterator + + + + + diff --git a/_images/inheritance-56ec150f81d1b02fedd1f6db1fe7a11c18128e88.svg b/_images/inheritance-56ec150f81d1b02fedd1f6db1fe7a11c18128e88.svg new file mode 100644 index 000000000..78bb81b07 --- /dev/null +++ b/_images/inheritance-56ec150f81d1b02fedd1f6db1fe7a11c18128e88.svg @@ -0,0 +1,36 @@ + + + + + + +inheritancec1ceb6b2de + + +Block + + +Block + + + + + +EntityInstantiationBlock + + +EntityInstantiationBlock + + + + + +Block->EntityInstantiationBlock + + + + + diff --git a/_images/inheritance-5744c0c64574989f54af7021ff810d1e5da0f32f.svg b/_images/inheritance-5744c0c64574989f54af7021ff810d1e5da0f32f.svg new file mode 100644 index 000000000..01fb04bc1 --- /dev/null +++ b/_images/inheritance-5744c0c64574989f54af7021ff810d1e5da0f32f.svg @@ -0,0 +1,51 @@ + + + + + + +inheritance960d6feb94 + + +Block + + +Block + + + + + +SkipableBlock + + +SkipableBlock + + + + + +Block->SkipableBlock + + + + + +DelimiterBlock + + +DelimiterBlock + + + + + +SkipableBlock->DelimiterBlock + + + + + diff --git a/_images/inheritance-58cf3bb273a1edea204b7b4f81d95308709e3452.svg b/_images/inheritance-58cf3bb273a1edea204b7b4f81d95308709e3452.svg new file mode 100644 index 000000000..e7fa8a96f --- /dev/null +++ b/_images/inheritance-58cf3bb273a1edea204b7b4f81d95308709e3452.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance04e557506f + + +Block + + +Block + + + + + +ConditionBlock + + +ConditionBlock + + + + + +Block->ConditionBlock + + + + + diff --git a/_images/inheritance-5905edf9e396adf9c7c6862db375de9317ddb96f.svg b/_images/inheritance-5905edf9e396adf9c7c6862db375de9317ddb96f.svg new file mode 100644 index 000000000..cf35cb909 --- /dev/null +++ b/_images/inheritance-5905edf9e396adf9c7c6862db375de9317ddb96f.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance00ff4678be + + +KeywordToken + + +KeywordToken + + + + + +LibraryKeyword + + +LibraryKeyword + + + + + +KeywordToken->LibraryKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-5a090bf7915922bf8609e52f08a90d7672b1efad.svg b/_images/inheritance-5a090bf7915922bf8609e52f08a90d7672b1efad.svg new file mode 100644 index 000000000..e78126f08 --- /dev/null +++ b/_images/inheritance-5a090bf7915922bf8609e52f08a90d7672b1efad.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance72ccce041e + + +ExtendedType + + +ExtendedType + + + + + +MetaGroup + + +MetaGroup + + + + + +ExtendedType->MetaGroup + + + + + diff --git a/_images/inheritance-5a206609dc8db681b0bc90d8e2a52670d120bec0.svg b/_images/inheritance-5a206609dc8db681b0bc90d8e2a52670d120bec0.svg new file mode 100644 index 000000000..689406404 --- /dev/null +++ b/_images/inheritance-5a206609dc8db681b0bc90d8e2a52670d120bec0.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance34ee1f64a3 + + +ModelBase + + +ModelBase + + + + + +Primitive + + +Primitive + + + + + +ModelBase->Primitive + + + + + diff --git a/_images/inheritance-5bae9abf9a2a093dee3fdf8c274ca3f5ec9e244d.svg b/_images/inheritance-5bae9abf9a2a093dee3fdf8c274ca3f5ec9e244d.svg new file mode 100644 index 000000000..08d5aefdc --- /dev/null +++ b/_images/inheritance-5bae9abf9a2a093dee3fdf8c274ca3f5ec9e244d.svg @@ -0,0 +1,96 @@ + + + + + + +inheritance93393aa97e + + +IdentifierToken + + +IdentifierToken + + + + + +RepeatedIdentifierToken + + +RepeatedIdentifierToken + + + + + +IdentifierToken->RepeatedIdentifierToken + + + + + +SpecificVHDLToken + + +SpecificVHDLToken + + + + + +SpecificVHDLToken->IdentifierToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->SpecificVHDLToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-5bbf0c8c539e178ad8ed8bfe3124dcd01e077106.svg b/_images/inheritance-5bbf0c8c539e178ad8ed8bfe3124dcd01e077106.svg new file mode 100644 index 000000000..de92a648b --- /dev/null +++ b/_images/inheritance-5bbf0c8c539e178ad8ed8bfe3124dcd01e077106.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance93cba77a7d + + +BeginBlock + + +BeginBlock + + + + + +Block + + +Block + + + + + +Block->BeginBlock + + + + + diff --git a/_images/inheritance-5bc2ded9e204906d989577a69685e42dc915cbd9.svg b/_images/inheritance-5bc2ded9e204906d989577a69685e42dc915cbd9.svg new file mode 100644 index 000000000..373262e45 --- /dev/null +++ b/_images/inheritance-5bc2ded9e204906d989577a69685e42dc915cbd9.svg @@ -0,0 +1,66 @@ + + + + + + +inheritance1fd07c4019 + + +Block + + +Block + + + + + +ExpressionBlock + + +ExpressionBlock + + + + + +Block->ExpressionBlock + + + + + +ExpressionBlockEndedBySemicolon + + +ExpressionBlockEndedBySemicolon + + + + + +ExpressionBlock->ExpressionBlockEndedBySemicolon + + + + + +VariableDeclarationDefaultExpressionBlock + + +VariableDeclarationDefaultExpressionBlock + + + + + +ExpressionBlockEndedBySemicolon->VariableDeclarationDefaultExpressionBlock + + + + + diff --git a/_images/inheritance-5c7992f5d9a2068caf8a492419821ca3286f79a4.svg b/_images/inheritance-5c7992f5d9a2068caf8a492419821ca3286f79a4.svg new file mode 100644 index 000000000..4adbcf1c1 --- /dev/null +++ b/_images/inheritance-5c7992f5d9a2068caf8a492419821ca3286f79a4.svg @@ -0,0 +1,81 @@ + + + + + + +inheritanceff2bfe96f2 + + +ConfigurationKeyword + + +ConfigurationKeyword + + + + + +KeywordToken + + +KeywordToken + + + + + +KeywordToken->ConfigurationKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-5c810d63d6b7ddf66eb9eb7df4e66df5a62ef5c0.svg b/_images/inheritance-5c810d63d6b7ddf66eb9eb7df4e66df5a62ef5c0.svg new file mode 100644 index 000000000..df7cefcb4 --- /dev/null +++ b/_images/inheritance-5c810d63d6b7ddf66eb9eb7df4e66df5a62ef5c0.svg @@ -0,0 +1,36 @@ + + + + + + +inheritancebca963e155 + + +Block + + +Block + + + + + +CloseBlock + + +CloseBlock + + + + + +Block->CloseBlock + + + + + diff --git a/_images/inheritance-5d85fc7edde2929f4058b8911867e05aa990a643.svg b/_images/inheritance-5d85fc7edde2929f4058b8911867e05aa990a643.svg new file mode 100644 index 000000000..227de538b --- /dev/null +++ b/_images/inheritance-5d85fc7edde2929f4058b8911867e05aa990a643.svg @@ -0,0 +1,96 @@ + + + + + + +inheritance1cf742d6ba + + +AssociationKeyword + + +AssociationKeyword + + + + + +MapAssociationKeyword + + +MapAssociationKeyword + + + + + +AssociationKeyword->MapAssociationKeyword + + + + + +MultiCharKeyword + + +MultiCharKeyword + + + + + +MultiCharKeyword->AssociationKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->MultiCharKeyword + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-5dbc17a02643087e356dc3078ee03b3202ca959a.svg b/_images/inheritance-5dbc17a02643087e356dc3078ee03b3202ca959a.svg new file mode 100644 index 000000000..21e8d0ec1 --- /dev/null +++ b/_images/inheritance-5dbc17a02643087e356dc3078ee03b3202ca959a.svg @@ -0,0 +1,36 @@ + + + + + + +inheritancec6103a417e + + +Group + + +Group + + + + + +IfBranchGroup + + +IfBranchGroup + + + + + +Group->IfBranchGroup + + + + + diff --git a/_images/inheritance-5dd42d752ad2bc7e1fc4dcebd1a5836a9afddbd2.svg b/_images/inheritance-5dd42d752ad2bc7e1fc4dcebd1a5836a9afddbd2.svg new file mode 100644 index 000000000..6d29706bd --- /dev/null +++ b/_images/inheritance-5dd42d752ad2bc7e1fc4dcebd1a5836a9afddbd2.svg @@ -0,0 +1,96 @@ + + + + + + +inheritancef34f674b13 + + +OperatorToken + + +OperatorToken + + + + + +PowerOperator + + +PowerOperator + + + + + +OperatorToken->PowerOperator + + + + + +SpecificVHDLToken + + +SpecificVHDLToken + + + + + +SpecificVHDLToken->OperatorToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->SpecificVHDLToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-60a0ab3d70248dfd54b899644d7be78d317d0f2c.svg b/_images/inheritance-60a0ab3d70248dfd54b899644d7be78d317d0f2c.svg new file mode 100644 index 000000000..e030a9611 --- /dev/null +++ b/_images/inheritance-60a0ab3d70248dfd54b899644d7be78d317d0f2c.svg @@ -0,0 +1,51 @@ + + + + + + +inheritanceab265fb581 + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +VHDLToken + + +VHDLToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-60faab5f5990f6875d66fe1452c71126b9cd38d0.svg b/_images/inheritance-60faab5f5990f6875d66fe1452c71126b9cd38d0.svg new file mode 100644 index 000000000..edda49cce --- /dev/null +++ b/_images/inheritance-60faab5f5990f6875d66fe1452c71126b9cd38d0.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance098c9ab13c + + +ElseKeyword + + +ElseKeyword + + + + + +KeywordToken + + +KeywordToken + + + + + +KeywordToken->ElseKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-614da1acb3712b6ac727480f62cafeb40fe91d33.svg b/_images/inheritance-614da1acb3712b6ac727480f62cafeb40fe91d33.svg new file mode 100644 index 000000000..53467c401 --- /dev/null +++ b/_images/inheritance-614da1acb3712b6ac727480f62cafeb40fe91d33.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance76111c9cb0 + + +AttributeKeyword + + +AttributeKeyword + + + + + +KeywordToken + + +KeywordToken + + + + + +KeywordToken->AttributeKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-6229c5210eadcfb85770a9424d865fa74e173cf1.svg b/_images/inheritance-6229c5210eadcfb85770a9424d865fa74e173cf1.svg new file mode 100644 index 000000000..4434d0fff --- /dev/null +++ b/_images/inheritance-6229c5210eadcfb85770a9424d865fa74e173cf1.svg @@ -0,0 +1,111 @@ + + + + + + +inheritancedf722b96fa + + +KeywordToken + + +KeywordToken + + + + + +Operator + + +Operator + + + + + +KeywordToken->Operator + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +LogicalOperator + + +LogicalOperator + + + + + +NandOperator + + +NandOperator + + + + + +LogicalOperator->NandOperator + + + + + +Operator->LogicalOperator + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-62577e1343691def56de3e94bcd5d30987fcc770.svg b/_images/inheritance-62577e1343691def56de3e94bcd5d30987fcc770.svg new file mode 100644 index 000000000..b94a88e5e --- /dev/null +++ b/_images/inheritance-62577e1343691def56de3e94bcd5d30987fcc770.svg @@ -0,0 +1,21 @@ + + + + + + +inheritance6b8a38ce39 + + +TokenReverseIterator + + +TokenReverseIterator + + + + + diff --git a/_images/inheritance-626432d4b90f1bc009b868d9693e14c15e51e6f8.svg b/_images/inheritance-626432d4b90f1bc009b868d9693e14c15e51e6f8.svg new file mode 100644 index 000000000..8a2ef0202 --- /dev/null +++ b/_images/inheritance-626432d4b90f1bc009b868d9693e14c15e51e6f8.svg @@ -0,0 +1,36 @@ + + + + + + +inheritancedae0690eaf + + +Block + + +Block + + + + + +SignalAssignmentBlock + + +SignalAssignmentBlock + + + + + +Block->SignalAssignmentBlock + + + + + diff --git a/_images/inheritance-628136f201643df8da328d86bf29904eff572a1e.svg b/_images/inheritance-628136f201643df8da328d86bf29904eff572a1e.svg new file mode 100644 index 000000000..e2b4a0b03 --- /dev/null +++ b/_images/inheritance-628136f201643df8da328d86bf29904eff572a1e.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance04dca26561 + + +ArrayType + + +ArrayType + + + + + +Type + + +Type + + + + + +Type->ArrayType + + + + + diff --git a/_images/inheritance-6321c6befaa831d15a216c7e91f242e210cd720a.svg b/_images/inheritance-6321c6befaa831d15a216c7e91f242e210cd720a.svg new file mode 100644 index 000000000..6602e41f3 --- /dev/null +++ b/_images/inheritance-6321c6befaa831d15a216c7e91f242e210cd720a.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance92be37189b + + +Block + + +Block + + + + + +ReferenceNameBlock + + +ReferenceNameBlock + + + + + +Block->ReferenceNameBlock + + + + + diff --git a/_images/inheritance-632d7d2a64bb4c35d4a1879e1003e2916333069e.svg b/_images/inheritance-632d7d2a64bb4c35d4a1879e1003e2916333069e.svg new file mode 100644 index 000000000..3866c5153 --- /dev/null +++ b/_images/inheritance-632d7d2a64bb4c35d4a1879e1003e2916333069e.svg @@ -0,0 +1,111 @@ + + + + + + +inheritanced308c485af + + +KeywordToken + + +KeywordToken + + + + + +Operator + + +Operator + + + + + +KeywordToken->Operator + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +ShiftOperator + + +ShiftOperator + + + + + +Operator->ShiftOperator + + + + + +SraOperator + + +SraOperator + + + + + +ShiftOperator->SraOperator + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-632e618e206e3ccadb8dc38df3fbd2b942bb9682.svg b/_images/inheritance-632e618e206e3ccadb8dc38df3fbd2b942bb9682.svg new file mode 100644 index 000000000..dec3a38e9 --- /dev/null +++ b/_images/inheritance-632e618e206e3ccadb8dc38df3fbd2b942bb9682.svg @@ -0,0 +1,57 @@ + + + + + + +inheritance4e0e4303f5 + + +Block + + +Block + + + + + +FinalBlock + + +FinalBlock + + + + + +Block->FinalBlock + + + + + +EndBlock + + +EndBlock + + + + + +EndBlock->EndBlock + + + + + +FinalBlock->EndBlock + + + + + diff --git a/_images/inheritance-634a11b5da00d5bb699c30f1b9ef9d7060a8ab83.svg b/_images/inheritance-634a11b5da00d5bb699c30f1b9ef9d7060a8ab83.svg new file mode 100644 index 000000000..92cd0fd9c --- /dev/null +++ b/_images/inheritance-634a11b5da00d5bb699c30f1b9ef9d7060a8ab83.svg @@ -0,0 +1,66 @@ + + + + + + +inheritance2beefba99a + + +LiteralToken + + +LiteralToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->LiteralToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-63f0425affcef179fd1b253d1b70ca12845528b9.svg b/_images/inheritance-63f0425affcef179fd1b253d1b70ca12845528b9.svg new file mode 100644 index 000000000..829d7c497 --- /dev/null +++ b/_images/inheritance-63f0425affcef179fd1b253d1b70ca12845528b9.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance16e9523ad1 + + +RealType + + +RealType + + + + + +Type + + +Type + + + + + +Type->RealType + + + + + diff --git a/_images/inheritance-64a0d5114179f5605df0118c0ecefe3fb2d8058f.svg b/_images/inheritance-64a0d5114179f5605df0118c0ecefe3fb2d8058f.svg new file mode 100644 index 000000000..8dad66b35 --- /dev/null +++ b/_images/inheritance-64a0d5114179f5605df0118c0ecefe3fb2d8058f.svg @@ -0,0 +1,57 @@ + + + + + + +inheritance93cba77a7d + + +BeginBlock + + +BeginBlock + + + + + +ConcurrentBeginBlock + + +ConcurrentBeginBlock + + + + + +BeginBlock->ConcurrentBeginBlock + + + + + +Block + + +Block + + + + + +Block->BeginBlock + + + + + +ConcurrentBeginBlock->BeginBlock + + + + + diff --git a/_images/inheritance-64afeeca08f484ba2cd0a50f008af6b53fc22bb1.svg b/_images/inheritance-64afeeca08f484ba2cd0a50f008af6b53fc22bb1.svg new file mode 100644 index 000000000..3a35da7ed --- /dev/null +++ b/_images/inheritance-64afeeca08f484ba2cd0a50f008af6b53fc22bb1.svg @@ -0,0 +1,21 @@ + + + + + + +inheritance5ffce34d30 + + +Group + + +Group + + + + + diff --git a/_images/inheritance-64d2c15c4b99960877e78ae56c154624f8b26045.svg b/_images/inheritance-64d2c15c4b99960877e78ae56c154624f8b26045.svg new file mode 100644 index 000000000..cc82e6561 --- /dev/null +++ b/_images/inheritance-64d2c15c4b99960877e78ae56c154624f8b26045.svg @@ -0,0 +1,21 @@ + + + + + + +inheritanced9ef7a3b00 + + +DeclarativeRegion + + +DeclarativeRegion + + + + + diff --git a/_images/inheritance-654c51534913004f26d1e419192f004504876868.svg b/_images/inheritance-654c51534913004f26d1e419192f004504876868.svg new file mode 100644 index 000000000..df3ddf123 --- /dev/null +++ b/_images/inheritance-654c51534913004f26d1e419192f004504876868.svg @@ -0,0 +1,111 @@ + + + + + + +inheritanceaeca821415 + + +KeywordToken + + +KeywordToken + + + + + +Operator + + +Operator + + + + + +KeywordToken->Operator + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +LogicalOperator + + +LogicalOperator + + + + + +OrOperator + + +OrOperator + + + + + +LogicalOperator->OrOperator + + + + + +Operator->LogicalOperator + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-656eb3771ac443a0a55554e738f73db54162d81f.svg b/_images/inheritance-656eb3771ac443a0a55554e738f73db54162d81f.svg new file mode 100644 index 000000000..6b9b31f6a --- /dev/null +++ b/_images/inheritance-656eb3771ac443a0a55554e738f73db54162d81f.svg @@ -0,0 +1,51 @@ + + + + + + +inheritance4b83cee2d1 + + +Block + + +Block + + + + + +SkipableBlock + + +SkipableBlock + + + + + +Block->SkipableBlock + + + + + +GenericMapDelimiterBlock + + +GenericMapDelimiterBlock + + + + + +SkipableBlock->GenericMapDelimiterBlock + + + + + diff --git a/_images/inheritance-659e74300e96b4057436aa3c788a23bb51ef45a5.svg b/_images/inheritance-659e74300e96b4057436aa3c788a23bb51ef45a5.svg new file mode 100644 index 000000000..be23fbfaa --- /dev/null +++ b/_images/inheritance-659e74300e96b4057436aa3c788a23bb51ef45a5.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance562b1cd523 + + +EnumerationSubtype + + +EnumerationSubtype + + + + + +Subtype + + +Subtype + + + + + +Subtype->EnumerationSubtype + + + + + diff --git a/_images/inheritance-661cdcf247e317528e030a11bb02f5bada6011a4.svg b/_images/inheritance-661cdcf247e317528e030a11bb02f5bada6011a4.svg new file mode 100644 index 000000000..7671dcdab --- /dev/null +++ b/_images/inheritance-661cdcf247e317528e030a11bb02f5bada6011a4.svg @@ -0,0 +1,51 @@ + + + + + + +inheritance008ebaa2b2 + + +Block + + +Block + + + + + +SkipableBlock + + +SkipableBlock + + + + + +Block->SkipableBlock + + + + + +WhitespaceBlock + + +WhitespaceBlock + + + + + +SkipableBlock->WhitespaceBlock + + + + + diff --git a/_images/inheritance-665efba24d765aa860fae1fa84846137eda87b3e.svg b/_images/inheritance-665efba24d765aa860fae1fa84846137eda87b3e.svg new file mode 100644 index 000000000..7e5bee57e --- /dev/null +++ b/_images/inheritance-665efba24d765aa860fae1fa84846137eda87b3e.svg @@ -0,0 +1,36 @@ + + + + + + +inheritanced69f3072c9 + + +CommentGroup + + +CommentGroup + + + + + +Group + + +Group + + + + + +Group->CommentGroup + + + + + diff --git a/_images/inheritance-66dad1a05777fc0a8bd495f03d5c72358c79eca3.svg b/_images/inheritance-66dad1a05777fc0a8bd495f03d5c72358c79eca3.svg new file mode 100644 index 000000000..823d7ec97 --- /dev/null +++ b/_images/inheritance-66dad1a05777fc0a8bd495f03d5c72358c79eca3.svg @@ -0,0 +1,81 @@ + + + + + + +inheritancee24c9a6a86 + + +KeywordToken + + +KeywordToken + + + + + +ReleaseKeyword + + +ReleaseKeyword + + + + + +KeywordToken->ReleaseKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-67e518c0744c575f9087c2fb2942d223e9e11477.svg b/_images/inheritance-67e518c0744c575f9087c2fb2942d223e9e11477.svg new file mode 100644 index 000000000..7fbeb8432 --- /dev/null +++ b/_images/inheritance-67e518c0744c575f9087c2fb2942d223e9e11477.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance1cdb75d5ee + + +SimpleNameToken + + +SimpleNameToken + + + + + +SpecificVHDLToken + + +SpecificVHDLToken + + + + + +SpecificVHDLToken->SimpleNameToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->SpecificVHDLToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-68c855a64f99926d480d0363edd3739263f4a166.svg b/_images/inheritance-68c855a64f99926d480d0363edd3739263f4a166.svg new file mode 100644 index 000000000..cd08aa266 --- /dev/null +++ b/_images/inheritance-68c855a64f99926d480d0363edd3739263f4a166.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance10300d4785 + + +DelimiterToken + + +DelimiterToken + + + + + +SpecificVHDLToken + + +SpecificVHDLToken + + + + + +SpecificVHDLToken->DelimiterToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->SpecificVHDLToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-68e2bf68d9112331c8045b5fcd25ec312dcc1d81.svg b/_images/inheritance-68e2bf68d9112331c8045b5fcd25ec312dcc1d81.svg new file mode 100644 index 000000000..899cca27a --- /dev/null +++ b/_images/inheritance-68e2bf68d9112331c8045b5fcd25ec312dcc1d81.svg @@ -0,0 +1,111 @@ + + + + + + +inheritance1a6228f0a6 + + +MatchingGreaterThanOperator + + +MatchingGreaterThanOperator + + + + + +RelationalOperator + + +RelationalOperator + + + + + +RelationalOperator->MatchingGreaterThanOperator + + + + + +OperatorToken + + +OperatorToken + + + + + +OperatorToken->RelationalOperator + + + + + +SpecificVHDLToken + + +SpecificVHDLToken + + + + + +SpecificVHDLToken->OperatorToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->SpecificVHDLToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-68eb4e5d061466c8ed8b23234cff74080a2fa3f5.svg b/_images/inheritance-68eb4e5d061466c8ed8b23234cff74080a2fa3f5.svg new file mode 100644 index 000000000..246b4b5d0 --- /dev/null +++ b/_images/inheritance-68eb4e5d061466c8ed8b23234cff74080a2fa3f5.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance7ca688954a + + +KeywordToken + + +KeywordToken + + + + + +LiteralKeyword + + +LiteralKeyword + + + + + +KeywordToken->LiteralKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-698968b12f36ea6696e4278beaae70181f60b5d3.svg b/_images/inheritance-698968b12f36ea6696e4278beaae70181f60b5d3.svg new file mode 100644 index 000000000..b278d902f --- /dev/null +++ b/_images/inheritance-698968b12f36ea6696e4278beaae70181f60b5d3.svg @@ -0,0 +1,36 @@ + + + + + + +inheritanceb9bd81935c + + +IntegerType + + +IntegerType + + + + + +Type + + +Type + + + + + +Type->IntegerType + + + + + diff --git a/_images/inheritance-6999a84139e1d51c417d20f791a28f9e39cab36d.svg b/_images/inheritance-6999a84139e1d51c417d20f791a28f9e39cab36d.svg new file mode 100644 index 000000000..5a41525bd --- /dev/null +++ b/_images/inheritance-6999a84139e1d51c417d20f791a28f9e39cab36d.svg @@ -0,0 +1,36 @@ + + + + + + +inheritancea54ff96704 + + +EnumerationType + + +EnumerationType + + + + + +Type + + +Type + + + + + +Type->EnumerationType + + + + + diff --git a/_images/inheritance-69bd3c8ff2abd84f055c91aac7602eb7cd15f835.svg b/_images/inheritance-69bd3c8ff2abd84f055c91aac7602eb7cd15f835.svg new file mode 100644 index 000000000..d8090bf94 --- /dev/null +++ b/_images/inheritance-69bd3c8ff2abd84f055c91aac7602eb7cd15f835.svg @@ -0,0 +1,36 @@ + + + + + + +inheritancebc59cfd5a5 + + +Block + + +Block + + + + + +ElseGenerateBeginBlock + + +ElseGenerateBeginBlock + + + + + +Block->ElseGenerateBeginBlock + + + + + diff --git a/_images/inheritance-69ee3228721f50c19a17e0e3f19b584485f2db96.svg b/_images/inheritance-69ee3228721f50c19a17e0e3f19b584485f2db96.svg new file mode 100644 index 000000000..b85f2a84c --- /dev/null +++ b/_images/inheritance-69ee3228721f50c19a17e0e3f19b584485f2db96.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance39b5c0176a + + +KeywordToken + + +KeywordToken + + + + + +PrivateKeyword + + +PrivateKeyword + + + + + +KeywordToken->PrivateKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-6b1c62ded1567ee962bcba1b916935bdc23feed7.svg b/_images/inheritance-6b1c62ded1567ee962bcba1b916935bdc23feed7.svg new file mode 100644 index 000000000..d45232422 --- /dev/null +++ b/_images/inheritance-6b1c62ded1567ee962bcba1b916935bdc23feed7.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance7f0eb0b1c8 + + +ForLoopGroup + + +ForLoopGroup + + + + + +Group + + +Group + + + + + +Group->ForLoopGroup + + + + + diff --git a/_images/inheritance-6cdececc9a85f72be817284564dddbd4437913f9.svg b/_images/inheritance-6cdececc9a85f72be817284564dddbd4437913f9.svg new file mode 100644 index 000000000..ee9e40946 --- /dev/null +++ b/_images/inheritance-6cdececc9a85f72be817284564dddbd4437913f9.svg @@ -0,0 +1,36 @@ + + + + + + +inheritancee3e72a92e9 + + +Block + + +Block + + + + + +ReturnBlock + + +ReturnBlock + + + + + +Block->ReturnBlock + + + + + diff --git a/_images/inheritance-6e1c8c61c077ba028ae4364a84b061cba039ce4f.svg b/_images/inheritance-6e1c8c61c077ba028ae4364a84b061cba039ce4f.svg new file mode 100644 index 000000000..80745ea20 --- /dev/null +++ b/_images/inheritance-6e1c8c61c077ba028ae4364a84b061cba039ce4f.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance6e8561387a + + +Block + + +Block + + + + + +NameBlock + + +NameBlock + + + + + +Block->NameBlock + + + + + diff --git a/_images/inheritance-6eced404d9e2239e57fa9b0f2a02461bc5a63cfa.svg b/_images/inheritance-6eced404d9e2239e57fa9b0f2a02461bc5a63cfa.svg new file mode 100644 index 000000000..fcc7b6778 --- /dev/null +++ b/_images/inheritance-6eced404d9e2239e57fa9b0f2a02461bc5a63cfa.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance1e3cd39b13 + + +KeywordToken + + +KeywordToken + + + + + +LabelKeyword + + +LabelKeyword + + + + + +KeywordToken->LabelKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-713f2c3310a5c8cc95df96e0414d13015291ae20.svg b/_images/inheritance-713f2c3310a5c8cc95df96e0414d13015291ae20.svg new file mode 100644 index 000000000..e27b7f530 --- /dev/null +++ b/_images/inheritance-713f2c3310a5c8cc95df96e0414d13015291ae20.svg @@ -0,0 +1,81 @@ + + + + + + +inheritanced7262a33d2 + + +KeywordToken + + +KeywordToken + + + + + +WhenKeyword + + +WhenKeyword + + + + + +KeywordToken->WhenKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-716c47d1d4569e484a5c9b0a88ac1255f4af6d21.svg b/_images/inheritance-716c47d1d4569e484a5c9b0a88ac1255f4af6d21.svg new file mode 100644 index 000000000..f970d5bff --- /dev/null +++ b/_images/inheritance-716c47d1d4569e484a5c9b0a88ac1255f4af6d21.svg @@ -0,0 +1,66 @@ + + + + + + +inheritancee8be8aecf3 + + +IndentationToken + + +IndentationToken + + + + + +SpaceToken + + +SpaceToken + + + + + +SpaceToken->IndentationToken + + + + + +ValuedToken + + +ValuedToken + + + + + +ValuedToken->SpaceToken + + + + + +Token + + +Token + + + + + +Token->ValuedToken + + + + + diff --git a/_images/inheritance-71b90b7891e3274b30e2eefd35693e6a0bcc8345.svg b/_images/inheritance-71b90b7891e3274b30e2eefd35693e6a0bcc8345.svg new file mode 100644 index 000000000..beb144907 --- /dev/null +++ b/_images/inheritance-71b90b7891e3274b30e2eefd35693e6a0bcc8345.svg @@ -0,0 +1,96 @@ + + + + + + +inheritanceda90ef410c + + +ModuloOperator + + +ModuloOperator + + + + + +OperatorToken + + +OperatorToken + + + + + +OperatorToken->ModuloOperator + + + + + +SpecificVHDLToken + + +SpecificVHDLToken + + + + + +SpecificVHDLToken->OperatorToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->SpecificVHDLToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-71db264b6de9e95e5c9a0110128b27c1a994f968.svg b/_images/inheritance-71db264b6de9e95e5c9a0110128b27c1a994f968.svg new file mode 100644 index 000000000..07773486b --- /dev/null +++ b/_images/inheritance-71db264b6de9e95e5c9a0110128b27c1a994f968.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance6e8561387a + + +Block + + +Block + + + + + +NameBlock + + +NameBlock + + + + + +Block->NameBlock + + + + + diff --git a/_images/inheritance-71f46bf2597779161fb43d3162fc11273000047d.svg b/_images/inheritance-71f46bf2597779161fb43d3162fc11273000047d.svg new file mode 100644 index 000000000..a82644558 --- /dev/null +++ b/_images/inheritance-71f46bf2597779161fb43d3162fc11273000047d.svg @@ -0,0 +1,51 @@ + + + + + + +inheritance02546fc3a3 + + +Block + + +Block + + + + + +FinalBlock + + +FinalBlock + + + + + +Block->FinalBlock + + + + + +PortMapEndBlock + + +PortMapEndBlock + + + + + +FinalBlock->PortMapEndBlock + + + + + diff --git a/_images/inheritance-721a5f6b18d80af5e76660875832702343bdbe4e.svg b/_images/inheritance-721a5f6b18d80af5e76660875832702343bdbe4e.svg new file mode 100644 index 000000000..cca703802 --- /dev/null +++ b/_images/inheritance-721a5f6b18d80af5e76660875832702343bdbe4e.svg @@ -0,0 +1,21 @@ + + + + + + +inheritancef2b5fbad6d + + +Event + + +Event + + + + + diff --git a/_images/inheritance-727aee5ba6134052ae9837e1dba91d637924d49d.svg b/_images/inheritance-727aee5ba6134052ae9837e1dba91d637924d49d.svg new file mode 100644 index 000000000..4b9344f9b --- /dev/null +++ b/_images/inheritance-727aee5ba6134052ae9837e1dba91d637924d49d.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance56754f4217 + + +Block + + +Block + + + + + +ElsIfBeginBlock + + +ElsIfBeginBlock + + + + + +Block->ElsIfBeginBlock + + + + + diff --git a/_images/inheritance-72b4b8178fdbb2115c184daff638c6f67167c0f0.svg b/_images/inheritance-72b4b8178fdbb2115c184daff638c6f67167c0f0.svg new file mode 100644 index 000000000..13a331bf0 --- /dev/null +++ b/_images/inheritance-72b4b8178fdbb2115c184daff638c6f67167c0f0.svg @@ -0,0 +1,51 @@ + + + + + + +inheritance960d6feb94 + + +Block + + +Block + + + + + +SkipableBlock + + +SkipableBlock + + + + + +Block->SkipableBlock + + + + + +DelimiterBlock + + +DelimiterBlock + + + + + +SkipableBlock->DelimiterBlock + + + + + diff --git a/_images/inheritance-74012758af7316f716b6dcd17f95324549a204e1.svg b/_images/inheritance-74012758af7316f716b6dcd17f95324549a204e1.svg new file mode 100644 index 000000000..261c6be9f --- /dev/null +++ b/_images/inheritance-74012758af7316f716b6dcd17f95324549a204e1.svg @@ -0,0 +1,96 @@ + + + + + + +inheritance8fb946371b + + +DivideOperator + + +DivideOperator + + + + + +OperatorToken + + +OperatorToken + + + + + +OperatorToken->DivideOperator + + + + + +SpecificVHDLToken + + +SpecificVHDLToken + + + + + +SpecificVHDLToken->OperatorToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->SpecificVHDLToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-7523eea04823c7bae6ce9c3ea3f9821bb78828a6.svg b/_images/inheritance-7523eea04823c7bae6ce9c3ea3f9821bb78828a6.svg new file mode 100644 index 000000000..698cfb416 --- /dev/null +++ b/_images/inheritance-7523eea04823c7bae6ce9c3ea3f9821bb78828a6.svg @@ -0,0 +1,111 @@ + + + + + + +inheritance0c9c0c4830 + + +AndOperator + + +AndOperator + + + + + +LogicalOperator + + +LogicalOperator + + + + + +LogicalOperator->AndOperator + + + + + +KeywordToken + + +KeywordToken + + + + + +Operator + + +Operator + + + + + +KeywordToken->Operator + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Operator->LogicalOperator + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-75bad9607beefc001296a9962afd4e149a61aa71.svg b/_images/inheritance-75bad9607beefc001296a9962afd4e149a61aa71.svg new file mode 100644 index 000000000..25293a020 --- /dev/null +++ b/_images/inheritance-75bad9607beefc001296a9962afd4e149a61aa71.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance052464cff7 + + +Block + + +Block + + + + + +ElsIfConditionBlock + + +ElsIfConditionBlock + + + + + +Block->ElsIfConditionBlock + + + + + diff --git a/_images/inheritance-772b7fb9f05a69ff38a6c73b492b163b1db7f7f4.svg b/_images/inheritance-772b7fb9f05a69ff38a6c73b492b163b1db7f7f4.svg new file mode 100644 index 000000000..c92c5d02d --- /dev/null +++ b/_images/inheritance-772b7fb9f05a69ff38a6c73b492b163b1db7f7f4.svg @@ -0,0 +1,66 @@ + + + + + + +inheritance017e55133e + + +Block + + +Block + + + + + +ExpressionBlock + + +ExpressionBlock + + + + + +Block->ExpressionBlock + + + + + +ExitConditionBlock + + +ExitConditionBlock + + + + + +ExpressionBlockEndedBySemicolon + + +ExpressionBlockEndedBySemicolon + + + + + +ExpressionBlockEndedBySemicolon->ExitConditionBlock + + + + + +ExpressionBlock->ExpressionBlockEndedBySemicolon + + + + + diff --git a/_images/inheritance-774238551b787ef23558a8ca15262ec953d8b77d.svg b/_images/inheritance-774238551b787ef23558a8ca15262ec953d8b77d.svg new file mode 100644 index 000000000..16b6e3992 --- /dev/null +++ b/_images/inheritance-774238551b787ef23558a8ca15262ec953d8b77d.svg @@ -0,0 +1,81 @@ + + + + + + +inheritancea472334d82 + + +KeywordToken + + +KeywordToken + + + + + +RecordKeyword + + +RecordKeyword + + + + + +KeywordToken->RecordKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-7840dd8a67ebaa46e4b06c6147c0a5578c37dbcb.svg b/_images/inheritance-7840dd8a67ebaa46e4b06c6147c0a5578c37dbcb.svg new file mode 100644 index 000000000..26264e5bb --- /dev/null +++ b/_images/inheritance-7840dd8a67ebaa46e4b06c6147c0a5578c37dbcb.svg @@ -0,0 +1,36 @@ + + + + + + +inheritancea0d15f82d1 + + +AttributeSpecificationBlock + + +AttributeSpecificationBlock + + + + + +Block + + +Block + + + + + +Block->AttributeSpecificationBlock + + + + + diff --git a/_images/inheritance-786008350b3072e2718ab1ca5905b8036d5ec8de.svg b/_images/inheritance-786008350b3072e2718ab1ca5905b8036d5ec8de.svg new file mode 100644 index 000000000..445f2ff99 --- /dev/null +++ b/_images/inheritance-786008350b3072e2718ab1ca5905b8036d5ec8de.svg @@ -0,0 +1,51 @@ + + + + + + +inheritance4e0e4303f5 + + +Block + + +Block + + + + + +FinalBlock + + +FinalBlock + + + + + +Block->FinalBlock + + + + + +EndBlock + + +EndBlock + + + + + +FinalBlock->EndBlock + + + + + diff --git a/_images/inheritance-78e451f5489a5cbfabf1ce997363f19aed799a7d.svg b/_images/inheritance-78e451f5489a5cbfabf1ce997363f19aed799a7d.svg new file mode 100644 index 000000000..2ee6738e8 --- /dev/null +++ b/_images/inheritance-78e451f5489a5cbfabf1ce997363f19aed799a7d.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance6188032a53 + + +Driver + + +Driver + + + + + +Source + + +Source + + + + + +Source->Driver + + + + + diff --git a/_images/inheritance-78fe6a74550afd87a4a00fe6da5f8cba089ff74d.svg b/_images/inheritance-78fe6a74550afd87a4a00fe6da5f8cba089ff74d.svg new file mode 100644 index 000000000..6d0516208 --- /dev/null +++ b/_images/inheritance-78fe6a74550afd87a4a00fe6da5f8cba089ff74d.svg @@ -0,0 +1,36 @@ + + + + + + +inheritancebca963e155 + + +Block + + +Block + + + + + +CloseBlock + + +CloseBlock + + + + + +Block->CloseBlock + + + + + diff --git a/_images/inheritance-79875ec926087d8a30df1d5c0aec286db6c8de54.svg b/_images/inheritance-79875ec926087d8a30df1d5c0aec286db6c8de54.svg new file mode 100644 index 000000000..42b2c0918 --- /dev/null +++ b/_images/inheritance-79875ec926087d8a30df1d5c0aec286db6c8de54.svg @@ -0,0 +1,51 @@ + + + + + + +inheritance4b83cee2d1 + + +Block + + +Block + + + + + +SkipableBlock + + +SkipableBlock + + + + + +Block->SkipableBlock + + + + + +GenericMapDelimiterBlock + + +GenericMapDelimiterBlock + + + + + +SkipableBlock->GenericMapDelimiterBlock + + + + + diff --git a/_images/inheritance-79fa3719d78174f8445206c6585b58f3b169a1ad.svg b/_images/inheritance-79fa3719d78174f8445206c6585b58f3b169a1ad.svg new file mode 100644 index 000000000..ec959149f --- /dev/null +++ b/_images/inheritance-79fa3719d78174f8445206c6585b58f3b169a1ad.svg @@ -0,0 +1,66 @@ + + + + + + +inheritance7056a11bd0 + + +ArrowBlock + + +ArrowBlock + + + + + +SequentialBeginBlock + + +SequentialBeginBlock + + + + + +SequentialBeginBlock->ArrowBlock + + + + + +BeginBlock + + +BeginBlock + + + + + +BeginBlock->SequentialBeginBlock + + + + + +Block + + +Block + + + + + +Block->BeginBlock + + + + + diff --git a/_images/inheritance-7a229f875f7a91def62378dc84fd10336c1b3e6e.svg b/_images/inheritance-7a229f875f7a91def62378dc84fd10336c1b3e6e.svg new file mode 100644 index 000000000..aadb80f6c --- /dev/null +++ b/_images/inheritance-7a229f875f7a91def62378dc84fd10336c1b3e6e.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance7bf801dd88 + + +Block + + +Block + + + + + +ItemBlock + + +ItemBlock + + + + + +Block->ItemBlock + + + + + diff --git a/_images/inheritance-7ada6a2258e469bde88c9d5bf79e4614438066cc.svg b/_images/inheritance-7ada6a2258e469bde88c9d5bf79e4614438066cc.svg new file mode 100644 index 000000000..7f2eb7d2e --- /dev/null +++ b/_images/inheritance-7ada6a2258e469bde88c9d5bf79e4614438066cc.svg @@ -0,0 +1,66 @@ + + + + + + +inheritance37cfd0596c + + +Block + + +Block + + + + + +EndOfStatementBlock + + +EndOfStatementBlock + + + + + +Block->EndOfStatementBlock + + + + + +ObjectDeclarationEndMarkerBlock + + +ObjectDeclarationEndMarkerBlock + + + + + +EndOfStatementBlock->ObjectDeclarationEndMarkerBlock + + + + + +SignalDeclarationEndMarkerBlock + + +SignalDeclarationEndMarkerBlock + + + + + +ObjectDeclarationEndMarkerBlock->SignalDeclarationEndMarkerBlock + + + + + diff --git a/_images/inheritance-7b7389c28fd9c5f144843d57bfdd10c12624d7a0.svg b/_images/inheritance-7b7389c28fd9c5f144843d57bfdd10c12624d7a0.svg new file mode 100644 index 000000000..c570c31f1 --- /dev/null +++ b/_images/inheritance-7b7389c28fd9c5f144843d57bfdd10c12624d7a0.svg @@ -0,0 +1,36 @@ + + + + + + +inheritanceb8df103dfc + + +Block + + +Block + + + + + +VoidBlock + + +VoidBlock + + + + + +Block->VoidBlock + + + + + diff --git a/_images/inheritance-7c7d628d2ae85bdcbf473f72c63c3527c475e418.svg b/_images/inheritance-7c7d628d2ae85bdcbf473f72c63c3527c475e418.svg new file mode 100644 index 000000000..0d7d922c6 --- /dev/null +++ b/_images/inheritance-7c7d628d2ae85bdcbf473f72c63c3527c475e418.svg @@ -0,0 +1,72 @@ + + + + + + +inheritance6ecc41ac36 + + +Block + + +Block + + + + + +FinalBlock + + +FinalBlock + + + + + +Block->FinalBlock + + + + + +EndBlock + + +EndBlock + + + + + +EndGenerateBlock + + +EndGenerateBlock + + + + + +EndBlock->EndGenerateBlock + + + + + +FinalBlock->EndBlock + + + + + +EndGenerateBlock->EndGenerateBlock + + + + + diff --git a/_images/inheritance-7cd8f7e5563c4eb6b7ad74c773e0cba6ceeffd0f.svg b/_images/inheritance-7cd8f7e5563c4eb6b7ad74c773e0cba6ceeffd0f.svg new file mode 100644 index 000000000..844450822 --- /dev/null +++ b/_images/inheritance-7cd8f7e5563c4eb6b7ad74c773e0cba6ceeffd0f.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance78a8c7e413 + + +Block + + +Block + + + + + +StartOfBlock + + +StartOfBlock + + + + + +Block->StartOfBlock + + + + + +StartOf + + +StartOf + + + + + +StartOfDocument + + +StartOfDocument + + + + + +StartOf->StartOfDocument + + + + + +StartOfDocumentBlock + + +StartOfDocumentBlock + + + + + +StartOfBlock->StartOfDocumentBlock + + + + + +StartOfDocument->StartOfDocumentBlock + + + + + diff --git a/_images/inheritance-7f8e1d9999db0f3aa05c95ffad343c67a93d6d18.svg b/_images/inheritance-7f8e1d9999db0f3aa05c95ffad343c67a93d6d18.svg new file mode 100644 index 000000000..ab43e58a0 --- /dev/null +++ b/_images/inheritance-7f8e1d9999db0f3aa05c95ffad343c67a93d6d18.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance7b36a21e77 + + +KeywordToken + + +KeywordToken + + + + + +RegisterKeyword + + +RegisterKeyword + + + + + +KeywordToken->RegisterKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-800de5f75514722e806f3ee3a637eb457508a356.svg b/_images/inheritance-800de5f75514722e806f3ee3a637eb457508a356.svg new file mode 100644 index 000000000..b18a403cf --- /dev/null +++ b/_images/inheritance-800de5f75514722e806f3ee3a637eb457508a356.svg @@ -0,0 +1,36 @@ + + + + + + +inheritanced7e898df5e + + +Block + + +Block + + + + + +ElseGenerateBlock + + +ElseGenerateBlock + + + + + +Block->ElseGenerateBlock + + + + + diff --git a/_images/inheritance-8032e5b06e2736838f76bf5a8b2e0762a3e16644.svg b/_images/inheritance-8032e5b06e2736838f76bf5a8b2e0762a3e16644.svg new file mode 100644 index 000000000..a506cccb6 --- /dev/null +++ b/_images/inheritance-8032e5b06e2736838f76bf5a8b2e0762a3e16644.svg @@ -0,0 +1,21 @@ + + + + + + +inheritanceb66c0c19c1 + + +PackageBody + + +PackageBody + + + + + diff --git a/_images/inheritance-808118fd2b16121d9f04d2edf31dea22d1cd9a64.svg b/_images/inheritance-808118fd2b16121d9f04d2edf31dea22d1cd9a64.svg new file mode 100644 index 000000000..db59aa6a3 --- /dev/null +++ b/_images/inheritance-808118fd2b16121d9f04d2edf31dea22d1cd9a64.svg @@ -0,0 +1,66 @@ + + + + + + +inheritanceb5f5c15d27 + + +Block + + +Block + + + + + +SkipableBlock + + +SkipableBlock + + + + + +Block->SkipableBlock + + + + + +IndentationBlock + + +IndentationBlock + + + + + +WhitespaceBlock + + +WhitespaceBlock + + + + + +WhitespaceBlock->IndentationBlock + + + + + +SkipableBlock->WhitespaceBlock + + + + + diff --git a/_images/inheritance-80f78c4003572c9d2b3ec0646c337e5b369c357e.svg b/_images/inheritance-80f78c4003572c9d2b3ec0646c337e5b369c357e.svg new file mode 100644 index 000000000..20005dfed --- /dev/null +++ b/_images/inheritance-80f78c4003572c9d2b3ec0646c337e5b369c357e.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance100b38c428 + + +KeywordToken + + +KeywordToken + + + + + +VariableKeyword + + +VariableKeyword + + + + + +KeywordToken->VariableKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-80f97a705811765f3af81657e584ff9aae493b0d.svg b/_images/inheritance-80f97a705811765f3af81657e584ff9aae493b0d.svg new file mode 100644 index 000000000..93adc8ee6 --- /dev/null +++ b/_images/inheritance-80f97a705811765f3af81657e584ff9aae493b0d.svg @@ -0,0 +1,81 @@ + + + + + + +inheritancee392014f75 + + +KeywordToken + + +KeywordToken + + + + + +OutKeyword + + +OutKeyword + + + + + +KeywordToken->OutKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-81985709d2c8debcab5a285c1241e38966c6df67.svg b/_images/inheritance-81985709d2c8debcab5a285c1241e38966c6df67.svg new file mode 100644 index 000000000..cb9c7f932 --- /dev/null +++ b/_images/inheritance-81985709d2c8debcab5a285c1241e38966c6df67.svg @@ -0,0 +1,81 @@ + + + + + + +inheritancebd4cc23e48 + + +GuardedKeyword + + +GuardedKeyword + + + + + +KeywordToken + + +KeywordToken + + + + + +KeywordToken->GuardedKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-81c6a2ada9580fee0f6799f7d70a22e968a40cf7.svg b/_images/inheritance-81c6a2ada9580fee0f6799f7d70a22e968a40cf7.svg new file mode 100644 index 000000000..a2cdc9cd8 --- /dev/null +++ b/_images/inheritance-81c6a2ada9580fee0f6799f7d70a22e968a40cf7.svg @@ -0,0 +1,111 @@ + + + + + + +inheritance9f8df8056d + + +OperatorToken + + +OperatorToken + + + + + +RelationalOperator + + +RelationalOperator + + + + + +OperatorToken->RelationalOperator + + + + + +SpecificVHDLToken + + +SpecificVHDLToken + + + + + +SpecificVHDLToken->OperatorToken + + + + + +UnequalOperator + + +UnequalOperator + + + + + +RelationalOperator->UnequalOperator + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->SpecificVHDLToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-8248a346b40756f017c2f43c7494ed884477ba19.svg b/_images/inheritance-8248a346b40756f017c2f43c7494ed884477ba19.svg new file mode 100644 index 000000000..6961690de --- /dev/null +++ b/_images/inheritance-8248a346b40756f017c2f43c7494ed884477ba19.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance4524087ba9 + + +ElseBranchGroup + + +ElseBranchGroup + + + + + +Group + + +Group + + + + + +Group->ElseBranchGroup + + + + + diff --git a/_images/inheritance-8289ca2dfc88eac80ed26022db1fdf4f37a13859.svg b/_images/inheritance-8289ca2dfc88eac80ed26022db1fdf4f37a13859.svg new file mode 100644 index 000000000..f32a82ae7 --- /dev/null +++ b/_images/inheritance-8289ca2dfc88eac80ed26022db1fdf4f37a13859.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance2311729be2 + + +Group + + +Group + + + + + +ParameterMapItemGroup + + +ParameterMapItemGroup + + + + + +Group->ParameterMapItemGroup + + + + + diff --git a/_images/inheritance-82fe570f9526f2c940afa91d041db43017bfc29f.svg b/_images/inheritance-82fe570f9526f2c940afa91d041db43017bfc29f.svg new file mode 100644 index 000000000..b3fb51796 --- /dev/null +++ b/_images/inheritance-82fe570f9526f2c940afa91d041db43017bfc29f.svg @@ -0,0 +1,81 @@ + + + + + + +inheritanceeb7b30b6c8 + + +LabelToken + + +LabelToken + + + + + +SpecificVHDLToken + + +SpecificVHDLToken + + + + + +SpecificVHDLToken->LabelToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->SpecificVHDLToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-839f2c2fbe4005b5be3841e20bd108e3e84c3971.svg b/_images/inheritance-839f2c2fbe4005b5be3841e20bd108e3e84c3971.svg new file mode 100644 index 000000000..da49cf007 --- /dev/null +++ b/_images/inheritance-839f2c2fbe4005b5be3841e20bd108e3e84c3971.svg @@ -0,0 +1,66 @@ + + + + + + +inheritance31292dc4d1 + + +KeywordToken + + +KeywordToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-83bcc5823ed9c4639f92728c95f2a8b54b6d9f46.svg b/_images/inheritance-83bcc5823ed9c4639f92728c95f2a8b54b6d9f46.svg new file mode 100644 index 000000000..5b5111dd8 --- /dev/null +++ b/_images/inheritance-83bcc5823ed9c4639f92728c95f2a8b54b6d9f46.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance736b1fc086 + + +EndOf + + +EndOf + + + + + +EndOfDocument + + +EndOfDocument + + + + + +EndOf->EndOfDocument + + + + + +EndOfDocumentGroup + + +EndOfDocumentGroup + + + + + +EndOfDocument->EndOfDocumentGroup + + + + + +EndOfGroup + + +EndOfGroup + + + + + +EndOfGroup->EndOfDocumentGroup + + + + + +Group + + +Group + + + + + +Group->EndOfGroup + + + + + diff --git a/_images/inheritance-842751eddbf6a807966f85f96aae01ef36907d4e.svg b/_images/inheritance-842751eddbf6a807966f85f96aae01ef36907d4e.svg new file mode 100644 index 000000000..577aceee6 --- /dev/null +++ b/_images/inheritance-842751eddbf6a807966f85f96aae01ef36907d4e.svg @@ -0,0 +1,81 @@ + + + + + + +inheritanced03a9892fd + + +DisconnectKeyword + + +DisconnectKeyword + + + + + +KeywordToken + + +KeywordToken + + + + + +KeywordToken->DisconnectKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-842af85875713c8e39558df974719a6fec550115.svg b/_images/inheritance-842af85875713c8e39558df974719a6fec550115.svg new file mode 100644 index 000000000..1e1c4c4c6 --- /dev/null +++ b/_images/inheritance-842af85875713c8e39558df974719a6fec550115.svg @@ -0,0 +1,36 @@ + + + + + + +inheritancecb1575166e + + +Group + + +Group + + + + + +PortListItemGroup + + +PortListItemGroup + + + + + +Group->PortListItemGroup + + + + + diff --git a/_images/inheritance-8436b575ec0e2a61b3e33b5e9afb30f1b87fdb9d.svg b/_images/inheritance-8436b575ec0e2a61b3e33b5e9afb30f1b87fdb9d.svg new file mode 100644 index 000000000..d8f7a8da3 --- /dev/null +++ b/_images/inheritance-8436b575ec0e2a61b3e33b5e9afb30f1b87fdb9d.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance9fafa9812e + + +CommentKeyword + + +CommentKeyword + + + + + +MultiCharKeyword + + +MultiCharKeyword + + + + + +MultiCharKeyword->CommentKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->MultiCharKeyword + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-8440b15871e5da01f09d7709430083b1589b5491.svg b/_images/inheritance-8440b15871e5da01f09d7709430083b1589b5491.svg new file mode 100644 index 000000000..70b0e5d85 --- /dev/null +++ b/_images/inheritance-8440b15871e5da01f09d7709430083b1589b5491.svg @@ -0,0 +1,36 @@ + + + + + + +inheritancec111dbb1b2 + + +ExtendedType + + +ExtendedType + + + + + +MetaBlock + + +MetaBlock + + + + + +ExtendedType->MetaBlock + + + + + diff --git a/_images/inheritance-8448f53518dc77034540bc19a64a56cec1c4d4d6.svg b/_images/inheritance-8448f53518dc77034540bc19a64a56cec1c4d4d6.svg new file mode 100644 index 000000000..e51016d0a --- /dev/null +++ b/_images/inheritance-8448f53518dc77034540bc19a64a56cec1c4d4d6.svg @@ -0,0 +1,51 @@ + + + + + + +inheritance5f46d4c230 + + +Block + + +Block + + + + + +InterfaceTypeBlock + + +InterfaceTypeBlock + + + + + +Block->InterfaceTypeBlock + + + + + +GenericListInterfaceTypeBlock + + +GenericListInterfaceTypeBlock + + + + + +InterfaceTypeBlock->GenericListInterfaceTypeBlock + + + + + diff --git a/_images/inheritance-847fdd3d2efe6e93baeeaf428b030e8d5c0e727c.svg b/_images/inheritance-847fdd3d2efe6e93baeeaf428b030e8d5c0e727c.svg new file mode 100644 index 000000000..da7ed4159 --- /dev/null +++ b/_images/inheritance-847fdd3d2efe6e93baeeaf428b030e8d5c0e727c.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance50e4479ccb + + +ConstantKeyword + + +ConstantKeyword + + + + + +KeywordToken + + +KeywordToken + + + + + +KeywordToken->ConstantKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-851f0fe8ea611e4bbcf9f29e3efc7f888788c592.svg b/_images/inheritance-851f0fe8ea611e4bbcf9f29e3efc7f888788c592.svg new file mode 100644 index 000000000..eeca2d18c --- /dev/null +++ b/_images/inheritance-851f0fe8ea611e4bbcf9f29e3efc7f888788c592.svg @@ -0,0 +1,51 @@ + + + + + + +inheritance4b83cee2d1 + + +Block + + +Block + + + + + +SkipableBlock + + +SkipableBlock + + + + + +Block->SkipableBlock + + + + + +GenericMapDelimiterBlock + + +GenericMapDelimiterBlock + + + + + +SkipableBlock->GenericMapDelimiterBlock + + + + + diff --git a/_images/inheritance-85765ce00e7bb93e91748b65eef351a1da65d9b5.svg b/_images/inheritance-85765ce00e7bb93e91748b65eef351a1da65d9b5.svg new file mode 100644 index 000000000..f3a6e1c33 --- /dev/null +++ b/_images/inheritance-85765ce00e7bb93e91748b65eef351a1da65d9b5.svg @@ -0,0 +1,51 @@ + + + + + + +inheritance4e0e4303f5 + + +Block + + +Block + + + + + +FinalBlock + + +FinalBlock + + + + + +Block->FinalBlock + + + + + +EndBlock + + +EndBlock + + + + + +FinalBlock->EndBlock + + + + + diff --git a/_images/inheritance-85a0e3d30317383e1d84f07c792f838d6dbbc5fc.svg b/_images/inheritance-85a0e3d30317383e1d84f07c792f838d6dbbc5fc.svg new file mode 100644 index 000000000..80dfc942b --- /dev/null +++ b/_images/inheritance-85a0e3d30317383e1d84f07c792f838d6dbbc5fc.svg @@ -0,0 +1,51 @@ + + + + + + +inheritanced6b90e9167 + + +Block + + +Block + + + + + +SkipableBlock + + +SkipableBlock + + + + + +Block->SkipableBlock + + + + + +PortMapDelimiterBlock + + +PortMapDelimiterBlock + + + + + +SkipableBlock->PortMapDelimiterBlock + + + + + diff --git a/_images/inheritance-85ddc5c2439f1de690bfaa52dca18c426670d00b.svg b/_images/inheritance-85ddc5c2439f1de690bfaa52dca18c426670d00b.svg new file mode 100644 index 000000000..a27518d7f --- /dev/null +++ b/_images/inheritance-85ddc5c2439f1de690bfaa52dca18c426670d00b.svg @@ -0,0 +1,51 @@ + + + + + + +inheritance4e0e4303f5 + + +Block + + +Block + + + + + +EndOfStatementBlock + + +EndOfStatementBlock + + + + + +Block->EndOfStatementBlock + + + + + +EndBlock + + +EndBlock + + + + + +EndOfStatementBlock->EndBlock + + + + + diff --git a/_images/inheritance-86f8830ac3e6e0f160b86418262d06a71cdf295a.svg b/_images/inheritance-86f8830ac3e6e0f160b86418262d06a71cdf295a.svg new file mode 100644 index 000000000..ca1511349 --- /dev/null +++ b/_images/inheritance-86f8830ac3e6e0f160b86418262d06a71cdf295a.svg @@ -0,0 +1,111 @@ + + + + + + +inheritance8d488085d2 + + +CommentKeyword + + +CommentKeyword + + + + + +MultiLineCommentKeyword + + +MultiLineCommentKeyword + + + + + +CommentKeyword->MultiLineCommentKeyword + + + + + +MultiCharKeyword + + +MultiCharKeyword + + + + + +MultiCharKeyword->CommentKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->MultiCharKeyword + + + + + +MultiLineCommentStartKeyword + + +MultiLineCommentStartKeyword + + + + + +MultiLineCommentKeyword->MultiLineCommentStartKeyword + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-8706ca02069419fcb652eb5fb9857afb67c2e2fb.svg b/_images/inheritance-8706ca02069419fcb652eb5fb9857afb67c2e2fb.svg new file mode 100644 index 000000000..ec5bd529e --- /dev/null +++ b/_images/inheritance-8706ca02069419fcb652eb5fb9857afb67c2e2fb.svg @@ -0,0 +1,81 @@ + + + + + + +inheritancebebf44ece9 + + +KeywordToken + + +KeywordToken + + + + + +LinkageKeyword + + +LinkageKeyword + + + + + +KeywordToken->LinkageKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-882894fd7a7c191e8332a2ec6fc197a177f94748.svg b/_images/inheritance-882894fd7a7c191e8332a2ec6fc197a177f94748.svg new file mode 100644 index 000000000..5229e3b3b --- /dev/null +++ b/_images/inheritance-882894fd7a7c191e8332a2ec6fc197a177f94748.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance746e886cd7 + + +KeywordToken + + +KeywordToken + + + + + +OnKeyword + + +OnKeyword + + + + + +KeywordToken->OnKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-89664980cc1313e96201f9197f5664717e42c6ee.svg b/_images/inheritance-89664980cc1313e96201f9197f5664717e42c6ee.svg new file mode 100644 index 000000000..27a31afb4 --- /dev/null +++ b/_images/inheritance-89664980cc1313e96201f9197f5664717e42c6ee.svg @@ -0,0 +1,66 @@ + + + + + + +inheritance6ecc41ac36 + + +Block + + +Block + + + + + +FinalBlock + + +FinalBlock + + + + + +Block->FinalBlock + + + + + +EndBlock + + +EndBlock + + + + + +EndGenerateBlock + + +EndGenerateBlock + + + + + +EndBlock->EndGenerateBlock + + + + + +FinalBlock->EndBlock + + + + + diff --git a/_images/inheritance-89b5782bd2413538a8abb418e51a65f7f06162bf.svg b/_images/inheritance-89b5782bd2413538a8abb418e51a65f7f06162bf.svg new file mode 100644 index 000000000..1f9aa47ed --- /dev/null +++ b/_images/inheritance-89b5782bd2413538a8abb418e51a65f7f06162bf.svg @@ -0,0 +1,45 @@ + + + + + + +inheritance6efff4dd1b + + +ExceptionBase + +ExceptionBase + + + +ParserException + +ParserException + + + +ExceptionBase->ParserException + + + + + +GroupParserException + + +GroupParserException + + + + + +ParserException->GroupParserException + + + + + diff --git a/_images/inheritance-89df2eb3a79f789c0065445dc0e10bf0aaf243d2.svg b/_images/inheritance-89df2eb3a79f789c0065445dc0e10bf0aaf243d2.svg new file mode 100644 index 000000000..93115d89d --- /dev/null +++ b/_images/inheritance-89df2eb3a79f789c0065445dc0e10bf0aaf243d2.svg @@ -0,0 +1,111 @@ + + + + + + +inheritanceaa21bfb9dd + + +KeywordToken + + +KeywordToken + + + + + +Operator + + +Operator + + + + + +KeywordToken->Operator + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +ShiftOperator + + +ShiftOperator + + + + + +Operator->ShiftOperator + + + + + +SlaOperator + + +SlaOperator + + + + + +ShiftOperator->SlaOperator + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-8a2c9e3f39e222e5580793cfc3453a40ccc681a2.svg b/_images/inheritance-8a2c9e3f39e222e5580793cfc3453a40ccc681a2.svg new file mode 100644 index 000000000..7dfb5dda7 --- /dev/null +++ b/_images/inheritance-8a2c9e3f39e222e5580793cfc3453a40ccc681a2.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance8b7f5833ed + + +FunctionKeyword + + +FunctionKeyword + + + + + +KeywordToken + + +KeywordToken + + + + + +KeywordToken->FunctionKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-8b362719e184ec69464c73d6953141dedde050f5.svg b/_images/inheritance-8b362719e184ec69464c73d6953141dedde050f5.svg new file mode 100644 index 000000000..02843a682 --- /dev/null +++ b/_images/inheritance-8b362719e184ec69464c73d6953141dedde050f5.svg @@ -0,0 +1,21 @@ + + + + + + +inheritance2fd71ae9d5 + + +Process + + +Process + + + + + diff --git a/_images/inheritance-8b646c4909549479b9072e92ca28ad0daa48b573.svg b/_images/inheritance-8b646c4909549479b9072e92ca28ad0daa48b573.svg new file mode 100644 index 000000000..71515842a --- /dev/null +++ b/_images/inheritance-8b646c4909549479b9072e92ca28ad0daa48b573.svg @@ -0,0 +1,36 @@ + + + + + + +inheritancee2e542aabe + + +Block + + +Block + + + + + +IfConditionBlock + + +IfConditionBlock + + + + + +Block->IfConditionBlock + + + + + diff --git a/_images/inheritance-8b881388a93103b8b4e6eaed006b8e28c125047d.svg b/_images/inheritance-8b881388a93103b8b4e6eaed006b8e28c125047d.svg new file mode 100644 index 000000000..6bf4d9d41 --- /dev/null +++ b/_images/inheritance-8b881388a93103b8b4e6eaed006b8e28c125047d.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance65c9b39af2 + + +Block + + +Block + + + + + +StartOfBlock + + +StartOfBlock + + + + + +Block->StartOfBlock + + + + + +StartOf + + +StartOf + + + + + +StartOfDocument + + +StartOfDocument + + + + + +StartOf->StartOfDocument + + + + + +StartOfDocumentBlock + + +StartOfDocumentBlock + + + + + +StartOfBlock->StartOfDocumentBlock + + + + + +StartOfDocument->StartOfDocumentBlock + + + + + diff --git a/_images/inheritance-8b95ef7a53df0ad03e8b14eee1e46b5dd83dfd56.svg b/_images/inheritance-8b95ef7a53df0ad03e8b14eee1e46b5dd83dfd56.svg new file mode 100644 index 000000000..f1af4ff21 --- /dev/null +++ b/_images/inheritance-8b95ef7a53df0ad03e8b14eee1e46b5dd83dfd56.svg @@ -0,0 +1,81 @@ + + + + + + +inheritancee77be6fd4c + + +ElsIfKeyword + + +ElsIfKeyword + + + + + +KeywordToken + + +KeywordToken + + + + + +KeywordToken->ElsIfKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-8d9b8595fed1b80e1e83ed45a1189b54ecc847f1.svg b/_images/inheritance-8d9b8595fed1b80e1e83ed45a1189b54ecc847f1.svg new file mode 100644 index 000000000..bd690a674 --- /dev/null +++ b/_images/inheritance-8d9b8595fed1b80e1e83ed45a1189b54ecc847f1.svg @@ -0,0 +1,36 @@ + + + + + + +inheritancef4ea0d6017 + + +Group + + +Group + + + + + +WhitespaceGroup + + +WhitespaceGroup + + + + + +Group->WhitespaceGroup + + + + + diff --git a/_images/inheritance-8df90bed1d7e9f74a537a8fa2e00dde5411820dc.svg b/_images/inheritance-8df90bed1d7e9f74a537a8fa2e00dde5411820dc.svg new file mode 100644 index 000000000..793ad3502 --- /dev/null +++ b/_images/inheritance-8df90bed1d7e9f74a537a8fa2e00dde5411820dc.svg @@ -0,0 +1,96 @@ + + + + + + +inheritance6a6652057f + + +AssignmentKeyword + + +AssignmentKeyword + + + + + +VariableAssignmentKeyword + + +VariableAssignmentKeyword + + + + + +AssignmentKeyword->VariableAssignmentKeyword + + + + + +MultiCharKeyword + + +MultiCharKeyword + + + + + +MultiCharKeyword->AssignmentKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->MultiCharKeyword + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-8e689172573d0dc260626b74ba51d013b6ebc898.svg b/_images/inheritance-8e689172573d0dc260626b74ba51d013b6ebc898.svg new file mode 100644 index 000000000..9233be362 --- /dev/null +++ b/_images/inheritance-8e689172573d0dc260626b74ba51d013b6ebc898.svg @@ -0,0 +1,51 @@ + + + + + + +inheritance02546fc3a3 + + +Block + + +Block + + + + + +FinalBlock + + +FinalBlock + + + + + +Block->FinalBlock + + + + + +PortMapEndBlock + + +PortMapEndBlock + + + + + +FinalBlock->PortMapEndBlock + + + + + diff --git a/_images/inheritance-8e866a1a4c5839ddbfb0b5594c14e408a7ba2899.svg b/_images/inheritance-8e866a1a4c5839ddbfb0b5594c14e408a7ba2899.svg new file mode 100644 index 000000000..006992f3c --- /dev/null +++ b/_images/inheritance-8e866a1a4c5839ddbfb0b5594c14e408a7ba2899.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance284af5704f + + +FunctionDeclaration + + +FunctionDeclaration + + + + + +SubProgramDeclaration + + +SubProgramDeclaration + + + + + +SubProgramDeclaration->FunctionDeclaration + + + + + diff --git a/_images/inheritance-8ea06dffbfd1b702a6761114bcc19ea56457d569.svg b/_images/inheritance-8ea06dffbfd1b702a6761114bcc19ea56457d569.svg new file mode 100644 index 000000000..547b03add --- /dev/null +++ b/_images/inheritance-8ea06dffbfd1b702a6761114bcc19ea56457d569.svg @@ -0,0 +1,111 @@ + + + + + + +inheritancebaeaa31d9b + + +MatchingLessThanOrEqualOperator + + +MatchingLessThanOrEqualOperator + + + + + +RelationalOperator + + +RelationalOperator + + + + + +RelationalOperator->MatchingLessThanOrEqualOperator + + + + + +OperatorToken + + +OperatorToken + + + + + +OperatorToken->RelationalOperator + + + + + +SpecificVHDLToken + + +SpecificVHDLToken + + + + + +SpecificVHDLToken->OperatorToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->SpecificVHDLToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-8ff3f4c962c335ff0ef4b09db5d5fe3c05235faa.svg b/_images/inheritance-8ff3f4c962c335ff0ef4b09db5d5fe3c05235faa.svg new file mode 100644 index 000000000..996cde9f3 --- /dev/null +++ b/_images/inheritance-8ff3f4c962c335ff0ef4b09db5d5fe3c05235faa.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance571400fa4b + + +Block + + +Block + + + + + +NextBlock + + +NextBlock + + + + + +Block->NextBlock + + + + + diff --git a/_images/inheritance-9005ffbe95d0e256714371b11c662b26f729de9c.svg b/_images/inheritance-9005ffbe95d0e256714371b11c662b26f729de9c.svg new file mode 100644 index 000000000..aaa2ec95a --- /dev/null +++ b/_images/inheritance-9005ffbe95d0e256714371b11c662b26f729de9c.svg @@ -0,0 +1,81 @@ + + + + + + +inheritancecedf3a01fb + + +KeywordToken + + +KeywordToken + + + + + +PostponedKeyword + + +PostponedKeyword + + + + + +KeywordToken->PostponedKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-91a40c44b08968ca8ed88dcb61f1bbaa6df309bc.svg b/_images/inheritance-91a40c44b08968ca8ed88dcb61f1bbaa6df309bc.svg new file mode 100644 index 000000000..23609494e --- /dev/null +++ b/_images/inheritance-91a40c44b08968ca8ed88dcb61f1bbaa6df309bc.svg @@ -0,0 +1,42 @@ + + + + + + +inheritancebca963e155 + + +Block + + +Block + + + + + +CloseBlock + + +CloseBlock + + + + + +Block->CloseBlock + + + + + +CloseBlock->CloseBlock + + + + + diff --git a/_images/inheritance-9244b14967fbdf1320683df70d75ab221ef52449.svg b/_images/inheritance-9244b14967fbdf1320683df70d75ab221ef52449.svg new file mode 100644 index 000000000..5c5347262 --- /dev/null +++ b/_images/inheritance-9244b14967fbdf1320683df70d75ab221ef52449.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance6b896ff808 + + +IsKeyword + + +IsKeyword + + + + + +KeywordToken + + +KeywordToken + + + + + +KeywordToken->IsKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-93681220d9d0c8b9238de3fda83ea5af5752bdde.svg b/_images/inheritance-93681220d9d0c8b9238de3fda83ea5af5752bdde.svg new file mode 100644 index 000000000..5d8880273 --- /dev/null +++ b/_images/inheritance-93681220d9d0c8b9238de3fda83ea5af5752bdde.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance6e8561387a + + +Block + + +Block + + + + + +NameBlock + + +NameBlock + + + + + +Block->NameBlock + + + + + diff --git a/_images/inheritance-9426c7cc14469700ab7a93abe5969ee6fc86f4bf.svg b/_images/inheritance-9426c7cc14469700ab7a93abe5969ee6fc86f4bf.svg new file mode 100644 index 000000000..1f201c845 --- /dev/null +++ b/_images/inheritance-9426c7cc14469700ab7a93abe5969ee6fc86f4bf.svg @@ -0,0 +1,51 @@ + + + + + + +inheritance2f64e99b11 + + +Block + + +Block + + + + + +FinalBlock + + +FinalBlock + + + + + +Block->FinalBlock + + + + + +GenericMapEndBlock + + +GenericMapEndBlock + + + + + +FinalBlock->GenericMapEndBlock + + + + + diff --git a/_images/inheritance-943335c2361203fec38a68f0e59230e74bc0dc94.svg b/_images/inheritance-943335c2361203fec38a68f0e59230e74bc0dc94.svg new file mode 100644 index 000000000..1913c2eae --- /dev/null +++ b/_images/inheritance-943335c2361203fec38a68f0e59230e74bc0dc94.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance8cfa59fbaf + + +BitStringLiteralToken + + +BitStringLiteralToken + + + + + +LiteralToken + + +LiteralToken + + + + + +LiteralToken->BitStringLiteralToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->LiteralToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-943fa57d486901029a207a229c3f257afc3b4265.svg b/_images/inheritance-943fa57d486901029a207a229c3f257afc3b4265.svg new file mode 100644 index 000000000..0b903acb1 --- /dev/null +++ b/_images/inheritance-943fa57d486901029a207a229c3f257afc3b4265.svg @@ -0,0 +1,36 @@ + + + + + + +inheritanced1a73894f1 + + +Group + + +Group + + + + + +StartOfGroup + + +StartOfGroup + + + + + +Group->StartOfGroup + + + + + diff --git a/_images/inheritance-944ce3c8ab30f1d461bfded9502b5ea5767976b9.svg b/_images/inheritance-944ce3c8ab30f1d461bfded9502b5ea5767976b9.svg new file mode 100644 index 000000000..a170cfcad --- /dev/null +++ b/_images/inheritance-944ce3c8ab30f1d461bfded9502b5ea5767976b9.svg @@ -0,0 +1,36 @@ + + + + + + +inheritancefa278c4b6a + + +ContextGroup + + +ContextGroup + + + + + +Group + + +Group + + + + + +Group->ContextGroup + + + + + diff --git a/_images/inheritance-9535c08ef3cc65ba859c3709bfcce9ab7859425e.svg b/_images/inheritance-9535c08ef3cc65ba859c3709bfcce9ab7859425e.svg new file mode 100644 index 000000000..afcc6d9e6 --- /dev/null +++ b/_images/inheritance-9535c08ef3cc65ba859c3709bfcce9ab7859425e.svg @@ -0,0 +1,81 @@ + + + + + + +inheritancee01224b1ab + + +KeywordToken + + +KeywordToken + + + + + +ViewKeyword + + +ViewKeyword + + + + + +KeywordToken->ViewKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-95bad477cd542a09ead50c524ff39d7991c9fe9c.svg b/_images/inheritance-95bad477cd542a09ead50c524ff39d7991c9fe9c.svg new file mode 100644 index 000000000..12322e444 --- /dev/null +++ b/_images/inheritance-95bad477cd542a09ead50c524ff39d7991c9fe9c.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance6e8561387a + + +Block + + +Block + + + + + +NameBlock + + +NameBlock + + + + + +Block->NameBlock + + + + + diff --git a/_images/inheritance-95e0675e5e519763ef53d0a877920b202484ae4d.svg b/_images/inheritance-95e0675e5e519763ef53d0a877920b202484ae4d.svg new file mode 100644 index 000000000..8b4c28c38 --- /dev/null +++ b/_images/inheritance-95e0675e5e519763ef53d0a877920b202484ae4d.svg @@ -0,0 +1,81 @@ + + + + + + +inheritancee51e0f3562 + + +KeywordToken + + +KeywordToken + + + + + +VunitKeyword + + +VunitKeyword + + + + + +KeywordToken->VunitKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-9637803ca05b1fb98781aff2898f6c2d2228e23c.svg b/_images/inheritance-9637803ca05b1fb98781aff2898f6c2d2228e23c.svg new file mode 100644 index 000000000..fa0041add --- /dev/null +++ b/_images/inheritance-9637803ca05b1fb98781aff2898f6c2d2228e23c.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance2541e36411 + + +ModelBase + + +ModelBase + + + + + +Wire + + +Wire + + + + + +ModelBase->Wire + + + + + diff --git a/_images/inheritance-96a9b6bebac31c74e23ed1fb84e3fd0997cf68b5.svg b/_images/inheritance-96a9b6bebac31c74e23ed1fb84e3fd0997cf68b5.svg new file mode 100644 index 000000000..6eda22d4a --- /dev/null +++ b/_images/inheritance-96a9b6bebac31c74e23ed1fb84e3fd0997cf68b5.svg @@ -0,0 +1,96 @@ + + + + + + +inheritanceaa54a5ee75 + + +BracketToken + + +BracketToken + + + + + +SquareBracketToken + + +SquareBracketToken + + + + + +BracketToken->SquareBracketToken + + + + + +SpecificVHDLToken + + +SpecificVHDLToken + + + + + +SpecificVHDLToken->BracketToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->SpecificVHDLToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-97e6c50dc8242f736cfc007d7c737ca8d57bc9c5.svg b/_images/inheritance-97e6c50dc8242f736cfc007d7c737ca8d57bc9c5.svg new file mode 100644 index 000000000..53175eddb --- /dev/null +++ b/_images/inheritance-97e6c50dc8242f736cfc007d7c737ca8d57bc9c5.svg @@ -0,0 +1,51 @@ + + + + + + +inheritance7218e09619 + + +CharacterToken + + +CharacterToken + + + + + +ValuedToken + + +ValuedToken + + + + + +ValuedToken->CharacterToken + + + + + +Token + + +Token + + + + + +Token->ValuedToken + + + + + diff --git a/_images/inheritance-97ed0a2463a6d0692345f98debb66a9c969f6738.svg b/_images/inheritance-97ed0a2463a6d0692345f98debb66a9c969f6738.svg new file mode 100644 index 000000000..c0ed51e1c --- /dev/null +++ b/_images/inheritance-97ed0a2463a6d0692345f98debb66a9c969f6738.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance1cb0464eb2 + + +Block + + +Block + + + + + +SkipableBlock + + +SkipableBlock + + + + + +Block->SkipableBlock + + + + + +EmptyLineBlock + + +EmptyLineBlock + + + + + +LinebreakBlock + + +LinebreakBlock + + + + + +LinebreakBlock->EmptyLineBlock + + + + + +WhitespaceBlock + + +WhitespaceBlock + + + + + +WhitespaceBlock->LinebreakBlock + + + + + +SkipableBlock->WhitespaceBlock + + + + + diff --git a/_images/inheritance-9830a5aa0bf6ae5a33250b7fd928f1461aba0e82.svg b/_images/inheritance-9830a5aa0bf6ae5a33250b7fd928f1461aba0e82.svg new file mode 100644 index 000000000..0268b5481 --- /dev/null +++ b/_images/inheritance-9830a5aa0bf6ae5a33250b7fd928f1461aba0e82.svg @@ -0,0 +1,21 @@ + + + + + + +inheritanceb7e6df09fc + + +TypeInstance + + +TypeInstance + + + + + diff --git a/_images/inheritance-988cb3f2d8aae75f4a00473f5bff98e0e144c602.svg b/_images/inheritance-988cb3f2d8aae75f4a00473f5bff98e0e144c602.svg new file mode 100644 index 000000000..1ccc90e76 --- /dev/null +++ b/_images/inheritance-988cb3f2d8aae75f4a00473f5bff98e0e144c602.svg @@ -0,0 +1,81 @@ + + + + + + +inheritanceec06cfea11 + + +KeywordToken + + +KeywordToken + + + + + +UseKeyword + + +UseKeyword + + + + + +KeywordToken->UseKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-98a71591f137ec12f2e067f6fce3352821306835.svg b/_images/inheritance-98a71591f137ec12f2e067f6fce3352821306835.svg new file mode 100644 index 000000000..1dda9d0cf --- /dev/null +++ b/_images/inheritance-98a71591f137ec12f2e067f6fce3352821306835.svg @@ -0,0 +1,111 @@ + + + + + + +inheritance0218c3db43 + + +BracketToken + + +BracketToken + + + + + +RoundBracketToken + + +RoundBracketToken + + + + + +BracketToken->RoundBracketToken + + + + + +SpecificVHDLToken + + +SpecificVHDLToken + + + + + +SpecificVHDLToken->BracketToken + + + + + +ClosingRoundBracketToken + + +ClosingRoundBracketToken + + + + + +RoundBracketToken->ClosingRoundBracketToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->SpecificVHDLToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-992ded7c51c07c36d82151c1009634ce33f20950.svg b/_images/inheritance-992ded7c51c07c36d82151c1009634ce33f20950.svg new file mode 100644 index 000000000..c83181050 --- /dev/null +++ b/_images/inheritance-992ded7c51c07c36d82151c1009634ce33f20950.svg @@ -0,0 +1,81 @@ + + + + + + +inheritancee88e0d8b03 + + +EndOf + + +EndOf + + + + + +EndOfDocument + + +EndOfDocument + + + + + +EndOf->EndOfDocument + + + + + +EndOfDocumentToken + + +EndOfDocumentToken + + + + + +EndOfDocument->EndOfDocumentToken + + + + + +EndOfToken + + +EndOfToken + + + + + +EndOfToken->EndOfDocumentToken + + + + + +Token + + +Token + + + + + +Token->EndOfToken + + + + + diff --git a/_images/inheritance-99393b6d0da7900d55526080a3b4756f0f4a7d0d.svg b/_images/inheritance-99393b6d0da7900d55526080a3b4756f0f4a7d0d.svg new file mode 100644 index 000000000..1a584a678 --- /dev/null +++ b/_images/inheritance-99393b6d0da7900d55526080a3b4756f0f4a7d0d.svg @@ -0,0 +1,66 @@ + + + + + + +inheritanceb432523d18 + + +Block + + +Block + + + + + +SkipableBlock + + +SkipableBlock + + + + + +Block->SkipableBlock + + + + + +CommentBlock + + +CommentBlock + + + + + +SingleLineCommentBlock + + +SingleLineCommentBlock + + + + + +CommentBlock->SingleLineCommentBlock + + + + + +SkipableBlock->CommentBlock + + + + + diff --git a/_images/inheritance-999db325aaee290d32504065fa578d51173d3ab3.svg b/_images/inheritance-999db325aaee290d32504065fa578d51173d3ab3.svg new file mode 100644 index 000000000..72022dd39 --- /dev/null +++ b/_images/inheritance-999db325aaee290d32504065fa578d51173d3ab3.svg @@ -0,0 +1,81 @@ + + + + + + +inheritancefba3b9b126 + + +IfKeyword + + +IfKeyword + + + + + +KeywordToken + + +KeywordToken + + + + + +KeywordToken->IfKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-99f25bbea062dc2f8fbdfa6e0203b8534d6e4d00.svg b/_images/inheritance-99f25bbea062dc2f8fbdfa6e0203b8534d6e4d00.svg new file mode 100644 index 000000000..a528bde2e --- /dev/null +++ b/_images/inheritance-99f25bbea062dc2f8fbdfa6e0203b8534d6e4d00.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance18d944ab6d + + +Block + + +Block + + + + + +SubtypeBlock + + +SubtypeBlock + + + + + +Block->SubtypeBlock + + + + + diff --git a/_images/inheritance-9a0e1fbf08e051d4e8a672c52556bdcd106eec10.svg b/_images/inheritance-9a0e1fbf08e051d4e8a672c52556bdcd106eec10.svg new file mode 100644 index 000000000..de9a84b1f --- /dev/null +++ b/_images/inheritance-9a0e1fbf08e051d4e8a672c52556bdcd106eec10.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance7bf801dd88 + + +Block + + +Block + + + + + +ItemBlock + + +ItemBlock + + + + + +Block->ItemBlock + + + + + diff --git a/_images/inheritance-9afbc199ef10e9b89e366d88d305ffcefb46f2d4.svg b/_images/inheritance-9afbc199ef10e9b89e366d88d305ffcefb46f2d4.svg new file mode 100644 index 000000000..e909451f7 --- /dev/null +++ b/_images/inheritance-9afbc199ef10e9b89e366d88d305ffcefb46f2d4.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance116f06fa3a + + +Block + + +Block + + + + + +OpenBlock + + +OpenBlock + + + + + +Block->OpenBlock + + + + + diff --git a/_images/inheritance-9bacda1126aa77aaf8c353e3b380093e74ad4a25.svg b/_images/inheritance-9bacda1126aa77aaf8c353e3b380093e74ad4a25.svg new file mode 100644 index 000000000..2b6757a27 --- /dev/null +++ b/_images/inheritance-9bacda1126aa77aaf8c353e3b380093e74ad4a25.svg @@ -0,0 +1,42 @@ + + + + + + +inheritanced9ef7a3b00 + + +DeclarativeRegion + + +DeclarativeRegion + + + + + +SequentialDeclarativeRegion + + +SequentialDeclarativeRegion + + + + + +DeclarativeRegion->SequentialDeclarativeRegion + + + + + +SequentialDeclarativeRegion->DeclarativeRegion + + + + + diff --git a/_images/inheritance-9c347cf7821457cd944cde1f5476c5d14a8f6bab.svg b/_images/inheritance-9c347cf7821457cd944cde1f5476c5d14a8f6bab.svg new file mode 100644 index 000000000..5606aef09 --- /dev/null +++ b/_images/inheritance-9c347cf7821457cd944cde1f5476c5d14a8f6bab.svg @@ -0,0 +1,21 @@ + + + + + + +inheritance023c088ff9 + + +TokenIterator + + +TokenIterator + + + + + diff --git a/_images/inheritance-9c61b4a911644b90bbe16ee070ced69dd72cf918.svg b/_images/inheritance-9c61b4a911644b90bbe16ee070ced69dd72cf918.svg new file mode 100644 index 000000000..db9bd9f4f --- /dev/null +++ b/_images/inheritance-9c61b4a911644b90bbe16ee070ced69dd72cf918.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance9a9b234b73 + + +Block + + +Block + + + + + +StartBlock + + +StartBlock + + + + + +Block->StartBlock + + + + + diff --git a/_images/inheritance-9cba7ed16af1dbd8129fffb59552f1878ff2ac78.svg b/_images/inheritance-9cba7ed16af1dbd8129fffb59552f1878ff2ac78.svg new file mode 100644 index 000000000..8819d5c03 --- /dev/null +++ b/_images/inheritance-9cba7ed16af1dbd8129fffb59552f1878ff2ac78.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance492c98737e + + +ExitKeyword + + +ExitKeyword + + + + + +KeywordToken + + +KeywordToken + + + + + +KeywordToken->ExitKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-9d44e837d408d182334df97fa590cf45776f6791.svg b/_images/inheritance-9d44e837d408d182334df97fa590cf45776f6791.svg new file mode 100644 index 000000000..5a5dd069f --- /dev/null +++ b/_images/inheritance-9d44e837d408d182334df97fa590cf45776f6791.svg @@ -0,0 +1,111 @@ + + + + + + +inheritance6719634e0e + + +KeywordToken + + +KeywordToken + + + + + +Operator + + +Operator + + + + + +KeywordToken->Operator + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +ShiftOperator + + +ShiftOperator + + + + + +Operator->ShiftOperator + + + + + +RorOperator + + +RorOperator + + + + + +ShiftOperator->RorOperator + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-9d72a28a85d72a05a7cc357648c1b84407b9cf5f.svg b/_images/inheritance-9d72a28a85d72a05a7cc357648c1b84407b9cf5f.svg new file mode 100644 index 000000000..da90bbdde --- /dev/null +++ b/_images/inheritance-9d72a28a85d72a05a7cc357648c1b84407b9cf5f.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance4ca2a9f973 + + +BodyKeyword + + +BodyKeyword + + + + + +KeywordToken + + +KeywordToken + + + + + +KeywordToken->BodyKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-9d7c5be20c900462380755caa7e85f79d31e04ea.svg b/_images/inheritance-9d7c5be20c900462380755caa7e85f79d31e04ea.svg new file mode 100644 index 000000000..293dd8d66 --- /dev/null +++ b/_images/inheritance-9d7c5be20c900462380755caa7e85f79d31e04ea.svg @@ -0,0 +1,81 @@ + + + + + + +inheritancee3541863dd + + +LiteralToken + + +LiteralToken + + + + + +RealLiteralToken + + +RealLiteralToken + + + + + +LiteralToken->RealLiteralToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->LiteralToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-9dbc80092ddedbf8451f661d1186f239d84de531.svg b/_images/inheritance-9dbc80092ddedbf8451f661d1186f239d84de531.svg new file mode 100644 index 000000000..1f376c51e --- /dev/null +++ b/_images/inheritance-9dbc80092ddedbf8451f661d1186f239d84de531.svg @@ -0,0 +1,36 @@ + + + + + + +inheritanced629be2197 + + +Array + + +Array + + + + + +TypeInstance + + +TypeInstance + + + + + +TypeInstance->Array + + + + + diff --git a/_images/inheritance-9dde5a3ced35a2dfcbf10ef8b3fdca5984f18d55.svg b/_images/inheritance-9dde5a3ced35a2dfcbf10ef8b3fdca5984f18d55.svg new file mode 100644 index 000000000..c1792506a --- /dev/null +++ b/_images/inheritance-9dde5a3ced35a2dfcbf10ef8b3fdca5984f18d55.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance46ed7c84f4 + + +BusKeyword + + +BusKeyword + + + + + +KeywordToken + + +KeywordToken + + + + + +KeywordToken->BusKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-9ed37a6ffb58ff13b12bb6401dd1672f01cf119b.svg b/_images/inheritance-9ed37a6ffb58ff13b12bb6401dd1672f01cf119b.svg new file mode 100644 index 000000000..de1a7445b --- /dev/null +++ b/_images/inheritance-9ed37a6ffb58ff13b12bb6401dd1672f01cf119b.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance6036ca9c81 + + +ConcurrentDeclarativeRegion + + +ConcurrentDeclarativeRegion + + + + + +DeclarativeRegion + + +DeclarativeRegion + + + + + +DeclarativeRegion->ConcurrentDeclarativeRegion + + + + + diff --git a/_images/inheritance-9fa283cc44c0ecb70c65571e16ab95893f9b3d63.svg b/_images/inheritance-9fa283cc44c0ecb70c65571e16ab95893f9b3d63.svg new file mode 100644 index 000000000..987804361 --- /dev/null +++ b/_images/inheritance-9fa283cc44c0ecb70c65571e16ab95893f9b3d63.svg @@ -0,0 +1,51 @@ + + + + + + +inheritance0be38b08ce + + +Block + + +Block + + + + + +ObjectDeclarationBlock + + +ObjectDeclarationBlock + + + + + +Block->ObjectDeclarationBlock + + + + + +SignalDeclarationBlock + + +SignalDeclarationBlock + + + + + +ObjectDeclarationBlock->SignalDeclarationBlock + + + + + diff --git a/_images/inheritance-9fb66c6c83a6e0aef0ac04b8d2ced8d8813844ec.svg b/_images/inheritance-9fb66c6c83a6e0aef0ac04b8d2ced8d8813844ec.svg new file mode 100644 index 000000000..112e5286f --- /dev/null +++ b/_images/inheritance-9fb66c6c83a6e0aef0ac04b8d2ced8d8813844ec.svg @@ -0,0 +1,51 @@ + + + + + + +inheritance4e0e4303f5 + + +Block + + +Block + + + + + +EndOfStatementBlock + + +EndOfStatementBlock + + + + + +Block->EndOfStatementBlock + + + + + +EndBlock + + +EndBlock + + + + + +EndOfStatementBlock->EndBlock + + + + + diff --git a/_images/inheritance-a012f6053709c3a9b690c547f6fe9b14a1c02f75.svg b/_images/inheritance-a012f6053709c3a9b690c547f6fe9b14a1c02f75.svg new file mode 100644 index 000000000..0d2dd837e --- /dev/null +++ b/_images/inheritance-a012f6053709c3a9b690c547f6fe9b14a1c02f75.svg @@ -0,0 +1,51 @@ + + + + + + +inheritancec1530fef69 + + +Block + + +Block + + + + + +EndOfStatementBlock + + +EndOfStatementBlock + + + + + +Block->EndOfStatementBlock + + + + + +ObjectDeclarationEndMarkerBlock + + +ObjectDeclarationEndMarkerBlock + + + + + +EndOfStatementBlock->ObjectDeclarationEndMarkerBlock + + + + + diff --git a/_images/inheritance-a0485f9a96ffb9c587d157f8363a2979c9f97c67.svg b/_images/inheritance-a0485f9a96ffb9c587d157f8363a2979c9f97c67.svg new file mode 100644 index 000000000..b5ecf038b --- /dev/null +++ b/_images/inheritance-a0485f9a96ffb9c587d157f8363a2979c9f97c67.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance93cba77a7d + + +BeginBlock + + +BeginBlock + + + + + +Block + + +Block + + + + + +Block->BeginBlock + + + + + diff --git a/_images/inheritance-a09c9599f15f23d506c0b1e862f645971f387eb6.svg b/_images/inheritance-a09c9599f15f23d506c0b1e862f645971f387eb6.svg new file mode 100644 index 000000000..4581bff1e --- /dev/null +++ b/_images/inheritance-a09c9599f15f23d506c0b1e862f645971f387eb6.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance162e9433ae + + +ExitGroup + + +ExitGroup + + + + + +Group + + +Group + + + + + +Group->ExitGroup + + + + + diff --git a/_images/inheritance-a0cf46cbe0002a54d28c1b88dd16a21fefffdc17.svg b/_images/inheritance-a0cf46cbe0002a54d28c1b88dd16a21fefffdc17.svg new file mode 100644 index 000000000..75ce93b33 --- /dev/null +++ b/_images/inheritance-a0cf46cbe0002a54d28c1b88dd16a21fefffdc17.svg @@ -0,0 +1,81 @@ + + + + + + +inheritanceefa3762e52 + + +ArrayKeyword + + +ArrayKeyword + + + + + +KeywordToken + + +KeywordToken + + + + + +KeywordToken->ArrayKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-a16934ca5b930a80e83357662d337ab0d3f11836.svg b/_images/inheritance-a16934ca5b930a80e83357662d337ab0d3f11836.svg new file mode 100644 index 000000000..cd9879a4c --- /dev/null +++ b/_images/inheritance-a16934ca5b930a80e83357662d337ab0d3f11836.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance47a34f4d52 + + +Block + + +Block + + + + + +InterfaceTypeBlock + + +InterfaceTypeBlock + + + + + +Block->InterfaceTypeBlock + + + + + diff --git a/_images/inheritance-a2a032e977abfe9412b80a7e79abb671c613f519.svg b/_images/inheritance-a2a032e977abfe9412b80a7e79abb671c613f519.svg new file mode 100644 index 000000000..0c062212d --- /dev/null +++ b/_images/inheritance-a2a032e977abfe9412b80a7e79abb671c613f519.svg @@ -0,0 +1,51 @@ + + + + + + +inheritance4e0e4303f5 + + +Block + + +Block + + + + + +EndOfStatementBlock + + +EndOfStatementBlock + + + + + +Block->EndOfStatementBlock + + + + + +EndBlock + + +EndBlock + + + + + +EndOfStatementBlock->EndBlock + + + + + diff --git a/_images/inheritance-a3584955b0cb3beff50bad805fc909d9ca13a4eb.svg b/_images/inheritance-a3584955b0cb3beff50bad805fc909d9ca13a4eb.svg new file mode 100644 index 000000000..a1a75ea79 --- /dev/null +++ b/_images/inheritance-a3584955b0cb3beff50bad805fc909d9ca13a4eb.svg @@ -0,0 +1,96 @@ + + + + + + +inheritance84462197bf + + +LabelToken + + +LabelToken + + + + + +RepeatedLabelToken + + +RepeatedLabelToken + + + + + +LabelToken->RepeatedLabelToken + + + + + +SpecificVHDLToken + + +SpecificVHDLToken + + + + + +SpecificVHDLToken->LabelToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->SpecificVHDLToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-a369005b5428c397f0bbe16e14c41b779f10d28c.svg b/_images/inheritance-a369005b5428c397f0bbe16e14c41b779f10d28c.svg new file mode 100644 index 000000000..cd44182ce --- /dev/null +++ b/_images/inheritance-a369005b5428c397f0bbe16e14c41b779f10d28c.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance6e8561387a + + +Block + + +Block + + + + + +NameBlock + + +NameBlock + + + + + +Block->NameBlock + + + + + diff --git a/_images/inheritance-a48f2a46be8dad724d5a3829fc95e6c9805ecbf0.svg b/_images/inheritance-a48f2a46be8dad724d5a3829fc95e6c9805ecbf0.svg new file mode 100644 index 000000000..2e38fdab8 --- /dev/null +++ b/_images/inheritance-a48f2a46be8dad724d5a3829fc95e6c9805ecbf0.svg @@ -0,0 +1,36 @@ + + + + + + +inheritancec1ceb6b2de + + +Block + + +Block + + + + + +EntityInstantiationBlock + + +EntityInstantiationBlock + + + + + +Block->EntityInstantiationBlock + + + + + diff --git a/_images/inheritance-a5c2daf3b073603faff8d8880abf6b968a97ab80.svg b/_images/inheritance-a5c2daf3b073603faff8d8880abf6b968a97ab80.svg new file mode 100644 index 000000000..0f4f74382 --- /dev/null +++ b/_images/inheritance-a5c2daf3b073603faff8d8880abf6b968a97ab80.svg @@ -0,0 +1,96 @@ + + + + + + +inheritancef7750bae4d + + +BracketToken + + +BracketToken + + + + + +CurlyBracketToken + + +CurlyBracketToken + + + + + +BracketToken->CurlyBracketToken + + + + + +SpecificVHDLToken + + +SpecificVHDLToken + + + + + +SpecificVHDLToken->BracketToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->SpecificVHDLToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-a67c1022e7c321c7763f629695cc5c9205a60cc8.svg b/_images/inheritance-a67c1022e7c321c7763f629695cc5c9205a60cc8.svg new file mode 100644 index 000000000..419089325 --- /dev/null +++ b/_images/inheritance-a67c1022e7c321c7763f629695cc5c9205a60cc8.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance462361af50 + + +Group + + +Group + + + + + +LibraryGroup + + +LibraryGroup + + + + + +Group->LibraryGroup + + + + + diff --git a/_images/inheritance-a7d2530259b36e2faf8df2894edbfd69ed4c55c3.svg b/_images/inheritance-a7d2530259b36e2faf8df2894edbfd69ed4c55c3.svg new file mode 100644 index 000000000..3e401b2fc --- /dev/null +++ b/_images/inheritance-a7d2530259b36e2faf8df2894edbfd69ed4c55c3.svg @@ -0,0 +1,96 @@ + + + + + + +inheritance3f6311c6ca + + +MultiplyOperator + + +MultiplyOperator + + + + + +OperatorToken + + +OperatorToken + + + + + +OperatorToken->MultiplyOperator + + + + + +SpecificVHDLToken + + +SpecificVHDLToken + + + + + +SpecificVHDLToken->OperatorToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->SpecificVHDLToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-a86cc4f9ba0b65ff8702d7dd028632e18727f24a.svg b/_images/inheritance-a86cc4f9ba0b65ff8702d7dd028632e18727f24a.svg new file mode 100644 index 000000000..a7b0c0e8e --- /dev/null +++ b/_images/inheritance-a86cc4f9ba0b65ff8702d7dd028632e18727f24a.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance9296e2a5dc + + +Block + + +Block + + + + + +IteratorBlock + + +IteratorBlock + + + + + +Block->IteratorBlock + + + + + diff --git a/_images/inheritance-a8911a213c447d170f4da6de28b526468ad96816.svg b/_images/inheritance-a8911a213c447d170f4da6de28b526468ad96816.svg new file mode 100644 index 000000000..07b392ae3 --- /dev/null +++ b/_images/inheritance-a8911a213c447d170f4da6de28b526468ad96816.svg @@ -0,0 +1,45 @@ + + + + + + +inheritancec56d974c5f + + +BlockParserException + + +BlockParserException + + + + + +ParserException + +ParserException + + + +ParserException->BlockParserException + + + + + +ExceptionBase + +ExceptionBase + + + +ExceptionBase->ParserException + + + + + diff --git a/_images/inheritance-a9214267788193016fec49a0a2b7f2f55ed98cee.svg b/_images/inheritance-a9214267788193016fec49a0a2b7f2f55ed98cee.svg new file mode 100644 index 000000000..78546ce3f --- /dev/null +++ b/_images/inheritance-a9214267788193016fec49a0a2b7f2f55ed98cee.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance211bec14bb + + +Function + + +Function + + + + + +SubProgram + + +SubProgram + + + + + +SubProgram->Function + + + + + diff --git a/_images/inheritance-a924e629ed13a7593e94664da62e00a244df7e0f.svg b/_images/inheritance-a924e629ed13a7593e94664da62e00a244df7e0f.svg new file mode 100644 index 000000000..d344a09b6 --- /dev/null +++ b/_images/inheritance-a924e629ed13a7593e94664da62e00a244df7e0f.svg @@ -0,0 +1,81 @@ + + + + + + +inheritancee6c5c86a75 + + +GroupKeyword + + +GroupKeyword + + + + + +KeywordToken + + +KeywordToken + + + + + +KeywordToken->GroupKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-a9601ad720ffd3ccc0683ab28f7a3709f14a5083.svg b/_images/inheritance-a9601ad720ffd3ccc0683ab28f7a3709f14a5083.svg new file mode 100644 index 000000000..1afaf7c3d --- /dev/null +++ b/_images/inheritance-a9601ad720ffd3ccc0683ab28f7a3709f14a5083.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance0f7cc6a67a + + +ModelBase + + +ModelBase + + + + + +Netlist + + +Netlist + + + + + +ModelBase->Netlist + + + + + diff --git a/_images/inheritance-aa193ced6a503a338e943fad6d8354a37e57d923.svg b/_images/inheritance-aa193ced6a503a338e943fad6d8354a37e57d923.svg new file mode 100644 index 000000000..30ac2b3ae --- /dev/null +++ b/_images/inheritance-aa193ced6a503a338e943fad6d8354a37e57d923.svg @@ -0,0 +1,36 @@ + + + + + + +inheritanceb1900f9192 + + +Group + + +Group + + + + + +VariableGroup + + +VariableGroup + + + + + +Group->VariableGroup + + + + + diff --git a/_images/inheritance-aa3f5c52642626d66ffbe317a16893205359e540.svg b/_images/inheritance-aa3f5c52642626d66ffbe317a16893205359e540.svg new file mode 100644 index 000000000..b7bbe5b51 --- /dev/null +++ b/_images/inheritance-aa3f5c52642626d66ffbe317a16893205359e540.svg @@ -0,0 +1,51 @@ + + + + + + +inheritanced4c45b96ec + + +Block + + +Block + + + + + +InterfaceObjectBlock + + +InterfaceObjectBlock + + + + + +Block->InterfaceObjectBlock + + + + + +InterfaceVariableBlock + + +InterfaceVariableBlock + + + + + +InterfaceObjectBlock->InterfaceVariableBlock + + + + + diff --git a/_images/inheritance-aa4aff27b6845013dcac4f5131228042d2a1b56b.svg b/_images/inheritance-aa4aff27b6845013dcac4f5131228042d2a1b56b.svg new file mode 100644 index 000000000..e51e85eb1 --- /dev/null +++ b/_images/inheritance-aa4aff27b6845013dcac4f5131228042d2a1b56b.svg @@ -0,0 +1,36 @@ + + + + + + +inheritancedf43433117 + + +Block + + +Block + + + + + +GenericMapItemBlock + + +GenericMapItemBlock + + + + + +Block->GenericMapItemBlock + + + + + diff --git a/_images/inheritance-aa6af901a8393fe0e37155d561612bafaf23f32c.svg b/_images/inheritance-aa6af901a8393fe0e37155d561612bafaf23f32c.svg new file mode 100644 index 000000000..7f3e6b7da --- /dev/null +++ b/_images/inheritance-aa6af901a8393fe0e37155d561612bafaf23f32c.svg @@ -0,0 +1,51 @@ + + + + + + +inheritance960d6feb94 + + +Block + + +Block + + + + + +SkipableBlock + + +SkipableBlock + + + + + +Block->SkipableBlock + + + + + +DelimiterBlock + + +DelimiterBlock + + + + + +SkipableBlock->DelimiterBlock + + + + + diff --git a/_images/inheritance-aacd8d8528ce8898532ac04b8b0effa17e80ac74.svg b/_images/inheritance-aacd8d8528ce8898532ac04b8b0effa17e80ac74.svg new file mode 100644 index 000000000..a2fc9dcd5 --- /dev/null +++ b/_images/inheritance-aacd8d8528ce8898532ac04b8b0effa17e80ac74.svg @@ -0,0 +1,111 @@ + + + + + + +inheritancef40e565e1a + + +BracketToken + + +BracketToken + + + + + +SquareBracketToken + + +SquareBracketToken + + + + + +BracketToken->SquareBracketToken + + + + + +SpecificVHDLToken + + +SpecificVHDLToken + + + + + +SpecificVHDLToken->BracketToken + + + + + +OpeningSquareBracketToken + + +OpeningSquareBracketToken + + + + + +SquareBracketToken->OpeningSquareBracketToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->SpecificVHDLToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-ab19cd7924125a091ae63ff9de08790979b098d1.svg b/_images/inheritance-ab19cd7924125a091ae63ff9de08790979b098d1.svg new file mode 100644 index 000000000..6d9d7b735 --- /dev/null +++ b/_images/inheritance-ab19cd7924125a091ae63ff9de08790979b098d1.svg @@ -0,0 +1,36 @@ + + + + + + +inheritancef2215cd20c + + +ConstantGroup + + +ConstantGroup + + + + + +Group + + +Group + + + + + +Group->ConstantGroup + + + + + diff --git a/_images/inheritance-ab6d8f2113930aeb74fadc53d8e364cd39ddadd9.svg b/_images/inheritance-ab6d8f2113930aeb74fadc53d8e364cd39ddadd9.svg new file mode 100644 index 000000000..c46638361 --- /dev/null +++ b/_images/inheritance-ab6d8f2113930aeb74fadc53d8e364cd39ddadd9.svg @@ -0,0 +1,57 @@ + + + + + + +inheritance93cba77a7d + + +BeginBlock + + +BeginBlock + + + + + +ConcurrentBeginBlock + + +ConcurrentBeginBlock + + + + + +BeginBlock->ConcurrentBeginBlock + + + + + +Block + + +Block + + + + + +Block->BeginBlock + + + + + +ConcurrentBeginBlock->BeginBlock + + + + + diff --git a/_images/inheritance-abec6217e37cd071d74763ac88e124bf781e028a.svg b/_images/inheritance-abec6217e37cd071d74763ac88e124bf781e028a.svg new file mode 100644 index 000000000..86988db58 --- /dev/null +++ b/_images/inheritance-abec6217e37cd071d74763ac88e124bf781e028a.svg @@ -0,0 +1,111 @@ + + + + + + +inheritancea6b250df2d + + +GreaterThanOperator + + +GreaterThanOperator + + + + + +RelationalOperator + + +RelationalOperator + + + + + +RelationalOperator->GreaterThanOperator + + + + + +OperatorToken + + +OperatorToken + + + + + +OperatorToken->RelationalOperator + + + + + +SpecificVHDLToken + + +SpecificVHDLToken + + + + + +SpecificVHDLToken->OperatorToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->SpecificVHDLToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-ac2b82dfbfa1a4ae32bb8b48fc8dcb6c02583006.svg b/_images/inheritance-ac2b82dfbfa1a4ae32bb8b48fc8dcb6c02583006.svg new file mode 100644 index 000000000..22a0c7311 --- /dev/null +++ b/_images/inheritance-ac2b82dfbfa1a4ae32bb8b48fc8dcb6c02583006.svg @@ -0,0 +1,111 @@ + + + + + + +inheritancea99fa226e6 + + +MatchingEqualOperator + + +MatchingEqualOperator + + + + + +RelationalOperator + + +RelationalOperator + + + + + +RelationalOperator->MatchingEqualOperator + + + + + +OperatorToken + + +OperatorToken + + + + + +OperatorToken->RelationalOperator + + + + + +SpecificVHDLToken + + +SpecificVHDLToken + + + + + +SpecificVHDLToken->OperatorToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->SpecificVHDLToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-ac4f3c629292ee9758d5b7814ed15419818c6bdb.svg b/_images/inheritance-ac4f3c629292ee9758d5b7814ed15419818c6bdb.svg new file mode 100644 index 000000000..483076556 --- /dev/null +++ b/_images/inheritance-ac4f3c629292ee9758d5b7814ed15419818c6bdb.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance13092da390 + + +KeywordToken + + +KeywordToken + + + + + +OpenKeyword + + +OpenKeyword + + + + + +KeywordToken->OpenKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-acb9d8ed4d1b0fa1f4b27e0707f1860563b79359.svg b/_images/inheritance-acb9d8ed4d1b0fa1f4b27e0707f1860563b79359.svg new file mode 100644 index 000000000..761f7bb7a --- /dev/null +++ b/_images/inheritance-acb9d8ed4d1b0fa1f4b27e0707f1860563b79359.svg @@ -0,0 +1,111 @@ + + + + + + +inheritance3de90f5f81 + + +BracketToken + + +BracketToken + + + + + +SquareBracketToken + + +SquareBracketToken + + + + + +BracketToken->SquareBracketToken + + + + + +SpecificVHDLToken + + +SpecificVHDLToken + + + + + +SpecificVHDLToken->BracketToken + + + + + +ClosingSquareBracketToken + + +ClosingSquareBracketToken + + + + + +SquareBracketToken->ClosingSquareBracketToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->SpecificVHDLToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-acef86162841300bd21eeddb9f8c2846f85a03e7.svg b/_images/inheritance-acef86162841300bd21eeddb9f8c2846f85a03e7.svg new file mode 100644 index 000000000..01d503398 --- /dev/null +++ b/_images/inheritance-acef86162841300bd21eeddb9f8c2846f85a03e7.svg @@ -0,0 +1,36 @@ + + + + + + +inheritancede524a8630 + + +GenericListItemGroup + + +GenericListItemGroup + + + + + +Group + + +Group + + + + + +Group->GenericListItemGroup + + + + + diff --git a/_images/inheritance-acfb8112fccfc074de603f8f52ae257acb0068ce.svg b/_images/inheritance-acfb8112fccfc074de603f8f52ae257acb0068ce.svg new file mode 100644 index 000000000..ce3781670 --- /dev/null +++ b/_images/inheritance-acfb8112fccfc074de603f8f52ae257acb0068ce.svg @@ -0,0 +1,66 @@ + + + + + + +inheritance3c9a1732b2 + + +SpecificVHDLToken + + +SpecificVHDLToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->SpecificVHDLToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-ad4fbd1553508174c081839082cb4415806d0fa4.svg b/_images/inheritance-ad4fbd1553508174c081839082cb4415806d0fa4.svg new file mode 100644 index 000000000..719f5b49d --- /dev/null +++ b/_images/inheritance-ad4fbd1553508174c081839082cb4415806d0fa4.svg @@ -0,0 +1,81 @@ + + + + + + +inheritanceb4f0c336d9 + + +DefaultKeyword + + +DefaultKeyword + + + + + +KeywordToken + + +KeywordToken + + + + + +KeywordToken->DefaultKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-ae3039833da20355d4eb2e06504e980f90966bdc.svg b/_images/inheritance-ae3039833da20355d4eb2e06504e980f90966bdc.svg new file mode 100644 index 000000000..f2d689118 --- /dev/null +++ b/_images/inheritance-ae3039833da20355d4eb2e06504e980f90966bdc.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance5492c6c3e4 + + +ProjectedWaveform + + +ProjectedWaveform + + + + + +TimeLine + + +TimeLine + + + + + +TimeLine->ProjectedWaveform + + + + + diff --git a/_images/inheritance-b12186f62fb1a854eaadaafbbfd845d4d64528b6.svg b/_images/inheritance-b12186f62fb1a854eaadaafbbfd845d4d64528b6.svg new file mode 100644 index 000000000..a7ad6cf1a --- /dev/null +++ b/_images/inheritance-b12186f62fb1a854eaadaafbbfd845d4d64528b6.svg @@ -0,0 +1,21 @@ + + + + + + +inheritance3b6ce52305 + + +Range + + +Range + + + + + diff --git a/_images/inheritance-b121cd3a198fda3fcef31882f50c562d7f8ad760.svg b/_images/inheritance-b121cd3a198fda3fcef31882f50c562d7f8ad760.svg new file mode 100644 index 000000000..2325e46c0 --- /dev/null +++ b/_images/inheritance-b121cd3a198fda3fcef31882f50c562d7f8ad760.svg @@ -0,0 +1,111 @@ + + + + + + +inheritanceb381748d80 + + +KeywordToken + + +KeywordToken + + + + + +Operator + + +Operator + + + + + +KeywordToken->Operator + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +LogicalOperator + + +LogicalOperator + + + + + +NotOperator + + +NotOperator + + + + + +LogicalOperator->NotOperator + + + + + +Operator->LogicalOperator + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-b14e0975136c86f59eeb6829894344d307ad5bc4.svg b/_images/inheritance-b14e0975136c86f59eeb6829894344d307ad5bc4.svg new file mode 100644 index 000000000..a2ce5d2ea --- /dev/null +++ b/_images/inheritance-b14e0975136c86f59eeb6829894344d307ad5bc4.svg @@ -0,0 +1,81 @@ + + + + + + +inheritanceab600bebfd + + +KeywordToken + + +KeywordToken + + + + + +SubtypeKeyword + + +SubtypeKeyword + + + + + +KeywordToken->SubtypeKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-b16b792501e46990b6087a51deccf7a506a09b3a.svg b/_images/inheritance-b16b792501e46990b6087a51deccf7a506a09b3a.svg new file mode 100644 index 000000000..811497f7a --- /dev/null +++ b/_images/inheritance-b16b792501e46990b6087a51deccf7a506a09b3a.svg @@ -0,0 +1,21 @@ + + + + + + +inheritancef6a5f9c903 + + +Waveform + + +Waveform + + + + + diff --git a/_images/inheritance-b26eea7792ec531f07d414e9af5266e7e0ba9ee0.svg b/_images/inheritance-b26eea7792ec531f07d414e9af5266e7e0ba9ee0.svg new file mode 100644 index 000000000..201d0f07d --- /dev/null +++ b/_images/inheritance-b26eea7792ec531f07d414e9af5266e7e0ba9ee0.svg @@ -0,0 +1,36 @@ + + + + + + +inheritancea608fe4133 + + +ArchitectureGroup + + +ArchitectureGroup + + + + + +Group + + +Group + + + + + +Group->ArchitectureGroup + + + + + diff --git a/_images/inheritance-b29c8fe968a04c0bd8ba02e7ea4416f6a3e36597.svg b/_images/inheritance-b29c8fe968a04c0bd8ba02e7ea4416f6a3e36597.svg new file mode 100644 index 000000000..0323d0f6d --- /dev/null +++ b/_images/inheritance-b29c8fe968a04c0bd8ba02e7ea4416f6a3e36597.svg @@ -0,0 +1,36 @@ + + + + + + +inheritancedc72e401ab + + +ConfigurationGroup + + +ConfigurationGroup + + + + + +Group + + +Group + + + + + +Group->ConfigurationGroup + + + + + diff --git a/_images/inheritance-b2b8524cef508741738cdbc81bebb6aa8bebadac.svg b/_images/inheritance-b2b8524cef508741738cdbc81bebb6aa8bebadac.svg new file mode 100644 index 000000000..b9061b6fb --- /dev/null +++ b/_images/inheritance-b2b8524cef508741738cdbc81bebb6aa8bebadac.svg @@ -0,0 +1,57 @@ + + + + + + +inheritance4e0e4303f5 + + +Block + + +Block + + + + + +FinalBlock + + +FinalBlock + + + + + +Block->FinalBlock + + + + + +EndBlock + + +EndBlock + + + + + +EndBlock->EndBlock + + + + + +FinalBlock->EndBlock + + + + + diff --git a/_images/inheritance-b315d73a2f38f915cafc0292137faf7de1aca9b9.svg b/_images/inheritance-b315d73a2f38f915cafc0292137faf7de1aca9b9.svg new file mode 100644 index 000000000..b00191490 --- /dev/null +++ b/_images/inheritance-b315d73a2f38f915cafc0292137faf7de1aca9b9.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance44dbb5e7f6 + + +InertialKeyword + + +InertialKeyword + + + + + +KeywordToken + + +KeywordToken + + + + + +KeywordToken->InertialKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-b4d64b3e18b23d84f9724075652f246d56593887.svg b/_images/inheritance-b4d64b3e18b23d84f9724075652f246d56593887.svg new file mode 100644 index 000000000..5734f00f5 --- /dev/null +++ b/_images/inheritance-b4d64b3e18b23d84f9724075652f246d56593887.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance6bd10ffef7 + + +Block + + +Block + + + + + +RangeBlock + + +RangeBlock + + + + + +Block->RangeBlock + + + + + diff --git a/_images/inheritance-b56bd04616f3c7c14ddb89f67dcaa3e99bcc2830.svg b/_images/inheritance-b56bd04616f3c7c14ddb89f67dcaa3e99bcc2830.svg new file mode 100644 index 000000000..a60d9f8d0 --- /dev/null +++ b/_images/inheritance-b56bd04616f3c7c14ddb89f67dcaa3e99bcc2830.svg @@ -0,0 +1,81 @@ + + + + + + +inheritancee0b9f83145 + + +BoundaryToken + + +BoundaryToken + + + + + +SpecificVHDLToken + + +SpecificVHDLToken + + + + + +SpecificVHDLToken->BoundaryToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->SpecificVHDLToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-b59f9a3db88093d0e0546f406d20dec1a9c8a65c.svg b/_images/inheritance-b59f9a3db88093d0e0546f406d20dec1a9c8a65c.svg new file mode 100644 index 000000000..128382e1e --- /dev/null +++ b/_images/inheritance-b59f9a3db88093d0e0546f406d20dec1a9c8a65c.svg @@ -0,0 +1,96 @@ + + + + + + +inheritancea01af75eeb + + +OperatorToken + + +OperatorToken + + + + + +RelationalOperator + + +RelationalOperator + + + + + +OperatorToken->RelationalOperator + + + + + +SpecificVHDLToken + + +SpecificVHDLToken + + + + + +SpecificVHDLToken->OperatorToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->SpecificVHDLToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-b65844ecebf3325160c11c8fd33c1f9d50dd394b.svg b/_images/inheritance-b65844ecebf3325160c11c8fd33c1f9d50dd394b.svg new file mode 100644 index 000000000..da0e472c3 --- /dev/null +++ b/_images/inheritance-b65844ecebf3325160c11c8fd33c1f9d50dd394b.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance6e8561387a + + +Block + + +Block + + + + + +NameBlock + + +NameBlock + + + + + +Block->NameBlock + + + + + diff --git a/_images/inheritance-b73acf9d931ffda9769e4e8473c122880121f8ba.svg b/_images/inheritance-b73acf9d931ffda9769e4e8473c122880121f8ba.svg new file mode 100644 index 000000000..393ca8f2a --- /dev/null +++ b/_images/inheritance-b73acf9d931ffda9769e4e8473c122880121f8ba.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance6dc543b4c5 + + +KeywordToken + + +KeywordToken + + + + + +OthersKeyword + + +OthersKeyword + + + + + +KeywordToken->OthersKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-b7510ab7b40997f3a2ed41bb8f49c18b41e53809.svg b/_images/inheritance-b7510ab7b40997f3a2ed41bb8f49c18b41e53809.svg new file mode 100644 index 000000000..bbf0ab8a8 --- /dev/null +++ b/_images/inheritance-b7510ab7b40997f3a2ed41bb8f49c18b41e53809.svg @@ -0,0 +1,81 @@ + + + + + + +inheritancef7d2cb61ee + + +EndKeyword + + +EndKeyword + + + + + +KeywordToken + + +KeywordToken + + + + + +KeywordToken->EndKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-b766b1f19b1de835e5191926e50cf74cfeed5220.svg b/_images/inheritance-b766b1f19b1de835e5191926e50cf74cfeed5220.svg new file mode 100644 index 000000000..b43aae523 --- /dev/null +++ b/_images/inheritance-b766b1f19b1de835e5191926e50cf74cfeed5220.svg @@ -0,0 +1,21 @@ + + + + + + +inheritance3ed8d460cd + + +PackageDeclation + + +PackageDeclation + + + + + diff --git a/_images/inheritance-b86566b8d5dc7ebe56481b91b957dec0166bfc81.svg b/_images/inheritance-b86566b8d5dc7ebe56481b91b957dec0166bfc81.svg new file mode 100644 index 000000000..05ecf79fa --- /dev/null +++ b/_images/inheritance-b86566b8d5dc7ebe56481b91b957dec0166bfc81.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance97a1543730 + + +Block + + +Block + + + + + +FinalBlock + + +FinalBlock + + + + + +Block->FinalBlock + + + + + diff --git a/_images/inheritance-b8f4cd2c37b53e33761aaa44fd55b4665a93cae1.svg b/_images/inheritance-b8f4cd2c37b53e33761aaa44fd55b4665a93cae1.svg new file mode 100644 index 000000000..c1f72eb25 --- /dev/null +++ b/_images/inheritance-b8f4cd2c37b53e33761aaa44fd55b4665a93cae1.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance6e8561387a + + +Block + + +Block + + + + + +NameBlock + + +NameBlock + + + + + +Block->NameBlock + + + + + diff --git a/_images/inheritance-b90170da6954787e99c41acc65326599ac4a0305.svg b/_images/inheritance-b90170da6954787e99c41acc65326599ac4a0305.svg new file mode 100644 index 000000000..0650db9f5 --- /dev/null +++ b/_images/inheritance-b90170da6954787e99c41acc65326599ac4a0305.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance40d708a1b9 + + +KeywordToken + + +KeywordToken + + + + + +NextKeyword + + +NextKeyword + + + + + +KeywordToken->NextKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-b9032c78d0b19a80ed1514952e41c09838a397f9.svg b/_images/inheritance-b9032c78d0b19a80ed1514952e41c09838a397f9.svg new file mode 100644 index 000000000..991f984e3 --- /dev/null +++ b/_images/inheritance-b9032c78d0b19a80ed1514952e41c09838a397f9.svg @@ -0,0 +1,51 @@ + + + + + + +inheritanced6b90e9167 + + +Block + + +Block + + + + + +SkipableBlock + + +SkipableBlock + + + + + +Block->SkipableBlock + + + + + +PortMapDelimiterBlock + + +PortMapDelimiterBlock + + + + + +SkipableBlock->PortMapDelimiterBlock + + + + + diff --git a/_images/inheritance-b94f82cb7d9362892c2196c85a1097f26ea1d8da.svg b/_images/inheritance-b94f82cb7d9362892c2196c85a1097f26ea1d8da.svg new file mode 100644 index 000000000..a61daad75 --- /dev/null +++ b/_images/inheritance-b94f82cb7d9362892c2196c85a1097f26ea1d8da.svg @@ -0,0 +1,66 @@ + + + + + + +inheritanceac177b3bdc + + +Block + + +Block + + + + + +ExpressionBlock + + +ExpressionBlock + + + + + +Block->ExpressionBlock + + + + + +ExpressionBlockEndedByCharORClosingRoundBracket + + +ExpressionBlockEndedByCharORClosingRoundBracket + + + + + +ExpressionBlock->ExpressionBlockEndedByCharORClosingRoundBracket + + + + + +WhenExpressionBlock + + +WhenExpressionBlock + + + + + +ExpressionBlockEndedByCharORClosingRoundBracket->WhenExpressionBlock + + + + + diff --git a/_images/inheritance-b9d1dfa0d04412c14e31b848d98ec310e5a0a471.svg b/_images/inheritance-b9d1dfa0d04412c14e31b848d98ec310e5a0a471.svg new file mode 100644 index 000000000..f539e14c1 --- /dev/null +++ b/_images/inheritance-b9d1dfa0d04412c14e31b848d98ec310e5a0a471.svg @@ -0,0 +1,111 @@ + + + + + + +inheritance33b60c0a88 + + +KeywordToken + + +KeywordToken + + + + + +Operator + + +Operator + + + + + +KeywordToken->Operator + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +LogicalOperator + + +LogicalOperator + + + + + +XorOperator + + +XorOperator + + + + + +LogicalOperator->XorOperator + + + + + +Operator->LogicalOperator + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-b9fbe194941e7048f6415cdfad51fa55a52ad4c4.svg b/_images/inheritance-b9fbe194941e7048f6415cdfad51fa55a52ad4c4.svg new file mode 100644 index 000000000..8aa129c92 --- /dev/null +++ b/_images/inheritance-b9fbe194941e7048f6415cdfad51fa55a52ad4c4.svg @@ -0,0 +1,36 @@ + + + + + + +inheritancedae0690eaf + + +Block + + +Block + + + + + +SignalAssignmentBlock + + +SignalAssignmentBlock + + + + + +Block->SignalAssignmentBlock + + + + + diff --git a/_images/inheritance-ba7a5c1e536ceea820369c090657ec6e98ace6f2.svg b/_images/inheritance-ba7a5c1e536ceea820369c090657ec6e98ace6f2.svg new file mode 100644 index 000000000..659a36050 --- /dev/null +++ b/_images/inheritance-ba7a5c1e536ceea820369c090657ec6e98ace6f2.svg @@ -0,0 +1,81 @@ + + + + + + +inheritancec4a963d676 + + +KeywordToken + + +KeywordToken + + + + + +SharedKeyword + + +SharedKeyword + + + + + +KeywordToken->SharedKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-baf7b45c3e18cb6c2f33b2188f33fade8412183e.svg b/_images/inheritance-baf7b45c3e18cb6c2f33b2188f33fade8412183e.svg new file mode 100644 index 000000000..880124c19 --- /dev/null +++ b/_images/inheritance-baf7b45c3e18cb6c2f33b2188f33fade8412183e.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance19ec8edfb1 + + +KeywordToken + + +KeywordToken + + + + + +Operator + + +Operator + + + + + +KeywordToken->Operator + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-bb53142725c8938402ec82aecc02330c6196b31f.svg b/_images/inheritance-bb53142725c8938402ec82aecc02330c6196b31f.svg new file mode 100644 index 000000000..07a3d703f --- /dev/null +++ b/_images/inheritance-bb53142725c8938402ec82aecc02330c6196b31f.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance9af29ede31 + + +KeywordToken + + +KeywordToken + + + + + +SignalKeyword + + +SignalKeyword + + + + + +KeywordToken->SignalKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-bc34aac6e0c367d27b06d68149f5ab8477686586.svg b/_images/inheritance-bc34aac6e0c367d27b06d68149f5ab8477686586.svg new file mode 100644 index 000000000..bee5f3039 --- /dev/null +++ b/_images/inheritance-bc34aac6e0c367d27b06d68149f5ab8477686586.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance7ce54a016e + + +Block + + +Block + + + + + +StartOfBlock + + +StartOfBlock + + + + + +Block->StartOfBlock + + + + + +StartOf + + +StartOf + + + + + +StartOfSnippet + + +StartOfSnippet + + + + + +StartOf->StartOfSnippet + + + + + +StartOfSnippetBlock + + +StartOfSnippetBlock + + + + + +StartOfBlock->StartOfSnippetBlock + + + + + +StartOfSnippet->StartOfSnippetBlock + + + + + diff --git a/_images/inheritance-bc43ce13f75dc6ec784115124aed15495f6a41eb.svg b/_images/inheritance-bc43ce13f75dc6ec784115124aed15495f6a41eb.svg new file mode 100644 index 000000000..5844b56f3 --- /dev/null +++ b/_images/inheritance-bc43ce13f75dc6ec784115124aed15495f6a41eb.svg @@ -0,0 +1,81 @@ + + + + + + +inheritancee5c705e1df + + +ContextKeyword + + +ContextKeyword + + + + + +KeywordToken + + +KeywordToken + + + + + +KeywordToken->ContextKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-bc6cd0a182765d2e82f6f513c58e61041eb9f9ca.svg b/_images/inheritance-bc6cd0a182765d2e82f6f513c58e61041eb9f9ca.svg new file mode 100644 index 000000000..2a04b125d --- /dev/null +++ b/_images/inheritance-bc6cd0a182765d2e82f6f513c58e61041eb9f9ca.svg @@ -0,0 +1,81 @@ + + + + + + +inheritanceb16857057e + + +KeywordToken + + +KeywordToken + + + + + +WithKeyword + + +WithKeyword + + + + + +KeywordToken->WithKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-bca54a21f15b1035d547e8322158989452cffa9f.svg b/_images/inheritance-bca54a21f15b1035d547e8322158989452cffa9f.svg new file mode 100644 index 000000000..1a10b105a --- /dev/null +++ b/_images/inheritance-bca54a21f15b1035d547e8322158989452cffa9f.svg @@ -0,0 +1,51 @@ + + + + + + +inheritance4e0e4303f5 + + +Block + + +Block + + + + + +FinalBlock + + +FinalBlock + + + + + +Block->FinalBlock + + + + + +EndBlock + + +EndBlock + + + + + +FinalBlock->EndBlock + + + + + diff --git a/_images/inheritance-bd175385eeba671d630d379939690ed841aebba6.svg b/_images/inheritance-bd175385eeba671d630d379939690ed841aebba6.svg new file mode 100644 index 000000000..b63ade55c --- /dev/null +++ b/_images/inheritance-bd175385eeba671d630d379939690ed841aebba6.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance2f8ca2450f + + +EntityKeyword + + +EntityKeyword + + + + + +KeywordToken + + +KeywordToken + + + + + +KeywordToken->EntityKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-bd19fd33cbd34ae04373e79e7f28f2ae6c22b41b.svg b/_images/inheritance-bd19fd33cbd34ae04373e79e7f28f2ae6c22b41b.svg new file mode 100644 index 000000000..849811378 --- /dev/null +++ b/_images/inheritance-bd19fd33cbd34ae04373e79e7f28f2ae6c22b41b.svg @@ -0,0 +1,21 @@ + + + + + + +inheritance3f0f4ac6ac + + +Block + + +Block + + + + + diff --git a/_images/inheritance-bd28f2044a55e08209790b64b7268234448b988a.svg b/_images/inheritance-bd28f2044a55e08209790b64b7268234448b988a.svg new file mode 100644 index 000000000..85aab5b70 --- /dev/null +++ b/_images/inheritance-bd28f2044a55e08209790b64b7268234448b988a.svg @@ -0,0 +1,36 @@ + + + + + + +inheritancedcddc1d431 + + +Block + + +Block + + + + + +ObjectDeclarationBlock + + +ObjectDeclarationBlock + + + + + +Block->ObjectDeclarationBlock + + + + + diff --git a/_images/inheritance-bd928c6e6fa2cd75cd248eada99ecc0358a6d1c8.svg b/_images/inheritance-bd928c6e6fa2cd75cd248eada99ecc0358a6d1c8.svg new file mode 100644 index 000000000..cffe45ae4 --- /dev/null +++ b/_images/inheritance-bd928c6e6fa2cd75cd248eada99ecc0358a6d1c8.svg @@ -0,0 +1,51 @@ + + + + + + +inheritance02546fc3a3 + + +Block + + +Block + + + + + +FinalBlock + + +FinalBlock + + + + + +Block->FinalBlock + + + + + +PortMapEndBlock + + +PortMapEndBlock + + + + + +FinalBlock->PortMapEndBlock + + + + + diff --git a/_images/inheritance-bdd2c61a0d77a59bc23ef036a4b62a0bc4b1e219.svg b/_images/inheritance-bdd2c61a0d77a59bc23ef036a4b62a0bc4b1e219.svg new file mode 100644 index 000000000..fe69420a6 --- /dev/null +++ b/_images/inheritance-bdd2c61a0d77a59bc23ef036a4b62a0bc4b1e219.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance7d5b36e250 + + +Block + + +Block + + + + + +GenericMapBeginBlock + + +GenericMapBeginBlock + + + + + +Block->GenericMapBeginBlock + + + + + diff --git a/_images/inheritance-be3dbbac938572bea8309247b2b1f8c79edaf727.svg b/_images/inheritance-be3dbbac938572bea8309247b2b1f8c79edaf727.svg new file mode 100644 index 000000000..53ce0fabc --- /dev/null +++ b/_images/inheritance-be3dbbac938572bea8309247b2b1f8c79edaf727.svg @@ -0,0 +1,81 @@ + + + + + + +inheritanced181c3443b + + +KeywordToken + + +KeywordToken + + + + + +PortKeyword + + +PortKeyword + + + + + +KeywordToken->PortKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-c02073760ee02f1df2f35baac892f3a1fe297007.svg b/_images/inheritance-c02073760ee02f1df2f35baac892f3a1fe297007.svg new file mode 100644 index 000000000..5dbc317c9 --- /dev/null +++ b/_images/inheritance-c02073760ee02f1df2f35baac892f3a1fe297007.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance3623fd2e5d + + +Block + + +Block + + + + + +InterfaceObjectBlock + + +InterfaceObjectBlock + + + + + +Block->InterfaceObjectBlock + + + + + diff --git a/_images/inheritance-c0bfc619b5eb2d25fc5292a1611299a09d4efd37.svg b/_images/inheritance-c0bfc619b5eb2d25fc5292a1611299a09d4efd37.svg new file mode 100644 index 000000000..c3320e679 --- /dev/null +++ b/_images/inheritance-c0bfc619b5eb2d25fc5292a1611299a09d4efd37.svg @@ -0,0 +1,81 @@ + + + + + + +inheritanced7fb4a05d0 + + +AbsOperator + + +AbsOperator + + + + + +KeywordToken + + +KeywordToken + + + + + +KeywordToken->AbsOperator + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-c0ce4fa828dde8c6af5539ac69a682f389d41810.svg b/_images/inheritance-c0ce4fa828dde8c6af5539ac69a682f389d41810.svg new file mode 100644 index 000000000..4ff4a953b --- /dev/null +++ b/_images/inheritance-c0ce4fa828dde8c6af5539ac69a682f389d41810.svg @@ -0,0 +1,66 @@ + + + + + + +inheritance78cfd3407b + + +Block + + +Block + + + + + +ExpressionBlock + + +ExpressionBlock + + + + + +Block->ExpressionBlock + + + + + +CaseExpressionBlock + + +CaseExpressionBlock + + + + + +ExpressionBlockEndedByKeywordORClosingRoundBracket + + +ExpressionBlockEndedByKeywordORClosingRoundBracket + + + + + +ExpressionBlockEndedByKeywordORClosingRoundBracket->CaseExpressionBlock + + + + + +ExpressionBlock->ExpressionBlockEndedByKeywordORClosingRoundBracket + + + + + diff --git a/_images/inheritance-c1556bb8a02625be5216f4b77f6a38e5ae6561c1.svg b/_images/inheritance-c1556bb8a02625be5216f4b77f6a38e5ae6561c1.svg new file mode 100644 index 000000000..07ff14279 --- /dev/null +++ b/_images/inheritance-c1556bb8a02625be5216f4b77f6a38e5ae6561c1.svg @@ -0,0 +1,66 @@ + + + + + + +inheritance3b0adbc73f + + +BeginBlock + + +BeginBlock + + + + + +SequentialBeginBlock + + +SequentialBeginBlock + + + + + +BeginBlock->SequentialBeginBlock + + + + + +Block + + +Block + + + + + +Block->BeginBlock + + + + + +WhenBlock + + +WhenBlock + + + + + +SequentialBeginBlock->WhenBlock + + + + + diff --git a/_images/inheritance-c16adcca053f2b3be1f667fe24f3392bf9f3b16e.svg b/_images/inheritance-c16adcca053f2b3be1f667fe24f3392bf9f3b16e.svg new file mode 100644 index 000000000..a40dfa9e3 --- /dev/null +++ b/_images/inheritance-c16adcca053f2b3be1f667fe24f3392bf9f3b16e.svg @@ -0,0 +1,111 @@ + + + + + + +inheritance9d69fa5ae8 + + +AngleBracketToken + + +AngleBracketToken + + + + + +ClosingAngleBracketToken + + +ClosingAngleBracketToken + + + + + +AngleBracketToken->ClosingAngleBracketToken + + + + + +BracketToken + + +BracketToken + + + + + +BracketToken->AngleBracketToken + + + + + +SpecificVHDLToken + + +SpecificVHDLToken + + + + + +SpecificVHDLToken->BracketToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->SpecificVHDLToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-c1c89df36b31b16a4ec15ed6704e1bef243ec612.svg b/_images/inheritance-c1c89df36b31b16a4ec15ed6704e1bef243ec612.svg new file mode 100644 index 000000000..04b7cb652 --- /dev/null +++ b/_images/inheritance-c1c89df36b31b16a4ec15ed6704e1bef243ec612.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance6ca0aeb4b6 + + +Block + + +Block + + + + + +OpenBlock2 + + +OpenBlock2 + + + + + +Block->OpenBlock2 + + + + + diff --git a/_images/inheritance-c2c06243657c2f6401e2a6eed295de8a5220e466.svg b/_images/inheritance-c2c06243657c2f6401e2a6eed295de8a5220e466.svg new file mode 100644 index 000000000..a8c63bc68 --- /dev/null +++ b/_images/inheritance-c2c06243657c2f6401e2a6eed295de8a5220e466.svg @@ -0,0 +1,66 @@ + + + + + + +inheritanceb58b051c79 + + +Block + + +Block + + + + + +ExpressionBlock + + +ExpressionBlock + + + + + +Block->ExpressionBlock + + + + + +ExpressionBlockEndedBySemicolon + + +ExpressionBlockEndedBySemicolon + + + + + +ExpressionBlock->ExpressionBlockEndedBySemicolon + + + + + +SignalDeclarationDefaultExpressionBlock + + +SignalDeclarationDefaultExpressionBlock + + + + + +ExpressionBlockEndedBySemicolon->SignalDeclarationDefaultExpressionBlock + + + + + diff --git a/_images/inheritance-c328df44844981be1efaff2f67b3606db65242bf.svg b/_images/inheritance-c328df44844981be1efaff2f67b3606db65242bf.svg new file mode 100644 index 000000000..59a91ee4c --- /dev/null +++ b/_images/inheritance-c328df44844981be1efaff2f67b3606db65242bf.svg @@ -0,0 +1,36 @@ + + + + + + +inheritancea2ad267436 + + +Block + + +Block + + + + + +PortMapBeginBlock + + +PortMapBeginBlock + + + + + +Block->PortMapBeginBlock + + + + + diff --git a/_images/inheritance-c37bbcba1741db83cb2e3fee52a1cc0eaef47ece.svg b/_images/inheritance-c37bbcba1741db83cb2e3fee52a1cc0eaef47ece.svg new file mode 100644 index 000000000..3a795d9e4 --- /dev/null +++ b/_images/inheritance-c37bbcba1741db83cb2e3fee52a1cc0eaef47ece.svg @@ -0,0 +1,66 @@ + + + + + + +inheritanceb1c90b6398 + + +LinebreakToken + + +LinebreakToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->LinebreakToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-c3e1ec3ebec2ebd1222b73861d6dd2385f16ee6f.svg b/_images/inheritance-c3e1ec3ebec2ebd1222b73861d6dd2385f16ee6f.svg new file mode 100644 index 000000000..9bee4361f --- /dev/null +++ b/_images/inheritance-c3e1ec3ebec2ebd1222b73861d6dd2385f16ee6f.svg @@ -0,0 +1,150 @@ + + + + + + +inheritancef5e767ba7b + + +ANTLRHandlers + +ANTLRHandlers + + + +Application + + +Application + + + + + +ANTLRHandlers->Application + + + + + +LineTerminal + +LineTerminal + + + +LineTerminal->Application + + + + + +ArgParseMixin + + +ArgParseMixin + + + + + +ArgParseMixin->Application + + + + + +TokenStreamHandlers + +TokenStreamHandlers + + + +TokenStreamHandlers->Application + + + + + +BlockStreamHandlers + +BlockStreamHandlers + + + +BlockStreamHandlers->Application + + + + + +GroupStreamHandlers + +GroupStreamHandlers + + + +GroupStreamHandlers->Application + + + + + +CodeDOMHandlers + +CodeDOMHandlers + + + +CodeDOMHandlers->Application + + + + + +AttributeHelperMixin + + +AttributeHelperMixin + + + + + +AttributeHelperMixin->ArgParseMixin + + + + + +ILineTerminal + + +ILineTerminal + + + + + +ILineTerminal->LineTerminal + + + + + +Terminal + +Terminal + + + +Terminal->LineTerminal + + + + + diff --git a/_images/inheritance-c4ad247264625726902d94bcaafe681c589b722a.svg b/_images/inheritance-c4ad247264625726902d94bcaafe681c589b722a.svg new file mode 100644 index 000000000..097c4eda0 --- /dev/null +++ b/_images/inheritance-c4ad247264625726902d94bcaafe681c589b722a.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance0c7d0e6fe3 + + +KeywordToken + + +KeywordToken + + + + + +ReturnKeyword + + +ReturnKeyword + + + + + +KeywordToken->ReturnKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-c4cb41d32a6948facd798b55a02686f10c4c3180.svg b/_images/inheritance-c4cb41d32a6948facd798b55a02686f10c4c3180.svg new file mode 100644 index 000000000..9342a798b --- /dev/null +++ b/_images/inheritance-c4cb41d32a6948facd798b55a02686f10c4c3180.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance116f06fa3a + + +Block + + +Block + + + + + +OpenBlock + + +OpenBlock + + + + + +Block->OpenBlock + + + + + diff --git a/_images/inheritance-c4e7e06372146f38a8344b62330199e071994a04.svg b/_images/inheritance-c4e7e06372146f38a8344b62330199e071994a04.svg new file mode 100644 index 000000000..ba3e08f69 --- /dev/null +++ b/_images/inheritance-c4e7e06372146f38a8344b62330199e071994a04.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance41aa18b5b0 + + +InoutKeyword + + +InoutKeyword + + + + + +KeywordToken + + +KeywordToken + + + + + +KeywordToken->InoutKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-c5572ac559f5f473c775d7f51ed8c96d3e0d6af7.svg b/_images/inheritance-c5572ac559f5f473c775d7f51ed8c96d3e0d6af7.svg new file mode 100644 index 000000000..bb5244e5b --- /dev/null +++ b/_images/inheritance-c5572ac559f5f473c775d7f51ed8c96d3e0d6af7.svg @@ -0,0 +1,57 @@ + + + + + + +inheritance4e0e4303f5 + + +Block + + +Block + + + + + +FinalBlock + + +FinalBlock + + + + + +Block->FinalBlock + + + + + +EndBlock + + +EndBlock + + + + + +EndBlock->EndBlock + + + + + +FinalBlock->EndBlock + + + + + diff --git a/_images/inheritance-c5888cb6a4b66dce2a84bb0974bada9795ae1a95.svg b/_images/inheritance-c5888cb6a4b66dce2a84bb0974bada9795ae1a95.svg new file mode 100644 index 000000000..0ed750257 --- /dev/null +++ b/_images/inheritance-c5888cb6a4b66dce2a84bb0974bada9795ae1a95.svg @@ -0,0 +1,96 @@ + + + + + + +inheritanced267ef165d + + +KeywordToken + + +KeywordToken + + + + + +Operator + + +Operator + + + + + +KeywordToken->Operator + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +LogicalOperator + + +LogicalOperator + + + + + +Operator->LogicalOperator + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-c7576f9d69a17444d5f65fea1dd2be23d3540743.svg b/_images/inheritance-c7576f9d69a17444d5f65fea1dd2be23d3540743.svg new file mode 100644 index 000000000..592813375 --- /dev/null +++ b/_images/inheritance-c7576f9d69a17444d5f65fea1dd2be23d3540743.svg @@ -0,0 +1,81 @@ + + + + + + +inheritancefc96cc158b + + +StartOf + + +StartOf + + + + + +StartOfDocument + + +StartOfDocument + + + + + +StartOf->StartOfDocument + + + + + +StartOfDocumentToken + + +StartOfDocumentToken + + + + + +StartOfDocument->StartOfDocumentToken + + + + + +StartOfToken + + +StartOfToken + + + + + +StartOfToken->StartOfDocumentToken + + + + + +Token + + +Token + + + + + +Token->StartOfToken + + + + + diff --git a/_images/inheritance-c876e4d35a6776134c708b60d9132aa3f415fbaa.svg b/_images/inheritance-c876e4d35a6776134c708b60d9132aa3f415fbaa.svg new file mode 100644 index 000000000..d61ac019b --- /dev/null +++ b/_images/inheritance-c876e4d35a6776134c708b60d9132aa3f415fbaa.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance8ca452a81b + + +GenericMapGroup + + +GenericMapGroup + + + + + +Group + + +Group + + + + + +Group->GenericMapGroup + + + + + diff --git a/_images/inheritance-c9ad3b213af2105eec3fba0fefd84f264cad1ada.svg b/_images/inheritance-c9ad3b213af2105eec3fba0fefd84f264cad1ada.svg new file mode 100644 index 000000000..316bc03d2 --- /dev/null +++ b/_images/inheritance-c9ad3b213af2105eec3fba0fefd84f264cad1ada.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance25c5c82dfd + + +EndOf + + +EndOf + + + + + +EndOfSnippet + + +EndOfSnippet + + + + + +EndOf->EndOfSnippet + + + + + +EndOfSnippetToken + + +EndOfSnippetToken + + + + + +EndOfSnippet->EndOfSnippetToken + + + + + +EndOfToken + + +EndOfToken + + + + + +EndOfToken->EndOfSnippetToken + + + + + +Token + + +Token + + + + + +Token->EndOfToken + + + + + diff --git a/_images/inheritance-c9d67a85d5f54b25a78d32fc51cbad4865b30ffd.svg b/_images/inheritance-c9d67a85d5f54b25a78d32fc51cbad4865b30ffd.svg new file mode 100644 index 000000000..4c6239eec --- /dev/null +++ b/_images/inheritance-c9d67a85d5f54b25a78d32fc51cbad4865b30ffd.svg @@ -0,0 +1,21 @@ + + + + + + +inheritancee06be56031 + + +EnumerationLiteral + + +EnumerationLiteral + + + + + diff --git a/_images/inheritance-ca67abff2698e74759c7b8de4155ab074ec78575.svg b/_images/inheritance-ca67abff2698e74759c7b8de4155ab074ec78575.svg new file mode 100644 index 000000000..67a3638d3 --- /dev/null +++ b/_images/inheritance-ca67abff2698e74759c7b8de4155ab074ec78575.svg @@ -0,0 +1,81 @@ + + + + + + +inheritanceebd581d25c + + +StartOf + + +StartOf + + + + + +StartOfDocument + + +StartOfDocument + + + + + +StartOf->StartOfDocument + + + + + +StartOfDocumentToken + + +StartOfDocumentToken + + + + + +StartOfDocument->StartOfDocumentToken + + + + + +StartOfToken + + +StartOfToken + + + + + +StartOfToken->StartOfDocumentToken + + + + + +Token + + +Token + + + + + +Token->StartOfToken + + + + + diff --git a/_images/inheritance-caae3875a664fb7e624c1a529c0caef6c0d7bb4a.svg b/_images/inheritance-caae3875a664fb7e624c1a529c0caef6c0d7bb4a.svg new file mode 100644 index 000000000..7210fba1e --- /dev/null +++ b/_images/inheritance-caae3875a664fb7e624c1a529c0caef6c0d7bb4a.svg @@ -0,0 +1,114 @@ + + + + + + +inheritanceb66c0c19c1 + + +DesignUnit + + +DesignUnit + + + + + +SecondaryUnit + + +SecondaryUnit + + + + + +DesignUnit->SecondaryUnit + + + + + +ModelEntity + + +ModelEntity + + + + + +ModelEntity->DesignUnit + + + + + +NamedEntityMixin + + +NamedEntityMixin + + + + + +NamedEntityMixin->DesignUnit + + + + + +DocumentedEntityMixin + + +DocumentedEntityMixin + + + + + +DocumentedEntityMixin->DesignUnit + + + + + +DesignUnitWithContextMixin + +DesignUnitWithContextMixin + + + +PackageBody + + +PackageBody + + + + + +DesignUnitWithContextMixin->PackageBody + + + + + +PackageBody->PackageBody + + + + + +SecondaryUnit->PackageBody + + + + + diff --git a/_images/inheritance-caf0cc957253363415b6437f99d985bdaf1a7129.svg b/_images/inheritance-caf0cc957253363415b6437f99d985bdaf1a7129.svg new file mode 100644 index 000000000..9594012fe --- /dev/null +++ b/_images/inheritance-caf0cc957253363415b6437f99d985bdaf1a7129.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance1f3eba86de + + +BlockKeyword + + +BlockKeyword + + + + + +KeywordToken + + +KeywordToken + + + + + +KeywordToken->BlockKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-cc377c2d75038ef97aba69c077322455cc001e21.svg b/_images/inheritance-cc377c2d75038ef97aba69c077322455cc001e21.svg new file mode 100644 index 000000000..9a8f4927e --- /dev/null +++ b/_images/inheritance-cc377c2d75038ef97aba69c077322455cc001e21.svg @@ -0,0 +1,42 @@ + + + + + + +inheritanced9ef7a3b00 + + +ConcurrentDeclarativeRegion + + +ConcurrentDeclarativeRegion + + + + + +DeclarativeRegion + + +DeclarativeRegion + + + + + +ConcurrentDeclarativeRegion->DeclarativeRegion + + + + + +DeclarativeRegion->ConcurrentDeclarativeRegion + + + + + diff --git a/_images/inheritance-cc3d29e1f37d3c26818dd9ca8a0bedba3a4ccc8e.svg b/_images/inheritance-cc3d29e1f37d3c26818dd9ca8a0bedba3a4ccc8e.svg new file mode 100644 index 000000000..9b5ce2daf --- /dev/null +++ b/_images/inheritance-cc3d29e1f37d3c26818dd9ca8a0bedba3a4ccc8e.svg @@ -0,0 +1,66 @@ + + + + + + +inheritanceb43c2a0741 + + +BeginBlock + + +BeginBlock + + + + + +SequentialBeginBlock + + +SequentialBeginBlock + + + + + +BeginBlock->SequentialBeginBlock + + + + + +Block + + +Block + + + + + +Block->BeginBlock + + + + + +ThenBlock + + +ThenBlock + + + + + +SequentialBeginBlock->ThenBlock + + + + + diff --git a/_images/inheritance-cd5269f551c0f09ab6e2336bcc7db4ec11b91b5a.svg b/_images/inheritance-cd5269f551c0f09ab6e2336bcc7db4ec11b91b5a.svg new file mode 100644 index 000000000..3101a41f6 --- /dev/null +++ b/_images/inheritance-cd5269f551c0f09ab6e2336bcc7db4ec11b91b5a.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance493a2b2bda + + +KeywordToken + + +KeywordToken + + + + + +ProcessKeyword + + +ProcessKeyword + + + + + +KeywordToken->ProcessKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-cd8f644606c4f3f8459bc0d9a38ac395a2b31598.svg b/_images/inheritance-cd8f644606c4f3f8459bc0d9a38ac395a2b31598.svg new file mode 100644 index 000000000..996aff7ee --- /dev/null +++ b/_images/inheritance-cd8f644606c4f3f8459bc0d9a38ac395a2b31598.svg @@ -0,0 +1,81 @@ + + + + + + +inheritanceffa27ca0db + + +KeywordToken + + +KeywordToken + + + + + +UnitsKeyword + + +UnitsKeyword + + + + + +KeywordToken->UnitsKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-cd961c5873166582b0a70ff98e353702ed704315.svg b/_images/inheritance-cd961c5873166582b0a70ff98e353702ed704315.svg new file mode 100644 index 000000000..cbfaafe00 --- /dev/null +++ b/_images/inheritance-cd961c5873166582b0a70ff98e353702ed704315.svg @@ -0,0 +1,66 @@ + + + + + + +inheritanceea9b6ee2c2 + + +Block + + +Block + + + + + +ExpressionBlock + + +ExpressionBlock + + + + + +Block->ExpressionBlock + + + + + +ExpressionBlockEndedByKeywordORClosingRoundBracket + + +ExpressionBlockEndedByKeywordORClosingRoundBracket + + + + + +ExpressionBlock->ExpressionBlockEndedByKeywordORClosingRoundBracket + + + + + +ExpressionBlockEndedByLoop + + +ExpressionBlockEndedByLoop + + + + + +ExpressionBlockEndedByKeywordORClosingRoundBracket->ExpressionBlockEndedByLoop + + + + + diff --git a/_images/inheritance-ce20a291b7d069a29458f8d9550f33216d2c90ae.svg b/_images/inheritance-ce20a291b7d069a29458f8d9550f33216d2c90ae.svg new file mode 100644 index 000000000..fca9c90eb --- /dev/null +++ b/_images/inheritance-ce20a291b7d069a29458f8d9550f33216d2c90ae.svg @@ -0,0 +1,21 @@ + + + + + + +inheritanced61365b579 + + +BlockIterator + + +BlockIterator + + + + + diff --git a/_images/inheritance-ce69c58fbdd3702f2212927616f23e2bc59c7022.svg b/_images/inheritance-ce69c58fbdd3702f2212927616f23e2bc59c7022.svg new file mode 100644 index 000000000..077b23ad1 --- /dev/null +++ b/_images/inheritance-ce69c58fbdd3702f2212927616f23e2bc59c7022.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance3d90d4aed0 + + +KeywordToken + + +KeywordToken + + + + + +ParameterKeyword + + +ParameterKeyword + + + + + +KeywordToken->ParameterKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-cec504a327e9df91d08ee4df932927a38ac6e590.svg b/_images/inheritance-cec504a327e9df91d08ee4df932927a38ac6e590.svg new file mode 100644 index 000000000..69d4adffb --- /dev/null +++ b/_images/inheritance-cec504a327e9df91d08ee4df932927a38ac6e590.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance6fb0b1f176 + + +DirectionKeyword + + +DirectionKeyword + + + + + +KeywordToken + + +KeywordToken + + + + + +KeywordToken->DirectionKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-cfb2c8b06735ecc315dfe67bdc5b22626383eb92.svg b/_images/inheritance-cfb2c8b06735ecc315dfe67bdc5b22626383eb92.svg new file mode 100644 index 000000000..61b2245c6 --- /dev/null +++ b/_images/inheritance-cfb2c8b06735ecc315dfe67bdc5b22626383eb92.svg @@ -0,0 +1,57 @@ + + + + + + +inheritance4e0e4303f5 + + +Block + + +Block + + + + + +FinalBlock + + +FinalBlock + + + + + +Block->FinalBlock + + + + + +EndBlock + + +EndBlock + + + + + +EndBlock->EndBlock + + + + + +FinalBlock->EndBlock + + + + + diff --git a/_images/inheritance-cfc3ea7c86a111a7357b0f55dcf4bfa36f4a4fc4.svg b/_images/inheritance-cfc3ea7c86a111a7357b0f55dcf4bfa36f4a4fc4.svg new file mode 100644 index 000000000..c94aba38e --- /dev/null +++ b/_images/inheritance-cfc3ea7c86a111a7357b0f55dcf4bfa36f4a4fc4.svg @@ -0,0 +1,96 @@ + + + + + + +inheritancefb6d47ad79 + + +AssociationKeyword + + +AssociationKeyword + + + + + +SignalAssociationKeyword + + +SignalAssociationKeyword + + + + + +AssociationKeyword->SignalAssociationKeyword + + + + + +MultiCharKeyword + + +MultiCharKeyword + + + + + +MultiCharKeyword->AssociationKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->MultiCharKeyword + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-d03d31a0bbc037b1e94022577340ac0a9ad877ef.svg b/_images/inheritance-d03d31a0bbc037b1e94022577340ac0a9ad877ef.svg new file mode 100644 index 000000000..42c0aeb2e --- /dev/null +++ b/_images/inheritance-d03d31a0bbc037b1e94022577340ac0a9ad877ef.svg @@ -0,0 +1,81 @@ + + + + + + +inheritancec7e9c3e4c5 + + +AliasKeyword + + +AliasKeyword + + + + + +KeywordToken + + +KeywordToken + + + + + +KeywordToken->AliasKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-d03f92ec6bf26132642a7f682844bc387a2b0867.svg b/_images/inheritance-d03f92ec6bf26132642a7f682844bc387a2b0867.svg new file mode 100644 index 000000000..abd588143 --- /dev/null +++ b/_images/inheritance-d03f92ec6bf26132642a7f682844bc387a2b0867.svg @@ -0,0 +1,42 @@ + + + + + + +inheritanced9ef7a3b00 + + +ConcurrentDeclarativeRegion + + +ConcurrentDeclarativeRegion + + + + + +DeclarativeRegion + + +DeclarativeRegion + + + + + +ConcurrentDeclarativeRegion->DeclarativeRegion + + + + + +DeclarativeRegion->ConcurrentDeclarativeRegion + + + + + diff --git a/_images/inheritance-d0bdea618420749acc3282dc69d1900b0c084019.svg b/_images/inheritance-d0bdea618420749acc3282dc69d1900b0c084019.svg new file mode 100644 index 000000000..d1e421dc8 --- /dev/null +++ b/_images/inheritance-d0bdea618420749acc3282dc69d1900b0c084019.svg @@ -0,0 +1,96 @@ + + + + + + +inheritance851412a156 + + +KeywordToken + + +KeywordToken + + + + + +Operator + + +Operator + + + + + +KeywordToken->Operator + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +MiscellaneousOperator + + +MiscellaneousOperator + + + + + +Operator->MiscellaneousOperator + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-d0e15b8f6657db6db6c61ab79c6fd92c99c8b561.svg b/_images/inheritance-d0e15b8f6657db6db6c61ab79c6fd92c99c8b561.svg new file mode 100644 index 000000000..a4354e91b --- /dev/null +++ b/_images/inheritance-d0e15b8f6657db6db6c61ab79c6fd92c99c8b561.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance43e7c4c307 + + +ForceKeyword + + +ForceKeyword + + + + + +KeywordToken + + +KeywordToken + + + + + +KeywordToken->ForceKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-d1603d4f764c4cba14c25bae3e31050b4cc28f4f.svg b/_images/inheritance-d1603d4f764c4cba14c25bae3e31050b4cc28f4f.svg new file mode 100644 index 000000000..473ca849e --- /dev/null +++ b/_images/inheritance-d1603d4f764c4cba14c25bae3e31050b4cc28f4f.svg @@ -0,0 +1,36 @@ + + + + + + +inheritancec1ceb6b2de + + +Block + + +Block + + + + + +EntityInstantiationBlock + + +EntityInstantiationBlock + + + + + +Block->EntityInstantiationBlock + + + + + diff --git a/_images/inheritance-d22e6de0b5c5cb6d9a421c81b538c0a34933835d.svg b/_images/inheritance-d22e6de0b5c5cb6d9a421c81b538c0a34933835d.svg new file mode 100644 index 000000000..b99a8fa0d --- /dev/null +++ b/_images/inheritance-d22e6de0b5c5cb6d9a421c81b538c0a34933835d.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance6659650113 + + +Block + + +Block + + + + + +CaseBlock + + +CaseBlock + + + + + +Block->CaseBlock + + + + + diff --git a/_images/inheritance-d2bc4e4bca5f0be63ae765f0d9f250cfbf3b7425.svg b/_images/inheritance-d2bc4e4bca5f0be63ae765f0d9f250cfbf3b7425.svg new file mode 100644 index 000000000..70838aab7 --- /dev/null +++ b/_images/inheritance-d2bc4e4bca5f0be63ae765f0d9f250cfbf3b7425.svg @@ -0,0 +1,51 @@ + + + + + + +inheritance99672201ed + + +Block + + +Block + + + + + +InterfaceObjectBlock + + +InterfaceObjectBlock + + + + + +Block->InterfaceObjectBlock + + + + + +InterfaceSignalBlock + + +InterfaceSignalBlock + + + + + +InterfaceObjectBlock->InterfaceSignalBlock + + + + + diff --git a/_images/inheritance-d2f5698c2c1bed1591ff059ed57bd6be1070541b.svg b/_images/inheritance-d2f5698c2c1bed1591ff059ed57bd6be1070541b.svg new file mode 100644 index 000000000..ee0e658dc --- /dev/null +++ b/_images/inheritance-d2f5698c2c1bed1591ff059ed57bd6be1070541b.svg @@ -0,0 +1,66 @@ + + + + + + +inheritance3a2848f940 + + +Block + + +Block + + + + + +ExpressionBlock + + +ExpressionBlock + + + + + +Block->ExpressionBlock + + + + + +DefaultValueExpressionBlock + + +DefaultValueExpressionBlock + + + + + +ExpressionBlockEndedByCharORClosingRoundBracket + + +ExpressionBlockEndedByCharORClosingRoundBracket + + + + + +ExpressionBlockEndedByCharORClosingRoundBracket->DefaultValueExpressionBlock + + + + + +ExpressionBlock->ExpressionBlockEndedByCharORClosingRoundBracket + + + + + diff --git a/_images/inheritance-d33848901e7c4d70b44efbafe3125af024b979d6.svg b/_images/inheritance-d33848901e7c4d70b44efbafe3125af024b979d6.svg new file mode 100644 index 000000000..a53ee2366 --- /dev/null +++ b/_images/inheritance-d33848901e7c4d70b44efbafe3125af024b979d6.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance116f06fa3a + + +Block + + +Block + + + + + +OpenBlock + + +OpenBlock + + + + + +Block->OpenBlock + + + + + diff --git a/_images/inheritance-d345db1f5c58c8b43187e245d61af362eb2ada3f.svg b/_images/inheritance-d345db1f5c58c8b43187e245d61af362eb2ada3f.svg new file mode 100644 index 000000000..f4bdb562f --- /dev/null +++ b/_images/inheritance-d345db1f5c58c8b43187e245d61af362eb2ada3f.svg @@ -0,0 +1,114 @@ + + + + + + +inheritanceca535f21be + + +DesignUnit + + +DesignUnit + + + + + +PrimaryUnit + + +PrimaryUnit + + + + + +DesignUnit->PrimaryUnit + + + + + +ModelEntity + + +ModelEntity + + + + + +ModelEntity->DesignUnit + + + + + +NamedEntityMixin + + +NamedEntityMixin + + + + + +NamedEntityMixin->DesignUnit + + + + + +DocumentedEntityMixin + + +DocumentedEntityMixin + + + + + +DocumentedEntityMixin->DesignUnit + + + + + +DesignUnitWithContextMixin + +DesignUnitWithContextMixin + + + +Package + + +Package + + + + + +DesignUnitWithContextMixin->Package + + + + + +Package->Package + + + + + +PrimaryUnit->Package + + + + + diff --git a/_images/inheritance-d3bcc9e227e00cc4886db87cc35686ebaf97549f.svg b/_images/inheritance-d3bcc9e227e00cc4886db87cc35686ebaf97549f.svg new file mode 100644 index 000000000..ee6046890 --- /dev/null +++ b/_images/inheritance-d3bcc9e227e00cc4886db87cc35686ebaf97549f.svg @@ -0,0 +1,57 @@ + + + + + + +inheritance93cba77a7d + + +BeginBlock + + +BeginBlock + + + + + +SequentialBeginBlock + + +SequentialBeginBlock + + + + + +BeginBlock->SequentialBeginBlock + + + + + +Block + + +Block + + + + + +Block->BeginBlock + + + + + +SequentialBeginBlock->BeginBlock + + + + + diff --git a/_images/inheritance-d3e24253a5a523a1138a1238da6318c4d2cc60cc.svg b/_images/inheritance-d3e24253a5a523a1138a1238da6318c4d2cc60cc.svg new file mode 100644 index 000000000..1ad504dad --- /dev/null +++ b/_images/inheritance-d3e24253a5a523a1138a1238da6318c4d2cc60cc.svg @@ -0,0 +1,138 @@ + + + + + + +inheritance60a498c76a + + +Architecture + + +Architecture + + + + + +Architecture->Architecture + + + + + +SecondaryUnit + + +SecondaryUnit + + + + + +SecondaryUnit->Architecture + + + + + +DesignUnitWithContextMixin + +DesignUnitWithContextMixin + + + +DesignUnitWithContextMixin->Architecture + + + + + +ConcurrentDeclarations + +ConcurrentDeclarations + + + +ConcurrentDeclarations->Architecture + + + + + +ConcurrentStatements + +ConcurrentStatements + + + +ConcurrentStatements->Architecture + + + + + +DesignUnit + + +DesignUnit + + + + + +DesignUnit->SecondaryUnit + + + + + +ModelEntity + + +ModelEntity + + + + + +ModelEntity->DesignUnit + + + + + +NamedEntityMixin + + +NamedEntityMixin + + + + + +NamedEntityMixin->DesignUnit + + + + + +DocumentedEntityMixin + + +DocumentedEntityMixin + + + + + +DocumentedEntityMixin->DesignUnit + + + + + diff --git a/_images/inheritance-d41fe8b80b09a6e3077ff0ae0a068950b1786ce0.svg b/_images/inheritance-d41fe8b80b09a6e3077ff0ae0a068950b1786ce0.svg new file mode 100644 index 000000000..b021f3ac1 --- /dev/null +++ b/_images/inheritance-d41fe8b80b09a6e3077ff0ae0a068950b1786ce0.svg @@ -0,0 +1,21 @@ + + + + + + +inheritance064852a8a0 + + +Parameter + + +Parameter + + + + + diff --git a/_images/inheritance-d5804bf2797f1b215bf6283426ab7c624b0309c9.svg b/_images/inheritance-d5804bf2797f1b215bf6283426ab7c624b0309c9.svg new file mode 100644 index 000000000..7416353ac --- /dev/null +++ b/_images/inheritance-d5804bf2797f1b215bf6283426ab7c624b0309c9.svg @@ -0,0 +1,114 @@ + + + + + + +inheritanceb66c0c19c1 + + +DesignUnit + + +DesignUnit + + + + + +SecondaryUnit + + +SecondaryUnit + + + + + +DesignUnit->SecondaryUnit + + + + + +ModelEntity + + +ModelEntity + + + + + +ModelEntity->DesignUnit + + + + + +NamedEntityMixin + + +NamedEntityMixin + + + + + +NamedEntityMixin->DesignUnit + + + + + +DocumentedEntityMixin + + +DocumentedEntityMixin + + + + + +DocumentedEntityMixin->DesignUnit + + + + + +DesignUnitWithContextMixin + +DesignUnitWithContextMixin + + + +PackageBody + + +PackageBody + + + + + +DesignUnitWithContextMixin->PackageBody + + + + + +PackageBody->PackageBody + + + + + +SecondaryUnit->PackageBody + + + + + diff --git a/_images/inheritance-d68e17aa02556eaa7c85aa8a2e2d3b0ff5ff71ea.svg b/_images/inheritance-d68e17aa02556eaa7c85aa8a2e2d3b0ff5ff71ea.svg new file mode 100644 index 000000000..6fc5d3dc5 --- /dev/null +++ b/_images/inheritance-d68e17aa02556eaa7c85aa8a2e2d3b0ff5ff71ea.svg @@ -0,0 +1,72 @@ + + + + + + +inheritance6ecc41ac36 + + +Block + + +Block + + + + + +FinalBlock + + +FinalBlock + + + + + +Block->FinalBlock + + + + + +EndBlock + + +EndBlock + + + + + +EndGenerateBlock + + +EndGenerateBlock + + + + + +EndBlock->EndGenerateBlock + + + + + +FinalBlock->EndBlock + + + + + +EndGenerateBlock->EndGenerateBlock + + + + + diff --git a/_images/inheritance-d7873db106e7d542e8072b860dcae834d7bd2378.svg b/_images/inheritance-d7873db106e7d542e8072b860dcae834d7bd2378.svg new file mode 100644 index 000000000..4f626bf69 --- /dev/null +++ b/_images/inheritance-d7873db106e7d542e8072b860dcae834d7bd2378.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance9c4a964c84 + + +Group + + +Group + + + + + +PackageBodyGroup + + +PackageBodyGroup + + + + + +Group->PackageBodyGroup + + + + + diff --git a/_images/inheritance-d8ebe1616497dbcb84a463cf8700f4e694861369.svg b/_images/inheritance-d8ebe1616497dbcb84a463cf8700f4e694861369.svg new file mode 100644 index 000000000..c81f454bb --- /dev/null +++ b/_images/inheritance-d8ebe1616497dbcb84a463cf8700f4e694861369.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance7c74b26020 + + +KeywordToken + + +KeywordToken + + + + + +NullKeyword + + +NullKeyword + + + + + +KeywordToken->NullKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-d8fdb8d7611b35f4b6f5bcb95dead192c292ef04.svg b/_images/inheritance-d8fdb8d7611b35f4b6f5bcb95dead192c292ef04.svg new file mode 100644 index 000000000..64d6c1fce --- /dev/null +++ b/_images/inheritance-d8fdb8d7611b35f4b6f5bcb95dead192c292ef04.svg @@ -0,0 +1,96 @@ + + + + + + +inheritance27c6805fe9 + + +OperatorToken + + +OperatorToken + + + + + +PlusOperator + + +PlusOperator + + + + + +OperatorToken->PlusOperator + + + + + +SpecificVHDLToken + + +SpecificVHDLToken + + + + + +SpecificVHDLToken->OperatorToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->SpecificVHDLToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-d909c7f784bca2552ef41986fae51e5b9a1fcad1.svg b/_images/inheritance-d909c7f784bca2552ef41986fae51e5b9a1fcad1.svg new file mode 100644 index 000000000..32eee037b --- /dev/null +++ b/_images/inheritance-d909c7f784bca2552ef41986fae51e5b9a1fcad1.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance9ec783f417 + + +AccessKeyword + + +AccessKeyword + + + + + +KeywordToken + + +KeywordToken + + + + + +KeywordToken->AccessKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-d9d161899d8de6125b77ffdd125f77f4c43cb078.svg b/_images/inheritance-d9d161899d8de6125b77ffdd125f77f4c43cb078.svg new file mode 100644 index 000000000..0df5c8bfa --- /dev/null +++ b/_images/inheritance-d9d161899d8de6125b77ffdd125f77f4c43cb078.svg @@ -0,0 +1,114 @@ + + + + + + +inheritancec74d712283 + + +Configuration + + +Configuration + + + + + +Configuration->Configuration + + + + + +PrimaryUnit + + +PrimaryUnit + + + + + +PrimaryUnit->Configuration + + + + + +DesignUnitWithContextMixin + +DesignUnitWithContextMixin + + + +DesignUnitWithContextMixin->Configuration + + + + + +DesignUnit + + +DesignUnit + + + + + +DesignUnit->PrimaryUnit + + + + + +ModelEntity + + +ModelEntity + + + + + +ModelEntity->DesignUnit + + + + + +NamedEntityMixin + + +NamedEntityMixin + + + + + +NamedEntityMixin->DesignUnit + + + + + +DocumentedEntityMixin + + +DocumentedEntityMixin + + + + + +DocumentedEntityMixin->DesignUnit + + + + + diff --git a/_images/inheritance-da7a1db997c613db8eee4bd3841a282fb9855839.svg b/_images/inheritance-da7a1db997c613db8eee4bd3841a282fb9855839.svg new file mode 100644 index 000000000..52191aefd --- /dev/null +++ b/_images/inheritance-da7a1db997c613db8eee4bd3841a282fb9855839.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance747f0be334 + + +AssertGroup + + +AssertGroup + + + + + +Group + + +Group + + + + + +Group->AssertGroup + + + + + diff --git a/_images/inheritance-da8205dd60eb95c9891a98a17cbbe51f13f7b361.svg b/_images/inheritance-da8205dd60eb95c9891a98a17cbbe51f13f7b361.svg new file mode 100644 index 000000000..c7b4964d8 --- /dev/null +++ b/_images/inheritance-da8205dd60eb95c9891a98a17cbbe51f13f7b361.svg @@ -0,0 +1,21 @@ + + + + + + +inheritance1c5ea5749e + + +ModelBase + + +ModelBase + + + + + diff --git a/_images/inheritance-dbc15a959fe83c9383eefdb708f3ee98c2eac57d.svg b/_images/inheritance-dbc15a959fe83c9383eefdb708f3ee98c2eac57d.svg new file mode 100644 index 000000000..e3ecdd8ec --- /dev/null +++ b/_images/inheritance-dbc15a959fe83c9383eefdb708f3ee98c2eac57d.svg @@ -0,0 +1,81 @@ + + + + + + +inheritancefaae8a662e + + +Block + + +Block + + + + + +EndOfBlock + + +EndOfBlock + + + + + +Block->EndOfBlock + + + + + +EndOf + + +EndOf + + + + + +EndOfDocument + + +EndOfDocument + + + + + +EndOf->EndOfDocument + + + + + +EndOfDocumentBlock + + +EndOfDocumentBlock + + + + + +EndOfBlock->EndOfDocumentBlock + + + + + +EndOfDocument->EndOfDocumentBlock + + + + + diff --git a/_images/inheritance-dc0aa7132b5108b025aed74d5bf92a3e7a88130a.svg b/_images/inheritance-dc0aa7132b5108b025aed74d5bf92a3e7a88130a.svg new file mode 100644 index 000000000..2b7a133b3 --- /dev/null +++ b/_images/inheritance-dc0aa7132b5108b025aed74d5bf92a3e7a88130a.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance88cccfbe26 + + +Block + + +Block + + + + + +RecordResolutionIndicationBlock + + +RecordResolutionIndicationBlock + + + + + +Block->RecordResolutionIndicationBlock + + + + + diff --git a/_images/inheritance-dd2cd1046a7f898d7410e26a3cacd1e1ebc8d725.svg b/_images/inheritance-dd2cd1046a7f898d7410e26a3cacd1e1ebc8d725.svg new file mode 100644 index 000000000..7d23e6714 --- /dev/null +++ b/_images/inheritance-dd2cd1046a7f898d7410e26a3cacd1e1ebc8d725.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance1c0f3a4066 + + +KeywordToken + + +KeywordToken + + + + + +MapKeyword + + +MapKeyword + + + + + +KeywordToken->MapKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-de1fbda89e893d255f2b5f147314f64018569cfa.svg b/_images/inheritance-de1fbda89e893d255f2b5f147314f64018569cfa.svg new file mode 100644 index 000000000..42b09dc98 --- /dev/null +++ b/_images/inheritance-de1fbda89e893d255f2b5f147314f64018569cfa.svg @@ -0,0 +1,111 @@ + + + + + + +inheritance2f1158b7a4 + + +KeywordToken + + +KeywordToken + + + + + +Operator + + +Operator + + + + + +KeywordToken->Operator + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +LogicalOperator + + +LogicalOperator + + + + + +XnorOperator + + +XnorOperator + + + + + +LogicalOperator->XnorOperator + + + + + +Operator->LogicalOperator + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-de67b8d7ed3e12e8bee6a52df5a89895e63abb96.svg b/_images/inheritance-de67b8d7ed3e12e8bee6a52df5a89895e63abb96.svg new file mode 100644 index 000000000..d28f4f0b8 --- /dev/null +++ b/_images/inheritance-de67b8d7ed3e12e8bee6a52df5a89895e63abb96.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance836ecb23a7 + + +EndOfGroup + + +EndOfGroup + + + + + +Group + + +Group + + + + + +Group->EndOfGroup + + + + + diff --git a/_images/inheritance-dec81a7802d79370dc416238261c8ea8af9c5394.svg b/_images/inheritance-dec81a7802d79370dc416238261c8ea8af9c5394.svg new file mode 100644 index 000000000..bb505f2ea --- /dev/null +++ b/_images/inheritance-dec81a7802d79370dc416238261c8ea8af9c5394.svg @@ -0,0 +1,21 @@ + + + + + + +inheritance0cfbc1ad28 + + +Scheduler + + +Scheduler + + + + + diff --git a/_images/inheritance-df091bf5ae0f5a1d1e3fb956b3e695a00ea1e041.svg b/_images/inheritance-df091bf5ae0f5a1d1e3fb956b3e695a00ea1e041.svg new file mode 100644 index 000000000..cccf4ae7c --- /dev/null +++ b/_images/inheritance-df091bf5ae0f5a1d1e3fb956b3e695a00ea1e041.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance8ddc86740d + + +GenericMapItemGroup + + +GenericMapItemGroup + + + + + +Group + + +Group + + + + + +Group->GenericMapItemGroup + + + + + diff --git a/_images/inheritance-df97ef1fca55610fa027d9be478a2ed23fd719fc.svg b/_images/inheritance-df97ef1fca55610fa027d9be478a2ed23fd719fc.svg new file mode 100644 index 000000000..480d0da3d --- /dev/null +++ b/_images/inheritance-df97ef1fca55610fa027d9be478a2ed23fd719fc.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance6355496f69 + + +Block + + +Block + + + + + +LoopIterationDirectionBlock + + +LoopIterationDirectionBlock + + + + + +Block->LoopIterationDirectionBlock + + + + + diff --git a/_images/inheritance-e00bd75aaa4a331aae9cbeec40828c17495a63c5.svg b/_images/inheritance-e00bd75aaa4a331aae9cbeec40828c17495a63c5.svg new file mode 100644 index 000000000..9e608c842 --- /dev/null +++ b/_images/inheritance-e00bd75aaa4a331aae9cbeec40828c17495a63c5.svg @@ -0,0 +1,66 @@ + + + + + + +inheritance34d1b8eb34 + + +Block + + +Block + + + + + +EndOfStatementBlock + + +EndOfStatementBlock + + + + + +Block->EndOfStatementBlock + + + + + +ConstantDeclarationEndMarkerBlock + + +ConstantDeclarationEndMarkerBlock + + + + + +ObjectDeclarationEndMarkerBlock + + +ObjectDeclarationEndMarkerBlock + + + + + +ObjectDeclarationEndMarkerBlock->ConstantDeclarationEndMarkerBlock + + + + + +EndOfStatementBlock->ObjectDeclarationEndMarkerBlock + + + + + diff --git a/_images/inheritance-e00cc59910a78b5e51a550461e234798d3075ae8.svg b/_images/inheritance-e00cc59910a78b5e51a550461e234798d3075ae8.svg new file mode 100644 index 000000000..b4c0b69a3 --- /dev/null +++ b/_images/inheritance-e00cc59910a78b5e51a550461e234798d3075ae8.svg @@ -0,0 +1,81 @@ + + + + + + +inheritancef46af318de + + +KeywordToken + + +KeywordToken + + + + + +PackageKeyword + + +PackageKeyword + + + + + +KeywordToken->PackageKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-e0bef44bc01dda2e25de5c9381e1311f485d4a33.svg b/_images/inheritance-e0bef44bc01dda2e25de5c9381e1311f485d4a33.svg new file mode 100644 index 000000000..9c64e9fc4 --- /dev/null +++ b/_images/inheritance-e0bef44bc01dda2e25de5c9381e1311f485d4a33.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance1ce969dd0f + + +Block + + +Block + + + + + +EndOfStatementBlock + + +EndOfStatementBlock + + + + + +Block->EndOfStatementBlock + + + + + diff --git a/_images/inheritance-e22fef0aeefc45578a6e137669f241b4a09b90e2.svg b/_images/inheritance-e22fef0aeefc45578a6e137669f241b4a09b90e2.svg new file mode 100644 index 000000000..f58a98e76 --- /dev/null +++ b/_images/inheritance-e22fef0aeefc45578a6e137669f241b4a09b90e2.svg @@ -0,0 +1,66 @@ + + + + + + +inheritanced6aa9a6ca0 + + +Block + + +Block + + + + + +ExpressionBlock + + +ExpressionBlock + + + + + +Block->ExpressionBlock + + + + + +ExpressionBlockEndedBySemicolon + + +ExpressionBlockEndedBySemicolon + + + + + +ExpressionBlock->ExpressionBlockEndedBySemicolon + + + + + +NextConditionBlock + + +NextConditionBlock + + + + + +ExpressionBlockEndedBySemicolon->NextConditionBlock + + + + + diff --git a/_images/inheritance-e2a414e662628cb995b5435036ddda0fc0af3792.svg b/_images/inheritance-e2a414e662628cb995b5435036ddda0fc0af3792.svg new file mode 100644 index 000000000..3fef9010b --- /dev/null +++ b/_images/inheritance-e2a414e662628cb995b5435036ddda0fc0af3792.svg @@ -0,0 +1,138 @@ + + + + + + +inheritance60a498c76a + + +Architecture + + +Architecture + + + + + +Architecture->Architecture + + + + + +SecondaryUnit + + +SecondaryUnit + + + + + +SecondaryUnit->Architecture + + + + + +DesignUnitWithContextMixin + +DesignUnitWithContextMixin + + + +DesignUnitWithContextMixin->Architecture + + + + + +ConcurrentDeclarations + +ConcurrentDeclarations + + + +ConcurrentDeclarations->Architecture + + + + + +ConcurrentStatements + +ConcurrentStatements + + + +ConcurrentStatements->Architecture + + + + + +DesignUnit + + +DesignUnit + + + + + +DesignUnit->SecondaryUnit + + + + + +ModelEntity + + +ModelEntity + + + + + +ModelEntity->DesignUnit + + + + + +NamedEntityMixin + + +NamedEntityMixin + + + + + +NamedEntityMixin->DesignUnit + + + + + +DocumentedEntityMixin + + +DocumentedEntityMixin + + + + + +DocumentedEntityMixin->DesignUnit + + + + + diff --git a/_images/inheritance-e2ceeda6d355ad5ca2e9e48c18f295fe03ddb3be.svg b/_images/inheritance-e2ceeda6d355ad5ca2e9e48c18f295fe03ddb3be.svg new file mode 100644 index 000000000..5619cae4f --- /dev/null +++ b/_images/inheritance-e2ceeda6d355ad5ca2e9e48c18f295fe03ddb3be.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance9247d25660 + + +StartOfToken + + +StartOfToken + + + + + +Token + + +Token + + + + + +Token->StartOfToken + + + + + diff --git a/_images/inheritance-e312988c07a444d925ba17eb2e7e71cbbdc515a5.svg b/_images/inheritance-e312988c07a444d925ba17eb2e7e71cbbdc515a5.svg new file mode 100644 index 000000000..270dd7aee --- /dev/null +++ b/_images/inheritance-e312988c07a444d925ba17eb2e7e71cbbdc515a5.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance75c69b156b + + +Block + + +Block + + + + + +RecordConstrainedSubtypeIndicationBlock + + +RecordConstrainedSubtypeIndicationBlock + + + + + +Block->RecordConstrainedSubtypeIndicationBlock + + + + + diff --git a/_images/inheritance-e338f6f9c5b363d3477100820abce17448f70604.svg b/_images/inheritance-e338f6f9c5b363d3477100820abce17448f70604.svg new file mode 100644 index 000000000..fd17d33ba --- /dev/null +++ b/_images/inheritance-e338f6f9c5b363d3477100820abce17448f70604.svg @@ -0,0 +1,51 @@ + + + + + + +inheritance960d6feb94 + + +Block + + +Block + + + + + +SkipableBlock + + +SkipableBlock + + + + + +Block->SkipableBlock + + + + + +DelimiterBlock + + +DelimiterBlock + + + + + +SkipableBlock->DelimiterBlock + + + + + diff --git a/_images/inheritance-e36935e4338ed48e141635245651945355026bbc.svg b/_images/inheritance-e36935e4338ed48e141635245651945355026bbc.svg new file mode 100644 index 000000000..68320034c --- /dev/null +++ b/_images/inheritance-e36935e4338ed48e141635245651945355026bbc.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance9286b22121 + + +Direction + + +Direction + + + + + +Enum + + +Enum + + + + + +Enum->Direction + + + + + diff --git a/_images/inheritance-e41bf8b073cbc32c525cbb462af8aa26518844db.svg b/_images/inheritance-e41bf8b073cbc32c525cbb462af8aa26518844db.svg new file mode 100644 index 000000000..f26d07970 --- /dev/null +++ b/_images/inheritance-e41bf8b073cbc32c525cbb462af8aa26518844db.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance647e6aeee7 + + +EndOf + + +EndOf + + + + + +EndOfDocument + + +EndOfDocument + + + + + +EndOf->EndOfDocument + + + + + +EndOfDocumentToken + + +EndOfDocumentToken + + + + + +EndOfDocument->EndOfDocumentToken + + + + + +EndOfToken + + +EndOfToken + + + + + +EndOfToken->EndOfDocumentToken + + + + + +Token + + +Token + + + + + +Token->EndOfToken + + + + + diff --git a/_images/inheritance-e440c859a2f7e354aa16c08238d9d3e26b85102d.svg b/_images/inheritance-e440c859a2f7e354aa16c08238d9d3e26b85102d.svg new file mode 100644 index 000000000..c1e0556df --- /dev/null +++ b/_images/inheritance-e440c859a2f7e354aa16c08238d9d3e26b85102d.svg @@ -0,0 +1,57 @@ + + + + + + +inheritance4e0e4303f5 + + +Block + + +Block + + + + + +FinalBlock + + +FinalBlock + + + + + +Block->FinalBlock + + + + + +EndBlock + + +EndBlock + + + + + +EndBlock->EndBlock + + + + + +FinalBlock->EndBlock + + + + + diff --git a/_images/inheritance-e4b7190732430bab7007f3da87a56284d4483b6c.svg b/_images/inheritance-e4b7190732430bab7007f3da87a56284d4483b6c.svg new file mode 100644 index 000000000..156a24d20 --- /dev/null +++ b/_images/inheritance-e4b7190732430bab7007f3da87a56284d4483b6c.svg @@ -0,0 +1,81 @@ + + + + + + +inheritancea80b8c4aaf + + +CommentToken + + +CommentToken + + + + + +DirectiveToken + + +DirectiveToken + + + + + +CommentToken->DirectiveToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->CommentToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-e53a983e96e97a8feee97e04607d91365e84c13e.svg b/_images/inheritance-e53a983e96e97a8feee97e04607d91365e84c13e.svg new file mode 100644 index 000000000..5deec0304 --- /dev/null +++ b/_images/inheritance-e53a983e96e97a8feee97e04607d91365e84c13e.svg @@ -0,0 +1,57 @@ + + + + + + +inheritance4e0e4303f5 + + +Block + + +Block + + + + + +FinalBlock + + +FinalBlock + + + + + +Block->FinalBlock + + + + + +EndBlock + + +EndBlock + + + + + +EndBlock->EndBlock + + + + + +FinalBlock->EndBlock + + + + + diff --git a/_images/inheritance-e5688381b8a7cded5e3e6ce7dfdca6c422d748c6.svg b/_images/inheritance-e5688381b8a7cded5e3e6ce7dfdca6c422d748c6.svg new file mode 100644 index 000000000..f057eb1a6 --- /dev/null +++ b/_images/inheritance-e5688381b8a7cded5e3e6ce7dfdca6c422d748c6.svg @@ -0,0 +1,81 @@ + + + + + + +inheritancec00f293e8f + + +IdentifierToken + + +IdentifierToken + + + + + +SpecificVHDLToken + + +SpecificVHDLToken + + + + + +SpecificVHDLToken->IdentifierToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->SpecificVHDLToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-e5cc978d8e818194f79355a8f900795761e16d8e.svg b/_images/inheritance-e5cc978d8e818194f79355a8f900795761e16d8e.svg new file mode 100644 index 000000000..64152c2ef --- /dev/null +++ b/_images/inheritance-e5cc978d8e818194f79355a8f900795761e16d8e.svg @@ -0,0 +1,51 @@ + + + + + + +inheritance4e0e4303f5 + + +Block + + +Block + + + + + +FinalBlock + + +FinalBlock + + + + + +Block->FinalBlock + + + + + +EndBlock + + +EndBlock + + + + + +FinalBlock->EndBlock + + + + + diff --git a/_images/inheritance-e6bb97577ebae0a84818e8d7fe5d1efb9c74fe2e.svg b/_images/inheritance-e6bb97577ebae0a84818e8d7fe5d1efb9c74fe2e.svg new file mode 100644 index 000000000..67708d15d --- /dev/null +++ b/_images/inheritance-e6bb97577ebae0a84818e8d7fe5d1efb9c74fe2e.svg @@ -0,0 +1,21 @@ + + + + + + +inheritance307bc5c6dd + + +Transaction + + +Transaction + + + + + diff --git a/_images/inheritance-e744c601634a0945d005e4153e18c29eee33bc1a.svg b/_images/inheritance-e744c601634a0945d005e4153e18c29eee33bc1a.svg new file mode 100644 index 000000000..0382e873f --- /dev/null +++ b/_images/inheritance-e744c601634a0945d005e4153e18c29eee33bc1a.svg @@ -0,0 +1,81 @@ + + + + + + +inheritancef999e4681e + + +ForKeyword + + +ForKeyword + + + + + +KeywordToken + + +KeywordToken + + + + + +KeywordToken->ForKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-e77202b5e46c259ab19511c06c4067d5167393ed.svg b/_images/inheritance-e77202b5e46c259ab19511c06c4067d5167393ed.svg new file mode 100644 index 000000000..7c791a9d0 --- /dev/null +++ b/_images/inheritance-e77202b5e46c259ab19511c06c4067d5167393ed.svg @@ -0,0 +1,57 @@ + + + + + + +inheritance93cba77a7d + + +BeginBlock + + +BeginBlock + + + + + +SequentialBeginBlock + + +SequentialBeginBlock + + + + + +BeginBlock->SequentialBeginBlock + + + + + +Block + + +Block + + + + + +Block->BeginBlock + + + + + +SequentialBeginBlock->BeginBlock + + + + + diff --git a/_images/inheritance-e78daf2d9351ec7de3107a1d573849b595ef7d68.svg b/_images/inheritance-e78daf2d9351ec7de3107a1d573849b595ef7d68.svg new file mode 100644 index 000000000..c5d2e562c --- /dev/null +++ b/_images/inheritance-e78daf2d9351ec7de3107a1d573849b595ef7d68.svg @@ -0,0 +1,96 @@ + + + + + + +inheritance8f70c59159 + + +OperatorToken + + +OperatorToken + + + + + +RemainderOperator + + +RemainderOperator + + + + + +OperatorToken->RemainderOperator + + + + + +SpecificVHDLToken + + +SpecificVHDLToken + + + + + +SpecificVHDLToken->OperatorToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->SpecificVHDLToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-e80e379953b3534c10929ca6ad1e9f1fd474ccac.svg b/_images/inheritance-e80e379953b3534c10929ca6ad1e9f1fd474ccac.svg new file mode 100644 index 000000000..dfaefd175 --- /dev/null +++ b/_images/inheritance-e80e379953b3534c10929ca6ad1e9f1fd474ccac.svg @@ -0,0 +1,36 @@ + + + + + + +inheritancee5163e4956 + + +Group + + +Group + + + + + +ReturnGroup + + +ReturnGroup + + + + + +Group->ReturnGroup + + + + + diff --git a/_images/inheritance-e856c8094a8d35a7ac251c0506382cb55a0aaed1.svg b/_images/inheritance-e856c8094a8d35a7ac251c0506382cb55a0aaed1.svg new file mode 100644 index 000000000..c74183cc1 --- /dev/null +++ b/_images/inheritance-e856c8094a8d35a7ac251c0506382cb55a0aaed1.svg @@ -0,0 +1,42 @@ + + + + + + +inheritanced9ef7a3b00 + + +DeclarativeRegion + + +DeclarativeRegion + + + + + +SequentialDeclarativeRegion + + +SequentialDeclarativeRegion + + + + + +DeclarativeRegion->SequentialDeclarativeRegion + + + + + +SequentialDeclarativeRegion->DeclarativeRegion + + + + + diff --git a/_images/inheritance-e875a59ab3b9549190e2ad3e07231830e6606888.svg b/_images/inheritance-e875a59ab3b9549190e2ad3e07231830e6606888.svg new file mode 100644 index 000000000..8f0ec14ef --- /dev/null +++ b/_images/inheritance-e875a59ab3b9549190e2ad3e07231830e6606888.svg @@ -0,0 +1,51 @@ + + + + + + +inheritance4e0e4303f5 + + +Block + + +Block + + + + + +FinalBlock + + +FinalBlock + + + + + +Block->FinalBlock + + + + + +EndBlock + + +EndBlock + + + + + +FinalBlock->EndBlock + + + + + diff --git a/_images/inheritance-e92d35e132251ecaf700a9f26be885075af7ce23.svg b/_images/inheritance-e92d35e132251ecaf700a9f26be885075af7ce23.svg new file mode 100644 index 000000000..310a1aaaf --- /dev/null +++ b/_images/inheritance-e92d35e132251ecaf700a9f26be885075af7ce23.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance1c2860595f + + +KeywordToken + + +KeywordToken + + + + + +UntilKeyword + + +UntilKeyword + + + + + +KeywordToken->UntilKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-e9948bb70d68e4b8f838ced01105812c9588d493.svg b/_images/inheritance-e9948bb70d68e4b8f838ced01105812c9588d493.svg new file mode 100644 index 000000000..8965bbb22 --- /dev/null +++ b/_images/inheritance-e9948bb70d68e4b8f838ced01105812c9588d493.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance7350adf4ad + + +Group + + +Group + + + + + +SensitivityListItemGroup + + +SensitivityListItemGroup + + + + + +Group->SensitivityListItemGroup + + + + + diff --git a/_images/inheritance-ea4d5c66eb75be430355a8770abefe8f53647347.svg b/_images/inheritance-ea4d5c66eb75be430355a8770abefe8f53647347.svg new file mode 100644 index 000000000..dc698d3a9 --- /dev/null +++ b/_images/inheritance-ea4d5c66eb75be430355a8770abefe8f53647347.svg @@ -0,0 +1,42 @@ + + + + + + +inheritanced9ef7a3b00 + + +DeclarativeRegion + + +DeclarativeRegion + + + + + +SequentialDeclarativeRegion + + +SequentialDeclarativeRegion + + + + + +DeclarativeRegion->SequentialDeclarativeRegion + + + + + +SequentialDeclarativeRegion->DeclarativeRegion + + + + + diff --git a/_images/inheritance-ea91cf6263922bcb20a224da87d5f745d47e73ee.svg b/_images/inheritance-ea91cf6263922bcb20a224da87d5f745d47e73ee.svg new file mode 100644 index 000000000..46e55be2c --- /dev/null +++ b/_images/inheritance-ea91cf6263922bcb20a224da87d5f745d47e73ee.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance116f06fa3a + + +Block + + +Block + + + + + +OpenBlock + + +OpenBlock + + + + + +Block->OpenBlock + + + + + diff --git a/_images/inheritance-eaf9ab5e0aaae7268764ce619bef4e2dad500dcb.svg b/_images/inheritance-eaf9ab5e0aaae7268764ce619bef4e2dad500dcb.svg new file mode 100644 index 000000000..d6918a871 --- /dev/null +++ b/_images/inheritance-eaf9ab5e0aaae7268764ce619bef4e2dad500dcb.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance6659650113 + + +Block + + +Block + + + + + +CaseBlock + + +CaseBlock + + + + + +Block->CaseBlock + + + + + diff --git a/_images/inheritance-eb3fc98a86d9cf3ed99f26f24c3691f8b9bed0ee.svg b/_images/inheritance-eb3fc98a86d9cf3ed99f26f24c3691f8b9bed0ee.svg new file mode 100644 index 000000000..37bf52973 --- /dev/null +++ b/_images/inheritance-eb3fc98a86d9cf3ed99f26f24c3691f8b9bed0ee.svg @@ -0,0 +1,36 @@ + + + + + + +inheritanceddee40f98b + + +Group + + +Group + + + + + +SignalAssignmentGroup + + +SignalAssignmentGroup + + + + + +Group->SignalAssignmentGroup + + + + + diff --git a/_images/inheritance-ec9fc4d029ccd851222a0a8dc0a0b800fa9896d5.svg b/_images/inheritance-ec9fc4d029ccd851222a0a8dc0a0b800fa9896d5.svg new file mode 100644 index 000000000..3dc3ccd7b --- /dev/null +++ b/_images/inheritance-ec9fc4d029ccd851222a0a8dc0a0b800fa9896d5.svg @@ -0,0 +1,111 @@ + + + + + + +inheritance27090f2f15 + + +GreaterThanOrEqualOperator + + +GreaterThanOrEqualOperator + + + + + +RelationalOperator + + +RelationalOperator + + + + + +RelationalOperator->GreaterThanOrEqualOperator + + + + + +OperatorToken + + +OperatorToken + + + + + +OperatorToken->RelationalOperator + + + + + +SpecificVHDLToken + + +SpecificVHDLToken + + + + + +SpecificVHDLToken->OperatorToken + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->SpecificVHDLToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-ecc804c5ae88ab7ad9594eb819d57c52fa5c503f.svg b/_images/inheritance-ecc804c5ae88ab7ad9594eb819d57c52fa5c503f.svg new file mode 100644 index 000000000..7b23c31cf --- /dev/null +++ b/_images/inheritance-ecc804c5ae88ab7ad9594eb819d57c52fa5c503f.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance4b405d0a21 + + +ProcedureDeclaration + + +ProcedureDeclaration + + + + + +SubProgramDeclaration + + +SubProgramDeclaration + + + + + +SubProgramDeclaration->ProcedureDeclaration + + + + + diff --git a/_images/inheritance-ecea3b0cfe302be7f9d918b58cc0e34ab4279706.svg b/_images/inheritance-ecea3b0cfe302be7f9d918b58cc0e34ab4279706.svg new file mode 100644 index 000000000..153ff5b1b --- /dev/null +++ b/_images/inheritance-ecea3b0cfe302be7f9d918b58cc0e34ab4279706.svg @@ -0,0 +1,57 @@ + + + + + + +inheritance4e0e4303f5 + + +Block + + +Block + + + + + +FinalBlock + + +FinalBlock + + + + + +Block->FinalBlock + + + + + +EndBlock + + +EndBlock + + + + + +EndBlock->EndBlock + + + + + +FinalBlock->EndBlock + + + + + diff --git a/_images/inheritance-ecf999d7d6b6994c653ed6a19303da1629a9db40.svg b/_images/inheritance-ecf999d7d6b6994c653ed6a19303da1629a9db40.svg new file mode 100644 index 000000000..6a96dd2cb --- /dev/null +++ b/_images/inheritance-ecf999d7d6b6994c653ed6a19303da1629a9db40.svg @@ -0,0 +1,51 @@ + + + + + + +inheritanced6b90e9167 + + +Block + + +Block + + + + + +SkipableBlock + + +SkipableBlock + + + + + +Block->SkipableBlock + + + + + +PortMapDelimiterBlock + + +PortMapDelimiterBlock + + + + + +SkipableBlock->PortMapDelimiterBlock + + + + + diff --git a/_images/inheritance-ed8e0ebf8997fad2409ec72efb44d18ff3af8124.svg b/_images/inheritance-ed8e0ebf8997fad2409ec72efb44d18ff3af8124.svg new file mode 100644 index 000000000..845f25273 --- /dev/null +++ b/_images/inheritance-ed8e0ebf8997fad2409ec72efb44d18ff3af8124.svg @@ -0,0 +1,51 @@ + + + + + + +inheritance299cabeed6 + + +Block + + +Block + + + + + +ExpressionBlock + + +ExpressionBlock + + + + + +Block->ExpressionBlock + + + + + +ExpressionBlockEndedByCharORClosingRoundBracket + + +ExpressionBlockEndedByCharORClosingRoundBracket + + + + + +ExpressionBlock->ExpressionBlockEndedByCharORClosingRoundBracket + + + + + diff --git a/_images/inheritance-eda1c3367952639db091a93b7d4697ecf63b4763.svg b/_images/inheritance-eda1c3367952639db091a93b7d4697ecf63b4763.svg new file mode 100644 index 000000000..3071deb89 --- /dev/null +++ b/_images/inheritance-eda1c3367952639db091a93b7d4697ecf63b4763.svg @@ -0,0 +1,21 @@ + + + + + + +inheritancef31c261e19 + + +Tokenizer + + +Tokenizer + + + + + diff --git a/_images/inheritance-ee18281a12ea28ba923d70e9153115fe07c9fe4e.svg b/_images/inheritance-ee18281a12ea28ba923d70e9153115fe07c9fe4e.svg new file mode 100644 index 000000000..f22bf55da --- /dev/null +++ b/_images/inheritance-ee18281a12ea28ba923d70e9153115fe07c9fe4e.svg @@ -0,0 +1,51 @@ + + + + + + +inheritancec49fb4b0f1 + + +SpaceToken + + +SpaceToken + + + + + +ValuedToken + + +ValuedToken + + + + + +ValuedToken->SpaceToken + + + + + +Token + + +Token + + + + + +Token->ValuedToken + + + + + diff --git a/_images/inheritance-ee33815988ce3fdabe665b8b682c7cfa8cd40fbb.svg b/_images/inheritance-ee33815988ce3fdabe665b8b682c7cfa8cd40fbb.svg new file mode 100644 index 000000000..c8c2a1207 --- /dev/null +++ b/_images/inheritance-ee33815988ce3fdabe665b8b682c7cfa8cd40fbb.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance9298b17831 + + +EndOf + + +EndOf + + + + + +EndOfDocument + + +EndOfDocument + + + + + +EndOf->EndOfDocument + + + + + +EndOfDocumentGroup + + +EndOfDocumentGroup + + + + + +EndOfDocument->EndOfDocumentGroup + + + + + +EndOfGroup + + +EndOfGroup + + + + + +EndOfGroup->EndOfDocumentGroup + + + + + +Group + + +Group + + + + + +Group->EndOfGroup + + + + + diff --git a/_images/inheritance-ee42cb3bbd70309610428197b9f2e1c40b07e136.svg b/_images/inheritance-ee42cb3bbd70309610428197b9f2e1c40b07e136.svg new file mode 100644 index 000000000..fec964419 --- /dev/null +++ b/_images/inheritance-ee42cb3bbd70309610428197b9f2e1c40b07e136.svg @@ -0,0 +1,66 @@ + + + + + + +inheritancea4a1f15a14 + + +BeginBlock + + +BeginBlock + + + + + +SequentialBeginBlock + + +SequentialBeginBlock + + + + + +BeginBlock->SequentialBeginBlock + + + + + +Block + + +Block + + + + + +Block->BeginBlock + + + + + +LoopBlock + + +LoopBlock + + + + + +SequentialBeginBlock->LoopBlock + + + + + diff --git a/_images/inheritance-ee6317e21ab3fa2c190f5aa200f550e5e6e4581c.svg b/_images/inheritance-ee6317e21ab3fa2c190f5aa200f550e5e6e4581c.svg new file mode 100644 index 000000000..2ce214fe9 --- /dev/null +++ b/_images/inheritance-ee6317e21ab3fa2c190f5aa200f550e5e6e4581c.svg @@ -0,0 +1,111 @@ + + + + + + +inheritance47562df29f + + +KeywordToken + + +KeywordToken + + + + + +Operator + + +Operator + + + + + +KeywordToken->Operator + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +ShiftOperator + + +ShiftOperator + + + + + +Operator->ShiftOperator + + + + + +RolOperator + + +RolOperator + + + + + +ShiftOperator->RolOperator + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-ef49dfa8bf86f4d52cd1672bca1de51539c12f8d.svg b/_images/inheritance-ef49dfa8bf86f4d52cd1672bca1de51539c12f8d.svg new file mode 100644 index 000000000..42fe80177 --- /dev/null +++ b/_images/inheritance-ef49dfa8bf86f4d52cd1672bca1de51539c12f8d.svg @@ -0,0 +1,66 @@ + + + + + + +inheritanceffc4a11050 + + +Block + + +Block + + + + + +SkipableBlock + + +SkipableBlock + + + + + +Block->SkipableBlock + + + + + +LinebreakBlock + + +LinebreakBlock + + + + + +WhitespaceBlock + + +WhitespaceBlock + + + + + +WhitespaceBlock->LinebreakBlock + + + + + +SkipableBlock->WhitespaceBlock + + + + + diff --git a/_images/inheritance-ef92be36b1a8878ca7b2f2bada05c634a4b89026.svg b/_images/inheritance-ef92be36b1a8878ca7b2f2bada05c634a4b89026.svg new file mode 100644 index 000000000..484063cda --- /dev/null +++ b/_images/inheritance-ef92be36b1a8878ca7b2f2bada05c634a4b89026.svg @@ -0,0 +1,36 @@ + + + + + + +inheritancef57a708eca + + +ComponentGroup + + +ComponentGroup + + + + + +Group + + +Group + + + + + +Group->ComponentGroup + + + + + diff --git a/_images/inheritance-efb396feedf721b4cd29bb29461824741d09bcc1.svg b/_images/inheritance-efb396feedf721b4cd29bb29461824741d09bcc1.svg new file mode 100644 index 000000000..e16fc031e --- /dev/null +++ b/_images/inheritance-efb396feedf721b4cd29bb29461824741d09bcc1.svg @@ -0,0 +1,72 @@ + + + + + + +inheritance6ecc41ac36 + + +Block + + +Block + + + + + +FinalBlock + + +FinalBlock + + + + + +Block->FinalBlock + + + + + +EndBlock + + +EndBlock + + + + + +EndGenerateBlock + + +EndGenerateBlock + + + + + +EndBlock->EndGenerateBlock + + + + + +FinalBlock->EndBlock + + + + + +EndGenerateBlock->EndGenerateBlock + + + + + diff --git a/_images/inheritance-f04910038ef54bae6983b6a24ec5f2bb0dab8483.svg b/_images/inheritance-f04910038ef54bae6983b6a24ec5f2bb0dab8483.svg new file mode 100644 index 000000000..da91e0490 --- /dev/null +++ b/_images/inheritance-f04910038ef54bae6983b6a24ec5f2bb0dab8483.svg @@ -0,0 +1,36 @@ + + + + + + +inheritancea5b9460fb2 + + +ArrayResolutionIndicationBlock + + +ArrayResolutionIndicationBlock + + + + + +Block + + +Block + + + + + +Block->ArrayResolutionIndicationBlock + + + + + diff --git a/_images/inheritance-f08271894b8ddc7af59af005a073f9ff51723071.svg b/_images/inheritance-f08271894b8ddc7af59af005a073f9ff51723071.svg new file mode 100644 index 000000000..28fc9c21e --- /dev/null +++ b/_images/inheritance-f08271894b8ddc7af59af005a073f9ff51723071.svg @@ -0,0 +1,51 @@ + + + + + + +inheritance4e0e4303f5 + + +Block + + +Block + + + + + +FinalBlock + + +FinalBlock + + + + + +Block->FinalBlock + + + + + +EndBlock + + +EndBlock + + + + + +FinalBlock->EndBlock + + + + + diff --git a/_images/inheritance-f1a5b5654239473b540258df1fd42d0959d52c47.svg b/_images/inheritance-f1a5b5654239473b540258df1fd42d0959d52c47.svg new file mode 100644 index 000000000..df5b7ff18 --- /dev/null +++ b/_images/inheritance-f1a5b5654239473b540258df1fd42d0959d52c47.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance5302579079 + + +GenericKeyword + + +GenericKeyword + + + + + +KeywordToken + + +KeywordToken + + + + + +KeywordToken->GenericKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-f27e58c28c413cdd6d4939aaad7b2ca6768c70df.svg b/_images/inheritance-f27e58c28c413cdd6d4939aaad7b2ca6768c70df.svg new file mode 100644 index 000000000..c9da92c35 --- /dev/null +++ b/_images/inheritance-f27e58c28c413cdd6d4939aaad7b2ca6768c70df.svg @@ -0,0 +1,36 @@ + + + + + + +inheritancea2ad267436 + + +Block + + +Block + + + + + +PortMapBeginBlock + + +PortMapBeginBlock + + + + + +Block->PortMapBeginBlock + + + + + diff --git a/_images/inheritance-f3a8a1d60b4c75f2ab67e01ab9c97a901fc50f5a.svg b/_images/inheritance-f3a8a1d60b4c75f2ab67e01ab9c97a901fc50f5a.svg new file mode 100644 index 000000000..0dd5cf8bf --- /dev/null +++ b/_images/inheritance-f3a8a1d60b4c75f2ab67e01ab9c97a901fc50f5a.svg @@ -0,0 +1,42 @@ + + + + + + +inheritancebca963e155 + + +Block + + +Block + + + + + +CloseBlock + + +CloseBlock + + + + + +Block->CloseBlock + + + + + +CloseBlock->CloseBlock + + + + + diff --git a/_images/inheritance-f3b80cc8ce0668d0375669eb572064b5de336078.svg b/_images/inheritance-f3b80cc8ce0668d0375669eb572064b5de336078.svg new file mode 100644 index 000000000..80c45ad35 --- /dev/null +++ b/_images/inheritance-f3b80cc8ce0668d0375669eb572064b5de336078.svg @@ -0,0 +1,42 @@ + + + + + + +inheritanced9ef7a3b00 + + +ConcurrentDeclarativeRegion + + +ConcurrentDeclarativeRegion + + + + + +DeclarativeRegion + + +DeclarativeRegion + + + + + +ConcurrentDeclarativeRegion->DeclarativeRegion + + + + + +DeclarativeRegion->ConcurrentDeclarativeRegion + + + + + diff --git a/_images/inheritance-f3e018a13b5e237bedb5cd3f223fdab5bc8d5d5c.svg b/_images/inheritance-f3e018a13b5e237bedb5cd3f223fdab5bc8d5d5c.svg new file mode 100644 index 000000000..5ca9922ed --- /dev/null +++ b/_images/inheritance-f3e018a13b5e237bedb5cd3f223fdab5bc8d5d5c.svg @@ -0,0 +1,21 @@ + + + + + + +inheritanceacf337c0f7 + + +BlockToGroupParser + + +BlockToGroupParser + + + + + diff --git a/_images/inheritance-f4c323de083c0b697cb5c3b42cebe8978d64ae97.svg b/_images/inheritance-f4c323de083c0b697cb5c3b42cebe8978d64ae97.svg new file mode 100644 index 000000000..a2d467de7 --- /dev/null +++ b/_images/inheritance-f4c323de083c0b697cb5c3b42cebe8978d64ae97.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance16c1ae79a9 + + +InKeyword + + +InKeyword + + + + + +KeywordToken + + +KeywordToken + + + + + +KeywordToken->InKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-f54861f4d160982249706eaf9b37d309932ffc1e.svg b/_images/inheritance-f54861f4d160982249706eaf9b37d309932ffc1e.svg new file mode 100644 index 000000000..6b0edb639 --- /dev/null +++ b/_images/inheritance-f54861f4d160982249706eaf9b37d309932ffc1e.svg @@ -0,0 +1,36 @@ + + + + + + +inheritancedf43433117 + + +Block + + +Block + + + + + +GenericMapItemBlock + + +GenericMapItemBlock + + + + + +Block->GenericMapItemBlock + + + + + diff --git a/_images/inheritance-f57e1e8b1ef289386a1b25472eb9138c7f22f274.svg b/_images/inheritance-f57e1e8b1ef289386a1b25472eb9138c7f22f274.svg new file mode 100644 index 000000000..3433d247a --- /dev/null +++ b/_images/inheritance-f57e1e8b1ef289386a1b25472eb9138c7f22f274.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance6e8561387a + + +Block + + +Block + + + + + +NameBlock + + +NameBlock + + + + + +Block->NameBlock + + + + + diff --git a/_images/inheritance-f603542cbecf6e341be256214d91a9fedbef1ab2.svg b/_images/inheritance-f603542cbecf6e341be256214d91a9fedbef1ab2.svg new file mode 100644 index 000000000..c3df40dfb --- /dev/null +++ b/_images/inheritance-f603542cbecf6e341be256214d91a9fedbef1ab2.svg @@ -0,0 +1,51 @@ + + + + + + +inheritance4099422145 + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +WordToken + + +WordToken + + + + + +ValuedToken->WordToken + + + + + diff --git a/_images/inheritance-f635e1fa6ced5960243644cc73e009b94712add6.svg b/_images/inheritance-f635e1fa6ced5960243644cc73e009b94712add6.svg new file mode 100644 index 000000000..e208d362c --- /dev/null +++ b/_images/inheritance-f635e1fa6ced5960243644cc73e009b94712add6.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance2c85aa7cd2 + + +Block + + +Block + + + + + +TypeBlock + + +TypeBlock + + + + + +Block->TypeBlock + + + + + diff --git a/_images/inheritance-f6b62f45f743c40b8978d3b3ee8274a2bfa79cb4.svg b/_images/inheritance-f6b62f45f743c40b8978d3b3ee8274a2bfa79cb4.svg new file mode 100644 index 000000000..26d96a68b --- /dev/null +++ b/_images/inheritance-f6b62f45f743c40b8978d3b3ee8274a2bfa79cb4.svg @@ -0,0 +1,111 @@ + + + + + + +inheritance1ad676096b + + +KeywordToken + + +KeywordToken + + + + + +Operator + + +Operator + + + + + +KeywordToken->Operator + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +ShiftOperator + + +ShiftOperator + + + + + +Operator->ShiftOperator + + + + + +SrlOperator + + +SrlOperator + + + + + +ShiftOperator->SrlOperator + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-f6b6dd6d899d772c124572c3ad3d75fb2dda8f15.svg b/_images/inheritance-f6b6dd6d899d772c124572c3ad3d75fb2dda8f15.svg new file mode 100644 index 000000000..139714240 --- /dev/null +++ b/_images/inheritance-f6b6dd6d899d772c124572c3ad3d75fb2dda8f15.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance16baca444d + + +Block + + +Block + + + + + +SimpleResolutionIndicationBlock + + +SimpleResolutionIndicationBlock + + + + + +Block->SimpleResolutionIndicationBlock + + + + + diff --git a/_images/inheritance-f6e6e6cf3f1fabef9d421482c37d6b82dbe4dad9.svg b/_images/inheritance-f6e6e6cf3f1fabef9d421482c37d6b82dbe4dad9.svg new file mode 100644 index 000000000..52a0b63e9 --- /dev/null +++ b/_images/inheritance-f6e6e6cf3f1fabef9d421482c37d6b82dbe4dad9.svg @@ -0,0 +1,36 @@ + + + + + + +inheritancedf43433117 + + +Block + + +Block + + + + + +GenericMapItemBlock + + +GenericMapItemBlock + + + + + +Block->GenericMapItemBlock + + + + + diff --git a/_images/inheritance-f6f4b1e6f537dc8de0ab7b28f44ac61913489e1d.svg b/_images/inheritance-f6f4b1e6f537dc8de0ab7b28f44ac61913489e1d.svg new file mode 100644 index 000000000..259c45874 --- /dev/null +++ b/_images/inheritance-f6f4b1e6f537dc8de0ab7b28f44ac61913489e1d.svg @@ -0,0 +1,57 @@ + + + + + + +inheritance4e0e4303f5 + + +Block + + +Block + + + + + +FinalBlock + + +FinalBlock + + + + + +Block->FinalBlock + + + + + +EndBlock + + +EndBlock + + + + + +EndBlock->EndBlock + + + + + +FinalBlock->EndBlock + + + + + diff --git a/_images/inheritance-f7355884ad7a82417730cb0305c1464c73fadb1e.svg b/_images/inheritance-f7355884ad7a82417730cb0305c1464c73fadb1e.svg new file mode 100644 index 000000000..59d63179b --- /dev/null +++ b/_images/inheritance-f7355884ad7a82417730cb0305c1464c73fadb1e.svg @@ -0,0 +1,81 @@ + + + + + + +inheritancea6fe3d3aa5 + + +AssertKeyword + + +AssertKeyword + + + + + +KeywordToken + + +KeywordToken + + + + + +KeywordToken->AssertKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-f74ebf29b6a9d6b213fa6c9c608be31a1b5a1878.svg b/_images/inheritance-f74ebf29b6a9d6b213fa6c9c608be31a1b5a1878.svg new file mode 100644 index 000000000..4d65ff49f --- /dev/null +++ b/_images/inheritance-f74ebf29b6a9d6b213fa6c9c608be31a1b5a1878.svg @@ -0,0 +1,81 @@ + + + + + + +inheritancea7f6a6bed5 + + +KeywordToken + + +KeywordToken + + + + + +PropertyKeyword + + +PropertyKeyword + + + + + +KeywordToken->PropertyKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-f8172759f053b6a6a72f5905d8a11ce69e58cfbc.svg b/_images/inheritance-f8172759f053b6a6a72f5905d8a11ce69e58cfbc.svg new file mode 100644 index 000000000..f33332611 --- /dev/null +++ b/_images/inheritance-f8172759f053b6a6a72f5905d8a11ce69e58cfbc.svg @@ -0,0 +1,42 @@ + + + + + + +inheritancebca963e155 + + +Block + + +Block + + + + + +CloseBlock + + +CloseBlock + + + + + +Block->CloseBlock + + + + + +CloseBlock->CloseBlock + + + + + diff --git a/_images/inheritance-f82494f734a2b74f0b98e2713d940721d1edfdab.svg b/_images/inheritance-f82494f734a2b74f0b98e2713d940721d1edfdab.svg new file mode 100644 index 000000000..3a74c63a6 --- /dev/null +++ b/_images/inheritance-f82494f734a2b74f0b98e2713d940721d1edfdab.svg @@ -0,0 +1,21 @@ + + + + + + +inheritancea88fc27564 + + +Token + + +Token + + + + + diff --git a/_images/inheritance-f86d802414be0417bc3bb29be54a889ec5dead7c.svg b/_images/inheritance-f86d802414be0417bc3bb29be54a889ec5dead7c.svg new file mode 100644 index 000000000..a7059f251 --- /dev/null +++ b/_images/inheritance-f86d802414be0417bc3bb29be54a889ec5dead7c.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance052464cff7 + + +Block + + +Block + + + + + +ElsIfConditionBlock + + +ElsIfConditionBlock + + + + + +Block->ElsIfConditionBlock + + + + + diff --git a/_images/inheritance-f8ab0f482968597e7a5ec9d4ab0cf304c452a939.svg b/_images/inheritance-f8ab0f482968597e7a5ec9d4ab0cf304c452a939.svg new file mode 100644 index 000000000..651c881a6 --- /dev/null +++ b/_images/inheritance-f8ab0f482968597e7a5ec9d4ab0cf304c452a939.svg @@ -0,0 +1,51 @@ + + + + + + +inheritanceb65db875c9 + + +Block + + +Block + + + + + +ObjectDeclarationBlock + + +ObjectDeclarationBlock + + + + + +Block->ObjectDeclarationBlock + + + + + +SharedVariableDeclarationBlock + + +SharedVariableDeclarationBlock + + + + + +ObjectDeclarationBlock->SharedVariableDeclarationBlock + + + + + diff --git a/_images/inheritance-f8b0e1ad9008936af2100938787f1e4a276df63f.svg b/_images/inheritance-f8b0e1ad9008936af2100938787f1e4a276df63f.svg new file mode 100644 index 000000000..e92498af2 --- /dev/null +++ b/_images/inheritance-f8b0e1ad9008936af2100938787f1e4a276df63f.svg @@ -0,0 +1,81 @@ + + + + + + +inheritancecd14f9187f + + +ComponentKeyword + + +ComponentKeyword + + + + + +KeywordToken + + +KeywordToken + + + + + +KeywordToken->ComponentKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-f90869e791334f6a6cd126c00c5f3ee5e3347c01.svg b/_images/inheritance-f90869e791334f6a6cd126c00c5f3ee5e3347c01.svg new file mode 100644 index 000000000..fc79188d3 --- /dev/null +++ b/_images/inheritance-f90869e791334f6a6cd126c00c5f3ee5e3347c01.svg @@ -0,0 +1,57 @@ + + + + + + +inheritance4e0e4303f5 + + +Block + + +Block + + + + + +FinalBlock + + +FinalBlock + + + + + +Block->FinalBlock + + + + + +EndBlock + + +EndBlock + + + + + +EndBlock->EndBlock + + + + + +FinalBlock->EndBlock + + + + + diff --git a/_images/inheritance-f9c2647697f1b253245a1816457f8e4fc7461a6c.svg b/_images/inheritance-f9c2647697f1b253245a1816457f8e4fc7461a6c.svg new file mode 100644 index 000000000..5512d22d0 --- /dev/null +++ b/_images/inheritance-f9c2647697f1b253245a1816457f8e4fc7461a6c.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance5aabf4da81 + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + diff --git a/_images/inheritance-f9cfdd3d351d9f30754ade0cc1b50cebc64c8870.svg b/_images/inheritance-f9cfdd3d351d9f30754ade0cc1b50cebc64c8870.svg new file mode 100644 index 000000000..9cf86dfa2 --- /dev/null +++ b/_images/inheritance-f9cfdd3d351d9f30754ade0cc1b50cebc64c8870.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance93cba77a7d + + +BeginBlock + + +BeginBlock + + + + + +Block + + +Block + + + + + +Block->BeginBlock + + + + + diff --git a/_images/inheritance-fa28250baa2e0350d881fdd054b30f5dde4817e3.svg b/_images/inheritance-fa28250baa2e0350d881fdd054b30f5dde4817e3.svg new file mode 100644 index 000000000..5ce7b90c5 --- /dev/null +++ b/_images/inheritance-fa28250baa2e0350d881fdd054b30f5dde4817e3.svg @@ -0,0 +1,66 @@ + + + + + + +inheritance0d778f4709 + + +BeginBlock + + +BeginBlock + + + + + +SequentialBeginBlock + + +SequentialBeginBlock + + + + + +BeginBlock->SequentialBeginBlock + + + + + +Block + + +Block + + + + + +Block->BeginBlock + + + + + +IsBlock + + +IsBlock + + + + + +SequentialBeginBlock->IsBlock + + + + + diff --git a/_images/inheritance-fa54029b50682dbb6be97609406276d4890348e9.svg b/_images/inheritance-fa54029b50682dbb6be97609406276d4890348e9.svg new file mode 100644 index 000000000..ad6ba78b7 --- /dev/null +++ b/_images/inheritance-fa54029b50682dbb6be97609406276d4890348e9.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance597d0ac6f2 + + +Group + + +Group + + + + + +StartOfGroup + + +StartOfGroup + + + + + +Group->StartOfGroup + + + + + +StartOf + + +StartOf + + + + + +StartOfSnippet + + +StartOfSnippet + + + + + +StartOf->StartOfSnippet + + + + + +StartOfSnippetGroup + + +StartOfSnippetGroup + + + + + +StartOfGroup->StartOfSnippetGroup + + + + + +StartOfSnippet->StartOfSnippetGroup + + + + + diff --git a/_images/inheritance-fa70921e6a234ff935a69b2afba6b42702bc95e2.svg b/_images/inheritance-fa70921e6a234ff935a69b2afba6b42702bc95e2.svg new file mode 100644 index 000000000..b9a363b25 --- /dev/null +++ b/_images/inheritance-fa70921e6a234ff935a69b2afba6b42702bc95e2.svg @@ -0,0 +1,57 @@ + + + + + + +inheritance4e0e4303f5 + + +Block + + +Block + + + + + +FinalBlock + + +FinalBlock + + + + + +Block->FinalBlock + + + + + +EndBlock + + +EndBlock + + + + + +EndBlock->EndBlock + + + + + +FinalBlock->EndBlock + + + + + diff --git a/_images/inheritance-fa75f5eb2600545388db8f5f742a36c021f0beb4.svg b/_images/inheritance-fa75f5eb2600545388db8f5f742a36c021f0beb4.svg new file mode 100644 index 000000000..a5ce32145 --- /dev/null +++ b/_images/inheritance-fa75f5eb2600545388db8f5f742a36c021f0beb4.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance7d5b36e250 + + +Block + + +Block + + + + + +GenericMapBeginBlock + + +GenericMapBeginBlock + + + + + +Block->GenericMapBeginBlock + + + + + diff --git a/_images/inheritance-fa8dc40f9d4b9a44c648dca868c03953167afa1f.svg b/_images/inheritance-fa8dc40f9d4b9a44c648dca868c03953167afa1f.svg new file mode 100644 index 000000000..a7cdd50eb --- /dev/null +++ b/_images/inheritance-fa8dc40f9d4b9a44c648dca868c03953167afa1f.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance7bf801dd88 + + +Block + + +Block + + + + + +ItemBlock + + +ItemBlock + + + + + +Block->ItemBlock + + + + + diff --git a/_images/inheritance-fad3ef2c725454f65eeb61abfd8e480ce13cfc83.svg b/_images/inheritance-fad3ef2c725454f65eeb61abfd8e480ce13cfc83.svg new file mode 100644 index 000000000..16682f9b3 --- /dev/null +++ b/_images/inheritance-fad3ef2c725454f65eeb61abfd8e480ce13cfc83.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance6adae3c517 + + +EndOfToken + + +EndOfToken + + + + + +Token + + +Token + + + + + +Token->EndOfToken + + + + + diff --git a/_images/inheritance-fb13dceebf309c87aa983addf986dff0152521e5.svg b/_images/inheritance-fb13dceebf309c87aa983addf986dff0152521e5.svg new file mode 100644 index 000000000..262590b7e --- /dev/null +++ b/_images/inheritance-fb13dceebf309c87aa983addf986dff0152521e5.svg @@ -0,0 +1,57 @@ + + + + + + +inheritance4e0e4303f5 + + +Block + + +Block + + + + + +FinalBlock + + +FinalBlock + + + + + +Block->FinalBlock + + + + + +EndBlock + + +EndBlock + + + + + +EndBlock->EndBlock + + + + + +FinalBlock->EndBlock + + + + + diff --git a/_images/inheritance-fb7dd2cfc2ceefa1f56b9e70babe89142ee38045.svg b/_images/inheritance-fb7dd2cfc2ceefa1f56b9e70babe89142ee38045.svg new file mode 100644 index 000000000..c89a649ad --- /dev/null +++ b/_images/inheritance-fb7dd2cfc2ceefa1f56b9e70babe89142ee38045.svg @@ -0,0 +1,36 @@ + + + + + + +inheritance72abd716ea + + +AssertBlock + + +AssertBlock + + + + + +Block + + +Block + + + + + +Block->AssertBlock + + + + + diff --git a/_images/inheritance-fb939c0f04a96c1b251d91506d946f1119c2d046.svg b/_images/inheritance-fb939c0f04a96c1b251d91506d946f1119c2d046.svg new file mode 100644 index 000000000..634149246 --- /dev/null +++ b/_images/inheritance-fb939c0f04a96c1b251d91506d946f1119c2d046.svg @@ -0,0 +1,81 @@ + + + + + + +inheritance3c00de65e5 + + +GenerateKeyword + + +GenerateKeyword + + + + + +KeywordToken + + +KeywordToken + + + + + +KeywordToken->GenerateKeyword + + + + + +VHDLToken + + +VHDLToken + + + + + +VHDLToken->KeywordToken + + + + + +Token + + +Token + + + + + +ValuedToken + + +ValuedToken + + + + + +Token->ValuedToken + + + + + +ValuedToken->VHDLToken + + + + + diff --git a/_images/inheritance-fbd3ab5049e892535c6b48a9a93b782a4cc51a15.svg b/_images/inheritance-fbd3ab5049e892535c6b48a9a93b782a4cc51a15.svg new file mode 100644 index 000000000..6d6f8231d --- /dev/null +++ b/_images/inheritance-fbd3ab5049e892535c6b48a9a93b782a4cc51a15.svg @@ -0,0 +1,36 @@ + + + + + + +inheritancec3cf22348e + + +Group + + +Group + + + + + +ParameterListItemGroup + + +ParameterListItemGroup + + + + + +Group->ParameterListItemGroup + + + + + diff --git a/_images/inheritance-fd4e5b49bcd9482e302c4efdc515669d28969a7f.svg b/_images/inheritance-fd4e5b49bcd9482e302c4efdc515669d28969a7f.svg new file mode 100644 index 000000000..60d010adf --- /dev/null +++ b/_images/inheritance-fd4e5b49bcd9482e302c4efdc515669d28969a7f.svg @@ -0,0 +1,21 @@ + + + + + + +inheritanced20544a167 + + +ResolutionFunction + + +ResolutionFunction + + + + + diff --git a/_images/inheritance-ffb726c225a58ef6854bbab6a629ed23cbcc1c13.svg b/_images/inheritance-ffb726c225a58ef6854bbab6a629ed23cbcc1c13.svg new file mode 100644 index 000000000..1c1907d49 --- /dev/null +++ b/_images/inheritance-ffb726c225a58ef6854bbab6a629ed23cbcc1c13.svg @@ -0,0 +1,36 @@ + + + + + + +inheritanced54a7caf82 + + +Block + + +Block + + + + + +SkipableBlock + + +SkipableBlock + + + + + +Block->SkipableBlock + + + + + diff --git a/_images/tokenize.png b/_images/tokenize.png new file mode 100644 index 000000000..b6d1fb1cc Binary files /dev/null and b/_images/tokenize.png differ diff --git a/_modules/index.html b/_modules/index.html new file mode 100644 index 000000000..136a72811 --- /dev/null +++ b/_modules/index.html @@ -0,0 +1,221 @@ + + + + + + Overview: module code — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+
    +
  • »
  • +
  • Overview: module code
  • +
  • +
  • +
+
+
+ +
+
+ +

All modules for which code is available

+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLModel/DesignUnit.html b/_modules/pyVHDLModel/DesignUnit.html new file mode 100644 index 000000000..2dd19f492 --- /dev/null +++ b/_modules/pyVHDLModel/DesignUnit.html @@ -0,0 +1,738 @@ + + + + + + pyVHDLModel.DesignUnit — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLModel.DesignUnit

+# ==================================================================================================================== #
+#             __     ___   _ ____  _     __  __           _      _                                                     #
+#   _ __  _   \ \   / / | | |  _ \| |   |  \/  | ___   __| | ___| |                                                    #
+#  | '_ \| | | \ \ / /| |_| | | | | |   | |\/| |/ _ \ / _` |/ _ \ |                                                    #
+#  | |_) | |_| |\ V / |  _  | |_| | |___| |  | | (_) | (_| |  __/ |                                                    #
+#  | .__/ \__, | \_/  |_| |_|____/|_____|_|  |_|\___/ \__,_|\___|_|                                                    #
+#  |_|    |___/                                                                                                        #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+#                                                                                                                      #
+# SPDX-License-Identifier: Apache-2.0                                                                                  #
+# ==================================================================================================================== #
+#
+"""
+This module contains parts of an abstract document language model for VHDL.
+
+Design units are contexts, entities, architectures, packages and their bodies as well as configurations.
+"""
+from typing import List, Dict, Union, Iterable, Optional as Nullable
+
+from pyTooling.Decorators import export
+from pyTooling.Graph import Vertex
+
+from pyVHDLModel.Exception  import VHDLModelException
+from pyVHDLModel.Base       import ModelEntity, NamedEntityMixin, DocumentedEntityMixin
+from pyVHDLModel.Namespace  import Namespace
+from pyVHDLModel.Symbol     import Symbol, PackageSymbol, EntitySymbol
+from pyVHDLModel.Interface  import GenericInterfaceItem, PortInterfaceItem
+from pyVHDLModel.Subprogram import Procedure, Function, Subprogram
+from pyVHDLModel.Object     import Constant, Variable, SharedVariable, Signal, File
+from pyVHDLModel.Type       import Type, Subtype
+from pyVHDLModel.Concurrent import ConcurrentStatement, ConcurrentStatements, ConcurrentDeclarations
+
+
+ContextUnion = Union[
+	'LibraryClause',
+	'UseClause',
+	'ContextReference'
+]
+
+
+@export
+class Reference(ModelEntity):
+	_symbols:       List[Symbol]
+
+	def __init__(self, symbols: Iterable[Symbol]):
+		super().__init__()
+
+		self._symbols = [s for s in symbols]
+
+	@property
+	def Symbols(self) -> List[Symbol]:
+		return self._symbols
+
+
+@export
+class LibraryClause(Reference):
+	pass
+
+
+@export
+class UseClause(Reference):
+	pass
+
+
+@export
+class ContextReference(Reference):
+	# TODO: rename to ContextClause?
+	pass
+
+
+@export
+class DesignUnitWithContextMixin:  # (metaclass=ExtendedType, useSlots=True):
+	pass
+
+
+@export
+class DesignUnit(ModelEntity, NamedEntityMixin, DocumentedEntityMixin):
+	"""A ``DesignUnit`` is a base-class for all design units."""
+
+	_library:             'Library'                        #: The VHDL library, the design unit was analyzed into.
+
+	# Either written as statements before (e.g. entity, architecture, package, ...), or as statements inside (context)
+	_contextItems:        List['ContextUnion']             #: List of all context items (library, use and context clauses).
+	_libraryReferences:   List['LibraryClause']            #: List of library clauses.
+	_packageReferences:   List['UseClause']                #: List of use clauses.
+	_contextReferences:   List['ContextReference']         #: List of context clauses.
+
+	_referencedLibraries: Dict[str, 'Library']             #: Referenced libraries based on explicit library clauses or implicit inheritance
+	_referencedPackages:  Dict[str, Dict[str, 'Package']]  #: Referenced packages based on explicit use clauses or implicit inheritance
+	_referencedContexts:  Dict[str, 'Context']             #: Referenced contexts based on explicit context references or implicit inheritance
+
+	_dependencyVertex:    Vertex[None, None, str, 'DesignUnit', None, None, None, None, None, None, None, None, None, None, None, None, None]  #: The vertex in the dependency graph
+	_hierarchyVertex:     Vertex[None, None, str, 'DesignUnit', None, None, None, None, None, None, None, None, None, None, None, None, None]  #: The vertex in the hierarchy graph
+
+	_namespace:           'Namespace'
+
+	def __init__(self, identifier: str, contextItems: Iterable['ContextUnion'] = None, documentation: str = None):
+		"""
+		Initializes a design unit.
+
+		:param identifier:    Identifier (name) of the design unit.
+		:param contextItems:  A sequence of library, use or context clauses.
+		:param documentation: Associated documentation of the design unit.
+		"""
+		super().__init__()
+		NamedEntityMixin.__init__(self, identifier)
+		DocumentedEntityMixin.__init__(self, documentation)
+
+		self._library = None
+
+		self._contextItems = []
+		self._libraryReferences = []
+		self._packageReferences = []
+		self._contextReferences = []
+
+		if contextItems is not None:
+			for item in contextItems:
+				self._contextItems.append(item)
+				if isinstance(item, UseClause):
+					self._packageReferences.append(item)
+				elif isinstance(item, LibraryClause):
+					self._libraryReferences.append(item)
+				elif isinstance(item, ContextReference):
+					self._contextReferences.append(item)
+
+		self._referencedLibraries = {}
+		self._referencedPackages = {}
+		self._referencedContexts = {}
+
+		self._dependencyVertex = None
+		self._hierarchyVertex = None
+
+		self._namespace = Namespace(self._normalizedIdentifier)
+
+	@property
+	def Document(self) -> 'Document':
+		return self._parent
+
+	@Document.setter
+	def Document(self, document: 'Document') -> None:
+		self._parent = document
+
+	@property
+	def Library(self) -> 'Library':
+		return self._library
+
+	@Library.setter
+	def Library(self, library: 'Library') -> None:
+		self._library = library
+
+	@property
+	def ContextItems(self) -> List['ContextUnion']:
+		"""
+		Read-only property to access the sequence of all context items comprising library, use and context clauses
+		(:py:attr:`_contextItems`).
+
+		:returns: Sequence of context items.
+		"""
+		return self._contextItems
+
+	@property
+	def ContextReferences(self) -> List['ContextReference']:
+		"""
+		Read-only property to access the sequence of context clauses (:py:attr:`_contextReferences`).
+
+		:returns: Sequence of context clauses.
+		"""
+		return self._contextReferences
+
+	@property
+	def LibraryReferences(self) -> List['LibraryClause']:
+		"""
+		Read-only property to access the sequence of library clauses (:py:attr:`_libraryReferences`).
+
+		:returns: Sequence of library clauses.
+		"""
+		return self._libraryReferences
+
+	@property
+	def PackageReferences(self) -> List['UseClause']:
+		"""
+		Read-only property to access the sequence of use clauses (:py:attr:`_packageReferences`).
+
+		:returns: Sequence of use clauses.
+		"""
+		return self._packageReferences
+
+	@property
+	def ReferencedLibraries(self) -> Dict[str, 'Library']:
+		return self._referencedLibraries
+
+	@property
+	def ReferencedPackages(self) -> Dict[str, 'Package']:
+		return self._referencedPackages
+
+	@property
+	def ReferencedContexts(self) -> Dict[str, 'Context']:
+		return self._referencedContexts
+
+	@property
+	def DependencyVertex(self) -> Vertex:
+		return self._dependencyVertex
+
+	@property
+	def HierarchyVertex(self) -> Vertex:
+		return self._hierarchyVertex
+
+
+@export
+class PrimaryUnit(DesignUnit):
+	"""A ``PrimaryUnit`` is a base-class for all primary units."""
+
+
+@export
+class SecondaryUnit(DesignUnit):
+	"""A ``SecondaryUnit`` is a base-class for all secondary units."""
+
+
+@export
+class Context(PrimaryUnit):
+	_references:        List[ContextUnion]
+	_libraryReferences: List[LibraryClause]
+	_packageReferences: List[UseClause]
+	_contextReferences: List[ContextReference]
+
+
[docs] def __init__(self, identifier: str, references: Iterable[ContextUnion] = None, documentation: str = None): + super().__init__(identifier, documentation) + + self._references = [] + self._libraryReferences = [] + self._packageReferences = [] + self._contextReferences = [] + + if references is not None: + for reference in references: + self._references.append(reference) + reference._parent = self + + if isinstance(reference, LibraryClause): + self._libraryReferences.append(reference) + elif isinstance(reference, UseClause): + self._packageReferences.append(reference) + elif isinstance(reference, ContextReference): + self._contextReferences.append(reference) + else: + raise VHDLModelException()
+ + @property + def LibraryReferences(self) -> List[LibraryClause]: + return self._libraryReferences + + @property + def PackageReferences(self) -> List[UseClause]: + return self._packageReferences + + @property + def ContextReferences(self) -> List[ContextReference]: + return self._contextReferences + +
[docs] def __str__(self): + lib = self._library.Identifier + "?" if self._library is not None else "" + + return f"Context: {lib}.{self.Identifier}"
+ + +@export +class Package(PrimaryUnit, DesignUnitWithContextMixin): + _genericItems: List[GenericInterfaceItem] + _declaredItems: List + + _types: Dict[str, Union[Type, Subtype]] + _objects: Dict[str, Union[Constant, Variable, Signal]] + _constants: Dict[str, Constant] + _functions: Dict[str, Dict[str, Function]] + _procedures: Dict[str, Dict[str, Procedure]] + _components: Dict[str, 'Component'] + +
[docs] def __init__(self, identifier: str, contextItems: Iterable['Context'] = None, genericItems: Iterable[GenericInterfaceItem] = None, declaredItems: Iterable = None, documentation: str = None): + super().__init__(identifier, contextItems, documentation) + DesignUnitWithContextMixin.__init__(self) + + # TODO: extract to mixin + self._genericItems = [] # TODO: convert to dict + if genericItems is not None: + for generic in genericItems: + self._genericItems.append(generic) + generic._parent = self + + # TODO: extract to mixin + self._declaredItems = [] # TODO: convert to dict + if declaredItems is not None: + for item in declaredItems: + self._declaredItems.append(item) + item._parent = self + + self._types = {} + self._objects = {} + self._constants = {} + self._sharedVariables = {} + self._signals = {} + self._subprograms = {} + self._functions = {} + self._procedures = {} + self._components = {}
+ + @property + def GenericItems(self) -> List[GenericInterfaceItem]: + return self._genericItems + + @property + def DeclaredItems(self) -> List: + return self._declaredItems + + @property + def Types(self) -> Dict[str, Union[Type, Subtype]]: + return self._types + + @property + def Objects(self) -> Dict[str, Union[Constant, SharedVariable, Signal, File]]: + return self._objects + + @property + def Constants(self) -> Dict[str, Constant]: + return self._constants + + @property + def Subprograms(self) -> Dict[str, Subprogram]: + return self._subprograms + + @property + def Functions(self) -> Dict[str, Dict[str, Function]]: + return self._functions + + @property + def Procedures(self) -> Dict[str, Dict[str, Procedure]]: + return self._procedures + + # TODO: move into __init__ ? + # TODO: share with architecture and block statement? + def IndexPackage(self): + for item in self._declaredItems: + if isinstance(item, Type): + print(item) + elif isinstance(item, Subtype): + print(item) + elif isinstance(item, Function): + print(item) + elif isinstance(item, Procedure): + print(item) + elif isinstance(item, Constant): + for identifier in item.Identifiers: + normalizedIdentifier = identifier.lower() + self._constants[normalizedIdentifier] = item + self._objects[normalizedIdentifier] = item + elif isinstance(item, Variable): + for identifier in item.Identifiers: + self._objects[identifier.lower()] = item + elif isinstance(item, Signal): + for identifier in item.Identifiers: + self._objects[identifier.lower()] = item + elif isinstance(item, Component): + self._components[item.NormalizedIdentifier] = item + else: + print(item) + +
[docs] def __str__(self) -> str: + lib = self._library.Identifier + "?" if self._library is not None else "" + + return f"Package: {lib}.{self.Identifier}"
+ +
[docs] def __repr__(self) -> str: + lib = self._library.Identifier + "?" if self._library is not None else "" + + return f"{lib}.{self.Identifier}"
+ + +@export +class PackageBody(SecondaryUnit, DesignUnitWithContextMixin): + _package: PackageSymbol + _declaredItems: List + +
[docs] def __init__(self, packageSymbol: PackageSymbol, contextItems: Iterable['Context'] = None, declaredItems: Iterable = None, documentation: str = None): + super().__init__(packageSymbol.Identifier, contextItems, documentation) + DesignUnitWithContextMixin.__init__(self) + + self._package = packageSymbol + packageSymbol._parent = self + + # TODO: extract to mixin + self._declaredItems = [] # TODO: convert to dict + if declaredItems is not None: + for item in declaredItems: + self._declaredItems.append(item) + item._parent = self
+ + @property + def Package(self) -> PackageSymbol: + return self._package + + @property + def DeclaredItems(self) -> List: + return self._declaredItems + + def IndexPackageBody(self): + pass + + def LinkDeclaredItemsToPackage(self): + pass + +
[docs] def __str__(self) -> str: + lib = self._library.Identifier + "?" if self._library is not None else "" + + return f"Package Body: {lib}.{self.Identifier}(body)"
+ +
[docs] def __repr__(self) -> str: + lib = self._library.Identifier + "?" if self._library is not None else "" + + return f"{lib}.{self.Identifier}(body)"
+ + +@export +class Entity(PrimaryUnit, DesignUnitWithContextMixin, ConcurrentDeclarations, ConcurrentStatements): + _genericItems: List[GenericInterfaceItem] + _portItems: List[PortInterfaceItem] + + _architectures: Dict[str, 'Architecture'] + +
[docs] def __init__( + self, + identifier: str, + contextItems: Iterable[ContextUnion] = None, + genericItems: Iterable[GenericInterfaceItem] = None, + portItems: Iterable[PortInterfaceItem] = None, + declaredItems: Iterable = None, + statements: Iterable[ConcurrentStatement] = None, + documentation: str = None + ): + super().__init__(identifier, contextItems, documentation) + DesignUnitWithContextMixin.__init__(self) + ConcurrentDeclarations.__init__(self, declaredItems) + ConcurrentStatements.__init__(self, statements) + + # TODO: extract to mixin + self._genericItems = [] + if genericItems is not None: + for item in genericItems: + self._genericItems.append(item) + item._parent = self + + # TODO: extract to mixin + self._portItems = [] + if portItems is not None: + for item in portItems: + self._portItems.append(item) + item._parent = self + + self._architectures = {}
+ + # TODO: extract to mixin for generics + @property + def GenericItems(self) -> List[GenericInterfaceItem]: + return self._genericItems + + # TODO: extract to mixin for ports + @property + def PortItems(self) -> List[PortInterfaceItem]: + return self._portItems + + @property + def Architectures(self) -> Dict[str, 'Architecture']: + return self._architectures + +
[docs] def __str__(self) -> str: + lib = self._library.Identifier + "?" if self._library is not None else "" + + return f"Entity: {lib}.{self.Identifier}({', '.join(self._architectures.keys())})"
+ +
[docs] def __repr__(self) -> str: + lib = self._library.Identifier + "?" if self._library is not None else "" + + return f"{lib}.{self.Identifier}({', '.join(self._architectures.keys())})"
+ + +@export +class Architecture(SecondaryUnit, DesignUnitWithContextMixin, ConcurrentDeclarations, ConcurrentStatements): + _library: 'Library' = None + _entity: EntitySymbol + +
[docs] def __init__(self, identifier: str, entity: EntitySymbol, contextItems: Iterable[Context] = None, declaredItems: Iterable = None, statements: Iterable['ConcurrentStatement'] = None, documentation: str = None): + super().__init__(identifier, contextItems, documentation) + DesignUnitWithContextMixin.__init__(self) + ConcurrentDeclarations.__init__(self, declaredItems) + ConcurrentStatements.__init__(self, statements) + + self._entity = entity + entity._parent = self
+ + @property + def Entity(self) -> EntitySymbol: + return self._entity + + # TODO: move to Design Unit + @property + def Library(self) -> 'Library': + return self._library + + @Library.setter + def Library(self, library: 'Library') -> None: + self._library = library + +
[docs] def __str__(self) -> str: + lib = self._library.Identifier + "?" if self._library is not None else "" + ent = self._entity.Identifier + "?" if self._entity is not None else "" + + return f"Architecture: {lib}.{ent}({self.Identifier})"
+ +
[docs] def __repr__(self) -> str: + lib = self._library.Identifier + "?" if self._library is not None else "" + ent = self._entity.Identifier + "?" if self._entity is not None else "" + + return f"{lib}.{ent}({self.Identifier})"
+ + +@export +class Component(ModelEntity, NamedEntityMixin, DocumentedEntityMixin): + _genericItems: List[GenericInterfaceItem] + _portItems: List[PortInterfaceItem] + + _entity: Nullable[Entity] + + def __init__(self, identifier: str, genericItems: Iterable[GenericInterfaceItem] = None, portItems: Iterable[PortInterfaceItem] = None, documentation: str = None): + super().__init__() + NamedEntityMixin.__init__(self, identifier) + DocumentedEntityMixin.__init__(self, documentation) + + # TODO: extract to mixin + self._genericItems = [] + if genericItems is not None: + for item in genericItems: + self._genericItems.append(item) + item._parent = self + + # TODO: extract to mixin + self._portItems = [] + if portItems is not None: + for item in portItems: + self._portItems.append(item) + item._parent = self + + @property + def GenericItems(self) -> List[GenericInterfaceItem]: + return self._genericItems + + @property + def PortItems(self) -> List[PortInterfaceItem]: + return self._portItems + + @property + def Entity(self) -> Nullable[Entity]: + return self._entity + + @Entity.setter + def Entity(self, value: Entity) -> None: + self._entity = value + + +@export +class Configuration(PrimaryUnit, DesignUnitWithContextMixin): +
[docs] def __init__(self, identifier: str, contextItems: Iterable[Context] = None, documentation: str = None): + super().__init__(identifier, contextItems, documentation) + DesignUnitWithContextMixin.__init__(self)
+ +
[docs] def __str__(self) -> str: + lib = self._library.Identifier + "?" if self._library is not None else "" + + return f"Configuration: {lib}.{self.Identifier}"
+ +
[docs] def __repr__(self) -> str: + lib = self._library.Identifier + "?" if self._library is not None else "" + + return f"{lib}.{self.Identifier}"
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks.html b/_modules/pyVHDLParser/Blocks.html new file mode 100644 index 000000000..042300371 --- /dev/null +++ b/_modules/pyVHDLParser/Blocks.html @@ -0,0 +1,684 @@ + + + + + + pyVHDLParser.Blocks — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from types                          import FunctionType
+from typing import List, Callable, Iterator, Generator, Tuple, Any
+
+from pyTooling.Decorators           import export
+from pyTooling.MetaClasses import ExtendedType
+from pyTooling.TerminalUI           import LineTerminal
+
+from pyVHDLParser                   import StartOfDocument, EndOfDocument, StartOfSnippet, EndOfSnippet
+from pyVHDLParser.Base              import ParserException
+from pyVHDLParser.Token             import CharacterToken, Token, SpaceToken, IndentationToken, LinebreakToken, CommentToken, TokenIterator
+from pyVHDLParser.Token             import WordToken, EndOfDocumentToken, StartOfDocumentToken
+from pyVHDLParser.Token.Keywords    import LibraryKeyword, UseKeyword, ContextKeyword, EntityKeyword, ArchitectureKeyword, PackageKeyword
+
+
+
[docs]@export +class BlockParserException(ParserException): + """Base-class for exceptions when reading tokens and generating blocks.""" + + _token: Token #: Token that was involved in an exception situation + +
[docs] def __init__(self, message, token): + super().__init__(message) + self._token = token
+ + @property + def Token(self) -> Token: + """Returns the token involved in an exception situation.""" + return self._token
+ + +
[docs]@export +class TokenToBlockParser(metaclass=ExtendedType, useSlots=True): + """Represents the current state of a token-to-block parser.""" + + _iterator: Iterator[Token] + _stack: List[Tuple[Callable[['TokenToBlockParser'], None], int]] + _tokenMarker: Token + + Token: Token + NextState: Callable[['TokenToBlockParser'], None] + # ReIssue: bool + NewToken: Token + NewBlock: 'Block' + LastBlock: 'Block' + Counter: int + +
[docs] def __init__(self, tokenGenerator: Iterator[Token]): + """Initializes the parser state.""" + + self._iterator = iter(tokenGenerator) + self._stack = [] + self._tokenMarker = None + + startToken = next(self._iterator) + + if not isinstance(startToken, StartOfDocumentToken): + raise BlockParserException("First token is not a StartOfDocumentToken.", startToken) + + startBlock = StartOfDocumentBlock(startToken) + + self.Token = startBlock.StartToken + self.NextState = StartOfDocumentBlock.stateDocument + # self.ReIssue = False + self.NewToken = None + self.NewBlock = startBlock + self.LastBlock = None + self.Counter = 0
+ + @property + def PushState(self) -> Callable[['TokenToBlockParser'], None]: + return self.NextState + + @PushState.setter + def PushState(self, value: Callable[['TokenToBlockParser'], None]): + self._stack.append(( + self.NextState, + self.Counter + )) + LineTerminal().WriteDebug(" pushed: " + str(self.NextState)) + self.NextState = value + self._tokenMarker = None + + @property + def TokenMarker(self) -> Token: + if (self.NewToken is not None) and (self._tokenMarker is self.Token): + LineTerminal().WriteDebug(" {DARK_GREEN}@TokenMarker: {0!s} => {GREEN}{1!s}{NOCOLOR}".format(self._tokenMarker, self.NewToken, **LineTerminal.Foreground)) + self._tokenMarker = self.NewToken + return self._tokenMarker + + @TokenMarker.setter + def TokenMarker(self, value: Token): + self._tokenMarker = value + +
[docs] def __eq__(self, other: Any) -> bool: + """Implement a '==' operator for the current state.""" + return self.NextState is other
+ +
[docs] def __ne__(self, other: Any) -> bool: + """Implement a '!=' operator for the current state.""" + return self.NextState is not other
+ +
[docs] def __str__(self) -> str: + """Returns the current state (function name) as str.""" + return f"{self.NextState.__func__.__qualname__}"
+ +
[docs] def __repr__(self) -> str: + """Returns the current state (full) as str.""" + return "{state}\n token: {token}\n Marker: {marker}\n NewToken: {newToken}\n newBlock: {newBlock}".format( + state=self.NextState.__func__.__qualname__, + token=self.Token, + marker=self.TokenMarker, + newToken=self.NewToken, + newBlock=self.NewBlock, + )
+ + def Pop(self, n: int = 1, tokenMarker: Token = None) -> None: + for i in range(n): + top = self._stack.pop() + LineTerminal().WriteDebug("popped: " + str(top[0])) + self.NextState, self.Counter = top + self._tokenMarker = tokenMarker + +
[docs] def __call__(self) -> Generator['Block', Token, None]: + from pyVHDLParser.Token import EndOfDocumentToken + from pyVHDLParser.Blocks.Common import LinebreakBlock, EmptyLineBlock + + for token in self._iterator: + # set parserState.Token to current token + self.Token = token + + # overwrite an existing token and connect the next token with the new one + if self.NewToken is not None: + # print("{MAGENTA}NewToken: {token}{NOCOLOR}".format(token=self.NewToken, **Console.Foreground)) + # update topmost TokenMarker + if self._tokenMarker is token.PreviousToken: + # XXX: LineTerminal().WriteDebug(" update token marker: {0!s} -> {1!s}".format(self._tokenMarker, self.NewToken)) + self._tokenMarker = self.NewToken + + token.PreviousToken = self.NewToken + self.NewToken = None + + # an empty marker means: fill on next yield run + if self._tokenMarker is None: + LineTerminal().WriteDebug(" new token marker: None -> {0!s}".format(token)) + self._tokenMarker = token + + # a new block is assembled + while self.NewBlock is not None: + if isinstance(self.NewBlock, LinebreakBlock) and isinstance(self.LastBlock, (LinebreakBlock, EmptyLineBlock)): + self.LastBlock = EmptyLineBlock(self.LastBlock, self.NewBlock.StartToken) + self.LastBlock.NextBlock = self.NewBlock.NextBlock + else: + self.LastBlock = self.NewBlock + + self.NewBlock = self.NewBlock.NextBlock + yield self.LastBlock + + # if self.debug: print("{MAGENTA}------ iteration end ------{NOCOLOR}".format(**Console.Foreground)) + # XXX: LineTerminal().WriteDebug(" {DARK_GRAY}state={state!s: <50} token={token!s: <40}{NOCOLOR} ".format(state=self, token=token, **LineTerminal.Foreground)) + # execute a state + self.NextState(self) + + else: + if isinstance(self.Token, EndOfDocumentToken) and isinstance(self.NewBlock, EndOfDocumentBlock): + yield self.NewBlock + else: + raise BlockParserException("Unexpected end of document.", self.Token)
+ + +
[docs]@export +class MetaBlock(ExtendedType): + """ + A :term:`meta-class` to construct *Block* classes. + + Modifications done by this meta-class: + + * Register all classes of type :class:`Block` or derived variants in a class field :attr:`Block.BLOCKS` in this meta-class. + * Register all method of name `state....` in the constructed class' attribute :attr:`Block.__STATES__`. + """ + + BLOCKS: List['Block'] = [] #: List of all classes of type :class:`Block` or derived variants + +
[docs] def __new__(cls, className, baseClasses, classMembers: dict): + # """Register all state*** methods in a list called `__STATES__`.""" + states = [] + for memberName, memberObject in classMembers.items(): + if isinstance(memberObject, FunctionType) and (memberName[:5] == "state"): + states.append(memberObject) + + block = super().__new__(cls, className, baseClasses, classMembers, useSlots=True) + block.__STATES__ = states + + cls.BLOCKS.append(block) + + return block
+ + +
[docs]@export +class BlockIterator: + _startBlock: 'Block' + _currentBlock: 'Block' + _stopBlock: 'Block' + _inclusiveStopBlock: bool + + _state: int #: internal states: 0 = normal, 1 = reached stopBlock, 2 = reached EndOfBlock + +
[docs] def __init__(self, startBlock: 'Block', inclusiveStartBlock: bool=False, inclusiveStopBlock: bool=True, stopBlock: 'Block'=None): + self._startBlock = startBlock if inclusiveStartBlock else startBlock.NextBlock + self._currentBlock = self._startBlock + self._stopBlock = stopBlock + self._inclusiveStopBlock = inclusiveStopBlock + + self._state = 0
+ + def __iter__(self) -> 'BlockIterator': + return self + + def __next__(self) -> 'Block': + # in last call of '__next__', the last block in the sequence was returned + if self._state > 0: + raise StopIteration(self._state) + + block = self._currentBlock + if block is self._stopBlock: + if not self._inclusiveStopBlock: + raise StopIteration(1) + else: + self._currentBlock = None + self._state = 1 + elif isinstance(self._currentBlock, EndOfBlock): + if not self._inclusiveStopBlock: + raise StopIteration(2) + else: + self._currentBlock = None + self._state = 2 + else: + self._currentBlock = block.NextBlock + if self._currentBlock is None: + raise ParserException("Found open end while iterating block sequence.") # FIXME: how to append last block? + + return block + + @property + def StartBlock(self) -> 'Block': + return self._startBlock + + @property + def CurrentBlock(self) -> 'Block': + return self._currentBlock + + @property + def StopBlock(self) -> 'Block': + return self._stopBlock + + def Reset(self): + self._currentBlock = self._startBlock
+ + +
[docs]@export +class BlockReverseIterator: + startBlock: 'Block' + currentBlock: 'Block' + stopBlock: 'Block' + + state: int #: internal states: 0 = normal, 1 = reached stopBlock, 2 = reached StartOfBlock + +
[docs] def __init__(self, startBlock: 'Block', inclusiveStartBlock: bool=False, stopBlock: 'Block'=None): + self.startBlock = startBlock + self.currentBlock = startBlock if inclusiveStartBlock else startBlock.NextBlock + self.stopBlock = stopBlock + + self.state = 0
+ + def __iter__(self) -> 'BlockReverseIterator': + return self + + def __next__(self) -> 'Block': + # in last call of '__next__', the last block in the sequence was returned + if self.state > 0: + raise StopIteration(self.state) + + block = self.currentBlock + if block is self.stopToken: + self.currentBlock = None + self.state = 1 + elif isinstance(self.currentBlock, EndOfBlock): + self.currentBlock = None + self.state = 2 + else: + self.currentBlock = block.PreviousBlock + if self.currentBlock is None: + raise ParserException("Found open end while iterating block sequence.") # FIXME: how to append last block? + + return block
+ + +
[docs]@export +class Block(metaclass=MetaBlock): + """ + Base-class for all :term:`block` classes. + """ + + __STATES__: List #: List of all `state...` methods in this class. + + _previousBlock: 'Block' #: Reference to the previous block. + NextBlock: 'Block' #: Reference to the next block. + StartToken: Token #: Reference to the first token in the scope of this block. + EndToken: Token #: Reference to the last token in the scope of this block. + MultiPart: bool #: True, if this block has multiple parts. + +
[docs] def __init__(self, previousBlock: 'Block', startToken: Token, endToken: Token = None, multiPart: bool = False): + """Base-class constructor for a new block instance.""" + + previousBlock.NextBlock = self + self._previousBlock = previousBlock + self.NextBlock = None + self.StartToken = startToken + self.EndToken = startToken if (endToken is None) else endToken + self.MultiPart = multiPart
+ +
[docs] def __len__(self) -> int: + """Returns the length of a block in characters from :attr:`~Block.StartToken` to :attr:`~Block.EndToken`.""" + return self.EndToken.End.Absolute - self.StartToken.Start.Absolute + 1
+ +
[docs] def __iter__(self) -> TokenIterator: + """Returns a token iterator that iterates from :attr:`~Block.StartToken` to :attr:`~Block.EndToken`.""" + return TokenIterator(self.StartToken, inclusiveStartToken=True, stopToken=self.EndToken)
+ + def GetIterator(self, inclusiveStartBlock: bool = False, inclusiveStopBlock: bool = True, stopBlock: 'Block'=None) -> BlockIterator: + return BlockIterator(self, inclusiveStartBlock=inclusiveStartBlock, inclusiveStopBlock=inclusiveStopBlock, stopBlock=stopBlock) + + def GetReverseIterator(self, inclusiveStartBlock: bool = False, inclusiveStopBlock: bool = True, stopBlock: 'Block'=None) -> BlockReverseIterator: + return BlockReverseIterator(self, inclusiveStartBlock=inclusiveStartBlock, inclusiveStopBlock=inclusiveStopBlock, stopBlock=stopBlock) + +
[docs] def __str__(self) -> str: + buffer = "" + for token in self: + if isinstance(token, CharacterToken): + buffer += repr(token) + else: + try: + buffer += token.Value + except AttributeError: + pass + + return buffer
+ +
[docs] def __repr__(self) -> str: + return "[{blockName: <50s} {stream: <62s} at {start!s} .. {end!s}]".format( + blockName="{module}.{classname}{multiparted}".format( + module=self.__module__.rpartition(".")[2], + classname=self.__class__.__name__, + multiparted=("*" if self.MultiPart else "") + ), + stream="'" + self.__str__() + "'", + start=self.StartToken.Start, + end=self.EndToken.End + )
+ + @property + def PreviousBlock(self) -> 'Block': + return self._previousBlock + @PreviousBlock.setter + def PreviousBlock(self, value: 'Block'): + self._previousBlock = value + value.NextBlock = self + + @property + def Length(self) -> int: + """Returns the length of a block in characters from :attr:`~Block.StartToken` to :attr:`~Block.EndToken`.""" + return len(self) + + @property + def States(self) -> List[Callable]: + """Returns a list of all `state...` methods in this class.""" + return self.__STATES__ + +
[docs] @classmethod + def stateError(cls, parserState: TokenToBlockParser): + """Predefined state to catch error situations.""" + raise BlockParserException("Reached unreachable state!")
+ + +
[docs]@export +class SkipableBlock(Block): + """Base-class for blocks that can be skipped in fast-forward scanning.""" + pass
+ +
[docs]@export +class FinalBlock(Block): + """Base-class for blocks that are final in a fast-forward scanning.""" + pass
+ +
[docs]@export +class CommentBlock(SkipableBlock): + """Base-class for all comment blocks.""" + pass
+ + +
[docs]@export +class StartOfBlock(Block): + """Base-class for a first block in a sequence of double-linked blocks.""" + +
[docs] def __init__(self, startToken): + self._previousBlock = None + self.NextBlock = None + self.StartToken = startToken + self.EndToken = None + self.MultiPart = False
+ + # TODO: needs review: should TokenIterator be used? +
[docs] def __iter__(self): + yield self.StartToken
+ +
[docs] def __len__(self) -> int: + return 0
+ +
[docs] def __repr__(self) -> str: + return "[{name}]".format( + name=self.__class__.__name__ + )
+ + +
[docs]@export +class EndOfBlock(Block): + """Base-class for a last block in a sequence of double-linked blocks.""" + +
[docs] def __init__(self, previousBlock, endToken): + super().__init__(previousBlock, endToken)
+ + # TODO: needs review: should TokenIterator be used? +
[docs] def __iter__(self) -> Iterator[Token]: + yield self.StartToken
+ +
[docs] def __len__(self) -> int: + return 0
+ +
[docs] def __repr__(self) -> str: + return "[{name}]".format( + name=self.__class__.__name__ + )
+ + +
[docs]@export +class StartOfDocumentBlock(StartOfBlock, StartOfDocument): + """First block in a sequence of double-linked blocks.""" + + KEYWORDS = None + + @classmethod + def __cls_init__(cls): + from pyVHDLParser.Blocks.Common import IndentationBlock, WhitespaceBlock, LinebreakBlock + from pyVHDLParser.Blocks.Reference import Library, Use, Context + from pyVHDLParser.Blocks.Sequential import Package + from pyVHDLParser.Blocks.Structural import Entity, Architecture + + cls.KEYWORDS = { + # Keyword Transition + LibraryKeyword: Library.StartBlock.stateLibraryKeyword, + UseKeyword: Use.StartBlock.stateUseKeyword, + ContextKeyword: Context.NameBlock.stateContextKeyword, + EntityKeyword: Entity.NameBlock.stateEntityKeyword, + ArchitectureKeyword: Architecture.NameBlock.stateArchitectureKeyword, + PackageKeyword: Package.NameBlock.statePackageKeyword + } + + @classmethod + def stateDocument(cls, parserState: TokenToBlockParser): + from pyVHDLParser.Blocks.Common import IndentationBlock, WhitespaceBlock, LinebreakBlock + + token = parserState.Token + if isinstance(token, SpaceToken): + blockType = IndentationBlock if isinstance(token, IndentationToken) else WhitespaceBlock + parserState.NewBlock = blockType(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = block(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, WordToken): + tokenValue = token.Value.lower() + + for keyword in cls.KEYWORDS: + if tokenValue == keyword.__KEYWORD__: + newToken = keyword(fromExistingToken=token) + parserState.PushState = cls.KEYWORDS[keyword] + parserState.NewToken = newToken + parserState.TokenMarker = newToken + return + + elif isinstance(token, EndOfDocumentToken): + parserState.NewBlock = EndOfDocumentBlock(parserState.LastBlock, token) + return + + raise BlockParserException( + "Expected one of these keywords: {keywords}. Found: '{tokenValue}'.".format( + keywords=", ".join( + [kw.__KEYWORD__.upper() for kw in cls.KEYWORDS] + ), + tokenValue=token.Value + ), token)
+ + +
[docs]@export +class EndOfDocumentBlock(EndOfBlock, EndOfDocument): + """Last block in a sequence of double-linked blocks.""" + pass
+ +
[docs]@export +class StartOfSnippetBlock(StartOfBlock, StartOfSnippet): + pass
+ +
[docs]@export +class EndOfSnippetBlock(EndOfBlock, EndOfSnippet): + pass
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/Assignment/SignalAssignment.html b/_modules/pyVHDLParser/Blocks/Assignment/SignalAssignment.html new file mode 100644 index 000000000..e42fe8817 --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/Assignment/SignalAssignment.html @@ -0,0 +1,329 @@ + + + + + + pyVHDLParser.Blocks.Assignment.SignalAssignment — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.Assignment.SignalAssignment

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators              import export
+
+from pyVHDLParser.Token                import CharacterToken, SpaceToken, WordToken, LinebreakToken
+from pyVHDLParser.Token.Keywords       import BoundaryToken, IdentifierToken, EndToken
+from pyVHDLParser.Blocks               import BlockParserException, Block, TokenToBlockParser
+from pyVHDLParser.Blocks.Common        import LinebreakBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Comment       import SingleLineCommentBlock, MultiLineCommentBlock
+
+
+
[docs]@export +class SignalAssignmentBlock(Block): + @classmethod + def stateSignalAssignmentKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected whitespace after keyword SignalAssignment." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.NewToken = LinebreakToken(fromExistingToken=token) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected signalAssignment name (identifier)." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + if not isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateSignalAssignmentName + return + elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateSignalAssignmentName(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected ';' after signalAssignment name." + if isinstance(token, CharacterToken): + if token == ";": + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif token == "\n": + parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.NewToken = LinebreakToken(fromExistingToken=token) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NextState = cls.stateWhitespace2 + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateWhitespace2(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected ';'." + if isinstance(token, CharacterToken): + if token == ";": + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + if not isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException(errorMessage, token)
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/Assignment/VariableAssignment.html b/_modules/pyVHDLParser/Blocks/Assignment/VariableAssignment.html new file mode 100644 index 000000000..2ed71a718 --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/Assignment/VariableAssignment.html @@ -0,0 +1,329 @@ + + + + + + pyVHDLParser.Blocks.Assignment.VariableAssignment — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.Assignment.VariableAssignment

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators              import export
+
+from pyVHDLParser.Token                import CharacterToken, SpaceToken, WordToken, LinebreakToken
+from pyVHDLParser.Token.Keywords       import BoundaryToken, IdentifierToken, EndToken
+from pyVHDLParser.Blocks               import BlockParserException, Block, TokenToBlockParser
+from pyVHDLParser.Blocks.Common        import LinebreakBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Comment       import SingleLineCommentBlock, MultiLineCommentBlock
+
+
+
[docs]@export +class SignalAssignmentBlock(Block): + @classmethod + def stateSignalAssignmentKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected whitespace after keyword SignalAssignment." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.NewToken = LinebreakToken(fromExistingToken=token) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected signalAssignment name (identifier)." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + if not isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateSignalAssignmentName + return + elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateSignalAssignmentName(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected ';' after signalAssignment name." + if isinstance(token, CharacterToken): + if token == ";": + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif token == "\n": + parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.NewToken = LinebreakToken(fromExistingToken=token) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NextState = cls.stateWhitespace2 + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateWhitespace2(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected ';'." + if isinstance(token, CharacterToken): + if token == ";": + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + if not isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException(errorMessage, token)
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/Attribute/AttributeDeclaration.html b/_modules/pyVHDLParser/Blocks/Attribute/AttributeDeclaration.html new file mode 100644 index 000000000..4022e4168 --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/Attribute/AttributeDeclaration.html @@ -0,0 +1,591 @@ + + + + + + pyVHDLParser.Blocks.Attribute.AttributeDeclaration — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.Attribute.AttributeDeclaration

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators         import export
+
+from pyVHDLParser.Token           import CharacterToken, LinebreakToken, SpaceToken, WordToken
+from pyVHDLParser.Token.Keywords  import BoundaryToken, IdentifierToken, VariableAssignmentKeyword, EndToken
+from pyVHDLParser.Blocks          import Block, TokenToBlockParser
+from pyVHDLParser.Blocks.Comment  import SingleLineCommentBlock, MultiLineCommentBlock
+from pyVHDLParser.Blocks.Common   import LinebreakBlock, WhitespaceBlock
+
+
+
[docs]@export +class AttributeDeclarationBlock(Block): + @classmethod + def stateAttributeDeclarationKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected whitespace after keyword ATTRIBUTE." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.NewToken = LinebreakToken(fromExistingToken=token) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace1 + return + + raise TokenParserException(errorMessage, token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected attribute name (identifier)." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + if not isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateAttributeDeclarationName + return + elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise TokenParserException(errorMessage, token) + + @classmethod + def stateAttributeDeclarationName(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected ';' after library name." + if isinstance(token, CharacterToken): + if token == ":": + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateColon1 + return + elif token == "\n": + parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.NewToken = LinebreakToken(fromExistingToken=token) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NextState = cls.stateWhitespace2 + return + + raise TokenParserException(errorMessage, token) + + @classmethod + def stateWhitespace2(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected attribute name (identifier)." + if isinstance(token, CharacterToken): + if token == ":": + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateColon1 + return + if token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + if not isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateColon1() + return + elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise TokenParserException(errorMessage, token) + + @classmethod + def stateColon1(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected type mark or whitespace after ':'." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.NewToken = LinebreakToken(fromExistingToken=token) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace3 + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace3 + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace3 + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace3 + return + elif isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateTypeMarkName + return + + raise TokenParserException(errorMessage, token) + + @classmethod + def stateWhitespace3(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected type mark (identifier)." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + if not isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateTypeMarkName + return + elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise TokenParserException(errorMessage, token) + + @classmethod + def stateTypeMarkName(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected ':=' or whitespace after type mark." + if isinstance(token, CharacterToken): + if token == ":": + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.statePossibleVariableAssignment + return + elif token == "\n": + parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.NewToken = LinebreakToken(fromExistingToken=token) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace4 + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace4 + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace4 + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NextState = cls.stateWhitespace4 + return + + raise TokenParserException(errorMessage, token) + + @classmethod + def stateWhitespace4(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected ':=' after type mark." + if isinstance(token, CharacterToken): + if token == ":": + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.statePossibleVariableAssignment + return + elif token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + if not isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise TokenParserException(errorMessage, token) + + @classmethod + def statePossibleVariableAssignment(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken) and (token == "="): + parserState.NewToken = VariableAssignmentKeyword(parserState.TokenMarker) + parserState.TokenMarker = parserState.NewToken + parserState.NextState = cls.stateVariableAssignment + return + + raise NotImplementedError("State=PossibleCommentStart: {0!r}".format(token)) + + @classmethod + def stateVariableAssignment(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected ':=' or whitespace after attributeDeclaration mark." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.NewToken = LinebreakToken(fromExistingToken=token) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace5 + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace5 + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace5 + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NextState = cls.stateWhitespace5 + return + + raise TokenParserException(errorMessage, token) + + @classmethod + def stateWhitespace5(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected expression after ':='." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + if not isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, WordToken): + parserState.NextState = cls.stateExpressionEnd + return + elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise TokenParserException(errorMessage, token) + + @classmethod + def stateExpressionEnd(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected ';'." + if isinstance(token, CharacterToken): + if token == ";": + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif token == "-": + parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + + raise TokenParserException(errorMessage, token)
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/Attribute/AttributeSpecification.html b/_modules/pyVHDLParser/Blocks/Attribute/AttributeSpecification.html new file mode 100644 index 000000000..bcac91c15 --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/Attribute/AttributeSpecification.html @@ -0,0 +1,591 @@ + + + + + + pyVHDLParser.Blocks.Attribute.AttributeSpecification — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.Attribute.AttributeSpecification

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators         import export
+
+from pyVHDLParser.Token           import CharacterToken, LinebreakToken, SpaceToken, WordToken
+from pyVHDLParser.Token.Keywords  import BoundaryToken, IdentifierToken, VariableAssignmentKeyword, EndToken
+from pyVHDLParser.Blocks          import Block, TokenToBlockParser
+from pyVHDLParser.Blocks.Common   import LinebreakBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Comment  import SingleLineCommentBlock, MultiLineCommentBlock
+
+
+
[docs]@export +class AttributeSpecificationBlock(Block): + @classmethod + def stateAttributeSpecificationKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected whitespace after keyword ATTRIBUTE." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.NewToken = LinebreakToken(fromExistingToken=token) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace1 + return + + raise TokenParserException(errorMessage, token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected attribute name (identifier)." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + if not isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateAttributeSpecificationName + return + elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise TokenParserException(errorMessage, token) + + @classmethod + def stateAttributeSpecificationName(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected ';' after library name." + if isinstance(token, CharacterToken): + if token == ":": + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateColon1 + return + elif token == "\n": + parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.NewToken = LinebreakToken(fromExistingToken=token) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NextState = cls.stateWhitespace2 + return + + raise TokenParserException(errorMessage, token) + + @classmethod + def stateWhitespace2(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected attribute name (identifier)." + if isinstance(token, CharacterToken): + if token == ":": + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateColon1 + return + if token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + if not isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateColon1() + return + elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise TokenParserException(errorMessage, token) + + @classmethod + def stateColon1(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected type mark or whitespace after ':'." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.NewToken = LinebreakToken(fromExistingToken=token) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace3 + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace3 + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace3 + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace3 + return + elif isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateTypeMarkName + return + + raise TokenParserException(errorMessage, token) + + @classmethod + def stateWhitespace3(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected type mark (identifier)." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + if not isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateTypeMarkName + return + elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise TokenParserException(errorMessage, token) + + @classmethod + def stateTypeMarkName(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected ':=' or whitespace after type mark." + if isinstance(token, CharacterToken): + if token == ":": + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.statePossibleVariableAssignment + return + elif token == "\n": + parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.NewToken = LinebreakToken(fromExistingToken=token) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace4 + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace4 + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace4 + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NextState = cls.stateWhitespace4 + return + + raise TokenParserException(errorMessage, token) + + @classmethod + def stateWhitespace4(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected ':=' after type mark." + if isinstance(token, CharacterToken): + if token == ":": + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.statePossibleVariableAssignment + return + elif token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + if not isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise TokenParserException(errorMessage, token) + + @classmethod + def statePossibleVariableAssignment(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken) and (token == "="): + parserState.NewToken = VariableAssignmentKeyword(parserState.TokenMarker) + parserState.TokenMarker = parserState.NewToken + parserState.NextState = cls.stateVariableAssignment + return + + raise NotImplementedError("State=PossibleCommentStart: {0!r}".format(token)) + + @classmethod + def stateVariableAssignment(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected ':=' or whitespace after attributeSpecification mark." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.NewToken = LinebreakToken(fromExistingToken=token) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace5 + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace5 + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace5 + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NextState = cls.stateWhitespace5 + return + + raise TokenParserException(errorMessage, token) + + @classmethod + def stateWhitespace5(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected expression after ':='." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + if not isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, WordToken): + parserState.NextState = cls.stateExpressionEnd + return + elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise TokenParserException(errorMessage, token) + + @classmethod + def stateExpressionEnd(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected ';'." + if isinstance(token, CharacterToken): + if token == ";": + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif token == "-": + parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + + raise TokenParserException(errorMessage, token)
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/Comment.html b/_modules/pyVHDLParser/Blocks/Comment.html new file mode 100644 index 000000000..326fba20b --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/Comment.html @@ -0,0 +1,252 @@ + + + + + + pyVHDLParser.Blocks.Comment — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.Comment

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators             import export
+
+from pyVHDLParser.Token               import CharacterToken, SpaceToken, IndentationToken
+from pyVHDLParser.Token.Keywords      import SingleLineCommentKeyword, MultiLineCommentStartKeyword, MultiLineCommentEndKeyword
+from pyVHDLParser.Blocks              import CommentBlock, TokenToBlockParser
+from pyVHDLParser.Blocks.Common       import IndentationBlock
+
+
+
[docs]@export +class SingleLineCommentBlock(CommentBlock): + @classmethod + def statePossibleCommentStart(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken) and (token == "-"): + parserState.NewToken = SingleLineCommentKeyword(parserState.TokenMarker) + parserState.TokenMarker = parserState.NewToken + parserState.NextState = cls.stateConsumeComment + return + + raise NotImplementedError("State=PossibleCommentStart: {0!r}".format(token)) + + @classmethod + def stateConsumeComment(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken)and (token == "\n"): + parserState.NewBlock = SingleLineCommentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.Token) + parserState.NextState = cls.stateLinebreak + return + else: + pass # consume everything until "\n" + + @classmethod + def stateLinebreak(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, SpaceToken): + parserState.NewToken = IndentationToken(fromExistingToken=token) + parserState.NewBlock = IndentationBlock(parserState.LastBlock, parserState.NewToken) + parserState.Pop() + else: + parserState.Pop() + if parserState.TokenMarker is None: + # print(" new marker: None -> {0!s}".format(token)) + parserState.TokenMarker = token + # print(" {DARK_GREEN}re-issue: {GREEN}{state!s} {DARK_GREEN}token={GREEN}{token}{NOCOLOR}".format(state=parserState, token=parserState.Token, **Console.Foreground)) + parserState.NextState(parserState)
+ + +
[docs]@export +class MultiLineCommentBlock(CommentBlock): + @classmethod + def statePossibleCommentStart(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken) and (token == "*"): + parserState.NewToken = MultiLineCommentStartKeyword(parserState.TokenMarker) + parserState.TokenMarker = parserState.NewToken + parserState.NextState = cls.stateConsumeComment + return + else: + parserState.Pop() + # print(" {DARK_GREEN}re-issue: {GREEN}{state!s} {DARK_GREEN}token={GREEN}{token}{NOCOLOR}".format(state=parserState, token=parserState.Token, **Console.Foreground)) + parserState.NextState(parserState) + + @classmethod + def stateConsumeComment(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken) and (token == "*"): + parserState.PushState = cls.statePossibleCommentEnd + parserState.TokenMarker = token + return + else: + pass # consume everything until "*/" + + @classmethod + def statePossibleCommentEnd(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken) and (token == "/"): + parserState.NewToken = MultiLineCommentEndKeyword(parserState.TokenMarker) + parserState.Pop() + parserState.NewBlock = MultiLineCommentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + else: + parserState.Pop() + parserState.NextState(parserState)
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/Common.html b/_modules/pyVHDLParser/Blocks/Common.html new file mode 100644 index 000000000..36a08ed35 --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/Common.html @@ -0,0 +1,229 @@ + + + + + + pyVHDLParser.Blocks.Common — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.Common

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators     import export
+
+from pyVHDLParser.Token       import SpaceToken, IndentationToken
+from pyVHDLParser.Blocks      import TokenToBlockParser, SkipableBlock
+
+
+
[docs]@export +class WhitespaceBlock(SkipableBlock): +
[docs] def __init__(self, previousBlock, startToken): + super().__init__(previousBlock, startToken, startToken)
+ +
[docs] def __repr__(self): + return "[{blockName: <50s} {stream} at {start!s} .. {end!s}]".format( + blockName=type(self).__name__, + stream=" "*61, + start=self.StartToken.Start, + end=self.EndToken.End + )
+ + +
[docs]@export +class LinebreakBlock(WhitespaceBlock): + @classmethod + def stateLinebreak(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, SpaceToken): + parserState.NewToken = IndentationToken(fromExistingToken=token) + parserState.NewBlock = IndentationBlock(parserState.LastBlock, parserState.NewToken) + parserState.Pop() + # print(" {GREEN}continue: {0!s}{NOCOLOR}".format(parserState, **Console.Foreground)) + else: + parserState.Pop() + if parserState.TokenMarker is None: + # print(" {DARK_GREEN}set marker: {GREEN}LinebreakBlock.stateLinebreak {DARK_GREEN}marker {GREEN}{0!s}{NOCOLOR}".format(token, **Console.Foreground)) + parserState.TokenMarker = token + # print(" {DARK_GREEN}re-issue: {GREEN}{state!s: <20s} {DARK_GREEN}token {GREEN}{token}{NOCOLOR}".format(state=parserState, token=parserState.Token, **Console.Foreground)) + parserState.NextState(parserState)
+ + +
[docs]@export +class EmptyLineBlock(LinebreakBlock): + pass
+ + +
[docs]@export +class IndentationBlock(WhitespaceBlock): + __TABSIZE__ = 2 + +
[docs] def __repr__(self): + length = len(self.StartToken.Value) + actual = sum([(self.__TABSIZE__ if (c == "\t") else 1) for c in self.StartToken.Value]) + + return "[{blockName: <50s} length={len: <53} at {start!s} .. {end!s}]".format( + blockName=type(self).__name__, + len="{len} ({actual}) ".format( + len=length, + actual=actual + ), + start=self.StartToken.Start, + end=self.EndToken.End + )
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/ControlStructure/Case.html b/_modules/pyVHDLParser/Blocks/ControlStructure/Case.html new file mode 100644 index 000000000..410a9f135 --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/ControlStructure/Case.html @@ -0,0 +1,406 @@ + + + + + + pyVHDLParser.Blocks.ControlStructure.Case — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.ControlStructure.Case

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators             import export
+
+from pyVHDLParser.Token               import CharacterToken, LinebreakToken, SpaceToken, IndentationToken, CommentToken, MultiLineCommentToken, SingleLineCommentToken
+from pyVHDLParser.Token.Keywords      import WordToken, BoundaryToken, CaseKeyword, WhenKeyword, IsKeyword, EndKeyword, MapAssociationKeyword
+from pyVHDLParser.Blocks              import BlockParserException, Block, CommentBlock, TokenToBlockParser
+from pyVHDLParser.Blocks.Common       import LinebreakBlock, IndentationBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Generic      import SequentialBeginBlock
+from pyVHDLParser.Blocks.Generic1     import EndBlock as EndBlockBase
+from pyVHDLParser.Blocks.Expression   import ExpressionBlockEndedByCharORClosingRoundBracket, ExpressionBlockEndedByKeywordORClosingRoundBracket
+
+
+
[docs]@export +class EndBlock(EndBlockBase): + KEYWORD = CaseKeyword + EXPECTED_NAME = KEYWORD.__KEYWORD__
+ + +
[docs]@export +class ArrowBlock(SequentialBeginBlock): + END_BLOCK = EndBlock + + @classmethod + def stateArrowKeyword(cls, parserState: TokenToBlockParser): + cls.stateSequentialRegion(parserState) + + @classmethod + def stateSequentialRegion(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken) and (token <= "when"): + newToken = WhenKeyword(fromExistingToken=token) + parserState.NewToken = newToken + parserState.TokenMarker = newToken + parserState.NextState = WhenBlock.stateWhenKeyword + return + + super().stateSequentialRegion(parserState)
+ + +
[docs]@export +class WhenExpressionBlock(ExpressionBlockEndedByCharORClosingRoundBracket): + EXIT_CHAR = "=>" + EXIT_TOKEN = MapAssociationKeyword + EXIT_BLOCK = ArrowBlock
+ + +
[docs]@export +class WhenBlock(SequentialBeginBlock): + END_BLOCK = EndBlock + + @classmethod + def stateWhenKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken) and (token == "("): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + parserState.TokenMarker = parserState.NewToken + parserState.NextState = ArrowBlock.stateArrowKeyword + parserState.PushState = WhenExpressionBlock.stateExpression + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace1 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + else: + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken) + parserState.NextState = ArrowBlock.stateArrowKeyword + parserState.PushState = WhenExpressionBlock.stateExpression + parserState.TokenMarker = parserState.Token + parserState.NextState(parserState) + return + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + else: + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken) + parserState.NextState = ArrowBlock.stateArrowKeyword + parserState.PushState = WhenExpressionBlock.stateExpression + parserState.TokenMarker = parserState.Token + parserState.NextState(parserState) + return
+ + +
[docs]@export +class IsBlock(SequentialBeginBlock): + END_BLOCK = None + + @classmethod + def stateIsKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, SpaceToken): + blockType = IndentationBlock if isinstance(token, IndentationToken) else WhitespaceBlock + parserState.NewBlock = blockType(parserState.LastBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = block(parserState.LastBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException("Expected whitespace after keyword IS.", token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken): + tokenValue = token.Value.lower() + if tokenValue == "when": + newToken = WhenKeyword(fromExistingToken=token) + parserState.NewToken = newToken + parserState.TokenMarker = newToken + parserState.NextState = WhenBlock.stateWhenKeyword + return + elif tokenValue == "end": + parserState.NewToken = EndKeyword(fromExistingToken=token) + parserState.NextState = cls.END_BLOCK.stateEndKeyword + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected one of these keywords: WHEN or END. Found: '{tokenValue}'.".format(tokenValue=token.Value), token)
+ + +
[docs]@export +class CaseExpressionBlock(ExpressionBlockEndedByKeywordORClosingRoundBracket): + EXIT_KEYWORD = IsKeyword + EXIT_BLOCK = IsBlock
+ + +
[docs]@export +class CaseBlock(Block): + @classmethod + def stateCaseKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken) and (token == "("): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + parserState.TokenMarker = parserState.NewToken + parserState.NextState = IsBlock.stateIsKeyword + parserState.PushState = CaseExpressionBlock.stateExpression + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace1 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + else: + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken) + parserState.NextState = IsBlock.stateIsKeyword + parserState.PushState = CaseExpressionBlock.stateExpression + parserState.TokenMarker = parserState.Token + parserState.NextState(parserState) + return + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + else: + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken) + parserState.NextState = IsBlock.stateIsKeyword + parserState.PushState = CaseExpressionBlock.stateExpression + parserState.TokenMarker = parserState.Token + parserState.NextState(parserState) + return
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/ControlStructure/Exit.html b/_modules/pyVHDLParser/Blocks/ControlStructure/Exit.html new file mode 100644 index 000000000..c252f5e80 --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/ControlStructure/Exit.html @@ -0,0 +1,368 @@ + + + + + + pyVHDLParser.Blocks.ControlStructure.Exit — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.ControlStructure.Exit

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators           import export
+
+from pyVHDLParser.Token             import SpaceToken, LinebreakToken, CommentToken, IndentationToken, SingleLineCommentToken, MultiLineCommentToken
+from pyVHDLParser.Token             import WordToken, ExtendedIdentifier, CharacterToken
+from pyVHDLParser.Token.Keywords    import BoundaryToken, IdentifierToken, EndToken, WhenKeyword
+from pyVHDLParser.Blocks            import Block, TokenToBlockParser, CommentBlock, BlockParserException
+from pyVHDLParser.Blocks.Common     import LinebreakBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Generic1   import EndOfStatementBlock
+from pyVHDLParser.Blocks.Expression import ExpressionBlockEndedBySemicolon
+
+
+
[docs]@export +class EndBlock(EndOfStatementBlock): + pass
+ + +
[docs]@export +class ExitConditionBlock(ExpressionBlockEndedBySemicolon): + END_BLOCK = EndBlock
+ + +
[docs]@export +class ExitBlock(Block): + @classmethod + def stateExitKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken) and (token == ";"): + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + # parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken, multiPart=True) + # parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException("Expected ';' or whitespace after keyword EXIT.", token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken) and (token == ";"): + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif isinstance(token, WordToken): + if token <= "when": + parserState.NewToken = WhenKeyword(fromExistingToken=token) + parserState.NextState = cls.stateWhenKeyword + return + else: + parserState.NewToken = IdentifierToken(fromExistingToken=token) + # parserState.TokenMarker = parserState.NewToken + parserState.NextState = cls.stateExitLoopLabel + return + elif isinstance(token, ExtendedIdentifier): + parserState.NextState = cls.stateExitLoopLabel + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = block(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected ';', keyword WHEN or loop label.", token) + + @classmethod + def stateExitLoopLabel(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken) and (token == ";"): + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + # parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token, multiPart=True) + # parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + return + + raise BlockParserException("Expected ';' or whitespace after loop label.", token) + + @classmethod + def stateWhitespace2(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken) and (token == ";"): + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif isinstance(token, WordToken) and (token <= "when"): + parserState.NewToken = WhenKeyword(fromExistingToken=token) + parserState.NextState = cls.stateWhenKeyword + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = block(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected ';' or keyword WHEN.", token) + + @classmethod + def stateWhenKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken): + if (token == ";"): + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = EndBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + parserState.Pop() + return + elif (token == "("): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + parserState.TokenMarker = parserState.NewToken + parserState.NextState = EndBlock.stateError + parserState.PushState = ExitConditionBlock.stateExpression + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace3 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace3 + return + + raise BlockParserException("Expected ';' or whitespace after keyword RETURN.", token) + + @classmethod + def stateWhitespace3(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken) and (token == ";"): + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = EndBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + parserState.Pop() + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif (isinstance(token, SpaceToken) and ( + isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken))): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + else: + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken) + parserState.NextState = EndBlock.stateError + parserState.PushState = ExitConditionBlock.stateExpression + parserState.TokenMarker = parserState.Token + parserState.NextState(parserState) + return
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/ControlStructure/ForLoop.html b/_modules/pyVHDLParser/Blocks/ControlStructure/ForLoop.html new file mode 100644 index 000000000..a21296599 --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/ControlStructure/ForLoop.html @@ -0,0 +1,369 @@ + + + + + + pyVHDLParser.Blocks.ControlStructure.ForLoop — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.ControlStructure.ForLoop

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators             import export
+
+from pyVHDLParser.Token               import LinebreakToken, CommentToken, MultiLineCommentToken, IndentationToken, SingleLineCommentToken, ExtendedIdentifier, CharacterToken, SpaceToken
+from pyVHDLParser.Token.Keywords      import InKeyword, ForKeyword, LoopKeyword, BoundaryToken, IdentifierToken, WordToken
+from pyVHDLParser.Blocks              import BlockParserException, Block, CommentBlock, TokenToBlockParser
+from pyVHDLParser.Blocks.Common       import LinebreakBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Generic      import SequentialBeginBlock
+from pyVHDLParser.Blocks.Generic1     import EndBlock as EndBlockBase
+from pyVHDLParser.Blocks.Expression   import ExpressionBlockEndedByKeywordORClosingRoundBracket, ExpressionBlockEndedByKeywordOrToOrDownto
+
+
+
[docs]@export +class IteratorBlock(Block): + @classmethod + def stateForKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace1 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException("Expected whitespace after keyword FOR.", token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateIteratorName + return + elif isinstance(token, ExtendedIdentifier): + parserState.NextState = cls.stateIteratorName + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected iterator name (identifier).", token) + + @classmethod + def stateIteratorName(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace2 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + return + + raise BlockParserException("Expected whitespace after iterator name.", token) + + @classmethod + def stateWhitespace2(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken) and (token <= "in"): + parserState.NewToken = InKeyword(fromExistingToken=token) + # parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + # parserState.TokenMarker = None + parserState.NextState = cls.stateInKeyword + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected keyword IN after iterator name.", token) + + @classmethod + def stateInKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken) and (token == "("): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + parserState.TokenMarker = parserState.NewToken + parserState.NextState = LoopBlock.stateSequentialRegion + parserState.PushState = ExpressionBlockEndedByLoopORToORDownto.stateExpression + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace3 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace3 + return + + raise BlockParserException("Expected '(' or whitespace after keyword IN.", token) + + @classmethod + def stateWhitespace3(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + else: + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken) + parserState.NextState = LoopBlock.stateLoopKeyword + parserState.PushState = ExpressionBlockEndedByLoop.stateExpression + parserState.PushState = ExpressionBlockEndedByLoopORToORDownto.stateExpression + parserState.TokenMarker = parserState.Token + parserState.NextState(parserState) + return
+ + +
[docs]@export +class EndBlock(EndBlockBase): + KEYWORD = ForKeyword + KEYWORD_IS_OPTIONAL = False + EXPECTED_NAME = KEYWORD.__KEYWORD__
+ + +
[docs]@export +class LoopBlock(SequentialBeginBlock): + END_BLOCK = EndBlock + + @classmethod + def stateLoopKeyword(cls, parserState: TokenToBlockParser): + parserState.NextState = cls.stateSequentialRegion + parserState.NextState(parserState)
+ + +
[docs]@export +class ExpressionBlockEndedByLoopORToORDownto(ExpressionBlockEndedByKeywordOrToOrDownto): + EXIT_KEYWORD = LoopKeyword + EXIT_BLOCK = LoopBlock
+ + +
[docs]@export +class ExpressionBlockEndedByLoop(ExpressionBlockEndedByKeywordORClosingRoundBracket): + EXIT_KEYWORD = LoopKeyword + EXIT_BLOCK = LoopBlock
+ + +
[docs]@export +class LoopIterationDirectionBlock(Block): + pass
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/ControlStructure/If.html b/_modules/pyVHDLParser/Blocks/ControlStructure/If.html new file mode 100644 index 000000000..cc98914ac --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/ControlStructure/If.html @@ -0,0 +1,355 @@ + + + + + + pyVHDLParser.Blocks.ControlStructure.If — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.ControlStructure.If

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators             import export
+
+from pyVHDLParser.Token               import CharacterToken, LinebreakToken, SpaceToken, IndentationToken, CommentToken, MultiLineCommentToken, SingleLineCommentToken
+from pyVHDLParser.Token.Keywords      import WordToken, BoundaryToken, IfKeyword, ThenKeyword, ElsIfKeyword, ElseKeyword
+from pyVHDLParser.Blocks              import Block, CommentBlock, TokenToBlockParser
+from pyVHDLParser.Blocks.Common       import LinebreakBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Generic      import SequentialBeginBlock
+from pyVHDLParser.Blocks.Generic1     import EndBlock as EndBlockBase
+from pyVHDLParser.Blocks.Expression   import ExpressionBlockEndedByKeywordORClosingRoundBracket
+
+
+
[docs]@export +class EndBlock(EndBlockBase): + KEYWORD = IfKeyword + EXPECTED_NAME = KEYWORD.__KEYWORD__
+ + +
[docs]@export +class ThenBlock(SequentialBeginBlock): + END_BLOCK = EndBlock + + @classmethod + def stateThenKeyword(cls, parserState: TokenToBlockParser): + cls.stateSequentialRegion(parserState) + + @classmethod + def stateSequentialRegion(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken): + tokenValue = token.Value.lower() + + if tokenValue == "elsif": + newToken = ElsIfKeyword(fromExistingToken=token) + parserState.NewToken = newToken + parserState.TokenMarker = newToken + parserState.NextState = ElsIfConditionBlock.stateElsIfKeyword + return + elif tokenValue == "else": + newToken = ElseKeyword(fromExistingToken=token) + parserState.NewToken = newToken + parserState.NewBlock = ElseBlock(parserState.LastBlock, newToken) + parserState.TokenMarker = None + parserState.NextState = ElseBlock.stateElseKeyword + return + + super().stateSequentialRegion(parserState)
+ + +
[docs]@export +class ElseBlock(SequentialBeginBlock): + END_BLOCK = EndBlock + + @classmethod + def stateElseKeyword(cls, parserState: TokenToBlockParser): + cls.stateSequentialRegion(parserState)
+ + +
[docs]@export +class ExpressionBlockEndedByThen(ExpressionBlockEndedByKeywordORClosingRoundBracket): + EXIT_KEYWORD = ThenKeyword + EXIT_BLOCK = ThenBlock
+ + +
[docs]@export +class IfConditionBlock(Block): + @classmethod + def stateIfKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken) and (token == "("): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + parserState.TokenMarker = parserState.NewToken + parserState.NextState = ThenBlock.stateThenKeyword + parserState.PushState = ExpressionBlockEndedByThen.stateExpression + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace1 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + else: + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken) + parserState.NextState = ThenBlock.stateThenKeyword + parserState.PushState = ExpressionBlockEndedByThen.stateExpression + parserState.TokenMarker = parserState.Token + parserState.NextState(parserState) + return + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + else: + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken) + parserState.NextState = ThenBlock.stateThenKeyword + parserState.PushState = ExpressionBlockEndedByThen.stateExpression + parserState.TokenMarker = parserState.Token + parserState.NextState(parserState) + return
+ + +
[docs]@export +class ElsIfConditionBlock(Block): + @classmethod + def stateElsIfKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken) and (token == "("): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + parserState.TokenMarker = parserState.NewToken + parserState.NextState = ThenBlock.stateThenKeyword + parserState.PushState = ExpressionBlockEndedByThen.stateExpression + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace1 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + else: + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken) + parserState.NextState = ThenBlock.stateThenKeyword + parserState.PushState = ExpressionBlockEndedByThen.stateExpression + parserState.TokenMarker = parserState.Token + parserState.NextState(parserState) + return + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + else: + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken) + parserState.NextState = ThenBlock.stateThenKeyword + parserState.PushState = ExpressionBlockEndedByThen.stateExpression + parserState.TokenMarker = parserState.Token + parserState.NextState(parserState) + return
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/ControlStructure/Next.html b/_modules/pyVHDLParser/Blocks/ControlStructure/Next.html new file mode 100644 index 000000000..1aa6cec6d --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/ControlStructure/Next.html @@ -0,0 +1,368 @@ + + + + + + pyVHDLParser.Blocks.ControlStructure.Next — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.ControlStructure.Next

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators           import export
+
+from pyVHDLParser.Token             import SpaceToken, LinebreakToken, CommentToken, IndentationToken, SingleLineCommentToken, MultiLineCommentToken
+from pyVHDLParser.Token             import WordToken, ExtendedIdentifier, CharacterToken
+from pyVHDLParser.Token.Keywords    import BoundaryToken, IdentifierToken, EndToken, WhenKeyword
+from pyVHDLParser.Blocks            import Block, TokenToBlockParser, CommentBlock, BlockParserException
+from pyVHDLParser.Blocks.Common     import LinebreakBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Generic1   import EndOfStatementBlock
+from pyVHDLParser.Blocks.Expression import ExpressionBlockEndedBySemicolon
+
+
+
[docs]@export +class EndBlock(EndOfStatementBlock): + pass
+ + +
[docs]@export +class NextConditionBlock(ExpressionBlockEndedBySemicolon): + END_BLOCK = EndBlock
+ + +
[docs]@export +class NextBlock(Block): + @classmethod + def stateNextKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken) and (token == ";"): + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + # parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken, multiPart=True) + # parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException("Expected ';' or whitespace after keyword EXIT.", token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken) and (token == ";"): + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif isinstance(token, WordToken): + if token <= "when": + parserState.NewToken = WhenKeyword(fromExistingToken=token) + parserState.NextState = cls.stateWhenKeyword + return + else: + parserState.NewToken = IdentifierToken(fromExistingToken=token) + # parserState.TokenMarker = parserState.NewToken + parserState.NextState = cls.stateNextLoopLabel + return + elif isinstance(token, ExtendedIdentifier): + parserState.NextState = cls.stateNextLoopLabel + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = block(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected ';', keyword WHEN or loop label.", token) + + @classmethod + def stateNextLoopLabel(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken) and (token == ";"): + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + # parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token, multiPart=True) + # parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + return + + raise BlockParserException("Expected ';' or whitespace after loop label.", token) + + @classmethod + def stateWhitespace2(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken) and (token == ";"): + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif isinstance(token, WordToken) and (token <= "when"): + parserState.NewToken = WhenKeyword(fromExistingToken=token) + parserState.NextState = cls.stateWhenKeyword + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = block(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected ';' or keyword WHEN.", token) + + @classmethod + def stateWhenKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken): + if (token == ";"): + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = EndBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + parserState.Pop() + return + elif (token == "("): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + parserState.TokenMarker = parserState.NewToken + parserState.NextState = EndBlock.stateError + parserState.PushState = NextConditionBlock.stateExpression + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace3 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace3 + return + + raise BlockParserException("Expected ';' or whitespace after keyword RETURN.", token) + + @classmethod + def stateWhitespace3(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken) and (token == ";"): + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = EndBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + parserState.Pop() + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif (isinstance(token, SpaceToken) and ( + isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken))): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + else: + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken) + parserState.NextState = EndBlock.stateError + parserState.PushState = NextConditionBlock.stateExpression + parserState.TokenMarker = parserState.Token + parserState.NextState(parserState) + return
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/ControlStructure/Null.html b/_modules/pyVHDLParser/Blocks/ControlStructure/Null.html new file mode 100644 index 000000000..61587cced --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/ControlStructure/Null.html @@ -0,0 +1,228 @@ + + + + + + pyVHDLParser.Blocks.ControlStructure.Null — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.ControlStructure.Null

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators           import export
+
+from pyVHDLParser.Token             import SpaceToken, LinebreakToken, CommentToken, IndentationToken, SingleLineCommentToken, MultiLineCommentToken
+from pyVHDLParser.Token             import CharacterToken
+from pyVHDLParser.Token.Keywords    import BoundaryToken, EndToken
+from pyVHDLParser.Blocks            import Block, TokenToBlockParser, CommentBlock, BlockParserException
+from pyVHDLParser.Blocks.Common     import LinebreakBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Generic1   import EndOfStatementBlock
+
+
+
[docs]@export +class EndBlock(EndOfStatementBlock): + pass
+ + +
[docs]@export +class NullBlock(Block): + @classmethod + def stateNullKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken) and (token == ";"): + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif isinstance(token, SpaceToken): + parserState.NextState = cls.stateWhitespace1 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException("Expected ';' or whitespace after keyword NULL.", token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken) and (token == ";"): + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = block(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected ';'.", token)
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/ControlStructure/Return.html b/_modules/pyVHDLParser/Blocks/ControlStructure/Return.html new file mode 100644 index 000000000..9c64a2b2f --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/ControlStructure/Return.html @@ -0,0 +1,256 @@ + + + + + + pyVHDLParser.Blocks.ControlStructure.Return — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.ControlStructure.Return

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators             import export
+
+from pyVHDLParser.Token               import CommentToken, CharacterToken, SpaceToken, LinebreakToken, IndentationToken, SingleLineCommentToken, MultiLineCommentToken
+from pyVHDLParser.Token.Keywords      import BoundaryToken, EndToken
+from pyVHDLParser.Blocks              import Block, TokenToBlockParser, BlockParserException, CommentBlock
+from pyVHDLParser.Blocks.Generic1     import EndOfStatementBlock
+from pyVHDLParser.Blocks.Common       import LinebreakBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Expression   import ExpressionBlockEndedBySemicolon
+
+
+
[docs]@export +class EndBlock(EndOfStatementBlock): + pass
+ + +
[docs]@export +class ReturnExpressionBlock(ExpressionBlockEndedBySemicolon): + END_BLOCK = EndBlock
+ + +
[docs]@export +class ReturnBlock(Block): + @classmethod + def stateReturnKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken): + if (token == ";"): + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = EndBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + parserState.Pop() + return + elif (token == "("): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + parserState.TokenMarker = parserState.NewToken + parserState.NextState = EndBlock.stateError + parserState.PushState = ReturnExpressionBlock.stateExpression + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace1 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException("Expected ';' or whitespace after keyword RETURN.", token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken) and (token == ";"): + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = EndBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + parserState.Pop() + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif (isinstance(token, SpaceToken) and ( + isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken))): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + else: + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken) + parserState.NextState = EndBlock.stateError + parserState.PushState = ReturnExpressionBlock.stateExpression + parserState.TokenMarker = parserState.Token + parserState.NextState(parserState) + return
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/ControlStructure/WhileLoop.html b/_modules/pyVHDLParser/Blocks/ControlStructure/WhileLoop.html new file mode 100644 index 000000000..1de39ed0d --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/ControlStructure/WhileLoop.html @@ -0,0 +1,376 @@ + + + + + + pyVHDLParser.Blocks.ControlStructure.WhileLoop — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.ControlStructure.WhileLoop

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators             import export
+
+from pyVHDLParser.Token               import CharacterToken, LinebreakToken, IndentationToken
+from pyVHDLParser.Token.Keywords      import BoundaryToken, IdentifierToken, LoopKeyword
+from pyVHDLParser.Token.Keywords      import IsKeyword, EndKeyword, GenericKeyword, PortKeyword
+from pyVHDLParser.Token.Parser        import SpaceToken, WordToken
+from pyVHDLParser.Blocks              import BlockParserException, Block, TokenToBlockParser
+from pyVHDLParser.Blocks.Common       import LinebreakBlock, IndentationBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Comment      import SingleLineCommentBlock, MultiLineCommentBlock
+from pyVHDLParser.Blocks.Generic      import EndBlock as EndBlockBase
+from pyVHDLParser.Blocks.List         import GenericList, PortList
+
+
+
[docs]@export +class ConditionBlock(Block): + @classmethod + def stateWhileKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected whitespace after keyword WHILE." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewBlock = ConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.NewToken = LinebreakToken(fromExistingToken=token) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = ConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = ConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected while name (identifier)." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + if not isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewBlock = ConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = ConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = ConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateWhileName + return + elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateWhileName(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected whitespace after keyword WHILE." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewBlock = ConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.NewToken = LinebreakToken(fromExistingToken=token) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = ConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = ConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NextState = cls.stateWhitespace2 + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateWhitespace2(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected keyword IS after while name." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + if not isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewBlock = ConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = ConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = ConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, WordToken) and (token <= "is"): + parserState.NewToken = IsKeyword(fromExistingToken=token) + parserState.NewBlock = ConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.NextState = cls.stateDeclarativeRegion + return + elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateDeclarativeRegion(cls, parserState: TokenToBlockParser): + errorMessage = "Expected one of these keywords: generic, port, begin, end." + token = parserState.Token + if isinstance(parserState.Token, CharacterToken): + if token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = parserState.NewToken + return + elif token == "-": + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NewToken = IndentationToken(fromExistingToken=token) + parserState.NewBlock = IndentationBlock(parserState.LastBlock, parserState.NewToken) + return + elif isinstance(token, WordToken): + keyword = token.Value.lower() + if keyword == "generic": + newToken = GenericKeyword(fromExistingToken=token) + parserState.PushState = GenericList.OpenBlock.stateGenericKeyword + elif keyword == "port": + newToken = PortKeyword(fromExistingToken=token) + parserState.PushState = PortList.OpenBlock.statePortKeyword + elif keyword == "end": + newToken = EndKeyword(fromExistingToken=token) + parserState.NextState = EndBlock.stateEndKeyword + else: + raise BlockParserException(errorMessage, token) + + parserState.NewToken = newToken + parserState.TokenMarker = newToken + return + + raise BlockParserException(errorMessage, token)
+ + +
[docs]@export +class EndBlock(EndBlockBase): + KEYWORD = LoopKeyword + EXPECTED_NAME = KEYWORD.__KEYWORD__
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/Expression.html b/_modules/pyVHDLParser/Blocks/Expression.html new file mode 100644 index 000000000..9049de93d --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/Expression.html @@ -0,0 +1,953 @@ + + + + + + pyVHDLParser.Blocks.Expression — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.Expression

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators         import export
+
+from pyVHDLParser.Token           import FusedCharacterToken, CharacterToken, WordToken, LiteralToken, SpaceToken, LinebreakToken
+from pyVHDLParser.Token           import CommentToken, Token, MultiLineCommentToken, IndentationToken, SingleLineCommentToken
+from pyVHDLParser.Token.Keywords  import EqualOperator, PlusOperator, MinusOperator, MultiplyOperator, DivideOperator, ConcatOperator, LessThanOperator
+from pyVHDLParser.Token.Keywords  import GreaterThanOperator, DelimiterToken, PowerOperator, UnequalOperator, LessThanOrEqualOperator
+from pyVHDLParser.Token.Keywords  import GreaterThanOrEqualOperator, MatchingEqualOperator, MatchingUnequalOperator, MatchingLessThanOperator
+from pyVHDLParser.Token.Keywords  import MatchingLessThanOrEqualOperator, MatchingGreaterThanOperator, MatchingGreaterThanOrEqualOperator, OrOperator
+from pyVHDLParser.Token.Keywords  import NorOperator, AndOperator, NandOperator, XorOperator, XnorOperator, SlaOperator, SllOperator, SraOperator, SrlOperator
+from pyVHDLParser.Token.Keywords  import NotOperator, AbsOperator, OpeningRoundBracketToken, BoundaryToken, ClosingRoundBracketToken, IdentifierToken
+from pyVHDLParser.Token.Keywords  import LoopKeyword, ToKeyword, DowntoKeyword, EndToken
+from pyVHDLParser.Blocks          import Block, TokenToBlockParser, BlockParserException, CommentBlock
+from pyVHDLParser.Blocks.Common   import LinebreakBlock, WhitespaceBlock
+
+
+
[docs]@export +class ExpressionBlock(Block): + CHARACTER_TRANSLATION = { + "=": EqualOperator, + "+": PlusOperator, + "-": MinusOperator, + "*": MultiplyOperator, + "/": DivideOperator, + "&": ConcatOperator, + "<": LessThanOperator, + ">": GreaterThanOperator, + ",": DelimiterToken + # ";": EndToken + } + FUSED_CHARACTER_TRANSLATION = { + "**": PowerOperator, + "/=": UnequalOperator, + "<=": LessThanOrEqualOperator, + ">=": GreaterThanOrEqualOperator, + "?=": MatchingEqualOperator, + "?/=": MatchingUnequalOperator, + "?<": MatchingLessThanOperator, + "?<=": MatchingLessThanOrEqualOperator, + "?>": MatchingGreaterThanOperator, + "?>=": MatchingGreaterThanOrEqualOperator + # "=>": MapAssociationKeyword, + # "<=>": SignalAssociationKeyword + } + OPERATOR_TRANSLATIONS = { + "or": OrOperator, + "nor": NorOperator, + "and": AndOperator, + "nand": NandOperator, + "xor": XorOperator, + "xnor": XnorOperator, + "sla": SlaOperator, + "sll": SllOperator, + "sra": SraOperator, + "srl": SrlOperator, + "not": NotOperator, + "abs": AbsOperator + }
+ + +
[docs]@export +class ExpressionBlockEndedByCharORClosingRoundBracket(ExpressionBlock): + EXIT_CHAR: str + EXIT_TOKEN: Token + EXIT_BLOCK: Block + + @classmethod + def stateBeforeExpression(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken): + if token == "(": + parserState.NewToken = OpeningRoundBracketToken(fromExistingToken=token) + parserState.Counter += 1 + parserState.NextState = cls.stateExpression + return + else: + parserState.NewToken = cls.CHARACTER_TRANSLATION[token.Value](fromExistingToken=token) + parserState.NextState = cls.stateExpression + return + elif isinstance(token, WordToken): + try: + parserState.NewToken = cls.OPERATOR_TRANSLATIONS[token.Value](fromExistingToken=token) + except KeyError: + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateExpression + return + elif isinstance(token, LiteralToken): + parserState.NextState = cls.stateExpression + return + elif isinstance(token, LinebreakToken): + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken): + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException("Expected '(', unary operator, identifier, literal or whitespace.", token) + + @classmethod + def stateExpression(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, FusedCharacterToken): + try: + parserState.NewToken = cls.FUSED_CHARACTER_TRANSLATION[token.Value](fromExistingToken=token) + return + except KeyError: + if token == cls.EXIT_CHAR: + if parserState.Counter == 0: + parserState.NewToken = cls.EXIT_TOKEN(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + _ = cls.EXIT_BLOCK(parserState.NewBlock, parserState.NewToken, endToken=parserState.NewToken) + parserState.Pop(2) + return + else: + raise BlockParserException("Mismatch in opening and closing parenthesis. Counter={0}".format(parserState.Counter), token) + elif isinstance(token, CharacterToken): + if token == cls.EXIT_CHAR: + if parserState.Counter == 0: + parserState.NewToken = cls.EXIT_TOKEN(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + _ = cls.EXIT_BLOCK(parserState.NewBlock, parserState.NewToken, endToken=parserState.NewToken) + parserState.Pop(2) + return + else: + raise BlockParserException("Mismatch in opening and closing parenthesis. Counter={0}".format(parserState.Counter), token) + elif token == "(": + parserState.NewToken = OpeningRoundBracketToken(fromExistingToken=token) + parserState.Counter += 1 + return + elif token == ")": + if parserState.Counter == 0: + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + parserState.Pop(3, parserState.NewToken) + return + else: + parserState.NewToken = ClosingRoundBracketToken(fromExistingToken=token) + parserState.Counter -= 1 + return + else: + parserState.NewToken = cls.CHARACTER_TRANSLATION[token.Value](fromExistingToken=token) + return + elif isinstance(token, WordToken): + try: + parserState.NewToken = cls.OPERATOR_TRANSLATIONS[token.Value](fromExistingToken=token) + except KeyError: + parserState.NewToken = IdentifierToken(fromExistingToken=token) + return + elif isinstance(token, LiteralToken): + return + elif isinstance(token, SpaceToken): + parserState.NextState = cls.stateWhitespace1 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException("Expected ?????????????.", token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, FusedCharacterToken): + try: + parserState.NewToken = cls.FUSED_CHARACTER_TRANSLATION[token.Value](fromExistingToken=token) + parserState.NextState = cls.stateExpression + return + except KeyError: + if token == cls.EXIT_CHAR: + if parserState.Counter == 0: + parserState.NewToken = cls.EXIT_TOKEN(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + _ = cls.EXIT_BLOCK(parserState.NewBlock, parserState.NewToken, endToken=parserState.NewToken) + parserState.Pop(1) + return + else: + raise BlockParserException("Mismatch in opening and closing parenthesis. Counter={0}".format(parserState.Counter), token) + elif isinstance(token, CharacterToken): + if token == cls.EXIT_CHAR: + if parserState.Counter == 0: + parserState.NewToken = cls.EXIT_TOKEN(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + _ = cls.EXIT_BLOCK(parserState.NewBlock, parserState.NewToken, endToken=parserState.NewToken) + parserState.Pop(2) + return + else: + raise BlockParserException("Mismatch in opening and closing parenthesis. Counter={0}".format(parserState.Counter), token) + elif token == "(": + parserState.NewToken = OpeningRoundBracketToken(fromExistingToken=token) + parserState.Counter += 1 + parserState.NextState = cls.stateExpression + return + elif token == ")": + if parserState.Counter == 0: + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + + parserState.Pop(3, tokenMarker=parserState.NewToken) + return + else: + parserState.NewToken = ClosingRoundBracketToken(fromExistingToken=token) + parserState.Counter -= 1 + parserState.NextState = cls.stateExpression + return + else: + parserState.NewToken = cls.CHARACTER_TRANSLATION[token.Value](fromExistingToken=token) + parserState.NextState = cls.stateExpression + return + elif isinstance(token, WordToken): + try: + parserState.NewToken = cls.OPERATOR_TRANSLATIONS[token.Value](fromExistingToken=token) + except KeyError: + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateExpression + return + elif isinstance(token, LiteralToken): + parserState.NextState = cls.stateExpression + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + if not isinstance(parserState.LastBlock, LinebreakBlock): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = CommentBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected ????????????.", token)
+ + +
[docs]@export +class ExpressionBlockEndedByKeywordORClosingRoundBracket(ExpressionBlock): + EXIT_KEYWORD = None + EXIT_BLOCK = None + + @classmethod + def stateExpression(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, FusedCharacterToken): + parserState.NewToken = cls.FUSED_CHARACTER_TRANSLATION[token.Value](fromExistingToken=token) + return + elif isinstance(token, CharacterToken): + if token == "(": + parserState.NewToken = OpeningRoundBracketToken(fromExistingToken=token) + parserState.Counter += 1 + return + elif token == ")": + parserState.NewToken = ClosingRoundBracketToken(fromExistingToken=token) + parserState.Counter -= 1 + return + else: + parserState.NewToken = cls.CHARACTER_TRANSLATION[token.Value](fromExistingToken=token) + return + elif isinstance(token, WordToken): + if token <= cls.EXIT_KEYWORD.__KEYWORD__: + parserState.NewToken = cls.EXIT_KEYWORD(token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + _ = cls.EXIT_BLOCK(parserState.NewBlock, parserState.NewToken) + parserState.Pop() + return + else: + try: + parserState.NewToken = cls.OPERATOR_TRANSLATIONS[token.Value](fromExistingToken=token) + except KeyError: + parserState.NewToken = IdentifierToken(fromExistingToken=token) + return + elif isinstance(token, LiteralToken): + return + elif isinstance(token, SpaceToken): + parserState.NextState = cls.stateWhitespace1 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException("Expected '(' or whitespace after keyword GENERIC.", token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, FusedCharacterToken): + parserState.NewToken = cls.FUSED_CHARACTER_TRANSLATION[token.Value](fromExistingToken=token) + parserState.NextState = cls.stateExpression + return + elif isinstance(token, CharacterToken): + if token == "(": + parserState.NewToken = OpeningRoundBracketToken(fromExistingToken=token) + parserState.Counter += 1 + parserState.NextState = cls.stateExpression + return + elif token == ")": + parserState.NewToken = ClosingRoundBracketToken(fromExistingToken=token) + parserState.Counter -= 1 + parserState.NextState = cls.stateExpression + return + else: + parserState.NewToken = cls.CHARACTER_TRANSLATION[token.Value](fromExistingToken=token) + parserState.NextState = cls.stateExpression + return + elif isinstance(token, WordToken): + if token <= cls.EXIT_KEYWORD.__KEYWORD__: + parserState.NewToken = cls.EXIT_KEYWORD(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + _ = cls.EXIT_BLOCK(parserState.NewBlock, parserState.NewToken) + parserState.Pop() + return + else: + try: + parserState.NewToken = cls.OPERATOR_TRANSLATIONS[token.Value](fromExistingToken=token) + except KeyError: + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateExpression + return + elif isinstance(token, LiteralToken): + parserState.NextState = cls.stateExpression + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + if not isinstance(parserState.LastBlock, LinebreakBlock): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = CommentBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected ????????????.", token)
+ + +
[docs]@export +class ExpressionBlockEndedByToOrDownto(ExpressionBlock): + EXIT_BLOCK = None + + @classmethod + def stateExpression(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, FusedCharacterToken): + parserState.NewToken = cls.FUSED_CHARACTER_TRANSLATION[token.Value](fromExistingToken=token) + return + elif isinstance(token, CharacterToken): + if token == "(": + parserState.NewToken = OpeningRoundBracketToken(fromExistingToken=token) + parserState.Counter += 1 + return + elif token == ")": + parserState.NewToken = ClosingRoundBracketToken(fromExistingToken=token) + parserState.Counter -= 1 + return + else: + parserState.NewToken = cls.CHARACTER_TRANSLATION[token.Value](fromExistingToken=token) + return + elif isinstance(token, WordToken): + tokenValue = token.Value.lower() + if tokenValue == "to": + from pyVHDLParser.Blocks.ControlStructure.ForLoop import LoopIterationDirectionBlock + + parserState.NewToken = ToKeyword(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + _ = LoopIterationDirectionBlock(parserState.NewBlock, parserState.NewToken) + parserState.Pop(1, parserState.NewToken) + return + elif tokenValue == "downto": + from pyVHDLParser.Blocks.ControlStructure.ForLoop import LoopIterationDirectionBlock + + parserState.NewToken = DowntoKeyword(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + _ = LoopIterationDirectionBlock(parserState.NewBlock, parserState.NewToken) + parserState.Pop(1, parserState.NewToken) + return + else: + try: + parserState.NewToken = cls.OPERATOR_TRANSLATIONS[token.Value](fromExistingToken=token) + except KeyError: + parserState.NewToken = IdentifierToken(fromExistingToken=token) + return + elif isinstance(token, LiteralToken): + return + elif isinstance(token, SpaceToken): + parserState.NextState = cls.stateWhitespace1 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException("Expected '(' or whitespace after keyword GENERIC.", token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, FusedCharacterToken): + parserState.NewToken = cls.FUSED_CHARACTER_TRANSLATION[token.Value](fromExistingToken=token) + parserState.NextState = cls.stateExpression + return + elif isinstance(token, CharacterToken): + if token == "(": + parserState.NewToken = OpeningRoundBracketToken(fromExistingToken=token) + parserState.Counter += 1 + parserState.NextState = cls.stateExpression + return + elif token == ")": + parserState.NewToken = ClosingRoundBracketToken(fromExistingToken=token) + parserState.Counter -= 1 + parserState.NextState = cls.stateExpression + return + else: + parserState.NewToken = cls.CHARACTER_TRANSLATION[token.Value](fromExistingToken=token) + parserState.NextState = cls.stateExpression + return + elif isinstance(token, WordToken): + tokenValue = token.Value.lower() + if tokenValue == "to": + from pyVHDLParser.Blocks.ControlStructure.ForLoop import LoopIterationDirectionBlock + + parserState.NewToken = ToKeyword(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + _ = LoopIterationDirectionBlock(parserState.NewBlock, parserState.NewToken) + parserState.Pop() + return + elif tokenValue == "downto": + from pyVHDLParser.Blocks.ControlStructure.ForLoop import LoopIterationDirectionBlock + + parserState.NewToken = DowntoKeyword(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + _ = LoopIterationDirectionBlock(parserState.NewBlock, parserState.NewToken) + parserState.Pop() + return + else: + try: + parserState.NewToken = cls.OPERATOR_TRANSLATIONS[token.Value](fromExistingToken=token) + except KeyError: + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateExpression + return + elif isinstance(token, LiteralToken): + parserState.NextState = cls.stateExpression + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + if not isinstance(parserState.LastBlock, LinebreakBlock): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = CommentBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected ????????????.", token)
+ + +
[docs]@export +class ExpressionBlockEndedByKeywordOrToOrDownto(ExpressionBlock): + EXIT_KEYWORD = None + EXIT_BLOCK = None + + @classmethod + def stateExpression(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, FusedCharacterToken): + parserState.NewToken = cls.FUSED_CHARACTER_TRANSLATION[token.Value](fromExistingToken=token) + return + elif isinstance(token, CharacterToken): + if token == "(": + parserState.NewToken = OpeningRoundBracketToken(fromExistingToken=token) + parserState.Counter += 1 + return + elif token == ")": + parserState.NewToken = ClosingRoundBracketToken(fromExistingToken=token) + parserState.Counter -= 1 + return + else: + parserState.NewToken = cls.CHARACTER_TRANSLATION[token.Value](fromExistingToken=token) + return + elif isinstance(token, WordToken): + tokenValue = token.Value.lower() + if tokenValue == cls.EXIT_KEYWORD.__KEYWORD__: + parserState.NewToken = LoopKeyword(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + _ = cls.EXIT_BLOCK(parserState.NewBlock, parserState.NewToken) + parserState.Pop(2, parserState.NewToken) + return + elif tokenValue == "to": + from pyVHDLParser.Blocks.ControlStructure.ForLoop import LoopIterationDirectionBlock + + parserState.NewToken = ToKeyword(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + _ = LoopIterationDirectionBlock(parserState.NewBlock, parserState.NewToken) + parserState.Pop(1, parserState.NewToken) + return + elif tokenValue == "downto": + from pyVHDLParser.Blocks.ControlStructure.ForLoop import LoopIterationDirectionBlock + + parserState.NewToken = DowntoKeyword(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + _ = LoopIterationDirectionBlock(parserState.NewBlock, parserState.NewToken) + parserState.Pop(1, parserState.NewToken) + return + else: + try: + parserState.NewToken = cls.OPERATOR_TRANSLATIONS[token.Value](fromExistingToken=token) + except KeyError: + parserState.NewToken = IdentifierToken(fromExistingToken=token) + return + elif isinstance(token, LiteralToken): + return + elif isinstance(token, SpaceToken): + parserState.NextState = cls.stateWhitespace1 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException("Expected '(' or whitespace after keyword GENERIC.", token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, FusedCharacterToken): + parserState.NewToken = cls.FUSED_CHARACTER_TRANSLATION[token.Value](fromExistingToken=token) + parserState.NextState = cls.stateExpression + return + elif isinstance(token, CharacterToken): + if token == "(": + parserState.NewToken = OpeningRoundBracketToken(fromExistingToken=token) + parserState.Counter += 1 + parserState.NextState = cls.stateExpression + return + elif token == ")": + parserState.NewToken = ClosingRoundBracketToken(fromExistingToken=token) + parserState.Counter -= 1 + parserState.NextState = cls.stateExpression + return + else: + parserState.NewToken = cls.CHARACTER_TRANSLATION[token.Value](fromExistingToken=token) + parserState.NextState = cls.stateExpression + return + elif isinstance(token, WordToken): + tokenValue = token.Value.lower() + if tokenValue == cls.EXIT_KEYWORD.__KEYWORD__: + parserState.NewToken = LoopKeyword(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + _ = cls.EXIT_BLOCK(parserState.NewBlock, parserState.NewToken) + parserState.Pop(1, parserState.NewToken) + return + elif tokenValue == "to": + from pyVHDLParser.Blocks.ControlStructure.ForLoop import LoopIterationDirectionBlock + + parserState.NewToken = ToKeyword(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + _ = LoopIterationDirectionBlock(parserState.NewBlock, parserState.NewToken) + parserState.Pop() + return + elif tokenValue == "downto": + from pyVHDLParser.Blocks.ControlStructure.ForLoop import LoopIterationDirectionBlock + + parserState.NewToken = DowntoKeyword(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + _ = LoopIterationDirectionBlock(parserState.NewBlock, parserState.NewToken) + parserState.Pop() + return + else: + try: + parserState.NewToken = cls.OPERATOR_TRANSLATIONS[token.Value](fromExistingToken=token) + except KeyError: + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateExpression + return + elif isinstance(token, LiteralToken): + parserState.NextState = cls.stateExpression + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + if not isinstance(parserState.LastBlock, LinebreakBlock): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = CommentBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected ????????????.", token)
+ + +
[docs]@export +class ExpressionBlockEndedBySemicolon(ExpressionBlock): + END_BLOCK = None + + @classmethod + def stateExpression(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, FusedCharacterToken): + parserState.NewToken = cls.FUSED_CHARACTER_TRANSLATION[token.Value](fromExistingToken=token) + return + elif isinstance(token, CharacterToken): + if token == ";": + if parserState.Counter == 0: + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + _ = cls.END_BLOCK(parserState.NewBlock, parserState.NewToken, endToken=parserState.NewToken) + parserState.Pop(2) + return + else: + raise BlockParserException("Mismatch in opening and closing parenthesis. Counter={0}".format(parserState.Counter), token) + elif token == "(": + parserState.NewToken = OpeningRoundBracketToken(fromExistingToken=token) + parserState.Counter += 1 + return + elif token == ")": + if parserState.Counter == -1: + raise BlockParserException("Mismatch in opening and closing parenthesis. Counter={0}".format(parserState.Counter), token) + else: + parserState.NewToken = ClosingRoundBracketToken(fromExistingToken=token) + parserState.Counter -= 1 + return + else: + parserState.NewToken = cls.CHARACTER_TRANSLATION[token.Value](fromExistingToken=token) + return + elif isinstance(token, WordToken): + try: + parserState.NewToken = cls.OPERATOR_TRANSLATIONS[token.Value](fromExistingToken=token) + except KeyError: + parserState.NewToken = IdentifierToken(fromExistingToken=token) + return + elif isinstance(token, LiteralToken): + return + elif isinstance(token, SpaceToken): + parserState.NextState = cls.stateWhitespace1 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException("Expected operator, '(', ')', ';' or whitespace.", token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, FusedCharacterToken): + parserState.NewToken = cls.FUSED_CHARACTER_TRANSLATION[token.Value](fromExistingToken=token) + parserState.NextState = cls.stateExpression + return + elif isinstance(token, CharacterToken): + if token == ";": + if parserState.Counter == 0: + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + _ = cls.END_BLOCK(parserState.NewBlock, parserState.NewToken, endToken=parserState.NewToken) + parserState.Pop(2) + return + else: + raise BlockParserException("Mismatch in opening and closing parenthesis. Counter={0}".format(parserState.Counter), token) + elif token == "(": + parserState.NewToken = OpeningRoundBracketToken(fromExistingToken=token) + parserState.Counter += 1 + parserState.NextState = cls.stateExpression + return + elif token == ")": + if parserState.Counter == -1: + raise BlockParserException("Mismatch in opening and closing parenthesis. Counter={0}".format(parserState.Counter), token) + else: + parserState.NewToken = ClosingRoundBracketToken(fromExistingToken=token) + parserState.Counter -= 1 + parserState.NextState = cls.stateExpression + return + else: + parserState.NewToken = cls.CHARACTER_TRANSLATION[token.Value](fromExistingToken=token) + parserState.NextState = cls.stateExpression + return + elif isinstance(token, WordToken): + try: + parserState.NewToken = cls.OPERATOR_TRANSLATIONS[token.Value](fromExistingToken=token) + except KeyError: + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateExpression + return + elif isinstance(token, LiteralToken): + parserState.NextState = cls.stateExpression + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + if not isinstance(parserState.LastBlock, LinebreakBlock): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = CommentBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected identifier, literal, operator, '(', ')' or ';'.", token)
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/Generate.html b/_modules/pyVHDLParser/Blocks/Generate.html new file mode 100644 index 000000000..d4afec641 --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/Generate.html @@ -0,0 +1,179 @@ + + + + + + pyVHDLParser.Blocks.Generate — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.Generate

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators         import export
+
+from pyVHDLParser.Token.Keywords  import GenerateKeyword
+from pyVHDLParser.Blocks.Generic  import EndBlock
+
+
+
[docs]@export +class EndGenerateBlock(EndBlock): + KEYWORD = GenerateKeyword + KEYWORD_IS_OPTIONAL = True + EXPECTED_NAME = KEYWORD.__KEYWORD__
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/Generate/CaseGenerate.html b/_modules/pyVHDLParser/Blocks/Generate/CaseGenerate.html new file mode 100644 index 000000000..016d8bb18 --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/Generate/CaseGenerate.html @@ -0,0 +1,385 @@ + + + + + + pyVHDLParser.Blocks.Generate.CaseGenerate — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.Generate.CaseGenerate

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators             import export
+
+from pyVHDLParser.Token.Keywords      import BoundaryToken, IdentifierToken, BeginKeyword
+from pyVHDLParser.Token.Keywords      import IsKeyword, EndKeyword, GenericKeyword, PortKeyword
+from pyVHDLParser.Token               import CharacterToken, SpaceToken, WordToken, LinebreakToken, IndentationToken
+from pyVHDLParser.Blocks              import Block, BlockParserException, TokenToBlockParser
+from pyVHDLParser.Blocks.Common       import LinebreakBlock, IndentationBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Comment      import SingleLineCommentBlock, MultiLineCommentBlock
+from pyVHDLParser.Blocks.Generate     import EndGenerateBlock as EndGenerateBlockBase
+from pyVHDLParser.Blocks.List         import GenericList, PortList
+
+
+
[docs]@export +class CaseBlock(Block): + @classmethod + def stateGenerateKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected whitespace after keyword GENERATE." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewBlock = CaseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.NewToken = LinebreakToken(fromExistingToken=token) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = CaseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = CaseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected generate name (identifier)." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + if not isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewBlock = CaseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = CaseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = CaseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateGenerateName + return + elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateGenerateName(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected whitespace after keyword GENERATE." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewBlock = CaseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.NewToken = LinebreakToken(fromExistingToken=token) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = CaseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = CaseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NextState = cls.stateWhitespace2 + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateWhitespace2(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected keyword IS after generate name." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + if not isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewBlock = CaseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = CaseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = CaseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, WordToken) and (token <= "is"): + parserState.NewToken = IsKeyword(fromExistingToken=token) + parserState.NewBlock = CaseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.NextState = cls.stateDeclarativeRegion + return + elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateDeclarativeRegion(cls, parserState: TokenToBlockParser): + errorMessage = "Expected one of these keywords: generic, port, begin, end." + token = parserState.Token + if isinstance(parserState.Token, CharacterToken): + if token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = parserState.NewToken + return + elif token == "-": + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NewToken = IndentationToken(fromExistingToken=token) + parserState.NewBlock = IndentationBlock(parserState.LastBlock, parserState.NewToken) + return + elif isinstance(token, WordToken): + keyword = token.Value.lower() + if keyword == "generic": + newToken = GenericKeyword(fromExistingToken=token) + parserState.PushState = GenericList.OpenBlock.stateGenericKeyword + elif keyword == "port": + newToken = PortKeyword(fromExistingToken=token) + parserState.PushState = PortList.OpenBlock.statePortKeyword + elif keyword == "end": + newToken = EndKeyword(fromExistingToken=token) + parserState.NextState = EndGenerateBlock.stateEndKeyword + elif keyword == "begin": + parserState.NewToken = BeginKeyword(fromExistingToken=token) + parserState.NewBlock = BeginBlock(parserState.LastBlock, parserState.NewToken) + parserState.NextState = BeginBlock.stateBeginKeyword + return + else: + raise BlockParserException(errorMessage, token) + + parserState.NewToken = newToken + parserState.TokenMarker = newToken + return + + raise BlockParserException(errorMessage, token)
+ + +
[docs]@export +class BeginBlock(Block): + pass
+ + +
[docs]@export +class EndGenerateBlock(EndGenerateBlockBase): + pass
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/Generate/ForGenerate.html b/_modules/pyVHDLParser/Blocks/Generate/ForGenerate.html new file mode 100644 index 000000000..db9de2821 --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/Generate/ForGenerate.html @@ -0,0 +1,428 @@ + + + + + + pyVHDLParser.Blocks.Generate.ForGenerate — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.Generate.ForGenerate

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators                   import export
+
+from pyVHDLParser.Token                     import CharacterToken, SpaceToken, WordToken, LinebreakToken, IndentationToken
+from pyVHDLParser.Token.Keywords            import BoundaryToken, IdentifierToken, BeginKeyword, ProcessKeyword, AssertKeyword
+from pyVHDLParser.Token.Keywords            import IsKeyword, EndKeyword, GenericKeyword, PortKeyword
+from pyVHDLParser.Blocks                    import Block, BlockParserException, TokenToBlockParser
+from pyVHDLParser.Blocks.Common             import LinebreakBlock, IndentationBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Comment            import SingleLineCommentBlock, MultiLineCommentBlock
+from pyVHDLParser.Blocks.Generate           import EndGenerateBlock as EndGenerateBlockBase
+from pyVHDLParser.Blocks.List               import GenericList, PortList
+from pyVHDLParser.Blocks.Reporting.Assert   import AssertBlock
+from pyVHDLParser.Blocks.Sequential         import Process
+
+
+
[docs]@export +class RangeBlock(Block): + @classmethod + def stateGenerateKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected whitespace after keyword GENERATE." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewBlock = RangeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.NewToken = LinebreakToken(fromExistingToken=token) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = RangeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = RangeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected generate name (identifier)." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + if not isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewBlock = RangeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = RangeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = RangeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateGenerateName + return + elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateGenerateName(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected whitespace after keyword GENERATE." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewBlock = RangeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.NewToken = LinebreakToken(fromExistingToken=token) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = RangeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = RangeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NextState = cls.stateWhitespace2 + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateWhitespace2(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected keyword IS after generate name." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + if not isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewBlock = RangeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = RangeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = RangeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, WordToken) and (token <= "is"): + parserState.NewToken = IsKeyword(fromExistingToken=token) + parserState.NewBlock = RangeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.NextState = cls.stateDeclarativeRegion + return + elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateDeclarativeRegion(cls, parserState: TokenToBlockParser): + errorMessage = "Expected one of these keywords: generic, port, begin, end." + token = parserState.Token + if isinstance(parserState.Token, CharacterToken): + if token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = parserState.NewToken + return + elif token == "-": + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NewToken = IndentationToken(fromExistingToken=token) + parserState.NewBlock = IndentationBlock(parserState.LastBlock, parserState.NewToken) + return + elif isinstance(token, WordToken): + keyword = token.Value.lower() + if keyword == "generic": + newToken = GenericKeyword(fromExistingToken=token) + parserState.PushState = GenericList.OpenBlock.stateGenericKeyword + elif keyword == "port": + newToken = PortKeyword(fromExistingToken=token) + parserState.PushState = PortList.OpenBlock.statePortKeyword + elif keyword == "end": + newToken = EndKeyword(fromExistingToken=token) + parserState.NextState = EndGenerateBlock.stateEndKeyword + elif keyword == "begin": + parserState.NewToken = BeginKeyword(fromExistingToken=token) + parserState.NewBlock = BeginBlock(parserState.LastBlock, parserState.NewToken) + parserState.NextState = BeginBlock.stateBeginKeyword + return + else: + raise BlockParserException(errorMessage, token) + + parserState.NewToken = newToken + parserState.TokenMarker = newToken + return + + raise BlockParserException(errorMessage, token)
+ + +
[docs]@export +class BeginBlock(Block): + @classmethod + def stateBeginKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected label or one of these keywords: assert, process." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = parserState.NewToken + return + elif token == "-": + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + return + # parserState.NewToken = IndentationToken(fromExistingToken=token) + # parserState.NewBlock = IndentationBlock(parserState.LastBlock, parserState.NewToken) + # return + elif isinstance(token, WordToken): + keyword = token.Value.lower() + if keyword == "process": + newToken = ProcessKeyword(fromExistingToken=token) + parserState.PushState = Process.OpenBlock.stateProcessKeyword + elif keyword == "assert": + newToken = AssertKeyword(fromExistingToken=token) + parserState.PushState = AssertBlock.stateAssertKeyword + elif keyword == "end": + newToken = EndKeyword(fromExistingToken=token) + parserState.NextState = EndGenerateBlock.stateEndKeyword + else: + raise BlockParserException(errorMessage, token) + + parserState.NewToken = newToken + parserState.TokenMarker = newToken + return + + raise BlockParserException(errorMessage, token)
+ + +
[docs]@export +class EndGenerateBlock(EndGenerateBlockBase): + pass
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/Generate/IfGenerate.html b/_modules/pyVHDLParser/Blocks/Generate/IfGenerate.html new file mode 100644 index 000000000..daea65867 --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/Generate/IfGenerate.html @@ -0,0 +1,913 @@ + + + + + + pyVHDLParser.Blocks.Generate.IfGenerate — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.Generate.IfGenerate

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators                   import export
+
+from pyVHDLParser.Token                     import CharacterToken, SpaceToken, WordToken, LinebreakToken, IndentationToken
+from pyVHDLParser.Token.Keywords            import BoundaryToken, IdentifierToken
+from pyVHDLParser.Token.Keywords            import BeginKeyword, ProcessKeyword, AssertKeyword
+from pyVHDLParser.Token.Keywords            import IsKeyword, EndKeyword, GenericKeyword, PortKeyword
+from pyVHDLParser.Blocks                    import Block, BlockParserException, TokenToBlockParser
+from pyVHDLParser.Blocks.Common             import LinebreakBlock, IndentationBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Comment            import SingleLineCommentBlock, MultiLineCommentBlock
+from pyVHDLParser.Blocks.Generate           import EndGenerateBlock as EndGenerateBlockBase
+from pyVHDLParser.Blocks.List               import GenericList, PortList
+from pyVHDLParser.Blocks.Reporting.Assert   import AssertBlock
+from pyVHDLParser.Blocks.Sequential         import Process
+
+
+
[docs]@export +class IfConditionBlock(Block): + @classmethod + def stateGenerateKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected whitespace after keyword GENERATE." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewBlock = IfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.NewToken = LinebreakToken(fromExistingToken=token) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = IfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = IfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected generate name (identifier)." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + if not isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewBlock = IfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = IfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = IfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateGenerateName + return + elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateGenerateName(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected whitespace after keyword GENERATE." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewBlock = IfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.NewToken = LinebreakToken(fromExistingToken=token) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = IfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = IfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NextState = cls.stateWhitespace2 + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateWhitespace2(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected keyword IS after generate name." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + if not isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewBlock = IfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = IfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = IfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, WordToken) and (token <= "is"): + parserState.NewToken = IsKeyword(fromExistingToken=token) + parserState.NewBlock = IfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.NextState = cls.stateDeclarativeRegion + return + elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateDeclarativeRegion(cls, parserState: TokenToBlockParser): + errorMessage = "Expected one of these keywords: generic, port, begin, end." + token = parserState.Token + if isinstance(parserState.Token, CharacterToken): + if token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = parserState.NewToken + return + elif token == "-": + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NewToken = IndentationToken(fromExistingToken=token) + parserState.NewBlock = IndentationBlock(parserState.LastBlock, parserState.NewToken) + return + elif isinstance(token, WordToken): + keyword = token.Value.lower() + if keyword == "generic": + newToken = GenericKeyword(fromExistingToken=token) + parserState.PushState = GenericList.OpenBlock.stateGenericKeyword + elif keyword == "port": + newToken = PortKeyword(fromExistingToken=token) + parserState.PushState = PortList.OpenBlock.statePortKeyword + elif keyword == "end": + newToken = EndKeyword(fromExistingToken=token) + parserState.NextState = EndGenerateBlock.stateEndKeyword + elif keyword == "begin": + parserState.NewToken = BeginKeyword(fromExistingToken=token) + parserState.NewBlock = BeginBlock(parserState.LastBlock, parserState.NewToken) + parserState.NextState = BeginBlock.stateBeginKeyword + return + else: + raise BlockParserException(errorMessage, token) + + parserState.NewToken = newToken + parserState.TokenMarker = newToken + return + + raise BlockParserException(errorMessage, token)
+ + +
[docs]@export +class BeginBlock(Block): + @classmethod + def stateBeginKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected label or one of these keywords: assert, process." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = parserState.NewToken + return + elif token == "-": + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + return + # parserState.NewToken = IndentationToken(fromExistingToken=token) + # parserState.NewBlock = IndentationBlock(parserState.LastBlock, parserState.NewToken) + # return + elif isinstance(token, WordToken): + keyword = token.Value.lower() + if keyword == "process": + newToken = ProcessKeyword(fromExistingToken=token) + parserState.PushState = Process.OpenBlock.stateProcessKeyword + elif keyword == "assert": + newToken = AssertKeyword(fromExistingToken=token) + parserState.PushState = AssertBlock.stateAssertKeyword + elif keyword == "end": + newToken = EndKeyword(fromExistingToken=token) + parserState.NextState = EndGenerateBlock.stateEndKeyword + else: + raise BlockParserException(errorMessage, token) + + parserState.NewToken = newToken + parserState.TokenMarker = newToken + return + + raise BlockParserException(errorMessage, token)
+ + +
[docs]@export +class ElsIfConditionBlock(Block): + @classmethod + def stateGenerateKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected whitespace after keyword GENERATE." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewBlock = ElsIfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.NewToken = LinebreakToken(fromExistingToken=token) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = ElsIfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = ElsIfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected generate name (identifier)." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + if not isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewBlock = ElsIfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = ElsIfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = ElsIfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateGenerateName + return + elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateGenerateName(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected whitespace after keyword GENERATE." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewBlock = ElsIfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.NewToken = LinebreakToken(fromExistingToken=token) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = ElsIfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = ElsIfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NextState = cls.stateWhitespace2 + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateWhitespace2(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected keyword IS after generate name." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + if not isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewBlock = ElsIfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = ElsIfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = ElsIfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, WordToken) and (token <= "is"): + parserState.NewToken = IsKeyword(fromExistingToken=token) + parserState.NewBlock = ElsIfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.NextState = cls.stateDeclarativeRegion + return + elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateDeclarativeRegion(cls, parserState: TokenToBlockParser): + errorMessage = "Expected one of these keywords: generic, port, begin, end." + token = parserState.Token + if isinstance(parserState.Token, CharacterToken): + if token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = parserState.NewToken + return + elif token == "-": + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NewToken = IndentationToken(fromExistingToken=token) + parserState.NewBlock = IndentationBlock(parserState.LastBlock, parserState.NewToken) + return + elif isinstance(token, WordToken): + keyword = token.Value.lower() + if keyword == "generic": + newToken = GenericKeyword(fromExistingToken=token) + parserState.PushState = GenericList.OpenBlock.stateGenericKeyword + elif keyword == "port": + newToken = PortKeyword(fromExistingToken=token) + parserState.PushState = PortList.OpenBlock.statePortKeyword + elif keyword == "end": + newToken = EndKeyword(fromExistingToken=token) + parserState.NextState = EndGenerateBlock.stateEndKeyword + elif keyword == "begin": + parserState.NewToken = BeginKeyword(fromExistingToken=token) + parserState.NewBlock = ElsIfBeginBlock(parserState.LastBlock, parserState.NewToken) + parserState.NextState = ElsIfBeginBlock.stateBeginKeyword + return + else: + raise BlockParserException(errorMessage, token) + + parserState.NewToken = newToken + parserState.TokenMarker = newToken + return + + raise BlockParserException(errorMessage, token)
+ + +
[docs]@export +class ElsIfBeginBlock(Block): + @classmethod + def stateBeginKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected label or one of these keywords: assert, process." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = parserState.NewToken + return + elif token == "-": + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + return + # parserState.NewToken = IndentationToken(fromExistingToken=token) + # parserState.NewBlock = IndentationBlock(parserState.LastBlock, parserState.NewToken) + # return + elif isinstance(token, WordToken): + keyword = token.Value.lower() + if keyword == "process": + newToken = ProcessKeyword(fromExistingToken=token) + parserState.PushState = Process.OpenBlock.stateProcessKeyword + elif keyword == "assert": + newToken = AssertKeyword(fromExistingToken=token) + parserState.PushState = AssertBlock.stateAssertKeyword + elif keyword == "end": + newToken = EndKeyword(fromExistingToken=token) + parserState.NextState = EndGenerateBlock.stateEndKeyword + else: + raise BlockParserException(errorMessage, token) + + parserState.NewToken = newToken + parserState.TokenMarker = newToken + return + + raise BlockParserException(errorMessage, token)
+ + +
[docs]@export +class ElseGenerateBlock(Block): + @classmethod + def stateGenerateKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected whitespace after keyword GENERATE." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewBlock = ElseGenerateBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.NewToken = LinebreakToken(fromExistingToken=token) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = ElseGenerateBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = ElseGenerateBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected generate name (identifier)." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + if not isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewBlock = ElseGenerateBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = ElseGenerateBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = ElseGenerateBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateGenerateName + return + elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateGenerateName(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected whitespace after keyword GENERATE." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewBlock = ElseGenerateBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.NewToken = LinebreakToken(fromExistingToken=token) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = ElseGenerateBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = ElseGenerateBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NextState = cls.stateWhitespace2 + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateWhitespace2(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected keyword IS after generate name." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + if not isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewBlock = ElseGenerateBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = ElseGenerateBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = ElseGenerateBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, WordToken) and (token <= "is"): + parserState.NewToken = IsKeyword(fromExistingToken=token) + parserState.NewBlock = ElseGenerateBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.NextState = cls.stateDeclarativeRegion + return + elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateDeclarativeRegion(cls, parserState: TokenToBlockParser): + errorMessage = "Expected one of these keywords: generic, port, begin, end." + token = parserState.Token + if isinstance(parserState.Token, CharacterToken): + if token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = parserState.NewToken + return + elif token == "-": + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NewToken = IndentationToken(fromExistingToken=token) + parserState.NewBlock = IndentationBlock(parserState.LastBlock, parserState.NewToken) + return + elif isinstance(token, WordToken): + keyword = token.Value.lower() + if keyword == "generic": + newToken = GenericKeyword(fromExistingToken=token) + parserState.PushState = GenericList.OpenBlock.stateGenericKeyword + elif keyword == "port": + newToken = PortKeyword(fromExistingToken=token) + parserState.PushState = PortList.OpenBlock.statePortKeyword + elif keyword == "end": + newToken = EndKeyword(fromExistingToken=token) + parserState.NextState = EndGenerateBlock.stateEndKeyword + elif keyword == "begin": + parserState.NewToken = BeginKeyword(fromExistingToken=token) + parserState.NewBlock = ElseGenerateBeginBlock(parserState.LastBlock, parserState.NewToken) + parserState.NextState = ElseGenerateBeginBlock.stateBeginKeyword + return + else: + raise BlockParserException(errorMessage, token) + + parserState.NewToken = newToken + parserState.TokenMarker = newToken + return + + raise BlockParserException(errorMessage, token)
+ + +
[docs]@export +class ElseGenerateBeginBlock(Block): + @classmethod + def stateBeginKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected label or one of these keywords: assert, process." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = parserState.NewToken + return + elif token == "-": + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + return + # parserState.NewToken = IndentationToken(fromExistingToken=token) + # parserState.NewBlock = IndentationBlock(parserState.LastBlock, parserState.NewToken) + # return + elif isinstance(token, WordToken): + keyword = token.Value.lower() + if keyword == "process": + newToken = ProcessKeyword(fromExistingToken=token) + parserState.PushState = Process.OpenBlock.stateProcessKeyword + elif keyword == "assert": + newToken = AssertKeyword(fromExistingToken=token) + parserState.PushState = AssertBlock.stateAssertKeyword + elif keyword == "end": + newToken = EndKeyword(fromExistingToken=token) + parserState.NextState = EndGenerateBlock.stateEndKeyword + else: + raise BlockParserException(errorMessage, token) + + parserState.NewToken = newToken + parserState.TokenMarker = newToken + return + + raise BlockParserException(errorMessage, token)
+ + +
[docs]@export +class EndGenerateBlock(EndGenerateBlockBase): + pass
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/Generic.html b/_modules/pyVHDLParser/Blocks/Generic.html new file mode 100644 index 000000000..b11bdbc63 --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/Generic.html @@ -0,0 +1,417 @@ + + + + + + pyVHDLParser.Blocks.Generic — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.Generic

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from typing import Any
+
+from pyTooling.Decorators                 import export
+
+from pyVHDLParser.Token                   import LinebreakToken, WordToken, SpaceToken, CommentToken, IndentationToken
+from pyVHDLParser.Token.Keywords          import AssertKeyword, EndKeyword, ProcessKeyword, ReportKeyword, IfKeyword, ForKeyword, ReturnKeyword, NextKeyword, NullKeyword
+from pyVHDLParser.Token.Keywords          import ExitKeyword, UseKeyword, SignalKeyword, ConstantKeyword, SharedKeyword, FunctionKeyword, ProcedureKeyword
+from pyVHDLParser.Token.Keywords          import ImpureKeyword, PureKeyword, VariableKeyword, BeginKeyword, CaseKeyword
+from pyVHDLParser.Blocks                  import BlockParserException, CommentBlock, TokenToBlockParser, MetaBlock
+from pyVHDLParser.Blocks.Common           import LinebreakBlock, WhitespaceBlock, IndentationBlock
+from pyVHDLParser.Blocks.Object.Variable  import VariableDeclarationBlock
+from pyVHDLParser.Blocks.Generic1         import EndBlock, BeginBlock
+
+
+
[docs]@export +class DeclarativeRegion(metaclass=MetaBlock): + """Base-class for all declarative region blocks.""" + + BEGIN_BLOCK: BeginBlock + END_BLOCK: EndBlock + + KEYWORDS: Any # TODO: what type? + + @classmethod + def __cls_init__(cls): + from pyVHDLParser.Blocks.Reference import Use + from pyVHDLParser.Blocks.Object.Constant import ConstantDeclarationBlock + from pyVHDLParser.Blocks.Sequential import Procedure, Function + + cls.KEYWORDS = { + # Keyword Transition + UseKeyword: Use.StartBlock.stateUseKeyword, + ConstantKeyword: ConstantDeclarationBlock.stateConstantKeyword, + FunctionKeyword: Function.NameBlock.stateFunctionKeyword, + ProcedureKeyword: Procedure.NameBlock.stateProcedureKeyword, + ImpureKeyword: Function.NameBlock.stateImpureKeyword, + PureKeyword: Function.NameBlock.statePureKeyword, + # AliasKeyword: Alias.NameBlock.stateAliasKeyword + } + + + @classmethod + def stateDeclarativeRegion(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, SpaceToken): + blockType = IndentationBlock if isinstance(token, IndentationToken) else WhitespaceBlock + parserState.NewBlock = blockType(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, LinebreakToken): + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = CommentBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, WordToken): + tokenValue = token.Value.lower() + + for keyword in cls.KEYWORDS: + if tokenValue == keyword.__KEYWORD__: + newToken = keyword(fromExistingToken=token) + parserState.PushState = cls.KEYWORDS[keyword] + parserState.NewToken = newToken + parserState.TokenMarker = newToken + return + + if tokenValue == "begin": + parserState.NewToken = BeginKeyword(fromExistingToken=token) + parserState.NewBlock = cls.BEGIN_BLOCK(parserState.LastBlock, parserState.NewToken) + parserState.NextState = cls.BEGIN_BLOCK.stateStatementRegion + return + elif tokenValue == "end": + parserState.NewToken = EndKeyword(fromExistingToken=token) + parserState.NextState = cls.END_BLOCK.stateEndKeyword + return + + raise BlockParserException( + "Expected one of these keywords: BEGIN, END, {keywords}. Found: '{tokenValue}'.".format( + keywords=", ".join( + [kw.__KEYWORD__.upper() for kw in cls.KEYWORDS] + ), + tokenValue=token.Value + ), token)
+ + +
[docs]@export +class ConcurrentDeclarativeRegion(DeclarativeRegion): + """Base-class for all concurrent declarative region blocks.""" + + @classmethod + def __cls_init__(cls): + super().__cls_init__() + + from pyVHDLParser.Blocks.Object.Signal import SignalDeclarationBlock + from pyVHDLParser.Blocks.Object.SharedVariable import SharedVariableDeclarationBlock + + cls.KEYWORDS.update({ + # Keyword Transition + SignalKeyword: SignalDeclarationBlock.stateSignalKeyword, + SharedKeyword: SharedVariableDeclarationBlock.stateSharedKeyword + })
+ + +
[docs]@export +class SequentialDeclarativeRegion(DeclarativeRegion): + """Base-class for all sequential declarative region blocks.""" + + @classmethod + def __cls_init__(cls): + super().__cls_init__() + + # TODO: use key assignment: a[b] = c + cls.KEYWORDS.update({ + # Keyword Transition + VariableKeyword: VariableDeclarationBlock.stateVariableKeyword + })
+ + +
[docs]@export +class ConcurrentBeginBlock(BeginBlock): + @classmethod + def __cls_init__(cls): + from pyVHDLParser.Blocks.Sequential import Process + from pyVHDLParser.Blocks.Reporting.Assert import AssertBlock + + cls.KEYWORDS = { + # Keyword Transition + AssertKeyword: AssertBlock.stateAssertKeyword, + ProcessKeyword: Process.OpenBlock.stateProcessKeyword, + } + + @classmethod + def stateStatementRegion(cls, parserState: TokenToBlockParser): + parserState.NextState = cls.stateConcurrentRegion + parserState.NextState(parserState) + + @classmethod + def stateConcurrentRegion(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, SpaceToken): + blockType = IndentationBlock if isinstance(token, IndentationToken) else WhitespaceBlock + parserState.NewBlock = blockType(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = block(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, WordToken): + tokenValue = token.Value.lower() + + for keyword in cls.KEYWORDS: + if tokenValue == keyword.__KEYWORD__: + newToken = keyword(fromExistingToken=token) + parserState.PushState = cls.KEYWORDS[keyword] + parserState.NewToken = newToken + parserState.TokenMarker = newToken + return + + if tokenValue == "end": + parserState.NewToken = EndKeyword(fromExistingToken=token) + parserState.NextState = cls.END_BLOCK.stateEndKeyword + return + + raise BlockParserException( + "Expected one of these keywords: END, {keywords}. Found: '{tokenValue}'.".format( + keywords=", ".join( + [kw.__KEYWORD__.upper() for kw in cls.KEYWORDS] + ), + tokenValue=token.Value + ), token)
+ + +
[docs]@export +class SequentialBeginBlock(BeginBlock): + @classmethod + def __cls_init__(cls): + from pyVHDLParser.Blocks.ControlStructure.If import IfConditionBlock + from pyVHDLParser.Blocks.ControlStructure.Case import CaseBlock + from pyVHDLParser.Blocks.ControlStructure.Exit import ExitBlock + from pyVHDLParser.Blocks.ControlStructure.Next import NextBlock + from pyVHDLParser.Blocks.ControlStructure.Return import ReturnBlock + from pyVHDLParser.Blocks.ControlStructure.ForLoop import IteratorBlock + # from pyVHDLParser.Blocks.ControlStructure.WhileLoop import ConditionBlock + from pyVHDLParser.Blocks.Reporting.Report import ReportBlock + from pyVHDLParser.Blocks.ControlStructure.Null import NullBlock + + cls.KEYWORDS = { + # Keyword Transition + IfKeyword: IfConditionBlock.stateIfKeyword, + CaseKeyword: CaseBlock.stateCaseKeyword, + ForKeyword: IteratorBlock.stateForKeyword, + # WhileKeyword: ConditionBlock.stateWhileKeyword, + ReturnKeyword: ReturnBlock.stateReturnKeyword, + NextKeyword: NextBlock.stateNextKeyword, + ExitKeyword: ExitBlock.stateExitKeyword, + ReportKeyword: ReportBlock.stateReportKeyword, + NullKeyword: NullBlock.stateNullKeyword + } + + @classmethod + def stateStatementRegion(cls, parserState: TokenToBlockParser): + cls.stateAnyRegion(parserState) + + @classmethod + def stateSequentialRegion(cls, parserState: TokenToBlockParser): + cls.stateAnyRegion(parserState) + + @classmethod + def stateAnyRegion(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, SpaceToken): + blockType = IndentationBlock if isinstance(token, IndentationToken) else WhitespaceBlock + parserState.NewBlock = blockType(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = block(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, WordToken): + tokenValue = token.Value.lower() + + for keyword in cls.KEYWORDS: + if tokenValue == keyword.__KEYWORD__: + newToken = keyword(fromExistingToken=token) + parserState.PushState = cls.KEYWORDS[keyword] + parserState.NewToken = newToken + parserState.TokenMarker = newToken + return + + if tokenValue == "end": + parserState.NewToken = EndKeyword(fromExistingToken=token) + parserState.NextState = cls.END_BLOCK.stateEndKeyword + return + + raise BlockParserException( + "Expected one of these keywords: END, {keywords}. Found: '{tokenValue}' at line {tokenPositionRow}:{tokenPositionColumn}.".format( + keywords=", ".join( + [kw.__KEYWORD__.upper() for kw in cls.KEYWORDS] + ), + tokenValue=token.Value, + tokenPositionRow=token.Start.Row, + tokenPositionColumn=token.Start.Column + ), token)
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/Generic1.html b/_modules/pyVHDLParser/Blocks/Generic1.html new file mode 100644 index 000000000..90dad33a1 --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/Generic1.html @@ -0,0 +1,534 @@ + + + + + + pyVHDLParser.Blocks.Generic1 — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.Generic1

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from typing import Any
+
+from pyTooling.Decorators         import export
+
+from pyVHDLParser.Token           import CharacterToken, SpaceToken, LinebreakToken, CommentToken, WordToken, MultiLineCommentToken, IndentationToken
+from pyVHDLParser.Token           import SingleLineCommentToken, ExtendedIdentifier
+from pyVHDLParser.Token.Keywords  import EndToken, BoundaryToken, LabelToken, IdentifierToken
+from pyVHDLParser.Blocks          import FinalBlock, TokenToBlockParser, CommentBlock, BlockParserException, Block
+from pyVHDLParser.Blocks.Common   import LinebreakBlock, WhitespaceBlock
+
+
+
[docs]@export +class EndBlock(FinalBlock): + KEYWORD = None + KEYWORD_IS_OPTIONAL = False + EXPECTED_NAME = "" + EXPECTED_NAME_KIND = "keyword" # keyword label + + @classmethod + def stateEndKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken): + if (cls.KEYWORD_IS_OPTIONAL is True) and (token == ";"): + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace1 + return + elif isinstance(token, LinebreakToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException("Expected ';' or whitespace.", token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken): + if (cls.KEYWORD_IS_OPTIONAL is True) and (token == ";"): + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif isinstance(token, WordToken): + IS_SINGLE_KEYWORD = isinstance(cls.KEYWORD, tuple) + KW = cls.KEYWORD[0] if IS_SINGLE_KEYWORD else cls.KEYWORD + if token <= KW.__KEYWORD__: + parserState.NewToken = KW(fromExistingToken=token) + parserState.NextState = cls.stateKeyword1 + elif cls.EXPECTED_NAME_KIND == "label": + parserState.NewToken = LabelToken(fromExistingToken=token) + parserState.NextState = cls.stateSimpleName + else: + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateSimpleName + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + if cls.KEYWORD_IS_OPTIONAL is True: + if cls.EXPECTED_NAME_KIND == "label": + errorMessage = "Expected ';', {0} keyword or {1} label.".format(cls.EXPECTED_NAME.upper(), cls.EXPECTED_NAME) + else: + errorMessage = "Expected ';', {0} keyword or {1} name.".format(cls.EXPECTED_NAME.upper(), cls.EXPECTED_NAME) + else: + if cls.EXPECTED_NAME_KIND == "label": + errorMessage = "Expected {0} keyword or {1} label.".format(cls.EXPECTED_NAME.upper(), cls.EXPECTED_NAME) + else: + errorMessage = "Expected {0} keyword or {1} name.".format(cls.EXPECTED_NAME.upper(), cls.EXPECTED_NAME) + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateKeyword1(cls, parserState: TokenToBlockParser): + IS_DOUBLE_KEYWORD = isinstance(cls.KEYWORD, tuple) + nextState = cls.stateWhitespace2 if IS_DOUBLE_KEYWORD else cls.stateWhitespace3; + token = parserState.Token + if isinstance(token, CharacterToken): + if not isinstance(cls.KEYWORD, tuple) and (token == ";"): + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = nextState + return + elif isinstance(token, LinebreakToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace3 + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace3 + return + + raise BlockParserException("Expected ';' or whitespace.", token) + + @classmethod + def stateWhitespace2(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken): + if (cls.KEYWORD_IS_OPTIONAL is True) and (not isinstance(cls.KEYWORD, tuple)) and (token == ";"): + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif isinstance(token, WordToken) and (token <= cls.KEYWORD[1].__KEYWORD__): + parserState.NewToken = cls.KEYWORD[1](fromExistingToken=token) + parserState.NextState = cls.stateKeyword2 + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + if cls.KEYWORD_IS_OPTIONAL is True: + if cls.EXPECTED_NAME_KIND == "label": + errorMessage = "Expected ';', {0} keyword or {1} label.".format(cls.EXPECTED_NAME.upper(), cls.EXPECTED_NAME) + else: + errorMessage = "Expected ';', {0} keyword or {1} name.".format(cls.EXPECTED_NAME.upper(), cls.EXPECTED_NAME) + else: + if cls.EXPECTED_NAME_KIND == "label": + errorMessage = "Expected {0} keyword or {1} label.".format(cls.EXPECTED_NAME.upper(), cls.EXPECTED_NAME) + else: + errorMessage = "Expected {0} keyword or {1} name.".format(cls.EXPECTED_NAME.upper(), cls.EXPECTED_NAME) + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateKeyword2(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken)and (token == ";"): + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace3 + return + elif isinstance(token, LinebreakToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace3 + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace3 + return + + raise BlockParserException("Expected ';' or whitespace.", token) + + @classmethod + def stateWhitespace3(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken): + if token == ";": + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateSimpleName + return + elif isinstance(token, ExtendedIdentifier): + parserState.NextState = cls.stateSimpleName + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected ';' or {0} name.".format(cls.EXPECTED_NAME), token) + + @classmethod + def stateSimpleName(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken) and (token == ";"): + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace4 + return + elif isinstance(token, LinebreakToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace4 + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace4 + return + + raise BlockParserException("Expected ';' or whitespace.", token) + + @classmethod + def stateWhitespace4(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken): + if token == ";": + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected ';'.", token)
+ + +
[docs]@export +class BeginBlock(Block): + END_BLOCK: EndBlock + + KEYWORDS: Any # TODO: what type? + + @classmethod + def stateStatementRegion(cls, parserState: TokenToBlockParser): + pass
+ + +
[docs]@export +class CloseBlock(Block): + @classmethod + def stateClosingParenthesis(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken) and (token == ";"): + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif isinstance(token, SpaceToken): + parserState.NextState = cls.stateWhitespace1 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException("Expected ';' or whitespace.", token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken)and (token == ";"): + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif isinstance(token, LinebreakToken): + # TODO: review this linebreak case + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = CommentBlock(parserState.LastBlock, token) + parserState.TokenMarker = token + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected ';'.", token)
+ + +
[docs]@export +class EndOfStatementBlock(Block): + pass
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/Instantiation/EntityInstantiation.html b/_modules/pyVHDLParser/Blocks/Instantiation/EntityInstantiation.html new file mode 100644 index 000000000..b061b41f6 --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/Instantiation/EntityInstantiation.html @@ -0,0 +1,334 @@ + + + + + + pyVHDLParser.Blocks.Instantiation.EntityInstantiation — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.Instantiation.EntityInstantiation

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators             import export
+
+from pyVHDLParser.Token               import CharacterToken, SpaceToken, WordToken, LinebreakToken
+from pyVHDLParser.Token.Keywords      import BoundaryToken, IdentifierToken, EndToken
+from pyVHDLParser.Blocks              import BlockParserException, Block, TokenToBlockParser, FinalBlock
+from pyVHDLParser.Blocks.Common       import LinebreakBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Comment      import SingleLineCommentBlock, MultiLineCommentBlock
+
+
+
[docs]@export +class EntityInstantiationBlock(Block): + @classmethod + def stateEntityInstantiationKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected whitespace after keyword EntityInstantiation." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.NewToken = LinebreakToken(fromExistingToken=token) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected entityInstantiation name (identifier)." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + if not isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateEntityInstantiationName + return + elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateEntityInstantiationName(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected ';' after entityInstantiation name." + if isinstance(token, CharacterToken): + if token == ";": + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif token == "\n": + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.NewToken = LinebreakToken(fromExistingToken=token) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NextState = cls.stateWhitespace2 + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateWhitespace2(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected ';'." + if isinstance(token, CharacterToken): + if token == ";": + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + if not isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException(errorMessage, token)
+ + +
[docs]@export +class EndBlock(FinalBlock): + pass
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/Instantiation/FunctionInstantiation.html b/_modules/pyVHDLParser/Blocks/Instantiation/FunctionInstantiation.html new file mode 100644 index 000000000..762d2fc45 --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/Instantiation/FunctionInstantiation.html @@ -0,0 +1,366 @@ + + + + + + pyVHDLParser.Blocks.Instantiation.FunctionInstantiation — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.Instantiation.FunctionInstantiation

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators             import export
+
+from pyVHDLParser.Token               import CharacterToken, SpaceToken, WordToken, LinebreakToken
+from pyVHDLParser.Token.Keywords      import BoundaryToken, IdentifierToken, EndToken
+from pyVHDLParser.Blocks              import BlockParserException, Block, TokenToBlockParser, FinalBlock, SkipableBlock
+from pyVHDLParser.Blocks.Common       import LinebreakBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Comment      import SingleLineCommentBlock, MultiLineCommentBlock
+
+
+
[docs]@export +class EntityInstantiationBlock(Block): + @classmethod + def stateEntityInstantiationKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected whitespace after keyword EntityInstantiation." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.NewToken = LinebreakToken(fromExistingToken=token) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected entityInstantiation name (identifier)." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + if not isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateEntityInstantiationName + return + elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateEntityInstantiationName(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected ';' after entityInstantiation name." + if isinstance(token, CharacterToken): + if token == ";": + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif token == "\n": + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.NewToken = LinebreakToken(fromExistingToken=token) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NextState = cls.stateWhitespace2 + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateWhitespace2(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected ';'." + if isinstance(token, CharacterToken): + if token == ";": + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + if not isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException(errorMessage, token)
+ + +
[docs]@export +class GenericMapBeginBlock(Block): + pass
+ +
[docs]@export +class GenericMapItemBlock(Block): + pass
+ +
[docs]@export +class GenericMapDelimiterBlock(SkipableBlock): + pass
+ +
[docs]@export +class GenericMapEndBlock(FinalBlock): + pass
+ +
[docs]@export +class PortMapBeginBlock(Block): + pass
+ +
[docs]@export +class PortMapItemBlock(Block): + pass
+ +
[docs]@export +class PortMapDelimiterBlock(SkipableBlock): + pass
+ +
[docs]@export +class PortMapEndBlock(FinalBlock): + pass
+ +
[docs]@export +class EndBlock(FinalBlock): + pass
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/Instantiation/PackageInstantiation.html b/_modules/pyVHDLParser/Blocks/Instantiation/PackageInstantiation.html new file mode 100644 index 000000000..168ef1abb --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/Instantiation/PackageInstantiation.html @@ -0,0 +1,366 @@ + + + + + + pyVHDLParser.Blocks.Instantiation.PackageInstantiation — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.Instantiation.PackageInstantiation

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators             import export
+
+from pyVHDLParser.Token               import CharacterToken, SpaceToken, WordToken, LinebreakToken
+from pyVHDLParser.Token.Keywords      import BoundaryToken, IdentifierToken, EndToken
+from pyVHDLParser.Blocks              import BlockParserException, Block, TokenToBlockParser, FinalBlock, SkipableBlock
+from pyVHDLParser.Blocks.Common       import LinebreakBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Comment      import SingleLineCommentBlock, MultiLineCommentBlock
+
+
+
[docs]@export +class EntityInstantiationBlock(Block): + @classmethod + def stateEntityInstantiationKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected whitespace after keyword EntityInstantiation." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.NewToken = LinebreakToken(fromExistingToken=token) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected entityInstantiation name (identifier)." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + if not isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateEntityInstantiationName + return + elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateEntityInstantiationName(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected ';' after entityInstantiation name." + if isinstance(token, CharacterToken): + if token == ";": + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif token == "\n": + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.NewToken = LinebreakToken(fromExistingToken=token) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NextState = cls.stateWhitespace2 + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateWhitespace2(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected ';'." + if isinstance(token, CharacterToken): + if token == ";": + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + if not isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException(errorMessage, token)
+ + +
[docs]@export +class GenericMapBeginBlock(Block): + pass
+ +
[docs]@export +class GenericMapItemBlock(Block): + pass
+ +
[docs]@export +class GenericMapDelimiterBlock(SkipableBlock): + pass
+ +
[docs]@export +class GenericMapEndBlock(FinalBlock): + pass
+ +
[docs]@export +class PortMapBeginBlock(Block): + pass
+ +
[docs]@export +class PortMapItemBlock(Block): + pass
+ +
[docs]@export +class PortMapDelimiterBlock(SkipableBlock): + pass
+ +
[docs]@export +class PortMapEndBlock(FinalBlock): + pass
+ +
[docs]@export +class EndBlock(FinalBlock): + pass
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/Instantiation/ProcedureInstantiation.html b/_modules/pyVHDLParser/Blocks/Instantiation/ProcedureInstantiation.html new file mode 100644 index 000000000..e3de78839 --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/Instantiation/ProcedureInstantiation.html @@ -0,0 +1,366 @@ + + + + + + pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators             import export
+
+from pyVHDLParser.Token               import CharacterToken, SpaceToken, WordToken, LinebreakToken
+from pyVHDLParser.Token.Keywords      import BoundaryToken, IdentifierToken, EndToken
+from pyVHDLParser.Blocks              import BlockParserException, Block, TokenToBlockParser, FinalBlock, SkipableBlock
+from pyVHDLParser.Blocks.Common       import LinebreakBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Comment      import SingleLineCommentBlock, MultiLineCommentBlock
+
+
+
[docs]@export +class EntityInstantiationBlock(Block): + @classmethod + def stateEntityInstantiationKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected whitespace after keyword EntityInstantiation." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.NewToken = LinebreakToken(fromExistingToken=token) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected entityInstantiation name (identifier)." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + if not isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateEntityInstantiationName + return + elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateEntityInstantiationName(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected ';' after entityInstantiation name." + if isinstance(token, CharacterToken): + if token == ";": + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif token == "\n": + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.NewToken = LinebreakToken(fromExistingToken=token) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NextState = cls.stateWhitespace2 + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateWhitespace2(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected ';'." + if isinstance(token, CharacterToken): + if token == ";": + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + if not isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException(errorMessage, token)
+ + +
[docs]@export +class GenericMapBeginBlock(Block): + pass
+ +
[docs]@export +class GenericMapItemBlock(Block): + pass
+ +
[docs]@export +class GenericMapDelimiterBlock(SkipableBlock): + pass
+ +
[docs]@export +class GenericMapEndBlock(FinalBlock): + pass
+ +
[docs]@export +class PortMapBeginBlock(Block): + pass
+ +
[docs]@export +class PortMapItemBlock(Block): + pass
+ +
[docs]@export +class PortMapDelimiterBlock(SkipableBlock): + pass
+ +
[docs]@export +class PortMapEndBlock(FinalBlock): + pass
+ +
[docs]@export +class EndBlock(FinalBlock): + pass
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/InterfaceObject.html b/_modules/pyVHDLParser/Blocks/InterfaceObject.html new file mode 100644 index 000000000..1ddef5f0d --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/InterfaceObject.html @@ -0,0 +1,677 @@ + + + + + + pyVHDLParser.Blocks.InterfaceObject — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.InterfaceObject

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators             import export
+
+from pyVHDLParser.Blocks.Type.ResolutionIndication import RecordResolutionIndicationBlock, \
+	SimpleResolutionIndicationBlock
+from pyVHDLParser.Token               import SpaceToken, LinebreakToken, CommentToken, WordToken, ExtendedIdentifier, MultiLineCommentToken
+from pyVHDLParser.Token               import IndentationToken, SingleLineCommentToken, CharacterToken, FusedCharacterToken
+from pyVHDLParser.Token.Keywords      import InKeyword, VariableAssignmentKeyword, OutKeyword, InoutKeyword, BufferKeyword, LinkageKeyword
+from pyVHDLParser.Token.Keywords      import IdentifierToken, BoundaryToken, DelimiterToken
+from pyVHDLParser.Blocks              import Block, TokenToBlockParser, CommentBlock, BlockParserException
+from pyVHDLParser.Blocks.Common       import LinebreakBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Expression   import ExpressionBlockEndedByCharORClosingRoundBracket
+
+
+
[docs]@export +class InterfaceObjectBlock(Block): + OBJECT_KIND = "" + MODES = {} + EXPRESSION = None + DELIMITER_BLOCK = None + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateObjectName + return + elif isinstance(token, ExtendedIdentifier): + parserState.NextState = cls.stateObjectName + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = CommentBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected interface {0} name (identifier).".format(cls.OBJECT_KIND), token) + + @classmethod + def stateObjectName(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace2 + return + elif isinstance(token, CharacterToken) and (token == ":"): + parserState.NewToken = DelimiterToken(fromExistingToken=token) + parserState.NextState = cls.stateColon1 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + return + + raise BlockParserException("Expected whitespace after interface {0} name.".format(cls.OBJECT_KIND), token) + + @classmethod + def stateWhitespace2(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken) and (token == ":"): + parserState.NewToken = DelimiterToken(fromExistingToken=token) + parserState.NextState = cls.stateColon1 + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = CommentBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected ':' after interface {0} name.".format(cls.OBJECT_KIND), token) + + @classmethod + def stateColon1(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken): + try: + parserState.NewToken = cls.MODES[token.Value.lower()](fromExistingToken=token) + parserState.NextState = cls.stateModeKeyword + return + except KeyError: + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateSubtypeIndication + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace3 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace3 + return + + raise BlockParserException("Expected subtype indication or whitespace after colon.", token) + + @classmethod + def stateWhitespace3(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken): + tokenValue = token.Value.lower() + try: + parserState.NewToken = cls.MODES[tokenValue](fromExistingToken=token) + parserState.NextState = cls.stateModeKeyword + return + except KeyError: + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateSubtypeIndication + return + elif isinstance(token, ExtendedIdentifier): + parserState.NextState = cls.stateSubtypeIndication + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = CommentBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected subtype indication or keyword IN.", token) + + @classmethod + def stateModeKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, SpaceToken): + parserState.NextState = cls.stateSubtypeIndication + parserState.PushState = SimpleResolutionIndicationBlock.stateResolutionFunction + return + elif isinstance(token, CharacterToken) and (token == "("): + parserState.NextState = cls.stateSubtypeIndication + parserState.PushState = RecordResolutionIndicationBlock.stateOpeningParentesis + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace4 + return + + raise BlockParserException("Expected whitespace after keyword CONSTANT.", token) + + @classmethod + def stateWhitespace4(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateSubtypeIndication + return + elif isinstance(token, ExtendedIdentifier): + parserState.NextState = cls.stateSubtypeIndication + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = CommentBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected subtype indication (name).", token) + + @classmethod + def stateSubtypeIndication(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, FusedCharacterToken) and (token == ":="): + parserState.NewToken = VariableAssignmentKeyword(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.NextState = cls.DELIMITER_BLOCK.stateItemDelimiter + parserState.PushState = cls.EXPRESSION.stateBeforeExpression + parserState.TokenMarker = None + parserState.Counter = 0 + return + elif isinstance(token, CharacterToken): + if token == '(': + # parserState.NewToken = BoundaryToken(fromExistingToken=token) + # parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, + # endToken=parserState.NewToken.PreviousToken) + # parserState.TokenMarker = parserState.NewToken + # parserState.NextState = LoopBlock.stateSequentialRegion + # parserState.PushState = ExpressionBlockEndedByLoopORToORDownto.stateExpression + # return + # elif token == ';': + parserState.NewToken = DelimiterToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + _ = cls.DELIMITER_BLOCK(parserState.NewBlock, parserState.NewToken) + parserState.Pop() + return + elif token == ')': + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + parserState.Pop(2) + parserState.TokenMarker = parserState.NewToken + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace5 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace5 + return + + raise BlockParserException("Expected ';', ':=' or whitespace after subtype indication.", token) + + @classmethod + def stateWhitespace5(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, FusedCharacterToken) and (token == ":="): + parserState.NewToken = VariableAssignmentKeyword(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.NextState = cls.DELIMITER_BLOCK.stateItemDelimiter + parserState.PushState = cls.EXPRESSION.stateBeforeExpression + parserState.Counter = 0 + return + elif isinstance(token, CharacterToken): + if token == ';': + parserState.NewToken = DelimiterToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + _ = cls.DELIMITER_BLOCK(parserState.NewBlock, parserState.NewToken) + parserState.Pop() + return + elif token == ')': + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + parserState.Pop(2) + parserState.TokenMarker = parserState.NewToken + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected ';' or ':='.", token)
+ + +
[docs]@export +class InterfaceConstantBlock(InterfaceObjectBlock): + OBJECT_KIND = "constant" + MODES = { + "in": InKeyword + } + + @classmethod + def stateConstantKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, SpaceToken): + parserState.NextState = cls.stateWhitespace1 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException("Expected whitespace after keyword CONSTANT.", token)
+ + +
[docs]@export +class InterfaceVariableBlock(InterfaceObjectBlock): + OBJECT_KIND = "variable" + MODES = { + "in": InKeyword, + "out": OutKeyword, + "inout": InoutKeyword + } + + @classmethod + def stateVariableKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, SpaceToken): + parserState.NextState = cls.stateWhitespace1 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException("Expected whitespace after keyword VARIABLE.", token)
+ + +
[docs]@export +class InterfaceSignalBlock(InterfaceObjectBlock): + OBJECT_KIND = "signal" + MODES = { + "in": InKeyword, + "out": OutKeyword, + "inout": InoutKeyword, + "buffer": BufferKeyword, + "linkage": LinkageKeyword + } + + @classmethod + def stateSignalKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, SpaceToken): + parserState.NextState = cls.stateWhitespace1 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException("Expected whitespace after keyword SIGNAL.", token)
+ + +
[docs]@export +class InterfaceTypeBlock(Block): + DELIMITER_BLOCK = None + + @classmethod + def stateTypeKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, SpaceToken): + parserState.NextState = cls.stateWhitespace1 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException("Expected whitespace after keyword CONSTANT.", token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateTypeName + return + elif isinstance(token, ExtendedIdentifier): + parserState.NextState = cls.stateTypeName + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = CommentBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected interface type name (identifier).", token) + + @classmethod + def stateTypeName(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken): + if token == ';': + parserState.NewToken = DelimiterToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + _ = cls.DELIMITER_BLOCK(parserState.NewBlock, parserState.NewToken) + parserState.Pop() + return + elif token == ')': + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + parserState.Pop(2) + parserState.TokenMarker = parserState.NewToken + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace2 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + return + + raise BlockParserException("Expected ';', ')' or whitespace after interface type name.", token) + + @classmethod + def stateWhitespace2(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken): + if token == ';': + parserState.NewToken = DelimiterToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + _ = cls.DELIMITER_BLOCK(parserState.NewBlock, parserState.NewToken) + parserState.Pop() + return + elif token == ')': + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + parserState.Pop(2) + parserState.TokenMarker = parserState.NewToken + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = CommentBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected ';' or ')'.", token)
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/List/GenericList.html b/_modules/pyVHDLParser/Blocks/List/GenericList.html new file mode 100644 index 000000000..52bfaa804 --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/List/GenericList.html @@ -0,0 +1,365 @@ + + + + + + pyVHDLParser.Blocks.List.GenericList — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.List.GenericList

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators                 import export
+
+from pyVHDLParser.Token                   import CharacterToken, LinebreakToken, IndentationToken, CommentToken, MultiLineCommentToken, SingleLineCommentToken, ExtendedIdentifier
+from pyVHDLParser.Token.Keywords          import BoundaryToken, ConstantKeyword, TypeKeyword, DelimiterToken
+from pyVHDLParser.Token.Keywords          import IdentifierToken
+from pyVHDLParser.Token.Parser            import SpaceToken, WordToken
+from pyVHDLParser.Blocks                  import BlockParserException, Block, CommentBlock, TokenToBlockParser, SkipableBlock
+from pyVHDLParser.Blocks.Common           import LinebreakBlock, IndentationBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Generic1         import CloseBlock as CloseBlockBase
+from pyVHDLParser.Blocks.Expression       import ExpressionBlockEndedByCharORClosingRoundBracket
+from pyVHDLParser.Blocks.InterfaceObject  import InterfaceConstantBlock, InterfaceTypeBlock
+
+
+
[docs]@export +class CloseBlock(CloseBlockBase): + pass
+ + +
[docs]@export +class DelimiterBlock(SkipableBlock): + @classmethod + def stateItemDelimiter(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken): + if token <= "constant": + parserState.NewToken = ConstantKeyword(fromExistingToken=token) + parserState.PushState = GenericListInterfaceConstantBlock.stateConstantKeyword + parserState.TokenMarker = parserState.NewToken + return + elif token <= "type": + parserState.NewToken = TypeKeyword(fromExistingToken=token) + parserState.PushState = GenericListInterfaceTypeBlock.stateTypeKeyword + parserState.TokenMarker = parserState.NewToken + return + elif token <= "procedure": + raise NotImplementedError("Generic procedures are not supported.") + elif token <= "function": + raise NotImplementedError("Generic functions are not supported.") + elif token <= "impure": + raise NotImplementedError("Generic impure functions are not supported.") + elif token <= "pure": + raise NotImplementedError("Generic pure functions are not supported.") + else: + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.PushState = GenericListInterfaceConstantBlock.stateObjectName + parserState.TokenMarker = parserState.NewToken + return + elif isinstance(token, ExtendedIdentifier): + parserState.NextState = GenericListInterfaceConstantBlock.stateObjectName + return + elif isinstance(token, SpaceToken): + parserState.NextState = OpenBlock.stateOpeningParenthesis + return + elif isinstance(token, LinebreakToken): + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = token + parserState.NextState = OpenBlock.stateOpeningParenthesis + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + # parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException("Expected generic name (identifier).", token)
+ + +
[docs]@export +class DefaultValueExpressionBlock(ExpressionBlockEndedByCharORClosingRoundBracket): + EXIT_CHAR = ";" + EXIT_TOKEN = DelimiterToken + EXIT_BLOCK = DelimiterBlock
+ + +
[docs]@export +class GenericListInterfaceConstantBlock(InterfaceConstantBlock): + DELIMITER_BLOCK = DelimiterBlock + EXPRESSION = DefaultValueExpressionBlock
+ + +
[docs]@export +class GenericListInterfaceTypeBlock(InterfaceTypeBlock): + DELIMITER_BLOCK = DelimiterBlock
+ + +
[docs]@export +class OpenBlock(Block): + @classmethod + def stateGenericKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken)and (token == "("): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.NextState = CloseBlock.stateClosingParenthesis + parserState.PushState = cls.stateOpeningParenthesis + return + elif isinstance(token, SpaceToken): + parserState.NextState = cls.stateWhitespace1 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException("Expected '(' or whitespace after keyword GENERIC.", token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken)and (token == "("): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.NextState = CloseBlock.stateClosingParenthesis + parserState.PushState = cls.stateOpeningParenthesis + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected '(' after keyword GENERIC.", token) + + @classmethod + def stateOpeningParenthesis(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken) and (token == ")"): + # if parserState.TokenMarker != token: + # parserState.NewBlock = IndentationBlock(parserState.LastBlock, parserState.TokenMarker, token.PreviousToken) + parserState.Pop(1, token) + return + elif isinstance(token, WordToken): + if token <= "constant": + parserState.NewToken = ConstantKeyword(fromExistingToken=token) + parserState.NextState = DelimiterBlock.stateItemDelimiter + parserState.PushState = GenericListInterfaceConstantBlock.stateConstantKeyword + parserState.TokenMarker = parserState.NewToken + return + elif token <= "type": + parserState.NewToken = TypeKeyword(fromExistingToken=token) + parserState.NextState = DelimiterBlock.stateItemDelimiter + parserState.PushState = GenericListInterfaceTypeBlock.stateTypeKeyword + parserState.TokenMarker = parserState.NewToken + return + elif token <= "procedure": + raise NotImplementedError("Generic procedures are not supported.") + elif token <= "function": + raise NotImplementedError("Generic functions are not supported.") + elif token <= "impure": + raise NotImplementedError("Generic impure functions are not supported.") + elif token <= "pure": + raise NotImplementedError("Generic pure functions are not supported.") + else: + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = DelimiterBlock.stateItemDelimiter + parserState.PushState = GenericListInterfaceConstantBlock.stateObjectName + parserState.TokenMarker = parserState.NewToken + return + elif isinstance(token, ExtendedIdentifier): + parserState.NextState = GenericListInterfaceConstantBlock.stateObjectName + return + elif isinstance(token, SpaceToken): + blockType = IndentationBlock if isinstance(token, IndentationToken) else WhitespaceBlock + parserState.NewBlock = blockType(parserState.LastBlock, token) + return + elif isinstance(token, LinebreakToken): + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = token + # parserState.NextState = cls.stateWhitespace1 + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + # parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException("Expected interface constant name (identifier) or keyword: CONSTANT, TYPE, PROCEDURE, FUNCTION, PURE, IMPURE.", token)
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/List/GenericMapList.html b/_modules/pyVHDLParser/Blocks/List/GenericMapList.html new file mode 100644 index 000000000..bed623772 --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/List/GenericMapList.html @@ -0,0 +1,433 @@ + + + + + + pyVHDLParser.Blocks.List.GenericMapList — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.List.GenericMapList

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators             import export
+
+from pyVHDLParser.Token               import CharacterToken, SpaceToken, WordToken, LinebreakToken, IndentationToken
+from pyVHDLParser.Token.Keywords      import BoundaryToken, IdentifierToken, EndToken, DelimiterToken, OpeningRoundBracketToken, ClosingRoundBracketToken
+from pyVHDLParser.Blocks              import BlockParserException, Block, TokenToBlockParser, SkipableBlock
+from pyVHDLParser.Blocks.Common       import LinebreakBlock, IndentationBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Comment      import SingleLineCommentBlock, MultiLineCommentBlock
+
+
+
[docs]@export +class OpenBlock(Block): + @classmethod + def stateGenericKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected whitespace or '(' after keyword GENERIC." + if isinstance(token, CharacterToken): + if token == "(": + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = OpenBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.NextState = CloseBlock.stateClosingParenthesis + parserState.PushState = OpenBlock.stateOpeningParenthesis + parserState.Counter = 1 + return + elif token == "\n": + parserState.NewBlock = OpenBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.NewToken = LinebreakToken(fromExistingToken=token) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = OpenBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = OpenBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected '(' after keyword GENERIC." + if isinstance(token, CharacterToken): + if token == "(": + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = OpenBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.NextState = CloseBlock.stateClosingParenthesis + parserState.PushState = OpenBlock.stateOpeningParenthesis + parserState.Counter = 1 + return + elif token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + if not isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewBlock = OpenBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = OpenBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = OpenBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateOpeningParenthesis(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected generic name (identifier)." + if isinstance(token, CharacterToken): + if token == ")": + # if parserState.TokenMarker != token: + # parserState.NewBlock = IndentationBlock(parserState.LastBlock, parserState.TokenMarker, token.PreviousToken) + parserState.Pop() + parserState.TokenMarker = token + return + elif token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NewToken = IndentationToken(fromExistingToken=token) + parserState.NewBlock = IndentationBlock(parserState.LastBlock, parserState.NewToken) + return + elif isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.TokenMarker = parserState.NewToken + parserState.NextState = ItemBlock.stateItemRemainder + + # if parserState.TokenMarker != token: + # parserState.NewBlock = IndentationBlock(parserState.LastBlock, parserState.TokenMarker, token) + return + + raise BlockParserException(errorMessage, token)
+ + +
[docs]@export +class ItemBlock(Block): + @classmethod + def stateItemRemainder(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken): + if token == "(": + parserState.NewToken = OpeningRoundBracketToken(fromExistingToken=token) + parserState.Counter += 1 + elif token == ")": + parserState.Counter -= 1 + if parserState.Counter == 0: + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = ItemBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + parserState.Pop() + parserState.TokenMarker = parserState.NewToken + else: + parserState.NewToken = ClosingRoundBracketToken(fromExistingToken=token) + elif token == ";": + if parserState.Counter == 1: + parserState.NewToken = DelimiterToken(fromExistingToken=token) + parserState.NewBlock = ItemBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + _ = DelimiterBlock(parserState.NewBlock, parserState.NewToken) + parserState.NextState = DelimiterBlock.stateItemDelimiter + else: + raise BlockParserException("Mismatch in opening and closing parenthesis: open={0}".format(parserState.Counter), token)
+ + +
[docs]@export +class DelimiterBlock(SkipableBlock): + @classmethod + def stateItemDelimiter(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected generic name (identifier)." + + if isinstance(token, CharacterToken) and (token == "\n"): + parserState.NewToken = LinebreakToken(fromExistingToken=token) + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = OpenBlock.stateOpeningParenthesis + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif isinstance(token, SpaceToken): + parserState.NextState = OpenBlock.stateOpeningParenthesis + return + elif isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.TokenMarker = parserState.NewToken + parserState.NextState = ItemBlock.stateItemRemainder + return + + raise BlockParserException(errorMessage, token)
+ + +
[docs]@export +class CloseBlock(Block): + @classmethod + def stateClosingParenthesis(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected ';' or whitespace." + if isinstance(token, CharacterToken): + if token == ";": + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = CloseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + parserState.PushState = LinebreakBlock.stateLinebreak + parserState.TokenMarker = parserState.NewToken + return + elif token == "-": + parserState.NewBlock = CloseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = CloseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected ';'." + if isinstance(token, CharacterToken): + if token == ";": + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = CloseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif token == "\n": + # TODO: review this linebreak case + parserState.NewToken = LinebreakToken(fromExistingToken=token) + parserState.PushState = LinebreakBlock.stateLinebreak + parserState.TokenMarker = parserState.NewToken + return + elif token == "-": + parserState.NewBlock = CloseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = CloseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException(errorMessage, token)
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/List/ParameterList.html b/_modules/pyVHDLParser/Blocks/List/ParameterList.html new file mode 100644 index 000000000..305edc601 --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/List/ParameterList.html @@ -0,0 +1,395 @@ + + + + + + pyVHDLParser.Blocks.List.ParameterList — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.List.ParameterList

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators                 import export
+
+from pyVHDLParser.Token                   import CharacterToken, WordToken, SpaceToken, LinebreakToken, IndentationToken, CommentToken, MultiLineCommentToken, SingleLineCommentToken, ExtendedIdentifier
+from pyVHDLParser.Token.Keywords          import BoundaryToken, DelimiterToken, ClosingRoundBracketToken, IdentifierToken
+from pyVHDLParser.Token.Keywords          import ConstantKeyword, SignalKeyword, VariableKeyword, TypeKeyword
+from pyVHDLParser.Blocks                  import BlockParserException, Block, CommentBlock, TokenToBlockParser, SkipableBlock
+from pyVHDLParser.Blocks.Common           import LinebreakBlock, IndentationBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Generic1         import CloseBlock as CloseBlockBase
+from pyVHDLParser.Blocks.InterfaceObject  import InterfaceSignalBlock, InterfaceConstantBlock, InterfaceVariableBlock
+
+
+
[docs]@export +class OpenBlock(Block): + @classmethod + def stateParameterKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken) and (token == "("): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.NextState = CloseBlock.stateClosingParenthesis + parserState.PushState = cls.stateOpeningParenthesis + parserState.Counter = 1 + return + elif isinstance(token, SpaceToken): + parserState.NextState = cls.stateWhitespace1 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException("Expected '(' or whitespace after keyword PARAMETER.", token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken) and (token == "("): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.PushState = cls.stateOpeningParenthesis + parserState.Counter = 1 + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected '(' after keyword PARAMETER.", token) + + @classmethod + def stateOpeningParenthesis(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken): + if token <= "constant": + parserState.NewToken = ConstantKeyword(fromExistingToken=token) + parserState.NextState = DelimiterBlock.stateItemDelimiter + parserState.PushState = ParameterListInterfaceConstantBlock.stateConstantKeyword + parserState.TokenMarker = parserState.NewToken + return + elif token <= "variable": + parserState.NewToken = VariableKeyword(fromExistingToken=token) + parserState.NextState = DelimiterBlock.stateItemDelimiter + parserState.PushState = ParameterListInterfaceVariableBlock.stateVariableKeyword + parserState.TokenMarker = parserState.NewToken + return + elif token <= "signal": + parserState.NewToken = SignalKeyword(fromExistingToken=token) + parserState.NextState = DelimiterBlock.stateItemDelimiter + parserState.PushState = ParameterListInterfaceSignalBlock.stateSignalKeyword + parserState.TokenMarker = parserState.NewToken + return + else: + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.PushState = ParameterListInterfaceConstantBlock.stateObjectName + parserState.TokenMarker = parserState.NewToken + return + elif isinstance(token, ExtendedIdentifier): + parserState.NextState = ParameterListInterfaceConstantBlock.stateObjectName + return + elif isinstance(token, SpaceToken): + blockType = IndentationBlock if isinstance(token, IndentationToken) else WhitespaceBlock + parserState.NewBlock = blockType(parserState.LastBlock, token) + return + elif isinstance(token, LinebreakToken): + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = token + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected interface element name (identifier).", token)
+ + +
[docs]@export +class ItemBlock(Block): + @classmethod + def stateItemRemainder(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken): + if token == "(": + parserState.Counter += 1 + elif token == ")": + parserState.Counter -= 1 + if parserState.Counter == 0: + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = ItemBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + _ = CloseBlock(parserState.NewBlock, parserState.NewToken) + parserState.Pop() + parserState.TokenMarker = None + else: + parserState.NewToken = ClosingRoundBracketToken(fromExistingToken=token) + # parserState.NewBlock = CloseBlock(parserState.LastBlock, parserState.NewToken) + # parserState.Pop() + elif token == ";": + if parserState.Counter == 1: + parserState.NewToken = DelimiterToken(fromExistingToken=token) + parserState.NewBlock = ItemBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + _ = DelimiterBlock(parserState.NewBlock, parserState.NewToken) + parserState.NextState = DelimiterBlock.stateItemDelimiter + else: + raise BlockParserException("Mismatch in opening and closing parenthesis: open={0}".format(parserState.Counter), token)
+ + +
[docs]@export +class DelimiterBlock(SkipableBlock): +
[docs] def __init__(self, previousBlock, startToken): + super().__init__(previousBlock, startToken, startToken)
+ + @classmethod + def stateItemDelimiter(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken): + tokenValue = token.Value.lower() + if tokenValue == "constant": + parserState.NewToken = ConstantKeyword(fromExistingToken=token) + parserState.PushState = ParameterListInterfaceConstantBlock.stateConstantKeyword + parserState.TokenMarker = parserState.NewToken + return + elif tokenValue == "variable": + parserState.NewToken = VariableKeyword(fromExistingToken=token) + parserState.PushState = ParameterListInterfaceVariableBlock.stateVariableKeyword + parserState.TokenMarker = parserState.NewToken + return + elif tokenValue == "signal": + parserState.NewToken = SignalKeyword(fromExistingToken=token) + parserState.PushState = ParameterListInterfaceSignalBlock.stateSignalKeyword + parserState.TokenMarker = parserState.NewToken + return + elif tokenValue == "type": + parserState.NewToken = TypeKeyword(fromExistingToken=token) + parserState.PushState = ParameterListInterfaceTypeBlock.stateTypeKeyword + parserState.TokenMarker = parserState.NewToken + return + elif tokenValue == "procedure": + raise NotImplementedError("Generic procedures are not supported.") + elif tokenValue == "function": + raise NotImplementedError("Generic functions are not supported.") + elif tokenValue == "impure": + raise NotImplementedError("Generic impure functions are not supported.") + elif tokenValue == "pure": + raise NotImplementedError("Generic pure functions are not supported.") + else: + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.PushState = ParameterListInterfaceConstantBlock.stateObjectName + parserState.TokenMarker = parserState.NewToken + return + elif isinstance(token, ExtendedIdentifier): + parserState.NextState = ParameterListInterfaceConstantBlock.stateObjectName + return + elif isinstance(token, SpaceToken): + parserState.TokenMarker = token + parserState.NextState = ItemBlock.stateItemRemainder + return + elif isinstance(token, LinebreakToken): + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = token + parserState.NextState = ItemBlock.stateItemRemainder + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected parameter name (identifier).", token)
+ + +
[docs]@export +class CloseBlock(CloseBlockBase): + pass
+ + +
[docs]@export +class ParameterListInterfaceConstantBlock(InterfaceConstantBlock): + DELIMITER_BLOCK = DelimiterBlock
+ + +
[docs]@export +class ParameterListInterfaceVariableBlock(InterfaceVariableBlock): + DELIMITER_BLOCK = DelimiterBlock
+ + +
[docs]@export +class ParameterListInterfaceSignalBlock(InterfaceSignalBlock): + DELIMITER_BLOCK = DelimiterBlock
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/List/PortList.html b/_modules/pyVHDLParser/Blocks/List/PortList.html new file mode 100644 index 000000000..cb7b51243 --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/List/PortList.html @@ -0,0 +1,333 @@ + + + + + + pyVHDLParser.Blocks.List.PortList — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.List.PortList

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators                 import export
+
+from pyVHDLParser.Token                   import CharacterToken, WordToken, SpaceToken, LinebreakToken, IndentationToken, CommentToken, MultiLineCommentToken, SingleLineCommentToken, ExtendedIdentifier
+from pyVHDLParser.Token.Keywords          import BoundaryToken, SignalKeyword, DelimiterToken
+from pyVHDLParser.Token.Keywords          import IdentifierToken
+from pyVHDLParser.Blocks                  import BlockParserException, Block, CommentBlock, TokenToBlockParser, SkipableBlock
+from pyVHDLParser.Blocks.Common           import LinebreakBlock, IndentationBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Generic1         import CloseBlock as CloseBlockBase
+from pyVHDLParser.Blocks.Expression       import ExpressionBlockEndedByCharORClosingRoundBracket
+from pyVHDLParser.Blocks.InterfaceObject  import InterfaceSignalBlock
+
+
+
[docs]@export +class CloseBlock(CloseBlockBase): + pass
+ + +
[docs]@export +class DelimiterBlock(SkipableBlock): + @classmethod + def stateItemDelimiter(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken): + if token <= "signal": + parserState.NewToken = SignalKeyword(fromExistingToken=token) + parserState.PushState = PortListInterfaceSignalBlock.stateSignalKeyword + parserState.TokenMarker = parserState.NewToken + return + else: + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.PushState = PortListInterfaceSignalBlock.stateObjectName + parserState.TokenMarker = parserState.NewToken + return + elif isinstance(token, ExtendedIdentifier): + parserState.NextState = PortListInterfaceSignalBlock.stateObjectName + return + elif isinstance(token, SpaceToken): + parserState.NextState = OpenBlock.stateOpeningParenthesis + return + elif isinstance(token, LinebreakToken): + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = token + parserState.NextState = OpenBlock.stateOpeningParenthesis + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + # parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException("Expected port name (identifier).", token)
+ + +
[docs]@export +class DefaultValueExpressionBlock(ExpressionBlockEndedByCharORClosingRoundBracket): + EXIT_CHAR = ";" + EXIT_TOKEN = DelimiterToken + EXIT_BLOCK = DelimiterBlock
+ + +
[docs]@export +class PortListInterfaceSignalBlock(InterfaceSignalBlock): + DELIMITER_BLOCK = DelimiterBlock + EXPRESSION = DefaultValueExpressionBlock
+ + +
[docs]@export +class OpenBlock(Block): + @classmethod + def statePortKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken)and (token == "("): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.NextState = CloseBlock.stateClosingParenthesis + parserState.PushState = cls.stateOpeningParenthesis + return + elif isinstance(token, SpaceToken): + parserState.NextState = cls.stateWhitespace1 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException("Expected '(' or whitespace after keyword PORT.", token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken)and (token == "("): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.NextState = CloseBlock.stateClosingParenthesis + parserState.PushState = cls.stateOpeningParenthesis + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected '(' after keyword PORT.", token) + + @classmethod + def stateOpeningParenthesis(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken) and (token == ")"): + # if parserState.TokenMarker != token: + # parserState.NewBlock = IndentationBlock(parserState.LastBlock, parserState.TokenMarker, token.PreviousToken) + parserState.Pop() + parserState.TokenMarker = token + return + elif isinstance(token, WordToken): + if token <= "signal": + parserState.NewToken = SignalKeyword(fromExistingToken=token) + parserState.NextState = DelimiterBlock.stateItemDelimiter + parserState.PushState = PortListInterfaceSignalBlock.stateSignalKeyword + parserState.TokenMarker = parserState.NewToken + return + else: + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = DelimiterBlock.stateItemDelimiter + parserState.PushState = PortListInterfaceSignalBlock.stateObjectName + parserState.TokenMarker = parserState.NewToken + return + elif isinstance(token, ExtendedIdentifier): + parserState.NextState = PortListInterfaceSignalBlock.stateObjectName + return + elif isinstance(token, SpaceToken): + blockType = IndentationBlock if isinstance(token, IndentationToken) else WhitespaceBlock + parserState.NewBlock = blockType(parserState.LastBlock, token) + return + elif isinstance(token, LinebreakToken): + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = token + # parserState.NextState = cls.stateWhitespace1 + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + # parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException("Expected interface signal name (identifier) or keyword: SIGNAL.", token)
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/List/PortMapList.html b/_modules/pyVHDLParser/Blocks/List/PortMapList.html new file mode 100644 index 000000000..1aa55cbf9 --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/List/PortMapList.html @@ -0,0 +1,436 @@ + + + + + + pyVHDLParser.Blocks.List.PortMapList — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.List.PortMapList

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators             import export
+
+from pyVHDLParser.Token               import CharacterToken, SpaceToken, WordToken, LinebreakToken, IndentationToken
+from pyVHDLParser.Token.Keywords      import BoundaryToken, IdentifierToken, EndToken, DelimiterToken, OpeningRoundBracketToken, ClosingRoundBracketToken
+from pyVHDLParser.Blocks              import BlockParserException, Block, TokenToBlockParser, SkipableBlock
+from pyVHDLParser.Blocks.Common       import LinebreakBlock, IndentationBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Comment      import SingleLineCommentBlock, MultiLineCommentBlock
+
+
+
[docs]@export +class OpenBlock(Block): + @classmethod + def statePortKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected whitespace or '(' after keyword PORT." + if isinstance(token, CharacterToken): + if token == "(": + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = OpenBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.NextState = CloseBlock.stateClosingParenthesis + parserState.PushState = OpenBlock.stateOpeningParenthesis + parserState.Counter = 1 + return + elif token == "\n": + parserState.NewBlock = OpenBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.NewToken = LinebreakToken(fromExistingToken=token) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = OpenBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = OpenBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + + errorMessage = "Expected '(' after keyword PORT." + if isinstance(token, CharacterToken): + if token == "(": + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = OpenBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.NextState = CloseBlock.stateClosingParenthesis + parserState.PushState = OpenBlock.stateOpeningParenthesis + parserState.Counter = 1 + return + elif token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + if not isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewBlock = OpenBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = OpenBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = OpenBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateOpeningParenthesis(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected port name (identifier)." + if isinstance(token, CharacterToken): + if token == ")": + # if parserState.TokenMarker != token: + # parserState.NewBlock = IndentationBlock(parserState.LastBlock, parserState.TokenMarker, token.PreviousToken) + parserState.Pop(1, token) + return + elif token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NewToken = IndentationToken(fromExistingToken=token) + parserState.NewBlock = IndentationBlock(parserState.LastBlock, parserState.NewToken) + return + elif isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.TokenMarker = parserState.NewToken + parserState.NextState = ItemBlock.stateItemRemainder + + # if parserState.TokenMarker != token: + # parserState.NewBlock = IndentationBlock(parserState.LastBlock, parserState.TokenMarker, token) + return + + raise BlockParserException(errorMessage, token)
+ + +
[docs]@export +class ItemBlock(Block): + @classmethod + def stateItemRemainder(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken): + if token == "(": + parserState.NewToken = OpeningRoundBracketToken(fromExistingToken=token) + parserState.Counter += 1 + elif token == ")": + parserState.Counter -= 1 + if parserState.Counter == 0: + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = ItemBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + parserState.Pop() + parserState.TokenMarker = parserState.NewToken + else: + parserState.NewToken = ClosingRoundBracketToken(fromExistingToken=token) + elif token == ";": + if parserState.Counter == 1: + parserState.NewToken = DelimiterToken(fromExistingToken=token) + parserState.NewBlock = ItemBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + _ = DelimiterBlock(parserState.NewBlock, parserState.NewToken) + parserState.NextState = DelimiterBlock.stateItemDelimiter + else: + raise BlockParserException("Mismatch in opening and closing parenthesis: open={0}".format(parserState.Counter), token)
+ + +
[docs]@export +class DelimiterBlock(SkipableBlock): +
[docs] def __init__(self, previousBlock, startToken): + super().__init__(previousBlock, startToken, startToken)
+ + @classmethod + def stateItemDelimiter(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected port name (identifier)." + + if isinstance(token, CharacterToken) and (token == "\n"): + parserState.NewToken = LinebreakToken(fromExistingToken=token) + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = OpenBlock.stateOpeningParenthesis + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif isinstance(token, SpaceToken): + parserState.NextState = OpenBlock.stateOpeningParenthesis + return + elif isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.TokenMarker = parserState.NewToken + parserState.NextState = ItemBlock.stateItemRemainder + return + + raise BlockParserException(errorMessage, token)
+ + +
[docs]@export +class CloseBlock(Block): + @classmethod + def stateClosingParenthesis(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected ';' or whitespace." + if isinstance(token, CharacterToken): + if token == ";": + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = CloseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + parserState.PushState = LinebreakBlock.stateLinebreak + parserState.TokenMarker = parserState.NewToken + return + elif token == "-": + parserState.NewBlock = CloseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = CloseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected ';'." + if isinstance(token, CharacterToken): + if token == ";": + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = CloseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif token == "\n": + # TODO: review this linebreak case + parserState.NewToken = LinebreakToken(fromExistingToken=token) + parserState.PushState = LinebreakBlock.stateLinebreak + parserState.TokenMarker = parserState.NewToken + return + elif token == "-": + parserState.NewBlock = CloseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = CloseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException(errorMessage, token)
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/List/SensitivityList.html b/_modules/pyVHDLParser/Blocks/List/SensitivityList.html new file mode 100644 index 000000000..aa341d769 --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/List/SensitivityList.html @@ -0,0 +1,330 @@ + + + + + + pyVHDLParser.Blocks.List.SensitivityList — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.List.SensitivityList

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators         import export
+
+from pyVHDLParser.Token           import CharacterToken, WordToken, SpaceToken, LinebreakToken, IndentationToken, ExtendedIdentifier
+from pyVHDLParser.Token           import CommentToken, MultiLineCommentToken, SingleLineCommentToken
+from pyVHDLParser.Token.Keywords  import BoundaryToken, DelimiterToken, OpeningRoundBracketToken, ClosingRoundBracketToken
+from pyVHDLParser.Token.Keywords  import IdentifierToken, AllKeyword
+from pyVHDLParser.Blocks          import BlockParserException, Block, CommentBlock, TokenToBlockParser, SkipableBlock
+from pyVHDLParser.Blocks.Common   import LinebreakBlock, IndentationBlock, WhitespaceBlock
+
+
+
[docs]@export +class OpenBlock(Block): + @classmethod + def stateOpeningParenthesis(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken): + if token <= "all": + parserState.NewToken = AllKeyword(fromExistingToken=token) + parserState.NewBlock = ItemBlock(parserState.LastBlock, parserState.NewToken, endToken=parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = CloseBlock.stateAllKeyword + else: + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.TokenMarker = parserState.NewToken + parserState.NextState = ItemBlock.stateItemRemainder + return + elif isinstance(token, ExtendedIdentifier): + parserState.NextState = ItemBlock.stateItemRemainder + return + elif isinstance(token, SpaceToken): + blockType = IndentationBlock if isinstance(token, IndentationToken) else WhitespaceBlock + parserState.NewBlock = blockType(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, LinebreakToken): + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected keyword ALL or signal name (identifier).", token)
+ + +
[docs]@export +class ItemBlock(Block): + @classmethod + def stateItemRemainder(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken): + if token == "(": + parserState.Counter += 1 + elif token == ")": + parserState.NewToken = OpeningRoundBracketToken(fromExistingToken=token) + parserState.Counter -= 1 + if parserState.Counter == 0: + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = ItemBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + parserState.Pop() + parserState.TokenMarker = parserState.NewToken + else: + parserState.NewToken = ClosingRoundBracketToken(fromExistingToken=token) + elif token == ";": + if parserState.Counter == 1: + parserState.NewToken = DelimiterToken(fromExistingToken=token) + parserState.NewBlock = ItemBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + _ = DelimiterBlock(parserState.NewBlock, parserState.NewToken) + parserState.NextState = DelimiterBlock.stateItemDelimiter + else: + raise BlockParserException("Mismatch in opening and closing parenthesis: open={0}".format(parserState.Counter), token)
+ + +
[docs]@export +class DelimiterBlock(SkipableBlock): +
[docs] def __init__(self, previousBlock, startToken): + super().__init__(previousBlock, startToken, startToken)
+ + @classmethod + def stateItemDelimiter(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.TokenMarker = parserState.NewToken + parserState.NextState = ItemBlock.stateItemRemainder + return + elif isinstance(token, ExtendedIdentifier): + parserState.NextState = ItemBlock.stateItemRemainder + return + elif isinstance(token, SpaceToken): + parserState.NextState = OpenBlock.stateOpeningParenthesis + return + elif isinstance(token, LinebreakToken): + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = token + parserState.NextState = OpenBlock.stateOpeningParenthesis + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected signal name (identifier).", token)
+ + +
[docs]@export +class CloseBlock(Block): + @classmethod + def stateAllKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken) and (token == ")"): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = CloseBlock(parserState.LastBlock, parserState.NewToken, endToken=parserState.NewToken) + parserState.Pop() + return + elif isinstance(token, SpaceToken): + parserState.NextState = cls.stateWhitespace1 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException("Expected ')' or whitespace after keyword ALL.", token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected '(' after keyword PROCESS." + if isinstance(token, CharacterToken) and (token == ")"): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.NewToken, endToken=parserState.NewToken) + parserState.Pop() + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException(errorMessage, token)
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/Object.html b/_modules/pyVHDLParser/Blocks/Object.html new file mode 100644 index 000000000..ecd64a960 --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/Object.html @@ -0,0 +1,379 @@ + + + + + + pyVHDLParser.Blocks.Object — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.Object

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators         import export
+
+from pyVHDLParser.Token           import WordToken, ExtendedIdentifier, LinebreakToken, MultiLineCommentToken
+from pyVHDLParser.Token           import CommentToken, SpaceToken, CharacterToken, FusedCharacterToken
+from pyVHDLParser.Token.Keywords  import IdentifierToken, BoundaryToken, VariableAssignmentKeyword, EndToken
+from pyVHDLParser.Blocks          import Block, TokenToBlockParser, CommentBlock, BlockParserException
+from pyVHDLParser.Blocks.Common   import LinebreakBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Generic1 import EndOfStatementBlock
+
+
+
[docs]@export +class ObjectDeclarationBlock(Block): + OBJECT_KIND = "" + EXPRESSION_BLOCK = None + END_BLOCK = None + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateObjectName + return + elif isinstance(token, ExtendedIdentifier): + parserState.NextState = cls.stateObjectName + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = CommentBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected {0} name (identifier).".format(cls.OBJECT_KIND), token) + + @classmethod + def stateObjectName(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken) and (token == ":"): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateColon1 + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace2 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + return + + raise BlockParserException("Expected ':' or whitespace after {0} name.".format(cls.OBJECT_KIND), token) + + @classmethod + def stateWhitespace2(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken) and (token == ":"): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateColon1 + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = CommentBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected colon after {0} name.".format(cls.OBJECT_KIND), token) + + @classmethod + def stateColon1(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateSubtypeIndication + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace3 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace3 + return + + raise BlockParserException("Expected subtype indication or whitespace after colon.", token) + + @classmethod + def stateWhitespace3(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateSubtypeIndication + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = CommentBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected subtype indication after colon.", token) + + @classmethod + def stateSubtypeIndication(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, FusedCharacterToken) and (token == ":="): + parserState.NewToken = VariableAssignmentKeyword(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.PushState = cls.EXPRESSION_BLOCK.stateExpression + parserState.TokenMarker = None + parserState.Counter = 0 + return + elif isinstance(token, CharacterToken) and (token == ';'): + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + _ = cls.END_BLOCK(parserState.NewBlock, parserState.NewToken) + parserState.Pop() + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace4 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace4 + return + + raise BlockParserException("Expected ':=', ';' or whitespace after subtype indication.", token) + + @classmethod + def stateWhitespace4(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, FusedCharacterToken) and (token == ":="): + parserState.NewToken = VariableAssignmentKeyword(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.PushState = cls.EXPRESSION_BLOCK.stateExpression + parserState.TokenMarker = None + parserState.Counter = 0 + return + elif isinstance(token, CharacterToken) and (token == ";"): + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = CommentBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected ':=' or ';' after subtype indication.", token)
+ + +
[docs]@export +class ObjectDeclarationEndMarkerBlock(EndOfStatementBlock): + pass
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/Object/Constant.html b/_modules/pyVHDLParser/Blocks/Object/Constant.html new file mode 100644 index 000000000..4240be867 --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/Object/Constant.html @@ -0,0 +1,211 @@ + + + + + + pyVHDLParser.Blocks.Object.Constant — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.Object.Constant

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators           import export
+
+from pyVHDLParser.Token             import SpaceToken, LinebreakToken, CommentToken
+from pyVHDLParser.Token.Keywords    import BoundaryToken
+from pyVHDLParser.Blocks            import TokenToBlockParser, CommentBlock, BlockParserException
+from pyVHDLParser.Blocks.Common     import LinebreakBlock
+from pyVHDLParser.Blocks.Expression import ExpressionBlockEndedBySemicolon
+from pyVHDLParser.Blocks.Object     import ObjectDeclarationEndMarkerBlock, ObjectDeclarationBlock
+
+
+
[docs]@export +class ConstantDeclarationEndMarkerBlock(ObjectDeclarationEndMarkerBlock): + pass
+ + +
[docs]@export +class ConstantDeclarationDefaultExpressionBlock(ExpressionBlockEndedBySemicolon): + END_BLOCK = ConstantDeclarationEndMarkerBlock
+ + +
[docs]@export +class ConstantDeclarationBlock(ObjectDeclarationBlock): + OBJECT_KIND = "constant" + EXPRESSION_BLOCK = ConstantDeclarationDefaultExpressionBlock + END_BLOCK = ConstantDeclarationEndMarkerBlock + + @classmethod + def stateConstantKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace1 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException("Expected whitespace after keyword CONSTANT.", token)
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/Object/SharedVariable.html b/_modules/pyVHDLParser/Blocks/Object/SharedVariable.html new file mode 100644 index 000000000..b9c3ad3bb --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/Object/SharedVariable.html @@ -0,0 +1,303 @@ + + + + + + pyVHDLParser.Blocks.Object.SharedVariable — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.Object.SharedVariable

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators           import export
+
+from pyVHDLParser.Blocks            import TokenToBlockParser, CommentBlock, BlockParserException
+from pyVHDLParser.Blocks.Common     import LinebreakBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Object     import ObjectDeclarationEndMarkerBlock, ObjectDeclarationBlock
+from pyVHDLParser.Token             import SpaceToken, LinebreakToken, CommentToken, WordToken
+from pyVHDLParser.Token             import ExtendedIdentifier, MultiLineCommentToken, CharacterToken
+from pyVHDLParser.Token.Keywords    import BoundaryToken, IdentifierToken, EndToken
+
+
+
[docs]@export +class SharedVariableDeclarationEndMarkerBlock(ObjectDeclarationEndMarkerBlock): + pass
+ + +
[docs]@export +class SharedVariableDeclarationBlock(ObjectDeclarationBlock): + OBJECT_KIND = "variable" + END_BLOCK = SharedVariableDeclarationEndMarkerBlock + + @classmethod + def stateSharedKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace0 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace0 + return + + raise BlockParserException("Expected whitespace after keyword SHARED.", token) + + @classmethod + def stateWhitespace0(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateVariableKeyword + return + elif isinstance(token, ExtendedIdentifier): + parserState.NextState = cls.stateVariableKeyword + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = CommentBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected whitespace after keyword SHARED.", token) + + @classmethod + def stateVariableKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace1 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException("Expected whitespace after keyword VARIABLE.", token) + + @classmethod + def stateSubtypeIndication(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken) and (token == ';'): + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + _ = cls.END_BLOCK(parserState.NewBlock, parserState.NewToken) + parserState.Pop() + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace4 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace4 + return + + raise BlockParserException("Expected ';' or whitespace after subtype indication.", token) + + @classmethod + def stateWhitespace4(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken) and (token == ";"): + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = CommentBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected ';' after subtype indication.", token)
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/Object/Signal.html b/_modules/pyVHDLParser/Blocks/Object/Signal.html new file mode 100644 index 000000000..be5b714d4 --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/Object/Signal.html @@ -0,0 +1,211 @@ + + + + + + pyVHDLParser.Blocks.Object.Signal — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.Object.Signal

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators           import export
+
+from pyVHDLParser.Token             import SpaceToken, LinebreakToken, CommentToken
+from pyVHDLParser.Token.Keywords    import BoundaryToken
+from pyVHDLParser.Blocks            import TokenToBlockParser, CommentBlock, BlockParserException
+from pyVHDLParser.Blocks.Common     import LinebreakBlock
+from pyVHDLParser.Blocks.Expression import ExpressionBlockEndedBySemicolon
+from pyVHDLParser.Blocks.Object     import ObjectDeclarationEndMarkerBlock, ObjectDeclarationBlock
+
+
+
[docs]@export +class SignalDeclarationEndMarkerBlock(ObjectDeclarationEndMarkerBlock): + pass
+ + +
[docs]@export +class SignalDeclarationDefaultExpressionBlock(ExpressionBlockEndedBySemicolon): + END_BLOCK = SignalDeclarationEndMarkerBlock
+ + +
[docs]@export +class SignalDeclarationBlock(ObjectDeclarationBlock): + OBJECT_KIND = "signal" + EXPRESSION_BLOCK = SignalDeclarationDefaultExpressionBlock + END_BLOCK = SignalDeclarationEndMarkerBlock + + @classmethod + def stateSignalKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace1 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException("Expected whitespace after keyword SIGNAL.", token)
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/Object/Variable.html b/_modules/pyVHDLParser/Blocks/Object/Variable.html new file mode 100644 index 000000000..7d696d903 --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/Object/Variable.html @@ -0,0 +1,211 @@ + + + + + + pyVHDLParser.Blocks.Object.Variable — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.Object.Variable

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators           import export
+
+from pyVHDLParser.Token             import SpaceToken, LinebreakToken, CommentToken
+from pyVHDLParser.Token.Keywords    import BoundaryToken
+from pyVHDLParser.Blocks            import TokenToBlockParser, CommentBlock, BlockParserException
+from pyVHDLParser.Blocks.Common     import LinebreakBlock
+from pyVHDLParser.Blocks.Expression import ExpressionBlockEndedBySemicolon
+from pyVHDLParser.Blocks.Object     import ObjectDeclarationEndMarkerBlock, ObjectDeclarationBlock
+
+
+
[docs]@export +class VariableDeclarationEndMarkerBlock(ObjectDeclarationEndMarkerBlock): + pass
+ + +
[docs]@export +class VariableDeclarationDefaultExpressionBlock(ExpressionBlockEndedBySemicolon): + END_BLOCK = VariableDeclarationEndMarkerBlock
+ + +
[docs]@export +class VariableDeclarationBlock(ObjectDeclarationBlock): + OBJECT_KIND = "variable" + EXPRESSION_BLOCK = VariableDeclarationDefaultExpressionBlock + END_BLOCK = VariableDeclarationEndMarkerBlock + + @classmethod + def stateVariableKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace1 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException("Expected whitespace after keyword VARIABLE.", token)
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/Reference/Context.html b/_modules/pyVHDLParser/Blocks/Reference/Context.html new file mode 100644 index 000000000..42d79c825 --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/Reference/Context.html @@ -0,0 +1,329 @@ + + + + + + pyVHDLParser.Blocks.Reference.Context — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.Reference.Context

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators             import export
+
+from pyVHDLParser.Token               import CommentToken, SpaceToken, LinebreakToken, MultiLineCommentToken, IndentationToken, SingleLineCommentToken, ExtendedIdentifier
+from pyVHDLParser.Token.Keywords      import WordToken, BoundaryToken, IdentifierToken, IsKeyword, UseKeyword, EndKeyword, ContextKeyword, LibraryKeyword
+from pyVHDLParser.Blocks              import Block, CommentBlock, BlockParserException, TokenToBlockParser
+from pyVHDLParser.Blocks.Common       import LinebreakBlock, IndentationBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Generic      import EndBlock as EndBlockBase
+
+
+
[docs]@export +class NameBlock(Block): + KEYWORDS = None + + @classmethod + def __cls_init__(cls): + from pyVHDLParser.Blocks.Reference import Use, Library + + cls.KEYWORDS = { + # Keyword Transition + UseKeyword: Use.StartBlock.stateUseKeyword, + LibraryKeyword: Library.StartBlock.stateLibraryKeyword + } + @classmethod + def stateContextKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace1 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException("Expected whitespace after keyword CONTEXT.", token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateContextName + return + elif isinstance(token, ExtendedIdentifier): + parserState.NextState = cls.stateContextName + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected context name (identifier).", token) + + @classmethod + def stateContextName(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace2 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + return + + raise BlockParserException("Expected whitespace after context name (identifier).", token) + + @classmethod + def stateWhitespace2(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken) and (token <= "is"): + parserState.NewToken = IsKeyword(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.NextState = cls.stateDeclarativeRegion + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected keyword IS after context name.", token) + + @classmethod + def stateDeclarativeRegion(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, SpaceToken): + blockType = IndentationBlock if isinstance(token, IndentationToken) else WhitespaceBlock + parserState.NewBlock = blockType(parserState.LastBlock, token) + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = block(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, WordToken): + tokenValue = token.Value.lower() + for keyword in cls.KEYWORDS: + if tokenValue == keyword.__KEYWORD__: + newToken = keyword(fromExistingToken=token) + parserState.PushState = cls.KEYWORDS[keyword] + parserState.NewToken = newToken + parserState.TokenMarker = newToken + return + + if tokenValue == "end": + parserState.NewToken = EndKeyword(fromExistingToken=token) + parserState.TokenMarker = parserState.NewToken + parserState.NextState = EndBlock.stateEndKeyword + return + + raise BlockParserException( + "Expected one of these keywords: END, {keywords}. Found: '{tokenValue}'.".format( + keywords=", ".join( + [kw.__KEYWORD__.upper() for kw in cls.KEYWORDS] + ), + tokenValue=token.Value + ), token)
+ + +
[docs]@export +class EndBlock(EndBlockBase): + KEYWORD = ContextKeyword + EXPECTED_NAME = KEYWORD.__KEYWORD__
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/Reference/Library.html b/_modules/pyVHDLParser/Blocks/Reference/Library.html new file mode 100644 index 000000000..46ee3e6ca --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/Reference/Library.html @@ -0,0 +1,353 @@ + + + + + + pyVHDLParser.Blocks.Reference.Library — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.Reference.Library

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators             import export
+
+from pyVHDLParser.Token               import CharacterToken, SpaceToken, WordToken, LinebreakToken, CommentToken, IndentationToken, SingleLineCommentToken, MultiLineCommentToken, ExtendedIdentifier
+from pyVHDLParser.Token.Keywords      import BoundaryToken, IdentifierToken, EndToken, DelimiterToken
+from pyVHDLParser.Blocks              import BlockParserException, Block, CommentBlock, TokenToBlockParser, FinalBlock, SkipableBlock
+from pyVHDLParser.Blocks.Common       import LinebreakBlock, WhitespaceBlock
+
+
+
[docs]@export +class StartBlock(Block): + @classmethod + def stateLibraryKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException("Expected whitespace after keyword LIBRARY.", token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.TokenMarker = parserState.NewToken + parserState.NextState = LibraryNameBlock.stateLibraryName + return + elif isinstance(token, ExtendedIdentifier): + parserState.NextState = LibraryNameBlock.stateLibraryName + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = block(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected library name (identifier).", token)
+ + +
[docs]@export +class LibraryNameBlock(Block): + @classmethod + def stateLibraryName(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken): + if token == ",": + parserState.NewToken = DelimiterToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken) + _ = DelimiterBlock(parserState.NewBlock, parserState.NewToken) + parserState.NextState = DelimiterBlock.stateDelimiter + return + elif token == ";": + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken) + _ = EndBlock(parserState.NewBlock, parserState.NewToken) + parserState.Pop() + return + elif isinstance(token, SpaceToken): + #parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace1 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException("Expected ';' after library name.", token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken): + if token == ",": + parserState.NewToken = DelimiterToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken) + _ = DelimiterBlock(parserState.NewBlock, parserState.NewToken) + parserState.NextState = DelimiterBlock.stateDelimiter + return + elif token == ";": + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken) + _ = EndBlock(parserState.NewBlock, parserState.NewToken) + parserState.Pop() + return + elif isinstance(token, LinebreakToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token, multiPart=True) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected ';'.", token)
+ + +
[docs]@export +class DelimiterBlock(SkipableBlock): + @classmethod + def stateDelimiter(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = LibraryNameBlock.stateLibraryName + parserState.TokenMarker = parserState.NewToken + return + elif isinstance(token, ExtendedIdentifier): + parserState.NextState = LibraryNameBlock.stateLibraryName + return + elif isinstance(token, LinebreakToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token, multiPart=True) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + # parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = parserState.NewToken + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException("Expected library name (identifier).", token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = LibraryNameBlock.stateLibraryName + return + elif isinstance(token, LinebreakToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token, multiPart=True) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected library name (identifier).", token)
+ + +
[docs]@export +class EndBlock(FinalBlock): + pass
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/Reference/Use.html b/_modules/pyVHDLParser/Blocks/Reference/Use.html new file mode 100644 index 000000000..6d2a6a60f --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/Reference/Use.html @@ -0,0 +1,595 @@ + + + + + + pyVHDLParser.Blocks.Reference.Use — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.Reference.Use

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators             import export
+
+from pyVHDLParser.Token               import CharacterToken, SpaceToken, WordToken, LinebreakToken, CommentToken, MultiLineCommentToken, IndentationToken, SingleLineCommentToken, ExtendedIdentifier
+from pyVHDLParser.Token.Keywords      import BoundaryToken, IdentifierToken, DelimiterToken, EndToken, AllKeyword
+from pyVHDLParser.Blocks              import BlockParserException, Block, CommentBlock, TokenToBlockParser, FinalBlock, SkipableBlock
+from pyVHDLParser.Blocks.Common       import LinebreakBlock, WhitespaceBlock
+
+
+
[docs]@export +class StartBlock(Block): + @classmethod + def stateUseKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException("Expected whitespace after keyword USE.", token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.TokenMarker = parserState.NewToken + parserState.NextState = ReferenceNameBlock.stateLibraryName + return + elif isinstance(token, ExtendedIdentifier): + parserState.NextState = ReferenceNameBlock.stateLibraryName + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = block(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected library name (identifier).", token)
+ + +
[docs]@export +class ReferenceNameBlock(Block): + @classmethod + def stateLibraryName(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken) and (token == "."): + parserState.NewToken = DelimiterToken(fromExistingToken=token) + parserState.NextState = cls.stateDot1 + return + elif isinstance(token, SpaceToken): + #parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace1 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException("Expected '.' after library name.", token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken) and (token == "."): + parserState.NewToken = DelimiterToken(fromExistingToken=token) + parserState.NextState = cls.stateDot1 + return + elif isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.TokenMarker = parserState.NewToken + parserState.NextState = cls.stateDot1 + return + elif isinstance(token, ExtendedIdentifier): + parserState.NextState = cls.stateDot1 + return + elif isinstance(token, LinebreakToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token, multiPart=True) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected '.'.", token) + + @classmethod + def stateDot1(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.statePackageName + return + elif isinstance(token, ExtendedIdentifier): + parserState.NextState = cls.statePackageName + return + elif isinstance(token, CharacterToken) and (token == "."): + parserState.NewToken = DelimiterToken(fromExistingToken=token) + parserState.NextState = cls.stateDot1 + return + elif isinstance(token, SpaceToken): + #parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace2 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + return + + raise BlockParserException("Expected package name after '.'.", token) + + @classmethod + def stateWhitespace2(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.statePackageName + return + elif isinstance(token, ExtendedIdentifier): + parserState.NextState = cls.statePackageName + return + elif isinstance(token, CharacterToken) and (token == "."): + parserState.NewToken = DelimiterToken(fromExistingToken=token) + parserState.NextState = cls.stateDot1 + return + elif isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.TokenMarker = parserState.NewToken + parserState.NextState = cls.statePackageName + return + elif isinstance(token, LinebreakToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token, multiPart=True) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected package name (identifier).", token) + + @classmethod + def statePackageName(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken) and (token == "."): + parserState.NewToken = DelimiterToken(fromExistingToken=token) + parserState.NextState = cls.stateDot2 + return + elif isinstance(token, SpaceToken): + #parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace3 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace3 + return + + raise BlockParserException("Expected '.' after package name.", token) + + @classmethod + def stateWhitespace3(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken) and (token == "."): + parserState.NewToken = DelimiterToken(fromExistingToken=token) + parserState.NextState = cls.stateDot2 + return + elif isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.TokenMarker = parserState.NewToken + parserState.NextState = cls.stateDot2 + return + elif isinstance(token, ExtendedIdentifier): + parserState.NextState = cls.stateDot2 + return + elif isinstance(token, LinebreakToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token, multiPart=True) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected '.'.", token) + + @classmethod + def stateDot2(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken): + if token <= "all": + parserState.NewToken = AllKeyword(fromExistingToken=token) + else: + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateObjectName + return + elif isinstance(token, ExtendedIdentifier): + parserState.NextState = cls.stateObjectName + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace4 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace4 + return + + raise BlockParserException("Expected object name after '.'.", token) + + @classmethod + def stateWhitespace4(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken) and (token == "."): + parserState.NewToken = DelimiterToken(fromExistingToken=token) + parserState.NextState = cls.stateDot1 + return + elif isinstance(token, WordToken): + if token <= "all": + parserState.NewToken = AllKeyword(fromExistingToken=token) + else: + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateObjectName + return + elif isinstance(token, ExtendedIdentifier): + parserState.NextState = cls.stateObjectName + return + elif isinstance(token, LinebreakToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token, multiPart=True) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected object name (identifier) or keyword ALL.", token) + + @classmethod + def stateObjectName(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken): + if token == ",": + parserState.NewToken = DelimiterToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken) + _ = DelimiterBlock(parserState.NewBlock, parserState.NewToken, endToken=parserState.NewToken) + parserState.NextState = DelimiterBlock.stateDelimiter + return + elif token == ";": + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken) + _ = EndBlock(parserState.NewBlock, parserState.NewToken, endToken=parserState.NewToken) + parserState.Pop() + return + elif isinstance(token, SpaceToken): + # parserState.NewToken = WhitespaceBlock(parserState.LastBlock, token) + parserState.NextState = cls.stateWhitespace5 + return + elif isinstance(token, LinebreakToken): + parserState.NextState = cls.stateWhitespace5 + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace5 + return + + raise BlockParserException("Expected ',', ';' or whitespace.", token) + + @classmethod + def stateWhitespace5(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken): + if token == ",": + parserState.NewToken = DelimiterToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken) + _ = DelimiterBlock(parserState.NewBlock, parserState.NewToken, endToken=parserState.NewToken) + parserState.NextState = DelimiterBlock.stateDelimiter + return + elif token == ";": + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + _ = EndBlock(parserState.NewBlock, parserState.NewToken, endToken=parserState.NewToken) + parserState.Pop() + parserState.TokenMarker = None + return + elif isinstance(token, LinebreakToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token, multiPart=True) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected ',' or ';'.", token)
+ + +
[docs]@export +class DelimiterBlock(SkipableBlock): + @classmethod + def stateDelimiter(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = ReferenceNameBlock.stateLibraryName + parserState.TokenMarker = parserState.NewToken + return + elif isinstance(token, ExtendedIdentifier): + parserState.NextState = ReferenceNameBlock.stateLibraryName + return + elif isinstance(token, LinebreakToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token, multiPart=True) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.TokenMarker = parserState.NewToken + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException("Expected library name (identifier) or whitespace.", token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = ReferenceNameBlock.stateLibraryName + return + elif isinstance(token, ExtendedIdentifier): + parserState.NextState = ReferenceNameBlock.stateLibraryName + return + elif isinstance(token, LinebreakToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token, multiPart=True) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected library name (identifier).", token)
+ + +
[docs]@export +class EndBlock(FinalBlock): + pass
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/Reporting/Assert.html b/_modules/pyVHDLParser/Blocks/Reporting/Assert.html new file mode 100644 index 000000000..6e43242c8 --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/Reporting/Assert.html @@ -0,0 +1,476 @@ + + + + + + pyVHDLParser.Blocks.Reporting.Assert — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.Reporting.Assert

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators         import export
+
+from pyVHDLParser.Token           import SpaceToken, LinebreakToken, WordToken, IndentationToken, CharacterToken
+from pyVHDLParser.Token           import CommentToken, SingleLineCommentToken, MultiLineCommentToken
+from pyVHDLParser.Token.Keywords  import BoundaryToken, IdentifierToken, ReportKeyword, EndToken, SeverityKeyword
+from pyVHDLParser.Blocks          import Block, CommentBlock, TokenToBlockParser, BlockParserException
+from pyVHDLParser.Blocks.Common   import LinebreakBlock, WhitespaceBlock
+
+
+
[docs]@export +class AssertBlock(Block): + @classmethod + def stateAssertKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace1 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException("Expected whitespace after keyword ASSERT.", token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateAssertion + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected assertion (expression).", token) + + @classmethod + def stateAssertion(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace2 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + return + + raise BlockParserException("Expected whitespace after assertion (expression).", token) + + @classmethod + def stateWhitespace2(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken) and (token <= "report"): + parserState.NewToken = ReportKeyword(fromExistingToken=token) + parserState.NextState = cls.stateReportKeyword + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected keyword REPORT after assertion (expression).", token) + + @classmethod + def stateReportKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace3 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace3 + return + + raise BlockParserException("Expected whitespace after keyword REPORT.", token) + + @classmethod + def stateWhitespace3(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateMessage + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected report message (expression) after keyword REPORT.", token) + + @classmethod + def stateMessage(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken)and (token == ";"): + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace4 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace4 + return + + raise BlockParserException("Expected whitespace after report message (expression).", token) + + @classmethod + def stateWhitespace4(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken)and (token == ";"): + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif isinstance(token, WordToken) and (token <= "severity"): + parserState.NewToken = SeverityKeyword(fromExistingToken=token) + parserState.NextState = cls.stateSeverityKeyword + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected keyword SEVERITY after report message (expression).", token) + + @classmethod + def stateSeverityKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace5 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace5 + return + + raise BlockParserException("Expected whitespace after keyword SEVERITY.", token) + + @classmethod + def stateWhitespace5(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateSeverityLevel + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected severity level (expression) after keyword SEVERITY.", token) + + @classmethod + def stateSeverityLevel(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken) and (token == ";"): + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace6 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace6 + return + + raise BlockParserException("Expected ';' or whitespace after severity level (expression).", token) + + @classmethod + def stateWhitespace6(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken)and (token == ";"): + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected ';'.", token)
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/Reporting/Report.html b/_modules/pyVHDLParser/Blocks/Reporting/Report.html new file mode 100644 index 000000000..3aa9eb639 --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/Reporting/Report.html @@ -0,0 +1,383 @@ + + + + + + pyVHDLParser.Blocks.Reporting.Report — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.Reporting.Report

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators         import export
+
+from pyVHDLParser.Token           import SpaceToken, LinebreakToken, WordToken, IndentationToken, CharacterToken
+from pyVHDLParser.Token           import CommentToken, SingleLineCommentToken, MultiLineCommentToken
+from pyVHDLParser.Token.Keywords  import BoundaryToken, IdentifierToken, EndToken, SeverityKeyword
+from pyVHDLParser.Blocks          import Block, CommentBlock, TokenToBlockParser, BlockParserException
+from pyVHDLParser.Blocks.Common   import LinebreakBlock, WhitespaceBlock
+
+
+
[docs]@export +class ReportBlock(Block): + @classmethod + def stateReportKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace3 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace3 + return + + raise BlockParserException("Expected whitespace after keyword ARCHITECTURE.", token) + + @classmethod + def stateWhitespace3(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateMessage + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected keyword REPORT after assertion.", token) + + @classmethod + def stateMessage(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken)and (token == ";"): + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace4 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace4 + return + + raise BlockParserException("Expected whitespace after assertion.", token) + + @classmethod + def stateWhitespace4(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken)and (token == ";"): + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif isinstance(token, WordToken) and (token <= "severity"): + parserState.NewToken = SeverityKeyword(fromExistingToken=token) + parserState.NextState = cls.stateSeverityKeyword + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected keyword SEVERITY after message.", token) + + @classmethod + def stateSeverityKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace5 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace5 + return + + raise BlockParserException("Expected whitespace after keyword SEVERITY.", token) + + @classmethod + def stateWhitespace5(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateSeverityLevel + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected keyword REPORT after assertion.", token) + + @classmethod + def stateSeverityLevel(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken) and (token == ";"): + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace6 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace6 + return + + raise BlockParserException("Expected ';' or whitespace after severity level.", token) + + @classmethod + def stateWhitespace6(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken): + if token == ";": + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected ';'.", token)
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/Sequential/Function.html b/_modules/pyVHDLParser/Blocks/Sequential/Function.html new file mode 100644 index 000000000..156781538 --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/Sequential/Function.html @@ -0,0 +1,546 @@ + + + + + + pyVHDLParser.Blocks.Sequential.Function — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.Sequential.Function

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators                   import export
+
+from pyVHDLParser.Token                     import SpaceToken, LinebreakToken, CommentToken, CharacterToken, IndentationToken, MultiLineCommentToken
+from pyVHDLParser.Token.Keywords            import WordToken, BoundaryToken, IdentifierToken, PureKeyword, ImpureKeyword
+from pyVHDLParser.Token.Keywords            import ReturnKeyword, GenericKeyword, ParameterKeyword, FunctionKeyword, EndKeyword
+from pyVHDLParser.Token.Keywords            import UseKeyword, ConstantKeyword, VariableKeyword, IsKeyword, EndToken, BeginKeyword, ProcedureKeyword, ReportKeyword
+from pyVHDLParser.Blocks                    import Block, BlockParserException, CommentBlock, TokenToBlockParser
+from pyVHDLParser.Blocks.Common             import LinebreakBlock, IndentationBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Generic            import SequentialBeginBlock, SequentialDeclarativeRegion
+from pyVHDLParser.Blocks.Generic1           import EndBlock as EndBlockBase
+from pyVHDLParser.Blocks.List               import GenericList, ParameterList
+
+
+
[docs]@export +class EndBlock(EndBlockBase): + KEYWORD = FunctionKeyword + KEYWORD_IS_OPTIONAL = True + EXPECTED_NAME = KEYWORD.__KEYWORD__
+ + +
[docs]@export +class BeginBlock(SequentialBeginBlock): + END_BLOCK = EndBlock
+ + +
[docs]@export +class DeclarativeRegion(SequentialDeclarativeRegion): + BEGIN_BLOCK = BeginBlock + END_BLOCK = EndBlock
+ + +
[docs]@export +class NameBlock(Block): + @classmethod + def statePureKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace0 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace0 + return + + raise BlockParserException("Expected whitespace after keyword PURE.", token) + + @classmethod + def stateImpureKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace0 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace0 + return + + raise BlockParserException("Expected whitespace after keyword IMPURE.", token) + + @classmethod + def stateWhitespace0(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateFunctionName + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected keyword FUNCTION.", token) + + @classmethod + def stateFunctionKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace1 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException("Expected whitespace after keyword FUNCTION.", token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateFunctionName + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected function name (designator).", token) + + @classmethod + def stateFunctionName(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken) and (token == "("): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + _ = ParameterList.OpenBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = ReturnTypeBlock.stateAfterParameterList + parserState.PushState = ParameterList.OpenBlock.stateOpeningParenthesis + parserState.Counter = 1 + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace2 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + return + + raise BlockParserException("Expected '(' or whitespace after function name.", token) + + @classmethod + def stateWhitespace2(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken) and (token == "("): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + _ = ParameterList.OpenBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = ReturnTypeBlock.stateAfterParameterList + parserState.PushState = ParameterList.OpenBlock.stateOpeningParenthesis + parserState.Counter = 1 + return + elif isinstance(token, WordToken): + keyword = token.Value.lower() + if keyword == "return": + parserState.NewToken = ReturnKeyword(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + parserState.TokenMarker = parserState.NewToken + parserState.NextState = ReturnTypeBlock.stateReturnKeyword + return + elif keyword == "generic": + parserState.NewToken = GenericKeyword(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + parserState.NextState = GenericList.OpenBlock.stateGenericKeyword + parserState.TokenMarker = parserState.NewToken + return + elif keyword == "parameter": + parserState.NewToken = ParameterKeyword(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + parserState.NextState = ParameterList.OpenBlock.stateParameterKeyword + parserState.TokenMarker = parserState.NewToken + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected '(' or keywords GENERIC, PARAMETER or RETURN after function name.", token)
+ + +
[docs]@export +class ReturnTypeBlock(Block): + @classmethod + def stateAfterParameterList(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken): + if token <= "return": + parserState.NewToken = ReturnKeyword(fromExistingToken=token) + # parserState.NewBlock = NameBlock2(parserState.LastBlock, parserState.TokenMarker, parserState.NewToken) + parserState.NextState = cls.stateReturnKeyword + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace1 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = block(parserState.LastBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException("Expected keyword RETURN.", token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken) and (token <= "return"): + parserState.NewToken = ReturnKeyword(fromExistingToken=token) + parserState.NextState = cls.stateReturnKeyword + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected function name (designator).", token) + + @classmethod + def stateReturnKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected whitespace after keyword RETURN." + if isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace2 + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace2 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateWhitespace2(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateReturnType + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected return type (type mark).", token) + + @classmethod + def stateReturnType(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected ';' or whitespace after type mark (return type)." + if isinstance(token, CharacterToken) and (token == ";"): + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace3 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace3 + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateWhitespace3(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken) and (token == ";"): + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif isinstance(token, WordToken) and (token <= "is"): + parserState.NewToken = IsKeyword(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.NextState = DeclarativeRegion.stateDeclarativeRegion + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected function name (designator).", token)
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/Sequential/Package.html b/_modules/pyVHDLParser/Blocks/Sequential/Package.html new file mode 100644 index 000000000..116061bb3 --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/Sequential/Package.html @@ -0,0 +1,301 @@ + + + + + + pyVHDLParser.Blocks.Sequential.Package — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.Sequential.Package

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators           import export
+
+from pyVHDLParser.Token             import LinebreakToken, WordToken, SpaceToken, CommentToken, MultiLineCommentToken
+from pyVHDLParser.Token.Keywords    import PackageKeyword, IsKeyword, EndKeyword, GenericKeyword, BodyKeyword, UseKeyword, VariableKeyword, SignalKeyword
+from pyVHDLParser.Token.Keywords    import BoundaryToken, IdentifierToken
+from pyVHDLParser.Token.Keywords    import ConstantKeyword, SharedKeyword, ProcedureKeyword, FunctionKeyword, PureKeyword, ImpureKeyword
+from pyVHDLParser.Blocks            import BlockParserException, Block, CommentBlock, TokenToBlockParser
+from pyVHDLParser.Blocks.Common     import LinebreakBlock, IndentationBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Generic    import SequentialDeclarativeRegion
+from pyVHDLParser.Blocks.Generic1   import EndBlock as EndBlockBase
+from pyVHDLParser.Blocks.Sequential import PackageBody
+from pyVHDLParser.Blocks.List       import GenericList
+
+
+
[docs]@export +class EndBlock(EndBlockBase): + KEYWORD = PackageKeyword + KEYWORD_IS_OPTIONAL = True + EXPECTED_NAME = KEYWORD.__KEYWORD__
+ + +
[docs]@export +class DeclarativeRegion(SequentialDeclarativeRegion): + END_BLOCK = EndBlock + + @classmethod + def __cls_init__(cls): + super().__cls_init__() + + # TODO: use key assignment: a[b] = c + cls.KEYWORDS.update({ + # Keyword Transition + GenericKeyword: GenericList.OpenBlock.stateGenericKeyword + })
+ +
[docs]@export +class NameBlock(Block): + @classmethod + def statePackageKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace1 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException("Expected whitespace after keyword PACKAGE.", token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken): + if token <= "body": + parserState.NewToken = BodyKeyword(fromExistingToken=token) + parserState.NextState = PackageBody.NameBlock.stateBodyKeyword + return + else: + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.statePackageName + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected package name (identifier).", token) + + @classmethod + def statePackageName(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace2 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + return + + raise BlockParserException("Expected whitespace after package name.", token) + + @classmethod + def stateWhitespace2(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken) and (token <= "is"): + parserState.NewToken = IsKeyword(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = DeclarativeRegion.stateDeclarativeRegion + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected keyword IS after package name.", token)
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/Sequential/PackageBody.html b/_modules/pyVHDLParser/Blocks/Sequential/PackageBody.html new file mode 100644 index 000000000..0a3c0f4c9 --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/Sequential/PackageBody.html @@ -0,0 +1,285 @@ + + + + + + pyVHDLParser.Blocks.Sequential.PackageBody — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.Sequential.PackageBody

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators                   import export
+
+from pyVHDLParser.Token                     import LinebreakToken, WordToken, SpaceToken, CommentToken, MultiLineCommentToken, IndentationToken
+from pyVHDLParser.Token.Keywords            import PackageKeyword, IsKeyword, EndKeyword, BodyKeyword, FunctionKeyword, SignalKeyword
+from pyVHDLParser.Token.Keywords            import BoundaryToken, IdentifierToken
+from pyVHDLParser.Token.Keywords            import ConstantKeyword, SharedKeyword, ProcedureKeyword, FunctionKeyword, PureKeyword, ImpureKeyword
+from pyVHDLParser.Blocks                    import BlockParserException, Block, CommentBlock, TokenToBlockParser
+from pyVHDLParser.Blocks.Common             import LinebreakBlock, IndentationBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Generic            import SequentialDeclarativeRegion
+from pyVHDLParser.Blocks.Generic1           import EndBlock as EndBlockBase
+
+
+
[docs]@export +class EndBlock(EndBlockBase): + KEYWORD = (PackageKeyword, BodyKeyword) + KEYWORD_IS_OPTIONAL = True + EXPECTED_NAME = " ".join(kw.__KEYWORD__ for kw in KEYWORD)
+ + +
[docs]@export +class DeclarativeRegion(SequentialDeclarativeRegion): + END_BLOCK = EndBlock
+ + +
[docs]@export +class NameBlock(Block): + @classmethod + def stateBodyKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace1 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException("Expected whitespace after keyword ", token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.statePackageName + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = NameBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected package name (identifier).", token) + + @classmethod + def statePackageName(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace2 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + return + + raise BlockParserException("Expected whitespace after package name.", token) + + @classmethod + def stateWhitespace2(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken) and (token <= "is"): + parserState.NewToken = IsKeyword(fromExistingToken=token) + parserState.NewBlock = NameBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = DeclarativeRegion.stateDeclarativeRegion + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = NameBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected keyword IS after package name.", token)
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/Sequential/Procedure.html b/_modules/pyVHDLParser/Blocks/Sequential/Procedure.html new file mode 100644 index 000000000..ac1b345c9 --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/Sequential/Procedure.html @@ -0,0 +1,397 @@ + + + + + + pyVHDLParser.Blocks.Sequential.Procedure — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.Sequential.Procedure

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators                   import export
+
+from pyVHDLParser.Token                     import SpaceToken, LinebreakToken, CommentToken, CharacterToken, IndentationToken, MultiLineCommentToken
+from pyVHDLParser.Token.Keywords            import WordToken, BoundaryToken, IdentifierToken, GenericKeyword, ParameterKeyword, ProcedureKeyword, EndKeyword, ImpureKeyword, PureKeyword
+from pyVHDLParser.Token.Keywords            import UseKeyword, ConstantKeyword, VariableKeyword, IsKeyword, EndToken, BeginKeyword, FunctionKeyword, ReportKeyword
+from pyVHDLParser.Blocks                    import Block, BlockParserException, CommentBlock, TokenToBlockParser
+from pyVHDLParser.Blocks.Common             import LinebreakBlock, IndentationBlock, WhitespaceBlock
+# from pyVHDLParser.Blocks.ControlStructure   import If, Case, ForLoop, WhileLoop, Return
+from pyVHDLParser.Blocks.Generic            import SequentialBeginBlock, SequentialDeclarativeRegion
+from pyVHDLParser.Blocks.Generic1           import EndBlock as EndBlockBase
+from pyVHDLParser.Blocks.List               import GenericList, ParameterList
+
+
+
[docs]@export +class EndBlock(EndBlockBase): + KEYWORD = ProcedureKeyword + KEYWORD_IS_OPTIONAL = True + EXPECTED_NAME = KEYWORD.__KEYWORD__
+ + +
[docs]@export +class BeginBlock(SequentialBeginBlock): + END_BLOCK = EndBlock
+ + +
[docs]@export +class DeclarativeRegion(SequentialDeclarativeRegion): + BEGIN_BLOCK = BeginBlock + END_BLOCK = EndBlock
+ + +
[docs]@export +class NameBlock(Block): + @classmethod + def stateProcedureKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace1 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException("Expected whitespace after keyword PROCEDURE.", token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateProcedureName + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected procedure name (designator).", token) + + @classmethod + def stateProcedureName(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken): + if token == "(": + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + _ = ParameterList.OpenBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = VoidBlock.stateAfterParameterList + parserState.PushState = ParameterList.OpenBlock.stateOpeningParenthesis + parserState.Counter = 1 + return + elif token == ";": + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) # .PreviousToken) +# _ = EndBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace2 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + return + + raise BlockParserException("Expected ';', '(' or whitespace after procedure name.", token) + + @classmethod + def stateWhitespace2(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken): + if token == "(": + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + _ = ParameterList.OpenBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = VoidBlock.stateAfterParameterList + parserState.PushState = ParameterList.OpenBlock.stateOpeningParenthesis + parserState.Counter = 1 + return + elif token == ";": + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) # .PreviousToken) +# _ = EndBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif isinstance(token, WordToken): + keyword = token.Value.lower() + if keyword == "is": + parserState.NewToken = IsKeyword(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + _ = VoidBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = parserState.NewToken + parserState.NextState = VoidBlock.stateDeclarativeRegion + return + elif keyword == "generic": + parserState.NewToken = GenericKeyword(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + parserState.NextState = GenericList.OpenBlock.stateGenericKeyword + parserState.TokenMarker = parserState.NewToken + return + elif keyword == "parameter": + parserState.NewToken = ParameterKeyword(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) + parserState.NextState = ParameterList.OpenBlock.stateParameterKeyword + parserState.TokenMarker = parserState.NewToken + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected ';', '(' or keywords GENERIC, PARAMETER or RETURN after procedure name.", token)
+ + +
[docs]@export +class VoidBlock(Block): + @classmethod + def stateAfterParameterList(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken) and (token == ";"): + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif isinstance(token, WordToken): + if token <= "is": + parserState.NewToken = IsKeyword(fromExistingToken=token) + parserState.NewBlock = VoidBlock(parserState.LastBlock, parserState.TokenMarker, parserState.NewToken) + parserState.NextState = DeclarativeRegion.stateDeclarativeRegion + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace1 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = block(parserState.LastBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException("Expected keyword RETURN.", token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken) and (token <= "is"): + parserState.NewToken = IsKeyword(fromExistingToken=token) + parserState.NextState = DeclarativeRegion.stateDeclarativeRegion + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected procedure name (designator).", token)
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/Sequential/Process.html b/_modules/pyVHDLParser/Blocks/Sequential/Process.html new file mode 100644 index 000000000..b1bffb757 --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/Sequential/Process.html @@ -0,0 +1,391 @@ + + + + + + pyVHDLParser.Blocks.Sequential.Process — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.Sequential.Process

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators                   import export
+
+from pyVHDLParser.Token                     import CharacterToken, SpaceToken, LinebreakToken, CommentToken, IndentationToken, MultiLineCommentToken, SingleLineCommentToken
+from pyVHDLParser.Token.Keywords            import WordToken, BoundaryToken, IsKeyword, UseKeyword, ConstantKeyword, ImpureKeyword, PureKeyword
+from pyVHDLParser.Token.Keywords            import VariableKeyword, ProcessKeyword, BeginKeyword, FunctionKeyword, ProcedureKeyword
+from pyVHDLParser.Blocks                    import Block, CommentBlock, BlockParserException, TokenToBlockParser
+from pyVHDLParser.Blocks.Common             import LinebreakBlock, IndentationBlock, WhitespaceBlock
+# from pyVHDLParser.Blocks.ControlStructure   import If, Case, ForLoop, WhileLoop
+from pyVHDLParser.Blocks.Generic            import SequentialBeginBlock, SequentialDeclarativeRegion
+from pyVHDLParser.Blocks.Generic1           import EndBlock as EndBlockBase
+from pyVHDLParser.Blocks.List               import SensitivityList
+
+
+
[docs]@export +class EndBlock(EndBlockBase): + KEYWORD = ProcessKeyword + KEYWORD_IS_OPTIONAL = True + EXPECTED_NAME = KEYWORD.__KEYWORD__
+ + +
[docs]@export +class BeginBlock(SequentialBeginBlock): + END_BLOCK = EndBlock
+ + +
[docs]@export +class DeclarativeRegion(SequentialDeclarativeRegion): + BEGIN_BLOCK = BeginBlock + END_BLOCK = EndBlock
+ + +
[docs]@export +class OpenBlock(Block): + @classmethod + def stateProcessKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken)and (token == "("): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.NextState = OpenBlock2.stateAfterSensitivityList + parserState.PushState = SensitivityList.OpenBlock.stateOpeningParenthesis + parserState.Counter = 1 + return + elif isinstance(token, SpaceToken): + parserState.NextState = cls.stateWhitespace1 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException("Expected '(' or whitespace after keyword PROCESS.", token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken)and (token == "("): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.NextState = OpenBlock2.stateAfterSensitivityList + parserState.PushState = SensitivityList.OpenBlock.stateOpeningParenthesis + parserState.Counter = 1 + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = CommentBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + elif isinstance(token, WordToken): + tokenValue = token.Value.lower() + + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken) + + for keyword in OpenBlock2.KEYWORDS: + if tokenValue == keyword.__KEYWORD__: + newToken = keyword(fromExistingToken=token) + parserState.NextState = DeclarativeRegion.stateDeclarativeRegion + parserState.PushState = cls.KEYWORDS[keyword] + parserState.NewToken = newToken + parserState.TokenMarker = newToken + return + + if tokenValue == "begin": + parserState.NewToken = BeginKeyword(fromExistingToken=token) + _ = BeginBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = BeginBlock.stateSequentialRegion + return + + raise BlockParserException("Expected '(' after keyword PROCESS.", token)
+ +# TODO: Find a better name +
[docs]@export +class OpenBlock2(Block): + KEYWORDS = None + + # TODO: Merge with OpenBlock.KEYWORDS ?? + @classmethod + def __cls_init__(cls): + from pyVHDLParser.Blocks.Object.Variable import VariableDeclarationBlock, VariableDeclarationEndMarkerBlock + from pyVHDLParser.Blocks.Object.Constant import ConstantDeclarationBlock, ConstantDeclarationEndMarkerBlock + from pyVHDLParser.Blocks.Reference import Use + from pyVHDLParser.Blocks.Reporting import Report + from pyVHDLParser.Blocks.Sequential import Procedure, Function + + cls.KEYWORDS = { + # Keyword Transition + UseKeyword: Use.StartBlock.stateUseKeyword, + ConstantKeyword: ConstantDeclarationBlock.stateConstantKeyword, + VariableKeyword: VariableDeclarationBlock.stateVariableKeyword, + FunctionKeyword: Function.NameBlock.stateFunctionKeyword, + ProcedureKeyword: Procedure.NameBlock.stateProcedureKeyword, + ImpureKeyword: Function.NameBlock.stateImpureKeyword, + PureKeyword: Function.NameBlock.statePureKeyword + } + + @classmethod + def stateAfterSensitivityList(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken): + tokenValue = token.Value.lower() + + for keyword in OpenBlock2.KEYWORDS: + if tokenValue == keyword.__KEYWORD__: + newToken = keyword(fromExistingToken=token) + parserState.NextState = DeclarativeRegion.stateDeclarativeRegion + parserState.PushState = OpenBlock2.KEYWORDS[keyword] + parserState.NewToken = newToken + parserState.TokenMarker = newToken + return + + if tokenValue == "begin": + parserState.NewToken = BeginKeyword(fromExistingToken=token) + parserState.NewBlock = BeginBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = BeginBlock.stateSequentialRegion + return + elif tokenValue == "is": + parserState.NewToken = IsKeyword(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = DeclarativeRegion.stateDeclarativeRegion + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.TokenMarker = parserState.NewToken + parserState.NextState = cls.stateWhitespace1 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = block(parserState.LastBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException("Expected whitespace after keyword ENTITY.", token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken): + tokenValue = token.Value.lower() + + for keyword in cls.KEYWORDS: + if tokenValue == keyword.__KEYWORD__: + newToken = keyword(fromExistingToken=token) + parserState.NextState = DeclarativeRegion.stateDeclarativeRegion + parserState.PushState = cls.KEYWORDS[keyword] + parserState.NewToken = newToken + parserState.TokenMarker = newToken + return + + if tokenValue == "begin": + parserState.NewToken = BeginKeyword(fromExistingToken=token) + parserState.NewBlock = BeginBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = BeginBlock.stateSequentialRegion + return + elif tokenValue == "is": + parserState.NewToken = IsKeyword(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = DeclarativeRegion.stateDeclarativeRegion + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected declarations or keyword IS after sensitivity list.", token)
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/Structural/Architecture.html b/_modules/pyVHDLParser/Blocks/Structural/Architecture.html new file mode 100644 index 000000000..6ed65e38c --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/Structural/Architecture.html @@ -0,0 +1,393 @@ + + + + + + pyVHDLParser.Blocks.Structural.Architecture — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.Structural.Architecture

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators             import export
+
+from pyVHDLParser.Token               import LinebreakToken, WordToken, SpaceToken, CommentToken, MultiLineCommentToken, IndentationToken, SingleLineCommentToken, ExtendedIdentifier
+from pyVHDLParser.Token.Keywords      import ArchitectureKeyword, IsKeyword, OfKeyword, BoundaryToken, IdentifierToken
+from pyVHDLParser.Blocks              import BlockParserException, Block, CommentBlock, TokenToBlockParser
+from pyVHDLParser.Blocks.Common       import LinebreakBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Generic      import ConcurrentBeginBlock, ConcurrentDeclarativeRegion
+from pyVHDLParser.Blocks.Generic1     import EndBlock as EndBlockBase
+
+
+
[docs]@export +class EndBlock(EndBlockBase): + KEYWORD = ArchitectureKeyword + KEYWORD_IS_OPTIONAL = True + EXPECTED_NAME = KEYWORD.__KEYWORD__
+ + +
[docs]@export +class BeginBlock(ConcurrentBeginBlock): + END_BLOCK = EndBlock
+ + +
[docs]@export +class DeclarativeRegion(ConcurrentDeclarativeRegion): + BEGIN_BLOCK = BeginBlock + END_BLOCK = EndBlock
+ + +
[docs]@export +class NameBlock(Block): + @classmethod + def stateArchitectureKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace1 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException("Expected whitespace after keyword ARCHITECTURE.", token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateArchitectureName + return + elif isinstance(token, ExtendedIdentifier): + parserState.NextState = cls.stateArchitectureName + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected architecture name (identifier).", token) + + @classmethod + def stateArchitectureName(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace2 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + return + + raise BlockParserException("Expected whitespace after architecture name.", token) + + @classmethod + def stateWhitespace2(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken) and (token <= "of"): + parserState.NewToken = OfKeyword(fromExistingToken=token) + parserState.NextState = cls.stateOfKeyword + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected keyword IS after architecture name.", token) + + @classmethod + def stateOfKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace3 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace3 + return + + raise BlockParserException("Expected whitespace after keyword ARCHITECTURE.", token) + + @classmethod + def stateWhitespace3(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateEntityName + return + elif isinstance(token, ExtendedIdentifier): + parserState.NextState = cls.stateEntityName + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected architecture name (identifier).", token) + + @classmethod + def stateEntityName(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace4 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace4 + return + + raise BlockParserException("Expected whitespace after architecture name.", token) + + @classmethod + def stateWhitespace4(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken) and (token <= "is"): + parserState.NewToken = IsKeyword(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = DeclarativeRegion.stateDeclarativeRegion + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected keyword IS after architecture name.", token)
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/Structural/Block.html b/_modules/pyVHDLParser/Blocks/Structural/Block.html new file mode 100644 index 000000000..887a1a612 --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/Structural/Block.html @@ -0,0 +1,348 @@ + + + + + + pyVHDLParser.Blocks.Structural.Block — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.Structural.Block

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators                  import export
+
+from pyVHDLParser.Token                    import CharacterToken, SpaceToken, WordToken, LinebreakToken, IndentationToken
+from pyVHDLParser.Token.Keywords           import BoundaryToken, IdentifierToken, EndToken
+from pyVHDLParser.Token.Keywords           import SignalKeyword, ConstantKeyword, VariableKeyword, SharedKeyword, ProcessKeyword, AssertKeyword, BlockKeyword
+from pyVHDLParser.Token.Keywords           import IsKeyword, EndKeyword, BlockKeyword, BeginKeyword
+from pyVHDLParser.Blocks                   import Block, BlockParserException, TokenToBlockParser
+from pyVHDLParser.Blocks.Common            import LinebreakBlock, IndentationBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Comment           import SingleLineCommentBlock, MultiLineCommentBlock
+from pyVHDLParser.Blocks.Generic           import EndBlock as EndBlockBase, ConcurrentDeclarativeRegion, ConcurrentBeginBlock
+from pyVHDLParser.Blocks.List              import PortList
+from pyVHDLParser.Blocks.Reporting         import Assert
+from pyVHDLParser.Blocks.Sequential        import Process
+
+
+
[docs]@export +class EndBlock(EndBlockBase): + KEYWORD = BlockKeyword + EXPECTED_NAME = KEYWORD.__KEYWORD__
+ + +
[docs]@export +class BeginBlock(ConcurrentBeginBlock): + END_BLOCK = EndBlock
+ + +
[docs]@export +class DeclarativeRegion(ConcurrentDeclarativeRegion): + BEGIN_BLOCK = BeginBlock + END_BLOCK = EndBlock
+ + +
[docs]@export +class NameBlock(Block): + @classmethod + def stateBlockKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected whitespace after keyword " + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewBlock = NameBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.NewToken = LinebreakToken(fromExistingToken=token) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = NameBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = NameBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected block name (identifier)." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + if not isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewBlock = NameBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = NameBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.NewToken = LinebreakToken(fromExistingToken=token) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "/": + parserState.NewBlock = NameBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateBlockName + return + elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateBlockName(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected whitespace after keyword " + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewBlock = NameBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.NewToken = LinebreakToken(fromExistingToken=token) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = NameBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = NameBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NextState = cls.stateWhitespace2 + return + + raise BlockParserException(errorMessage, token) + + @classmethod + def stateWhitespace2(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected keyword IS after block name." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + if not isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewBlock = NameBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = NameBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = NameBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, WordToken) and (token <= "is"): + parserState.NewToken = IsKeyword(fromExistingToken=token) + parserState.NewBlock = NameBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.NextState = DeclarativeRegion.stateDeclarativeRegion + return + elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException(errorMessage, token)
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/Structural/Component.html b/_modules/pyVHDLParser/Blocks/Structural/Component.html new file mode 100644 index 000000000..0ceb17810 --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/Structural/Component.html @@ -0,0 +1,333 @@ + + + + + + pyVHDLParser.Blocks.Structural.Component — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.Structural.Component

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators                   import export
+
+from pyVHDLParser.Token                     import LinebreakToken, WordToken, SpaceToken, CommentToken, MultiLineCommentToken, IndentationToken, SingleLineCommentToken, ExtendedIdentifier
+from pyVHDLParser.Token.Keywords            import ComponentKeyword, IsKeyword, EndKeyword, GenericKeyword, PortKeyword, UseKeyword, BeginKeyword
+from pyVHDLParser.Token.Keywords            import BoundaryToken, IdentifierToken
+from pyVHDLParser.Blocks                    import BlockParserException, Block, CommentBlock, TokenToBlockParser
+from pyVHDLParser.Blocks.Common             import LinebreakBlock, IndentationBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Generic            import EndBlock as EndBlockBase
+
+
+
[docs]@export +class NameBlock(Block): + KEYWORDS = None + + @classmethod + def __cls_init__(cls): + from pyVHDLParser.Blocks.List import GenericList, PortList + + cls.KEYWORDS = { + # Keyword Transition + GenericKeyword: GenericList.OpenBlock.stateGenericKeyword, + PortKeyword: PortList.OpenBlock.statePortKeyword + } + + @classmethod + def stateComponentKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace1 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException("Expected whitespace after keyword COMPONENT.", token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateComponentName + return + elif isinstance(token, ExtendedIdentifier): + parserState.NextState = cls.stateComponentName + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = CommentBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected component name (identifier).", token) + + @classmethod + def stateComponentName(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace2 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + return + + raise BlockParserException("Expected whitespace after component name.", token) + + @classmethod + def stateWhitespace2(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken) and (token <= "is"): + parserState.NewToken = IsKeyword(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateDeclarativeRegion + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected keyword IS after component name.", token) + + @classmethod + def stateDeclarativeRegion(cls, parserState: TokenToBlockParser): + + token = parserState.Token + if isinstance(token, SpaceToken): + blockType = IndentationBlock if isinstance(token, IndentationToken) else WhitespaceBlock + parserState.NewBlock = blockType(parserState.LastBlock, token) + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = block(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, WordToken): + tokenValue = token.Value.lower() + + for keyword in cls.__KEYWORDS__: + if tokenValue == keyword.__KEYWORD__: + newToken = keyword(fromExistingToken=token) + parserState.PushState = cls.__KEYWORDS__[keyword] + parserState.NewToken = newToken + parserState.TokenMarker = newToken + return + + if tokenValue == "end": + parserState.NewToken = EndKeyword(fromExistingToken=token) + parserState.NextState = EndBlock.stateEndKeyword + return + + raise BlockParserException( + "Expected one of these keywords: END, {keywords}. Found: '{tokenValue}'.".format( + keywords=", ".join( + [kw.__KEYWORD__.upper() for kw in cls.__KEYWORDS__] + ), + tokenValue=token.Value + ), token)
+ + +
[docs]@export +class EndBlock(EndBlockBase): + KEYWORD = ComponentKeyword + KEYWORD_IS_OPTIONAL = False + EXPECTED_NAME = KEYWORD.__KEYWORD__
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/Structural/Configuration.html b/_modules/pyVHDLParser/Blocks/Structural/Configuration.html new file mode 100644 index 000000000..ce0313c37 --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/Structural/Configuration.html @@ -0,0 +1,344 @@ + + + + + + pyVHDLParser.Blocks.Structural.Configuration — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.Structural.Configuration

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators                   import export
+
+from pyVHDLParser.Token                     import LinebreakToken, WordToken, SpaceToken, CommentToken, MultiLineCommentToken, IndentationToken, SingleLineCommentToken, ExtendedIdentifier
+from pyVHDLParser.Token.Keywords            import ConfigurationKeyword, IsKeyword, EndKeyword, GenericKeyword, PortKeyword, UseKeyword, BeginKeyword
+from pyVHDLParser.Token.Keywords            import BoundaryToken, IdentifierToken
+from pyVHDLParser.Blocks                    import BlockParserException, Block, CommentBlock, TokenToBlockParser
+from pyVHDLParser.Blocks.Common             import LinebreakBlock, IndentationBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Generic            import ConcurrentBeginBlock, EndBlock as EndBlockBase
+
+
+
[docs]@export +class NameBlock(Block): + KEYWORDS = None + + @classmethod + def __cls_init__(cls): + from pyVHDLParser.Blocks.Reference import Use + from pyVHDLParser.Blocks.List import GenericList, PortList + + cls.KEYWORDS = { + # Keyword Transition + UseKeyword: Use.StartBlock.stateUseKeyword, + GenericKeyword: GenericList.OpenBlock.stateGenericKeyword, + PortKeyword: PortList.OpenBlock.statePortKeyword + } + + @classmethod + def stateConfigurationKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace1 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException("Expected whitespace after keyword CONFIGURATION.", token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateConfigurationName + return + elif isinstance(token, ExtendedIdentifier): + parserState.NextState = cls.stateConfigurationName + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = CommentBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected configuration name (identifier).", token) + + @classmethod + def stateConfigurationName(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace2 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + return + + raise BlockParserException("Expected whitespace after configuration name.", token) + + @classmethod + def stateWhitespace2(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken) and (token <= "is"): + parserState.NewToken = IsKeyword(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateDeclarativeRegion + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected keyword IS after configuration name.", token) + + @classmethod + def stateDeclarativeRegion(cls, parserState: TokenToBlockParser): + + token = parserState.Token + if isinstance(token, SpaceToken): + blockType = IndentationBlock if isinstance(token, IndentationToken) else WhitespaceBlock + parserState.NewBlock = blockType(parserState.LastBlock, token) + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = block(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, WordToken): + tokenValue = token.Value.lower() + + for keyword in cls.KEYWORDS: + if tokenValue == keyword.KEYWORDS: + newToken = keyword(fromExistingToken=token) + parserState.PushState = cls.KEYWORDS[keyword] + parserState.NewToken = newToken + parserState.TokenMarker = newToken + return + + if tokenValue == "begin": + parserState.NewToken = BeginKeyword(fromExistingToken=token) + parserState.NextState = BeginBlock.stateBeginKeyword + return + elif tokenValue == "end": + parserState.NewToken = EndKeyword(fromExistingToken=token) + parserState.NextState = EndBlock.stateEndKeyword + return + + raise BlockParserException( + "Expected one of these keywords: END, {keywords}. Found: '{tokenValue}'.".format( + keywords=", ".join( + [kw.__KEYWORD__.upper() for kw in cls.KEYWORDS] + ), + tokenValue=token.Value + ), token)
+ + +
[docs]@export +class EndBlock(EndBlockBase): + KEYWORD = ConfigurationKeyword + KEYWORD_IS_OPTIONAL = True + EXPECTED_NAME = KEYWORD.__KEYWORD__
+ + +
[docs]@export +class BeginBlock(ConcurrentBeginBlock): + END_BLOCK = EndBlock
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/Structural/Entity.html b/_modules/pyVHDLParser/Blocks/Structural/Entity.html new file mode 100644 index 000000000..b30f523cb --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/Structural/Entity.html @@ -0,0 +1,310 @@ + + + + + + pyVHDLParser.Blocks.Structural.Entity — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.Structural.Entity

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators         import export
+
+from pyVHDLParser.Token           import LinebreakToken, WordToken, SpaceToken, CommentToken, MultiLineCommentToken, IndentationToken, SingleLineCommentToken, ExtendedIdentifier
+from pyVHDLParser.Token.Keywords  import EntityKeyword, IsKeyword, GenericKeyword, PortKeyword
+from pyVHDLParser.Token.Keywords  import BoundaryToken, IdentifierToken
+from pyVHDLParser.Blocks          import BlockParserException, Block, CommentBlock, TokenToBlockParser
+from pyVHDLParser.Blocks.Common   import LinebreakBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Generic  import ConcurrentBeginBlock, ConcurrentDeclarativeRegion
+from pyVHDLParser.Blocks.Generic1 import EndBlock as EndBlockBase
+
+
+
[docs]@export +class EndBlock(EndBlockBase): + KEYWORD = EntityKeyword + KEYWORD_IS_OPTIONAL = True + EXPECTED_NAME = KEYWORD.__KEYWORD__
+ + +
[docs]@export +class BeginBlock(ConcurrentBeginBlock): + END_BLOCK = EndBlock
+ + +
[docs]@export +class DeclarativeRegion(ConcurrentDeclarativeRegion): + BEGIN_BLOCK = BeginBlock + END_BLOCK = EndBlock + + @classmethod + def __cls_init__(cls): + super().__cls_init__() + + from pyVHDLParser.Blocks.List.GenericList import OpenBlock as GenericListOpenBlock + from pyVHDLParser.Blocks.List.PortList import OpenBlock as PortListOpenBlock + + cls.KEYWORDS.update({ + # Keyword Transition + GenericKeyword: GenericListOpenBlock.stateGenericKeyword, + PortKeyword: PortListOpenBlock.statePortKeyword + })
+ + +
[docs]@export +class NameBlock(Block): + @classmethod + def stateEntityKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace1 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + return + + raise BlockParserException("Expected whitespace after keyword ENTITY.", token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateEntityName + return + elif isinstance(token, ExtendedIdentifier): + parserState.NextState = cls.stateEntityName + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected entity name (identifier).", token) + + @classmethod + def stateEntityName(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace2 + return + elif isinstance(token, (LinebreakToken, CommentToken)): + block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = block(parserState.NewBlock, token) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + return + + raise BlockParserException("Expected whitespace after entity name.", token) + + @classmethod + def stateWhitespace2(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, WordToken) and (token <= "is"): + parserState.NewToken = IsKeyword(fromExistingToken=token) + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = DeclarativeRegion.stateDeclarativeRegion + return + elif isinstance(token, LinebreakToken): + if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, token) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, CommentToken): + parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + _ = CommentBlock(parserState.NewBlock, token) + parserState.TokenMarker = None + return + elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): + return + elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise BlockParserException("Expected keyword IS after entity name.", token)
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/Type/ResolutionIndication.html b/_modules/pyVHDLParser/Blocks/Type/ResolutionIndication.html new file mode 100644 index 000000000..c0e5a8cd9 --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/Type/ResolutionIndication.html @@ -0,0 +1,188 @@ + + + + + + pyVHDLParser.Blocks.Type.ResolutionIndication — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.Type.ResolutionIndication

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators import export
+
+from pyVHDLParser.Blocks import Block
+
+
+
[docs]@export +class SimpleResolutionIndicationBlock(Block): + def stateResolutionFunction(self): + pass
+ + +
[docs]@export +class ArrayResolutionIndicationBlock(Block): + pass
+ + +
[docs]@export +class RecordResolutionIndicationBlock(Block): + def stateOpeningParentesis(self): + pass
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/Type/Subtype.html b/_modules/pyVHDLParser/Blocks/Type/Subtype.html new file mode 100644 index 000000000..eacb422ae --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/Type/Subtype.html @@ -0,0 +1,591 @@ + + + + + + pyVHDLParser.Blocks.Type.Subtype — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.Type.Subtype

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators         import export
+
+from pyVHDLParser.Token           import CharacterToken, LinebreakToken, SpaceToken, WordToken
+from pyVHDLParser.Token.Keywords  import BoundaryToken, IdentifierToken, VariableAssignmentKeyword, EndToken
+from pyVHDLParser.Blocks          import Block, TokenToBlockParser
+from pyVHDLParser.Blocks.Common   import LinebreakBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Comment  import SingleLineCommentBlock, MultiLineCommentBlock
+
+
+
[docs]@export +class SubtypeBlock(Block): + @classmethod + def stateSubtypeKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected whitespace after keyword SUBTYPE." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.NewToken = LinebreakToken(fromExistingToken=token) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace1 + return + + raise TokenParserException(errorMessage, token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected subtype name (identifier)." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + if not isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateSubtypeName + return + elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise TokenParserException(errorMessage, token) + + @classmethod + def stateSubtypeName(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected ';' after library name." + if isinstance(token, CharacterToken): + if token == ":": + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateColon1 + return + elif token == "\n": + parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.NewToken = LinebreakToken(fromExistingToken=token) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NextState = cls.stateWhitespace2 + return + + raise TokenParserException(errorMessage, token) + + @classmethod + def stateWhitespace2(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected subtype name (identifier)." + if isinstance(token, CharacterToken): + if token == ":": + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateColon1 + return + if token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + if not isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateColon1() + return + elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise TokenParserException(errorMessage, token) + + @classmethod + def stateColon1(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected typemark or whitespace after ':'." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.NewToken = LinebreakToken(fromExistingToken=token) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace3 + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace3 + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace3 + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace3 + return + elif isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateTypeMarkName + return + + raise TokenParserException(errorMessage, token) + + @classmethod + def stateWhitespace3(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected subtype name (identifier)." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + if not isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateTypeMarkName + return + elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise TokenParserException(errorMessage, token) + + @classmethod + def stateTypeMarkName(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected ':=' or whitespace after type mark." + if isinstance(token, CharacterToken): + if token == ":": + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.statePossibleVariableAssignment + return + elif token == "\n": + parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.NewToken = LinebreakToken(fromExistingToken=token) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace4 + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace4 + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace4 + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NextState = cls.stateWhitespace4 + return + + raise TokenParserException(errorMessage, token) + + @classmethod + def stateWhitespace4(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected ':=' after type mark." + if isinstance(token, CharacterToken): + if token == ":": + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.statePossibleVariableAssignment + return + elif token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + if not isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise TokenParserException(errorMessage, token) + + @classmethod + def statePossibleVariableAssignment(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken) and (token == "="): + parserState.NewToken = VariableAssignmentKeyword(parserState.TokenMarker) + parserState.TokenMarker = parserState.NewToken + parserState.NextState = cls.stateVariableAssignment + return + + raise NotImplementedError("State=PossibleCommentStart: {0!r}".format(token)) + + @classmethod + def stateVariableAssignment(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected ':=' or whitespace after type mark." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.NewToken = LinebreakToken(fromExistingToken=token) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace5 + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace5 + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace5 + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NextState = cls.stateWhitespace5 + return + + raise TokenParserException(errorMessage, token) + + @classmethod + def stateWhitespace5(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected expression after ':='." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + if not isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, WordToken): + parserState.NextState = cls.stateExpressionEnd + return + elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise TokenParserException(errorMessage, token) + + @classmethod + def stateExpressionEnd(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected ';'." + if isinstance(token, CharacterToken): + if token == ";": + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif token == "-": + parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + + raise TokenParserException(errorMessage, token)
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/Type/SubtypeIndication.html b/_modules/pyVHDLParser/Blocks/Type/SubtypeIndication.html new file mode 100644 index 000000000..285ddd74b --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/Type/SubtypeIndication.html @@ -0,0 +1,186 @@ + + + + + + pyVHDLParser.Blocks.Type.SubtypeIndication — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.Type.SubtypeIndication

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators import export
+
+from pyVHDLParser.Blocks import Block
+
+
+
[docs]@export +class SubtypeIndicationBlock(Block): + pass
+ + +
[docs]@export +class ArrayConstrainedSubtypeIndicationBlock(Block): + pass
+ + +
[docs]@export +class RecordConstrainedSubtypeIndicationBlock(Block): + pass
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Blocks/Type/Type.html b/_modules/pyVHDLParser/Blocks/Type/Type.html new file mode 100644 index 000000000..cf4c908b6 --- /dev/null +++ b/_modules/pyVHDLParser/Blocks/Type/Type.html @@ -0,0 +1,591 @@ + + + + + + pyVHDLParser.Blocks.Type.Type — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Blocks.Type.Type

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators         import export
+
+from pyVHDLParser.Token           import CharacterToken, LinebreakToken, SpaceToken, WordToken
+from pyVHDLParser.Token.Keywords  import BoundaryToken, IdentifierToken, VariableAssignmentKeyword, EndToken
+from pyVHDLParser.Blocks          import Block, TokenToBlockParser
+from pyVHDLParser.Blocks.Common   import LinebreakBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Comment  import SingleLineCommentBlock, MultiLineCommentBlock
+
+
+
[docs]@export +class TypeBlock(Block): + @classmethod + def stateTypeKeyword(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected whitespace after keyword TYPE." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.NewToken = LinebreakToken(fromExistingToken=token) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace1 + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace1 + return + + raise TokenParserException(errorMessage, token) + + @classmethod + def stateWhitespace1(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected type name (identifier)." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + if not isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateTypeName + return + elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise TokenParserException(errorMessage, token) + + @classmethod + def stateTypeName(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected ';' after library name." + if isinstance(token, CharacterToken): + if token == ":": + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateColon1 + return + elif token == "\n": + parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.NewToken = LinebreakToken(fromExistingToken=token) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace2 + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NextState = cls.stateWhitespace2 + return + + raise TokenParserException(errorMessage, token) + + @classmethod + def stateWhitespace2(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected type name (identifier)." + if isinstance(token, CharacterToken): + if token == ":": + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateColon1 + return + if token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + if not isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateColon1() + return + elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise TokenParserException(errorMessage, token) + + @classmethod + def stateColon1(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected typemark or whitespace after ':'." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.NewToken = LinebreakToken(fromExistingToken=token) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace3 + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace3 + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace3 + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.stateWhitespace3 + return + elif isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateTypeMarkName + return + + raise TokenParserException(errorMessage, token) + + @classmethod + def stateWhitespace3(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected type name (identifier)." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + if not isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, WordToken): + parserState.NewToken = IdentifierToken(fromExistingToken=token) + parserState.NextState = cls.stateTypeMarkName + return + elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise TokenParserException(errorMessage, token) + + @classmethod + def stateTypeMarkName(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected ':=' or whitespace after type mark." + if isinstance(token, CharacterToken): + if token == ":": + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.statePossibleVariableAssignment + return + elif token == "\n": + parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.NewToken = LinebreakToken(fromExistingToken=token) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace4 + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace4 + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace4 + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NextState = cls.stateWhitespace4 + return + + raise TokenParserException(errorMessage, token) + + @classmethod + def stateWhitespace4(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected ':=' after type mark." + if isinstance(token, CharacterToken): + if token == ":": + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NextState = cls.statePossibleVariableAssignment + return + elif token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + if not isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise TokenParserException(errorMessage, token) + + @classmethod + def statePossibleVariableAssignment(cls, parserState: TokenToBlockParser): + token = parserState.Token + if isinstance(token, CharacterToken) and (token == "="): + parserState.NewToken = VariableAssignmentKeyword(parserState.TokenMarker) + parserState.TokenMarker = parserState.NewToken + parserState.NextState = cls.stateVariableAssignment + return + + raise NotImplementedError("State=PossibleCommentStart: {0!r}".format(token)) + + @classmethod + def stateVariableAssignment(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected ':=' or whitespace after type mark." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.NewToken = LinebreakToken(fromExistingToken=token) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace5 + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace5 + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.NextState = cls.stateWhitespace5 + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, SpaceToken): + parserState.NextState = cls.stateWhitespace5 + return + + raise TokenParserException(errorMessage, token) + + @classmethod + def stateWhitespace5(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected expression after ':='." + if isinstance(token, CharacterToken): + if token == "\n": + parserState.NewToken = LinebreakToken(fromExistingToken=token) + if not isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) + _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) + else: + parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + parserState.PushState = LinebreakBlock.stateLinebreak + return + elif token == "-": + parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif isinstance(token, WordToken): + parserState.NextState = cls.stateExpressionEnd + return + elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): + parserState.NewToken = BoundaryToken(fromExistingToken=token) + parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) + parserState.TokenMarker = None + return + + raise TokenParserException(errorMessage, token) + + @classmethod + def stateExpressionEnd(cls, parserState: TokenToBlockParser): + token = parserState.Token + errorMessage = "Expected ';'." + if isinstance(token, CharacterToken): + if token == ";": + parserState.NewToken = EndToken(fromExistingToken=token) + parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) + parserState.Pop() + return + elif token == "-": + parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + elif token == "/": + parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) + parserState.TokenMarker = None + parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart + parserState.TokenMarker = token + return + + raise TokenParserException(errorMessage, token)
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/CLI/VHDLParser.html b/_modules/pyVHDLParser/CLI/VHDLParser.html new file mode 100644 index 000000000..6823f09e9 --- /dev/null +++ b/_modules/pyVHDLParser/CLI/VHDLParser.html @@ -0,0 +1,377 @@ + + + + + + pyVHDLParser.CLI.VHDLParser — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+
    +
  • »
  • +
  • Module code »
  • +
  • pyVHDLParser.CLI.VHDLParser
  • +
  • +
  • +
+
+
+ +
+
+ +

Source code for pyVHDLParser.CLI.VHDLParser

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from argparse       import RawDescriptionHelpFormatter
+from platform       import system as platform_system
+from textwrap       import dedent, wrap
+from typing         import NoReturn
+
+from pyTooling.Exceptions             import ExceptionBase
+from pyTooling.Decorators             import export
+from pyTooling.TerminalUI             import LineTerminal, Severity
+from pyAttributes.ArgParseAttributes  import ArgParseMixin, DefaultAttribute, CommandAttribute, ArgumentAttribute, CommonSwitchArgumentAttribute
+
+from pyVHDLParser                     import __author__, __license__, __version__, __copyright__
+from pyVHDLParser.Blocks              import MetaBlock
+
+from pyVHDLParser.CLI.Token           import TokenStreamHandlers
+from pyVHDLParser.CLI.Block           import BlockStreamHandlers
+from pyVHDLParser.CLI.Group           import GroupStreamHandlers
+from pyVHDLParser.CLI.CodeDOM         import CodeDOMHandlers
+from pyVHDLParser.CLI.ANTLR           import ANTLRHandlers
+
+
+
[docs]@export +def printImportError(ex) -> NoReturn: + # TODO: use pyTooling Platform + platform = platform_system() + print("IMPORT ERROR: One or more Python packages are not available in your environment.") + print("Missing package: '{0}'\n".format(ex.name)) + if platform == "Windows": + print("Run: 'py.exe -3 -m pip install -r requirements.txt'\n") + elif platform == "Linux": + print("Run: 'python3 -m pip install -r requirements.txt'\n") + + exit(1)
+ + +
[docs]@export +class Application(LineTerminal, ArgParseMixin, TokenStreamHandlers, BlockStreamHandlers, GroupStreamHandlers, CodeDOMHandlers, ANTLRHandlers): + HeadLine = "pyVHDLParser - Test Application" + + # load platform information (Windows, Linux, Darwin, ...) + # TODO: use pyTooling Platform + __PLATFORM = platform_system() + +
[docs] def __init__(self): + super().__init__() + + # Late-initialize Block classes + # -------------------------------------------------------------------------- + for block in MetaBlock.BLOCKS: + try: + block.__cls_init__() + except AttributeError: + pass + + # Call the constructor of the ArgParseMixin + # -------------------------------------------------------------------------- + textWidth = min(self.Width, 160) + description = dedent("""\ + Test application to test pyVHDLParser capabilities. + """) + epilog = "\n".join(wrap(dedent("""\ + pyVHDLParser is a streaming parser to read and understand VHDL code equipped with comments for documentation extraction. + """), textWidth, replace_whitespace=False)) + + class HelpFormatter(RawDescriptionHelpFormatter): + def __init__(self, *args, **kwargs): + kwargs['max_help_position'] = 30 + kwargs['width'] = textWidth + super().__init__(*args, **kwargs) + + ArgParseMixin.__init__( + self, + description=description, + epilog=epilog, + formatter_class=HelpFormatter, + add_help=False + ) + + # Change error and warning reporting + # -------------------------------------------------------------------------- + self._LOG_MESSAGE_FORMAT__[Severity.Fatal] = "{DARK_RED}[FATAL] {message}{NOCOLOR}" + self._LOG_MESSAGE_FORMAT__[Severity.Error] = "{RED}[ERROR] {message}{NOCOLOR}" + self._LOG_MESSAGE_FORMAT__[Severity.Warning] = "{YELLOW}[WARNING] {message}{NOCOLOR}" + self._LOG_MESSAGE_FORMAT__[Severity.Normal] = "{GRAY}{message}{NOCOLOR}"
+ + # class properties + # ============================================================================ + @property + def Platform(self): + return self.__PLATFORM + + def PrintHeadline(self): + self.WriteNormal(dedent("""\ + {HEADLINE}{line} + {headline: ^80s} + {line}""").format(line="=" * 80, headline=self.HeadLine, **LineTerminal.Foreground)) + + # ============================================================================ + # Common commands + # ============================================================================ + # common arguments valid for all commands + # ---------------------------------------------------------------------------- + @CommonSwitchArgumentAttribute("-d", "--debug", dest="debug", help="Enable debug mode.") + @CommonSwitchArgumentAttribute("-v", "--verbose", dest="verbose", help="Print out detailed messages.") + @CommonSwitchArgumentAttribute("-q", "--quiet", dest="quiet", help="Reduce messages to a minimum.") + def Run(self): + ArgParseMixin.Run(self) + + @DefaultAttribute() + def HandleDefault(self, _): + self.PrintHeadline() + self.MainParser.print_help() + + self.WriteNormal("") + self.exit() + + # ---------------------------------------------------------------------------- + # create the sub-parser for the "help" command + # ---------------------------------------------------------------------------- + @CommandAttribute("help", help="Display help page(s) for the given command name.") + @ArgumentAttribute(metavar="Command", dest="Command", type=str, nargs="?", help="Print help page(s) for a command.") + def HandleHelp(self, args): + self.PrintHeadline() + + if args.Command is None: + self.MainParser.print_help() + elif args.Command == "help": + self.WriteError("This is a recursion ...") + else: + try: + self.SubParsers[args.Command].print_help() + except KeyError: + self.WriteError("Command {0} is unknown.".format(args.Command)) + + self.WriteNormal("") + self.exit() + + # ---------------------------------------------------------------------------- + # create the sub-parser for the "version" command + # ---------------------------------------------------------------------------- + @CommandAttribute("version", help="Display tool and version information.") + def HandleInfo(self, args): + self.PrintHeadline() + + copyrights = __copyright__.split("\n", 1) + self.WriteNormal("Copyright: {0}".format(copyrights[0])) + for copyright in copyrights[1:]: + self.WriteNormal(" {0}".format(copyright)) + self.WriteNormal("License: {0}".format(__license__)) + authors = __author__.split(", ") + self.WriteNormal("Authors: {0}".format(authors[0])) + for author in authors[1:]: + self.WriteNormal(" {0}".format(author)) + self.WriteNormal("Version: {0}".format(__version__)) + self.exit()
+ + +# main program +def main(): # mccabe:disable=MC0001 + """This is the entry point for pyVHDLParser written as a function. + + 1. It extracts common flags from the script's arguments list, before :py:class:`~argparse.ArgumentParser` is fully loaded. + 2. It creates an instance of VHDLParser and hands over to a class based execution. + All is wrapped in a big ``try..except`` block to catch every unhandled exception. + 3. Shutdown the script and return its exit code. + """ + from sys import argv as sys_argv + + try: + # handover to a class instance + app = Application() # debug, verbose, quiet) + app.Configure( + verbose="-v" in sys_argv, + debug="-d" in sys_argv, + quiet="-q" in sys_argv + ) + app.Run() + app.exit() + + # except (CommonException, ConfigurationException) as ex: + # print("{RED}ERROR:{NOCOLOR} {message}".format(message=ex.message, **Init.Foreground)) + # cause = ex.__cause__ + # if isinstance(cause, FileNotFoundError): + # print("{YELLOW} FileNotFound:{NOCOLOR} '{cause}'".format(cause=str(cause), **Init.Foreground)) + # elif isinstance(cause, NotADirectoryError): + # print("{YELLOW} NotADirectory:{NOCOLOR} '{cause}'".format(cause=str(cause), **Init.Foreground)) + # elif isinstance(cause, ParserException): + # print("{YELLOW} ParserException:{NOCOLOR} {cause}".format(cause=str(cause), **Init.Foreground)) + # cause = cause.__cause__ + # if cause is not None: + # print("{YELLOW} {name}:{NOCOLOR} {cause}".format(name=cause.__class__.__name__, cause= str(cause), **Init.Foreground)) + # + # if not (verbose or debug): + # print() + # print("{CYAN} Use '-v' for verbose or '-d' for debug to print out extended messages.{NOCOLOR}".format(**Init.Foreground)) + # LineTerminal.exit(1) + + except ExceptionBase as ex: + LineTerminal.printExceptionBase(ex) + except NotImplementedError as ex: + LineTerminal.printNotImplementedError(ex) + # except ImportError as ex: + # printImportError(ex) + except Exception as ex: + LineTerminal.printException(ex) + + +# entry point +if __name__ == "__main__": + LineTerminal.versionCheck((3,8,0)) + main() +
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/DocumentModel.html b/_modules/pyVHDLParser/DocumentModel.html new file mode 100644 index 000000000..53a84fa3a --- /dev/null +++ b/_modules/pyVHDLParser/DocumentModel.html @@ -0,0 +1,320 @@ + + + + + + pyVHDLParser.DocumentModel — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+
    +
  • »
  • +
  • Module code »
  • +
  • pyVHDLParser.DocumentModel
  • +
  • +
  • +
+
+
+ +
+
+ +

Source code for pyVHDLParser.DocumentModel

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pathlib                              import Path
+from typing                               import List, Union
+
+from pyTooling.Decorators                 import export
+from pyVHDLModel                          import Document as DocumentModel
+
+from pyVHDLParser.Base                    import ParserException
+from pyVHDLParser.Token.Parser            import Tokenizer
+from pyVHDLParser.Blocks                  import TokenToBlockParser, BlockParserException
+from pyVHDLParser.Groups                  import StartOfDocumentGroup, EndOfDocumentGroup, BlockToGroupParser, Group, GroupParserException
+from pyVHDLParser.Groups.Comment          import WhitespaceGroup
+from pyVHDLParser.Groups.DesignUnit       import ContextGroup, EntityGroup, ArchitectureGroup, PackageBodyGroup, PackageGroup
+from pyVHDLParser.Groups.Reference        import LibraryGroup, UseGroup
+from pyVHDLParser.DocumentModel.Reference import LibraryClause, PackageReference
+
+
+
[docs]@export +class DOMParserException(ParserException): +
[docs] def __init__(self, message, group): + super().__init__(message) + self._group = group
+ + +
[docs]@export +class Document(DocumentModel): + __libraries: List[LibraryClause] + __uses: List[PackageReference] + +
[docs] def __init__(self, file: Union[Path, str]): # FIXME: parameter type + if isinstance(file, Path): + filePath = file + elif isinstance(file, str): + filePath = Path(file) + else: + raise ValueError("Unsupported type for parameter 'file'.") + + super().__init__(filePath) + + self.__libraries = [] + self.__uses = []
+ + def Parse(self, content=None): # FIXME: parameter type + if content is None: + if not self._path.exists(): + raise DOMParserException("File '{0!s}' does not exist.".format(self._path))\ + from FileNotFoundError(str(self._path)) + + with self._path.open('r') as fileHandle: + content = fileHandle.read() + + vhdlTokenStream = Tokenizer.GetVHDLTokenizer(content) + vhdlBlockStream = TokenToBlockParser(vhdlTokenStream)() + vhdlGroupStream = BlockToGroupParser(vhdlBlockStream)() + try: + groups = [group for group in vhdlGroupStream] + except BlockParserException as ex: + raise DOMParserException("Error while parsing and indexing the source code.", ex.Group) from ex + except GroupParserException as ex: + raise DOMParserException("Unexpected ParserException.", ex.Block) from ex + except ParserException as ex: + raise DOMParserException("Unexpected ParserException.", ex.Position) from ex + except Exception as ex: + raise DOMParserException("Unexpected exception.", None) from ex + + firstGroup = groups[0] + lastGroup = groups[-1] + + if not isinstance(firstGroup, StartOfDocumentGroup): + raise DOMParserException("Expected group is not a StartOfDocumentGroup.", firstGroup) + elif not isinstance(lastGroup, EndOfDocumentGroup): + raise DOMParserException("Expected group is not an EndOfDocumentGroup.", lastGroup) + + # run recursively (node, group) + self.stateParse(self, firstGroup) + + @classmethod + def stateParse(cls, document, startOfDocumentGroup: Group): + from pyVHDLParser.DocumentModel.Reference import LibraryClause as LibraryModel, PackageReference as UseModel + from pyVHDLParser.DocumentModel.DesignUnit.Context import Context as ContextModel + from pyVHDLParser.DocumentModel.DesignUnit.Entity import Entity as EntityModel + from pyVHDLParser.DocumentModel.DesignUnit.Architecture import Architecture as ArchitectureModel + from pyVHDLParser.DocumentModel.DesignUnit.Package import Package as PackageModel + from pyVHDLParser.DocumentModel.DesignUnit.PackageBody import PackageBody as PackageBodyModel + + GROUP_TO_MODEL = { + LibraryGroup: LibraryModel, + UseGroup: UseModel, + ContextGroup: ContextModel, + EntityGroup: EntityModel, + ArchitectureGroup: ArchitectureModel, + PackageGroup: PackageModel, + PackageBodyGroup: PackageBodyModel, + # ConfigurationModel + } + + for subGroup in startOfDocumentGroup.GetSubGroups(): + if isinstance(subGroup, (WhitespaceGroup)): + pass + for group in GROUP_TO_MODEL: + # TODO: compare to a direct dictionary match with exception fallback on whitespace + if isinstance(subGroup, group): + GROUP_TO_MODEL[group].stateParse(document, subGroup) + break + + def AddLibrary(self, library): # FIXME: parameter type + self.__libraries.append(library) + + def AddUse(self, use): # FIXME: parameter type + self.__uses.append(use) + + @property + def Libraries(self): + return self.__libraries + + @property + def Uses(self): + return self.__uses + + def AddContext(self, context): # FIXME: parameter type + self._contexts.append(context) + + def AddEntity(self, entity): # FIXME: parameter type + self._entities.append(entity) + + def AddArchitecture(self, architecture): # FIXME: parameter type + self._architectures.append(architecture) + + def AddPackage(self, package): # FIXME: parameter type + self._packages.append(package) + + def AddPackageBody(self, packageBody): # FIXME: parameter type + self._packageBodies.append(packageBody) + + def Print(self, indent: int=0): + _indent = " " * indent + if len(self.__libraries) > 0: + for library in self.__libraries: + print("{indent}-- unused LIBRARY {lib};".format(indent=_indent, lib=library)) + if len(self.__uses) > 0: + for use in self.__uses: + print("{indent}-- unused USE {lib}.{pack}.{obj};".format(indent=_indent, lib=use.Library, pack=use.Package, obj=use.Item)) + print() + for entity in self._entities: + entity.Print() + print() + for architecture in self._architectures: + architecture.Print() + print() + for package in self._packages: + package.Print() + print() + for packageBody in self._packageBodies: + packageBody.Print()
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/DocumentModel/DesignUnit/Architecture.html b/_modules/pyVHDLParser/DocumentModel/DesignUnit/Architecture.html new file mode 100644 index 000000000..6cef567d9 --- /dev/null +++ b/_modules/pyVHDLParser/DocumentModel/DesignUnit/Architecture.html @@ -0,0 +1,258 @@ + + + + + + pyVHDLParser.DocumentModel.DesignUnit.Architecture — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.DocumentModel.DesignUnit.Architecture

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators                   import export
+from typing                                 import List
+
+from pyVHDLModel.DesignUnit                 import Architecture as ArchitectureVHDLModel
+
+from pyVHDLParser.Token.Keywords            import IdentifierToken
+from pyVHDLParser.Blocks                    import BlockParserException
+from pyVHDLParser.Blocks.Object.Constant    import ConstantDeclarationBlock
+from pyVHDLParser.Blocks.Structural         import Architecture as ArchitectureBlocks
+from pyVHDLParser.Groups                    import BlockToGroupParser
+from pyVHDLParser.DocumentModel.Reference   import LibraryClause, PackageReference
+
+
+DEBUG = True
+
+
[docs]@export +class Architecture(ArchitectureVHDLModel): +
[docs] def __init__(self, architectureName, entityName): + super().__init__() + self._name = architectureName + self._entity = entityName
+ + @classmethod + def stateParse(cls, parserState: BlockToGroupParser): #document, group): + # cls.stateParseArchitectureName(parserState) + # + # for block in parserState.GroupIterator: + # if isinstance(block, Constant.ConstantBlock): + # raise NotImplementedError() + # # elif isinstance(block, ArchitectureBlock.ConcurrentBeginBlock): + # # raise NotImplementedError() + # elif isinstance(block, ArchitectureBlock.EndBlock): + # break + # else: + # raise BlockParserException("", None) + + parserState.Pop() + # parserState.CurrentBlock = None + + @classmethod + def stateParseArchitectureName(cls, parserState: BlockToGroupParser): #document, group): + assert isinstance(parserState.CurrentGroup, ArchitectureBlock.NameBlock) + + tokenIterator = iter(parserState) + + # iterate architetures NameBlock to find the architecture name + for token in tokenIterator: + if isinstance(token, IdentifierToken): + architectureName = token.Value + break + else: + raise BlockParserException("", None) # FIXME: change to DOMParserException + + for token in tokenIterator: + if isinstance(token, IdentifierToken): + entityName = token.Value + break + else: + raise BlockParserException("", None) # FIXME: change to DOMParserException + + oldNode = parserState.CurrentNode + architecture = cls(architectureName, entityName) + + parserState.CurrentNode.AddArchitecture(architecture) + parserState.CurrentNode = architecture + parserState.CurrentNode.AddLibraryReferences(oldNode.Libraries) + parserState.CurrentNode.AddUses(oldNode.PackageReferences) + + oldNode.Libraries.clear() + oldNode.PackageReferences.clear() + + def AddLibraries(self, libraries): + for library in libraries: + self._libraryReferences.append(library) + + def AddUses(self, uses): + for use in uses: + self._packageReferences.append(use) + + + def Print(self, indent=0): + indentation = " "*indent + for lib in self._libraryReferences: + print("{indent}{DARK_CYAN}LIBRARY{NOCOLOR} {GREEN}{lib}{NOCOLOR};".format(indent=indentation, lib=lib, **Console.Foreground)) + for lib, pack, obj in self._packageReferences: + print("{indent}{DARK_CYAN}USE {GREEN}{lib}{NOCOLOR}.{GREEN}{pack}{NOCOLOR}.{GREEN}{obj}{NOCOLOR};".format(indent=indentation, lib=lib, pack=pack, obj=obj, **Console.Foreground)) + print() + print("{indent}{DARK_CYAN}ARCHITECTURE {YELLOW}{name}{NOCOLOR} {DARK_CYAN}OF{NOCOLOR} {GREEN}{entity}{NOCOLOR} {DARK_CYAN}IS{NOCOLOR}".format(indent=indentation, name=self._name, entity=self._entity, **Console.Foreground)) + print("{indent}{DARK_CYAN}BEGIN{NOCOLOR}".format(indent=indentation, **Console.Foreground)) + print("{indent}{DARK_CYAN}END ARCHITECTURE{NOCOLOR};".format(indent=indentation, name=self._name, **Console.Foreground))
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/DocumentModel/DesignUnit/Context.html b/_modules/pyVHDLParser/DocumentModel/DesignUnit/Context.html new file mode 100644 index 000000000..656f2aceb --- /dev/null +++ b/_modules/pyVHDLParser/DocumentModel/DesignUnit/Context.html @@ -0,0 +1,314 @@ + + + + + + pyVHDLParser.DocumentModel.DesignUnit.Context — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.DocumentModel.DesignUnit.Context

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators                   import export
+
+from pyVHDLModel.DesignUnit                 import Context as ContextVHDLModel
+
+from pyVHDLParser.Token.Keywords            import IdentifierToken
+from pyVHDLParser.Blocks                    import BlockParserException
+from pyVHDLParser.Blocks.Reference          import Context as ContextBlocks
+from pyVHDLParser.Groups                    import BlockToGroupParser
+from pyVHDLParser.DocumentModel.Reference   import LibraryClause, PackageReference
+
+
+DEBUG = True
+
+
[docs]@export +class Context(ContextVHDLModel): +
[docs] def __init__(self, contextName): + super().__init__(contextName)
+ + @classmethod + def stateParse(cls, document, group): + # iterate blocks to find the contexts name + for block in group: + if isinstance(block, ContextBlocks.NameBlock): + for token in block: + if isinstance(token, IdentifierToken): + contextName = token.Value + break + else: + raise BlockParserException("ContextName not found.", None) # FIXME: change to DOMParserException + + if len(document.Libraries) != 0: + raise BlockParserException("A context (library statements) is not allowed for a context declaration.", None) # FIXME: change to DOMParserException + if len(document.PackageReferences) != 0: + raise BlockParserException("A context (use statements) is not allowed for a context declaration.", None) # FIXME: change to DOMParserException + + context = cls(contextName) + print("Found context '{name}'. Adding to current node '{node!s}'.".format(name=contextName, node=document)) + document.AddContext(context) + break + + + subGroupIterator = iter(group.GetSubGroups()) + # subGroup = next(subGroupIterator) + # + # if isinstance(subGroup, GenericListGroup): + # cls.stateParseGenericList(document, subGroup) + # subGroup = next(subGroupIterator) + # + # if isinstance(subGroup, PortListGroup): + # cls.stateParsePortList(document, subGroup) + # subGroup = next(subGroupIterator) + + # FIXME: how to check if everthing is consumed? + + + @classmethod + def stateParseGenericList(cls, parserState: BlockToGroupParser): #document, group): + assert isinstance(parserState.CurrentGroup, GenericListBlocks.OpenBlock) + + for block in parserState.GroupIterator: + if isinstance(block, pyVHDLParser.Blocks.InterfaceObject.InterfaceConstantBlock): + cls.stateParseGeneric(parserState) + elif isinstance(block, GenericListBlocks.CloseBlock): + break + else: + raise BlockParserException("", None) # FIXME: change to DOMParserException + + parserState.Pop() + + @classmethod + def stateParseGeneric(cls, parserState: BlockToGroupParser): #document, group): + assert isinstance(parserState.CurrentGroup, pyVHDLParser.Blocks.InterfaceObject.InterfaceConstantBlock) + + tokenIterator = iter(parserState) + + for token in tokenIterator: + if isinstance(token, IdentifierToken): + genericName = token.Value + break + else: + raise BlockParserException("", None) # FIXME: change to DOMParserException + + parserState.CurrentNode.AddGeneric(genericName) + + @classmethod + def stateParsePortList(cls, parserState: BlockToGroupParser): #document, group): + assert isinstance(parserState.CurrentGroup, PortListBlocks.OpenBlock) + + for block in parserState.GroupIterator: + if isinstance(block, pyVHDLParser.Blocks.InterfaceObject.InterfaceSignalBlock): + cls.stateParsePort(parserState) + elif isinstance(block, PortListBlocks.CloseBlock): + break + else: + raise BlockParserException("", None) # FIXME: change to DOMParserException + + parserState.Pop() + + @classmethod + def stateParsePort(cls, parserState: BlockToGroupParser): #document, group): + assert isinstance(parserState.CurrentGroup, pyVHDLParser.Blocks.InterfaceObject.InterfaceSignalBlock) + + tokenIterator = iter(parserState) + + for token in tokenIterator: + if isinstance(token, IdentifierToken): + portName = token.Value + break + else: + raise BlockParserException("", None) # FIXME: change to DOMParserException + + parserState.CurrentNode.AddPort(portName) + + def AddLibraries(self, libraries): + for library in libraries: + self._libraries.append(library) + + def AddUses(self, uses): + for use in uses: + self._packageReferences.append(use) + + def AddGeneric(self, generic): + self._genericItems.append(generic) + + def AddPort(self, port): + self._portItems.append(port) + + def Print(self, indent=0): + indentation = " "*indent + for lib in self._libraries: + print("{indent}{DARK_CYAN}LIBRARY{NOCOLOR} {GREEN}{lib}{NOCOLOR};".format(indent=indentation, lib=lib, **Console.Foreground)) + for lib, pack, obj in self._packageReferences: + print("{indent}{DARK_CYAN}USE {GREEN}{lib}{NOCOLOR}.{GREEN}{pack}{NOCOLOR}.{GREEN}{obj}{NOCOLOR};".format(indent=indentation, lib=lib, pack=pack, obj=obj, **Console.Foreground)) + print() + print("{indent}{DARK_CYAN}ENTITY{NOCOLOR} {YELLOW}{name}{NOCOLOR} {DARK_CYAN}IS{NOCOLOR}".format(name=self._name, indent=indentation, **Console.Foreground)) + if len(self._genericItems) > 0: + print("{indent} {DARK_CYAN}GENERIC{NOCOLOR} (".format(indent=indentation, **Console.Foreground)) + for generic in self._genericItems: + print("{indent} {YELLOW}{name}{NOCOLOR} : {GREEN}{type}{NOCOLOR}".format(indent=indentation, name=generic, type="", **Console.Foreground)) + print("{indent} );".format(indent=indentation, **Console.Foreground)) + if len(self._portItems) > 0: + print("{indent} {DARK_CYAN}PORT{NOCOLOR} (".format(indent=indentation, **Console.Foreground)) + for port in self._portItems: + print("{indent} {YELLOW}{name}{NOCOLOR} : {GREEN}{type}{NOCOLOR}".format(indent=indentation, name=port, type="", **Console.Foreground)) + print("{indent} );".format(indent=indentation, **Console.Foreground)) + print("{indent}{DARK_CYAN}END ENTITY{NOCOLOR};".format(name=self._name, indent=indentation, **Console.Foreground))
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/DocumentModel/DesignUnit/Entity.html b/_modules/pyVHDLParser/DocumentModel/DesignUnit/Entity.html new file mode 100644 index 000000000..dc0010d2b --- /dev/null +++ b/_modules/pyVHDLParser/DocumentModel/DesignUnit/Entity.html @@ -0,0 +1,325 @@ + + + + + + pyVHDLParser.DocumentModel.DesignUnit.Entity — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.DocumentModel.DesignUnit.Entity

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators                   import export
+from typing                                 import List
+
+from pyVHDLModel.DesignUnit                 import Entity as EntityVHDLModel
+
+from pyVHDLParser.Token.Keywords            import IdentifierToken
+from pyVHDLParser.Blocks                    import BlockParserException
+from pyVHDLParser.Blocks.List               import GenericList as GenericListBlocks, PortList as PortListBlocks
+from pyVHDLParser.Blocks.Object.Constant    import ConstantDeclarationBlock
+import pyVHDLParser.Blocks.InterfaceObject
+from pyVHDLParser.Blocks.Structural         import Entity as EntityBlocks
+from pyVHDLParser.Groups                    import BlockToGroupParser
+from pyVHDLParser.Groups.List               import GenericListGroup, PortListGroup
+from pyVHDLParser.DocumentModel.Reference   import LibraryClause, PackageReference
+
+
+DEBUG = True
+
+
[docs]@export +class Entity(EntityVHDLModel): +
[docs] def __init__(self, entityName): + super().__init__(entityName)
+ + @classmethod + def stateParse(cls, parserState: BlockToGroupParser): #document, group): + for block in parserState.CurrentGroup: + if isinstance(block, EntityBlocks.NameBlock): + for token in block: + if isinstance(token, IdentifierToken): + entityName = token.Value + break + else: + raise BlockParserException("EntityName not found.", None) # FIXME: change to DOMParserException + + entity = cls(entityName) + entity.AddLibraryReferences(document.Libraries) + entity.AddUses(document.PackageReferences) + + print("Found library '{0}'. Adding to current node '{1!s}'.".format(entityName, document)) + document.AddEntity(entity) + break + + subGroupIterator = iter(parserState.CurrentGroup.GetSubGroups()) + subGroup = next(subGroupIterator) + + if isinstance(subGroup, GenericListGroup): + cls.stateParseGenericList(document, subGroup) + subGroup = next(subGroupIterator) + + if isinstance(subGroup, PortListGroup): + cls.stateParsePortList(document, subGroup) + subGroup = next(subGroupIterator) + + # FIXME entity declarative region + # if isinstance(subGroup, ): + # cls.stateParsePortList(document, subGroup) + # subGroup = next(subGroupIterator) + + # FIXME entity statements + # if isinstance(subGroup, ): + # cls.stateParsePortList(document, subGroup) + # subGroup = next(subGroupIterator) + + # FIXME: how to check if everthing is consumed? + + + @classmethod + def stateParseGenericList(cls, parserState: BlockToGroupParser): #document, group): + assert isinstance(parserState.CurrentGroup, GenericListBlocks.OpenBlock) + + for block in parserState.GroupIterator: + if isinstance(block, pyVHDLParser.Blocks.InterfaceObject.InterfaceConstantBlock): + cls.stateParseGeneric(parserState) + elif isinstance(block, GenericListBlocks.CloseBlock): + break + else: + raise BlockParserException("", None) # FIXME: change to DOMParserException + + parserState.Pop() + + @classmethod + def stateParseGeneric(cls, parserState: BlockToGroupParser): #document, group): + assert isinstance(parserState.CurrentGroup, pyVHDLParser.Blocks.InterfaceObject.InterfaceConstantBlock) + + tokenIterator = iter(parserState) + + for token in tokenIterator: + if isinstance(token, IdentifierToken): + genericName = token.Value + break + else: + raise BlockParserException("", None) # FIXME: change to DOMParserException + + parserState.CurrentNode.AddGeneric(genericName) + + @classmethod + def stateParsePortList(cls, parserState: BlockToGroupParser): #document, group): + assert isinstance(parserState.CurrentGroup, PortListBlocks.OpenBlock) + + for block in parserState.GroupIterator: + if isinstance(block, pyVHDLParser.Blocks.InterfaceObject.InterfaceSignalBlock): + cls.stateParsePort(parserState) + elif isinstance(block, PortListBlocks.CloseBlock): + break + else: + raise BlockParserException("", None) # FIXME: change to DOMParserException + + parserState.Pop() + + @classmethod + def stateParsePort(cls, parserState: BlockToGroupParser): #document, group): + assert isinstance(parserState.CurrentGroup, pyVHDLParser.Blocks.InterfaceObject.InterfaceSignalBlock) + + tokenIterator = iter(parserState) + + for token in tokenIterator: + if isinstance(token, IdentifierToken): + portName = token.Value + break + else: + raise BlockParserException("", None) # FIXME: change to DOMParserException + + parserState.CurrentNode.AddPort(portName) + + def AddLibraries(self, libraries): + for library in libraries: + self._libraries.append(library) + + def AddUses(self, uses): + for use in uses: + self._packageReferences.append(use) + + def AddGeneric(self, generic): + self._genericItems.append(generic) + + def AddPort(self, port): + self._portItems.append(port) + + def Print(self, indent=0): + indentation = " "*indent + for lib in self._libraries: + print("{indent}{DARK_CYAN}LIBRARY{NOCOLOR} {GREEN}{lib}{NOCOLOR};".format(indent=indentation, lib=lib, **Console.Foreground)) + for lib, pack, obj in self._packageReferences: + print("{indent}{DARK_CYAN}USE {GREEN}{lib}{NOCOLOR}.{GREEN}{pack}{NOCOLOR}.{GREEN}{obj}{NOCOLOR};".format(indent=indentation, lib=lib, pack=pack, obj=obj, **Console.Foreground)) + print() + print("{indent}{DARK_CYAN}ENTITY{NOCOLOR} {YELLOW}{name}{NOCOLOR} {DARK_CYAN}IS{NOCOLOR}".format(name=self._name, indent=indentation, **Console.Foreground)) + if len(self._genericItems) > 0: + print("{indent} {DARK_CYAN}GENERIC{NOCOLOR} (".format(indent=indentation, **Console.Foreground)) + for generic in self._genericItems: + print("{indent} {YELLOW}{name}{NOCOLOR} : {GREEN}{type}{NOCOLOR}".format(indent=indentation, name=generic, type="", **Console.Foreground)) + print("{indent} );".format(indent=indentation, **Console.Foreground)) + if len(self._portItems) > 0: + print("{indent} {DARK_CYAN}PORT{NOCOLOR} (".format(indent=indentation, **Console.Foreground)) + for port in self._portItems: + print("{indent} {YELLOW}{name}{NOCOLOR} : {GREEN}{type}{NOCOLOR}".format(indent=indentation, name=port, type="", **Console.Foreground)) + print("{indent} );".format(indent=indentation, **Console.Foreground)) + print("{indent}{DARK_CYAN}END ENTITY{NOCOLOR};".format(name=self._name, indent=indentation, **Console.Foreground))
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/DocumentModel/DesignUnit/Package.html b/_modules/pyVHDLParser/DocumentModel/DesignUnit/Package.html new file mode 100644 index 000000000..985a8cb2e --- /dev/null +++ b/_modules/pyVHDLParser/DocumentModel/DesignUnit/Package.html @@ -0,0 +1,313 @@ + + + + + + pyVHDLParser.DocumentModel.DesignUnit.Package — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.DocumentModel.DesignUnit.Package

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators                   import export
+from typing                                 import List
+
+from pyVHDLModel.DesignUnit                 import Package as PackageVHDLModel
+
+import pyVHDLParser.Blocks.InterfaceObject
+from pyVHDLParser.Token.Keywords            import IdentifierToken
+from pyVHDLParser.Blocks                    import BlockParserException
+from pyVHDLParser.Blocks.List               import GenericList as GenericListBlocks
+from pyVHDLParser.Blocks.Object.Constant    import ConstantDeclarationBlock
+from pyVHDLParser.Blocks.Sequential         import Package as PackageBlock
+from pyVHDLParser.Groups                    import BlockToGroupParser
+from pyVHDLParser.Groups.List               import GenericListGroup
+from pyVHDLParser.DocumentModel.Reference   import LibraryClause, PackageReference
+
+
+DEBUG = True
+
+
[docs]@export +class Package(PackageVHDLModel): +
[docs] def __init__(self, packageName): + super().__init__() + self._name = packageName
+ + @classmethod + def stateParse(cls, document, group): + assert isinstance(group, PackageBlock.NameBlock) + cls.stateParsePackageName(parserState) + + for block in group: + if isinstance(block, GenericListBlocks.OpenBlock): + parserState.PushState = cls.stateParseGenericList + parserState.ReIssue() + elif isinstance(block, ConstantBlock): + parserState.PushState = Constant.stateParse + parserState.ReIssue() + elif isinstance(block, FunctionBlock.NameBlock): + parserState.PushState = Function.stateParse + parserState.ReIssue() + elif isinstance(block, PackageBlock.EndBlock): + break + else: + raise BlockParserException("Block '{0!r}' not supported in a package.".format(block), block) # FIXME: change to DOMParserException + else: + raise BlockParserException("", None) # FIXME: change to DOMParserException + + parserState.Pop() + # parserState.CurrentBlock = None + + @classmethod + def stateParsePackageName(cls, parserState: BlockToGroupParser): #document, group): + assert isinstance(parserState.CurrentGroup, PackageBlock.NameBlock) + + tokenIterator = iter(parserState) + for token in tokenIterator: + if isinstance(token, IdentifierToken): + packageName = token.Value + break + else: + raise BlockParserException("", None) # FIXME: change to DOMParserException + + oldNode = parserState.CurrentNode + package = cls(packageName) + + parserState.CurrentNode.AddPackage(package) + parserState.CurrentNode = package + parserState.CurrentNode.AddLibraryReferences(oldNode.Libraries) + parserState.CurrentNode.AddUses(oldNode.PackageReferences) + + oldNode.Libraries.clear() + oldNode.PackageReferences.clear() + + @classmethod + def stateParseGenericList(cls, parserState: BlockToGroupParser): #document, group): + assert isinstance(parserState.CurrentGroup, GenericListBlocks.OpenBlock) + + for block in parserState.GroupIterator: + if isinstance(block, pyVHDLParser.Blocks.InterfaceObject.InterfaceConstantBlock): + cls.stateParseGeneric(parserState) + elif isinstance(block, GenericListBlocks.CloseBlock): + break + else: + raise BlockParserException("", None) # FIXME: change to DOMParserException + + parserState.Pop() + + @classmethod + def stateParseGeneric(cls, parserState: BlockToGroupParser): #document, group): + assert isinstance(parserState.CurrentGroup, pyVHDLParser.Blocks.InterfaceObject.InterfaceConstantBlock) + + tokenIterator = iter(parserState) + for token in tokenIterator: + if isinstance(token, IdentifierToken): + genericName = token.Value + break + else: + raise BlockParserException("", None) # FIXME: change to DOMParserException + + parserState.CurrentNode.AddGeneric(genericName) + + def AddLibraryReferences(self, libraries : List[LibraryClause]): + if (DEBUG is True) and (len(libraries) > 0): print("{DARK_CYAN}Adding libraries to package {GREEN}{0}{NOCOLOR}:".format(self._name, **Console.Foreground)) + for library in libraries: + if DEBUG: print(" {GREEN}{0!s}{NOCOLOR}".format(library, **Console.Foreground)) + self._libraryReferences.append(library._library) + + def AddUses(self, uses : List[PackageReference]): + if (DEBUG is True) and (len(uses) > 0): print("{DARK_CYAN}Adding uses to package {GREEN}{0}{NOCOLOR}:".format(self._name, **Console.Foreground)) + for use in uses: + if DEBUG: print(" {GREEN}{0!s}{NOCOLOR}".format(use, **Console.Foreground)) + self._packageReferences.append(use) + + def AddGeneric(self, generic): + if DEBUG: print("{DARK_CYAN}Adding generic to package {GREEN}{0}{NOCOLOR}:\n {YELLOW}{1}{NOCOLOR} : {2}".format(self._name, generic, "", **Console.Foreground)) + self._genericItems.append(generic) + + def AddConstant(self, constant): + if DEBUG: print("{DARK_CYAN}Adding constant to package {GREEN}{0}{NOCOLOR}:\n {1!s}".format(self._name, constant, **Console.Foreground)) + self._declaredItems.append(constant) + + def AddFunction(self, function): + if DEBUG: print("{DARK_CYAN}Adding function to package {GREEN}{0}{NOCOLOR}:\n {1!s}".format(self._name, function, **Console.Foreground)) + self._declaredItems.append(function) + + def AddProcedure(self, procedure): + if DEBUG: print("{DARK_CYAN}Adding procedure to package {GREEN}{0}{NOCOLOR}:\n {1!s}".format(self._name, procedure, **Console.Foreground)) + self._declaredItems.append(procedure) + + def Print(self, indent=0): + indentation = " "*indent + for lib in self._libraries: + print("{indent}{DARK_CYAN}LIBRARY{NOCOLOR} {GREEN}{lib}{NOCOLOR};".format(indent=indentation, lib=lib, **Console.Foreground)) + for use in self._packageReferences: + print("{indent}{DARK_CYAN}USE {GREEN}{lib}{NOCOLOR}.{GREEN}{pack}{NOCOLOR}.{GREEN}{item}{NOCOLOR};".format(indent=indentation, lib=use._library, pack=use._package, item=use._item, **Console.Foreground)) + print() + print("{indent}{DARK_CYAN}PACKAGE{NOCOLOR} {YELLOW}{name}{NOCOLOR} {DARK_CYAN}IS{NOCOLOR}".format(indent=indentation, name=self._name, **Console.Foreground)) + if len(self._genericItems) > 0: + print("{indent} {DARK_CYAN}GENERIC{NOCOLOR} (".format(indent=indentation, **Console.Foreground)) + for generic in self._genericItems: + print("{indent} {YELLOW}{name}{NOCOLOR} : {GREEN}{type}{NOCOLOR}".format(indent=indentation, name=generic, type="", **Console.Foreground)) + print("{indent} );".format(indent=indentation)) + if len(self._declaredItems) > 0: + for item in self._declaredItems: + item.Print(indent+1) + print("{indent}{DARK_CYAN}END PACKAGE{NOCOLOR};".format(indent=indentation, name=self._name, **Console.Foreground))
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/DocumentModel/DesignUnit/PackageBody.html b/_modules/pyVHDLParser/DocumentModel/DesignUnit/PackageBody.html new file mode 100644 index 000000000..c63739bad --- /dev/null +++ b/_modules/pyVHDLParser/DocumentModel/DesignUnit/PackageBody.html @@ -0,0 +1,329 @@ + + + + + + pyVHDLParser.DocumentModel.DesignUnit.PackageBody — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.DocumentModel.DesignUnit.PackageBody

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from typing                                 import List
+
+from pyTooling.Decorators                   import export
+from pyVHDLModel.DesignUnit                 import PackageBody as PackageBodyVHDLModel
+
+import pyVHDLParser.Blocks.InterfaceObject
+from pyVHDLParser.Token.Keywords            import IdentifierToken
+from pyVHDLParser.Blocks                    import BlockParserException
+from pyVHDLParser.Blocks.List               import GenericList as GenericListBlocks, PortList as PortListBlocks
+from pyVHDLParser.Blocks.Object.Constant    import ConstantDeclarationBlock
+from pyVHDLParser.Blocks.Sequential         import PackageBody as PackageBodyBlock
+from pyVHDLParser.Groups                    import BlockToGroupParser
+from pyVHDLParser.DocumentModel.Reference   import LibraryClause, PackageReference
+
+
+DEBUG = True
+
+
[docs]@export +class PackageBody(PackageBodyVHDLModel): +
[docs] def __init__(self, packageBodyName): + super().__init__() + self._name = packageBodyName
+ + @classmethod + def stateParse(cls, parserState: BlockToGroupParser): #document, group): + assert isinstance(parserState.CurrentGroup, PackageBodyBlock.NameBlock) + cls.stateParsePackageBodyName(parserState) + + for block in parserState.GroupIterator: + if isinstance(block, GenericListBlocks.OpenBlock): + parserState.PushState = cls.stateParseGenericList + parserState.ReIssue() + elif isinstance(block, PortListBlocks.OpenBlock): + parserState.PushState = cls.stateParsePortList + parserState.ReIssue() + elif isinstance(block, ConstantBlock): + parserState.PushState = Constant.stateParse + parserState.ReIssue() + elif isinstance(block, Function.BeginBlock): + parserState.PushState = Function.stateParse + parserState.ReIssue() + elif isinstance(block, PackageBodyBlock.EndBlock): + break + else: + raise BlockParserException("Block '{0!r}' not supported in a package body.".format(block), block) # FIXME: change to DOMParserException + else: + raise BlockParserException("", None) # FIXME: change to DOMParserException + + parserState.Pop() + # parserState.CurrentBlock = None + + @classmethod + def stateParsePackageBodyName(cls, parserState: BlockToGroupParser): #document, group): + assert isinstance(parserState.CurrentGroup, PackageBodyBlock.NameBlock) + + tokenIterator = iter(parserState) + + for token in tokenIterator: + if isinstance(token, IdentifierToken): + packageName = token.Value + break + else: + raise BlockParserException("", None) # FIXME: change to DOMParserException + + oldNode = parserState.CurrentNode + packageBody = cls(packageName) + + parserState.CurrentNode.AddPackageBody(packageBody) + parserState.CurrentNode = packageBody + parserState.CurrentNode.AddLibraryReferences(oldNode.Libraries) + parserState.CurrentNode.AddUses(oldNode.PackageReferences) + + oldNode.Libraries.clear() + oldNode.PackageReferences.clear() + + @classmethod + def stateParseGenericList(cls, parserState: BlockToGroupParser): #document, group): + assert isinstance(parserState.CurrentGroup, GenericListBlocks.OpenBlock) + + for block in parserState.GroupIterator: + if isinstance(block, pyVHDLParser.Blocks.InterfaceObject.InterfaceConstantBlock): + cls.stateParseGeneric(parserState) + elif isinstance(block, GenericListBlocks.CloseBlock): + break + else: + raise BlockParserException("", None) # FIXME: change to DOMParserException + + parserState.Pop() + + @classmethod + def stateParseGeneric(cls, parserState: BlockToGroupParser): #document, group): + assert isinstance(parserState.CurrentGroup, pyVHDLParser.Blocks.InterfaceObject.InterfaceConstantBlock) + + tokenIterator = iter(parserState) + + for token in tokenIterator: + if isinstance(token, IdentifierToken): + genericName = token.Value + break + else: + raise BlockParserException("", None) # FIXME: change to DOMParserException + + parserState.CurrentNode.AddGeneric(genericName) + + @classmethod + def stateParsePortList(cls, parserState: BlockToGroupParser): #document, group): + assert isinstance(parserState.CurrentGroup, PortListBlocks.OpenBlock) + + for block in parserState.GroupIterator: + if isinstance(block, pyVHDLParser.Blocks.InterfaceObject.InterfaceSignalBlock): + cls.stateParsePort(parserState) + elif isinstance(block, PortListBlocks.CloseBlock): + break + else: + raise BlockParserException("", None) # FIXME: change to DOMParserException + + parserState.Pop() + + @classmethod + def stateParsePort(cls, parserState: BlockToGroupParser): #document, group): + assert isinstance(parserState.CurrentGroup, pyVHDLParser.Blocks.InterfaceObject.InterfaceSignalBlock) + + tokenIterator = iter(parserState) + + for token in tokenIterator: + if isinstance(token, IdentifierToken): + portName = token.Value + break + else: + raise BlockParserException("", None) # FIXME: change to DOMParserException + + parserState.CurrentNode.AddPort(portName) + + def AddLibraries(self, libraries: List[LibraryClause]): + if (DEBUG is True) and (len(libraries) > 0): print("{DARK_CYAN}Adding libraries to package body {GREEN}{0}{NOCOLOR}:".format(self._name, **Console.Foreground)) + for library in libraries: + if DEBUG: print(" {GREEN}{0!s}{NOCOLOR}".format(library, **Console.Foreground)) + self._libraries.append(library._library) + + def AddUses(self, uses: List[PackageReference]): + if (DEBUG is True) and (len(uses) > 0): print("{DARK_CYAN}Adding uses to package body {GREEN}{0}{NOCOLOR}:".format(self._name, **Console.Foreground)) + for use in uses: + if DEBUG: print(" {GREEN}{0!s}{NOCOLOR}".format(use, **Console.Foreground)) + self._packageReferences.append(use) + + def AddConstant(self, constant): + if DEBUG: print("{DARK_CYAN}Adding constant to package body {GREEN}{0}{NOCOLOR}:\n {1!s}".format(self._name, constant, **Console.Foreground)) + self._declaredItems.append(constant) + + def Print(self, indent=0): + indentation = " "*indent + for lib in self._libraries: + print("{indent}{DARK_CYAN}LIBRARY{NOCOLOR} {GREEN}{lib}{NOCOLOR};".format(indent=indentation, lib=lib, **Console.Foreground)) + for lib, pack, obj in self._packageReferences: + print("{indent}{DARK_CYAN}USE {GREEN}{lib}{NOCOLOR}.{GREEN}{pack}{NOCOLOR}.{GREEN}{obj}{NOCOLOR};".format(indent=indentation, lib=lib, pack=pack, obj=obj, **Console.Foreground)) + print() + print("{indent}{DARK_CYAN}PACKAGE BODY{NOCOLOR} {GREEN}{name}{NOCOLOR} {DARK_CYAN}IS{NOCOLOR}".format(indent=indentation, name=self._name, **Console.Foreground)) + if len(self._declaredItems) > 0: + for item in self._declaredItems: + item.Print(indent+1) + print("{indent}{DARK_CYAN}END PACKAGE BODY{NOCOLOR};".format(indent=indentation, name=self._name, **Console.Foreground))
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Groups.html b/_modules/pyVHDLParser/Groups.html new file mode 100644 index 000000000..05ce53888 --- /dev/null +++ b/_modules/pyVHDLParser/Groups.html @@ -0,0 +1,593 @@ + + + + + + pyVHDLParser.Groups — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Groups

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from types                                  import FunctionType
+from typing import Iterator, Callable, List, Generator, Any, Dict, Tuple
+
+from pyTooling.MetaClasses import ExtendedType
+from pyTooling.TerminalUI                   import LineTerminal
+
+from pyTooling.Decorators                   import export
+
+from pyVHDLParser                           import StartOfDocument, EndOfDocument, StartOfSnippet, EndOfSnippet
+from pyVHDLParser.Base                      import ParserException
+from pyVHDLParser.Blocks                    import Block, CommentBlock, StartOfDocumentBlock, EndOfDocumentBlock
+from pyVHDLParser.Blocks.Common             import LinebreakBlock, IndentationBlock
+from pyVHDLParser.Blocks.Reference          import Context, Library, Use
+from pyVHDLParser.Blocks.Sequential         import Package, PackageBody
+from pyVHDLParser.Blocks.Structural         import Entity, Architecture, Configuration
+
+
+
[docs]@export +class GroupParserException(ParserException): +
[docs] def __init__(self, message: str, block: Block): + super().__init__(message) + self._block = block
+ + +# @export +# class BlockToGroupParser: +# """Wrapping class to offer some class methods.""" +# +# @staticmethod +# def Transform(blockGenerator: Generator[Block, Any, None]) -> Generator['Group', Any, None]: +# """Returns a generator, that reads from a token generator and emits a chain of blocks.""" +# +# state = ParserState(blockGenerator) +# return state.GetGenerator() + + +
[docs]@export +class BlockIterator: +
[docs] def __init__(self, parserState, blockGenerator: Iterator): + self._parserState: BlockToGroupParser = parserState + #self._blockIterator = iter(FastForward(groupGenerator)) + self._blockIterator = iter(blockGenerator)
+ + def __iter__(self) -> 'BlockIterator': + return self + + def __next__(self) -> 'Block': + nextBlock = self._blockIterator.__next__() + self._parserState.Block = nextBlock + return nextBlock
+ + +
[docs]@export +class BlockToGroupParser(metaclass=ExtendedType, useSlots=True): + """Represents the current state of a block-to-group parser.""" + + _iterator: Iterator + _stack: List[Tuple[Callable[['BlockToGroupParser'], bool], Block, 'Group']] + _blockMarker: Block + + Block: Block + NextState: Callable[['BlockToGroupParser'], bool] + + NewBlock: Block + NewGroup: 'Group' + LastGroup: 'Group' + NextGroup: 'Group' + +
[docs] def __init__(self, blockGenerator: Generator[Block, Any, None]): + """Initializes the parser state.""" + + self._iterator = iter(BlockIterator(self, blockGenerator)) # XXX: review iterator vs. generator + self._stack = [] + self._blockMarker = None + + startBlock = next(self._iterator) + startGroup = StartOfDocumentGroup(startBlock) + + if not isinstance(startBlock, StartOfDocumentBlock): + raise GroupParserException("First block is not a StartOfDocumentBlock.", startBlock) + + self.Block = None + self.NextState = StartOfDocumentGroup.stateDocument + self.NewBlock = None + self.NewGroup = None + self.LastGroup = None + self.NextGroup = startGroup
+ + @property + def PushState(self) -> Callable[['BlockToGroupParser'], bool]: + return self.NextState + + @PushState.setter + def PushState(self, value: Callable[['BlockToGroupParser'], bool]): + assert (self.NextGroup is not None) + self._stack.append(( + self.NextState, + self._blockMarker, + self.NextGroup + )) + self.NextState = value + self._blockMarker = None + self.NextGroup = None + + @property + def GetBlockIterator(self): # FIXME: what return type? + return self._iterator + + # XXX: implement this method + # def __iter__(self): + # return self._iterator + + # def __iter__(self): + # if self.Block.MultiPart: + # return iter(BlockToGroupParser._TokenGenerator(self.Block, self.BlockIterator)) + # else: + # return iter(self.Block) + + @property + def BlockMarker(self) -> 'Block': + if (self.NewBlock is not None) and (self._blockMarker is self.Block): + # if self.debug: print(" {DARK_GREEN}@BlockMarker: {0!s} => {GREEN}{1!s}{NOCOLOR}".format(self._blockMarker, self.NewBlock, **Console.Foreground)) + self._blockMarker = self.NewBlock + return self._blockMarker + + @BlockMarker.setter + def BlockMarker(self, value: Block): + # if self.debug: print(" {DARK_GREEN}@BlockMarker: {0!s} --> {GREEN}{1!s}{NOCOLOR}".format(self._blockMarker, value, **Console.Foreground)) + self._blockMarker = value + +
[docs] def __eq__(self, other: Callable[['ParserState'], bool]) -> bool: + """Return true if parser state is equal to the second operand.""" + return self.NextState is other
+ +
[docs] def __ne__(self, other: Callable[['ParserState'], bool]) -> bool: + """Return true if parser state is not equal to the second operand.""" + return self.NextState is not other
+ +
[docs] def __str__(self) -> str: + return self.NextState.__func__.__qualname__
+ + def Pop(self, n: int = 1) -> None: + self.NewGroup = self.NextGroup + + for i in range(n): + top = self._stack.pop() + self.NextState, self._blockMarker, self.NextGroup = top + + # print("{MAGENTA}appending {0!s} to {1!s}{NOCOLOR}".format(self.NewGroup.__class__.__qualname__, self.NextGroup.__class__,**Console.Foreground)) + if self.NextGroup.InnerGroup is None: + self.NextGroup.InnerGroup = self.NewGroup + if self.NewGroup.__class__ not in self.NextGroup._subGroups: + raise GroupParserException("Group '{group1}' not supported in {group2}.".format( + group1=self.NewGroup.__class__, + group2=self.NextGroup.__class__.__qualname__ + ), self.Block) + + self.NextGroup._subGroups[self.NewGroup.__class__].append(self.NewGroup) + +
[docs] def __call__(self) -> Generator['Group', None, None]: + # yield StartOfDocumentGroup + self.LastGroup = self.NextGroup + yield self.LastGroup + + for block in self._iterator: + # an empty marker means: set on next yield run + if self._blockMarker is None: + # if self.debug: print(" new block marker: None -> {0!s}".format(block)) + self._blockMarker = block + + # if self.debug: print("{MAGENTA}------ iteration end ------{NOCOLOR}".format(**Console.Foreground)) + # execute a state and reissue execution if needed + reissue = True + while reissue: + LineTerminal().WriteDryRun("{DARK_GRAY}reissue state={state!s: <50} block={block!s: <40} {NOCOLOR}".format(state=self, block=self.Block, **LineTerminal.Foreground)) + reissue = self.NextState(self) + + # yield a new group + if self.NewGroup is not None: + yield self.NewGroup + self.LastGroup = self.NewGroup + self.NewGroup = None + + if isinstance(self.Block, EndOfDocumentBlock) and isinstance(self.LastGroup, EndOfDocumentGroup): + return + + else: + raise GroupParserException("Unexpected end of document.", self.Block)
+ + +
[docs]@export +class MetaGroup(ExtendedType): + """Register all state*** methods in an array called '__STATES__'""" +
[docs] def __new__(cls, className, baseClasses, classMembers: dict): + states = [] + for memberName, memberObject in classMembers.items(): + if isinstance(memberObject, FunctionType) and (memberName[:5] == "state"): + states.append(memberObject) + + group = super().__new__(cls, className, baseClasses, classMembers, useSlots=True) + group.__STATES__ = states + return group
+ + +
[docs]@export +class Group(metaclass=MetaGroup): + __STATES__ = None + + _previousGroup: 'Group' #: Reference to the previous group. + NextGroup: 'Group' #: Reference to the next group. + InnerGroup: 'Group' #: Reference to the first inner group. + _subGroups: Dict[MetaGroup, 'Group'] #: References to all inner groups by group type. + + StartBlock: Block #: Reference to the first block in the scope of this group. + EndBlock: Block #: Reference to the last block in the scope of this group. + MultiPart: bool #: True, if this group has multiple parts. + +
[docs] def __init__(self, previousGroup: 'Group', startBlock: Block, endBlock: Block=None): + previousGroup.NextGroup = self + self._previousGroup = previousGroup + self.NextGroup = None + self.InnerGroup = None + self._subGroups = {} + + self.StartBlock = startBlock + self.EndBlock = startBlock if (endBlock is None) else endBlock + self.MultiPart = False
+ + def __len__(self) -> int: + return self.EndBlock.EndToken.End.Absolute - self.StartBlock.StartToken.Start.Absolute + 1 + + def __iter__(self): # XXX: return type; iterator vs. generator + block = self.StartBlock + print("group={0}({1}) start={2!s} end={3!s}".format(self.__class__.__name__, self.__class__.__module__, self.StartBlock.StartToken, self.EndBlock.EndToken)) + while block is not self.EndBlock: + yield block + if block.NextBlock is None: + raise GroupParserException("Token after {0!r} <- {1!r} <- {2!r} is empty (None).".format(block, block.PreviousToken, block.PreviousToken.PreviousToken), block) + block = block.NextBlock + + yield self.EndBlock + +
[docs] def __repr__(self) -> str: + buffer = "undefined block content" + # buffer = buffer.replace("\t", "\\t") + # buffer = buffer.replace("\n", "\\n") + return buffer
+ +
[docs] def __str__(self) -> str: + return "{{{groupName:.<156s} at {start!s} .. {end!s}}}".format( + groupName="{module}.{classname} ".format( + module=self.__module__.rpartition(".")[2], + classname=self.__class__.__name__ + ), + start=self.StartBlock.StartToken.Start, + end=self.EndBlock.EndToken.End + )
+ + def GetSubGroups(self, groupTypes=None): # XXX: return type + group = self.InnerGroup + while group is not None: + yield group + group = group.NextGroup + + @property + def PreviousGroup(self) -> 'Group': + return self._previousGroup + @PreviousGroup.setter + def PreviousGroup(self, value: 'Group'): + self._previousGroup = value + value.NextGroup = self + + @property + def Length(self) -> int: + return len(self) + + @property + def States(self) -> List[Callable]: + return self.__STATES__
+ + +
[docs]@export +class StartOfGroup(Group): +
[docs] def __init__(self, startBlock: Block): + self._previousGroup = None + self.NextGroup = None + self.InnerGroup = None + self._subGroups = {} + + self.StartBlock = startBlock + self.EndBlock = None + self.MultiPart = False
+ + # TODO: needs review: should TokenIterator be used? + def __iter__(self): + yield self.StartBlock + + def __len__(self) -> int: + return 0 + +
[docs] def __str__(self) -> str: + return "{{{groupName:.<156s} at {start!s}}}".format( + groupName="{module}.{classname} ".format( + module=self.__module__.rpartition(".")[2], + classname=self.__class__.__name__ + ), + start=self.StartBlock.StartToken.Start + )
+ + +
[docs]@export +class EndOfGroup(Group): +
[docs] def __init__(self, endBlock: Block): + self._previousGroup = None + self.NextGroup = None + self.StartBlock = None + self.EndBlock = endBlock + self.MultiPart = False
+ + # TODO: needs review: should TokenIterator be used? + def __iter__(self): + yield self.EndBlock + + def __len__(self) -> int: + return 0 + +
[docs] def __str__(self) -> str: + return "{{{groupName:.<156s} at .. {end!s}}}".format( + groupName="{module}.{classname} ".format( + module=self.__module__.rpartition(".")[2], + classname=self.__class__.__name__ + ), + end=self.EndBlock.EndToken.Start + )
+ + +
[docs]@export +class StartOfDocumentGroup(StartOfGroup, StartOfDocument): +
[docs] def __init__(self, startBlock: Block): + from pyVHDLParser.Groups.Comment import CommentGroup, WhitespaceGroup + from pyVHDLParser.Groups.DesignUnit import ContextGroup, EntityGroup, ArchitectureGroup, PackageGroup, PackageBodyGroup, ConfigurationGroup + from pyVHDLParser.Groups.Reference import LibraryGroup, UseGroup + + super().__init__(startBlock) + + self._subGroups = { + CommentGroup: [], + WhitespaceGroup: [], + LibraryGroup: [], + UseGroup: [], + ContextGroup: [], + EntityGroup: [], + ArchitectureGroup: [], + PackageGroup: [], + PackageBodyGroup: [], + ConfigurationGroup: [] + }
+ + @classmethod + def stateDocument(cls, parserState: BlockToGroupParser): + from pyVHDLParser.Groups.DesignUnit import ContextGroup, EntityGroup, ArchitectureGroup, PackageGroup, PackageBodyGroup, ConfigurationGroup + from pyVHDLParser.Groups.Reference import LibraryGroup, UseGroup + from pyVHDLParser.Groups.Comment import CommentGroup, WhitespaceGroup + + SIMPLE_BLOCKS = { + Library.StartBlock: LibraryGroup, + Use.StartBlock: UseGroup + } + COMPOUND_BLOCKS = { + Context.NameBlock: ContextGroup, + Entity.NameBlock: EntityGroup, + Architecture.NameBlock: ArchitectureGroup, + Package.NameBlock: PackageGroup, + PackageBody.NameBlock: PackageBodyGroup, + Configuration.NameBlock: ConfigurationGroup + } + + currentBlock = parserState.Block + + if isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): + parserState.PushState = WhitespaceGroup.stateParse + parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + elif isinstance(currentBlock, CommentBlock): + parserState.PushState = CommentGroup.stateParse + parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + else: + for blk in SIMPLE_BLOCKS: + if isinstance(currentBlock, blk): + group = SIMPLE_BLOCKS[blk] + parserState.PushState = group.stateParse + parserState.NextGroup = group(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + + for blk in COMPOUND_BLOCKS: + if isinstance(currentBlock, blk): + group = COMPOUND_BLOCKS[blk] + parserState.PushState = group.stateParse + parserState.NextGroup = group(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + + if isinstance(currentBlock, EndOfDocumentBlock): + parserState.NewGroup = EndOfDocumentGroup(currentBlock) + return + + raise GroupParserException("Expected keywords: architecture, context, entity, library, package, use. Found '{block!s}'.".format( + block=currentBlock.__class__.__qualname__ + ), currentBlock)
+ + +
[docs]@export +class EndOfDocumentGroup(EndOfGroup, EndOfDocument): + pass
+ +
[docs]@export +class StartOfSnippetGroup(StartOfGroup, StartOfSnippet): + pass
+ +
[docs]@export +class EndOfSnippetGroup(EndOfGroup, EndOfSnippet): + pass
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Groups/Comment.html b/_modules/pyVHDLParser/Groups/Comment.html new file mode 100644 index 000000000..0cdcdfd75 --- /dev/null +++ b/_modules/pyVHDLParser/Groups/Comment.html @@ -0,0 +1,199 @@ + + + + + + pyVHDLParser.Groups.Comment — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Groups.Comment

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators         import export
+
+from pyVHDLParser.Blocks          import CommentBlock
+from pyVHDLParser.Blocks.Common   import WhitespaceBlock, LinebreakBlock, IndentationBlock
+from pyVHDLParser.Groups          import BlockToGroupParser, GroupParserException, Group
+
+
+
[docs]@export +class CommentGroup(Group): + @classmethod + def stateParse(cls, parserState: BlockToGroupParser): + for block in parserState.GetBlockIterator: + if not isinstance(block, CommentBlock): + parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, block) + parserState.Pop() + return True + + raise GroupParserException("End of library clause not found.", block)
+ + +
[docs]@export +class WhitespaceGroup(Group): + @classmethod + def stateParse(cls, parserState: BlockToGroupParser): + for block in parserState.GetBlockIterator: + if not isinstance(block, (WhitespaceBlock, LinebreakBlock, IndentationBlock)): + parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, block.PreviousBlock) + parserState.Pop() + return True + + raise GroupParserException("End of library clause not found.", block)
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Groups/Concurrent.html b/_modules/pyVHDLParser/Groups/Concurrent.html new file mode 100644 index 000000000..910add647 --- /dev/null +++ b/_modules/pyVHDLParser/Groups/Concurrent.html @@ -0,0 +1,222 @@ + + + + + + pyVHDLParser.Groups.Concurrent — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Groups.Concurrent

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators                 import export
+
+from pyVHDLParser.Blocks.Reporting.Assert import AssertBlock
+from pyVHDLParser.Blocks.Reporting.Report import ReportBlock
+from pyVHDLParser.Groups                  import BlockToGroupParser, Group, GroupParserException
+
+
+
[docs]@export +class AssertGroup(Group): + @classmethod + def stateParse(cls, parserState: BlockToGroupParser): + marker = parserState.Block + if parserState.Block.MultiPart: + for block in parserState.GetBlockIterator: + if isinstance(block, AssertBlock) and not block.MultiPart: + marker2 = block + break + else: + raise GroupParserException("End of multi parted constant declaration not found.", block) + else: + marker2 = marker + + parserState.NextGroup = cls(parserState.LastGroup, marker, marker2) + parserState.Pop() + return
+ + +
[docs]@export +class ReportGroup(Group): + @classmethod + def stateParse(cls, parserState: BlockToGroupParser): + marker = parserState.Block + if parserState.Block.MultiPart: + for block in parserState.GetBlockIterator: + if isinstance(block, ReportBlock) and not block.MultiPart: + marker2 = block + break + else: + raise GroupParserException("End of multi parted constant declaration not found.", block) + else: + marker2 = marker + + parserState.NextGroup = cls(parserState.LastGroup, marker, marker2) + parserState.Pop() + return
+ + +
[docs]@export +class SignalAssignmentGroup(Group): + @classmethod + def stateParse(cls, parserState: BlockToGroupParser): + block = parserState.Block + + raise NotImplementedError("State=Parse: {0!r}".format(block))
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Groups/DesignUnit.html b/_modules/pyVHDLParser/Groups/DesignUnit.html new file mode 100644 index 000000000..f922ba620 --- /dev/null +++ b/_modules/pyVHDLParser/Groups/DesignUnit.html @@ -0,0 +1,852 @@ + + + + + + pyVHDLParser.Groups.DesignUnit — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Groups.DesignUnit

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from collections                              import ChainMap
+from itertools                                import chain
+
+from pyTooling.Decorators                     import export
+
+from pyVHDLParser.Blocks                      import CommentBlock, EndOfDocumentBlock
+from pyVHDLParser.Blocks.Common               import LinebreakBlock, IndentationBlock
+from pyVHDLParser.Blocks.List                 import GenericList, ParameterList, PortList
+from pyVHDLParser.Blocks.Object.Signal        import SignalDeclarationBlock
+from pyVHDLParser.Blocks.Object.Constant      import ConstantDeclarationBlock
+from pyVHDLParser.Blocks.Reference            import Context, Library, Use
+from pyVHDLParser.Blocks.Reporting.Assert     import AssertBlock
+from pyVHDLParser.Blocks.Sequential           import Package, PackageBody, Function, Procedure, Process
+from pyVHDLParser.Blocks.Structural           import Entity, Architecture, Component, Configuration
+from pyVHDLParser.Groups                      import GroupParserException, Group, EndOfDocumentGroup, BlockToGroupParser
+from pyVHDLParser.Groups.Comment              import CommentGroup, WhitespaceGroup
+from pyVHDLParser.Groups.Concurrent           import AssertGroup
+from pyVHDLParser.Groups.List                 import GenericListGroup, ParameterListGroup, PortListGroup
+from pyVHDLParser.Groups.Object               import ConstantGroup, SignalGroup
+from pyVHDLParser.Groups.Reference            import LibraryGroup, UseGroup
+from pyVHDLParser.Groups.Sequential.Function  import FunctionGroup
+from pyVHDLParser.Groups.Sequential.Procedure import ProcedureGroup
+from pyVHDLParser.Groups.Sequential.Process   import ProcessGroup
+
+
+
[docs]@export +class ContextGroup(Group): + SIMPLE_BLOCKS = { + Library.StartBlock: LibraryGroup, + Use.StartBlock: UseGroup + } + +
[docs] def __init__(self, previousGroup, startBlock, endBlock=None): + super().__init__(previousGroup, startBlock, endBlock) + + self._subGroups = { + CommentGroup: [], + WhitespaceGroup: [], + LibraryGroup: [], + UseGroup: [] + }
+ + @classmethod + def stateParse(cls, parserState: BlockToGroupParser): + currentBlock = parserState.Block + + if isinstance(currentBlock, Context.NameBlock): + parserState.NextGroup = cls(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + #parserState.NextState = cls.stateParseGenerics + return + elif isinstance(currentBlock, Context.EndBlock): + #parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, parserState.Block) + #parserState.Pop() + #parserState.BlockMarker = None + return + elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): + parserState.PushState = WhitespaceGroup.stateParse + parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + elif isinstance(currentBlock, CommentBlock): + parserState.PushState = CommentGroup.stateParse + parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + else: + for block in cls.SIMPLE_BLOCKS: + if isinstance(currentBlock, block): + group = cls.SIMPLE_BLOCKS[block] + parserState.PushState = group.stateParse + parserState.BlockMarker = currentBlock + return True + + if isinstance(currentBlock, EndOfDocumentBlock): + parserState.NextGroup = EndOfDocumentGroup(currentBlock) + return + + raise GroupParserException("End of context declaration not found.".format( + block=currentBlock.__class__.__qualname__ + ), currentBlock)
+ + +
[docs]@export +class EntityGroup(Group): + DECLARATION_SIMPLE_BLOCKS = { + GenericList.OpenBlock: GenericListGroup, + PortList.OpenBlock: PortListGroup, + Use.StartBlock: UseGroup, + ConstantDeclarationBlock: ConstantGroup + } + DECLARATION_COMPOUND_BLOCKS = {} + STATEMENT_SIMPLE_BLOCKS = { + AssertBlock: AssertGroup + } + STATEMENT_COMPOUND_BLOCKS = { + Process.OpenBlock: ProcessGroup, + } + +
[docs] def __init__(self, previousGroup, startBlock, endBlock=None): + super().__init__(previousGroup, startBlock, endBlock) + + self._subGroups = dict(ChainMap( + {v: [] for v in chain( + self.DECLARATION_SIMPLE_BLOCKS.values(), + self.DECLARATION_COMPOUND_BLOCKS.values(), + self.STATEMENT_SIMPLE_BLOCKS.values(), + self.STATEMENT_COMPOUND_BLOCKS.values() + )}, + {CommentGroup: [], + WhitespaceGroup: [] + } + ))
+ + @classmethod + def stateParse(cls, parserState: BlockToGroupParser): + currentBlock = parserState.Block + + # consume OpenBlock + if isinstance(currentBlock, Entity.NameBlock): + parserState.NextGroup = cls(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + parserState.NextState = cls.stateParseGenerics + return + else: + raise GroupParserException("Begin of entity expected.", currentBlock) + + @classmethod + def stateParseGenerics(cls, parserState: BlockToGroupParser): + currentBlock = parserState.Block + + if isinstance(currentBlock, GenericList.OpenBlock): + parserState.NextState = cls.stateParsePorts + parserState.PushState = GenericListGroup.stateParse + parserState.NextGroup = GenericListGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + elif isinstance(currentBlock, PortList.OpenBlock): + parserState.NextState = cls.stateParseDeclarations + parserState.PushState = PortListGroup.stateParse + parserState.NextGroup = PortListGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): + parserState.PushState = WhitespaceGroup.stateParse + parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + elif isinstance(currentBlock, CommentBlock): + parserState.PushState = CommentGroup.stateParse + parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + + if isinstance(currentBlock, EndOfDocumentBlock): + parserState.NextGroup = EndOfDocumentGroup(currentBlock) + return + + raise GroupParserException("End of generic clause not found.", currentBlock) + + @classmethod + def stateParsePorts(cls, parserState: BlockToGroupParser): + currentBlock = parserState.Block + + if isinstance(currentBlock, PortList.OpenBlock): + parserState.NextState = cls.stateParseDeclarations + parserState.PushState = PortListGroup.stateParse + parserState.NextGroup = PortListGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): + parserState.PushState = WhitespaceGroup.stateParse + parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + elif isinstance(currentBlock, CommentBlock): + parserState.PushState = CommentGroup.stateParse + parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + + if isinstance(currentBlock, EndOfDocumentBlock): + parserState.NextGroup = EndOfDocumentGroup(currentBlock) + return + + raise GroupParserException("End of port clause not found.", currentBlock) + + @classmethod + def stateParseDeclarations(cls, parserState: BlockToGroupParser): + currentBlock = parserState.Block + + if isinstance(currentBlock, Entity.BeginBlock): + parserState.NextState = cls.stateParseStatements + return + elif isinstance(currentBlock, Entity.EndBlock): + parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, parserState.Block) + parserState.Pop() + parserState.BlockMarker = None + return + elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): + parserState.PushState = WhitespaceGroup.stateParse + parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + elif isinstance(currentBlock, CommentBlock): + parserState.PushState = CommentGroup.stateParse + parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + else: + for block in cls.DECLARATION_SIMPLE_BLOCKS: + if isinstance(currentBlock, block): + group = cls.DECLARATION_SIMPLE_BLOCKS[block] + parserState.PushState = group.stateParse + parserState.BlockMarker = currentBlock + return True + + for block in cls.DECLARATION_COMPOUND_BLOCKS: + if isinstance(currentBlock, block): + group = cls.DECLARATION_COMPOUND_BLOCKS[block] + parserState.PushState = group.stateParse + parserState.BlockMarker = currentBlock + return True + + if isinstance(currentBlock, EndOfDocumentBlock): + parserState.NextGroup = EndOfDocumentGroup(currentBlock) + return + + raise GroupParserException("End of entity declarative region not found.", currentBlock) + + @classmethod + def stateParseStatements(cls, parserState: BlockToGroupParser): + currentBlock = parserState.Block + + if isinstance(currentBlock, Entity.EndBlock): + parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, parserState.Block) + parserState.Pop() + parserState.BlockMarker = None + return + elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): + parserState.PushState = WhitespaceGroup.stateParse + parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + elif isinstance(currentBlock, CommentBlock): + parserState.PushState = CommentGroup.stateParse + parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + else: + for block in cls.STATEMENT_SIMPLE_BLOCKS: + if isinstance(currentBlock, block): + group = cls.STATEMENT_SIMPLE_BLOCKS[block] + parserState.PushState = group.stateParse + parserState.BlockMarker = currentBlock + return True + + for block in cls.STATEMENT_COMPOUND_BLOCKS: + if isinstance(currentBlock, block): + group = cls.STATEMENT_COMPOUND_BLOCKS[block] + parserState.PushState = group.stateParse + parserState.BlockMarker = currentBlock + return True + + if isinstance(currentBlock, EndOfDocumentBlock): + parserState.NextGroup = EndOfDocumentGroup(currentBlock) + return + + raise GroupParserException("End of entity declaration not found.", currentBlock)
+ + +
[docs]@export +class ArchitectureGroup(Group): + DECLARATION_SIMPLE_BLOCKS = { + Use.StartBlock: UseGroup, + ConstantDeclarationBlock: ConstantGroup, + # SharedVariableBlock: VariableGroup, + SignalDeclarationBlock: SignalGroup + } + DECLARATION_COMPOUND_BLOCKS = { + Function.NameBlock: FunctionGroup, + Procedure.NameBlock: ProcedureGroup + } + STATEMENT_SIMPLE_BLOCKS = { + AssertBlock: AssertGroup + } + STATEMENT_COMPOUND_BLOCKS = { + Process.OpenBlock: ProcessGroup + } + +
[docs] def __init__(self, previousGroup, startBlock, endBlock=None): + super().__init__(previousGroup, startBlock, endBlock) + + self._subGroups = dict(ChainMap( + {v: [] for v in chain( + self.DECLARATION_SIMPLE_BLOCKS.values(), + self.DECLARATION_COMPOUND_BLOCKS.values(), + self.STATEMENT_SIMPLE_BLOCKS.values(), + self.STATEMENT_COMPOUND_BLOCKS.values() + )}, + {CommentGroup: [], + WhitespaceGroup: [] + } + ))
+ + @classmethod + def stateParse(cls, parserState: BlockToGroupParser): + currentBlock = parserState.Block + + if isinstance(currentBlock, Architecture.NameBlock): + parserState.NextState = cls.stateParseDeclarations + return + elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): + parserState.PushState = WhitespaceGroup.stateParse + parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + elif isinstance(currentBlock, CommentBlock): + parserState.PushState = CommentGroup.stateParse + parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + elif isinstance(currentBlock, EndOfDocumentBlock): + parserState.NextGroup = EndOfDocumentGroup(currentBlock) + return + + raise GroupParserException("End of architecture declaration not found.".format( + block=currentBlock.__class__.__qualname__ + ), currentBlock) + + @classmethod + def stateParseDeclarations(cls, parserState: BlockToGroupParser): + currentBlock = parserState.Block + + if isinstance(currentBlock, Architecture.BeginBlock): + parserState.NextState = cls.stateParseStatements + return + elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): + parserState.PushState = WhitespaceGroup.stateParse + parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + elif isinstance(currentBlock, CommentBlock): + parserState.PushState = CommentGroup.stateParse + parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + else: + for block in cls.DECLARATION_SIMPLE_BLOCKS: + if isinstance(currentBlock, block): + group = cls.DECLARATION_SIMPLE_BLOCKS[block] + parserState.PushState = group.stateParse + parserState.BlockMarker = currentBlock + return True + + for block in cls.DECLARATION_COMPOUND_BLOCKS: + if isinstance(currentBlock, block): + group = cls.DECLARATION_COMPOUND_BLOCKS[block] + parserState.PushState = group.stateParse + parserState.BlockMarker = currentBlock + return True + + if isinstance(currentBlock, EndOfDocumentBlock): + parserState.NextGroup = EndOfDocumentGroup(currentBlock) + return + + raise GroupParserException("End of architecture declaration not found.".format( + block=currentBlock.__class__.__qualname__ + ), currentBlock) + + @classmethod + def stateParseStatements(cls, parserState: BlockToGroupParser): + currentBlock = parserState.Block + + if isinstance(currentBlock, Architecture.EndBlock): + parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, parserState.Block) + parserState.Pop() + parserState.BlockMarker = None + return + elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): + parserState.PushState = WhitespaceGroup.stateParse + parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + elif isinstance(currentBlock, CommentBlock): + parserState.PushState = CommentGroup.stateParse + parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + else: + for block in cls.STATEMENT_SIMPLE_BLOCKS: + if isinstance(currentBlock, block): + group = cls.STATEMENT_SIMPLE_BLOCKS[block] + parserState.PushState = group.stateParse + parserState.BlockMarker = currentBlock + return True + + for block in cls.STATEMENT_COMPOUND_BLOCKS: + if isinstance(currentBlock, block): + group = cls.STATEMENT_COMPOUND_BLOCKS[block] + parserState.PushState = group.stateParse + parserState.BlockMarker = currentBlock + return True + + if isinstance(currentBlock, EndOfDocumentBlock): + parserState.NextGroup = EndOfDocumentGroup(currentBlock) + return + + raise GroupParserException("End of architecture declaration not found.".format( + block=currentBlock.__class__.__qualname__ + ), currentBlock)
+ + +
[docs]@export +class PackageGroup(Group): + DECLARATION_SIMPLE_BLOCKS = { + Library.StartBlock: LibraryGroup, + Use.StartBlock: UseGroup, + ConstantDeclarationBlock: ConstantGroup, + # SharedVariableBlock: VariableGroup, + SignalDeclarationBlock: SignalGroup + } + DECLARATION_COMPOUND_BLOCKS = { + Function.NameBlock: FunctionGroup, + Procedure.NameBlock: ProcedureGroup + } + +
[docs] def __init__(self, previousGroup, startBlock, endBlock=None): + super().__init__(previousGroup, startBlock, endBlock) + + self._subGroups = dict(ChainMap( + {v: [] for v in chain( + self.DECLARATION_SIMPLE_BLOCKS.values(), + self.DECLARATION_COMPOUND_BLOCKS.values() + )}, + {CommentGroup: [], + WhitespaceGroup: [] + } + ))
+ + @classmethod + def stateParse(cls, parserState: BlockToGroupParser): + currentBlock = parserState.Block + + if isinstance(currentBlock, Package.NameBlock): + return + elif isinstance(currentBlock, Package.EndBlock): + parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, parserState.Block) + parserState.Pop() + parserState.BlockMarker = None + return + elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): + parserState.PushState = WhitespaceGroup.stateParse + parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + elif isinstance(currentBlock, CommentBlock): + parserState.PushState = CommentGroup.stateParse + parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + else: + for block in cls.DECLARATION_SIMPLE_BLOCKS: + if isinstance(currentBlock, block): + group = cls.DECLARATION_SIMPLE_BLOCKS[block] + parserState.PushState = group.stateParse + parserState.BlockMarker = currentBlock + return True + + for block in cls.DECLARATION_COMPOUND_BLOCKS: + if isinstance(currentBlock, block): + group = cls.DECLARATION_COMPOUND_BLOCKS[block] + parserState.PushState = group.stateParse + parserState.BlockMarker = currentBlock + return True + + if isinstance(currentBlock, EndOfDocumentBlock): + parserState.NextGroup = EndOfDocumentGroup(currentBlock) + return + + raise GroupParserException("End of package declaration not found.".format( + block=currentBlock.__class__.__qualname__ + ), currentBlock)
+ + +
[docs]@export +class PackageBodyGroup(Group): + DECLARATION_SIMPLE_BLOCKS = { + Library.StartBlock: LibraryGroup, + Use.StartBlock: UseGroup, + ConstantDeclarationBlock: ConstantGroup, + # SharedVariableBlock: VariableGroup, + SignalDeclarationBlock: SignalGroup + } + DECLARATION_COMPOUND_BLOCKS = { + Function.NameBlock: FunctionGroup, + Procedure.NameBlock: ProcedureGroup + } + +
[docs] def __init__(self, previousGroup, startBlock, endBlock=None): + super().__init__(previousGroup, startBlock, endBlock) + + self._subGroups = dict(ChainMap( + {v: [] for v in chain( + self.DECLARATION_SIMPLE_BLOCKS.values(), + self.DECLARATION_COMPOUND_BLOCKS.values() + )}, + {CommentGroup: [], + WhitespaceGroup: [] + } + ))
+ + @classmethod + def stateParse(cls, parserState: BlockToGroupParser): + currentBlock = parserState.Block + + if isinstance(currentBlock, PackageBody.NameBlock): + return + elif isinstance(currentBlock, PackageBody.EndBlock): + parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, parserState.Block) + parserState.Pop() + parserState.BlockMarker = None + return + elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): + parserState.PushState = WhitespaceGroup.stateParse + parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + elif isinstance(currentBlock, CommentBlock): + parserState.PushState = CommentGroup.stateParse + parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + else: + for block in cls.DECLARATION_SIMPLE_BLOCKS: + if isinstance(currentBlock, block): + group = cls.DECLARATION_SIMPLE_BLOCKS[block] + parserState.PushState = group.stateParse + parserState.BlockMarker = currentBlock + return True + + for block in cls.DECLARATION_COMPOUND_BLOCKS: + if isinstance(currentBlock, block): + group = cls.DECLARATION_COMPOUND_BLOCKS[block] + parserState.PushState = group.stateParse + parserState.NextGroup = group(parserState.LastGroup, parserState.BlockMarker, currentBlock) + parserState.BlockMarker = currentBlock + return True + + if isinstance(currentBlock, EndOfDocumentBlock): + parserState.NextGroup = EndOfDocumentGroup(currentBlock) + return + + raise GroupParserException("End of package body declaration not found.".format( + block=currentBlock.__class__.__qualname__ + ), currentBlock)
+ + +
[docs]@export +class ComponentGroup(Group): + SIMPLE_BLOCKS = { + # LibraryBlock: LibraryGroup, + # UseBlock: UseGroup + } + COMPOUND_BLOCKS = { + # Function.NameBlock: FunctionGroup, + # Procedure.NameBlock: ProcedureGroup + } + +
[docs] def __init__(self, previousGroup, startBlock, endBlock=None): + super().__init__(previousGroup, startBlock, endBlock) + + self._subGroups = { + CommentGroup: [], + WhitespaceGroup: [] + }
+ + @classmethod + def stateParse(cls, parserState: BlockToGroupParser): + currentBlock = parserState.Block + + if isinstance(currentBlock, Component.NameBlock): + return + elif isinstance(currentBlock, Component.EndBlock): + parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, parserState.Block) + parserState.Pop() + parserState.BlockMarker = None + return + elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): + parserState.PushState = WhitespaceGroup.stateParse + parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + elif isinstance(currentBlock, CommentBlock): + parserState.PushState = CommentGroup.stateParse + parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + else: + for block in cls.SIMPLE_BLOCKS: + if isinstance(currentBlock, block): + group = cls.SIMPLE_BLOCKS[block] + parserState.PushState = group.stateParse + parserState.BlockMarker = currentBlock + return True + + for block in cls.COMPOUND_BLOCKS: + if isinstance(currentBlock, block): + group = cls.COMPOUND_BLOCKS[block] + parserState.PushState = group.stateParse + parserState.BlockMarker = currentBlock + return True + + if isinstance(currentBlock, EndOfDocumentBlock): + parserState.NextGroup = EndOfDocumentGroup(currentBlock) + return + + raise GroupParserException("End of component declaration not found.".format( + block=currentBlock.__class__.__qualname__ + ), currentBlock)
+ + +
[docs]@export +class ConfigurationGroup(Group): + SIMPLE_BLOCKS = { + # LibraryBlock: LibraryGroup, + # UseBlock: UseGroup + } + COMPOUND_BLOCKS = { + # Function.NameBlock: FunctionGroup, + # Procedure.NameBlock: ProcedureGroup + } + +
[docs] def __init__(self, previousGroup, startBlock, endBlock=None): + super().__init__(previousGroup, startBlock, endBlock) + + self._subGroups = { + CommentGroup: [], + WhitespaceGroup: [] + }
+ + @classmethod + def stateParse(cls, parserState: BlockToGroupParser): + currentBlock = parserState.Block + + if isinstance(currentBlock, Configuration.NameBlock): + return + elif isinstance(currentBlock, Configuration.EndBlock): + parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, parserState.Block) + parserState.Pop() + parserState.BlockMarker = None + return + elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): + parserState.PushState = WhitespaceGroup.stateParse + parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + elif isinstance(currentBlock, CommentBlock): + parserState.PushState = CommentGroup.stateParse + parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + else: + for block in cls.SIMPLE_BLOCKS: + if isinstance(currentBlock, block): + group = cls.SIMPLE_BLOCKS[block] + parserState.PushState = group.stateParse + parserState.BlockMarker = currentBlock + return True + + for block in cls.COMPOUND_BLOCKS: + if isinstance(currentBlock, block): + group = cls.COMPOUND_BLOCKS[block] + parserState.PushState = group.stateParse + parserState.BlockMarker = currentBlock + return True + + if isinstance(currentBlock, EndOfDocumentBlock): + parserState.NextGroup = EndOfDocumentGroup(currentBlock) + return + + raise GroupParserException("End of configuration declaration not found.".format( + block=currentBlock.__class__.__qualname__ + ), currentBlock)
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Groups/List.html b/_modules/pyVHDLParser/Groups/List.html new file mode 100644 index 000000000..e143f3247 --- /dev/null +++ b/_modules/pyVHDLParser/Groups/List.html @@ -0,0 +1,450 @@ + + + + + + pyVHDLParser.Groups.List — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Groups.List

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators           import export
+
+from pyVHDLParser.Blocks            import CommentBlock, EndOfDocumentBlock
+from pyVHDLParser.Blocks.Common     import LinebreakBlock, IndentationBlock
+import pyVHDLParser.Blocks.InterfaceObject
+from pyVHDLParser.Blocks.List       import GenericList, ParameterList, PortList, SensitivityList
+from pyVHDLParser.Groups            import BlockToGroupParser, GroupParserException, Group, EndOfDocumentGroup
+from pyVHDLParser.Groups.Comment    import WhitespaceGroup, CommentGroup
+
+
+
[docs]@export +class GenericListGroup(Group): +
[docs] def __init__(self, previousGroup, startBlock, endBlock=None): + super().__init__(previousGroup, startBlock, endBlock) + + self._subGroups = { + CommentGroup: [], + WhitespaceGroup: [], + GenericListItemGroup: [] + }
+ + @classmethod + def stateParse(cls, parserState: BlockToGroupParser): + currentBlock = parserState.Block + + if isinstance(currentBlock, GenericList.OpenBlock): + return + elif isinstance(currentBlock, pyVHDLParser.Blocks.InterfaceObject.InterfaceConstantBlock): + parserState.PushState = GenericListItemGroup.stateParse + parserState.NextGroup = GenericListItemGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + elif isinstance(currentBlock, GenericList.CloseBlock): + parserState.Pop() + return + elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): + parserState.PushState = WhitespaceGroup.stateParse + parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + elif isinstance(currentBlock, CommentBlock): + parserState.PushState = CommentGroup.stateParse + parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + + if isinstance(currentBlock, EndOfDocumentBlock): + parserState.NextGroup = EndOfDocumentGroup(currentBlock) + return + + raise GroupParserException("End of generic list not found.", currentBlock)
+ + +
[docs]@export +class GenericListItemGroup(Group): + @classmethod + def stateParse(cls, parserState: BlockToGroupParser): + for block in parserState.GetBlockIterator: + if isinstance(block, GenericList.DelimiterBlock): + parserState.Pop() + return + elif isinstance(block, GenericList.CloseBlock): + # parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, block) + parserState.Pop() + return True + + raise GroupParserException("End of generic not found.", block)
+ + +
[docs]@export +class GenericMapGroup(Group): + @classmethod + def stateParse(cls, parserState: BlockToGroupParser): + block = parserState.Block + + raise NotImplementedError("State=Parse: {0!r}".format(block))
+ + +
[docs]@export +class GenericMapItemGroup(Group): + @classmethod + def stateParse(cls, parserState: BlockToGroupParser): + block = parserState.Block + + raise NotImplementedError("State=Parse: {0!r}".format(block))
+ + +
[docs]@export +class PortListGroup(Group): +
[docs] def __init__(self, previousGroup, startBlock, endBlock=None): + super().__init__(previousGroup, startBlock, endBlock) + + self._subGroups = { + CommentGroup: [], + WhitespaceGroup: [], + PortListItemGroup: [] + }
+ + @classmethod + def stateParse(cls, parserState: BlockToGroupParser): + currentBlock = parserState.Block + + if isinstance(currentBlock, PortList.OpenBlock): + return + elif isinstance(currentBlock, (pyVHDLParser.Blocks.InterfaceObject.InterfaceSignalBlock, PortList.DelimiterBlock)): + return + elif isinstance(currentBlock, PortList.CloseBlock): + parserState.Pop() + return + elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): + parserState.PushState = WhitespaceGroup.stateParse + parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + elif isinstance(currentBlock, CommentBlock): + parserState.PushState = CommentGroup.stateParse + parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + + if isinstance(currentBlock, EndOfDocumentBlock): + parserState.NextGroup = EndOfDocumentGroup(currentBlock) + return + + raise GroupParserException("End of generic list not found.", currentBlock)
+ + +
[docs]@export +class PortListItemGroup(Group): + @classmethod + def stateParse(cls, parserState: BlockToGroupParser): + for block in parserState.GetBlockIterator: + if isinstance(block, PortList.DelimiterBlock): + parserState.Pop() + return + elif isinstance(block, PortList.CloseBlock): + # parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, block) + parserState.Pop() + return True + + raise GroupParserException("End of port not found.", block)
+ + +
[docs]@export +class PortMapGroup(Group): + @classmethod + def stateParse(cls, parserState: BlockToGroupParser): + block = parserState.Block + + raise NotImplementedError("State=Parse: {0!r}".format(block))
+ + +
[docs]@export +class PortMapItemGroup(Group): + @classmethod + def stateParse(cls, parserState: BlockToGroupParser): + block = parserState.Block + + raise NotImplementedError("State=Parse: {0!r}".format(block))
+ + +
[docs]@export +class ParameterListGroup(Group): +
[docs] def __init__(self, previousGroup, startBlock, endBlock=None): + super().__init__(previousGroup, startBlock, endBlock) + + self._subGroups = { + CommentGroup: [], + WhitespaceGroup: [], + ParameterListItemGroup: [] + }
+ + @classmethod + def stateParse(cls, parserState: BlockToGroupParser): + currentBlock = parserState.Block + + if isinstance(currentBlock, ParameterList.OpenBlock): + return + elif isinstance(currentBlock, (ParameterList.ItemBlock, ParameterList.DelimiterBlock)): + return + elif isinstance(currentBlock, ParameterList.CloseBlock): + parserState.Pop() + return + elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): + parserState.PushState = WhitespaceGroup.stateParse + parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + elif isinstance(currentBlock, CommentBlock): + parserState.PushState = CommentGroup.stateParse + parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + + if isinstance(currentBlock, EndOfDocumentBlock): + parserState.NextGroup = EndOfDocumentGroup(currentBlock) + return + + raise GroupParserException("End of generic list not found.", currentBlock)
+ + +
[docs]@export +class ParameterListItemGroup(Group): + @classmethod + def stateParse(cls, parserState: BlockToGroupParser): + for block in parserState.GetBlockIterator: + if isinstance(block, ParameterList.DelimiterBlock): + parserState.Pop() + return + elif isinstance(block, ParameterList.CloseBlock): + # parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, block) + parserState.Pop() + return True + + raise GroupParserException("End of parameter not found.", block)
+ + +
[docs]@export +class ParameterMapGroup(Group): + @classmethod + def stateParse(cls, parserState: BlockToGroupParser): + block = parserState.Block + + raise NotImplementedError("State=Parse: {0!r}".format(block))
+ + +
[docs]@export +class ParameterMapItemGroup(Group): + @classmethod + def stateParse(cls, parserState: BlockToGroupParser): + block = parserState.Block + + raise NotImplementedError("State=Parse: {0!r}".format(block))
+ + +
[docs]@export +class SensitivityListGroup(Group): +
[docs] def __init__(self, previousGroup, startBlock, endBlock=None): + super().__init__(previousGroup, startBlock, endBlock) + + self._subGroups = { + CommentGroup: [], + WhitespaceGroup: [], + SensitivityListItemGroup: [] + }
+ + @classmethod + def stateParse(cls, parserState: BlockToGroupParser): + currentBlock = parserState.Block + + if isinstance(currentBlock, SensitivityList.OpenBlock): + return + elif isinstance(currentBlock, (SensitivityList.ItemBlock, SensitivityList.DelimiterBlock)): + return + elif isinstance(currentBlock, SensitivityList.CloseBlock): + parserState.Pop() + return + elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): + parserState.PushState = WhitespaceGroup.stateParse + parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + elif isinstance(currentBlock, CommentBlock): + parserState.PushState = CommentGroup.stateParse + parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + + if isinstance(currentBlock, EndOfDocumentBlock): + parserState.NextGroup = EndOfDocumentGroup(currentBlock) + return + + raise GroupParserException("End of generic list not found.", currentBlock)
+ + +
[docs]@export +class SensitivityListItemGroup(Group): + @classmethod + def stateParse(cls, parserState: BlockToGroupParser): + block = parserState.Block + + raise NotImplementedError("State=Parse: {0!r}".format(block))
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Groups/Object.html b/_modules/pyVHDLParser/Groups/Object.html new file mode 100644 index 000000000..23e1946da --- /dev/null +++ b/_modules/pyVHDLParser/Groups/Object.html @@ -0,0 +1,236 @@ + + + + + + pyVHDLParser.Groups.Object — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Groups.Object

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators                   import export
+
+from pyVHDLParser.Blocks.Object.Variable    import VariableDeclarationBlock
+from pyVHDLParser.Blocks.Object.Signal      import SignalDeclarationBlock
+from pyVHDLParser.Blocks.Object.Constant    import ConstantDeclarationBlock
+from pyVHDLParser.Blocks.Reference.Library  import EndBlock, StartBlock
+from pyVHDLParser.Blocks.Reference.Use      import EndBlock, StartBlock
+from pyVHDLParser.Groups                    import BlockToGroupParser, GroupParserException, Group
+
+
+
[docs]@export +class ConstantGroup(Group): + @classmethod + def stateParse(cls, parserState: BlockToGroupParser): + marker = parserState.Block + if parserState.Block.MultiPart: + for block in parserState.GetBlockIterator: + if isinstance(block, ConstantDeclarationBlock) and not block.MultiPart: + marker2 = block + break + else: + raise GroupParserException("End of multi parted constant declaration not found.", block) + else: + marker2 = marker + + parserState.NextGroup = cls(parserState.LastGroup, marker, marker2) + parserState.Pop() + return
+ + +
[docs]@export +class VariableGroup(Group): + @classmethod + def stateParse(cls, parserState: BlockToGroupParser): + marker = parserState.Block + if parserState.Block.MultiPart: + for block in parserState.GetBlockIterator: + if isinstance(block, VariableDeclarationBlock) and not block.MultiPart: + marker2 = block + break + else: + raise GroupParserException("End of multi parted variable declaration not found.", block) + else: + marker2 = marker + + parserState.NextGroup = cls(parserState.LastGroup, marker, marker2) + parserState.Pop() + return
+ + +
[docs]@export +class SignalGroup(Group): + @classmethod + def stateParse(cls, parserState: BlockToGroupParser): + marker = parserState.Block + if parserState.Block.MultiPart: + for block in parserState.GetBlockIterator: + if isinstance(block, SignalDeclarationBlock) and not block.MultiPart: + marker2 = block + break + else: + raise GroupParserException("End of multi parted signal declaration not found.", block) + else: + marker2 = marker + + parserState.NextGroup = cls(parserState.LastGroup, marker, marker2) + parserState.Pop() + return
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Groups/Reference.html b/_modules/pyVHDLParser/Groups/Reference.html new file mode 100644 index 000000000..5b3beb83f --- /dev/null +++ b/_modules/pyVHDLParser/Groups/Reference.html @@ -0,0 +1,198 @@ + + + + + + pyVHDLParser.Groups.Reference — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Groups.Reference

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators             import export
+
+from pyVHDLParser.Blocks.Reference    import Library, Use
+from pyVHDLParser.Groups              import BlockToGroupParser, GroupParserException, Group
+
+
+
[docs]@export +class LibraryGroup(Group): + @classmethod + def stateParse(cls, parserState: BlockToGroupParser): + for block in parserState.GetBlockIterator: + if isinstance(block, Library.EndBlock): + parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, block) + parserState.Pop() + return + + raise GroupParserException("End of library clause not found.", block)
+ + +
[docs]@export +class UseGroup(Group): + @classmethod + def stateParse(cls, parserState: BlockToGroupParser): + for block in parserState.GetBlockIterator: + if isinstance(block, Use.EndBlock): + parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, block) + parserState.Pop() + return + + raise GroupParserException("End of library clause not found.", block)
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Groups/Sequential/Function.html b/_modules/pyVHDLParser/Groups/Sequential/Function.html new file mode 100644 index 000000000..785f67a8a --- /dev/null +++ b/_modules/pyVHDLParser/Groups/Sequential/Function.html @@ -0,0 +1,405 @@ + + + + + + pyVHDLParser.Groups.Sequential.Function — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Groups.Sequential.Function

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from collections                          import ChainMap
+from itertools                            import chain
+
+from pyTooling.Decorators                 import export
+
+from pyVHDLParser.Token.Keywords          import EndToken
+from pyVHDLParser.Blocks                  import CommentBlock, EndOfDocumentBlock
+from pyVHDLParser.Blocks.Common           import LinebreakBlock, IndentationBlock
+from pyVHDLParser.Blocks.List             import GenericList, ParameterList
+from pyVHDLParser.Blocks.Object.Variable  import VariableDeclarationBlock
+from pyVHDLParser.Blocks.Object.Constant  import ConstantDeclarationBlock
+from pyVHDLParser.Blocks.Reference        import Use
+from pyVHDLParser.Blocks.Reporting.Report import ReportBlock
+from pyVHDLParser.Blocks.Sequential       import Function
+from pyVHDLParser.Groups                  import BlockToGroupParser, Group, GroupParserException, EndOfDocumentGroup
+from pyVHDLParser.Groups.Comment          import WhitespaceGroup, CommentGroup
+from pyVHDLParser.Groups.Concurrent       import ReportGroup
+from pyVHDLParser.Groups.List             import GenericListGroup, ParameterListGroup
+from pyVHDLParser.Groups.Object           import ConstantGroup, VariableGroup
+from pyVHDLParser.Groups.Reference        import UseGroup
+
+
+
[docs]@export +class FunctionGroup(Group): + DECLARATION_SIMPLE_BLOCKS = { + Use.StartBlock: UseGroup, + ConstantDeclarationBlock: ConstantGroup, + VariableDeclarationBlock: VariableGroup + } + DECLARATION_COMPOUND_BLOCKS = { + # Function.NameBlock: FunctionGroup, # FIXME: unresolvable reference + # Procedure.NameBlock: ProcedureGroup # FIXME: unresolvable reference + } + STATEMENT_SIMPLE_BLOCKS = { + ReportBlock: ReportGroup + } + STATEMENT_COMPOUND_BLOCKS = { + # If.OpenBlock: IfGroup + } + +
[docs] def __init__(self, previousGroup, startBlock, endBlock=None): + super().__init__(previousGroup, startBlock, endBlock) + + self._subGroups = dict(ChainMap( + {v: [] for v in chain( + self.DECLARATION_SIMPLE_BLOCKS.values(), + self.DECLARATION_COMPOUND_BLOCKS.values(), + self.STATEMENT_SIMPLE_BLOCKS.values(), + self.STATEMENT_COMPOUND_BLOCKS.values() + )}, + {CommentGroup: [], + WhitespaceGroup: [], + ReturnTypeGroup: [] + } + ))
+ + @classmethod + def stateParse(cls, parserState: BlockToGroupParser): + currentBlock = parserState.Block + + # consume OpenBlock + if isinstance(currentBlock, Function.NameBlock): + parserState.NextGroup = cls(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + parserState.NextState = cls.stateParseGenerics + return + else: + raise GroupParserException("Begin of function expected.", currentBlock) + + @classmethod + def stateParseGenerics(cls, parserState: BlockToGroupParser): + currentBlock = parserState.Block + + if isinstance(currentBlock, GenericList.OpenBlock): + parserState.NextState = cls.stateParseParameters + parserState.PushState = GenericListGroup.stateParse + parserState.NextGroup = GenericListGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + elif isinstance(currentBlock, ParameterList.OpenBlock): + parserState.NextState = cls.stateParseDeclarations + parserState.PushState = ParameterListGroup.stateParse + parserState.NextGroup = ParameterListGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + elif isinstance(currentBlock, Function.ReturnTypeBlock): + if isinstance(currentBlock.EndToken, EndToken): + parserState.Pop() + else: + parserState.NextState = cls.stateParse2 + return True + elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): + parserState.PushState = WhitespaceGroup.stateParse + parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + elif isinstance(currentBlock, CommentBlock): + parserState.PushState = CommentGroup.stateParse + parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + + if isinstance(currentBlock, EndOfDocumentBlock): + parserState.NextGroup = EndOfDocumentGroup(currentBlock) + return + + raise GroupParserException("End of generic clause not found.", currentBlock) + + @classmethod + def stateParseParameters(cls, parserState: BlockToGroupParser): + currentBlock = parserState.Block + + if isinstance(currentBlock, GenericList.OpenBlock): + parserState.NextState = cls.stateParse2 + parserState.PushState = ParameterListGroup.stateParse + parserState.NextGroup = ParameterListGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): + parserState.PushState = WhitespaceGroup.stateParse + parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + elif isinstance(currentBlock, CommentBlock): + parserState.PushState = CommentGroup.stateParse + parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + + if isinstance(currentBlock, EndOfDocumentBlock): + parserState.NextGroup = EndOfDocumentGroup(currentBlock) + return + + raise GroupParserException("End of parameters not found.", currentBlock) + + # FIXME move to FunctionGroup2 as stateParse + @classmethod + def stateParse2(cls, parserState: BlockToGroupParser): + currentBlock = parserState.Block + + # consume OpenBlock + if isinstance(currentBlock, Function.ReturnTypeBlock): + parserState.NextState = cls.stateParseDeclarations + parserState.PushState = cls.stateParse2 + parserState.NextGroup = ReturnTypeGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return + else: + parserState.Pop() + return True + + @classmethod + def stateParseDeclarations(cls, parserState: BlockToGroupParser): + currentBlock = parserState.Block + + if isinstance(currentBlock, Function.BeginBlock): + parserState.NextState = cls.stateParseStatements + return + elif isinstance(currentBlock, Function.EndBlock): + parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, parserState.Block) + parserState.Pop() + parserState.BlockMarker = None + return + elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): + parserState.PushState = WhitespaceGroup.stateParse + parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + elif isinstance(currentBlock, CommentBlock): + parserState.PushState = CommentGroup.stateParse + parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + else: + for block in cls.DECLARATION_SIMPLE_BLOCKS: + if isinstance(currentBlock, block): + group = cls.DECLARATION_SIMPLE_BLOCKS[block] + parserState.PushState = group.stateParse + parserState.BlockMarker = currentBlock + return True + + for block in cls.DECLARATION_COMPOUND_BLOCKS: + if isinstance(currentBlock, block): + group = cls.DECLARATION_COMPOUND_BLOCKS[block] + parserState.PushState = group.stateParse + parserState.BlockMarker = currentBlock + return True + + if isinstance(currentBlock, EndOfDocumentBlock): + parserState.NextGroup = EndOfDocumentGroup(currentBlock) + return + + raise GroupParserException("End of function declarative region not found.", currentBlock) + + @classmethod + def stateParseStatements(cls, parserState: BlockToGroupParser): + currentBlock = parserState.Block + + if isinstance(currentBlock, Function.EndBlock): + # parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, parserState.Block) + parserState.Pop() + return + elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): + parserState.PushState = WhitespaceGroup.stateParse + parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + elif isinstance(currentBlock, CommentBlock): + parserState.PushState = CommentGroup.stateParse + parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + else: + for block in cls.STATEMENT_SIMPLE_BLOCKS: + if isinstance(currentBlock, block): + group = cls.STATEMENT_SIMPLE_BLOCKS[block] + parserState.PushState = group.stateParse + parserState.BlockMarker = currentBlock + return True + + for block in cls.STATEMENT_COMPOUND_BLOCKS: + if isinstance(currentBlock, block): + group = cls.STATEMENT_COMPOUND_BLOCKS[block] + parserState.PushState = group.stateParse + parserState.BlockMarker = currentBlock + return True + + if isinstance(currentBlock, EndOfDocumentBlock): + parserState.NextGroup = EndOfDocumentGroup(currentBlock) + return + + raise GroupParserException("End of function declaration not found.", currentBlock)
+ + +
[docs]@export +class ReturnTypeGroup(Group): + pass
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Groups/Sequential/Procedure.html b/_modules/pyVHDLParser/Groups/Sequential/Procedure.html new file mode 100644 index 000000000..86bfa653c --- /dev/null +++ b/_modules/pyVHDLParser/Groups/Sequential/Procedure.html @@ -0,0 +1,380 @@ + + + + + + pyVHDLParser.Groups.Sequential.Procedure — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Groups.Sequential.Procedure

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from collections                          import ChainMap
+from itertools                            import chain
+
+from pyTooling.Decorators                 import export
+
+from pyVHDLParser.Blocks                  import CommentBlock, EndOfDocumentBlock
+from pyVHDLParser.Blocks.Common           import LinebreakBlock, IndentationBlock
+from pyVHDLParser.Blocks.List             import GenericList, ParameterList
+from pyVHDLParser.Blocks.Object.Variable  import VariableDeclarationBlock
+from pyVHDLParser.Blocks.Object.Constant  import ConstantDeclarationBlock
+from pyVHDLParser.Blocks.Reference        import Use
+from pyVHDLParser.Blocks.Reporting.Report import ReportBlock
+from pyVHDLParser.Blocks.Sequential       import Procedure
+from pyVHDLParser.Groups                  import BlockToGroupParser, Group, GroupParserException, EndOfDocumentGroup
+from pyVHDLParser.Groups.Comment          import WhitespaceGroup, CommentGroup
+from pyVHDLParser.Groups.List             import GenericListGroup, ParameterListGroup
+from pyVHDLParser.Groups.Object           import ConstantGroup, VariableGroup
+from pyVHDLParser.Groups.Reference        import UseGroup
+
+
+
[docs]@export +class ProcedureGroup(Group): + DECLARATION_SIMPLE_BLOCKS = { + Use.StartBlock: UseGroup, + ConstantDeclarationBlock: ConstantGroup, + VariableDeclarationBlock: VariableGroup + } + DECLARATION_COMPOUND_BLOCKS = { + # Procedure.NameBlock: ProcedureGroup, + # Procedure.NameBlock: ProcedureGroup + } + STATEMENT_SIMPLE_BLOCKS = { + # ReportBlock: ReportGroup + } + STATEMENT_COMPOUND_BLOCKS = { + # If.OpenBlock: IfGroup + } + +
[docs] def __init__(self, previousGroup, startBlock, endBlock=None): + super().__init__(previousGroup, startBlock, endBlock) + + self._subGroups = dict(ChainMap( + {v: [] for v in chain( + self.DECLARATION_SIMPLE_BLOCKS.values(), + self.DECLARATION_COMPOUND_BLOCKS.values(), + self.STATEMENT_SIMPLE_BLOCKS.values(), + self.STATEMENT_COMPOUND_BLOCKS.values() + )}, + {CommentGroup: [], + WhitespaceGroup: [] + } + ))
+ + @classmethod + def stateParse(cls, parserState: BlockToGroupParser): + currentBlock = parserState.Block + + # consume OpenBlock + if isinstance(currentBlock, Procedure.NameBlock): + parserState.NextGroup = cls(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + parserState.NextState = cls.stateParseGenerics + return + else: + raise GroupParserException("Begin of procedure expected.", currentBlock) + + @classmethod + def stateParseGenerics(cls, parserState: BlockToGroupParser): + currentBlock = parserState.Block + + if isinstance(currentBlock, GenericList.OpenBlock): + parserState.NextState = cls.stateParseParameters + parserState.PushState = GenericListGroup.stateParse + parserState.NextGroup = GenericListGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + elif isinstance(currentBlock, ParameterList.OpenBlock): + parserState.NextState = cls.stateParseDeclarations + parserState.PushState = ParameterListGroup.stateParse + parserState.NextGroup = ParameterListGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + elif isinstance(currentBlock, Procedure.VoidBlock): + parserState.NextState = cls.stateParseDeclarations + return + elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): + parserState.PushState = WhitespaceGroup.stateParse + parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + elif isinstance(currentBlock, CommentBlock): + parserState.PushState = CommentGroup.stateParse + parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + + if isinstance(currentBlock, EndOfDocumentBlock): + parserState.NextGroup = EndOfDocumentGroup(currentBlock) + return + + raise GroupParserException("End of generic clause not found.", currentBlock) + + + @classmethod + def stateParseParameters(cls, parserState: BlockToGroupParser): + currentBlock = parserState.Block + + if isinstance(currentBlock, GenericList.OpenBlock): + parserState.NextState = cls.stateParseDeclarations + parserState.PushState = ParameterListGroup.stateParse + parserState.NextGroup = ParameterListGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): + parserState.PushState = WhitespaceGroup.stateParse + parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + elif isinstance(currentBlock, CommentBlock): + parserState.PushState = CommentGroup.stateParse + parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + + if isinstance(currentBlock, EndOfDocumentBlock): + parserState.NextGroup = EndOfDocumentGroup(currentBlock) + return + + raise GroupParserException("End of parameters not found.", currentBlock) + + @classmethod + def stateParseDeclarations(cls, parserState: BlockToGroupParser): + currentBlock = parserState.Block + + if isinstance(currentBlock, Procedure.BeginBlock): + parserState.NextState = cls.stateParseStatements + return + elif isinstance(currentBlock, Procedure.EndBlock): + parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, parserState.Block) + parserState.Pop() + parserState.BlockMarker = None + return + elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): + parserState.PushState = WhitespaceGroup.stateParse + parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + elif isinstance(currentBlock, CommentBlock): + parserState.PushState = CommentGroup.stateParse + parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + else: + for block in cls.DECLARATION_SIMPLE_BLOCKS: + if isinstance(currentBlock, block): + group = cls.DECLARATION_SIMPLE_BLOCKS[block] + parserState.PushState = group.stateParse + parserState.BlockMarker = currentBlock + return True + + for block in cls.DECLARATION_COMPOUND_BLOCKS: + if isinstance(currentBlock, block): + group = cls.DECLARATION_COMPOUND_BLOCKS[block] + parserState.PushState = group.stateParse + parserState.BlockMarker = currentBlock + return True + + if isinstance(currentBlock, EndOfDocumentBlock): + parserState.NextGroup = EndOfDocumentGroup(currentBlock) + return + + raise GroupParserException("End of procedure declarative region not found.", currentBlock) + + @classmethod + def stateParseStatements(cls, parserState: BlockToGroupParser): + currentBlock = parserState.Block + + if isinstance(currentBlock, Procedure.EndBlock): + parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, parserState.Block) + parserState.Pop() + parserState.BlockMarker = None + return + elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): + parserState.PushState = WhitespaceGroup.stateParse + parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + elif isinstance(currentBlock, CommentBlock): + parserState.PushState = CommentGroup.stateParse + parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + else: + for block in cls.STATEMENT_SIMPLE_BLOCKS: + if isinstance(currentBlock, block): + group = cls.STATEMENT_SIMPLE_BLOCKS[block] + parserState.PushState = group.stateParse + parserState.BlockMarker = currentBlock + return True + + for block in cls.STATEMENT_COMPOUND_BLOCKS: + if isinstance(currentBlock, block): + group = cls.STATEMENT_COMPOUND_BLOCKS[block] + parserState.PushState = group.stateParse + parserState.BlockMarker = currentBlock + return True + + if isinstance(currentBlock, EndOfDocumentBlock): + parserState.NextGroup = EndOfDocumentGroup(currentBlock) + return + + raise GroupParserException("End of procedure declaration not found.", currentBlock)
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Groups/Sequential/Process.html b/_modules/pyVHDLParser/Groups/Sequential/Process.html new file mode 100644 index 000000000..3d622e0aa --- /dev/null +++ b/_modules/pyVHDLParser/Groups/Sequential/Process.html @@ -0,0 +1,461 @@ + + + + + + pyVHDLParser.Groups.Sequential.Process — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Groups.Sequential.Process

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from collections                          import ChainMap
+from itertools                            import chain
+
+from pyTooling.Decorators                 import export
+
+from pyVHDLParser.Blocks                  import CommentBlock, EndOfDocumentBlock
+from pyVHDLParser.Blocks.Common           import LinebreakBlock, IndentationBlock
+from pyVHDLParser.Blocks.List             import SensitivityList, GenericList, ParameterList
+from pyVHDLParser.Blocks.Object.Variable  import VariableDeclarationBlock
+from pyVHDLParser.Blocks.Object.Constant  import ConstantDeclarationBlock
+from pyVHDLParser.Blocks.Reference        import Use
+from pyVHDLParser.Blocks.Reporting.Report import ReportBlock
+from pyVHDLParser.Blocks.Sequential       import Process
+from pyVHDLParser.Groups                  import BlockToGroupParser, Group, GroupParserException, EndOfDocumentGroup
+from pyVHDLParser.Groups.Comment          import WhitespaceGroup, CommentGroup
+from pyVHDLParser.Groups.List             import GenericListGroup, ParameterListGroup, SensitivityListGroup
+from pyVHDLParser.Groups.Object           import ConstantGroup, VariableGroup
+from pyVHDLParser.Groups.Reference        import UseGroup
+
+
+
[docs]@export +class ProcessGroup(Group): + DECLARATION_SIMPLE_BLOCKS = { + Use.StartBlock: UseGroup, + ConstantDeclarationBlock: ConstantGroup, + VariableDeclarationBlock: VariableGroup + } + DECLARATION_COMPOUND_BLOCKS = { + # Process.NameBlock: ProcessGroup, + # Procedure.NameBlock: ProcedureGroup + } + STATEMENT_SIMPLE_BLOCKS = { + # ReportBlock: ReportGroup + } + STATEMENT_COMPOUND_BLOCKS = { + # If.OpenBlock: IfGroup + } + +
[docs] def __init__(self, previousGroup, startBlock, endBlock=None): + super().__init__(previousGroup, startBlock, endBlock) + + self._subGroups = dict(ChainMap( + {v: [] for v in chain( + self.DECLARATION_SIMPLE_BLOCKS.values(), + self.DECLARATION_COMPOUND_BLOCKS.values(), + self.STATEMENT_SIMPLE_BLOCKS.values(), + self.STATEMENT_COMPOUND_BLOCKS.values() + )}, + {CommentGroup: [], + WhitespaceGroup: [] + } + ))
+ + @classmethod + def stateParse(cls, parserState: BlockToGroupParser): + currentBlock = parserState.Block + + # consume OpenBlock + if isinstance(currentBlock, Process.OpenBlock): + parserState.NextGroup = cls(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + parserState.NextState = cls.stateParseSensitivityList + return + else: + raise GroupParserException("Begin of process expected.", currentBlock) + + @classmethod + def stateParseSensitivityList(cls, parserState: BlockToGroupParser): + currentBlock = parserState.Block + + if isinstance(currentBlock, SensitivityList.OpenBlock): + parserState.NextState = cls.stateParseDeclarations + parserState.PushState = SensitivityListGroup.stateParse + parserState.NextGroup = SensitivityListGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): + parserState.PushState = WhitespaceGroup.stateParse + parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + elif isinstance(currentBlock, CommentBlock): + parserState.PushState = CommentGroup.stateParse + parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + + if isinstance(currentBlock, EndOfDocumentBlock): + parserState.NextGroup = EndOfDocumentGroup(currentBlock) + return + + raise GroupParserException("End of process sensitivity list not found.", currentBlock) + + @classmethod + def stateParseDeclarations(cls, parserState: BlockToGroupParser): + currentBlock = parserState.Block + + if isinstance(currentBlock, Process.BeginBlock): + parserState.NextState = cls.stateParseStatements + return + elif isinstance(currentBlock, Process.EndBlock): + parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, parserState.Block) + parserState.Pop() + parserState.BlockMarker = None + return + elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): + parserState.PushState = WhitespaceGroup.stateParse + parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + elif isinstance(currentBlock, CommentBlock): + parserState.PushState = CommentGroup.stateParse + parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + else: + for block in cls.DECLARATION_SIMPLE_BLOCKS: + if isinstance(currentBlock, block): + group = cls.DECLARATION_SIMPLE_BLOCKS[block] + parserState.PushState = group.stateParse + parserState.BlockMarker = currentBlock + return True + + for block in cls.DECLARATION_COMPOUND_BLOCKS: + if isinstance(currentBlock, block): + group = cls.DECLARATION_COMPOUND_BLOCKS[block] + parserState.PushState = group.stateParse + parserState.BlockMarker = currentBlock + return True + + if isinstance(currentBlock, EndOfDocumentBlock): + parserState.NextGroup = EndOfDocumentGroup(currentBlock) + return + + raise GroupParserException("End of process declarative region not found.", currentBlock) + + @classmethod + def stateParseStatements(cls, parserState: BlockToGroupParser): + currentBlock = parserState.Block + + if isinstance(currentBlock, Process.EndBlock): + parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, parserState.Block) + parserState.Pop() + parserState.BlockMarker = None + return + elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): + parserState.PushState = WhitespaceGroup.stateParse + parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + elif isinstance(currentBlock, CommentBlock): + parserState.PushState = CommentGroup.stateParse + parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) + parserState.BlockMarker = currentBlock + return True + else: + for block in cls.STATEMENT_SIMPLE_BLOCKS: + if isinstance(currentBlock, block): + group = cls.STATEMENT_SIMPLE_BLOCKS[block] + parserState.PushState = group.stateParse + parserState.BlockMarker = currentBlock + return True + + for block in cls.STATEMENT_COMPOUND_BLOCKS: + if isinstance(currentBlock, block): + group = cls.STATEMENT_COMPOUND_BLOCKS[block] + parserState.PushState = group.stateParse + parserState.BlockMarker = currentBlock + return True + + if isinstance(currentBlock, EndOfDocumentBlock): + parserState.NextGroup = EndOfDocumentGroup(currentBlock) + return + + raise GroupParserException("End of process declaration not found.", currentBlock)
+ + + +
[docs]@export +class IfGroup(Group): + @classmethod + def stateParse(cls, parserState: BlockToGroupParser): + block = parserState.Block + + raise NotImplementedError("State=Parse: {0!r}".format(block))
+ + +
[docs]@export +class IfBranchGroup(Group): + @classmethod + def stateParse(cls, parserState: BlockToGroupParser): + block = parserState.Block + + raise NotImplementedError("State=Parse: {0!r}".format(block))
+ + +
[docs]@export +class ElsIfBranchGroup(Group): + @classmethod + def stateParse(cls, parserState: BlockToGroupParser): + block = parserState.Block + + raise NotImplementedError("State=Parse: {0!r}".format(block))
+ + +
[docs]@export +class ElseBranchGroup(Group): + @classmethod + def stateParse(cls, parserState: BlockToGroupParser): + block = parserState.Block + + raise NotImplementedError("State=Parse: {0!r}".format(block))
+ + +
[docs]@export +class CaseGroup(Group): + @classmethod + def stateParse(cls, parserState: BlockToGroupParser): + block = parserState.Block + + raise NotImplementedError("State=Parse: {0!r}".format(block))
+ + +
[docs]@export +class ChoiceGroup(Group): + @classmethod + def stateParse(cls, parserState: BlockToGroupParser): + block = parserState.Block + + raise NotImplementedError("State=Parse: {0!r}".format(block))
+ + +
[docs]@export +class ForLoopGroup(Group): + @classmethod + def stateParse(cls, parserState: BlockToGroupParser): + block = parserState.Block + + raise NotImplementedError("State=Parse: {0!r}".format(block))
+ + +
[docs]@export +class WhileLoopGroup(Group): + @classmethod + def stateParse(cls, parserState: BlockToGroupParser): + block = parserState.Block + + raise NotImplementedError("State=Parse: {0!r}".format(block))
+ + +
[docs]@export +class NextGroup(Group): + @classmethod + def stateParse(cls, parserState: BlockToGroupParser): + block = parserState.Block + + raise NotImplementedError("State=Parse: {0!r}".format(block))
+ + +
[docs]@export +class ExitGroup(Group): + @classmethod + def stateParse(cls, parserState: BlockToGroupParser): + block = parserState.Block + + raise NotImplementedError("State=Parse: {0!r}".format(block))
+ + +
[docs]@export +class ReturnGroup(Group): + @classmethod + def stateParse(cls, parserState: BlockToGroupParser): + block = parserState.Block + + raise NotImplementedError("State=Parse: {0!r}".format(block))
+ + +
[docs]@export +class VariableAssignmentGroup(Group): + @classmethod + def stateParse(cls, parserState: BlockToGroupParser): + block = parserState.Block + + raise NotImplementedError("State=Parse: {0!r}".format(block))
+ + +
[docs]@export +class SignalAssignmentGroup(Group): + @classmethod + def stateParse(cls, parserState: BlockToGroupParser): + block = parserState.Block + + raise NotImplementedError("State=Parse: {0!r}".format(block))
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/LanguageModel/DesignUnit.html b/_modules/pyVHDLParser/LanguageModel/DesignUnit.html new file mode 100644 index 000000000..98ae1f1ce --- /dev/null +++ b/_modules/pyVHDLParser/LanguageModel/DesignUnit.html @@ -0,0 +1,203 @@ + + + + + + pyVHDLParser.LanguageModel.DesignUnit — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+
    +
  • »
  • +
  • Module code »
  • +
  • pyVHDLParser.LanguageModel.DesignUnit
  • +
  • +
  • +
+
+
+ +
+
+ +

Source code for pyVHDLParser.LanguageModel.DesignUnit

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2022 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators import export
+
+from pyVHDLModel.DesignUnit import Context as ModelContext,	Entity as ModelEntity, Architecture as ModelArchitecture
+from pyVHDLModel.DesignUnit import Configuration as ModelConfiguration,	Package as ModelPackage, PackageBody as ModelPackageBody
+
+from ..Token import Token
+
+
+
[docs]@export +class Context(ModelContext): + pass
+ + +
[docs]@export +class Entity(ModelEntity): + _startToken: Token
+ + +
[docs]@export +class Architecture(ModelArchitecture): + pass
+ + +
[docs]@export +class Configuration(ModelConfiguration): + pass
+ + +
[docs]@export +class Package(ModelPackage): + pass
+ + +
[docs]@export +class PackageBody(ModelPackageBody): + pass
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/NetlistModel/NetlistModel.html b/_modules/pyVHDLParser/NetlistModel/NetlistModel.html new file mode 100644 index 000000000..83d0a2899 --- /dev/null +++ b/_modules/pyVHDLParser/NetlistModel/NetlistModel.html @@ -0,0 +1,188 @@ + + + + + + pyVHDLParser.NetlistModel.NetlistModel — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+
    +
  • »
  • +
  • Module code »
  • +
  • pyVHDLParser.NetlistModel.NetlistModel
  • +
  • +
  • +
+
+
+ +
+
+ +

Source code for pyVHDLParser.NetlistModel.NetlistModel

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators             import export
+
+
+
[docs]@export +class ModelBase: + pass
+ + +
[docs]@export +class Netlist(ModelBase): + pass
+ + +
[docs]@export +class Wire(ModelBase): + pass
+ + +
[docs]@export +class Primitive(ModelBase): + pass
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/SimulationModel/EventSystem.html b/_modules/pyVHDLParser/SimulationModel/EventSystem.html new file mode 100644 index 000000000..2eb44d5cd --- /dev/null +++ b/_modules/pyVHDLParser/SimulationModel/EventSystem.html @@ -0,0 +1,233 @@ + + + + + + pyVHDLParser.SimulationModel.EventSystem — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+
    +
  • »
  • +
  • Module code »
  • +
  • pyVHDLParser.SimulationModel.EventSystem
  • +
  • +
  • +
+
+
+ +
+
+ +

Source code for pyVHDLParser.SimulationModel.EventSystem

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators             import export
+
+
+
[docs]@export +class Scheduler: +
[docs] def __init__(self): + self._now = 0 + self._globalTimeLine = TimeLine()
+ + def AddEvent(self, relTime): + pass + + def GetNextTime(self): + return None
+ + +
[docs]@export +class Event: +
[docs] def __init__(self, time, process): + self._previous = None + self._next = None + self._time = time + self.WakeList = [process]
+ + def AddProcess(self, process): + self.WakeList.append(process)
+ + +
[docs]@export +class Transaction: +
[docs] def __init__(self, time, value): + self._time = time + self._value = value
+ +
[docs] def __str__(self): + return "({time}, {value})".format(time=self._time, value=self._value)
+ + __repr__ = __str__
+ + +
[docs]@export +class TimeLine: +
[docs] def __init__(self): + self._transactions = []
+ + def AddTransaction(self, transaction): + pass
+ + +
[docs]@export +class Waveform: +
[docs] def __init__(self, signal): + self._signal = signal + self._transactions = []
+ + def Initialize(self, value): + self._transactions.append(Transaction(0, value)) + + def AddEvent(self, time, value): + self._transactions.append(Transaction(time, value))
+ + +
[docs]@export +class ProjectedWaveform(TimeLine): +
[docs] def __init__(self, signal): + self._signal = signal
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/SimulationModel/SimulationModel.html b/_modules/pyVHDLParser/SimulationModel/SimulationModel.html new file mode 100644 index 000000000..26b18411c --- /dev/null +++ b/_modules/pyVHDLParser/SimulationModel/SimulationModel.html @@ -0,0 +1,294 @@ + + + + + + pyVHDLParser.SimulationModel.SimulationModel — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+
    +
  • »
  • +
  • Module code »
  • +
  • pyVHDLParser.SimulationModel.SimulationModel
  • +
  • +
  • +
+
+
+ +
+
+ +

Source code for pyVHDLParser.SimulationModel.SimulationModel

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators                     import export
+
+from pyVHDLParser.SimulationModel.EventSystem import ProjectedWaveform, Waveform, Scheduler, Event
+
+
+
[docs]@export +class Simulation: +
[docs] def __init__(self): + self._signals = [] + self._processes = [] + self._scheduler = Scheduler()
+ + def AddSignal(self, signal): + self._signals.append(signal) + signal.Simulator = self + + def AddProcess(self, process): + self._processes.append(process) + + def Initialize(self): + for signal in self._signals: + signal.Initialize() + for process in self._processes: + process.Initialize() + + def Run(self): + iterators = [(p,iter(p._generator())) for p in self._processes] + + for process,iterator in iterators: + signalChanges,time = next(iterator) + for signal,value in signalChanges: + signal.SetValue(value) + + self._scheduler.AddEvent(Event(self._scheduler._now + time, process)) + + + print(time) + + + + for signal in self._signals: + print("{signal!s}: {wave}".format(signal=signal, wave=signal._waveform._transactions)) + + @property + def Now(self): + return self._scheduler._now + + + def ExportVCD(self, filename): + pass
+ + +
[docs]@export +class Path: +
[docs] def __init__(self, name, path): + self._name = name + self._path = path
+ +
[docs] def __repr__(self): + return self._path
+ +
[docs] def __str__(self): + return self._name
+ + +
[docs]@export +class Signal: +
[docs] def __init__(self, path, subtype, initializer=None): + self._path = path + self._subtype = subtype + self._initializer = initializer + self._drivingValue = None + self._projectedWaveform = ProjectedWaveform(self) + self._waveform = Waveform(self) + self.Simulator = None
+ + def Initialize(self): + if self._initializer is not None: + result = self._initializer() + else: + result = self._subtype.Attributes.Low() + self._waveform.Initialize(result) + + def SetValue(self, value): + self._waveform.AddEvent(self.Simulator.Now, value) + +
[docs] def __repr__(self): + return "{path!r}: {value}".format(path=self._path, value="------")
+ +
[docs] def __str__(self): + return "{path!s}: {value}".format(path=self._path, value="------")
+ + +
[docs]@export +class Process: +
[docs] def __init__(self, path, generator, sensitivityList=None): + self._path = path + self._sensitivityList = sensitivityList + self._generator = generator + self._constants = [] + self._variables = [] + self._outputs = [] + self._instructions = []
+ + def Initialize(self): + pass
+ + +
[docs]@export +class Source: + pass
+ + +
[docs]@export +class Driver(Source): + pass
+ + +
[docs]@export +class ResolutionFunction: +
[docs] def __init__(self): + self._function = None
+ + +
[docs]@export +class DrivingValue: + pass
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Token.html b/_modules/pyVHDLParser/Token.html new file mode 100644 index 000000000..191091150 --- /dev/null +++ b/_modules/pyVHDLParser/Token.html @@ -0,0 +1,656 @@ + + + + + + pyVHDLParser.Token — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Token

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from typing                   import Iterator
+
+from pyTooling.Decorators     import export
+from pyTooling.MetaClasses import ExtendedType
+
+from pyVHDLParser             import SourceCodePosition, StartOfDocument, EndOfDocument, StartOfSnippet, EndOfSnippet
+from pyVHDLParser.Base        import ParserException
+
+
+
[docs]@export +def CharacterTranslation(value: str, oneLiner: bool = False) -> str: + buffer = "" + charIterator = iter(value) + try: + while char := next(charIterator): + if char == "\r": + nextChar = next(charIterator) + if nextChar == "\n": + buffer += \\r\\n»" + if not oneLiner: + buffer += "\n" + else: + buffer += \\n»" + if not oneLiner: + buffer += "\n" + + if nextChar == "\t": + buffer += \\n»" + else: + buffer += nextChar + elif char == "\n": + buffer += \\n»" + if not oneLiner: + buffer += "\n" + elif char == "\t": + buffer += \\t»" + else: + buffer += char + except StopIteration: + pass + + return buffer
+ + +
[docs]@export +class TokenIterator(metaclass=ExtendedType, useSlots=True): + startToken: 'Token' + currentToken: 'Token' + stopToken: 'Token' + inclusiveStopToken: bool + + state: int #: internal states: 0 = normal, 1 = reached stopToken, 2 = reached EndOfToken + +
[docs] def __init__(self, startToken: 'Token', inclusiveStartToken: bool=False, inclusiveStopToken: bool=True, stopToken: 'Token'=None): + self.startToken = startToken + self.currentToken = startToken if inclusiveStartToken else startToken.NextToken + self.stopToken = stopToken + self.inclusiveStopToken = inclusiveStopToken + + self.state = 0
+ + def __iter__(self) -> 'TokenIterator': + return self + + def __next__(self) -> 'Token': + # in last call of '__next__', the last token in the sequence was returned + if self.state > 0: + raise StopIteration(self.state) + + token = self.currentToken + if token is self.stopToken: + if not self.inclusiveStopToken: + raise StopIteration(1) + else: + self.currentToken = None + self.state = 1 + elif isinstance(self.currentToken, EndOfToken): + if not self.inclusiveStopToken: + raise StopIteration(2) + else: + self.currentToken = None + self.state = 2 + else: + self.currentToken = token.NextToken + if self.currentToken is None: + raise ParserException("Found open end while iterating token sequence.") # FIXME: how to append last token? + + return token
+ + +
[docs]@export +class TokenReverseIterator(metaclass=ExtendedType, useSlots=True): + startToken: 'Token' + currentToken: 'Token' + stopToken: 'Token' + inclusiveStopToken: bool + + state: int #: internal states: 0 = normal, 1 = reached stopToken, 2 = reached StartOfToken + +
[docs] def __init__(self, startToken: 'Token', inclusiveStartToken: bool=False, inclusiveStopToken: bool=True, stopToken: 'Token'=None): + self.startToken = startToken + self.currentToken = startToken if inclusiveStartToken else startToken.PreviousToken + self.stopToken = stopToken + self.inclusiveStopToken = inclusiveStopToken + + self.state = 0
+ + def __iter__(self) -> 'TokenReverseIterator': + return self + + def __next__(self) -> 'Token': + # in last call of '__next__', the last token in the sequence was returned + if self.state > 0: + raise StopIteration(self.state) + + token = self.currentToken + if token is self.stopToken: + self.state = 1 + if not self.inclusiveStopToken: + raise StopIteration(self.state) + else: + self.currentToken = None + elif isinstance(self.currentToken, EndOfToken): + self.state = 2 + if not self.inclusiveStopToken: + raise StopIteration(self.state) + else: + self.currentToken = None + else: + self.currentToken = token.PreviousToken + if self.currentToken is None: + raise ParserException("Found open end while iterating token sequence.") # FIXME: how to append last token? + + return token
+ + +
[docs]@export +class Token(metaclass=ExtendedType, useSlots=True): + """Base-class for all token classes.""" + + _previousToken: 'Token' #: Reference to the previous token + NextToken: 'Token' #: Reference to the next token + Start: SourceCodePosition #: Position for the token start + End: SourceCodePosition #: Position for the token end + +
[docs] def __init__(self, previousToken: 'Token', start: SourceCodePosition, end: SourceCodePosition = None): + """ + Initializes a token object. + + While initialization, the following additional tasks are done: + + * link this token to previous token. + * link previous token to this token. + """ + previousToken.NextToken = self + self._previousToken = previousToken + self.NextToken = None + self.Start = start + self.End = end
+ + def __len__(self) -> int: + return self.End.Absolute - self.Start.Absolute + 1 + + def GetIterator(self, inclusiveStartToken: bool = False, inclusiveStopToken: bool = True, stopToken: 'Token' = None) -> Iterator['Token']: + return TokenIterator(self, inclusiveStartToken=inclusiveStartToken, inclusiveStopToken=inclusiveStopToken, stopToken=stopToken) + + def GetReverseIterator(self, inclusiveStartToken: bool = False, inclusiveStopToken: bool = True, stopToken: 'Token' = None) -> Iterator['Token']: + return TokenReverseIterator(self, inclusiveStartToken=inclusiveStartToken, inclusiveStopToken=inclusiveStopToken, stopToken=stopToken) + + @property + def PreviousToken(self) -> 'Token': + return self._previousToken + + @PreviousToken.setter + def PreviousToken(self, value: 'Token'): + self._previousToken = value + value.NextToken = self + + @property + def Length(self) -> int: + return len(self) + +
[docs] def __str__(self) -> str: + return f"{self.__class__.__qualname__} at {self.Start!s}"
+ +
[docs] def __repr__(self) -> str: + return self.__str__()
+ + +
[docs]@export +class ValuedToken(Token): + """ + Base-class for all *valued* token. + + A ValuedToken contains a :attr:`Value` field for the underlying string from the source code file. + """ + + Value: str #: String value of this token. + +
[docs] def __init__(self, previousToken: Token, value: str, start: SourceCodePosition, end: SourceCodePosition = None): + """Initializes a *valued* token object.""" + super().__init__(previousToken, start, end) + self.Value = value
+ + def __iter__(self) -> Iterator[str]: + return iter(self.Value) + +
[docs] def __eq__(self, other: str) -> bool: + """Return true if the internal value is equal to the second operand.""" + return self.Value == other
+ +
[docs] def __ne__(self, other: str) -> bool: + """Return true if the internal value is unequal to the second operand.""" + return self.Value != other
+ +
[docs] def __hash__(self): + return super().__hash__()
+ +
[docs] def __str__(self) -> str: + return self.Value
+ +
[docs] def __repr__(self) -> str: + value = "'" + CharacterTranslation(self.Value) + "' " + return f"<{self.__class__.__name__: <50} {value:.<59} at {self.Start!r}>"
+ + +
[docs]@export +class StartOfToken(Token): + """Base-class for meta-tokens representing the start of a token stream.""" + +
[docs] def __init__(self): + """Initializes a StartOfToken object.""" + self._previousToken = None + self.NextToken = None + self.Start = SourceCodePosition(1, 1, 1) + self.End = None
+ +
[docs] def __len__(self) -> int: + """Returns always 0.""" + return 0
+ +
[docs] def __str__(self) -> str: + return f"<{self.__class__.__name__}>"
+ + +
[docs]@export +class EndOfToken(Token): + """Base-class for meta-tokens representing the end of a token stream.""" + +
[docs] def __init__(self, previousToken: Token, end: SourceCodePosition): + """Initializes a EndOfToken object.""" + super().__init__(previousToken, start=end, end=end)
+ +
[docs] def __len__(self) -> int: + """Returns always 0.""" + return 0
+ +
[docs] def __str__(self) -> str: + return f"<{self.__class__.__name__}>"
+ + +
[docs]@export +class StartOfDocumentToken(StartOfToken, StartOfDocument): + pass
+ + +
[docs]@export +class EndOfDocumentToken(EndOfToken, EndOfDocument): + pass
+ + +
[docs]@export +class StartOfSnippetToken(StartOfToken, StartOfSnippet): + pass
+ + +
[docs]@export +class EndOfSnippetToken(EndOfToken, EndOfSnippet): + pass
+ + +
[docs]@export +class CharacterToken(ValuedToken): + """Token representing a single character.""" + +
[docs] def __init__(self, previousToken: Token, value: str, start: SourceCodePosition): + """ + Initializes a CharacterToken object. + + This class is used for single characters, thus: :attr:`Start` = :attr:`End`. + """ + super().__init__(previousToken, value, start=start, end=start)
+ + def __len__(self) -> int: + return 1 + +
[docs] def __repr__(self) -> str: + char = "'" + CharacterTranslation(self.Value) + "' " + return f"<{self.__class__.__name__: <50} {char:.<59} at {self.Start!r}>"
+ + +
[docs]@export +class FusedCharacterToken(CharacterToken): + """Token representing a double (or triple) character.""" + +
[docs] def __init__(self, previousToken: Token, value: str, start: SourceCodePosition, end: SourceCodePosition): + """Initializes a FusedCharacterToken object.""" + super().__init__(previousToken, value, start=start) + self.End = end
+ + # FIXME: check if base-base class implementation could solve this question. + def __len__(self) -> int: + return len(self.Value) + +
[docs] def __repr__(self) -> str: + char = "'" + self.Value + "' " + return f"<{self.__class__.__name__: <50} {char:.<59} at {self.Start!r}>"
+ + +
[docs]@export +class SpaceToken(ValuedToken): + """Token representing a space (space or tab).""" + +
[docs] def __repr__(self) -> str: + value = "'" + self.Value + "' " + return f"<{self.__class__.__name__: <50} {value:.<59} at {self.Start!r}>"
+ + +
[docs]@export +class WordToken(ValuedToken): + """Token representing a string.""" + +
[docs] def __eq__(self, other: str) -> bool: + """Return true if the internal value is equal to the second operand.""" + return self.Value == other
+ +
[docs] def __ne__(self, other: str) -> bool: + """Return true if the internal value is unequal to the second operand.""" + return self.Value != other
+ +
[docs] def __le__(self, other: str) -> bool: + """Return true if the internal value is equivalent (lower case, string compare) to the second operand.""" + return self.Value.lower() == other
+ +
[docs] def __ge__(self, other: str) -> bool: + """Return true if the internal value is equivalent (upper case, string compare) to the second operand.""" + return self.Value.upper() == other
+ +
[docs] def __hash__(self): + return super().__hash__()
+ +
[docs] def __repr__(self) -> str: + value = "'" + self.Value + "' " + return f"<{self.__class__.__name__: <50} {value:.<59} at {self.Start!r}>"
+ + +
[docs]@export +class VHDLToken(ValuedToken): + """Base-class for all VHDL specific tokens."""
+ + +
[docs]@export +class CommentToken(VHDLToken): + """Base-class for comment tokens.""" + +
[docs] def __repr__(self) -> str: + value = self.Value + value = value.replace("\n", "\\n") + value = value.replace("\r", "\\r") + value = value.replace("\t", "\\t") + value = "'" + value + "' " + return f"<{self.__class__.__name__: <50} {value:.<59} at {self.Start!r}>"
+ + +
[docs]@export +class SingleLineCommentToken(CommentToken): + """Token representing a single-line comment."""
+ + +
[docs]@export +class MultiLineCommentToken(CommentToken): + """Token representing a multi-line comment."""
+ + +
[docs]@export +class LiteralToken(VHDLToken): + """Base-class for all literals in VHDL.""" + +
[docs] def __eq__(self, other: str): + return self.Value == other
+ +
[docs] def __ne__(self, other: str): + return self.Value != other
+ +
[docs] def __hash__(self): + return super().__hash__()
+ +
[docs] def __repr__(self) -> str: + value = self.Value + " " + return f"<{self.__class__.__name__: <50} {value:.<59} at {self.Start!r}>"
+ + +
[docs]@export +class IntegerLiteralToken(LiteralToken): + """Token representing an integer literal."""
+ + +
[docs]@export +class RealLiteralToken(LiteralToken): + """Token representing a real literal."""
+ + +
[docs]@export +class CharacterLiteralToken(LiteralToken): + """Token representing a character literal in VHDL.""" + +
[docs] def __init__(self, previousToken: Token, value: str, start: SourceCodePosition, end: SourceCodePosition): + """ + Initializes a CharacterLiteralToken object. + + Single quotes are omitted in the :attr:`Value`. + """ + super().__init__(previousToken, value[1:-1], start=start, end=end)
+ +
[docs] def __repr__(self) -> str: + value = "'" + self.Value + "' " + return f"<{self.__class__.__name__: <50} {value:.<59} at {self.Start!r}>"
+ + +
[docs]@export +class StringLiteralToken(LiteralToken): + """Token representing a string literal in VHDL.""" + +
[docs] def __init__(self, previousToken: Token, value: str, start: SourceCodePosition, end: SourceCodePosition): + """ + Initializes a CharacterLiteralToken object. + + Double quotes are omitted in the :attr:`Value`. + """ + super().__init__(previousToken, value[1:-1], start=start, end=end)
+ +
[docs] def __repr__(self) -> str: + value = "\"" + self.Value + "\" " + return f"<{self.__class__.__name__: <50} {value:.<59} at {self.Start!r}>"
+ + +
[docs]@export +class BitStringLiteralToken(LiteralToken): + """Token representing a bit-string literal in VHDL.""" + +
[docs] def __init__(self, previousToken: Token, value: str, start: SourceCodePosition, end: SourceCodePosition): + """ + Initializes a BitStringLiteralToken object. + + Double quotes are omitted in the :attr:`Value`. + """ + super().__init__(previousToken, value[1:-1], start=start, end=end)
+ +
[docs] def __repr__(self) -> str: + value = "\"" + self.Value + "\" " + return f"<{self.__class__.__name__: <50} {value:.<59} at {self.Start!r}>"
+ + +
[docs]@export +class ExtendedIdentifier(VHDLToken): + """Token representing an extended identifier in VHDL."""
+ + +
[docs]@export +class DirectiveToken(CommentToken): + pass
+ + +
[docs]@export +class LinebreakToken(VHDLToken): + """Token representing a linebreak in the source code file.""" + +
[docs] def __repr__(self) -> str: + return f"<{self.__class__.__name__ + ' ':-<111} at {self.Start!r}>"
+ + +
[docs]@export +class IndentationToken(SpaceToken): + """Token representing an indentation in a source code line.""" + +
[docs] def __repr__(self) -> str: + value = self.Value + value = value.replace("\t", "\\t") + return f"""<{self.__class__.__name__: <50} {"'" + value + "' ":.<59} at {self.Start!r}>"""
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Token/Keywords.html b/_modules/pyVHDLParser/Token/Keywords.html new file mode 100644 index 000000000..1e1936df0 --- /dev/null +++ b/_modules/pyVHDLParser/Token/Keywords.html @@ -0,0 +1,1138 @@ + + + + + + pyVHDLParser.Token.Keywords — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Token.Keywords

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from typing import Any
+
+from pyTooling.Decorators       import export
+
+from pyVHDLParser               import SourceCodePosition
+from pyVHDLParser.Token         import Token, WordToken, VHDLToken, CharacterToken
+from pyVHDLParser.Token.Parser  import TokenizerException
+
+
+
[docs]@export +class SpecificVHDLToken(VHDLToken): + """Base-class for all specific tokens. + + Simple token will be converted to specific tokens while parsing. + The internal data is copied, and the original token is replaced by this token. + """ + +
[docs] def __init__(self, previousToken: Token = None, value: Any = None, start: SourceCodePosition = None, end: SourceCodePosition = None, fromExistingToken: Token = None): + """ + Initialize a specific token, by copying the simple token's data and link + this new token to the previous token as a replacement. + """ + if fromExistingToken is None: + super().__init__(previousToken, value, start, end) + else: + super().__init__(fromExistingToken.PreviousToken, fromExistingToken.Value, fromExistingToken.Start, fromExistingToken.End)
+ + +
[docs]@export +class BoundaryToken(SpecificVHDLToken): + """ + Token representing a boundary between (reserved) words. + + In many cases, a :class:`SpaceToken`, :class:`CommentToken`, + :class:`LinebreakToken` or :class:`CharacterToken` becomes a BoundaryToken. + """
+ + +# ============================================================================== +# Bracket tokens: (), [], {}, <> +# ============================================================================== +
[docs]@export +class BracketToken(SpecificVHDLToken): + """Base-class for all bracket tokens: ``(``, ``)``, ``[``, ``]``, ``{``, ``}``, ``<`` and ``>``."""
+ + +# Round bracket / parenthesis / () +# ---------------------------------------------------------- +
[docs]@export +class RoundBracketToken(BracketToken): + """Base-class for all round bracket tokens: ``(`` and ``)``."""
+ + +
[docs]@export +class OpeningRoundBracketToken(RoundBracketToken): + """Token representing an opening round bracket: ``(``."""
+ + +
[docs]@export +class ClosingRoundBracketToken(RoundBracketToken): + """Token representing a closing round bracket: ``)``."""
+ + +# Square bracket / [] +# ---------------------------------------------------------- +
[docs]@export +class SquareBracketToken(BracketToken): + """Base-class for all square bracket tokens: ``[`` and ``]``."""
+ + +
[docs]@export +class OpeningSquareBracketToken(SquareBracketToken): + """Token representing an square round bracket: ``[``."""
+ + +
[docs]@export +class ClosingSquareBracketToken(SquareBracketToken): + """Token representing a closing square bracket: ``]``."""
+ + +# Curly bracket / brace / curved bracket / {} +# ---------------------------------------------------------- +
[docs]@export +class CurlyBracketToken(BracketToken): + """Base-class for all curly bracket tokens: ``{`` and ``}``."""
+ + +
[docs]@export +class OpeningCurlyBracketToken(CurlyBracketToken): + """Token representing an opening curly bracket: ``{``."""
+ + +
[docs]@export +class ClosingCurlyBracketToken(CurlyBracketToken): + """Token representing a closing curly bracket: ``}``."""
+ + +# Angle bracket / arrow bracket / <> +# ---------------------------------------------------------- +
[docs]@export +class AngleBracketToken(BracketToken): + """Base-class for all angle bracket tokens: ``<`` and ``>``."""
+ + +
[docs]@export +class OpeningAngleBracketToken(AngleBracketToken): + """Token representing an opening angle bracket: ``<``."""
+ + +
[docs]@export +class ClosingAngleBracketToken(AngleBracketToken): + """Token representing a closing angle bracket: ``>``."""
+ + +# ============================================================================== +# Operator tokens: +, -, *, /, **, & +# ============================================================================== +
[docs]@export +class OperatorToken(SpecificVHDLToken): + """Base-class for all operator tokens."""
+ + +
[docs]@export +class PlusOperator(OperatorToken): + """Token representing a plus operator: ``+``.""" + __KEYWORD__ = "+"
+ + +
[docs]@export +class MinusOperator(OperatorToken): + """Token representing a minus operator: ``-``.""" + __KEYWORD__ = "-"
+ + +
[docs]@export +class MultiplyOperator(OperatorToken): + """Token representing a multiply operator: ``*``.""" + __KEYWORD__ = "*"
+ + +
[docs]@export +class DivideOperator(OperatorToken): + """Token representing a divide operator: ``/``.""" + __KEYWORD__ = "/"
+ + +
[docs]@export +class ModuloOperator(OperatorToken): + __KEYWORD__ = "mod"
+ + +
[docs]@export +class RemainderOperator(OperatorToken): + __KEYWORD__ = "rem"
+ + +
[docs]@export +class PowerOperator(OperatorToken): + """Token representing a power operator: ``**``.""" + __KEYWORD__ = "**"
+ + +
[docs]@export +class ConcatOperator(OperatorToken): + """Token representing a concat operator: ``&``.""" + __KEYWORD__ = "&"
+ + +# Relational operatrors +# ---------------------------------------------------------- +
[docs]@export +class RelationalOperator(OperatorToken): + """Base-class for all relational operator tokens."""
+ + +
[docs]@export +class EqualOperator(RelationalOperator): + __KEYWORD__ = "="
+ + +
[docs]@export +class UnequalOperator(RelationalOperator): + __KEYWORD__ = "/="
+ + +
[docs]@export +class LessThanOperator(RelationalOperator): + __KEYWORD__ = "<"
+ + +
[docs]@export +class LessThanOrEqualOperator(RelationalOperator): + __KEYWORD__ = "<="
+ + +
[docs]@export +class GreaterThanOperator(RelationalOperator): + __KEYWORD__ = ">"
+ + +
[docs]@export +class GreaterThanOrEqualOperator(RelationalOperator): + __KEYWORD__ = ">="
+ + +
[docs]@export +class MatchingEqualOperator(RelationalOperator): + __KEYWORD__ = "?="
+ + +
[docs]@export +class MatchingUnequalOperator(RelationalOperator): + __KEYWORD__ = "?/="
+ + +
[docs]@export +class MatchingLessThanOperator(RelationalOperator): + __KEYWORD__ = "?<"
+ + +
[docs]@export +class MatchingLessThanOrEqualOperator(RelationalOperator): + __KEYWORD__ = "?<="
+ + +
[docs]@export +class MatchingGreaterThanOperator(RelationalOperator): + __KEYWORD__ = "?>"
+ + +
[docs]@export +class MatchingGreaterThanOrEqualOperator(RelationalOperator): + __KEYWORD__ = "?>="
+ + +
[docs]@export +class DelimiterToken(SpecificVHDLToken): + """ + Token representing a delimiter sign in between list items. + + This token is usually created from a :class:`CharacterToken` with values ``,`` + or ``;``. + """
+ + +
[docs]@export +class EndToken(SpecificVHDLToken): + """ + Token representing an end of a statement. + + This token is usually created from a :class:`CharacterToken` with value ``;``. + """
+ + +
[docs]@export +class IdentifierToken(SpecificVHDLToken): + """ + Token representing an identifier. + + This token is usually created from a :class:`WordToken` or :class:`ExtendedIdentifierToken`. + """
+ + +
[docs]@export +class RepeatedIdentifierToken(IdentifierToken): + """ + Token representing a repeated identifier. + + This token is usually created from a :class:`WordToken` or :class:`ExtendedIdentifierToken`. + """
+ + +
[docs]@export +class SimpleNameToken(SpecificVHDLToken): + pass
+ + +
[docs]@export +class LabelToken(SpecificVHDLToken): + """ + Token representing a label. + + This token is usually created from a :class:`WordToken` or :class:`ExtendedIdentifierToken`. + """
+ + +
[docs]@export +class RepeatedLabelToken(LabelToken): + """ + Token representing a repeated label. + + This token is usually created from a :class:`WordToken` or :class:`ExtendedIdentifierToken`. + """
+ + +
[docs]@export +class MultiCharKeyword(VHDLToken): + __KEYWORD__: str + +
[docs] def __init__(self, previousToken: Token = None, value: Any = None, start: SourceCodePosition = None, end: SourceCodePosition = None, fromExistingToken: CharacterToken = None): + if fromExistingToken is None: + super().__init__(previousToken, self.__KEYWORD__, start, end) + else: + super().__init__(fromExistingToken.PreviousToken, self.__KEYWORD__, fromExistingToken.Start, fromExistingToken.End)
+ +
[docs] def __str__(self) -> str: + return "<{name: <50} '{value}' at {pos!r}>".format( + name=self.__class__.__name__[:-7], + value=self.__KEYWORD__, + pos=self.Start + )
+ + +
[docs]@export +class CommentKeyword(MultiCharKeyword): + """Base-class for all comment keywords: ``--``, ``/*`` and ``*/``."""
+ + +
[docs]@export +class SingleLineCommentKeyword(CommentKeyword): + """Token representing a starting sequence for a single-line comment: ``--``.""" + __KEYWORD__ = "--"
+ + +
[docs]@export +class MultiLineCommentKeyword(CommentKeyword): + """Base-class for all tokens related to multi-line comments: ``/*`` and ``*/``."""
+ + +
[docs]@export +class MultiLineCommentStartKeyword(MultiLineCommentKeyword): + """Token representing a starting sequence for a multi-line comment: ``/*``.""" + __KEYWORD__ = "/*"
+ + +
[docs]@export +class MultiLineCommentEndKeyword(MultiLineCommentKeyword): + """Token representing a closing sequence for a multi-line comment: ``*/``.""" + __KEYWORD__ = "*/"
+ + +
[docs]@export +class AssignmentKeyword(MultiCharKeyword): + """Base-class for all assignment keywords: ``:=`` and ``<=``."""
+ + +
[docs]@export +class VariableAssignmentKeyword(AssignmentKeyword): + """Token representing a variable assignment: ``:=``.""" + __KEYWORD__ = ":="
+ + +
[docs]@export +class SignalAssignmentKeyword(AssignmentKeyword): + """Token representing a signal assignment: ``<=``.""" + __KEYWORD__ = "<="
+ + +
[docs]@export +class AssociationKeyword(MultiCharKeyword): + pass
+ + +
[docs]@export +class MapAssociationKeyword(AssociationKeyword): + __KEYWORD__ = "=>"
+ + +
[docs]@export +class SignalAssociationKeyword(AssociationKeyword): + __KEYWORD__ = "<=>"
+ + +
[docs]@export +class KeywordToken(VHDLToken): + __KEYWORD__ : str + +
[docs] def __init__(self, previousToken: Token = None, value: str = None, start: SourceCodePosition = None, end: SourceCodePosition = None, fromExistingToken: WordToken = None): + if fromExistingToken is None: + if value.lower() != self.__KEYWORD__: + raise TokenizerException("Expected keyword {0}.".format(self.__KEYWORD__.upper()), None) + + super().__init__(previousToken, value, str, end) + else: + if not (isinstance(fromExistingToken, WordToken) and (fromExistingToken <= self.__KEYWORD__)): + raise TokenizerException("Expected keyword {0}.".format(self.__KEYWORD__.upper()), fromExistingToken) + + super().__init__(fromExistingToken.PreviousToken, self.__KEYWORD__, fromExistingToken.Start, fromExistingToken.End)
+ +
[docs] def __str__(self) -> str: + return "<{name: <50} {value:.<59} at {pos!r}>".format( + name=self.__class__.__name__, + value="'" + self.Value + "' ", + pos=self.Start + )
+ + +
[docs]@export +class DirectionKeyword(KeywordToken): + pass
+ + +
[docs]@export +class Operator(KeywordToken): + pass
+ + +
[docs]@export +class LogicalOperator(Operator): + pass
+ + +
[docs]@export +class MiscellaneousOperator(Operator): + pass
+ + +
[docs]@export +class ShiftOperator(Operator): + pass
+ + +
[docs]@export +class AbsOperator(KeywordToken): + """Reserved word 'abs' for unary operator *absolute value*.""" + __KEYWORD__ = "abs"
+ + +
[docs]@export +class AccessKeyword(KeywordToken): + """Reserved word 'access' to defined access types.""" + __KEYWORD__ = "access"
+ + +
[docs]@export +class AfterKeyword(KeywordToken): + """Reserved word 'after'.""" + __KEYWORD__ = "after"
+ + +
[docs]@export +class AliasKeyword(KeywordToken): + """Reserved word 'alias' to declare aliases.""" + __KEYWORD__ = "alias"
+ + +
[docs]@export +class AllKeyword(KeywordToken): + """Reserved word 'all'.""" + __KEYWORD__ = "all"
+ + +
[docs]@export +class AndOperator(LogicalOperator): + """Reserved word 'and' for binary logical operator *and*.""" + __KEYWORD__ = "and"
+ + +
[docs]@export +class ArchitectureKeyword(KeywordToken): + """Reserved word 'architecture' to define architectures.""" + __KEYWORD__ = "architecture"
+ + +
[docs]@export +class ArrayKeyword(KeywordToken): + """Reserved word 'array' to define array types.""" + __KEYWORD__ = "array"
+ + +
[docs]@export +class AssertKeyword(KeywordToken): + """Reserved word 'assert' for *assert*-statements.""" + __KEYWORD__ = "assert"
+ + +
[docs]@export +class AttributeKeyword(KeywordToken): + """Reserved word 'attribute'.""" + __KEYWORD__ = "attribute"
+ + +
[docs]@export +class BeginKeyword(KeywordToken): + """Reserved word 'begin' to distinguish declarative regions from statements regions.""" + __KEYWORD__ = "begin"
+ + +
[docs]@export +class BlockKeyword(KeywordToken): + """Reserved word 'block' for *block*-statements.""" + __KEYWORD__ = "block"
+ + +
[docs]@export +class BodyKeyword(KeywordToken): + """Reserved word 'body' to distinguish declarations from implementations (bodies).""" + __KEYWORD__ = "body"
+ + +
[docs]@export +class BufferKeyword(KeywordToken): + """Reserved word 'buffer' for mode *buffer*.""" + __KEYWORD__ = "buffer"
+ + +
[docs]@export +class BusKeyword(KeywordToken): + """Reserved word 'bus'.""" + __KEYWORD__ = "bus"
+ + +
[docs]@export +class CaseKeyword(KeywordToken): + __KEYWORD__ = "case"
+ + +
[docs]@export +class ComponentKeyword(KeywordToken): + __KEYWORD__ = "component"
+ + +
[docs]@export +class ConfigurationKeyword(KeywordToken): + __KEYWORD__ = "configuration"
+ + +
[docs]@export +class ConstantKeyword(KeywordToken): + __KEYWORD__ = "constant"
+ + +
[docs]@export +class ContextKeyword(KeywordToken): + __KEYWORD__ = "context"
+ + +
[docs]@export +class DefaultKeyword(KeywordToken): + __KEYWORD__ = "default"
+ + +
[docs]@export +class DisconnectKeyword(KeywordToken): + __KEYWORD__ = "disconnect"
+ + +
[docs]@export +class DowntoKeyword(DirectionKeyword): + __KEYWORD__ = "downto"
+ + +
[docs]@export +class ElseKeyword(KeywordToken): + __KEYWORD__ = "else"
+ + +
[docs]@export +class ElsIfKeyword(KeywordToken): + __KEYWORD__ = "elsif"
+ + +
[docs]@export +class EndKeyword(KeywordToken): + __KEYWORD__ = "end"
+ + +
[docs]@export +class EntityKeyword(KeywordToken): + __KEYWORD__ = "entity"
+ + +
[docs]@export +class ExitKeyword(KeywordToken): + __KEYWORD__ = "exit"
+ + +
[docs]@export +class FileKeyword(KeywordToken): + __KEYWORD__ = "file"
+ + +
[docs]@export +class ForKeyword(KeywordToken): + __KEYWORD__ = "for"
+ + +
[docs]@export +class ForceKeyword(KeywordToken): + __KEYWORD__ = "force"
+ + +
[docs]@export +class FunctionKeyword(KeywordToken): + __KEYWORD__ = "function"
+ + +
[docs]@export +class GenerateKeyword(KeywordToken): + __KEYWORD__ = "generate"
+ + +
[docs]@export +class GenericKeyword(KeywordToken): + __KEYWORD__ = "generic"
+ + +
[docs]@export +class GroupKeyword(KeywordToken): + __KEYWORD__ = "group"
+ + +
[docs]@export +class GuardedKeyword(KeywordToken): + __KEYWORD__ = "guarded"
+ + +
[docs]@export +class IfKeyword(KeywordToken): + __KEYWORD__ = "if"
+ + +
[docs]@export +class IsKeyword(KeywordToken): + __KEYWORD__ = "is"
+ + +
[docs]@export +class InKeyword(KeywordToken): + __KEYWORD__ = "in"
+ + +
[docs]@export +class InoutKeyword(KeywordToken): + __KEYWORD__ = "inout"
+ + +
[docs]@export +class ImpureKeyword(KeywordToken): + __KEYWORD__ = "impure"
+ + +
[docs]@export +class InertialKeyword(KeywordToken): + __KEYWORD__ = "inertial"
+ + +
[docs]@export +class LabelKeyword(KeywordToken): + __KEYWORD__ = "lable"
+ + +
[docs]@export +class LibraryKeyword(KeywordToken): + __KEYWORD__ = "library"
+ + +
[docs]@export +class LinkageKeyword(KeywordToken): + __KEYWORD__ = "linkage"
+ + +
[docs]@export +class LiteralKeyword(KeywordToken): + __KEYWORD__ = "literal"
+ + +
[docs]@export +class LoopKeyword(KeywordToken): + __KEYWORD__ = "loop"
+ + +
[docs]@export +class MapKeyword(KeywordToken): + __KEYWORD__ = "map"\
+ + +
[docs]@export +class NandOperator(LogicalOperator): + __KEYWORD__ = "nand"
+ + +
[docs]@export +class NewKeyword(KeywordToken): + __KEYWORD__ = "new"
+ + +
[docs]@export +class NextKeyword(KeywordToken): + __KEYWORD__ = "next"
+ + +
[docs]@export +class NorOperator(LogicalOperator): + __KEYWORD__ = "nor"
+ + +
[docs]@export +class NotOperator(LogicalOperator): + __KEYWORD__ = "not"
+ + +
[docs]@export +class NullKeyword(KeywordToken): + __KEYWORD__ = "null"
+ + +
[docs]@export +class OfKeyword(KeywordToken): + __KEYWORD__ = "of"
+ + +
[docs]@export +class OnKeyword(KeywordToken): + __KEYWORD__ = "on"
+ + +
[docs]@export +class OpenKeyword(KeywordToken): + __KEYWORD__ = "open"
+ + +
[docs]@export +class OrOperator(LogicalOperator): + __KEYWORD__ = "or"
+ + +
[docs]@export +class OthersKeyword(KeywordToken): + __KEYWORD__ = "others"
+ + +
[docs]@export +class OutKeyword(KeywordToken): + __KEYWORD__ = "out"
+ + +
[docs]@export +class PackageKeyword(KeywordToken): + __KEYWORD__ = "package"
+ + +
[docs]@export +class ParameterKeyword(KeywordToken): + __KEYWORD__ = "parameter"
+ + +
[docs]@export +class PortKeyword(KeywordToken): + __KEYWORD__ = "port"
+ + +
[docs]@export +class PostponedKeyword(KeywordToken): + __KEYWORD__ = "postponed"
+ + +
[docs]@export +class PrivateKeyword(KeywordToken): + __KEYWORD__ = "private"
+ + +
[docs]@export +class ProcedureKeyword(KeywordToken): + __KEYWORD__ = "procedure"
+ + +
[docs]@export +class ProcessKeyword(KeywordToken): + __KEYWORD__ = "process"
+ + +
[docs]@export +class PropertyKeyword(KeywordToken): + __KEYWORD__ = "property"
+ + +
[docs]@export +class ProtectedKeyword(KeywordToken): + __KEYWORD__ = "protected"
+ + +
[docs]@export +class PureKeyword(KeywordToken): + __KEYWORD__ = "pure"
+ + +
[docs]@export +class RangeKeyword(KeywordToken): + __KEYWORD__ = "range"
+ + +
[docs]@export +class RecordKeyword(KeywordToken): + __KEYWORD__ = "record"
+ + +
[docs]@export +class RegisterKeyword(KeywordToken): + __KEYWORD__ = "register"
+ + +
[docs]@export +class RejectKeyword(KeywordToken): + __KEYWORD__ = "reject"
+ + +
[docs]@export +class ReleaseKeyword(KeywordToken): + __KEYWORD__ = "release"
+ + +
[docs]@export +class ReportKeyword(KeywordToken): + __KEYWORD__ = "report"
+ + +
[docs]@export +class ReturnKeyword(KeywordToken): + __KEYWORD__ = "return"
+ + +
[docs]@export +class RolOperator(ShiftOperator): + __KEYWORD__ = "rol"
+ + +
[docs]@export +class RorOperator(ShiftOperator): + __KEYWORD__ = "ror"
+ + +
[docs]@export +class SelectKeyword(KeywordToken): + __KEYWORD__ = "select"
+ + +
[docs]@export +class SequenceKeyword(KeywordToken): + __KEYWORD__ = "sequence"
+ + +
[docs]@export +class SeverityKeyword(KeywordToken): + __KEYWORD__ = "severity"
+ + +
[docs]@export +class SharedKeyword(KeywordToken): + __KEYWORD__ = "shared"
+ + +
[docs]@export +class SignalKeyword(KeywordToken): + __KEYWORD__ = "signal"
+ + +
[docs]@export +class SlaOperator(ShiftOperator): + __KEYWORD__ = "sla"
+ + +
[docs]@export +class SllOperator(ShiftOperator): + __KEYWORD__ = "sll"
+ + +
[docs]@export +class SraOperator(ShiftOperator): + __KEYWORD__ = "sra"
+ + +
[docs]@export +class SrlOperator(ShiftOperator): + __KEYWORD__ = "srl"
+ + +
[docs]@export +class SubtypeKeyword(KeywordToken): + __KEYWORD__ = "subtype"
+ + +
[docs]@export +class ThenKeyword(KeywordToken): + __KEYWORD__ = "then"
+ + +
[docs]@export +class ToKeyword(DirectionKeyword): + __KEYWORD__ = "to"
+ + +
[docs]@export +class TransportKeyword(KeywordToken): + __KEYWORD__ = "transport"
+ + +
[docs]@export +class TypeKeyword(KeywordToken): + __KEYWORD__ = "type"
+ + +
[docs]@export +class UnaffectedKeyword(KeywordToken): + __KEYWORD__ = "unaffected"
+ + +
[docs]@export +class UnitsKeyword(KeywordToken): + __KEYWORD__ = "units"
+ + +
[docs]@export +class UntilKeyword(KeywordToken): + __KEYWORD__ = "until"
+ + +
[docs]@export +class UseKeyword(KeywordToken): + __KEYWORD__ = "use"
+ + +
[docs]@export +class UnbufferedKeyword(KeywordToken): + __KEYWORD__ = "unbuffered"
+ + +
[docs]@export +class VariableKeyword(KeywordToken): + __KEYWORD__ = "variable"
+ + +
[docs]@export +class ViewKeyword(KeywordToken): + __KEYWORD__ = "view"
+ + +
[docs]@export +class VunitKeyword(KeywordToken): + __KEYWORD__ = "vunit"
+ + +
[docs]@export +class WaitKeyword(KeywordToken): + __KEYWORD__ = "wait"
+ + +
[docs]@export +class WhenKeyword(KeywordToken): + __KEYWORD__ = "when"
+ + +
[docs]@export +class WhileKeyword(KeywordToken): + __KEYWORD__ = "while"
+ + +
[docs]@export +class WithKeyword(KeywordToken): + __KEYWORD__ = "with"
+ + +
[docs]@export +class XorOperator(LogicalOperator): + __KEYWORD__ = "xor"
+ + +
[docs]@export +class XnorOperator(LogicalOperator): + __KEYWORD__ = "xnor"
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/Token/Parser.html b/_modules/pyVHDLParser/Token/Parser.html new file mode 100644 index 000000000..580a26c75 --- /dev/null +++ b/_modules/pyVHDLParser/Token/Parser.html @@ -0,0 +1,652 @@ + + + + + + pyVHDLParser.Token.Parser — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyVHDLParser.Token.Parser

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from enum                     import IntEnum
+from typing                   import Iterator
+
+from pyTooling.Decorators     import export
+
+from pyVHDLParser             import SourceCodePosition
+from pyVHDLParser.Base        import ParserException
+from pyVHDLParser.Token       import StartOfDocumentToken, EndOfDocumentToken, IndentationToken, FusedCharacterToken
+from pyVHDLParser.Token       import CharacterLiteralToken, StringLiteralToken, ExtendedIdentifier, DirectiveToken, IntegerLiteralToken, RealLiteralToken
+from pyVHDLParser.Token       import CharacterToken, SpaceToken, WordToken, SingleLineCommentToken, MultiLineCommentToken, LinebreakToken
+
+
+
[docs]@export +class TokenizerException(ParserException): + """A :exc:`~pyVHDLParser.Base.ParserException` generated by the :class:`~pyVHDLParser.Token.Parser.Tokenizer`.""" + +
[docs] def __init__(self, message: str, position: SourceCodePosition): + super().__init__(message) + self.Position = position
+ + def __str__(self) -> str: + return "{0!s}: {1}".format(self.Position, self._message)
+ + +
[docs]@export +class Tokenizer: +
[docs] class TokenKind(IntEnum): + """Enumeration of all Tokenizer states.""" + + SpaceChars = 0 #: Last char was a space + IntegerChars = 1 #: Last char was a digit + RealChars = 2 #: Last char was a digit + AlphaChars = 3 #: Last char was a letter + DelimiterChars = 4 #: Last char was a delimiter character + PossibleSingleLineCommentStart = 5 #: Last char was a dash + PossibleLinebreak = 6 #: Last char was a ``\r`` + PossibleRealLiteral = 7 #: Last char was a ``.`` + PossibleCharacterLiteral = 8 #: Last char was a ``'`` + PossibleStringLiteralStart = 9 #: Last char was a ``"`` + PossibleExtendedIdentifierStart = 10 #: Last char was a ``\`` + SingleLineComment = 11 #: Found ``--`` before + MultiLineComment = 12 #: Found ``/*`` before + Linebreak = 13 #: Last char was a ``\n`` + Directive = 14 #: Last char was a `` ` `` + FuseableCharacter = 15 #: Last char was a character that could be fused + OtherChars = 16 #: Anything else
+ + + @classmethod + def GetVHDLTokenizer(cls, iterable: Iterator[str]): + previousToken = StartOfDocumentToken() + tokenKind = cls.TokenKind.OtherChars + start = SourceCodePosition(1, 1, 1) + buffer = "" + absolute = 0 + column = 0 + row = 1 + + __NUMBER_CHARACTERS__ = "0123456789" + __ALPHA_CHARACTERS__ = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" + __WHITESPACE_CHARACTERS__ = " \t" + __FUSEABLE_CHARS__ = "=<:/*>?" + + yield previousToken + + for char in iterable: + absolute += 1 + column += 1 + + # State: SpaceChars + if tokenKind is cls.TokenKind.SpaceChars: + if char in __WHITESPACE_CHARACTERS__: + buffer += char + else: + end = SourceCodePosition(row, column - 1, absolute - 1) + if isinstance(previousToken, (LinebreakToken, SingleLineCommentToken, StartOfDocumentToken)): + previousToken = IndentationToken(previousToken, buffer, start, end) + else: + previousToken = SpaceToken(previousToken, buffer, start, end) + yield previousToken + + start = SourceCodePosition(row, column, absolute) + buffer = char + if char in __NUMBER_CHARACTERS__: tokenKind = cls.TokenKind.IntegerChars + elif char in __ALPHA_CHARACTERS__: tokenKind = cls.TokenKind.AlphaChars + elif char == "'": tokenKind = cls.TokenKind.PossibleCharacterLiteral + elif char == "\"": tokenKind = cls.TokenKind.PossibleStringLiteralStart + elif char == "-": tokenKind = cls.TokenKind.PossibleSingleLineCommentStart + elif char == "\r": tokenKind = cls.TokenKind.PossibleLinebreak + elif char == "\n": + previousToken = LinebreakToken(previousToken, char, start, start) + yield previousToken + tokenKind = cls.TokenKind.OtherChars + elif char in __FUSEABLE_CHARS__: + buffer = char + tokenKind = cls.TokenKind.FuseableCharacter + elif char == ".": tokenKind = cls.TokenKind.PossibleRealLiteral + elif char == "\\": tokenKind = cls.TokenKind.PossibleExtendedIdentifierStart + elif (char == "`") and isinstance(previousToken, (SpaceToken, LinebreakToken)): + tokenKind = cls.TokenKind.Directive + else: + previousToken = CharacterToken(previousToken, char, start) + yield previousToken + tokenKind = cls.TokenKind.OtherChars + + # State: IntegerChars + elif tokenKind is cls.TokenKind.IntegerChars: + if (char in __NUMBER_CHARACTERS__) or (char == "_"): + buffer += char + elif char == ".": + buffer += char + tokenKind = cls.TokenKind.RealChars + else: + previousToken = IntegerLiteralToken(previousToken, buffer, start, SourceCodePosition(row, column, absolute)) + yield previousToken + + start = SourceCodePosition(row, column, absolute) + buffer = char + if char in __WHITESPACE_CHARACTERS__: tokenKind = cls.TokenKind.SpaceChars + elif char in __ALPHA_CHARACTERS__: tokenKind = cls.TokenKind.AlphaChars + elif char == "'": tokenKind = cls.TokenKind.PossibleCharacterLiteral + elif char == "\"": tokenKind = cls.TokenKind.PossibleStringLiteralStart + elif char == "-": tokenKind = cls.TokenKind.PossibleSingleLineCommentStart + elif char == "\r": tokenKind = cls.TokenKind.PossibleLinebreak + elif char == "\n": + previousToken = LinebreakToken(previousToken, char, start, start) + yield previousToken + tokenKind = cls.TokenKind.OtherChars + elif char in __FUSEABLE_CHARS__: + buffer = char + tokenKind = cls.TokenKind.FuseableCharacter + elif char == "\\": tokenKind = cls.TokenKind.PossibleExtendedIdentifierStart + elif (char == "`") and isinstance(previousToken, (SpaceToken, LinebreakToken)): + tokenKind = cls.TokenKind.Directive + else: + previousToken = CharacterToken(previousToken, char, start) + yield previousToken + tokenKind = cls.TokenKind.OtherChars + + # State: RealChars + elif tokenKind is cls.TokenKind.RealChars: + if (char in __NUMBER_CHARACTERS__) or (char == "_"): + buffer += char + else: + previousToken = RealLiteralToken(previousToken, buffer, start, SourceCodePosition(row, column, absolute)) + yield previousToken + + start = SourceCodePosition(row, column, absolute) + buffer = char + if char in __WHITESPACE_CHARACTERS__: tokenKind = cls.TokenKind.SpaceChars + elif char in __ALPHA_CHARACTERS__: tokenKind = cls.TokenKind.AlphaChars + elif char == "'": tokenKind = cls.TokenKind.PossibleCharacterLiteral + elif char == "\"": tokenKind = cls.TokenKind.PossibleStringLiteralStart + elif char == "-": tokenKind = cls.TokenKind.PossibleSingleLineCommentStart + elif char == "\r": tokenKind = cls.TokenKind.PossibleLinebreak + elif char == "\n": + previousToken = LinebreakToken(previousToken, char, start, start) + yield previousToken + tokenKind = cls.TokenKind.OtherChars + elif char in __FUSEABLE_CHARS__: + buffer = char + tokenKind = cls.TokenKind.FuseableCharacter + elif char == "\\": tokenKind = cls.TokenKind.PossibleExtendedIdentifierStart + elif (char == "`") and isinstance(previousToken, (SpaceToken, LinebreakToken)): + tokenKind = cls.TokenKind.Directive + else: + previousToken = CharacterToken(previousToken, char, start) + yield previousToken + tokenKind = cls.TokenKind.OtherChars + + # State: AlphaChars + elif tokenKind is cls.TokenKind.AlphaChars: + if (char in __ALPHA_CHARACTERS__) or (char == "_"): + buffer += char + else: + previousToken = WordToken(previousToken, buffer, start, SourceCodePosition(row, column, absolute)) + yield previousToken + + start = SourceCodePosition(row, column, absolute) + buffer = char + if char in __WHITESPACE_CHARACTERS__: tokenKind = cls.TokenKind.SpaceChars + elif char == "'": tokenKind = cls.TokenKind.PossibleCharacterLiteral + elif char == "\"": tokenKind = cls.TokenKind.PossibleStringLiteralStart + elif char == "-": tokenKind = cls.TokenKind.PossibleSingleLineCommentStart + elif char == "\r": tokenKind = cls.TokenKind.PossibleLinebreak + elif char == "\n": + previousToken = LinebreakToken(previousToken, char, start, start) + yield previousToken + tokenKind = cls.TokenKind.OtherChars + elif char in __FUSEABLE_CHARS__: + buffer = char + tokenKind = cls.TokenKind.FuseableCharacter + elif char == "\\": tokenKind = cls.TokenKind.PossibleExtendedIdentifierStart + elif (char == "`") and isinstance(previousToken, (SpaceToken, LinebreakToken)): + tokenKind = cls.TokenKind.Directive + else: + previousToken = CharacterToken(previousToken, char, start) + yield previousToken + tokenKind = cls.TokenKind.OtherChars + + # State: PossibleSingleLineCommentStart + elif tokenKind is cls.TokenKind.PossibleSingleLineCommentStart: + if char == "-": + buffer = "--" + tokenKind = cls.TokenKind.SingleLineComment + else: + previousToken = CharacterToken(previousToken, "-", start) + yield previousToken + + buffer = char + if char in __WHITESPACE_CHARACTERS__: tokenKind = cls.TokenKind.SpaceChars + elif char in __NUMBER_CHARACTERS__: tokenKind = cls.TokenKind.IntegerChars + elif char in __ALPHA_CHARACTERS__: tokenKind = cls.TokenKind.AlphaChars + elif char == "'": tokenKind = cls.TokenKind.PossibleCharacterLiteral + elif char == "\"": tokenKind = cls.TokenKind.PossibleStringLiteralStart + elif char == "/r": tokenKind = cls.TokenKind.PossibleLinebreak + elif char == "/n": + previousToken = LinebreakToken(previousToken, char, start, start) + yield previousToken + tokenKind = cls.TokenKind.OtherChars + elif char in __FUSEABLE_CHARS__: + buffer = char + tokenKind = cls.TokenKind.FuseableCharacter + elif char == "\\": tokenKind = cls.TokenKind.PossibleExtendedIdentifierStart + elif (char == "`") and isinstance(previousToken, (SpaceToken, LinebreakToken)): + tokenKind = cls.TokenKind.Directive + else: + previousToken = CharacterToken(previousToken, char, start) + yield previousToken + tokenKind = cls.TokenKind.OtherChars + + # State: PossibleLinebreak + elif tokenKind is cls.TokenKind.PossibleLinebreak: + end = SourceCodePosition(row, column, absolute) + if char == "\n": + tokenKind = cls.TokenKind.OtherChars + if buffer[:2] == "--": + buffer += char + previousToken = SingleLineCommentToken(previousToken, buffer, start, end) + else: + previousToken = LinebreakToken(previousToken, "\r\n", start, end) + buffer = "\r\n" + yield previousToken + else: + previousToken = LinebreakToken(previousToken, "\r", start, end) + yield previousToken + + start = end + buffer = char + if char in __WHITESPACE_CHARACTERS__: tokenKind = cls.TokenKind.SpaceChars + elif char in __NUMBER_CHARACTERS__: tokenKind = cls.TokenKind.IntegerChars + elif char in __ALPHA_CHARACTERS__: tokenKind = cls.TokenKind.AlphaChars + elif char == "'": tokenKind = cls.TokenKind.PossibleCharacterLiteral + elif char == "\"": tokenKind = cls.TokenKind.PossibleStringLiteralStart + elif char == "-": tokenKind = cls.TokenKind.PossibleSingleLineCommentStart + elif char == "/r": tokenKind = cls.TokenKind.PossibleLinebreak + elif char == "/n": + previousToken = LinebreakToken(previousToken, char, start, start) + yield previousToken + tokenKind = cls.TokenKind.OtherChars + elif char in __FUSEABLE_CHARS__: + buffer = char + tokenKind = cls.TokenKind.FuseableCharacter + elif char == "\\": tokenKind = cls.TokenKind.PossibleExtendedIdentifierStart + elif (char == "`") and isinstance(previousToken, (SpaceToken, LinebreakToken)): + tokenKind = cls.TokenKind.Directive + else: + previousToken = CharacterToken(previousToken, char, start) + yield previousToken + tokenKind = cls.TokenKind.OtherChars + + # State: PossibleRealLiteral + elif tokenKind is cls.TokenKind.PossibleRealLiteral: + if char in __NUMBER_CHARACTERS__: + buffer += char + tokenKind = cls.TokenKind.RealChars + else: + previousToken = CharacterToken(previousToken, ".", start) + yield previousToken + + start = SourceCodePosition(row, column, absolute) + buffer = char + + if char in __WHITESPACE_CHARACTERS__: tokenKind = cls.TokenKind.SpaceChars + elif char in __NUMBER_CHARACTERS__: tokenKind = cls.TokenKind.IntegerChars + elif char in __ALPHA_CHARACTERS__: tokenKind = cls.TokenKind.AlphaChars + elif char == "'": tokenKind = cls.TokenKind.PossibleCharacterLiteral + elif char == "\"": tokenKind = cls.TokenKind.PossibleStringLiteralStart + elif char == "-": tokenKind = cls.TokenKind.PossibleSingleLineCommentStart + elif char == "/r": tokenKind = cls.TokenKind.PossibleLinebreak + elif char == "/n": + previousToken = LinebreakToken(previousToken, char, start, start) + yield previousToken + tokenKind = cls.TokenKind.OtherChars + elif char in __FUSEABLE_CHARS__: + buffer = char + tokenKind = cls.TokenKind.FuseableCharacter + elif char == "\\": tokenKind = cls.TokenKind.PossibleExtendedIdentifierStart + elif (char == "`") and isinstance(previousToken, (SpaceToken, LinebreakToken)): + tokenKind = cls.TokenKind.Directive + else: + previousToken = CharacterToken(previousToken, char, start) + yield previousToken + tokenKind = cls.TokenKind.OtherChars + + # State: PossibleCharacterLiteral + elif tokenKind is cls.TokenKind.PossibleCharacterLiteral: + buffer += char + if len(buffer) == 2: + if buffer[1] == "'": + previousToken = CharacterToken(previousToken, "'", start) + yield previousToken + previousToken = CharacterToken(previousToken, "'", SourceCodePosition(row, column, absolute)) + yield previousToken + tokenKind = cls.TokenKind.OtherChars + else: + continue + elif (len(buffer) == 3) and (buffer[2] == "'"): + previousToken = CharacterLiteralToken(previousToken, buffer, start, SourceCodePosition(row, column, absolute)) + yield previousToken + tokenKind = cls.TokenKind.OtherChars + else: + previousToken = CharacterToken(previousToken, "'", start) + yield previousToken + + start.Column += 1 + start.Absolute += 1 + buffer = buffer[:2] + if (buffer[0] in __ALPHA_CHARACTERS__) and (buffer[1] in __ALPHA_CHARACTERS__): + tokenKind = cls.TokenKind.AlphaChars + elif (buffer[0] in __WHITESPACE_CHARACTERS__) and (buffer[1] in __WHITESPACE_CHARACTERS__): + tokenKind = cls.TokenKind.SpaceChars + else: + raise TokenizerException("Ambiguous syntax detected. buffer: '{buffer}'".format(buffer=buffer), start) + + # State: PossibleStringLiteralStart + elif tokenKind is cls.TokenKind.PossibleStringLiteralStart: + buffer += char + if char == "\"": + previousToken = StringLiteralToken(previousToken, buffer, start, SourceCodePosition(row, column, absolute)) + yield previousToken + tokenKind = cls.TokenKind.OtherChars + + # State: PossibleExtendedIdentifierStart + elif tokenKind is cls.TokenKind.PossibleExtendedIdentifierStart: + buffer += char + if char == "\\": + previousToken = ExtendedIdentifier(previousToken, buffer, start, SourceCodePosition(row, column, absolute)) + yield previousToken + tokenKind = cls.TokenKind.OtherChars + + # State: Directive + elif tokenKind is cls.TokenKind.Directive: + buffer += char + if char == "\r": + tokenKind = cls.TokenKind.PossibleLinebreak + elif char == "\n": + previousToken = DirectiveToken(previousToken, buffer, start, SourceCodePosition(row, column, absolute)) + yield previousToken + tokenKind = cls.TokenKind.OtherChars + + # State: SingleLineComment + elif tokenKind is cls.TokenKind.SingleLineComment: + buffer += char + if char == "\r": + tokenKind = cls.TokenKind.PossibleLinebreak + elif char == "\n": + previousToken = SingleLineCommentToken(previousToken, buffer, start, SourceCodePosition(row, column, absolute)) + yield previousToken + tokenKind = cls.TokenKind.OtherChars + + # State: MultiLineComment + elif tokenKind is cls.TokenKind.MultiLineComment: + buffer += char + if buffer[-2:] == "*/": + previousToken = MultiLineCommentToken(previousToken, buffer, start, SourceCodePosition(row, column, absolute)) + yield previousToken + tokenKind = cls.TokenKind.OtherChars + + # State: FuseableCharacter + elif tokenKind is cls.TokenKind.FuseableCharacter: + fused = buffer + char + if fused in ("=>", "**", ":=", "/=", "<=", ">=", "<>", "<<", ">>", "??", "?=", "?<", "?>", "?/=", "?<=", "?>="): + previousToken = FusedCharacterToken(previousToken, fused, start, SourceCodePosition(row, column, absolute)) + yield previousToken + tokenKind = cls.TokenKind.OtherChars + elif fused in ("?/", "?<", "?>"): + buffer = fused + elif fused == "/*": + buffer = fused + tokenKind = cls.TokenKind.MultiLineComment + else: + previousToken = CharacterToken(previousToken, buffer[0], start) + yield previousToken + if len(buffer) == 2: + previousToken = CharacterToken(previousToken, buffer[1], start) + yield previousToken + + buffer = char + if char in __WHITESPACE_CHARACTERS__: tokenKind = cls.TokenKind.SpaceChars + elif char in __NUMBER_CHARACTERS__: tokenKind = cls.TokenKind.IntegerChars + elif char in __ALPHA_CHARACTERS__: tokenKind = cls.TokenKind.AlphaChars + elif char == "'": tokenKind = cls.TokenKind.PossibleCharacterLiteral + elif char == "\"": tokenKind = cls.TokenKind.PossibleStringLiteralStart + elif char == "-": tokenKind = cls.TokenKind.PossibleSingleLineCommentStart + elif char == "\r": tokenKind = cls.TokenKind.PossibleLinebreak + elif char == "\n": + previousToken = LinebreakToken(previousToken, char, start, start) + yield previousToken + tokenKind = cls.TokenKind.OtherChars + elif char in __FUSEABLE_CHARS__: + pass + elif char == "\\": tokenKind = cls.TokenKind.PossibleExtendedIdentifierStart + elif (char == "`") and isinstance(previousToken, (SpaceToken, LinebreakToken)): + tokenKind = cls.TokenKind.Directive + else: + previousToken = CharacterToken(previousToken, char, start) + yield previousToken + + # State: OtherChars + elif tokenKind is cls.TokenKind.OtherChars: + start = SourceCodePosition(row, column, absolute) + buffer = char + if char in __WHITESPACE_CHARACTERS__: tokenKind = cls.TokenKind.SpaceChars + elif char in __NUMBER_CHARACTERS__: tokenKind = cls.TokenKind.IntegerChars + elif char in __ALPHA_CHARACTERS__: tokenKind = cls.TokenKind.AlphaChars + elif char == "'": tokenKind = cls.TokenKind.PossibleCharacterLiteral + elif char == "\"": tokenKind = cls.TokenKind.PossibleStringLiteralStart + elif char == "-": tokenKind = cls.TokenKind.PossibleSingleLineCommentStart + elif char == "\r": tokenKind = cls.TokenKind.PossibleLinebreak + elif char == "\n": + previousToken = LinebreakToken(previousToken, char, start, start) + yield previousToken + tokenKind = cls.TokenKind.OtherChars + elif char in __FUSEABLE_CHARS__: + buffer = char + tokenKind = cls.TokenKind.FuseableCharacter + elif char == "\\": tokenKind = cls.TokenKind.PossibleExtendedIdentifierStart + elif (char == "`") and isinstance(previousToken, (SpaceToken, LinebreakToken)): + tokenKind = cls.TokenKind.Directive + else: + tokenKind = cls.TokenKind.OtherChars + previousToken = CharacterToken(previousToken, char, start) + yield previousToken + + # State: unknown + else: + raise TokenizerException("Unknown state.", SourceCodePosition(row, column, absolute)) + + if char == "\n": + column = 0 + row += 1 + # end for + + if tokenKind is cls.TokenKind.MultiLineComment: + raise TokenizerException("End of document before end of multi line comment.", SourceCodePosition(row, column, absolute)) + + # close open token when input stream is empty + if tokenKind is cls.TokenKind.AlphaChars: + previousToken = WordToken(previousToken, buffer, start, SourceCodePosition(row, column, absolute)) + yield previousToken + elif tokenKind is cls.TokenKind.IntegerChars: + previousToken = IntegerLiteralToken(previousToken, buffer, start, SourceCodePosition(row, column, absolute)) + yield previousToken + elif tokenKind is cls.TokenKind.RealChars: + previousToken = RealLiteralToken(previousToken, buffer, start, SourceCodePosition(row, column, absolute)) + yield previousToken + elif tokenKind is cls.TokenKind.SpaceChars: + end = SourceCodePosition(row, column - 1, absolute - 1) + if isinstance(previousToken, (LinebreakToken, SingleLineCommentToken, StartOfDocumentToken)): + previousToken = IndentationToken(previousToken, buffer, start, end) + else: + previousToken = SpaceToken(previousToken, buffer, start, end) + yield previousToken + elif tokenKind is cls.TokenKind.SingleLineComment: + previousToken = SingleLineCommentToken(previousToken, buffer, start, SourceCodePosition(row, column, absolute)) + yield previousToken + elif tokenKind in (cls.TokenKind.OtherChars, cls.TokenKind.DelimiterChars): + pass + else: + raise TokenizerException("End of document before ...", SourceCodePosition(row, column, absolute)) + + # End of document + yield EndOfDocumentToken(previousToken, SourceCodePosition(row, column, absolute))
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/TypeSystem/Package.html b/_modules/pyVHDLParser/TypeSystem/Package.html new file mode 100644 index 000000000..20cf8f7a7 --- /dev/null +++ b/_modules/pyVHDLParser/TypeSystem/Package.html @@ -0,0 +1,234 @@ + + + + + + pyVHDLParser.TypeSystem.Package — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+
    +
  • »
  • +
  • Module code »
  • +
  • pyVHDLParser.TypeSystem.Package
  • +
  • +
  • +
+
+
+ +
+
+ +

Source code for pyVHDLParser.TypeSystem.Package

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators             import export
+
+
+
[docs]@export +class Parameter: +
[docs] def __init__(self, name, subtype): + self._name = name + self._subtype = subtype
+ + +
[docs]@export +class SubProgramDeclaration: +
[docs] def __init__(self, name, parameters): + self._name = name + self._parameters = parameters
+ + +
[docs]@export +class ProcedureDeclaration(SubProgramDeclaration): + pass
+ +
[docs]@export +class FunctionDeclaration(SubProgramDeclaration): +
[docs] def __init__(self, name, parameters, returnType): + super().__init__(name, parameters) + self._returnType = returnType
+ + +
[docs]@export +class SubProgram: +
[docs] def __init__(self, subprogramDeclaration): + self._subprogramDeclaration = subprogramDeclaration
+ + +
[docs]@export +class Procedure(SubProgram): +
[docs] def __init__(self, procedureDeclaration): + super().__init__(procedureDeclaration)
+ + +
[docs]@export +class Function(SubProgram): +
[docs] def __init__(self, functionDeclaration, function): + super().__init__(functionDeclaration) + self._function = function
+ + def Call(self, arguments): + return self._function(arguments)
+ + +
[docs]@export +class PackageDeclation: +
[docs] def __init__(self, name, publicMembers): + self._name = name + self._publicMembers = publicMembers
+ +
[docs]@export +class PackageBody: +
[docs] def __init__(self, declaration, privateMembers): + self._declaration = declaration + self._privateMembers = privateMembers
+ +
[docs]@export +class Package: +
[docs] def __init__(self, declaration, body): + self._declaration = declaration + self._body = body
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyVHDLParser/TypeSystem/TypeSystem.html b/_modules/pyVHDLParser/TypeSystem/TypeSystem.html new file mode 100644 index 000000000..21d00ec27 --- /dev/null +++ b/_modules/pyVHDLParser/TypeSystem/TypeSystem.html @@ -0,0 +1,392 @@ + + + + + + pyVHDLParser.TypeSystem.TypeSystem — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+
    +
  • »
  • +
  • Module code »
  • +
  • pyVHDLParser.TypeSystem.TypeSystem
  • +
  • +
  • +
+
+
+ +
+
+ +

Source code for pyVHDLParser.TypeSystem.TypeSystem

+# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from enum                     import Enum, unique
+
+from pyTooling.Decorators     import export
+
+
+
[docs]@export +class _Attributes: + pass
+ + +
[docs]@export +class Type: +
[docs] def __init__(self, name): + self._name = name
+ + +
[docs]@export +class IntegerType(Type): + class _Attributes(_Attributes): + def __init__(self, integer): + self._int = integer + + def Left(self): + return -2**31 + + def Right(self): + return 2**31 - 1 + + +
[docs] def __init__(self, name): + super().__init__(name)
+ + +
[docs]@export +class RealType(Type): +
[docs] def __init__(self, name): + super().__init__(name)
+ + +
[docs]@export +class EnumerationLiteral: +
[docs] def __init__(self, enum, name, pos): + self._enum = enum + self.Name = name + self.Pos = pos
+ +
[docs] def __repr__(self): + return "{enum!r}.{name}".format(enum=self._enum, name=self.Name)
+ +
[docs] def __str__(self): + return self.Name
+ + +
[docs]@export +class EnumerationType(Type): + class _Attributes(_Attributes): + def __init__(self, enum): + self._enum = enum + + def Low(self): + return self._enum._range.Left + + def High(self): + return self._enum._range.Right + + def Pos(self, value): + for pos,enumValue in enumerate(self._enum._enumeration): + if enumValue == value: + return pos + + def Val(self, pos): + return self._enum._enumeration[pos] + + def Value(self, str): + for enumValue in self._enum._enumeration: + if enumValue.Name == str: + return enumValue + + +
[docs] def __init__(self, name, enumerationValues): + super().__init__(name) + self._enumeration = tuple([EnumerationLiteral(self, value, pos) for pos,value in enumerate(enumerationValues)]) + self._range = Range(self, Direction.To, self._enumeration[0], self._enumeration[-1]) + self.Attributes = self._Attributes(self)
+ +
[docs] def __repr__(self): + return self._name
+ +
[docs] def __str__(self): + return self._name
+ + +
[docs]@export +class ArrayType(Type): +
[docs] def __init__(self, name, ranges, elementType): + super().__init__(name) + self._ranges = ranges + self._elementType = elementType
+ + @property + def IsConstrained(self): + for range in self._ranges: + if not range.IsConstrained: + return False + return self._elementType.IsConstrained
+ +
[docs]@export +class RecordMember: +
[docs] def __init__(self, name, elementType): + self._name = None + self._elementType = elementType
+ + @property + def IsConstrained(self): + return self._elementType.IsConstrained
+ + +
[docs]@export +class RecordType(Type): +
[docs] def __init__(self, name, members): + super().__init__(name) + self._members = members
+ + @property + def IsContrained(self): + for member in self._members: + if not member.IsConstrained: + return False + return True
+ + +
[docs]@export +class Subtype: + class _Attributes(_Attributes): + def __init__(self, subtype): + self._subtype = subtype + + def Low(self): + raise NotImplementedError() + + def High(self): + raise NotImplementedError() + + +
[docs] def __init__(self, name, subtype, range=None, resolutionFunction=None): + self._name = name + self._subtype = subtype + self._range = range + self._resolutionFunction = resolutionFunction + self.Attributes = self._Attributes(self)
+ + @property + def IsResolved(self): + return (self._resolutionFunction is not None) + + @property + def IsConstrained(self): + return (self._range is not None)
+ + +
[docs]@export +class IntegerSubtype(Subtype): + class _Attributes(Subtype._Attributes): + def Left(self): + return self._subtype._range.Left + + def Right(self): + return self._subtype._range.Right
+ + +
[docs]@export +class EnumerationSubtype(Subtype): + class _Attributes(Subtype._Attributes): + def Low(self): + return self._subtype._range.Left + + def High(self): + return self._subtype._range.Right + + def Value(self, str): + return self._subtype._subtype.Attributes.Value(str) + + +
[docs] def __init__(self, name, subtype, range=None, resolutionFunction=None): + if range is None: + range = subtype._range + super().__init__(name, subtype, range, resolutionFunction)
+ + +
[docs]@export +@unique +class Direction(Enum): + To = 0 + Downto = 1
+ + +
[docs]@export +class Range: +
[docs] def __init__(self, baseType, direction=None, left=None, right=None): + self._baseType = baseType + + if direction is None: + self.Direction = None + self.Left = None + self.Right = None + else: + self.Direction = direction + self.Left = left + self.Right = right
+ + @property + def IsConstrained(self): + return (self.Direction is not None)
+ + +
[docs]@export +class TypeInstance: + pass
+ +
[docs]@export +class Array(TypeInstance): +
[docs] def __init__(self, arrayType): + self._arrayType = arrayType
+ + +
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_sources/BlockStream/Assignments/SignalAssignment.rst.txt b/_sources/BlockStream/Assignments/SignalAssignment.rst.txt new file mode 100644 index 000000000..ca965dbd3 --- /dev/null +++ b/_sources/BlockStream/Assignments/SignalAssignment.rst.txt @@ -0,0 +1,5 @@ +Signal Assignment +################# + +SignalAssignmentBlock +--------------------- diff --git a/_sources/BlockStream/Assignments/VariableAssignment.rst.txt b/_sources/BlockStream/Assignments/VariableAssignment.rst.txt new file mode 100644 index 000000000..857087976 --- /dev/null +++ b/_sources/BlockStream/Assignments/VariableAssignment.rst.txt @@ -0,0 +1,6 @@ +Variable Assignment +################### + +VariableAssignmentBlock +----------------------- + diff --git a/_sources/BlockStream/Assignments/index.rst.txt b/_sources/BlockStream/Assignments/index.rst.txt new file mode 100644 index 000000000..14d3b2c03 --- /dev/null +++ b/_sources/BlockStream/Assignments/index.rst.txt @@ -0,0 +1,11 @@ +Assignments +########### + +VHDL distinguishes two assignment statements based on the kind of object the +assignment is targeting. + +.. toctree:: + :maxdepth: 1 + + VariableAssignment + SignalAssignment diff --git a/_sources/BlockStream/Attributes/AttributeDeclaration.rst.txt b/_sources/BlockStream/Attributes/AttributeDeclaration.rst.txt new file mode 100644 index 000000000..819baafc9 --- /dev/null +++ b/_sources/BlockStream/Attributes/AttributeDeclaration.rst.txt @@ -0,0 +1,5 @@ +Attribute Declaration +##################### + +AttributeDeclarationBlock +------------------------- diff --git a/_sources/BlockStream/Attributes/AttributeSpecification.rst.txt b/_sources/BlockStream/Attributes/AttributeSpecification.rst.txt new file mode 100644 index 000000000..21e6ebb03 --- /dev/null +++ b/_sources/BlockStream/Attributes/AttributeSpecification.rst.txt @@ -0,0 +1,6 @@ +Attribute Specification +####################### + +AttributeSpecificationBlock +--------------------------- + diff --git a/_sources/BlockStream/Attributes/index.rst.txt b/_sources/BlockStream/Attributes/index.rst.txt new file mode 100644 index 000000000..4e4dc181c --- /dev/null +++ b/_sources/BlockStream/Attributes/index.rst.txt @@ -0,0 +1,8 @@ +Attributes +########## + +.. toctree:: + :maxdepth: 1 + + AttributeDeclaration + AttributeSpecification diff --git a/_sources/BlockStream/BlockGenerator.rst.txt b/_sources/BlockStream/BlockGenerator.rst.txt new file mode 100644 index 000000000..a7ccaaa66 --- /dev/null +++ b/_sources/BlockStream/BlockGenerator.rst.txt @@ -0,0 +1,2 @@ +Block Generator +############### diff --git a/_sources/BlockStream/CommonBlocks.rst.txt b/_sources/BlockStream/CommonBlocks.rst.txt new file mode 100644 index 000000000..59e5e3fe1 --- /dev/null +++ b/_sources/BlockStream/CommonBlocks.rst.txt @@ -0,0 +1,9 @@ +.. _blkstm-commonblocks: + +Common Blocks +************* + +.. toctree:: + :hidden: + + Expressions diff --git a/_sources/BlockStream/ControlStructures/Case.rst.txt b/_sources/BlockStream/ControlStructures/Case.rst.txt new file mode 100644 index 000000000..b6f93e398 --- /dev/null +++ b/_sources/BlockStream/ControlStructures/Case.rst.txt @@ -0,0 +1,35 @@ +Case Statement +############## + +EndBlock +-------- + +:class:`pyVHDLParser.Blocks.Generic1.EndBlock` + +ArrowBlock +---------- + +:class:`pyVHDLParser.Blocks.Generic.SequentialBeginBlock` + +WhenExpressionBlock +------------------- + +:class:`pyVHDLParser.Blocks.BaseExpression.ExpressionBlockEndedByCharORClosingRoundBracket` + +WhenBlock +--------- + +:class:`pyVHDLParser.Blocks.Generic.SequentialBeginBlock` + +IsBlock +------- + +:class:`pyVHDLParser.Blocks.Generic.SequentialBeginBlock` + +CaseExpressionBlock +------------------- + +:class:`pyVHDLParser.Blocks.BaseExpression.ExpressionBlockEndedByKeywordORClosingRoundBracket` + +CaseBlock +--------- diff --git a/_sources/BlockStream/ControlStructures/Exit.rst.txt b/_sources/BlockStream/ControlStructures/Exit.rst.txt new file mode 100644 index 000000000..1539b4000 --- /dev/null +++ b/_sources/BlockStream/ControlStructures/Exit.rst.txt @@ -0,0 +1,18 @@ +Exit Statement +############## + +EndBlock +-------- + +:class:`pyVHDLParser.Blocks.Generic1.EndOfStatementBlock` + + +ExitConditionBlock +------------------ + +:class:`pyVHDLParser.Blocks.BaseExpression.ExpressionBlockEndedBySemicolon` + + +ExitBlock +--------- + diff --git a/_sources/BlockStream/ControlStructures/For.rst.txt b/_sources/BlockStream/ControlStructures/For.rst.txt new file mode 100644 index 000000000..74e4d29d7 --- /dev/null +++ b/_sources/BlockStream/ControlStructures/For.rst.txt @@ -0,0 +1,29 @@ +For Loop +######## + +IteratorBlock +------------- + +EndBlock +-------- + +:class:`pyVHDLParser.Blocks.Generic1.EndBlock` + +LoopBlock +--------- + +:class:`pyVHDLParser.Blocks.Generic.SequentialBeginBlock` + +ExpressionBlockEndedByLoopORToORDownto +-------------------------------------- + +:class:`pyVHDLParser.Blocks.BaseExpression.ExpressionBlockEndedByKeywordOrToOrDownto` + +ExpressionBlockEndedByLoop +-------------------------- + +:class:`pyVHDLParser.Blocks.BaseExpression.ExpressionBlockEndedByKeywordORClosingRoundBracket` + +LoopIterationDirectionBlock +--------------------------- + diff --git a/_sources/BlockStream/ControlStructures/If.rst.txt b/_sources/BlockStream/ControlStructures/If.rst.txt new file mode 100644 index 000000000..a11206ea5 --- /dev/null +++ b/_sources/BlockStream/ControlStructures/If.rst.txt @@ -0,0 +1,29 @@ +If Statement +############ + +EndBlock +-------- + +:class:`pyVHDLParser.Blocks.Generic1.EndBlock` + +ThenBlock +--------- + +:class:`pyVHDLParser.Blocks.Generic.SequentialBeginBlock` + +ElseBlock +--------- + +:class:`pyVHDLParser.Blocks.Generic.SequentialBeginBlock` + +ExpressionBlockEndedByThen +-------------------------- + +:class:`pyVHDLParser.Blocks.BaseExpression.ExpressionBlockEndedByKeywordORClosingRoundBracket` + +IfConditionBlock +---------------- + + +ElsIfConditionBlock +------------------- diff --git a/_sources/BlockStream/ControlStructures/Next.rst.txt b/_sources/BlockStream/ControlStructures/Next.rst.txt new file mode 100644 index 000000000..a1c861d2f --- /dev/null +++ b/_sources/BlockStream/ControlStructures/Next.rst.txt @@ -0,0 +1,16 @@ +Next Statement +############## + +EndBlock +-------- + +:class:`pyVHDLParser.Blocks.Generic1.EndOfStatementBlock` + +NextConditionBlock +------------------ + +:class:`pyVHDLParser.Blocks.BaseExpression.ExpressionBlockEndedBySemicolon` + +NextBlock +--------- + diff --git a/_sources/BlockStream/ControlStructures/Null.rst.txt b/_sources/BlockStream/ControlStructures/Null.rst.txt new file mode 100644 index 000000000..40754bca9 --- /dev/null +++ b/_sources/BlockStream/ControlStructures/Null.rst.txt @@ -0,0 +1,12 @@ +Null Statement +############## + +EndBlock +-------- + +:class:`pyVHDLParser.Blocks.Generic1.EndOfStatementBlock` + + +NullBlock +--------- + diff --git a/_sources/BlockStream/ControlStructures/Return.rst.txt b/_sources/BlockStream/ControlStructures/Return.rst.txt new file mode 100644 index 000000000..72dd9b04c --- /dev/null +++ b/_sources/BlockStream/ControlStructures/Return.rst.txt @@ -0,0 +1,16 @@ +Return Statement +################ + +EndBlock +-------- + +:class:`pyVHDLParser.Blocks.Generic1.EndOfStatementBlock` + +ReturnExpressionBlock +--------------------- + +:class:`pyVHDLParser.Blocks.BaseExpression.ExpressionBlockEndedBySemicolon` + +ReturnBlock +----------- + diff --git a/_sources/BlockStream/ControlStructures/While.rst.txt b/_sources/BlockStream/ControlStructures/While.rst.txt new file mode 100644 index 000000000..bead603ee --- /dev/null +++ b/_sources/BlockStream/ControlStructures/While.rst.txt @@ -0,0 +1,11 @@ +While Loop +########## + +EndBlock +-------- + +:class:`pyVHDLParser.Blocks.Generic1.EndBlock` + +ConditionBlock +-------------- + diff --git a/_sources/BlockStream/ControlStructures/index.rst.txt b/_sources/BlockStream/ControlStructures/index.rst.txt new file mode 100644 index 000000000..1f1ca2bca --- /dev/null +++ b/_sources/BlockStream/ControlStructures/index.rst.txt @@ -0,0 +1,18 @@ +Control Structures +################## + +VHDL has two control flow statements: ``if`` and ``case``; two loop statements: +``for`` and ``while``; two loop control statements: ``next`` and ``exit``; and +finally two miscellaneous statements: ``return`` and ``null``. + +.. toctree:: + :maxdepth: 1 + + If + Case + For + While + Next + Exit + Return + Null diff --git a/_sources/BlockStream/Examples.rst.txt b/_sources/BlockStream/Examples.rst.txt new file mode 100644 index 000000000..fbc3b335c --- /dev/null +++ b/_sources/BlockStream/Examples.rst.txt @@ -0,0 +1,73 @@ +Examples +######## + +List all entity names +********************* + +The following example lists all entity names from a given source file. To have +full forward and backward linking between blocks, the chain of blocks must be +fully generated. One easy approach is to use a list comprehension. + + +.. rubric:: VHDL Sourcefile + +.. code-block:: VHDL + + entity myEntity_1 is + end; + + entity myEntity_2 is + end; + + +.. rubric:: Expected Outputs + +.. code-block:: + + Found entity: myEntity_1 + Found entity: myEntity_2 + + +.. rubric:: Algorithm + +.. todo:: + + Document algorithm + +.. # + 1. Forward scan via main iterator searching for a ``WordToken`` of value ``entity``. + 2. Start a second (local) forward iteration to search for the next ``WordToken``, + because an entity keyword must be followed by an identifier. + +.. # + code-block:: Python + + # Open a source file + with file.open('r') as fileHandle: + content = fileHandle.read() + + from pyVHDLParser.Base import ParserException + from pyVHDLParser.Token import StartOfDocumentToken, EndOfDocumentToken + from pyVHDLParser.Token.Parser import Tokenizer + + # get a list of all tokens + tokenList = [token for token in Tokenizer.GetVHDLTokenizer(content)] + + try: + for token in tokenList: + if (isinstance(token, WordToken) and token <= "entity"): + tok = token.NextToken + while tok is not None: + if isinstance(tok, WordToken): + print("Found entity: {name}".format(name=tok.Value)) + break + tok = tok.NextToken + except ParserException as ex: + print("ERROR: {0!s}".format(ex)) + except NotImplementedError as ex: + print("NotImplementedError: {0!s}".format(ex)) + + +.. rubric:: Drawbacks + +Now drawbacks compare to the purely token-base solution. diff --git a/_sources/BlockStream/Expressions.rst.txt b/_sources/BlockStream/Expressions.rst.txt new file mode 100644 index 000000000..2b232fa51 --- /dev/null +++ b/_sources/BlockStream/Expressions.rst.txt @@ -0,0 +1,135 @@ +Expressions +########### + +BaseExpression blocks are base-classes for a specific expression implementation. All +four expression base-classes are derived from another base-class called :class:`~pyVHDLParser.Blocks.BaseExpression.ExpressionBlock` +E.g. :class:`~pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationDefaultExpressionBlock` +is derived from :class:`~pyVHDLParser.Blocks.BaseExpression.ExpressionBlockEndedBySemicolon`. + +Generic BaseExpression Form +*************************** + +ExpressionBlock +--------------- + +**Condensed definition of class** :class:`~pyVHDLParser.Blocks.BaseExpression.ExpressionBlock`: + +.. code-block:: Python + + @Export + class ExpressionBlock(Block): + CHARACTER_TRANSLATION = { + "=": EqualOperator, + "+": PlusOperator, + "-": MinusOperator, + "*": MultiplyOperator, + "/": DivideOperator, + "&": ConcatOperator, + "<": LessThanOperator, + ">": GreaterThanOperator, + ",": DelimiterToken + # ";": EndToken + } + FUSED_CHARACTER_TRANSLATION = { + "**": PowerOperator, + "/=": UnequalOperator, + "<=": LessThanOrEqualOperator, + ">=": GreaterThanOrEqualOperator, + "?=": MatchingEqualOperator, + "?/=": MatchingUnequalOperator, + "?<": MatchingLessThanOperator, + "?<=": MatchingLessThanOrEqualOperator, + "?>": MatchingGreaterThanOperator, + "?>=": MatchingGreaterThanOrEqualOperator + # "=>": MapAssociationKeyword, + # "<=>": SignalAssociationKeyword + } + OPERATOR_TRANSLATIONS = { + "or": OrKeyword, + "nor": NorKeyword, + "and": AndKeyword, + "nand": NandKeyword, + "xor": XorKeyword, + "xnor": XnorKeyword, + "sla": SlaKeyword, + "sll": SllKeyword, + "sra": SraKeyword, + "srl": SrlKeyword, + "not": NotKeyword, + "abs": AbsKeyword + } + + + +Specific BaseExpression Forms +***************************** + +Expressions can be ended by: + +``)`` or a user-defined character + See :class:`~pyVHDLParser.Blocks.BaseExpression.ExpressionBlockEndedByCharORClosingRoundBracket` + +* ``)`` or a user-defined keyword + See :class:`~pyVHDLParser.Blocks.BaseExpression.ExpressionBlockEndedByKeywordORClosingRoundBracket` + +* ``to`` or ``downto`` keyword + See :class:`~pyVHDLParser.Blocks.BaseExpression.ExpressionBlockEndedByKeywordOrToOrDownto` + +* ``;`` + See :class:`~pyVHDLParser.Blocks.BaseExpression.ExpressionBlockEndedBySemicolon` + + + +ExpressionBlockEndedByCharORClosingRoundBracket +----------------------------------------------- + +This block is derived from :class:`~pyVHDLParser.Blocks.BaseExpression.ExpressionBlock`. +It implements an expression that is either ended by a closing round bracket +(``)``) or a user-defined character. When this base-class is inherited, the user +needs to overwrite: + +``EXIT_CHAR`` + The character causing this parser to exit and close this expression block. + +``EXIT_TOKEN`` + The token that is emitted as a replacement for the :class:`~pyVHDLParser.Token.CharacterToken`. + +``EXIT_BLOCK`` + The block that is generated when exiting the block. + + +**Condensed definition of class** :class:`~pyVHDLParser.Blocks.BaseExpression.ExpressionBlockEndedByCharORClosingRoundBracket`: + +.. code-block:: Python + + @Export + class ExpressionBlockEndedByCharORClosingRoundBracket(ExpressionBlock): + EXIT_CHAR : str = None + EXIT_TOKEN : Token = None + EXIT_BLOCK : Block = None + + @classmethod + def stateBeforeExpression(cls, parserState: ParserState): + + @classmethod + def stateExpression(cls, parserState: ParserState): + + @classmethod + def stateWhitespace1(cls, parserState: ParserState): + + + +ExpressionBlockEndedByKeywordORClosingRoundBracket +-------------------------------------------------- + +This block is derived from :class:`~pyVHDLParser.Blocks.BaseExpression.ExpressionBlock`. + +ExpressionBlockEndedByKeywordOrToOrDownto +----------------------------------------- + +This block is derived from :class:`~pyVHDLParser.Blocks.BaseExpression.ExpressionBlock`. + +ExpressionBlockEndedBySemicolon +------------------------------- + +This block is derived from :class:`~pyVHDLParser.Blocks.BaseExpression.ExpressionBlock`. diff --git a/_sources/BlockStream/Generates/CaseGenerate.rst.txt b/_sources/BlockStream/Generates/CaseGenerate.rst.txt new file mode 100644 index 000000000..4e60e08e3 --- /dev/null +++ b/_sources/BlockStream/Generates/CaseGenerate.rst.txt @@ -0,0 +1,2 @@ +Case Generate Statement +####################### diff --git a/_sources/BlockStream/Generates/ForGenerate.rst.txt b/_sources/BlockStream/Generates/ForGenerate.rst.txt new file mode 100644 index 000000000..367f682e0 --- /dev/null +++ b/_sources/BlockStream/Generates/ForGenerate.rst.txt @@ -0,0 +1,2 @@ +For Generate Statement +###################### diff --git a/_sources/BlockStream/Generates/IfGenerate.rst.txt b/_sources/BlockStream/Generates/IfGenerate.rst.txt new file mode 100644 index 000000000..fdac1a736 --- /dev/null +++ b/_sources/BlockStream/Generates/IfGenerate.rst.txt @@ -0,0 +1,2 @@ +If Generate Statement +##################### diff --git a/_sources/BlockStream/Generates/index.rst.txt b/_sources/BlockStream/Generates/index.rst.txt new file mode 100644 index 000000000..eeff4d6fd --- /dev/null +++ b/_sources/BlockStream/Generates/index.rst.txt @@ -0,0 +1,12 @@ +Generate Statements +################### + +VHDL supports three different *generate*-statements: ``if``, ``case`` and +``for`` generate. + +.. toctree:: + :maxdepth: 1 + + IfGenerate + CaseGenerate + ForGenerate diff --git a/_sources/BlockStream/Instantiation/Entity.rst.txt b/_sources/BlockStream/Instantiation/Entity.rst.txt new file mode 100644 index 000000000..2a9935d40 --- /dev/null +++ b/_sources/BlockStream/Instantiation/Entity.rst.txt @@ -0,0 +1,2 @@ +Entity Instantiation +#################### diff --git a/_sources/BlockStream/Instantiation/Function.rst.txt b/_sources/BlockStream/Instantiation/Function.rst.txt new file mode 100644 index 000000000..e879d1a92 --- /dev/null +++ b/_sources/BlockStream/Instantiation/Function.rst.txt @@ -0,0 +1,2 @@ +Function Instantiation +###################### diff --git a/_sources/BlockStream/Instantiation/Package.rst.txt b/_sources/BlockStream/Instantiation/Package.rst.txt new file mode 100644 index 000000000..9e1bf7863 --- /dev/null +++ b/_sources/BlockStream/Instantiation/Package.rst.txt @@ -0,0 +1,2 @@ +Package Instantiation +##################### diff --git a/_sources/BlockStream/Instantiation/Procedure.rst.txt b/_sources/BlockStream/Instantiation/Procedure.rst.txt new file mode 100644 index 000000000..79efa764c --- /dev/null +++ b/_sources/BlockStream/Instantiation/Procedure.rst.txt @@ -0,0 +1,2 @@ +Procedure Instantiation +####################### diff --git a/_sources/BlockStream/Instantiation/index.rst.txt b/_sources/BlockStream/Instantiation/index.rst.txt new file mode 100644 index 000000000..8c8a6cb1b --- /dev/null +++ b/_sources/BlockStream/Instantiation/index.rst.txt @@ -0,0 +1,9 @@ +Instantiations +############## + +.. toctree:: + + Entity + Package + Function + Procedure diff --git a/_sources/BlockStream/Lists/GenericList.rst.txt b/_sources/BlockStream/Lists/GenericList.rst.txt new file mode 100644 index 000000000..2d9199ad4 --- /dev/null +++ b/_sources/BlockStream/Lists/GenericList.rst.txt @@ -0,0 +1,2 @@ +Generic List +############ diff --git a/_sources/BlockStream/Lists/GenericMap.rst.txt b/_sources/BlockStream/Lists/GenericMap.rst.txt new file mode 100644 index 000000000..e521a95df --- /dev/null +++ b/_sources/BlockStream/Lists/GenericMap.rst.txt @@ -0,0 +1,2 @@ +Generic Map +########### diff --git a/_sources/BlockStream/Lists/ParameterList.rst.txt b/_sources/BlockStream/Lists/ParameterList.rst.txt new file mode 100644 index 000000000..f4ec85b7d --- /dev/null +++ b/_sources/BlockStream/Lists/ParameterList.rst.txt @@ -0,0 +1,2 @@ +Parameter List +############## diff --git a/_sources/BlockStream/Lists/PortList.rst.txt b/_sources/BlockStream/Lists/PortList.rst.txt new file mode 100644 index 000000000..f8720d8ce --- /dev/null +++ b/_sources/BlockStream/Lists/PortList.rst.txt @@ -0,0 +1,2 @@ +Port List +######### diff --git a/_sources/BlockStream/Lists/PortMap.rst.txt b/_sources/BlockStream/Lists/PortMap.rst.txt new file mode 100644 index 000000000..08569780f --- /dev/null +++ b/_sources/BlockStream/Lists/PortMap.rst.txt @@ -0,0 +1,2 @@ +Port Map +######## diff --git a/_sources/BlockStream/Lists/SensitivityList.rst.txt b/_sources/BlockStream/Lists/SensitivityList.rst.txt new file mode 100644 index 000000000..c0c8bf1af --- /dev/null +++ b/_sources/BlockStream/Lists/SensitivityList.rst.txt @@ -0,0 +1,2 @@ +Sensitivity List +################ diff --git a/_sources/BlockStream/Lists/index.rst.txt b/_sources/BlockStream/Lists/index.rst.txt new file mode 100644 index 000000000..320321e97 --- /dev/null +++ b/_sources/BlockStream/Lists/index.rst.txt @@ -0,0 +1,11 @@ +Lists and Maps +############## + +.. toctree:: + + GenericList + GenericMap + PortList + PortMap + ParameterList + SensitivityList diff --git a/_sources/BlockStream/MetaBlocks.rst.txt b/_sources/BlockStream/MetaBlocks.rst.txt new file mode 100644 index 000000000..0e60e4c10 --- /dev/null +++ b/_sources/BlockStream/MetaBlocks.rst.txt @@ -0,0 +1,42 @@ +.. _blkstm-metablocks: + +Meta Blocks +########### + +There are two meta-blocks: :class:`~pyVHDLParser.Blocks.StartOfDocumentBlock` +and :class:`~pyVHDLParser.Blocks.EndOfDocumentBlock`. These blocks represent +a start and end of a token stream. These blocks have a length of ``0`` characters. + + + +.. _blkstm-sodb: + +StartOfDocumentBlock +-------------------- + +This block starts a chain of double-linked blocks in a block stream. It's used, +if the input source is a whole file, otherwise :class:`~pyVHDLParser.Blocks.StartOfSnippetBlock`. +It is derived from base-class :class:`~pyVHDLParser.Blocks.StartOfBlock` +and mixin :class:`~pyVHDLParser.StartOfDocument`. + +**Interitance diagram:** + +.. inheritance-diagram:: pyVHDLParser.Blocks.StartOfDocumentBlock + :parts: 1 + + + +.. _blkstm-eodb: + +EndOfDocumentBlock +------------------ + +This block ends a chain of double-linked blocks in a block stream. It's used, +if the input source is a whole file, otherwise :class:`~pyVHDLParser.Blocks.EndOfSnippetBlock`. +It is derived from base-class :class:`~pyVHDLParser.Blocks.EndOfBlock` +and mixin :class:`~pyVHDLParser.EndOfDocument`. + +**Interitance diagram:** + +.. inheritance-diagram:: pyVHDLParser.Blocks.EndOfDocumentBlock + :parts: 1 diff --git a/_sources/BlockStream/Objects/BaseClasses.rst.txt b/_sources/BlockStream/Objects/BaseClasses.rst.txt new file mode 100644 index 000000000..c6d9713d0 --- /dev/null +++ b/_sources/BlockStream/Objects/BaseClasses.rst.txt @@ -0,0 +1,10 @@ +Base Classes +############ + +ObjectDeclarationBlock +---------------------- + +ObjectDeclarationEndMarkerBlock +------------------------------- + +:class:`pyVHDLParser.Blocks.Generic1.EndOfStatementBlock` diff --git a/_sources/BlockStream/Objects/Constant.rst.txt b/_sources/BlockStream/Objects/Constant.rst.txt new file mode 100644 index 000000000..419d261af --- /dev/null +++ b/_sources/BlockStream/Objects/Constant.rst.txt @@ -0,0 +1,17 @@ +Constants +######### + +ConstantDeclarationEndMarkerBlock +--------------------------------- + +:class:`pyVHDLParser.Blocks.Object.ObjectDeclarationEndMarkerBlock` + +ConstantDeclarationDefaultExpressionBlock +----------------------------------------- + +:class:`pyVHDLParser.Blocks.BaseExpression.ExpressionBlockEndedBySemicolon` + +ConstantDeclarationBlock +------------------------ + +:class:`pyVHDLParser.Blocks.Object.ObjectDeclarationBlock` diff --git a/_sources/BlockStream/Objects/File.rst.txt b/_sources/BlockStream/Objects/File.rst.txt new file mode 100644 index 000000000..eaa2067ef --- /dev/null +++ b/_sources/BlockStream/Objects/File.rst.txt @@ -0,0 +1,3 @@ +File +#### + diff --git a/_sources/BlockStream/Objects/SharedVariable.rst.txt b/_sources/BlockStream/Objects/SharedVariable.rst.txt new file mode 100644 index 000000000..030034fc2 --- /dev/null +++ b/_sources/BlockStream/Objects/SharedVariable.rst.txt @@ -0,0 +1,12 @@ +Shared Variables +################ + +SharedVariableDeclarationEndMarkerBlock +--------------------------------------- + +:class:`pyVHDLParser.Blocks.Object.ObjectDeclarationEndMarkerBlock` + +SharedVariableDeclarationBlock +------------------------------ + +:class:`pyVHDLParser.Blocks.Object.ObjectDeclarationBlock` diff --git a/_sources/BlockStream/Objects/Signal.rst.txt b/_sources/BlockStream/Objects/Signal.rst.txt new file mode 100644 index 000000000..bf99a3fd1 --- /dev/null +++ b/_sources/BlockStream/Objects/Signal.rst.txt @@ -0,0 +1,18 @@ +Signals +####### + +SignalDeclarationEndMarkerBlock +------------------------------- + +:class:`pyVHDLParser.Blocks.Object.ObjectDeclarationEndMarkerBlock` + +SignalDeclarationDefaultExpressionBlock +--------------------------------------- + +:class:`pyVHDLParser.Blocks.BaseExpression.ExpressionBlockEndedBySemicolon` + +SignalDeclarationBlock +---------------------- + +:class:`pyVHDLParser.Blocks.Object.ObjectDeclarationBlock` + diff --git a/_sources/BlockStream/Objects/Variable.rst.txt b/_sources/BlockStream/Objects/Variable.rst.txt new file mode 100644 index 000000000..21d986158 --- /dev/null +++ b/_sources/BlockStream/Objects/Variable.rst.txt @@ -0,0 +1,17 @@ +Variables +######### + +VariableDeclarationEndMarkerBlock +--------------------------------- + +:class:`pyVHDLParser.Blocks.Object.ObjectDeclarationEndMarkerBlock` + +VariableDeclarationDefaultExpressionBlock +----------------------------------------- + +:class:`pyVHDLParser.Blocks.BaseExpression.ExpressionBlockEndedBySemicolon` + +VariableDeclarationBlock +------------------------ + +:class:`pyVHDLParser.Blocks.Object.ObjectDeclarationBlock` diff --git a/_sources/BlockStream/Objects/index.rst.txt b/_sources/BlockStream/Objects/index.rst.txt new file mode 100644 index 000000000..0c5442e74 --- /dev/null +++ b/_sources/BlockStream/Objects/index.rst.txt @@ -0,0 +1,11 @@ +Objects +####### + +.. toctree:: + + BaseClasses + Constant + File + Signal + SharedVariable + Variable diff --git a/_sources/BlockStream/References/Context.rst.txt b/_sources/BlockStream/References/Context.rst.txt new file mode 100644 index 000000000..a6ae4bfca --- /dev/null +++ b/_sources/BlockStream/References/Context.rst.txt @@ -0,0 +1,2 @@ +Context Statement +################# diff --git a/_sources/BlockStream/References/Library.rst.txt b/_sources/BlockStream/References/Library.rst.txt new file mode 100644 index 000000000..ca89026a7 --- /dev/null +++ b/_sources/BlockStream/References/Library.rst.txt @@ -0,0 +1,2 @@ +LibraryStatement Statement +########################## diff --git a/_sources/BlockStream/References/Use.rst.txt b/_sources/BlockStream/References/Use.rst.txt new file mode 100644 index 000000000..37a1ff5fe --- /dev/null +++ b/_sources/BlockStream/References/Use.rst.txt @@ -0,0 +1,2 @@ +Use Statement +############# diff --git a/_sources/BlockStream/References/index.rst.txt b/_sources/BlockStream/References/index.rst.txt new file mode 100644 index 000000000..b975ebb98 --- /dev/null +++ b/_sources/BlockStream/References/index.rst.txt @@ -0,0 +1,8 @@ +References +########## + +.. toctree:: + + Library + Use + Context diff --git a/_sources/BlockStream/Reporting/Assert.rst.txt b/_sources/BlockStream/Reporting/Assert.rst.txt new file mode 100644 index 000000000..deae4c927 --- /dev/null +++ b/_sources/BlockStream/Reporting/Assert.rst.txt @@ -0,0 +1,6 @@ +Assert Statement +################ + +.. todo:: + + Not yet implemented. Thus no documentation available. diff --git a/_sources/BlockStream/Reporting/Report.rst.txt b/_sources/BlockStream/Reporting/Report.rst.txt new file mode 100644 index 000000000..9c6ff4ec0 --- /dev/null +++ b/_sources/BlockStream/Reporting/Report.rst.txt @@ -0,0 +1,6 @@ +Report Statement +################ + +.. todo:: + + Not yet implemented. Thus no documentation available. diff --git a/_sources/BlockStream/Reporting/index.rst.txt b/_sources/BlockStream/Reporting/index.rst.txt new file mode 100644 index 000000000..dec45ebdf --- /dev/null +++ b/_sources/BlockStream/Reporting/index.rst.txt @@ -0,0 +1,7 @@ +Reporting +######### + +.. toctree:: + + Assert + Report diff --git a/_sources/BlockStream/Sequential/Function.rst.txt b/_sources/BlockStream/Sequential/Function.rst.txt new file mode 100644 index 000000000..c08471f80 --- /dev/null +++ b/_sources/BlockStream/Sequential/Function.rst.txt @@ -0,0 +1,23 @@ +Function +######## + +EndBlock +-------- + +EndBlockBase + +BeginBlock +---------- + +SequentialBeginBlock + +DeclarativeRegion +----------------- + +SequentialDeclarativeRegion + +NameBlock +--------- + +ReturnTypeBlock +--------------- diff --git a/_sources/BlockStream/Sequential/Package.rst.txt b/_sources/BlockStream/Sequential/Package.rst.txt new file mode 100644 index 000000000..9eb018e82 --- /dev/null +++ b/_sources/BlockStream/Sequential/Package.rst.txt @@ -0,0 +1,15 @@ +Package +####### + +EndBlock +-------- + +EndBlockBase + +DeclarativeRegion +----------------- + +SequentialDeclarativeRegion + +NameBlock +--------- diff --git a/_sources/BlockStream/Sequential/PackageBody.rst.txt b/_sources/BlockStream/Sequential/PackageBody.rst.txt new file mode 100644 index 000000000..7a62bba96 --- /dev/null +++ b/_sources/BlockStream/Sequential/PackageBody.rst.txt @@ -0,0 +1,16 @@ +Package Body +############ + +EndBlock +-------- + +EndBlockBase + +DeclarativeRegion +----------------- + +SequentialDeclarativeRegion + +NameBlock +--------- + diff --git a/_sources/BlockStream/Sequential/Procedure.rst.txt b/_sources/BlockStream/Sequential/Procedure.rst.txt new file mode 100644 index 000000000..d19ce3f23 --- /dev/null +++ b/_sources/BlockStream/Sequential/Procedure.rst.txt @@ -0,0 +1,23 @@ +Procedure +######### + +EndBlock +-------- + +EndBlockBase + +BeginBlock +---------- + +SequentialBeginBlock + +DeclarativeRegion +----------------- + +SequentialDeclarativeRegion + +NameBlock +--------- + +VoidBlock +--------- diff --git a/_sources/BlockStream/Sequential/Process.rst.txt b/_sources/BlockStream/Sequential/Process.rst.txt new file mode 100644 index 000000000..a9d182187 --- /dev/null +++ b/_sources/BlockStream/Sequential/Process.rst.txt @@ -0,0 +1,23 @@ +Process +####### + +EndBlock +-------- + +EndBlockBase + +BeginBlock +---------- + +SequentialBeginBlock + +DeclarativeRegion +----------------- + +SequentialDeclarativeRegion + +OpenBlock +--------- + +OpenBlock2 +---------- diff --git a/_sources/BlockStream/Sequential/index.rst.txt b/_sources/BlockStream/Sequential/index.rst.txt new file mode 100644 index 000000000..2b76f68a0 --- /dev/null +++ b/_sources/BlockStream/Sequential/index.rst.txt @@ -0,0 +1,10 @@ +Sequential +########## + +.. toctree:: + + Package + PackageBody + Function + Procedure + Process diff --git a/_sources/BlockStream/SpecificBlocks.rst.txt b/_sources/BlockStream/SpecificBlocks.rst.txt new file mode 100644 index 000000000..57820e6b4 --- /dev/null +++ b/_sources/BlockStream/SpecificBlocks.rst.txt @@ -0,0 +1,22 @@ +Specific Blocks +############### + +The following subsections will describe the meaning of individual blocks +generated by the block generator. A set of blocks (block classes) corresponds +to a VHDL language construct like a declaration or statement. + +.. toctree:: + :maxdepth: 2 + + Assignments/index + Attributes/index + ControlStructures/index + Generates/index + Instantiation/index + Lists/index + References/index + Reporting/index + Sequential/index + Structural/index + Types/index + Objects/index diff --git a/_sources/BlockStream/Structural/Architecture.rst.txt b/_sources/BlockStream/Structural/Architecture.rst.txt new file mode 100644 index 000000000..1809a9262 --- /dev/null +++ b/_sources/BlockStream/Structural/Architecture.rst.txt @@ -0,0 +1,20 @@ +Architecture +############ + +EndBlock +-------- + +EndBlock + +BeginBlock +---------- + +ConcurrentBeginBlock + +DeclarativeRegion +----------------- + +ConcurrentDeclarativeRegion + +NameBlock +--------- diff --git a/_sources/BlockStream/Structural/Block.rst.txt b/_sources/BlockStream/Structural/Block.rst.txt new file mode 100644 index 000000000..d4243af2b --- /dev/null +++ b/_sources/BlockStream/Structural/Block.rst.txt @@ -0,0 +1,20 @@ +Block +##### + +EndBlock +-------- + +EndBlockBase + +BeginBlock +---------- + +ConcurrentBeginBlock + +DeclarativeRegion +----------------- + +ConcurrentDeclarativeRegion + +NameBlock +--------- diff --git a/_sources/BlockStream/Structural/Component.rst.txt b/_sources/BlockStream/Structural/Component.rst.txt new file mode 100644 index 000000000..b5d4da5b0 --- /dev/null +++ b/_sources/BlockStream/Structural/Component.rst.txt @@ -0,0 +1,10 @@ +Component +######### + +EndBlock +-------- + +EndBlock + +NameBlock +--------- diff --git a/_sources/BlockStream/Structural/Configuration.rst.txt b/_sources/BlockStream/Structural/Configuration.rst.txt new file mode 100644 index 000000000..5f0d9a5a8 --- /dev/null +++ b/_sources/BlockStream/Structural/Configuration.rst.txt @@ -0,0 +1,15 @@ +Configuration +############# + +EndBlock +-------- + +EndBlock + +BeginBlock +---------- + +ConcurrentBeginBlock + +NameBlock +--------- diff --git a/_sources/BlockStream/Structural/Entity.rst.txt b/_sources/BlockStream/Structural/Entity.rst.txt new file mode 100644 index 000000000..d91746dcc --- /dev/null +++ b/_sources/BlockStream/Structural/Entity.rst.txt @@ -0,0 +1,20 @@ +Entity +###### + +EndBlock +-------- + +EndBlockBase + +BeginBlock +---------- + +ConcurrentBeginBlock + +DeclarativeRegion +----------------- + +ConcurrentDeclarativeRegion + +NameBlock +--------- diff --git a/_sources/BlockStream/Structural/index.rst.txt b/_sources/BlockStream/Structural/index.rst.txt new file mode 100644 index 000000000..d39531e7d --- /dev/null +++ b/_sources/BlockStream/Structural/index.rst.txt @@ -0,0 +1,10 @@ +Structural +########## + +.. toctree:: + + Block + Entity + Architecture + Component + Configuration diff --git a/_sources/BlockStream/Types/Subtype.rst.txt b/_sources/BlockStream/Types/Subtype.rst.txt new file mode 100644 index 000000000..91f082d7e --- /dev/null +++ b/_sources/BlockStream/Types/Subtype.rst.txt @@ -0,0 +1,6 @@ +Subtype +####### + +.. todo:: + + Not yet implemented. Thus no documentation available. diff --git a/_sources/BlockStream/Types/Type.rst.txt b/_sources/BlockStream/Types/Type.rst.txt new file mode 100644 index 000000000..11c35db71 --- /dev/null +++ b/_sources/BlockStream/Types/Type.rst.txt @@ -0,0 +1,6 @@ +Type +#### + +.. todo:: + + Not yet implemented. Thus no documentation available. diff --git a/_sources/BlockStream/Types/index.rst.txt b/_sources/BlockStream/Types/index.rst.txt new file mode 100644 index 000000000..dbd6cfd14 --- /dev/null +++ b/_sources/BlockStream/Types/index.rst.txt @@ -0,0 +1,7 @@ +Types +##### + +.. toctree:: + + Subtype + Type diff --git a/_sources/BlockStream/Usage.rst.txt b/_sources/BlockStream/Usage.rst.txt new file mode 100644 index 000000000..91f9848dc --- /dev/null +++ b/_sources/BlockStream/Usage.rst.txt @@ -0,0 +1,97 @@ +Usage +##### + +The following shows two code examples on how to use the block generator. The +first is generator-based. The second one retrieves an iterator from the generator +and uses low-level access to the chain of blocks. + +Block Generator +*************** + +At first, a file is opened and the file content is read into a string buffer +called ``content``. Strings are iterable, thus a string can be an input for the +Tokenizer. + +At second, two chained generator objects are created by ``GetVHDLTokenizer(...)`` +and ``Transform(...)``. + +Finally, a *for*-loop can process each block from :class:`~pyVHDLParser.Blocks.StartOfDocumentBlock` +to :class:`~pyVHDLParser.Blocks.EndOfDocumentBlock`. + +.. code-block:: Python + + # Open a source file + with file.open('r') as fileHandle: + content = fileHandle.read() + + from pyVHDLParser.Token.Parser import Tokenizer + from pyVHDLParser.Blocks import TokenToBlockParser + from pyVHDLParser.Base import ParserException + + # get a token generator + tokenStream = Tokenizer.GetVHDLTokenizer(content) + # get a block generator + blockStream = TokenToBlockParser.Transform(tokenStream) + + try: + for block in blockStream: + print("{block!s}".format(block=block)) + for token in block: + print(" {token!s}".format(token=token)) + except ParserException as ex: + print("ERROR: {0!s}".format(ex)) + except NotImplementedError as ex: + print("NotImplementedError: {0!s}".format(ex)) + + + +Block Iterator +************** + +Similar to the previous example, a stream of blocks is generated by a block +generator. This time, iteration is manually implemented with a *while*-loop. The +function :func:`iter` creates an iterator object from a generator object. At +next, calling :func:`next` returns a new block for each call. + +The example wants to print the outer objects (first and last) of the block chain. +So at first, :func:`next` is called once to get the first element. Then an +endless loop is used to generate all blocks. If the generator ends, it raises +a :exec:`StopIteration` exception. The last block will be stored in variable +``lastBlock``. + +.. code-block:: Python + + # Open a source file + with file.open('r') as fileHandle: + content = fileHandle.read() + + from pyVHDLParser.Token.Parser import Tokenizer + from pyVHDLParser.Blocks import TokenToBlockParser + from pyVHDLParser.Base import ParserException + + # get a token generator + tokenStream = Tokenizer.GetVHDLTokenizer(content) + # get a block generator + blockStream = TokenToBlockParser.Transform(tokenStream) + + # get the iterator for that generator + blockIterator = iter(blockStream) + firstBlock = next(blockIterator) + + try: + while lastBlock := next(blockIterator): + pass + except StopIteration: + pass + + print("first block: {block}".format(block=firstBlock)) + print("last block: {block}".format(block=lastBlock)) + + + +Token Iterator +************** + +.. todo:: + + Document the token iterator for a block. (limited range) diff --git a/_sources/BlockStream/index.rst.txt b/_sources/BlockStream/index.rst.txt new file mode 100644 index 000000000..dea20c7ea --- /dev/null +++ b/_sources/BlockStream/index.rst.txt @@ -0,0 +1,56 @@ +.. _blkstm: + +2. Pass - Blocks +################ + +In the :ref:`second pass ` a stream of double-linked +:class:`~pyVHDLParser.Token.Token` objects is read and grouped in another Python +:term:`generator` to blocks. Blocks are again a chain of double-linked +objects of base-class :class:`~pyVHDLParser.Blocks.Block`. + + +**Condensed definition of class** :class:`~pyVHDLParser.Blocks.Block`: + +.. code-block:: Python + + @Export + class Block(metaclass=MetaBlock): + """Base-class for all :term:`block` classes.""" + + __STATES__ : List = None #: List of all `state...` methods in this class. + + _previousBlock : Block = None #: Reference to the previous block. + NextBlock : Block = None #: Reference to the next block. + StartToken : Token = None #: Reference to the first token in the scope of this block. + EndToken : Token = None #: Reference to the last token in the scope of this block. + MultiPart : bool = None #: True, if this block has multiple parts. + + def __init__(self, previousBlock, startToken, endToken=None, multiPart=False): + def __len__(self): + def __iter__(self): + def __repr__(self): + def __str__(self): + + @property + def PreviousBlock(self): + + @property + def Length(self): + + @property + def States(self): + + @classmethod + def stateError(cls, parserState: ParserState): + + + +.. toctree:: + :hidden: + + MetaBlocks + CommonBlocks + SpecificBlocks + BlockGenerator + Usage + Examples diff --git a/_sources/ChangeLog/index.rst.txt b/_sources/ChangeLog/index.rst.txt new file mode 100644 index 000000000..090984938 --- /dev/null +++ b/_sources/ChangeLog/index.rst.txt @@ -0,0 +1,6 @@ +ChangeLog +######### + +.. todo:: + + Start to write change logs. diff --git a/_sources/Concepts.rst.txt b/_sources/Concepts.rst.txt new file mode 100644 index 000000000..21dc484ec --- /dev/null +++ b/_sources/Concepts.rst.txt @@ -0,0 +1,293 @@ +.. _concept: + +Concepts +######## + +.. _concept-passes: + +Multiple Passes +*************** + +The parser is implemented as a multiple-pass parser, so the gained knowledge is +deepened pass-by-pass. More over, the parser is implemented as a +streaming-parser implemented with Python generators. + +**Passes:** + +0. VHDL file pre-processing - needed for tool directives: + + * :fa:`square-o` File decryption + * :fa:`square-o` Conditional analysis (new since VHDL-2019) + +1. Token generation + + * :fa:`check-square-o` Slice a text file into character groups (tokens/words) + * :fa:`check-square-o` Preserve whitespace (space, tab, linebreak) + * :fa:`check-square-o` Preserved comments (single-/multi-line comments) + +2. Block generation + + * :fa:`check-square-o` Assemble tokens in blocks (snippets of a statements) for faster document + navigation + * :fa:`check-square-o` Exchange simple tokens (e.g. string token) with specific tokens (e.g. + identifier or keyword) + +3. Group generation + + * :fa:`check-square-o` Assemble blocks in groups (statements) + +4. Code-DOM generation + + * :fa:`square-o` Consume a stream of groups to assemble the Code-DOM + * :fa:`square-o` Extract information from a group, their blocks or their specific tokens + +5. Comment annotation + + * :fa:`square-o` Scan the data structure for comments and annotate comment to statements + +6. Build language model + + * :fa:`square-o` Combine multiple Code-DOMs to form a full language model + +7. Build dependencies + + * :fa:`square-o` Analyze order + * :fa:`square-o` Type hierarchy + * :fa:`square-o` Instance hierarchy + +8. Checkers + + * :fa:`square-o` Check symbols (identifiers, types, ...) + * :fa:`square-o` Check code style + * :fa:`square-o` Check documentation + +9. Statistics + + * :fa:`square-o` Create statistics (SLoC, Comments vs. Code, ...) + + +Object-Oriented Programming +*************************** + +Data Structures +=============== + +All internal data structures are implemented as classes with fields (Python +calls it attributes), methods, properties (getter and setters) and references +(pointers) to other instances of classes. + +All data is accompanied by its modification procedures in form of methods. New +instances of a class can be created by calling the class and implicitly +executing its initializer method ``__init__`` or by calling a classmethod to +help constructing that instance. + + +Inheritance +=========== + +pyVHDLParser makes heavy use of inheritance to share implementations and to +allow other classes or a user to modify the behavior of all derived classes by +modifying a single source. + + +Multiple Inheritance (Mixins) +============================= + +pyVHDLParser uses multiple inheritance via mixin classes. This allows e.g. an +abstract definition of data models, which are later combined with a parser. + + +Properties +========== + +Instead of individual getter and setter methods, pyVHDLParser user Python +properties. + + +Overwriting +=========== + +.. todo:: + + Concepts -> OOP -> Overwriting + + +Overloading +=========== + +.. todo:: + + Concepts -> OOP -> Overloading + + +Meta-Classes +============ + +Some additional behaviour can be easier implemented by modifying the class +constructing other classes. Python calls this a meta-class. One prominent +example is :class:`type`. + + +Type Annotations +================ + +pyVHDLParser uses type annotations in method parameter definitions and in +class field declarations to give hints in IDEs and documentation, what objects +of which types are expected. + + + +Double-Linked Lists +******************* + +Data structures with direct references (pointers) in general and double linked +lists in specific are approaches to implement fast and typed navigation from +object to object. If a reference has multiple endpoints, it is either an +order-preserving :class:`list` or :class:`OrderedDict`. + +Many parts in pyVHDLParser form a chain of double-linked objects like tokens, +blocks and groups. These object chains (or linked lists) can easily be +:term:`iterated `. Iterators can consume such linked lists and reemit +the content in a modified way. + +More over, such iterators can be packaged into Python generators. + +Iterators and generators can be used in Python's ``for`` [1]_ loops. + + + +Python iterators +**************** + +A Python iterable is an object implementing an ``__iter__`` method returning an +iterator. The iterator implements a ``__next__`` method to return the next +element in line. Usually, the iterator has some internal state, so it can compute +the next element. At the end of an iteration, :exc:`StopIteration` is raised. + +.. code-block:: Python + + class Data: + list : List = [] + + class Iterator: + obj : Data = None + value : Int = None + + def __init__(self, obj): + self.obj = obj + self.value = 1 + + def __next__(self): + x = self.value + try: + self.value += 1 + return obj.list[x] + except KeyError: + raise StopIteration + + def __iter__(self): + return Iterator(self) + + myData = Data() + + for x in myData: + print(x) + + + +Python generators +***************** + +A Python generator is a co-routine (function or method) that return execution +flow from callee and in most cases with a return value to the caller. The state +of the routine is preserved (e.g. local variables). When the execution in the +co-routine is continued, it continues right after the ``yield`` statement. + +It's also possible to send parameters from caller to callee, when continuing the +co-routines execution. (use ``send`` method.) + +The generation of tokens, blocks and groups is implemented as a generator heavily +using the ``yield`` statement. + + + +Parallelism +*********** + +.. todo:: + + Describe how to parallelize on multiple cores. + + + +Token replacement +***************** + +.. todo:: + + Describe why and how tokens are replaced. Describe why this is not corrupting data. + + + +Classmethods as States +********************** + +.. todo:: + + Describe why pyVHDLParser uses classmethods to represent parser states. + + + +Parser State Machine +******************** + +.. todo:: + + Describe how the parser works in pyVHDLParser. + + + +Code-DOM +******** + + + +.. todo:: + + Describe what a Code-DOM is. + +.. topic:: Design principles + +* Clearly named classes that model the semantics of VHDL. +* All language constructs (statements, declarations, specifications, ...) + have their own classes. These classes are arranged in a logical hierarchy, + with a single common base-class. +* Child objects shall have a reference to their parent. +* Comments will be associated with a particular code object. +* Easy modifications of the object tree. +* Support formatting code objects as text for export and debugging. +* Allow creating a CodeDOM from input file or via API calls. +* Support resolving of symbolic references into direct references to other + objects. + +.. note:: + + CodeDOM is based on the ideas of `Project Roslyn `__ + and a series of `CodeProject `__ articles + written by `Ken Beckett `__ + in 2012. + + * `The Future of Software Development: CodeDOMs (Part 1) `__ + * `Creating a CodeDOM: Modeling the Semantics of Code (Part 2) `__ + * `Displaying a CodeDOM using WPF (Part 3) `__ + * `Object-Oriented Parsing: Breaking With Tradition (Part 4) `__ + * `CodeDOM Classes for Solution and Project Files (Part 5) `__ + * `Accessing Assembly Metadata with Reflection or Mono Cecil (Part 6) `__ + * `Resolving Symbolic References in a CodeDOM (Part 7) `__ + * `Calculating Metrics and Searching with a CodeDOM (Part 8) `__ + +------------------------ + +.. rubric:: Footnotes: + +.. [1] Actually, Python's ``for``-loop is a ``foreach``-loop. diff --git a/_sources/Dependency.rst.txt b/_sources/Dependency.rst.txt new file mode 100644 index 000000000..039d82540 --- /dev/null +++ b/_sources/Dependency.rst.txt @@ -0,0 +1,194 @@ +.. _dependency: + +Dependencies +############ + +.. |img-pyTooling-lib-status| image:: https://img.shields.io/librariesio/release/pypi/pyTooling + :alt: Libraries.io status for latest release + :height: 22 + :target: https://libraries.io/github/pyTooling/pyTooling +.. |img-pyTooling-val-status| image:: https://img.shields.io/snyk/vulnerabilities/github/pyTooling/pyTooling + :alt: Snyk Vulnerabilities for GitHub Repo + :height: 22 + :target: https://img.shields.io/snyk/vulnerabilities/github/pyTooling/pyTooling + ++------------------------------------------+------------------------------------------+ +| `Libraries.io `_ | Vulnerabilities Summary | ++==========================================+==========================================+ +| |img-pyTooling-lib-status| | |img-pyTooling-val-status| | ++------------------------------------------+------------------------------------------+ + +.. _dependency-package: + +pyTooling Package (Mandatory) +***************************** + +.. rubric:: Manually Installing Package Requirements + +Use the :file:`requirements.txt` file to install all dependencies via ``pip3`` or install the package directly from +PyPI (see :ref:`installation`). + +.. code-block:: shell + + pip3 install -U -r requirements.txt + + +.. rubric:: Dependency List + +When installed as ``pyTooling``: + ++-----------------------------------------------------------------+-------------+-------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Package** | **Version** | **License** | **Dependencies** | ++=================================================================+=============+===========================================================================================+========================================================================================================================================================+ +| *No dependencies* | — — — — | — — — — | — — — — | ++-----------------------------------------------------------------+-------------+-------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +When installed as ``pyTooling[yaml]``: + ++-----------------------------------------------------------------+-------------+-------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Package** | **Version** | **License** | **Dependencies** | ++=================================================================+=============+===========================================================================================+========================================================================================================================================================+ +| `ruamel.yaml `__ | ≥0.17 | `MIT `__ | *Not yet evaluated.* | ++-----------------------------------------------------------------+-------------+-------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------+ + + + +.. _dependency-testing: + +Unit Testing / Coverage / Type Checking (Optional) +************************************************** + +Additional Python packages needed for testing, code coverage collection and static type checking. These packages are +only needed for developers or on a CI server, thus sub-dependencies are not evaluated further. + + +.. rubric:: Manually Installing Test Requirements + +Use the :file:`tests/requirements.txt` file to install all dependencies via ``pip3``. The file will recursively install +the mandatory dependencies too. + +.. code-block:: shell + + pip3 install -U -r tests/requirements.txt + + +.. rubric:: Dependency List + ++--------------------------------------------------------------------+-------------+----------------------------------------------------------------------------------------+----------------------+ +| **Package** | **Version** | **License** | **Dependencies** | ++====================================================================+=============+========================================================================================+======================+ +| `pytest `__ | ≥7.2.0 | `MIT `__ | *Not yet evaluated.* | ++--------------------------------------------------------------------+-------------+----------------------------------------------------------------------------------------+----------------------+ +| `pytest-cov `__ | ≥4.0.0 | `MIT `__ | *Not yet evaluated.* | ++--------------------------------------------------------------------+-------------+----------------------------------------------------------------------------------------+----------------------+ +| `pytest-benchmark `__ | ≥4.0.0 | `BSD 2-Clause `__ | *Not yet evaluated.* | ++--------------------------------------------------------------------+-------------+----------------------------------------------------------------------------------------+----------------------+ +| `Coverage `__ | ≥7.2 | `Apache License, 2.0 `__ | *Not yet evaluated.* | ++--------------------------------------------------------------------+-------------+----------------------------------------------------------------------------------------+----------------------+ +| `mypy `__ | ≥1.1.1 | `MIT `__ | *Not yet evaluated.* | ++--------------------------------------------------------------------+-------------+----------------------------------------------------------------------------------------+----------------------+ +| `lxml `__ | ≥4.9 | `BSD 3-Clause `__ | *Not yet evaluated.* | ++--------------------------------------------------------------------+-------------+----------------------------------------------------------------------------------------+----------------------+ + + +.. _dependency-documentation: + +Sphinx Documentation (Optional) +******************************* + +Additional Python packages needed for documentation generation. These packages are only needed for developers or on a +CI server, thus sub-dependencies are not evaluated further. + + +.. rubric:: Manually Installing Documentation Requirements + +Use the :file:`doc/requirements.txt` file to install all dependencies via ``pip3``. The file will recursively install +the mandatory dependencies too. + +.. code-block:: shell + + pip3 install -U -r doc/requirements.txt + + +.. rubric:: Dependency List + ++-------------------------------------------------------------------------------------------------+--------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Package** | **Version** | **License** | **Dependencies** | ++=================================================================================================+==============+==========================================================================================================+======================================================================================================================================================+ +| `pyTooling `__ | ≥2.11.0 | `Apache License, 2.0 `__ | *None* | ++-------------------------------------------------------------------------------------------------+--------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+ +| `Sphinx `__ | ≥5.3.0 | `BSD 3-Clause `__ | *Not yet evaluated.* | ++-------------------------------------------------------------------------------------------------+--------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+ +| `sphinxcontrib-mermaid `__ | ≥0.8.1 | `BSD `__ | *Not yet evaluated.* | ++-------------------------------------------------------------------------------------------------+--------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+ +| `autoapi `__ | ≥2.0.1 | `Apache License, 2.0 `__ | *Not yet evaluated.* | ++-------------------------------------------------------------------------------------------------+--------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+ +| `sphinx_btd_theme `__ | ≥0.5.2 | `MIT `__ | *Not yet evaluated.* | ++-------------------------------------------------------------------------------------------------+--------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+ +| !! `sphinx_fontawesome `__ | ≥0.0.6 | `GPL 2.0 `__ | *Not yet evaluated.* | ++-------------------------------------------------------------------------------------------------+--------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+ +| `sphinx_autodoc_typehints `__ | ≥1.19.5 | `MIT `__ | *Not yet evaluated.* | ++-------------------------------------------------------------------------------------------------+--------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+ +| `ruamel.yaml `__ | ≥0.17 | `MIT `__ | *Not yet evaluated.* | ++-------------------------------------------------------------------------------------------------+--------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+ + +.. _dependency-packaging: + +Packaging (Optional) +******************** + +Additional Python packages needed for installation package generation. These packages are only needed for developers or +on a CI server, thus sub-dependencies are not evaluated further. + + +.. rubric:: Manually Installing Packaging Requirements + +Use the :file:`build/requirements.txt` file to install all dependencies via ``pip3``. The file will recursively +install the mandatory dependencies too. + +.. code-block:: shell + + pip3 install -U -r build/requirements.txt + + +.. rubric:: Dependency List + ++----------------------------------------------------------------------------+--------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Package** | **Version** | **License** | **Dependencies** | ++============================================================================+==============+==========================================================================================================+======================================================================================================================================================+ +| `pyTooling `__ | ≥2.11.0 | `Apache License, 2.0 `__ | *None* | ++----------------------------------------------------------------------------+--------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+ +| `wheel `__ | ≥0.38.1 | `MIT `__ | *Not yet evaluated.* | ++----------------------------------------------------------------------------+--------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +.. _dependency-publishing: + +Publishing (CI-Server only) +*************************** + +Additional Python packages needed for publishing the generated installation package to e.g, PyPI or any equivalent +services. These packages are only needed for maintainers or on a CI server, thus sub-dependencies are not evaluated +further. + + +.. rubric:: Manually Installing Publishing Requirements + +Use the :file:`dist/requirements.txt` file to install all dependencies via ``pip3``. The file will recursively +install the mandatory dependencies too. + +.. code-block:: shell + + pip3 install -U -r dist/requirements.txt + + +.. rubric:: Dependency List + ++----------------------------------------------------------+--------------+-------------------------------------------------------------------------------------------+----------------------+ +| **Package** | **Version** | **License** | **Dependencies** | ++==========================================================+==============+===========================================================================================+======================+ +| `wheel `__ | ≥0.38.1 | `MIT `__ | *Not yet evaluated.* | ++----------------------------------------------------------+--------------+-------------------------------------------------------------------------------------------+----------------------+ +| `Twine `__ | any | `Apache License, 2.0 `__ | *Not yet evaluated.* | ++----------------------------------------------------------+--------------+-------------------------------------------------------------------------------------------+----------------------+ diff --git a/_sources/Doc-License.rst.txt b/_sources/Doc-License.rst.txt new file mode 100644 index 000000000..2bab2d9cd --- /dev/null +++ b/_sources/Doc-License.rst.txt @@ -0,0 +1,354 @@ +.. _DOCLICENSE: + +This license applies to the documentation of this project. + +.. Note:: This is a local copy of the `Creative Commons - Attribution 4.0 International (CC BY 4.0) `__. + + +Creative Commons Attribution 4.0 International +############################################## + +Creative Commons Corporation (“Creative Commons”) is not a law firm and does not +provide legal services or legal advice. Distribution of Creative Commons public +licenses does not create a lawyer-client or other relationship. Creative Commons +makes its licenses and related information available on an “as-is” basis. +Creative Commons gives no warranties regarding its licenses, any material +licensed under their terms and conditions, or any related information. Creative +Commons disclaims all liability for damages resulting from their use to the +fullest extent possible. + +.. topic:: Using Creative Commons Public Licenses + + Creative Commons public licenses provide a standard set of terms and conditions + that creators and other rights holders may use to share original works of + authorship and other material subject to copyright and certain other rights + specified in the public license below. The following considerations are for + informational purposes only, are not exhaustive, and do not form part of our + licenses. + + * **Considerations for licensors:** Our public licenses are intended for use + by those authorized to give the public permission to use material in ways + otherwise restricted by copyright and certain other rights. Our licenses are + irrevocable. Licensors should read and understand the terms and conditions + of the license they choose before applying it. Licensors should also secure + all rights necessary before applying our licenses so that the public can reuse + the material as expected. Licensors should clearly mark any material not + subject to the license. This includes other CC-licensed material, or material + used under an exception or limitation to copyright. + `More considerations for licensors `__. + + * **Considerations for the public:** By using one of our public licenses, a + licensor grants the public permission to use the licensed material under + specified terms and conditions. If the licensor’s permission is not necessary + for any reason–for example, because of any applicable exception or limitation + to copyright–then that use is not regulated by the license. Our licenses grant + only permissions under copyright and certain other rights that a licensor has + authority to grant. Use of the licensed material may still be restricted for + other reasons, including because others have copyright or other rights in the + material. A licensor may make special requests, such as asking that all + changes be marked or described. Although not required by our licenses, you are + encouraged to respect those requests where reasonable. + `More considerations for the public `__. + +Creative Commons Attribution 4.0 International Public License +************************************************************* + +By exercising the Licensed Rights (defined below), You accept and agree to be +bound by the terms and conditions of this Creative Commons Attribution 4.0 +International Public License ("Public License"). To the extent this Public +License may be interpreted as a contract, You are granted the Licensed Rights +in consideration of Your acceptance of these terms and conditions, and the +Licensor grants You such rights in consideration of benefits the Licensor +receives from making the Licensed Material available under these terms and +conditions. + +Section 1 – Definitions. +======================== + +a. **Adapted Material** means material subject to Copyright and Similar + Rights that is derived from or based upon the Licensed Material and in + which the Licensed Material is translated, altered, arranged, transformed, or + otherwise modified in a manner requiring permission under the Copyright and + Similar Rights held by the Licensor. For purposes of this Public License, + where the Licensed Material is a musical work, performance, or sound + recording, Adapted Material is always produced where the Licensed Material + is synched in timed relation with a moving image. + +b. **Adapter's License** means the license You apply to Your Copyright and + Similar Rights in Your contributions to Adapted Material in accordance with + the terms and conditions of this Public License. + +c. **Copyright and Similar Rights** means copyright and/or similar rights + closely related to copyright including, without limitation, performance, + broadcast, sound recording, and Sui Generis Database Rights, without regard + to how the rights are labeled or categorized. For purposes of this Public + License, the rights specified in Section 2(b)(1)-(2) are not Copyright and + Similar Rights. + +d. **Effective Technological Measures** means those measures that, in the + absence of proper authority, may not be circumvented under laws fulfilling + obligations under Article 11 of the WIPO Copyright Treaty adopted on + December 20, 1996, and/or similar international agreements. + +e. **Exceptions and Limitations** means fair use, fair dealing, and/or any + other exception or limitation to Copyright and Similar Rights that applies to + Your use of the Licensed Material. + +f. **Licensed Material** means the artistic or literary work, database, or + other material to which the Licensor applied this Public License. + +g. **Licensed Rights** means the rights granted to You subject to the terms + and conditions of this Public License, which are limited to all Copyright and + Similar Rights that apply to Your use of the Licensed Material and that the + Licensor has authority to license. + +h. **Licensor** means the individual(s) or entity(ies) granting rights under + this Public License. + +i. **Share** means to provide material to the public by any means or process + that requires permission under the Licensed Rights, such as reproduction, + public display, public performance, distribution, dissemination, + communication, or importation, and to make material available to the public + including in ways that members of the public may access the material from a + place and at a time individually chosen by them. + +j. **Sui Generis Database Rights** means rights other than copyright + resulting from Directive 96/9/EC of the European Parliament and of the + Council of 11 March 1996 on the legal protection of databases, as amended + and/or succeeded, as well as other essentially equivalent rights anywhere + in the world. + +k. **You** means the individual or entity exercising the Licensed Rights + under this Public License. **Your** has a corresponding meaning. + +Section 2 – Scope. +================== + +a. **License grant.** + + 1. Subject to the terms and conditions of this Public License, the Licensor + hereby grants You a worldwide, royalty-free, non-sublicensable, + non-exclusive, irrevocable license to exercise the Licensed Rights in the + Licensed Material to: + + A. reproduce and Share the Licensed Material, in whole or in part; and + + B. produce, reproduce, and Share Adapted Material. + + 2. :underline:`Exceptions and Limitations.` For the avoidance of doubt, where + Exceptions and Limitations apply to Your use, this Public License does not + apply, and You do not need to comply with its terms and conditions. + + 3. :underline:`Term.` The term of this Public License is specified in Section 6(a). + + 4. :underline:`Media and formats`; :underline:`technical modifications allowed.` The Licensor + authorizes You to exercise the Licensed Rights in all media and formats + whether now known or hereafter created, and to make technical + modifications necessary to do so. The Licensor waives and/or agrees not to + assert any right or authority to forbid You from making technical + modifications necessary to exercise the Licensed Rights, including + technical modifications necessary to circumvent Effective Technological + Measures. For purposes of this Public License, simply making modifications + authorized by this Section 2(a)(4) never produces Adapted Material. + + 5. :underline:`Downstream recipients.` + + A. :underline:`Offer from the Licensor – Licensed Material.` Every recipient of + the Licensed Material automatically receives an offer from the + Licensor to exercise the Licensed Rights under the terms and + conditions of this Public License. + + B. :underline:`No downstream restrictions.` You may not offer or impose any + additional or different terms or conditions on, or apply any Effective + Technological Measures to, the Licensed Material if doing so restricts + exercise of the Licensed Rights by any recipient of the Licensed + Material. + + 6. :underline:`No endorsement.` Nothing in this Public License constitutes or may + be construed as permission to assert or imply that You are, or that Your + use of the Licensed Material is, connected with, or sponsored, endorsed, + or granted official status by, the Licensor or others designated to + receive attribution as provided in Section 3(a)(1)(A)(i). + +b. **Other rights.** + + 1. Moral rights, such as the right of integrity, are not licensed under this + Public License, nor are publicity, privacy, and/or other similar + personality rights; however, to the extent possible, the Licensor waives + and/or agrees not to assert any such rights held by the Licensor to the + limited extent necessary to allow You to exercise the Licensed Rights, but + not otherwise. + + 2. Patent and trademark rights are not licensed under this Public License. + + 3. To the extent possible, the Licensor waives any right to collect royalties + from You for the exercise of the Licensed Rights, whether directly or + through a collecting society under any voluntary or waivable statutory or + compulsory licensing scheme. In all other cases the Licensor expressly + reserves any right to collect such royalties. + +Section 3 – License Conditions. +=============================== + +Your exercise of the Licensed Rights is expressly made subject to the following conditions. + +a. **Attribution.** + + 1. If You Share the Licensed Material (including in modified form), You must: + + A. retain the following if it is supplied by the Licensor with the + Licensed Material: + + i. identification of the creator(s) of the Licensed Material and any + others designated to receive attribution, in any reasonable manner + requested by the Licensor (including by pseudonym if designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of warranties; + + v. a URI or hyperlink to the Licensed Material to the extent reasonably + practicable; + + B. indicate if You modified the Licensed Material and retain an + indication of any previous modifications; and + + C. indicate the Licensed Material is licensed under this Public License, + and include the text of, or the URI or hyperlink to, this Public + License. + + 2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner + based on the medium, means, and context in which You Share the Licensed + Material. For example, it may be reasonable to satisfy the conditions by + providing a URI or hyperlink to a resource that includes the required + information. + + 3. If requested by the Licensor, You must remove any of the information + required by Section 3(a)(1)(A) to the extent reasonably practicable. + + 4. If You Share Adapted Material You produce, the Adapter's License You apply + must not prevent recipients of the Adapted Material from complying with + this Public License. + +Section 4 – Sui Generis Database Rights. +======================================== + +Where the Licensed Rights include Sui Generis Database Rights that apply to Your +use of the Licensed Material: + +a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, + reuse, reproduce, and Share all or a substantial portion of the contents of + the database; + +b. if You include all or a substantial portion of the database contents in a + database in which You have Sui Generis Database Rights, then the database + in which You have Sui Generis Database Rights (but not its individual + contents) is Adapted Material; and + +c. You must comply with the conditions in Section 3(a) if You Share all or a + substantial portion of the contents of the database. + +For the avoidance of doubt, this Section 4 supplements and does not replace +Your obligations under this Public License where the Licensed Rights include +other Copyright and Similar Rights. + +Section 5 – Disclaimer of Warranties and Limitation of Liability. +================================================================= + +a. **Unless otherwise separately undertaken by the Licensor, to the extent + possible, the Licensor offers the Licensed Material as-is and as-available, + and makes no representations or warranties of any kind concerning the + Licensed Material, whether express, implied, statutory, or other. This + includes, without limitation, warranties of title, merchantability, + fitness for a particular purpose, non-infringement, absence of latent or + other defects, accuracy, or the presence or absence of errors, whether or + not known or discoverable. Where disclaimers of warranties are not allowed + in full or in part, this disclaimer may not apply to You.** + +b. **To the extent possible, in no event will the Licensor be liable to You + on any legal theory (including, without limitation, negligence) or + otherwise for any direct, special, indirect, incidental, consequential, + punitive, exemplary, or other losses, costs, expenses, or damages arising + out of this Public License or use of the Licensed Material, even if the + Licensor has been advised of the possibility of such losses, costs, expenses, + or damages. Where a limitation of liability is not allowed in full or in + part, this limitation may not apply to You.** + +c. The disclaimer of warranties and limitation of liability provided above + shall be interpreted in a manner that, to the extent possible, most + closely approximates an absolute disclaimer and waiver of all liability. + +Section 6 – Term and Termination. +================================= + +a. This Public License applies for the term of the Copyright and Similar Rights + licensed here. However, if You fail to comply with this Public License, then + Your rights under this Public License terminate automatically. + +b. Where Your right to use the Licensed Material has terminated under + Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided it is cured + within 30 days of Your discovery of the violation; or + + 2. upon express reinstatement by the Licensor. + + For the avoidance of doubt, this Section 6(b) does not affect any right the + Licensor may have to seek remedies for Your violations of this Public License. + +c. For the avoidance of doubt, the Licensor may also offer the Licensed Material + under separate terms or conditions or stop distributing the Licensed Material + at any time; however, doing so will not terminate this Public License. + +d. Sections 1, 5, 6, 7, and 8 survive termination of this Public License. + +Section 7 – Other Terms and Conditions. +======================================= + +a. The Licensor shall not be bound by any additional or different terms or + conditions communicated by You unless expressly agreed. + +b. Any arrangements, understandings, or agreements regarding the Licensed + Material not stated herein are separate from and independent of the terms + and conditions of this Public License. + +Section 8 – Interpretation. +=========================== + +a. For the avoidance of doubt, this Public License does not, and shall not be + interpreted to, reduce, limit, restrict, or impose conditions on any use of + the Licensed Material that could lawfully be made without permission under + this Public License. + +b. To the extent possible, if any provision of this Public License is deemed + unenforceable, it shall be automatically reformed to the minimum extent + necessary to make it enforceable. If the provision cannot be reformed, it + shall be severed from this Public License without affecting the + enforceability of the remaining terms and conditions. + +c. No term or condition of this Public License will be waived and no failure to + comply consented to unless expressly agreed to by the Licensor. + +d. Nothing in this Public License constitutes or may be interpreted as a + limitation upon, or waiver of, any privileges and immunities that apply to + the Licensor or You, including from the legal processes of any jurisdiction + or authority. + +------------------ + +Creative Commons is not a party to its public licenses. Notwithstanding, +Creative Commons may elect to apply one of its public licenses to material it +publishes and in those instances will be considered the “Licensor.” Except for +the limited purpose of indicating that material is shared under a Creative +Commons public license or as otherwise permitted by the Creative Commons +policies published at `creativecommons.org/policies `__, +Creative Commons does not authorize the use of the trademark “Creative Commons” +or any other trademark or logo of Creative Commons without its prior written +consent including, without limitation, in connection with any unauthorized +modifications to any of its public licenses or any other arrangements, +understandings, or agreements concerning use of licensed material. For the +avoidance of doubt, this paragraph does not form part of the public licenses. + +Creative Commons may be contacted at `creativecommons.org `__ diff --git a/_sources/DocumentObjectModel/index.rst.txt b/_sources/DocumentObjectModel/index.rst.txt new file mode 100644 index 000000000..94c08f247 --- /dev/null +++ b/_sources/DocumentObjectModel/index.rst.txt @@ -0,0 +1,37 @@ +4. Pass - Code-DOM +################## + +A Code-DOM is a Document-Object-Model for source code files. + +**Condensed definition of class** :class:`~pyVHDLParser.DocumentObjectModel.Document`: + +.. code-block:: Python + + class Document(DocumentModel): + def __init__(self, file): + + def Parse(self, content=None): + + @classmethod + def stateParse(cls, document, startOfDocumentGroup): + + def AddLibrary(self, library): + def AddUse(self, use): + + @property + def Libraries(self): + + @property + def Uses(self): + + def AddEntity(self, entity): + def AddArchitecture(self, architecture): + def AddPackage(self, package): + def AddPackageBody(self, packageBody): + + def Print(self, indent=0): + + + +.. todo:: + Describe the Code-DOM. diff --git a/_sources/Glossary.rst.txt b/_sources/Glossary.rst.txt new file mode 100644 index 000000000..42cee6197 --- /dev/null +++ b/_sources/Glossary.rst.txt @@ -0,0 +1,27 @@ +Glossary +######## + +.. glossary:: + + Meta-Class + A Python meta-class is a class used to construct classes. Python's class + :class:`type` is such a |meta-class|. + + Token + XXX + + Block + A block is a collection of tokens. + + Multipart Block + A |block| split into multiple parts. + + LRM + IEEE Standard for VHDL Language Reference Manual + + * IEEE Std. 1076-1987 + * IEEE Std. 1076-1993 + * IEEE Std. 1076-2002 + * IEEE Std. 1076-2008 - https://standards.ieee.org/standard/1076-2008.html + * IEEE Std. 1076-2019 - https://standards.ieee.org/standard/1076-2019.html + diff --git a/_sources/GroupStream/Examples.rst.txt b/_sources/GroupStream/Examples.rst.txt new file mode 100644 index 000000000..8db660e50 --- /dev/null +++ b/_sources/GroupStream/Examples.rst.txt @@ -0,0 +1,6 @@ +Examples +######## + +.. todo:: + + Add examples for group generator. diff --git a/_sources/GroupStream/GroupGenerator.rst.txt b/_sources/GroupStream/GroupGenerator.rst.txt new file mode 100644 index 000000000..c4a2b27d4 --- /dev/null +++ b/_sources/GroupStream/GroupGenerator.rst.txt @@ -0,0 +1,6 @@ +Group Generator +############### + +.. todo:: + Describe the stream of groups. + diff --git a/_sources/GroupStream/MetaGroups.rst.txt b/_sources/GroupStream/MetaGroups.rst.txt new file mode 100644 index 000000000..90f976f8f --- /dev/null +++ b/_sources/GroupStream/MetaGroups.rst.txt @@ -0,0 +1,42 @@ +.. _grpstm-metagroups: + +Meta Groups +########### + +There are two meta-groups: :class:`~pyVHDLParser.Groups.StartOfDocumentGroup` +and :class:`~pyVHDLParser.Groups.EndOfDocumentGroup`. These groups represent +a start and end of a token stream. These groups have a length of ``0`` characters. + + + +.. _grpstm-sodg: + +StartOfDocumentGroup +==================== + +This group starts a chain of double-linked groups in a group stream. It's used, +if the input source is a whole file, otherwise :class:`~pyVHDLParser.Groups.StartOfSnippetGroup`. +It is derived from base-class :class:`~pyVHDLParser.Groups.StartOfGroup` +and mixin :class:`~pyVHDLParser.StartOfDocument`. + +**Interitance diagram:** + +.. inheritance-diagram:: pyVHDLParser.Groups.StartOfDocumentGroup + :parts: 1 + + + +.. _grpstm-eodg: + +EndOfDocumentGroup +================== + +This group ends a chain of double-linked groups in a group stream. It's used, +if the input source is a whole file, otherwise :class:`~pyVHDLParser.Groups.EndOfSnippetGroup`. +It is derived from base-class :class:`~pyVHDLParser.Groups.EndOfGroup` +and mixin :class:`~pyVHDLParser.EndOfDocument`. + +**Interitance diagram:** + +.. inheritance-diagram:: pyVHDLParser.Groups.EndOfDocumentGroup + :parts: 1 diff --git a/_sources/GroupStream/Usage.rst.txt b/_sources/GroupStream/Usage.rst.txt new file mode 100644 index 000000000..17c4a7b62 --- /dev/null +++ b/_sources/GroupStream/Usage.rst.txt @@ -0,0 +1,6 @@ +Usage +##### + +.. todo:: + + Document group generator usage. diff --git a/_sources/GroupStream/index.rst.txt b/_sources/GroupStream/index.rst.txt new file mode 100644 index 000000000..9c599ca4a --- /dev/null +++ b/_sources/GroupStream/index.rst.txt @@ -0,0 +1,54 @@ +.. _grpstm: + +3. Pass - Groups +################ + +In the :ref:`third pass ` a stream of double-linked +:class:`~pyVHDLParser.Block.Block` objects is read and grouped in another Python +:term:`generator` to group's. Groups are again a chain of double-linked +objects of base-class :class:`~pyVHDLParser.Groups.Group`. + + +**Condensed definition of class** :class:`~pyVHDLParser.Groups.Group`: + +.. code-block:: Python + + @Export + class Group(metaclass=MetaGroup): + __STATES__ = None + + _previousGroup : 'Group' = None #: Reference to the previous group. + NextGroup : 'Group' = None #: Reference to the next group. + InnerGroup : 'Group' = None #: Reference to the first inner group. + _subGroups : {MetaGroup: 'Group'} = {} #: References to all inner groups by group type. + + StartBlock : Block = None #: Reference to the first block in the scope of this group. + EndBlock : Block = None #: Reference to the last block in the scope of this group. + MultiPart : bool = False #: True, if this group has multiple parts. + + def __init__(self, previousGroup, startBlock, endBlock=None): + def __len__(self): + def __iter__(self): + def __repr__(self): + def __str__(self): + + def GetSubGroups(self, groupTypes=None): + + @property + def PreviousGroup(self): + + @property + def Length(self): + + @property + def States(self): + + + +.. toctree:: + :hidden: + + MetaGroups + GroupGenerator + Usage + Examples diff --git a/_sources/Installation.rst.txt b/_sources/Installation.rst.txt new file mode 100644 index 000000000..b508948bc --- /dev/null +++ b/_sources/Installation.rst.txt @@ -0,0 +1,83 @@ +.. _installation: + +Installation/Updates +#################### + + + +.. _installation-pip: + +Using PIP +********* + +Installation using PIP +====================== + +.. code-block:: bash + + pip3 install pyVHDLParser + + +Updating using PIP +================== + +.. code-block:: bash + + pip3 install -U pyVHDLParser + + + +.. _installation-setup: + +Using setup.py +************** + +.. todo:: + + Describe setup procedure using ``setup.py`` + + + +.. _dependency: + +Dependencies +************ + +.. _dependency-package: + +pyVHDLParser Package +==================== + +* colorama +* py-flags +* pydecor +* pyExceptions +* pyAttributes +* pyCallBy +* pyTerminalUI +* pyVHDLModel + + +.. _dependency-testing: + +Unit Testing / Coverage +======================= + +* Coverage + + +.. _dependency-documentation: + +Sphinx Documentation +==================== + +* Sphinx +* sphinx-rtd-theme +* sphinx.ext.coverage +* autoapi +* sphinx_fontawesome +* sphinx_autodoc_typehints +* btd.sphinx.autoprogram +* btd.sphinx.graphviz +* btd.sphinx.inheritance_diagram +* Pygments diff --git a/_sources/LanguageModel/ConcurrentStatements.rst.txt b/_sources/LanguageModel/ConcurrentStatements.rst.txt new file mode 100644 index 000000000..e5db4df3e --- /dev/null +++ b/_sources/LanguageModel/ConcurrentStatements.rst.txt @@ -0,0 +1,70 @@ +.. _vhdlmodel-constm: + +Concurrent Statements +##################### + +* Assert +* Signal assignment +* Instantiation +* If generate +* Case generate +* For generate +* Procedure call +* Process + +Assert +====== + +.. todo:: + + Write documentation. + +Signal Assignment +================= + +.. todo:: + + Write documentation. + +Instantiation +============= + +.. todo:: + + Write documentation. + +If Generate +=========== + +.. todo:: + + Write documentation. + +Case Generate +============= + +.. todo:: + + Write documentation. + +For Generate +============ + +.. todo:: + + Write documentation. + +Procedure Call +============== + +.. todo:: + + Write documentation. + +Process +======= + +.. todo:: + + Write documentation. + diff --git a/_sources/LanguageModel/DesignUnits.rst.txt b/_sources/LanguageModel/DesignUnits.rst.txt new file mode 100644 index 000000000..f02e3e789 --- /dev/null +++ b/_sources/LanguageModel/DesignUnits.rst.txt @@ -0,0 +1,64 @@ +.. _vhdlmodel-desuni: + +Design Units +############ + +* Primary Units + + * Context + * Configuration + * Entity + * Package + +* Secondary Units + + * Architeture + * Package Body + +Primary Units +============= + +Context +------- + +.. todo:: + + Write documentation. + +Configuration +------------- + +.. todo:: + + Write documentation. + +Entity +------ + +.. todo:: + + Write documentation. + +Package +------- + +.. todo:: + + Write documentation. + +Secondary Units +=============== + +Architeture +----------- + +.. todo:: + + Write documentation. + +Package Body +------------ + +.. todo:: + + Write documentation. diff --git a/_sources/LanguageModel/Enumerations.rst.txt b/_sources/LanguageModel/Enumerations.rst.txt new file mode 100644 index 000000000..f5ed26c8d --- /dev/null +++ b/_sources/LanguageModel/Enumerations.rst.txt @@ -0,0 +1,19 @@ +.. _vhdlmodel-enum: + +Enumerations +############ + + +Modes +===== + +.. todo:: + + Write documentation. + +Object Classes +============== + +.. todo:: + + Write documentation. diff --git a/_sources/LanguageModel/InterfaceItems.rst.txt b/_sources/LanguageModel/InterfaceItems.rst.txt new file mode 100644 index 000000000..a86753688 --- /dev/null +++ b/_sources/LanguageModel/InterfaceItems.rst.txt @@ -0,0 +1,177 @@ +.. _vhdlmodel-inter: + +Interface Items +################### + +Interface items are used in generic, port and parameter declarations. + +* :class:`~pyVHDLParser.VHDLModel.GenericInterfaceItem` + + * :class:`~pyVHDLParser.VHDLModel.GenericConstantInterfaceItem` + * :class:`~pyVHDLParser.VHDLModel.GenericTypeInterfaceItem` + * :class:`~pyVHDLParser.VHDLModel.GenericSubprogramInterfaceItem` + * :class:`~pyVHDLParser.VHDLModel.GenericPackageInterfaceItem` + +* :class:`~pyVHDLParser.VHDLModel.PortInterfaceItem` + + * :class:`~pyVHDLParser.VHDLModel.PortSignalInterfaceItem` + +* :class:`~pyVHDLParser.VHDLModel.ParameterInterfaceItem` + + * :class:`~pyVHDLParser.VHDLModel.ParameterConstantInterfaceItem` + * :class:`~pyVHDLParser.VHDLModel.ParameterVariableInterfaceItem` + * :class:`~pyVHDLParser.VHDLModel.ParameterSignalInterfaceItem` + * :class:`~pyVHDLParser.VHDLModel.ParameterFileInterfaceItem` + + +Generic Interface Item +====================== + +GenericConstantInterfaceItem +---------------------------- + +.. todo:: + + Write documentation. + +**Condensed definition of class** :class:`~pyVHDLParser.VHDLModel.GenericConstantInterfaceItem`: + +.. code-block:: Python + + @Export + class GenericConstantInterfaceItem(GenericInterfaceItem): + + + +GenericTypeInterfaceItem +------------------------ + +.. todo:: + + Write documentation. + +**Condensed definition of class** :class:`~pyVHDLParser.VHDLModel.GenericTypeInterfaceItem`: + +.. code-block:: Python + + @Export + class GenericTypeInterfaceItem(GenericInterfaceItem): + + + +GenericSubprogramInterfaceItem +------------------------------ + +.. todo:: + + Write documentation. + +**Condensed definition of class** :class:`~pyVHDLParser.VHDLModel.GenericSubprogramInterfaceItem`: + +.. code-block:: Python + + @Export + class GenericSubprogramInterfaceItem(GenericInterfaceItem): + + + +GenericPackageInterfaceItem +--------------------------- + +.. todo:: + + Write documentation. + +**Condensed definition of class** :class:`~pyVHDLParser.VHDLModel.GenericPackageInterfaceItem`: + +.. code-block:: Python + + @Export + class GenericPackageInterfaceItem(GenericInterfaceItem): + + + +Port Interface Item +=================== + + +PortSignalInterfaceItem +----------------------- + +.. todo:: + + Write documentation. + +**Condensed definition of class** :class:`~pyVHDLParser.VHDLModel.PortSignalInterfaceItem`: + +.. code-block:: Python + + @Export + class PortSignalInterfaceItem(PortInterfaceItem): + + +Parameter Interface Item +========================= + + +ParameterConstantInterfaceItem +------------------------------ + +.. todo:: + + Write documentation. + +**Condensed definition of class** :class:`~pyVHDLParser.VHDLModel.ParameterConstantInterfaceItem`: + +.. code-block:: Python + + @Export + class ParameterConstantInterfaceItem(ParameterInterfaceItem): + + + +ParameterVariableInterfaceItem +------------------------------ + +.. todo:: + + Write documentation. + +**Condensed definition of class** :class:`~pyVHDLParser.VHDLModel.ParameterVariableInterfaceItem`: + +.. code-block:: Python + + @Export + class ParameterVariableInterfaceItem(ParameterInterfaceItem): + + + +ParameterSignalInterfaceItem +---------------------------- + +.. todo:: + + Write documentation. + +**Condensed definition of class** :class:`~pyVHDLParser.VHDLModel.ParameterSignalInterfaceItem`: + +.. code-block:: Python + + @Export + class ParameterSignalInterfaceItem(ParameterInterfaceItem): + + + +ParameterFileInterfaceItem +-------------------------- + +.. todo:: + + Write documentation. + +**Condensed definition of class** :class:`~pyVHDLParser.VHDLModel.ParameterFileInterfaceItem`: + +.. code-block:: Python + + @Export + class ParameterFileInterfaceItem(ParameterInterfaceItem): diff --git a/_sources/LanguageModel/Miscellaneous.rst.txt b/_sources/LanguageModel/Miscellaneous.rst.txt new file mode 100644 index 000000000..92c233631 --- /dev/null +++ b/_sources/LanguageModel/Miscellaneous.rst.txt @@ -0,0 +1,120 @@ +.. _vhdlmodel-misc: + +Concepts not defined by IEEE Std. 1076 +###################################### + +Some features required for a holistic language model are not defined in +the VHDL :term:`LRM` or made explicitly implementation specific to the implementer. + +.. _vhdlmodel-design: + +Design +====== + +The root element in the language model is a design mode out of multiple +sourcecode files (documents). Sourcecode files are compiled into libraries. Thus +a design has the two child nodes: ``Libraries`` and ``Documents``. Each is a +:class:`list`. + +**Condensed definition of class** :class:`~pyVHDLParser.VHDLModel.Design`: + +.. code-block:: Python + + @Export + class Design(ModelEntity): + _libraries : List = [] #: List of all libraries defined for a design + _documents : List = [] #: List of all documents loaded for a design + + def __init__(self): + + @property + def Libraries(self): + + @property + def Documents(self): + + + +.. _vhdlmodel-library: + +LibraryStatement +================ + +A library contains multiple *design units*. Each design unit listed in a library +is a *primary* design unit like: ``configuration``, ``entity``, ``package`` or +``context``. + +**Condensed definition of class** :class:`~pyVHDLParser.VHDLModel.LibraryStatement`: + +.. code-block:: Python + + @Export + class LibraryStatement(ModelEntity): + _contexts : List = None #: List of all contexts defined in a library. + _configurations : List = None #: List of all configurations defined in a library. + _entities : List = None #: List of all entities defined in a library. + _packages : List = None #: List of all packages defined in a library. + + def __init__(self): + + @property + def Context(self): + + @property + def Configurations(self): + + @property + def Entities(self): + + @property + def Packages(self): + + + +.. _vhdlmodel-sourcefile: + +Sourcecode File +=============== + +A source file contains multiple *design units*. Each design unit listed in a +sourcecode file is a *primary* or `secondary`design unit like: ``configuration``, +``entity``, ``architecture``, ``package``, ``package body`` or ``context``. + +Design unit may be preceded by a context made of ``library``, ``use`` and +``context`` statements. These statements are not directly visible in the ``Document`` +object, because design unit contexts are consumed by the design units. See the +``Libraries`` and ``Uses`` fields of each design unit to investigate the consumed +contexts. + +**Condensed definition of class** :class:`~pyVHDLParser.VHDLModel.Document`: + +.. code-block:: Python + + @Export + class Document(ModelEntity): + _contexts : List = None #: List of all contexts defined in a document. + _configurations : List = None #: List of all configurations defined in a document. + _entities : List = None #: List of all entities defined in a document. + _architectures : List = None #: List of all architectures defined in a document. + _packages : List = None #: List of all packages defined in a document. + _packageBodies : List = None #: List of all package bodies defined in a document. + + def __init__(self): + + @property + def Contexts(self): + + @property + def Configurations(self): + + @property + def Entities(self): + + @property + def Architectures(self): + + @property + def Packages(self): + + @property + def PackageBodies(self): diff --git a/_sources/LanguageModel/ObjectDeclarations.rst.txt b/_sources/LanguageModel/ObjectDeclarations.rst.txt new file mode 100644 index 000000000..375b26be2 --- /dev/null +++ b/_sources/LanguageModel/ObjectDeclarations.rst.txt @@ -0,0 +1,45 @@ +.. _vhdlmodel-obj: + +Object Declartions +################### + +* Constant +* Variable +* Shared variable +* Signal +* File + +Constant +======== + +.. todo:: + + Write documentation. + +Variable +======== + +.. todo:: + + Write documentation. + +Shared Variable +=============== + +.. todo:: + + Write documentation. + +Signal +====== + +.. todo:: + + Write documentation. + +File +==== + +.. todo:: + + Write documentation. diff --git a/_sources/LanguageModel/SequentialStatements.rst.txt b/_sources/LanguageModel/SequentialStatements.rst.txt new file mode 100644 index 000000000..299123d68 --- /dev/null +++ b/_sources/LanguageModel/SequentialStatements.rst.txt @@ -0,0 +1,77 @@ +.. _vhdlmodel-seqstm: + +Sequential Statements +##################### + +* Signal assignment +* Variable assignment +* If statement +* Case statement+ +* For loop +* While loop +* Report statement +* Assert statement +* Procedure call + +Signal Assignment +================= + +.. todo:: + + Write documentation. + +Variable Assignment +=================== + +.. todo:: + + Write documentation. + +If Statement +============ + +.. todo:: + + Write documentation. + +Case Statement +============== + +.. todo:: + + Write documentation. + +For Loop +======== + +.. todo:: + + Write documentation. + +While Loop +========== + +.. todo:: + + Write documentation. + +Report Statement +================ + +.. todo:: + + Write documentation. + +Assert Statement +================ + +.. todo:: + + Write documentation. + +Procedure Call +============== + +.. todo:: + + Write documentation. diff --git a/_sources/LanguageModel/SubprogramDefinitions.rst.txt b/_sources/LanguageModel/SubprogramDefinitions.rst.txt new file mode 100644 index 000000000..ccad17f74 --- /dev/null +++ b/_sources/LanguageModel/SubprogramDefinitions.rst.txt @@ -0,0 +1,21 @@ +.. _vhdlmodel-subprog: + +Subprogram Declarations +######################## + +* Procedure +* Function + +Procedure +========= + +.. todo:: + + Write documentation. + +Function +======== + +.. todo:: + + Write documentation. diff --git a/_sources/LanguageModel/TypeDefinitions.rst.txt b/_sources/LanguageModel/TypeDefinitions.rst.txt new file mode 100644 index 000000000..cc82d359a --- /dev/null +++ b/_sources/LanguageModel/TypeDefinitions.rst.txt @@ -0,0 +1,94 @@ +.. _vhdlmodel-types: + +Type Declarations +################# + +* Types + + * Scalar types + + * Enumeration + * Integer + * Real + * Physical + + * Composite types + + * Array + * Record + + * Access + * File + * Protected + +* Subtype + + +Scalar Types +============ + +Enumeration +----------- + +.. todo:: + + Write documentation. + +Integer +------- + +.. todo:: + + Write documentation. + +Real +---- + +.. todo:: + + Write documentation. + +Physical +-------- + +.. todo:: + + Write documentation. + +Composite Types +=============== + +Array +----- + +.. todo:: + + Write documentation. + +Record +------ + +.. todo:: + + Write documentation. + +Access +====== + +.. todo:: + + Write documentation. + +File +==== + +.. todo:: + + Write documentation. + +Protected +========= + +.. todo:: + + Write documentation. diff --git a/_sources/LanguageModel/index.rst.txt b/_sources/LanguageModel/index.rst.txt new file mode 100644 index 000000000..b69142568 --- /dev/null +++ b/_sources/LanguageModel/index.rst.txt @@ -0,0 +1,19 @@ +.. _lngmod: + +VHDL Language Model +################### + +The :ref:`VHDL Language Model ` is a standalone Python package (see `github.com/vhdl/pyVHDLModel `__). + + +.. toctree:: + + Miscellaneous + Enumerations + DesignUnits + InterfaceItems + SubprogramDefinitions + TypeDefinitions + ObjectDeclarations + ConcurrentStatements + SequentialStatements diff --git a/_sources/License.rst.txt b/_sources/License.rst.txt new file mode 100644 index 000000000..8df28922c --- /dev/null +++ b/_sources/License.rst.txt @@ -0,0 +1,138 @@ +.. _LICENSE: + +.. Note:: This is a local copy of the `Apache License Version 2.0 `__. + +Apache License 2.0 +################## + +Version 2.0, January 2004 + +**TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION** + + +1. Definitions. +=============== +**"License"** shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. + +**"Licensor"** shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. + +**"Legal Entity"** shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that +entity. For the purposes of this definition, **"control"** means (i) the power, direct or indirect, to cause the direction or management of such entity, whether +by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. + +**"You"** (or **"Your"**) shall mean an individual or Legal Entity exercising permissions granted by this License. + +**"Source"** form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and +configuration files. + +**"Object"** form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object +code, generated documentation, and conversions to other media types. + +**"Work"** shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is +included in or attached to the work (an example is provided in the Appendix below). + +**"Derivative Works"** shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, +annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works +shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. + +**"Contribution"** shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative +Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to +submit on behalf of the copyright owner. For the purposes of this definition, **"submitted"** means any form of electronic, verbal, or written communication +sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue +tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is +conspicuously marked or otherwise designated in writing by the copyright owner as **"Not a Contribution."** + +**"Contributor"** shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently +incorporated within the Work. + +2. Grant of Copyright License. +============================== +Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, +irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such +Derivative Works in Source or Object form. + +3. Grant of Patent License. +=========================== +Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, +irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such +license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of +their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim +or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then +any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. +================== +You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, +provided that You meet the following conditions: + +* You must give any other recipients of the Work or Derivative Works a copy of this License; and +* You must cause any modified files to carry prominent notices stating that You changed the files; and +* You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source + form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and +* If the Work includes a **"NOTICE"** text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the + attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the + following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the + Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE + file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, + alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. + +You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or +distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise +complies with the conditions stated in this License. + +5. Submission of Contributions. +=============================== +Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and +conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any +separate license agreement you may have executed with Licensor regarding such Contributions. + +6. Trademarks. +============== +This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable +and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. +========================== +Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, +MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and +assume any risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. +=========================== +In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate +and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or +consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages +for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been +advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. +============================================== +While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other +liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole +responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability +incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. + +---------------------------------------------------------------------------------------------------------------------------------------------------------------- + +**Appendix: How to apply the Apache License to your work** + +To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying +information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or +class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. + +.. code-block:: none + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/_sources/Preprocessing/index.rst.txt b/_sources/Preprocessing/index.rst.txt new file mode 100644 index 000000000..3b4180e8e --- /dev/null +++ b/_sources/Preprocessing/index.rst.txt @@ -0,0 +1,14 @@ +0. Pass - Preprocessing +####################### + +.. note:: + Currently, pyVHDLParser doesn't implement any pre-processing steps. It accepts + either an input filename or a string as content. + + +.. rubric:: Possible Use Cases + +The following pre-processing steps could be envisions: + +* Conditional analysis (new since VHDL-2019) +* File decryption according to IEEE Std. 1735-2014 diff --git a/_sources/ProjectGoals.rst.txt b/_sources/ProjectGoals.rst.txt new file mode 100644 index 000000000..9eff591c8 --- /dev/null +++ b/_sources/ProjectGoals.rst.txt @@ -0,0 +1,33 @@ +.. _goal: + +Project Goals +############# + +The main goal of this project is to parse VHDL source files for language +revisions (1987), 1993, 2002/2008 and soon for 2019. The result of the parser +is a Code Document-Object-Model (Code-DOM), for deep inspection of VHDL source +files. + +The inspection capabilities and the Code-DOM offers: + +* Object-oriented data model +* Bidirectional linking / fast navigation +* Python iterators / generators + +The parser is implemented as a multiple-pass parser, so the gained knowledge is +deepened pass-by-pass. More over, the parser is implemented as a +streaming-parser / Python generator. This means for example, the first pass +slices a source file into a chain of double-linked :class:`~pyVHDLParser.Token.Token`. While token +creation, the start and end of a token is preserved as a :class:`~pyVHDLParser.SourceCodePosition`. +In contrast to ordinary parsers, pyVHDLParser preserves cases, whitespaces and +comments. + +The finally generated Code-DOM offers an API for single file introspections. It +can be used for static documentation generation or rule-based coding style +checking. + +When multiple Code-DOMs are combined to a project, a *Generic VHDL Language Model* +can be assembled. It's possible to implement two model flavors for simulation +(full model) and synthesis (limited model). With such information, a +documentation with detailed type information and cross-references can be +generated. diff --git a/_sources/References/index.rst.txt b/_sources/References/index.rst.txt new file mode 100644 index 000000000..0ff0447e2 --- /dev/null +++ b/_sources/References/index.rst.txt @@ -0,0 +1,20 @@ +Scripts and Applications +######################## + +The pyVHDLParser package comes with an executables registered by pip in the +search path. + +* ``VHDLParser`` is a wrapper for ``pyVHDLParser.CLI.VHDLParser:main``. + + +.. # + This files requires a Python module called 'VHDLParser-AutoProgram' to be + located in the 'doc' root folder. It expects a variable 'parser' of type + ArgumentParser. + +.. _CMDREF:VHDLParser: + +.. autoprogram:: VHDLParser-AutoProgram:parser + :prog: VHDLParser + :groups: + :label: CmdRef:VHDLParser: diff --git a/_sources/TODOs.rst.txt b/_sources/TODOs.rst.txt new file mode 100644 index 000000000..e69de29bb diff --git a/_sources/TestApplication/VHDLParser.rst.txt b/_sources/TestApplication/VHDLParser.rst.txt new file mode 100644 index 000000000..daa6d0fd9 --- /dev/null +++ b/_sources/TestApplication/VHDLParser.rst.txt @@ -0,0 +1,106 @@ +Command Line Interface :file:`VHDLParser` +######################################### + +For a full list of command line options see :ref:`CMDREF:VHDLParser` + +Token Generation +**************** + +The command ``token-stream`` creates a colored stream of tokens. + +.. rubric:: Usage + +.. code-block:: + + > VHDLParser token-stream + +.. rubric:: Result + +.. image:: /images/TokenStream.vhdl/tokenize.png + + +Testing Token Generation +************************ + +The double-linking between tokens can be tested with the following command: + +.. code-block:: + + > VHDLParser token-check + +.. rubric:: Result + +Only errors are reported. + +.. image:: /images/TokenStream.vhdl/check-tokenize.png + + + +Block Generation +**************** + +The command ``block-stream`` creates a colored stream of blocks. The tokens per +block can be displayed as nested items by enabling the verbose mode (``-v``). + +.. rubric:: Usage + +.. code-block:: + + > VHDLParser block-stream + +.. rubric:: Result + +.. image:: /images/TokenStream.vhdl/blockstream.png + + +.. rubric:: Usage (verbose) + +.. code-block:: + + > VHDLParser -v block-stream + +.. rubric:: Result (verbose) + +.. image:: /images/TokenStream.vhdl/blockstream-verbose.png + + +Testing Blocks Generation +************************* + +.. rubric:: Usage + +.. code-block:: + + > VHDLParser block-check + +.. rubric:: Result + +.. todo:: add image + + +Testing Groups Generation +************************* + +.. rubric:: Usage + +.. code-block:: + + > VHDLParser group-stream + +.. rubric:: Result + +.. todo:: add image + + +Testing CodeDOM Generation +************************** + +.. rubric:: Usage + +.. code-block:: + + > VHDLParser CodeDOM + +.. rubric:: Result + +.. todo:: add image diff --git a/_sources/TestApplication/index.rst.txt b/_sources/TestApplication/index.rst.txt new file mode 100644 index 000000000..219c2326a --- /dev/null +++ b/_sources/TestApplication/index.rst.txt @@ -0,0 +1,10 @@ +Test Applications +################# + +The pyVHDLParser package comes with an executable registered by pip in the +search path. ``VHDLParser`` is a wrapper for ``pyVHDLParser.CLI.VHDLParser:main``. + + +.. toctree:: + + VHDLParser diff --git a/_sources/TokenStream/Examples.rst.txt b/_sources/TokenStream/Examples.rst.txt new file mode 100644 index 000000000..648f4ffa5 --- /dev/null +++ b/_sources/TokenStream/Examples.rst.txt @@ -0,0 +1,70 @@ +Examples +######## + +List all entity names +********************* + +The following example lists all entity names from a given source file. To have +full forward and backward linking between tokens, the chain of tokens must be +fully generated. One easy approach is to use a list comprehension. + + +.. rubric:: VHDL Sourcefile + +.. code-block:: VHDL + + entity myEntity_1 is + end; + + entity myEntity_2 is + end; + + +.. rubric:: Expected Outputs + +.. code-block:: + + Found entity: myEntity_1 + Found entity: myEntity_2 + + +.. rubric:: Algorithm + +1. Forward scan via main iterator searching for a ``WordToken`` of value ``entity``. +2. Start a second (local) forward iteration to search for the next ``WordToken``, + because an entity keyword must be followed by an identifier. + +.. code-block:: Python + + # Open a source file + with file.open('r') as fileHandle: + content = fileHandle.read() + + from pyVHDLParser.Base import ParserException + from pyVHDLParser.Token import StartOfDocumentToken, EndOfDocumentToken + from pyVHDLParser.Token.Parser import Tokenizer + + # get a list of all tokens + tokenList = [token for token in Tokenizer.GetVHDLTokenizer(content)] + + try: + for token in tokenList: + if (isinstance(token, WordToken) and token <= "entity"): + tok = token.NextToken + while tok is not None: + if isinstance(tok, WordToken): + print("Found entity: {name}".format(name=tok.Value)) + break + tok = tok.NextToken + except ParserException as ex: + print("ERROR: {0!s}".format(ex)) + except NotImplementedError as ex: + print("NotImplementedError: {0!s}".format(ex)) + + +.. rubric:: Drawbacks + +* Reports also ``end entity`` |br| + Solution: scan backward, if last ``WordToken`` before entity was not of value ``end``. +* Reports also ``entity`` from attribute specifications. |br| + This is a rare case. diff --git a/_sources/TokenStream/MetaTokens.rst.txt b/_sources/TokenStream/MetaTokens.rst.txt new file mode 100644 index 000000000..6beeec2b7 --- /dev/null +++ b/_sources/TokenStream/MetaTokens.rst.txt @@ -0,0 +1,42 @@ +.. _tokstm-metatoken: + +Meta Tokens +########### + +There are two meta-tokens: :class:`~pyVHDLParser.Token.StartOfDocumentToken` +and :class:`~pyVHDLParser.Token.EndOfDocumentToken`. These tokens represent +a start and end of a token stream. These tokens have a length of ``0`` characters. + + + +.. _tokstm-sodt: + +StartOfDocumentToken +==================== + +This token starts a chain of double-linked tokens in a token stream. It's used, +if the input source is a whole file, otherwise :class:`~pyVHDLParser.Token.StartOfSnippetToken`. +It is derived from base-class :class:`~pyVHDLParser.Token.StartOfToken` +and mixin :class:`~pyVHDLParser.StartOfDocument`. + +**Interitance diagram:** + +.. inheritance-diagram:: pyVHDLParser.Token.StartOfDocumentToken + :parts: 1 + + + +.. _tokstm-eodt: + +EndOfDocumentToken +================== + +This token ends a chain of double-linked tokens in a token stream. It's used, +if the input source is a whole file, otherwise :class:`~pyVHDLParser.Token.EndOfSnippetToken`. +It is derived from base-class :class:`~pyVHDLParser.Token.EndOfToken` +and mixin :class:`~pyVHDLParser.EndOfDocument`. + +**Interitance diagram:** + +.. inheritance-diagram:: pyVHDLParser.Token.EndOfDocumentToken + :parts: 1 diff --git a/_sources/TokenStream/SimpleTokens.rst.txt b/_sources/TokenStream/SimpleTokens.rst.txt new file mode 100644 index 000000000..9331ac177 --- /dev/null +++ b/_sources/TokenStream/SimpleTokens.rst.txt @@ -0,0 +1,46 @@ +.. _tokstm-simpletoken: + +Simple Tokens +############# + +Simple tokens, are tokens created by the :ref:`tokstm-tokenizer`. + +The tokenizer has no deep knowledge of the VHDL language, thus it can only detect +a limited number of distinct tokens. These token require only a context of up to +two characters while parsing. + +**List of simple tokens:** + ++--------------------------+-------------------------+-------------------------------------------------------+ +| Kind | Examples | pyVHDLParser Token Class | ++==========================+=========================+=======================================================+ +| Single character | ``;``, ``(`` | :class:`~pyVHDLParser.Token.CharacterToken` | ++--------------------------+-------------------------+-------------------------------------------------------+ +| Multiple characters | ``<=``, ``:=``, ``**`` | :class:`~pyVHDLParser.Token.FusedCharacterToken` | ++--------------------------+-------------------------+-------------------------------------------------------+ +| Whitespace (space, tab) | | :class:`~pyVHDLParser.Token.SpaceToken` | ++--------------------------+-------------------------+-------------------------------------------------------+ +| Word | ``entity``, ``xor`` | :class:`~pyVHDLParser.Token.WordToken` | ++--------------------------+-------------------------+-------------------------------------------------------+ +| Single-line comment | ``-- TODO`` | :class:`~pyVHDLParser.Token.SingleLineCommentToken` | ++--------------------------+-------------------------+-------------------------------------------------------+ +| Multi-line comment | ``/*comment*/`` | :class:`~pyVHDLParser.Token.MultiLineCommentToken` | ++--------------------------+-------------------------+-------------------------------------------------------+ +| Integer literal | ``42`` | :class:`~pyVHDLParser.Token.IntegerLiteralToken` | ++--------------------------+-------------------------+-------------------------------------------------------+ +| Real literal | ``1.25`` | :class:`~pyVHDLParser.Token.RealLiteralToken` | ++--------------------------+-------------------------+-------------------------------------------------------+ +| Character literal | ``'a'``, ``'Z'`` | :class:`~pyVHDLParser.Token.CharacterLiteralToken` | ++--------------------------+-------------------------+-------------------------------------------------------+ +| String literal | ``"hello"`` | :class:`~pyVHDLParser.Token.StringLiteralToken` | ++--------------------------+-------------------------+-------------------------------------------------------+ +| Bit string literal | ``x"42"`` | :class:`~pyVHDLParser.Token.BitStringLiteralToken` | ++--------------------------+-------------------------+-------------------------------------------------------+ +| Extended identifiers | ``\$cell35\`` | :class:`~pyVHDLParser.Token.ExtendedIdentifierToken` | ++--------------------------+-------------------------+-------------------------------------------------------+ +| Tool directives | | :class:`~pyVHDLParser.Token.DirectiveToken` | ++--------------------------+-------------------------+-------------------------------------------------------+ +| Linebreak | ``\n`` | :class:`~pyVHDLParser.Token.LineBreakToken` | ++--------------------------+-------------------------+-------------------------------------------------------+ +| indentation | ``\t`` | :class:`~pyVHDLParser.Token.IndentationToken` | ++--------------------------+-------------------------+-------------------------------------------------------+ diff --git a/_sources/TokenStream/SpecificTokens.rst.txt b/_sources/TokenStream/SpecificTokens.rst.txt new file mode 100644 index 000000000..5785cc454 --- /dev/null +++ b/_sources/TokenStream/SpecificTokens.rst.txt @@ -0,0 +1,11 @@ +.. _tokstm-specifictoken: + +Specific Tokens +############### + +.. todo:: + + Explain specifi tokens and token replacement. + + + diff --git a/_sources/TokenStream/Tokenizer.rst.txt b/_sources/TokenStream/Tokenizer.rst.txt new file mode 100644 index 000000000..3c4596f39 --- /dev/null +++ b/_sources/TokenStream/Tokenizer.rst.txt @@ -0,0 +1,44 @@ +.. _tokstm-tokenizer: + +Token Generator (Tokenizer) +########################### + +.. todo:: + + Describe tokenizer and generators and co-routines/yield. + + +The :class:`~pyVHDLParser.Token.Parser.Tokenizer` is implemented as a Python +:term:`generator` returning one token at a time. It has 15 states defined in +:class:`pyVHDLParser.Token.Parser.Tokenizer.TokenKind`. + + + +**Tokenizer States:** + +.. graphviz:: ../diagrams/Tokenizer.gv + :caption: State Transitions of Tokenizer + + +**Parser states defined in** :class:`~pyVHDLParser.Token.Parser.Tokenizer.TokenKind`: + +.. code-block:: Python + + class TokenKind(Enum): + """Enumeration of all Tokenizer states.""" + + SpaceChars = 0 #: Last char was a space + NumberChars = 1 #: Last char was a digit + AlphaChars = 2 #: Last char was a letter + DelimiterChars = 3 #: Last char was a delimiter character + PossibleSingleLineCommentStart = 4 #: Last char was a dash + PossibleLinebreak = 5 #: Last char was a ``\r`` + PossibleCharacterLiteral = 6 #: Last char was a ``'`` + PossibleStringLiteralStart = 7 #: Last char was a ``"`` + PossibleExtendedIdentifierStart = 8 #: Last char was a ``\`` + SingleLineComment = 9 #: Found ``--`` before + MultiLineComment = 10 #: Found ``/*`` before + Linebreak = 11 #: Last char was a ``\n`` + Directive = 12 #: Last char was a `` ` `` + FuseableCharacter = 13 #: Last char was a character that could be fused + OtherChars = 14 #: Any thing else diff --git a/_sources/TokenStream/Usage.rst.txt b/_sources/TokenStream/Usage.rst.txt new file mode 100644 index 000000000..867f74ae1 --- /dev/null +++ b/_sources/TokenStream/Usage.rst.txt @@ -0,0 +1,82 @@ +Usage +##### + +The following shows two code examples on how to use the Tokenizer. The first is +generator-based. The second one retrieves an iterator from the generator and +uses low-level access to the chain of tokens. + +Token Generator +*************** + +At first, a file is opened and the file content is read into a string buffer +called ``content``. Strings are iterable, thus a string can be an input for the +Tokenizer. + +At second, a generator object is created by ``GetVHDLTokenizer(...)``. + +Finally, a *for*-loop can process each token from :class:`~pyVHDLParser.Token.StartOfDocumentToken` +to :class:`~pyVHDLParser.Token.EndOfDocumentToken`. + +.. code-block:: Python + + # Open a source file + with file.open('r') as fileHandle: + content = fileHandle.read() + + from pyVHDLParser.Base import ParserException + from pyVHDLParser.Token import StartOfDocumentToken, EndOfDocumentToken + from pyVHDLParser.Token.Parser import Tokenizer + + # get a token generator + tokenStream = Tokenizer.GetVHDLTokenizer(content) + + try: + for token in tokenStream: + print("{token}".format(token=token)) + except ParserException as ex: + print("ERROR: {0!s}".format(ex)) + except NotImplementedError as ex: + print("NotImplementedError: {0!s}".format(ex)) + + + +Token Iterator +************** + +Similar to the previous example, a stream of tokens is generated by a token +generator. This time, iteration is manually implemented with a *while*-loop. The +function :func:`iter` creates an iterator object from a generator object. At +next, calling :func:`next` returns a new token for each call. + +The example wants to print the outer objects (first and last) of the token chain. +So at first, :func:`next` is called once to get the first element. Then an +endless loop is used to generate all tokens. If the generator ends, it raises +a :exc:`StopIteration` exception. The last token will be stored in variable +``lastToken``. + +.. code-block:: Python + + # Open a source file + with file.open('r') as fileHandle: + content = fileHandle.read() + + from pyVHDLParser.Base import ParserException + from pyVHDLParser.Token import StartOfDocumentToken, EndOfDocumentToken + from pyVHDLParser.Token.Parser import Tokenizer + + # get a token generator + tokenStream = Tokenizer.GetVHDLTokenizer(content) + + # get the iterator for that generator + tokenIterator = iter(tokenStream) + firstToken = next(tokenIterator) + + try: + while lastToken := next(tokenIterator): + pass + except StopIteration: + pass + + print("first token: {token}".format(token=firstToken)) + print("last token: {token}".format(token=lastToken)) + diff --git a/_sources/TokenStream/index.rst.txt b/_sources/TokenStream/index.rst.txt new file mode 100644 index 000000000..d5094acd4 --- /dev/null +++ b/_sources/TokenStream/index.rst.txt @@ -0,0 +1,101 @@ +.. _tokstm: + +1. Pass - Tokens +################ + +In the :ref:`first pass ` a source file is sliced into a chain +of double-linked objects of base-class :class:`~pyVHDLParser.Token.Token`. While +token creation, the start and end position of a token is preserved as a +:class:`~pyVHDLParser.SourceCodePosition` object within each token. + +In contrast to ordinary parsers, pyVHDLParser preserves cases, whitespaces (space, +tab, ...), linebreaks and comments. + + +**Condensed definition of class** :class:`~pyVHDLParser.SourceCodePosition`: + +.. code-block:: Python + + @Export + class SourceCodePosition: + """Represent a position (row, column, absolute) in a source code file.""" + Row : int = None #: Row in the source code file + Column : int = None #: Column (character) in the source code file's line + Absolute : int = None #: Absolute character position regardless of linebreaks. + + +**Condensed definition of class** :class:`~pyVHDLParser.Token.Token`: + +.. code-block:: Python + + @Export + class Token: + """Base-class for all token classes.""" + _previousToken : Token = None #: Reference to the previous token + _NextToken : Token = None #: Reference to the next token + Start : SourceCodePosition = None #: Position for the token start + End : SourceCodePosition = None #: Position for the token end + + def __init__(self, previousToken : Token, start : SourceCodePosition, end : SourceCodePosition = None): + def __len__(self): + + @property + def PreviousToken(self): + + + +.. toctree:: + :hidden: + + MetaTokens + SimpleTokens + SpecificTokens + Tokenizer + Usage + Examples + + +.. rubric:: Example of a VHDL Entity + +**Source code:** + +.. code-block:: VHDL + + entity myEntity is + generic ( + constant BITS : in positive := 8 -- 1 Byte + ); + port ( + signal Clock : in std_logic; -- $IsClock: + signal Reset : out std_logic -- @Clock: generated reset pulse + ); + end entity; + +**Token Stream:** + +.. image:: /images/TokenStream.vhdl/tokenize.png + +.. note:: + The 3 comments have been preserved and are shown in lime green. Please also + note the preserved positions in the last column. + +**Simplified Double-Linked List:** + +.. graphviz:: + :caption: Source: TokenStream.vhdl + + digraph Tokenize { + rankdir=LR; + + node [shape=box]; + + n1 [label="StartOfDocumentToken\n"]; + n2 [label="WordToken\n'entity'"]; + n3 [label="SpaceToken\n' '"]; + n4 [label="WordToken\n'myEntity'"]; + n5 [label="..."]; + n6 [label="EndOfDocumentToken\n"]; + + n1 -> n2 -> n3 -> n4 -> n5 -> n6 [dir=both]; + } + diff --git a/_sources/UseCases.rst.txt b/_sources/UseCases.rst.txt new file mode 100644 index 000000000..d7e383f0b --- /dev/null +++ b/_sources/UseCases.rst.txt @@ -0,0 +1,151 @@ +.. _usecase: + +Use Cases +######### + +The following list is an excerpt of possible use cases for pyVHDLParser. + + +.. _usecase-codedom: + +Sourcecode Document Object Model +******************************** + +A sourcecode document object model (Code-DOM) is a object-oriented programming +model to represent a sourcecode file as a complex structure of object instances. +A Code-DOM can offer an immutable access to source files e.g. to find identifiers +and defined entities. This is called *introspection*. + +Bringing this idea to the next level, adds a modification API to the Code-DOM. +Such an API also allows creating sourcecode from scratch with a Python API. + + +.. _usecase-vhdlmodel: + +Language Model +************** + +While a Code-DOM focuses on a single file, a language model combines multiple +files, thus Code-DOMs, to an overall project or design understanding. In such +an extended scenario, a language model can offer several additional features +compared to a Code-DOM like: + +* Type analysis, +* Cross-references, +* Design hierarchy, +* Component and package dependencies, and +* Compile order detection. + + +.. _usecase-graphs: + +Dependency Graphs and Cross-References +************************************** + +Using a language model, a tool can calculate and visualize the following +dependency graphs: + +* Compile order +* Component hierarchy +* Static call graph for functions +* Type system / type graphs + + +.. _usecase-highlight: + +Syntax Highlighting +******************* + +As a Code-DOM has already knowledge about comments, keywords, identifiers, etc. +it's straight forward to colorize a source document. While syntax-highlighting +and cross-referencing based on pure Code-DOMs might be limited, it can be at +full beauty if syntax highlighting is based on a language model. + + +.. _usecase-syntax: + +Syntax-Checking +*************** + +A parser is already checking the input for syntax correctness, but pyVHDLParser +is not very strict at all parts of an input file, because some parts might not +be parsed to its full depth. Therefore, the Code-DOM can get an additional syntax +checking pass. + +As an example, pyVHDLParser considers any number as an integer literal, +regardless of the integers value. Thus, an integer literal might exceed an +(universal) integers value range. An additional check can catch such mistakes. + + +.. _usecase-doc: + +Documentation Extraction +************************ + +A Code-DOM, which still includes all comments, can be used in another pass for +correlation of comments and language elements. The resulting mapping can be +exported in various documentation format like JSON, XML, Restructured Text, ... + +.. seealso:: + + A VHDL domain for Sphinx: `sphinxcontrib-vhdldomain `__ + + +.. _usecase-doccov: + +Documentation Coverage Collection +********************************* + +Simulators and frameworks like `OSVVM `__ are +collecting statement, branch and even functional coverage, but non of the tools +is collecting documentation coverage. + +* Are all Source files equipped with a file header? + + * Does the file header match the style/pattern? + * Does the file header include necessary information (e.g. license)? + +* Are all entities documented? +* Are all public functions/procedures in a package documented? +* Are all user-defined types documented? +* Are all ports documented? + + +.. _usecase-analysis: + +Static Code Analysis +******************** + +The Code-DOM also allows for static checks like: + +* Coding style +* Code statistics / complexity checks + + +.. _usecase-transform: + +Document Transformation +*********************** + +As a combination of coding style checks and a Code-DOM or language model, +source files can be manipulated or reformatted according to rules. + + +.. _usecase-codegen: + +Code Generation +*************** + +As a Code-DOM is a structure of object instances, a Code-DOM can be constructed +from code itself. Thus, a sourcefile can be created from scratch purely in +memory. By using a rule-based formatting from objects to text, a Code-DOM can +be persisted as a VHDL source file. + + +.. _usecase-upcoming: + +Test Platform for new Language Revisions +**************************************** + +And finally, this project could be used for testing upcoming language features +in syntax and functionality. diff --git a/_sources/index.rst.txt b/_sources/index.rst.txt new file mode 100644 index 000000000..426ab9db0 --- /dev/null +++ b/_sources/index.rst.txt @@ -0,0 +1,287 @@ +.. include:: shields.inc + +.. raw:: latex + + \part{Introduction} + +.. only:: html + + |SHIELD:svg:pyVHDLParser-github| |SHIELD:svg:pyVHDLParser-tag| |SHIELD:svg:pyVHDLParser-release| |SHIELD:svg:pyVHDLParser-date| |br| + |SHIELD:svg:pyVHDLParser-lib-status| |SHIELD:svg:pyVHDLParser-lib-dep| |br| + |SHIELD:svg:pyVHDLParser-travis| |SHIELD:svg:pyVHDLParser-pypi-tag| |SHIELD:svg:pyVHDLParser-pypi-status| |SHIELD:svg:pyVHDLParser-pypi-python| |br| + |SHIELD:svg:pyVHDLParser-codacy-quality| |SHIELD:svg:pyVHDLParser-codacy-coverage| |SHIELD:svg:pyVHDLParser-codecov-coverage| |SHIELD:svg:pyVHDLParser-lib-rank| |br| + |SHIELD:svg:pyVHDLParser-rtd| |SHIELD:svg:pyVHDLParser-license| + +.. only:: latex + + |SHIELD:png:pyVHDLParser-github| |SHIELD:png:pyVHDLParser-tag| |SHIELD:png:pyVHDLParser-release| |SHIELD:png:pyVHDLParser-date| |br| + |SHIELD:png:pyVHDLParser-lib-status| |SHIELD:png:pyVHDLParser-lib-dep| |br| + |SHIELD:png:pyVHDLParser-travis| |SHIELD:png:pyVHDLParser-pypi-tag| |SHIELD:png:pyVHDLParser-pypi-status| |SHIELD:png:pyVHDLParser-pypi-python| |br| + |SHIELD:png:pyVHDLParser-codacy-quality| |SHIELD:png:pyVHDLParser-codacy-coverage| |SHIELD:png:pyVHDLParser-codecov-coverage| |SHIELD:png:pyVHDLParser-lib-rank| |br| + |SHIELD:png:pyVHDLParser-rtd| |SHIELD:png:pyVHDLParser-license| + +-------------------------------------------------------------------------------- + +The pyVHDLParser Documentation +############################## + +This is a token-stream based parser for VHDL-2008 creating a document object model (DOM). + +.. important:: **This package requires Python 3.8+**, because it uses some of the latest Python feature for effective code writing: + + * `Pathlib `__ (Python 3.4) + * `Type hints `__ (Python 3.5) and for `variables `__ (Python 3.6) + * `Data classes `__ (Python 3.7) + * `Assignment expressions `__ (Python 3.8) + + +Main Goals +********** + +* **Parsing** + + * Slice an input document into **tokens** and text **blocks** which are categorized in **groups** for fast indexing + * Preserve case, whitespace and comments + * Recover on parsing errors + * Good error reporting / throw exceptions + +* **Fast Processing** + + * Multi-pass parsing and analysis + * Delay analysis if not needed for current pass + * Link tokens and blocks for fast-forward scanning (triple helix) + +* **Generic VHDL Language Model** + + * Assemble a sourcecode document-object-model (Code-DOM) + * Provide an API for code introspection + * Provide an API for code modification / transformation + +See chapter :ref:`goal` for details. + + +Use Cases +********* + +* Generate :ref:`documentation ` by using the fast-forward scanner +* Generate a :ref:`document `/:ref:`language ` model by using the grouped text-block scanner +* Extract compile orders and other dependency :ref:`graphs ` +* Generate :ref:`highlighted syntax ` + +.. seealso:: + + See chapter :ref:`usecase` for details. + +Parsing Approach +**************** + +1. Slice an input document into **tokens** +2. Assemble tokens to text **blocks** which are categorized +3. Assemble text blocks for fast-forward scanning into **groups** (indexing) +4. Translate groups into a sourcecode document-object-model (Code-DOM) +5. Provide a generic VHDL language model + +.. seealso:: + + See chapter :ref:`concept` for details. + +Additional Aims +*************** + +* A VHDL domain for Sphinx + + * A autodoc plugin for the VHDL domain in Sphinx +* VHDL plugins/extensions for style checkers supported by CI environments +* Testing new VHDL language features beyond VHDL-2008/VHDL-2019 + + +News +**** + +.. only:: html + + Mar. 2023 - Enhancements + ======================== + +.. only:: latex + + .. rubric:: Mar. 2023 - Enhancements + +* Bumped dependencies to pyVHDLModel and updated interfaces. +* CLI entrypoint will be installed as a binary. + +.. only:: html + + Jun. 2021 - Enhancements + ======================== + +.. only:: latex + + .. rubric:: Jun. 2021 - Enhancements + +* Added infrastructure to run example code provided in issues as testcase. +* New Single-File GitHub Action workflow (pipeline). +* Added Dependabot configuration file. +* Updated dependencies + + * Sphinx uses now v4.0.2 + * Removed 2 patched Sphinx extensions → now using original extensions. + +* ... + + +.. only:: html + + Nov. 2020 - Test cases + ====================== + +.. only:: latex + + .. rubric:: Nov. 2020 - Test cases + +* Added testcases for Tokenizer and block generation. +* Added first testcases for pass 4 (Code-DOM) +* Collect code and branch coverage. +* ``Frontend.py`` |rarr| pyVHDLParser executable installed via pip + + +.. only:: html + + Dec. 2019 - Major reworks + ========================= + +.. only:: latex + + .. rubric:: Dec. 2019 - Major reworks + +* Reworked and updated documentation. +* Implemented a new test frontend. + + +.. only:: html + + Dec. 2018 - Minor updates + ========================= + +.. only:: latex + + .. rubric:: Dec. 2018 - Minor updates + +Fixed some NextToken linking problems. + + +.. only:: html + + Nov. 2017 - New features + ======================== + +.. only:: latex + + .. rubric:: Nov. 2017 - New features + +Implemented new features like case statements. + + +.. only:: html + + 20.09.2017 - Project started + ============================ + +.. only:: latex + + .. rubric:: 20.09.2016 - Project started + +Let's create a new parser in Python to process VHDL code. + + +Contributors +************ + +* `Patrick Lehmann `__ (Maintainer) +* `and more... `__ + + +License +******* + +This library is licensed under **Apache License 2.0**. + +------------------------------------ + +.. |docdate| date:: %d.%b %Y - %H:%M + +.. only:: html + + This document was generated on |docdate|. + + +.. toctree:: + :caption: Introduction + :hidden: + + ProjectGoals + UseCases + Concepts + Installation + Dependency + TestApplication/index + +.. raw:: latex + + \part{Main Documentation} + +.. toctree:: + :caption: Main Documentation + :hidden: + + Preprocessing/index + TokenStream/index + BlockStream/index + GroupStream/index + DocumentObjectModel/index + LanguageModel/index + +.. # + SimulationModel/index + SynthesisModel/index + Examples/index + +.. raw:: latex + + \part{References} + +.. toctree:: + :caption: References + :hidden: + + pyVHDLParser/pyVHDLParser + References/index + +.. raw:: latex + + \part{Appendix} + +.. toctree:: + :caption: Appendix + :hidden: + + ChangeLog/index + License + Doc-License + Glossary + genindex + Python Module Index + TODOs + +.. # + ifconfig:: visibility in ('Internal') + + .. raw:: latex + + \part{Internal} + + .. toctree:: + :caption: Internal + :hidden: + + Internal/ToDo diff --git a/_sources/pyVHDLParser/pyVHDLParser.ANTLR3.VHDLLexer.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.ANTLR3.VHDLLexer.rst.txt new file mode 100644 index 000000000..45e1faa07 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.ANTLR3.VHDLLexer.rst.txt @@ -0,0 +1,12 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +============================= +pyVHDLParser.ANTLR3.VHDLLexer +============================= + +.. automodule:: pyVHDLParser.ANTLR3.VHDLLexer + + +.. currentmodule:: pyVHDLParser.ANTLR3.VHDLLexer diff --git a/_sources/pyVHDLParser/pyVHDLParser.ANTLR3.VHDLParser.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.ANTLR3.VHDLParser.rst.txt new file mode 100644 index 000000000..784514cbc --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.ANTLR3.VHDLParser.rst.txt @@ -0,0 +1,12 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +============================== +pyVHDLParser.ANTLR3.VHDLParser +============================== + +.. automodule:: pyVHDLParser.ANTLR3.VHDLParser + + +.. currentmodule:: pyVHDLParser.ANTLR3.VHDLParser diff --git a/_sources/pyVHDLParser/pyVHDLParser.ANTLR3.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.ANTLR3.rst.txt new file mode 100644 index 000000000..c575426b1 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.ANTLR3.rst.txt @@ -0,0 +1,21 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +=================== +pyVHDLParser.ANTLR3 +=================== + +.. automodule:: pyVHDLParser.ANTLR3 + + + +**Submodules** + +.. toctree:: + :maxdepth: 1 + + pyVHDLParser.ANTLR3.VHDLLexer + pyVHDLParser.ANTLR3.VHDLParser + +.. currentmodule:: pyVHDLParser.ANTLR3 diff --git a/_sources/pyVHDLParser/pyVHDLParser.ANTLR4.VHDLLexer.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.ANTLR4.VHDLLexer.rst.txt new file mode 100644 index 000000000..f26f4a46b --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.ANTLR4.VHDLLexer.rst.txt @@ -0,0 +1,12 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +============================= +pyVHDLParser.ANTLR4.VHDLLexer +============================= + +.. automodule:: pyVHDLParser.ANTLR4.VHDLLexer + + +.. currentmodule:: pyVHDLParser.ANTLR4.VHDLLexer diff --git a/_sources/pyVHDLParser/pyVHDLParser.ANTLR4.VHDLParser.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.ANTLR4.VHDLParser.rst.txt new file mode 100644 index 000000000..977cdcbf4 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.ANTLR4.VHDLParser.rst.txt @@ -0,0 +1,12 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +============================== +pyVHDLParser.ANTLR4.VHDLParser +============================== + +.. automodule:: pyVHDLParser.ANTLR4.VHDLParser + + +.. currentmodule:: pyVHDLParser.ANTLR4.VHDLParser diff --git a/_sources/pyVHDLParser/pyVHDLParser.ANTLR4.VHDLParserVisitor.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.ANTLR4.VHDLParserVisitor.rst.txt new file mode 100644 index 000000000..949b8fe5d --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.ANTLR4.VHDLParserVisitor.rst.txt @@ -0,0 +1,12 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +===================================== +pyVHDLParser.ANTLR4.VHDLParserVisitor +===================================== + +.. automodule:: pyVHDLParser.ANTLR4.VHDLParserVisitor + + +.. currentmodule:: pyVHDLParser.ANTLR4.VHDLParserVisitor diff --git a/_sources/pyVHDLParser/pyVHDLParser.ANTLR4.Visitor.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.ANTLR4.Visitor.rst.txt new file mode 100644 index 000000000..615e5f4a5 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.ANTLR4.Visitor.rst.txt @@ -0,0 +1,12 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +=========================== +pyVHDLParser.ANTLR4.Visitor +=========================== + +.. automodule:: pyVHDLParser.ANTLR4.Visitor + + +.. currentmodule:: pyVHDLParser.ANTLR4.Visitor diff --git a/_sources/pyVHDLParser/pyVHDLParser.ANTLR4.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.ANTLR4.rst.txt new file mode 100644 index 000000000..445b2ffb7 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.ANTLR4.rst.txt @@ -0,0 +1,23 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +=================== +pyVHDLParser.ANTLR4 +=================== + +.. automodule:: pyVHDLParser.ANTLR4 + + + +**Submodules** + +.. toctree:: + :maxdepth: 1 + + pyVHDLParser.ANTLR4.VHDLLexer + pyVHDLParser.ANTLR4.VHDLParser + pyVHDLParser.ANTLR4.VHDLParserVisitor + pyVHDLParser.ANTLR4.Visitor + +.. currentmodule:: pyVHDLParser.ANTLR4 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Base.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Base.rst.txt new file mode 100644 index 000000000..c6d0bc540 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Base.rst.txt @@ -0,0 +1,11 @@ +.. # Template created by Patrick Lehmann + +Python Class Reference +###################### + +Reference of all packages and modules: + +.. automodule:: pyVHDLParser.Base + +.. toctree:: + :maxdepth: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.Assignment.SignalAssignment.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Assignment.SignalAssignment.rst.txt new file mode 100644 index 000000000..a4d83f101 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Assignment.SignalAssignment.rst.txt @@ -0,0 +1,38 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +=============================================== +pyVHDLParser.Blocks.Assignment.SignalAssignment +=============================================== + +.. automodule:: pyVHDLParser.Blocks.Assignment.SignalAssignment + + +.. currentmodule:: pyVHDLParser.Blocks.Assignment.SignalAssignment + + +**Classes** + +- :py:class:`SignalAssignmentBlock`: + Base-class for all :term:`block` classes. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: SignalAssignmentBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: SignalAssignmentBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.Assignment.VariableAssignment.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Assignment.VariableAssignment.rst.txt new file mode 100644 index 000000000..7c263ca36 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Assignment.VariableAssignment.rst.txt @@ -0,0 +1,38 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +================================================= +pyVHDLParser.Blocks.Assignment.VariableAssignment +================================================= + +.. automodule:: pyVHDLParser.Blocks.Assignment.VariableAssignment + + +.. currentmodule:: pyVHDLParser.Blocks.Assignment.VariableAssignment + + +**Classes** + +- :py:class:`SignalAssignmentBlock`: + Base-class for all :term:`block` classes. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: SignalAssignmentBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: SignalAssignmentBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.Assignment.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Assignment.rst.txt new file mode 100644 index 000000000..4b564449c --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Assignment.rst.txt @@ -0,0 +1,21 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +============================== +pyVHDLParser.Blocks.Assignment +============================== + +.. automodule:: pyVHDLParser.Blocks.Assignment + + + +**Submodules** + +.. toctree:: + :maxdepth: 1 + + pyVHDLParser.Blocks.Assignment.SignalAssignment + pyVHDLParser.Blocks.Assignment.VariableAssignment + +.. currentmodule:: pyVHDLParser.Blocks.Assignment diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.Attribute.AttributeDeclaration.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Attribute.AttributeDeclaration.rst.txt new file mode 100644 index 000000000..8d18786c1 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Attribute.AttributeDeclaration.rst.txt @@ -0,0 +1,38 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +================================================== +pyVHDLParser.Blocks.Attribute.AttributeDeclaration +================================================== + +.. automodule:: pyVHDLParser.Blocks.Attribute.AttributeDeclaration + + +.. currentmodule:: pyVHDLParser.Blocks.Attribute.AttributeDeclaration + + +**Classes** + +- :py:class:`AttributeDeclarationBlock`: + Base-class for all :term:`block` classes. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: AttributeDeclarationBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: AttributeDeclarationBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.Attribute.AttributeSpecification.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Attribute.AttributeSpecification.rst.txt new file mode 100644 index 000000000..570808376 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Attribute.AttributeSpecification.rst.txt @@ -0,0 +1,38 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +==================================================== +pyVHDLParser.Blocks.Attribute.AttributeSpecification +==================================================== + +.. automodule:: pyVHDLParser.Blocks.Attribute.AttributeSpecification + + +.. currentmodule:: pyVHDLParser.Blocks.Attribute.AttributeSpecification + + +**Classes** + +- :py:class:`AttributeSpecificationBlock`: + Base-class for all :term:`block` classes. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: AttributeSpecificationBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: AttributeSpecificationBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.Attribute.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Attribute.rst.txt new file mode 100644 index 000000000..653bfbc4e --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Attribute.rst.txt @@ -0,0 +1,21 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +============================= +pyVHDLParser.Blocks.Attribute +============================= + +.. automodule:: pyVHDLParser.Blocks.Attribute + + + +**Submodules** + +.. toctree:: + :maxdepth: 1 + + pyVHDLParser.Blocks.Attribute.AttributeDeclaration + pyVHDLParser.Blocks.Attribute.AttributeSpecification + +.. currentmodule:: pyVHDLParser.Blocks.Attribute diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.Comment.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Comment.rst.txt new file mode 100644 index 000000000..709247b9b --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Comment.rst.txt @@ -0,0 +1,52 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +=========================== +pyVHDLParser.Blocks.Comment +=========================== + +.. automodule:: pyVHDLParser.Blocks.Comment + + +.. currentmodule:: pyVHDLParser.Blocks.Comment + + +**Classes** + +- :py:class:`SingleLineCommentBlock`: + Base-class for all comment blocks. + +- :py:class:`MultiLineCommentBlock`: + Base-class for all comment blocks. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: SingleLineCommentBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: SingleLineCommentBlock + :parts: 1 + +.. autoclass:: MultiLineCommentBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: MultiLineCommentBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.Common.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Common.rst.txt new file mode 100644 index 000000000..d72ea1795 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Common.rst.txt @@ -0,0 +1,80 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +========================== +pyVHDLParser.Blocks.Common +========================== + +.. automodule:: pyVHDLParser.Blocks.Common + + +.. currentmodule:: pyVHDLParser.Blocks.Common + + +**Classes** + +- :py:class:`WhitespaceBlock`: + Base-class for blocks that can be skipped in fast-forward scanning. + +- :py:class:`LinebreakBlock`: + Base-class for blocks that can be skipped in fast-forward scanning. + +- :py:class:`EmptyLineBlock`: + Base-class for blocks that can be skipped in fast-forward scanning. + +- :py:class:`IndentationBlock`: + Base-class for blocks that can be skipped in fast-forward scanning. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: WhitespaceBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: WhitespaceBlock + :parts: 1 + +.. autoclass:: LinebreakBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: LinebreakBlock + :parts: 1 + +.. autoclass:: EmptyLineBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EmptyLineBlock + :parts: 1 + +.. autoclass:: IndentationBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: IndentationBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.Case.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.Case.rst.txt new file mode 100644 index 000000000..bb632cc90 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.Case.rst.txt @@ -0,0 +1,122 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +========================================= +pyVHDLParser.Blocks.ControlStructure.Case +========================================= + +.. automodule:: pyVHDLParser.Blocks.ControlStructure.Case + + +.. currentmodule:: pyVHDLParser.Blocks.ControlStructure.Case + + +**Classes** + +- :py:class:`EndBlock`: + Base-class for blocks that are final in a fast-forward scanning. + +- :py:class:`ArrowBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`WhenExpressionBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`WhenBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`IsBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`CaseExpressionBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`CaseBlock`: + Base-class for all :term:`block` classes. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: EndBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EndBlock + :parts: 1 + +.. autoclass:: ArrowBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ArrowBlock + :parts: 1 + +.. autoclass:: WhenExpressionBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: WhenExpressionBlock + :parts: 1 + +.. autoclass:: WhenBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: WhenBlock + :parts: 1 + +.. autoclass:: IsBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: IsBlock + :parts: 1 + +.. autoclass:: CaseExpressionBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: CaseExpressionBlock + :parts: 1 + +.. autoclass:: CaseBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: CaseBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.Exit.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.Exit.rst.txt new file mode 100644 index 000000000..3d86af22a --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.Exit.rst.txt @@ -0,0 +1,66 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +========================================= +pyVHDLParser.Blocks.ControlStructure.Exit +========================================= + +.. automodule:: pyVHDLParser.Blocks.ControlStructure.Exit + + +.. currentmodule:: pyVHDLParser.Blocks.ControlStructure.Exit + + +**Classes** + +- :py:class:`EndBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`ExitConditionBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`ExitBlock`: + Base-class for all :term:`block` classes. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: EndBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EndBlock + :parts: 1 + +.. autoclass:: ExitConditionBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ExitConditionBlock + :parts: 1 + +.. autoclass:: ExitBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ExitBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.ForLoop.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.ForLoop.rst.txt new file mode 100644 index 000000000..2590a7424 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.ForLoop.rst.txt @@ -0,0 +1,108 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +============================================ +pyVHDLParser.Blocks.ControlStructure.ForLoop +============================================ + +.. automodule:: pyVHDLParser.Blocks.ControlStructure.ForLoop + + +.. currentmodule:: pyVHDLParser.Blocks.ControlStructure.ForLoop + + +**Classes** + +- :py:class:`IteratorBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`EndBlock`: + Base-class for blocks that are final in a fast-forward scanning. + +- :py:class:`LoopBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`ExpressionBlockEndedByLoopORToORDownto`: + Base-class for all :term:`block` classes. + +- :py:class:`ExpressionBlockEndedByLoop`: + Base-class for all :term:`block` classes. + +- :py:class:`LoopIterationDirectionBlock`: + Base-class for all :term:`block` classes. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: IteratorBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: IteratorBlock + :parts: 1 + +.. autoclass:: EndBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EndBlock + :parts: 1 + +.. autoclass:: LoopBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: LoopBlock + :parts: 1 + +.. autoclass:: ExpressionBlockEndedByLoopORToORDownto + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ExpressionBlockEndedByLoopORToORDownto + :parts: 1 + +.. autoclass:: ExpressionBlockEndedByLoop + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ExpressionBlockEndedByLoop + :parts: 1 + +.. autoclass:: LoopIterationDirectionBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: LoopIterationDirectionBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.If.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.If.rst.txt new file mode 100644 index 000000000..c40c1eea3 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.If.rst.txt @@ -0,0 +1,108 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +======================================= +pyVHDLParser.Blocks.ControlStructure.If +======================================= + +.. automodule:: pyVHDLParser.Blocks.ControlStructure.If + + +.. currentmodule:: pyVHDLParser.Blocks.ControlStructure.If + + +**Classes** + +- :py:class:`EndBlock`: + Base-class for blocks that are final in a fast-forward scanning. + +- :py:class:`ThenBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`ElseBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`ExpressionBlockEndedByThen`: + Base-class for all :term:`block` classes. + +- :py:class:`IfConditionBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`ElsIfConditionBlock`: + Base-class for all :term:`block` classes. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: EndBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EndBlock + :parts: 1 + +.. autoclass:: ThenBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ThenBlock + :parts: 1 + +.. autoclass:: ElseBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ElseBlock + :parts: 1 + +.. autoclass:: ExpressionBlockEndedByThen + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ExpressionBlockEndedByThen + :parts: 1 + +.. autoclass:: IfConditionBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: IfConditionBlock + :parts: 1 + +.. autoclass:: ElsIfConditionBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ElsIfConditionBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.Next.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.Next.rst.txt new file mode 100644 index 000000000..d1ca456d7 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.Next.rst.txt @@ -0,0 +1,66 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +========================================= +pyVHDLParser.Blocks.ControlStructure.Next +========================================= + +.. automodule:: pyVHDLParser.Blocks.ControlStructure.Next + + +.. currentmodule:: pyVHDLParser.Blocks.ControlStructure.Next + + +**Classes** + +- :py:class:`EndBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`NextConditionBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`NextBlock`: + Base-class for all :term:`block` classes. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: EndBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EndBlock + :parts: 1 + +.. autoclass:: NextConditionBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: NextConditionBlock + :parts: 1 + +.. autoclass:: NextBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: NextBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.Null.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.Null.rst.txt new file mode 100644 index 000000000..7af0dcbc2 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.Null.rst.txt @@ -0,0 +1,52 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +========================================= +pyVHDLParser.Blocks.ControlStructure.Null +========================================= + +.. automodule:: pyVHDLParser.Blocks.ControlStructure.Null + + +.. currentmodule:: pyVHDLParser.Blocks.ControlStructure.Null + + +**Classes** + +- :py:class:`EndBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`NullBlock`: + Base-class for all :term:`block` classes. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: EndBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EndBlock + :parts: 1 + +.. autoclass:: NullBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: NullBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.Return.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.Return.rst.txt new file mode 100644 index 000000000..6cf569c03 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.Return.rst.txt @@ -0,0 +1,66 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +=========================================== +pyVHDLParser.Blocks.ControlStructure.Return +=========================================== + +.. automodule:: pyVHDLParser.Blocks.ControlStructure.Return + + +.. currentmodule:: pyVHDLParser.Blocks.ControlStructure.Return + + +**Classes** + +- :py:class:`EndBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`ReturnExpressionBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`ReturnBlock`: + Base-class for all :term:`block` classes. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: EndBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EndBlock + :parts: 1 + +.. autoclass:: ReturnExpressionBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ReturnExpressionBlock + :parts: 1 + +.. autoclass:: ReturnBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ReturnBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.WhileLoop.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.WhileLoop.rst.txt new file mode 100644 index 000000000..b7becf649 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.WhileLoop.rst.txt @@ -0,0 +1,52 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +============================================== +pyVHDLParser.Blocks.ControlStructure.WhileLoop +============================================== + +.. automodule:: pyVHDLParser.Blocks.ControlStructure.WhileLoop + + +.. currentmodule:: pyVHDLParser.Blocks.ControlStructure.WhileLoop + + +**Classes** + +- :py:class:`ConditionBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`EndBlock`: + Base-class for blocks that are final in a fast-forward scanning. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: ConditionBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ConditionBlock + :parts: 1 + +.. autoclass:: EndBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EndBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.rst.txt new file mode 100644 index 000000000..4924a605f --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.rst.txt @@ -0,0 +1,27 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +==================================== +pyVHDLParser.Blocks.ControlStructure +==================================== + +.. automodule:: pyVHDLParser.Blocks.ControlStructure + + + +**Submodules** + +.. toctree:: + :maxdepth: 1 + + pyVHDLParser.Blocks.ControlStructure.Case + pyVHDLParser.Blocks.ControlStructure.Exit + pyVHDLParser.Blocks.ControlStructure.ForLoop + pyVHDLParser.Blocks.ControlStructure.If + pyVHDLParser.Blocks.ControlStructure.Next + pyVHDLParser.Blocks.ControlStructure.Null + pyVHDLParser.Blocks.ControlStructure.Return + pyVHDLParser.Blocks.ControlStructure.WhileLoop + +.. currentmodule:: pyVHDLParser.Blocks.ControlStructure diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.Exception.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Exception.rst.txt new file mode 100644 index 000000000..6ff8b2300 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Exception.rst.txt @@ -0,0 +1,12 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +============================= +pyVHDLParser.Blocks.Exception +============================= + +.. automodule:: pyVHDLParser.Blocks.Exception + + +.. currentmodule:: pyVHDLParser.Blocks.Exception diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.Expression.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Expression.rst.txt new file mode 100644 index 000000000..5a9d1366e --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Expression.rst.txt @@ -0,0 +1,108 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +============================== +pyVHDLParser.Blocks.Expression +============================== + +.. automodule:: pyVHDLParser.Blocks.Expression + + +.. currentmodule:: pyVHDLParser.Blocks.Expression + + +**Classes** + +- :py:class:`ExpressionBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`ExpressionBlockEndedByCharORClosingRoundBracket`: + Base-class for all :term:`block` classes. + +- :py:class:`ExpressionBlockEndedByKeywordORClosingRoundBracket`: + Base-class for all :term:`block` classes. + +- :py:class:`ExpressionBlockEndedByToOrDownto`: + Base-class for all :term:`block` classes. + +- :py:class:`ExpressionBlockEndedByKeywordOrToOrDownto`: + Base-class for all :term:`block` classes. + +- :py:class:`ExpressionBlockEndedBySemicolon`: + Base-class for all :term:`block` classes. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: ExpressionBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ExpressionBlock + :parts: 1 + +.. autoclass:: ExpressionBlockEndedByCharORClosingRoundBracket + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ExpressionBlockEndedByCharORClosingRoundBracket + :parts: 1 + +.. autoclass:: ExpressionBlockEndedByKeywordORClosingRoundBracket + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ExpressionBlockEndedByKeywordORClosingRoundBracket + :parts: 1 + +.. autoclass:: ExpressionBlockEndedByToOrDownto + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ExpressionBlockEndedByToOrDownto + :parts: 1 + +.. autoclass:: ExpressionBlockEndedByKeywordOrToOrDownto + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ExpressionBlockEndedByKeywordOrToOrDownto + :parts: 1 + +.. autoclass:: ExpressionBlockEndedBySemicolon + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ExpressionBlockEndedBySemicolon + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.Generate.CaseGenerate.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Generate.CaseGenerate.rst.txt new file mode 100644 index 000000000..9a3537224 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Generate.CaseGenerate.rst.txt @@ -0,0 +1,66 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +========================================= +pyVHDLParser.Blocks.Generate.CaseGenerate +========================================= + +.. automodule:: pyVHDLParser.Blocks.Generate.CaseGenerate + + +.. currentmodule:: pyVHDLParser.Blocks.Generate.CaseGenerate + + +**Classes** + +- :py:class:`CaseBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`BeginBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`EndGenerateBlock`: + Base-class for blocks that are final in a fast-forward scanning. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: CaseBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: CaseBlock + :parts: 1 + +.. autoclass:: BeginBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: BeginBlock + :parts: 1 + +.. autoclass:: EndGenerateBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EndGenerateBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.Generate.ForGenerate.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Generate.ForGenerate.rst.txt new file mode 100644 index 000000000..8dc0f0f69 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Generate.ForGenerate.rst.txt @@ -0,0 +1,66 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +======================================== +pyVHDLParser.Blocks.Generate.ForGenerate +======================================== + +.. automodule:: pyVHDLParser.Blocks.Generate.ForGenerate + + +.. currentmodule:: pyVHDLParser.Blocks.Generate.ForGenerate + + +**Classes** + +- :py:class:`RangeBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`BeginBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`EndGenerateBlock`: + Base-class for blocks that are final in a fast-forward scanning. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: RangeBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: RangeBlock + :parts: 1 + +.. autoclass:: BeginBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: BeginBlock + :parts: 1 + +.. autoclass:: EndGenerateBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EndGenerateBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.Generate.IfGenerate.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Generate.IfGenerate.rst.txt new file mode 100644 index 000000000..30c316ebc --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Generate.IfGenerate.rst.txt @@ -0,0 +1,122 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +======================================= +pyVHDLParser.Blocks.Generate.IfGenerate +======================================= + +.. automodule:: pyVHDLParser.Blocks.Generate.IfGenerate + + +.. currentmodule:: pyVHDLParser.Blocks.Generate.IfGenerate + + +**Classes** + +- :py:class:`IfConditionBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`BeginBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`ElsIfConditionBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`ElsIfBeginBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`ElseGenerateBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`ElseGenerateBeginBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`EndGenerateBlock`: + Base-class for blocks that are final in a fast-forward scanning. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: IfConditionBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: IfConditionBlock + :parts: 1 + +.. autoclass:: BeginBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: BeginBlock + :parts: 1 + +.. autoclass:: ElsIfConditionBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ElsIfConditionBlock + :parts: 1 + +.. autoclass:: ElsIfBeginBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ElsIfBeginBlock + :parts: 1 + +.. autoclass:: ElseGenerateBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ElseGenerateBlock + :parts: 1 + +.. autoclass:: ElseGenerateBeginBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ElseGenerateBeginBlock + :parts: 1 + +.. autoclass:: EndGenerateBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EndGenerateBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.Generate.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Generate.rst.txt new file mode 100644 index 000000000..e753cf958 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Generate.rst.txt @@ -0,0 +1,48 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +============================ +pyVHDLParser.Blocks.Generate +============================ + +.. automodule:: pyVHDLParser.Blocks.Generate + + + +**Submodules** + +.. toctree:: + :maxdepth: 1 + + pyVHDLParser.Blocks.Generate.CaseGenerate + pyVHDLParser.Blocks.Generate.ForGenerate + pyVHDLParser.Blocks.Generate.IfGenerate + +.. currentmodule:: pyVHDLParser.Blocks.Generate + + +**Classes** + +- :py:class:`EndGenerateBlock`: + Base-class for blocks that are final in a fast-forward scanning. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: EndGenerateBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EndGenerateBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.Generic.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Generic.rst.txt new file mode 100644 index 000000000..1100bf94b --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Generic.rst.txt @@ -0,0 +1,94 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +=========================== +pyVHDLParser.Blocks.Generic +=========================== + +.. automodule:: pyVHDLParser.Blocks.Generic + + +.. currentmodule:: pyVHDLParser.Blocks.Generic + + +**Classes** + +- :py:class:`DeclarativeRegion`: + Base-class for all declarative region blocks. + +- :py:class:`ConcurrentDeclarativeRegion`: + Base-class for all concurrent declarative region blocks. + +- :py:class:`SequentialDeclarativeRegion`: + Base-class for all sequential declarative region blocks. + +- :py:class:`ConcurrentBeginBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`SequentialBeginBlock`: + Base-class for all :term:`block` classes. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: DeclarativeRegion + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: DeclarativeRegion + :parts: 1 + +.. autoclass:: ConcurrentDeclarativeRegion + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ConcurrentDeclarativeRegion + :parts: 1 + +.. autoclass:: SequentialDeclarativeRegion + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: SequentialDeclarativeRegion + :parts: 1 + +.. autoclass:: ConcurrentBeginBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ConcurrentBeginBlock + :parts: 1 + +.. autoclass:: SequentialBeginBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: SequentialBeginBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.Generic1.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Generic1.rst.txt new file mode 100644 index 000000000..127b3d2b7 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Generic1.rst.txt @@ -0,0 +1,80 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +============================ +pyVHDLParser.Blocks.Generic1 +============================ + +.. automodule:: pyVHDLParser.Blocks.Generic1 + + +.. currentmodule:: pyVHDLParser.Blocks.Generic1 + + +**Classes** + +- :py:class:`EndBlock`: + Base-class for blocks that are final in a fast-forward scanning. + +- :py:class:`BeginBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`CloseBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`EndOfStatementBlock`: + Base-class for all :term:`block` classes. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: EndBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EndBlock + :parts: 1 + +.. autoclass:: BeginBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: BeginBlock + :parts: 1 + +.. autoclass:: CloseBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: CloseBlock + :parts: 1 + +.. autoclass:: EndOfStatementBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EndOfStatementBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.Instantiation.EntityInstantiation.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Instantiation.EntityInstantiation.rst.txt new file mode 100644 index 000000000..fb493f41f --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Instantiation.EntityInstantiation.rst.txt @@ -0,0 +1,52 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +===================================================== +pyVHDLParser.Blocks.Instantiation.EntityInstantiation +===================================================== + +.. automodule:: pyVHDLParser.Blocks.Instantiation.EntityInstantiation + + +.. currentmodule:: pyVHDLParser.Blocks.Instantiation.EntityInstantiation + + +**Classes** + +- :py:class:`EntityInstantiationBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`EndBlock`: + Base-class for blocks that are final in a fast-forward scanning. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: EntityInstantiationBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EntityInstantiationBlock + :parts: 1 + +.. autoclass:: EndBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EndBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.rst.txt new file mode 100644 index 000000000..a1c773712 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.rst.txt @@ -0,0 +1,164 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +======================================================= +pyVHDLParser.Blocks.Instantiation.FunctionInstantiation +======================================================= + +.. automodule:: pyVHDLParser.Blocks.Instantiation.FunctionInstantiation + + +.. currentmodule:: pyVHDLParser.Blocks.Instantiation.FunctionInstantiation + + +**Classes** + +- :py:class:`EntityInstantiationBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`GenericMapBeginBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`GenericMapItemBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`GenericMapDelimiterBlock`: + Base-class for blocks that can be skipped in fast-forward scanning. + +- :py:class:`GenericMapEndBlock`: + Base-class for blocks that are final in a fast-forward scanning. + +- :py:class:`PortMapBeginBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`PortMapItemBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`PortMapDelimiterBlock`: + Base-class for blocks that can be skipped in fast-forward scanning. + +- :py:class:`PortMapEndBlock`: + Base-class for blocks that are final in a fast-forward scanning. + +- :py:class:`EndBlock`: + Base-class for blocks that are final in a fast-forward scanning. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: EntityInstantiationBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EntityInstantiationBlock + :parts: 1 + +.. autoclass:: GenericMapBeginBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: GenericMapBeginBlock + :parts: 1 + +.. autoclass:: GenericMapItemBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: GenericMapItemBlock + :parts: 1 + +.. autoclass:: GenericMapDelimiterBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: GenericMapDelimiterBlock + :parts: 1 + +.. autoclass:: GenericMapEndBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: GenericMapEndBlock + :parts: 1 + +.. autoclass:: PortMapBeginBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: PortMapBeginBlock + :parts: 1 + +.. autoclass:: PortMapItemBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: PortMapItemBlock + :parts: 1 + +.. autoclass:: PortMapDelimiterBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: PortMapDelimiterBlock + :parts: 1 + +.. autoclass:: PortMapEndBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: PortMapEndBlock + :parts: 1 + +.. autoclass:: EndBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EndBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.Instantiation.PackageInstantiation.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Instantiation.PackageInstantiation.rst.txt new file mode 100644 index 000000000..ce1f43b71 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Instantiation.PackageInstantiation.rst.txt @@ -0,0 +1,164 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +====================================================== +pyVHDLParser.Blocks.Instantiation.PackageInstantiation +====================================================== + +.. automodule:: pyVHDLParser.Blocks.Instantiation.PackageInstantiation + + +.. currentmodule:: pyVHDLParser.Blocks.Instantiation.PackageInstantiation + + +**Classes** + +- :py:class:`EntityInstantiationBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`GenericMapBeginBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`GenericMapItemBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`GenericMapDelimiterBlock`: + Base-class for blocks that can be skipped in fast-forward scanning. + +- :py:class:`GenericMapEndBlock`: + Base-class for blocks that are final in a fast-forward scanning. + +- :py:class:`PortMapBeginBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`PortMapItemBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`PortMapDelimiterBlock`: + Base-class for blocks that can be skipped in fast-forward scanning. + +- :py:class:`PortMapEndBlock`: + Base-class for blocks that are final in a fast-forward scanning. + +- :py:class:`EndBlock`: + Base-class for blocks that are final in a fast-forward scanning. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: EntityInstantiationBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EntityInstantiationBlock + :parts: 1 + +.. autoclass:: GenericMapBeginBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: GenericMapBeginBlock + :parts: 1 + +.. autoclass:: GenericMapItemBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: GenericMapItemBlock + :parts: 1 + +.. autoclass:: GenericMapDelimiterBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: GenericMapDelimiterBlock + :parts: 1 + +.. autoclass:: GenericMapEndBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: GenericMapEndBlock + :parts: 1 + +.. autoclass:: PortMapBeginBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: PortMapBeginBlock + :parts: 1 + +.. autoclass:: PortMapItemBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: PortMapItemBlock + :parts: 1 + +.. autoclass:: PortMapDelimiterBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: PortMapDelimiterBlock + :parts: 1 + +.. autoclass:: PortMapEndBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: PortMapEndBlock + :parts: 1 + +.. autoclass:: EndBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EndBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.rst.txt new file mode 100644 index 000000000..7475495f3 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.rst.txt @@ -0,0 +1,164 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +======================================================== +pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation +======================================================== + +.. automodule:: pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation + + +.. currentmodule:: pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation + + +**Classes** + +- :py:class:`EntityInstantiationBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`GenericMapBeginBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`GenericMapItemBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`GenericMapDelimiterBlock`: + Base-class for blocks that can be skipped in fast-forward scanning. + +- :py:class:`GenericMapEndBlock`: + Base-class for blocks that are final in a fast-forward scanning. + +- :py:class:`PortMapBeginBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`PortMapItemBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`PortMapDelimiterBlock`: + Base-class for blocks that can be skipped in fast-forward scanning. + +- :py:class:`PortMapEndBlock`: + Base-class for blocks that are final in a fast-forward scanning. + +- :py:class:`EndBlock`: + Base-class for blocks that are final in a fast-forward scanning. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: EntityInstantiationBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EntityInstantiationBlock + :parts: 1 + +.. autoclass:: GenericMapBeginBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: GenericMapBeginBlock + :parts: 1 + +.. autoclass:: GenericMapItemBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: GenericMapItemBlock + :parts: 1 + +.. autoclass:: GenericMapDelimiterBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: GenericMapDelimiterBlock + :parts: 1 + +.. autoclass:: GenericMapEndBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: GenericMapEndBlock + :parts: 1 + +.. autoclass:: PortMapBeginBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: PortMapBeginBlock + :parts: 1 + +.. autoclass:: PortMapItemBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: PortMapItemBlock + :parts: 1 + +.. autoclass:: PortMapDelimiterBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: PortMapDelimiterBlock + :parts: 1 + +.. autoclass:: PortMapEndBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: PortMapEndBlock + :parts: 1 + +.. autoclass:: EndBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EndBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.Instantiation.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Instantiation.rst.txt new file mode 100644 index 000000000..a660809b0 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Instantiation.rst.txt @@ -0,0 +1,23 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +================================= +pyVHDLParser.Blocks.Instantiation +================================= + +.. automodule:: pyVHDLParser.Blocks.Instantiation + + + +**Submodules** + +.. toctree:: + :maxdepth: 1 + + pyVHDLParser.Blocks.Instantiation.EntityInstantiation + pyVHDLParser.Blocks.Instantiation.FunctionInstantiation + pyVHDLParser.Blocks.Instantiation.PackageInstantiation + pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation + +.. currentmodule:: pyVHDLParser.Blocks.Instantiation diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.InterfaceObject.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.InterfaceObject.rst.txt new file mode 100644 index 000000000..682d7e9ff --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.InterfaceObject.rst.txt @@ -0,0 +1,94 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +=================================== +pyVHDLParser.Blocks.InterfaceObject +=================================== + +.. automodule:: pyVHDLParser.Blocks.InterfaceObject + + +.. currentmodule:: pyVHDLParser.Blocks.InterfaceObject + + +**Classes** + +- :py:class:`InterfaceObjectBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`InterfaceConstantBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`InterfaceVariableBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`InterfaceSignalBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`InterfaceTypeBlock`: + Base-class for all :term:`block` classes. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: InterfaceObjectBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: InterfaceObjectBlock + :parts: 1 + +.. autoclass:: InterfaceConstantBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: InterfaceConstantBlock + :parts: 1 + +.. autoclass:: InterfaceVariableBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: InterfaceVariableBlock + :parts: 1 + +.. autoclass:: InterfaceSignalBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: InterfaceSignalBlock + :parts: 1 + +.. autoclass:: InterfaceTypeBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: InterfaceTypeBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.List.GenericList.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.List.GenericList.rst.txt new file mode 100644 index 000000000..550d64ac3 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.List.GenericList.rst.txt @@ -0,0 +1,108 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +==================================== +pyVHDLParser.Blocks.List.GenericList +==================================== + +.. automodule:: pyVHDLParser.Blocks.List.GenericList + + +.. currentmodule:: pyVHDLParser.Blocks.List.GenericList + + +**Classes** + +- :py:class:`CloseBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`DelimiterBlock`: + Base-class for blocks that can be skipped in fast-forward scanning. + +- :py:class:`DefaultValueExpressionBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`GenericListInterfaceConstantBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`GenericListInterfaceTypeBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`OpenBlock`: + Base-class for all :term:`block` classes. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: CloseBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: CloseBlock + :parts: 1 + +.. autoclass:: DelimiterBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: DelimiterBlock + :parts: 1 + +.. autoclass:: DefaultValueExpressionBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: DefaultValueExpressionBlock + :parts: 1 + +.. autoclass:: GenericListInterfaceConstantBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: GenericListInterfaceConstantBlock + :parts: 1 + +.. autoclass:: GenericListInterfaceTypeBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: GenericListInterfaceTypeBlock + :parts: 1 + +.. autoclass:: OpenBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: OpenBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.List.GenericMapList.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.List.GenericMapList.rst.txt new file mode 100644 index 000000000..c83ff128f --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.List.GenericMapList.rst.txt @@ -0,0 +1,80 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +======================================= +pyVHDLParser.Blocks.List.GenericMapList +======================================= + +.. automodule:: pyVHDLParser.Blocks.List.GenericMapList + + +.. currentmodule:: pyVHDLParser.Blocks.List.GenericMapList + + +**Classes** + +- :py:class:`OpenBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`ItemBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`DelimiterBlock`: + Base-class for blocks that can be skipped in fast-forward scanning. + +- :py:class:`CloseBlock`: + Base-class for all :term:`block` classes. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: OpenBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: OpenBlock + :parts: 1 + +.. autoclass:: ItemBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ItemBlock + :parts: 1 + +.. autoclass:: DelimiterBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: DelimiterBlock + :parts: 1 + +.. autoclass:: CloseBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: CloseBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.List.ParameterList.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.List.ParameterList.rst.txt new file mode 100644 index 000000000..864b15ac7 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.List.ParameterList.rst.txt @@ -0,0 +1,122 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +====================================== +pyVHDLParser.Blocks.List.ParameterList +====================================== + +.. automodule:: pyVHDLParser.Blocks.List.ParameterList + + +.. currentmodule:: pyVHDLParser.Blocks.List.ParameterList + + +**Classes** + +- :py:class:`OpenBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`ItemBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`DelimiterBlock`: + Base-class for blocks that can be skipped in fast-forward scanning. + +- :py:class:`CloseBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`ParameterListInterfaceConstantBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`ParameterListInterfaceVariableBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`ParameterListInterfaceSignalBlock`: + Base-class for all :term:`block` classes. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: OpenBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: OpenBlock + :parts: 1 + +.. autoclass:: ItemBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ItemBlock + :parts: 1 + +.. autoclass:: DelimiterBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: DelimiterBlock + :parts: 1 + +.. autoclass:: CloseBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: CloseBlock + :parts: 1 + +.. autoclass:: ParameterListInterfaceConstantBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ParameterListInterfaceConstantBlock + :parts: 1 + +.. autoclass:: ParameterListInterfaceVariableBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ParameterListInterfaceVariableBlock + :parts: 1 + +.. autoclass:: ParameterListInterfaceSignalBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ParameterListInterfaceSignalBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.List.PortList.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.List.PortList.rst.txt new file mode 100644 index 000000000..f610f2587 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.List.PortList.rst.txt @@ -0,0 +1,94 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +================================= +pyVHDLParser.Blocks.List.PortList +================================= + +.. automodule:: pyVHDLParser.Blocks.List.PortList + + +.. currentmodule:: pyVHDLParser.Blocks.List.PortList + + +**Classes** + +- :py:class:`CloseBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`DelimiterBlock`: + Base-class for blocks that can be skipped in fast-forward scanning. + +- :py:class:`DefaultValueExpressionBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`PortListInterfaceSignalBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`OpenBlock`: + Base-class for all :term:`block` classes. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: CloseBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: CloseBlock + :parts: 1 + +.. autoclass:: DelimiterBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: DelimiterBlock + :parts: 1 + +.. autoclass:: DefaultValueExpressionBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: DefaultValueExpressionBlock + :parts: 1 + +.. autoclass:: PortListInterfaceSignalBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: PortListInterfaceSignalBlock + :parts: 1 + +.. autoclass:: OpenBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: OpenBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.List.PortMapList.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.List.PortMapList.rst.txt new file mode 100644 index 000000000..54d7a9ad7 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.List.PortMapList.rst.txt @@ -0,0 +1,80 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +==================================== +pyVHDLParser.Blocks.List.PortMapList +==================================== + +.. automodule:: pyVHDLParser.Blocks.List.PortMapList + + +.. currentmodule:: pyVHDLParser.Blocks.List.PortMapList + + +**Classes** + +- :py:class:`OpenBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`ItemBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`DelimiterBlock`: + Base-class for blocks that can be skipped in fast-forward scanning. + +- :py:class:`CloseBlock`: + Base-class for all :term:`block` classes. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: OpenBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: OpenBlock + :parts: 1 + +.. autoclass:: ItemBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ItemBlock + :parts: 1 + +.. autoclass:: DelimiterBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: DelimiterBlock + :parts: 1 + +.. autoclass:: CloseBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: CloseBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.List.SensitivityList.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.List.SensitivityList.rst.txt new file mode 100644 index 000000000..7373464fe --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.List.SensitivityList.rst.txt @@ -0,0 +1,80 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +======================================== +pyVHDLParser.Blocks.List.SensitivityList +======================================== + +.. automodule:: pyVHDLParser.Blocks.List.SensitivityList + + +.. currentmodule:: pyVHDLParser.Blocks.List.SensitivityList + + +**Classes** + +- :py:class:`OpenBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`ItemBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`DelimiterBlock`: + Base-class for blocks that can be skipped in fast-forward scanning. + +- :py:class:`CloseBlock`: + Base-class for all :term:`block` classes. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: OpenBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: OpenBlock + :parts: 1 + +.. autoclass:: ItemBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ItemBlock + :parts: 1 + +.. autoclass:: DelimiterBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: DelimiterBlock + :parts: 1 + +.. autoclass:: CloseBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: CloseBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.List.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.List.rst.txt new file mode 100644 index 000000000..48981bca8 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.List.rst.txt @@ -0,0 +1,25 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +======================== +pyVHDLParser.Blocks.List +======================== + +.. automodule:: pyVHDLParser.Blocks.List + + + +**Submodules** + +.. toctree:: + :maxdepth: 1 + + pyVHDLParser.Blocks.List.GenericList + pyVHDLParser.Blocks.List.GenericMapList + pyVHDLParser.Blocks.List.ParameterList + pyVHDLParser.Blocks.List.PortList + pyVHDLParser.Blocks.List.PortMapList + pyVHDLParser.Blocks.List.SensitivityList + +.. currentmodule:: pyVHDLParser.Blocks.List diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.Object.Constant.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Object.Constant.rst.txt new file mode 100644 index 000000000..cd83b1325 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Object.Constant.rst.txt @@ -0,0 +1,66 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +=================================== +pyVHDLParser.Blocks.Object.Constant +=================================== + +.. automodule:: pyVHDLParser.Blocks.Object.Constant + + +.. currentmodule:: pyVHDLParser.Blocks.Object.Constant + + +**Classes** + +- :py:class:`ConstantDeclarationEndMarkerBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`ConstantDeclarationDefaultExpressionBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`ConstantDeclarationBlock`: + Base-class for all :term:`block` classes. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: ConstantDeclarationEndMarkerBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ConstantDeclarationEndMarkerBlock + :parts: 1 + +.. autoclass:: ConstantDeclarationDefaultExpressionBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ConstantDeclarationDefaultExpressionBlock + :parts: 1 + +.. autoclass:: ConstantDeclarationBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ConstantDeclarationBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.Object.File.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Object.File.rst.txt new file mode 100644 index 000000000..fc2fed73a --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Object.File.rst.txt @@ -0,0 +1,12 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +=============================== +pyVHDLParser.Blocks.Object.File +=============================== + +.. automodule:: pyVHDLParser.Blocks.Object.File + + +.. currentmodule:: pyVHDLParser.Blocks.Object.File diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.Object.SharedVariable.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Object.SharedVariable.rst.txt new file mode 100644 index 000000000..d11b492e6 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Object.SharedVariable.rst.txt @@ -0,0 +1,52 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +========================================= +pyVHDLParser.Blocks.Object.SharedVariable +========================================= + +.. automodule:: pyVHDLParser.Blocks.Object.SharedVariable + + +.. currentmodule:: pyVHDLParser.Blocks.Object.SharedVariable + + +**Classes** + +- :py:class:`SharedVariableDeclarationEndMarkerBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`SharedVariableDeclarationBlock`: + Base-class for all :term:`block` classes. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: SharedVariableDeclarationEndMarkerBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: SharedVariableDeclarationEndMarkerBlock + :parts: 1 + +.. autoclass:: SharedVariableDeclarationBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: SharedVariableDeclarationBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.Object.Signal.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Object.Signal.rst.txt new file mode 100644 index 000000000..2101af348 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Object.Signal.rst.txt @@ -0,0 +1,66 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +================================= +pyVHDLParser.Blocks.Object.Signal +================================= + +.. automodule:: pyVHDLParser.Blocks.Object.Signal + + +.. currentmodule:: pyVHDLParser.Blocks.Object.Signal + + +**Classes** + +- :py:class:`SignalDeclarationEndMarkerBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`SignalDeclarationDefaultExpressionBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`SignalDeclarationBlock`: + Base-class for all :term:`block` classes. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: SignalDeclarationEndMarkerBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: SignalDeclarationEndMarkerBlock + :parts: 1 + +.. autoclass:: SignalDeclarationDefaultExpressionBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: SignalDeclarationDefaultExpressionBlock + :parts: 1 + +.. autoclass:: SignalDeclarationBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: SignalDeclarationBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.Object.Variable.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Object.Variable.rst.txt new file mode 100644 index 000000000..09817d76a --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Object.Variable.rst.txt @@ -0,0 +1,66 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +=================================== +pyVHDLParser.Blocks.Object.Variable +=================================== + +.. automodule:: pyVHDLParser.Blocks.Object.Variable + + +.. currentmodule:: pyVHDLParser.Blocks.Object.Variable + + +**Classes** + +- :py:class:`VariableDeclarationEndMarkerBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`VariableDeclarationDefaultExpressionBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`VariableDeclarationBlock`: + Base-class for all :term:`block` classes. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: VariableDeclarationEndMarkerBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: VariableDeclarationEndMarkerBlock + :parts: 1 + +.. autoclass:: VariableDeclarationDefaultExpressionBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: VariableDeclarationDefaultExpressionBlock + :parts: 1 + +.. autoclass:: VariableDeclarationBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: VariableDeclarationBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.Object.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Object.rst.txt new file mode 100644 index 000000000..db703053c --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Object.rst.txt @@ -0,0 +1,64 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +========================== +pyVHDLParser.Blocks.Object +========================== + +.. automodule:: pyVHDLParser.Blocks.Object + + + +**Submodules** + +.. toctree:: + :maxdepth: 1 + + pyVHDLParser.Blocks.Object.Constant + pyVHDLParser.Blocks.Object.File + pyVHDLParser.Blocks.Object.SharedVariable + pyVHDLParser.Blocks.Object.Signal + pyVHDLParser.Blocks.Object.Variable + +.. currentmodule:: pyVHDLParser.Blocks.Object + + +**Classes** + +- :py:class:`ObjectDeclarationBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`ObjectDeclarationEndMarkerBlock`: + Base-class for all :term:`block` classes. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: ObjectDeclarationBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ObjectDeclarationBlock + :parts: 1 + +.. autoclass:: ObjectDeclarationEndMarkerBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ObjectDeclarationEndMarkerBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.Reference.Context.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Reference.Context.rst.txt new file mode 100644 index 000000000..37579253e --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Reference.Context.rst.txt @@ -0,0 +1,52 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +===================================== +pyVHDLParser.Blocks.Reference.Context +===================================== + +.. automodule:: pyVHDLParser.Blocks.Reference.Context + + +.. currentmodule:: pyVHDLParser.Blocks.Reference.Context + + +**Classes** + +- :py:class:`NameBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`EndBlock`: + Base-class for blocks that are final in a fast-forward scanning. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: NameBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: NameBlock + :parts: 1 + +.. autoclass:: EndBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EndBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.Reference.Library.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Reference.Library.rst.txt new file mode 100644 index 000000000..a9076384d --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Reference.Library.rst.txt @@ -0,0 +1,80 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +===================================== +pyVHDLParser.Blocks.Reference.Library +===================================== + +.. automodule:: pyVHDLParser.Blocks.Reference.Library + + +.. currentmodule:: pyVHDLParser.Blocks.Reference.Library + + +**Classes** + +- :py:class:`StartBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`LibraryNameBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`DelimiterBlock`: + Base-class for blocks that can be skipped in fast-forward scanning. + +- :py:class:`EndBlock`: + Base-class for blocks that are final in a fast-forward scanning. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: StartBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: StartBlock + :parts: 1 + +.. autoclass:: LibraryNameBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: LibraryNameBlock + :parts: 1 + +.. autoclass:: DelimiterBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: DelimiterBlock + :parts: 1 + +.. autoclass:: EndBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EndBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.Reference.Use.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Reference.Use.rst.txt new file mode 100644 index 000000000..8a9bf2069 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Reference.Use.rst.txt @@ -0,0 +1,80 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +================================= +pyVHDLParser.Blocks.Reference.Use +================================= + +.. automodule:: pyVHDLParser.Blocks.Reference.Use + + +.. currentmodule:: pyVHDLParser.Blocks.Reference.Use + + +**Classes** + +- :py:class:`StartBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`ReferenceNameBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`DelimiterBlock`: + Base-class for blocks that can be skipped in fast-forward scanning. + +- :py:class:`EndBlock`: + Base-class for blocks that are final in a fast-forward scanning. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: StartBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: StartBlock + :parts: 1 + +.. autoclass:: ReferenceNameBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ReferenceNameBlock + :parts: 1 + +.. autoclass:: DelimiterBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: DelimiterBlock + :parts: 1 + +.. autoclass:: EndBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EndBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.Reference.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Reference.rst.txt new file mode 100644 index 000000000..70bdde5e5 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Reference.rst.txt @@ -0,0 +1,22 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +============================= +pyVHDLParser.Blocks.Reference +============================= + +.. automodule:: pyVHDLParser.Blocks.Reference + + + +**Submodules** + +.. toctree:: + :maxdepth: 1 + + pyVHDLParser.Blocks.Reference.Context + pyVHDLParser.Blocks.Reference.Library + pyVHDLParser.Blocks.Reference.Use + +.. currentmodule:: pyVHDLParser.Blocks.Reference diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.Reporting.Assert.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Reporting.Assert.rst.txt new file mode 100644 index 000000000..9027b15d7 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Reporting.Assert.rst.txt @@ -0,0 +1,38 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +==================================== +pyVHDLParser.Blocks.Reporting.Assert +==================================== + +.. automodule:: pyVHDLParser.Blocks.Reporting.Assert + + +.. currentmodule:: pyVHDLParser.Blocks.Reporting.Assert + + +**Classes** + +- :py:class:`AssertBlock`: + Base-class for all :term:`block` classes. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: AssertBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: AssertBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.Reporting.Report.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Reporting.Report.rst.txt new file mode 100644 index 000000000..3da1880e1 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Reporting.Report.rst.txt @@ -0,0 +1,38 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +==================================== +pyVHDLParser.Blocks.Reporting.Report +==================================== + +.. automodule:: pyVHDLParser.Blocks.Reporting.Report + + +.. currentmodule:: pyVHDLParser.Blocks.Reporting.Report + + +**Classes** + +- :py:class:`ReportBlock`: + Base-class for all :term:`block` classes. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: ReportBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ReportBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.Reporting.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Reporting.rst.txt new file mode 100644 index 000000000..e0ce88603 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Reporting.rst.txt @@ -0,0 +1,21 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +============================= +pyVHDLParser.Blocks.Reporting +============================= + +.. automodule:: pyVHDLParser.Blocks.Reporting + + + +**Submodules** + +.. toctree:: + :maxdepth: 1 + + pyVHDLParser.Blocks.Reporting.Assert + pyVHDLParser.Blocks.Reporting.Report + +.. currentmodule:: pyVHDLParser.Blocks.Reporting diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.Sequential.Function.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Sequential.Function.rst.txt new file mode 100644 index 000000000..b46dce78f --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Sequential.Function.rst.txt @@ -0,0 +1,94 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +======================================= +pyVHDLParser.Blocks.Sequential.Function +======================================= + +.. automodule:: pyVHDLParser.Blocks.Sequential.Function + + +.. currentmodule:: pyVHDLParser.Blocks.Sequential.Function + + +**Classes** + +- :py:class:`EndBlock`: + Base-class for blocks that are final in a fast-forward scanning. + +- :py:class:`BeginBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`DeclarativeRegion`: + Base-class for all sequential declarative region blocks. + +- :py:class:`NameBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`ReturnTypeBlock`: + Base-class for all :term:`block` classes. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: EndBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EndBlock + :parts: 1 + +.. autoclass:: BeginBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: BeginBlock + :parts: 1 + +.. autoclass:: DeclarativeRegion + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: DeclarativeRegion + :parts: 1 + +.. autoclass:: NameBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: NameBlock + :parts: 1 + +.. autoclass:: ReturnTypeBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ReturnTypeBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.Sequential.Package.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Sequential.Package.rst.txt new file mode 100644 index 000000000..1b47c6f63 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Sequential.Package.rst.txt @@ -0,0 +1,66 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +====================================== +pyVHDLParser.Blocks.Sequential.Package +====================================== + +.. automodule:: pyVHDLParser.Blocks.Sequential.Package + + +.. currentmodule:: pyVHDLParser.Blocks.Sequential.Package + + +**Classes** + +- :py:class:`EndBlock`: + Base-class for blocks that are final in a fast-forward scanning. + +- :py:class:`DeclarativeRegion`: + Base-class for all sequential declarative region blocks. + +- :py:class:`NameBlock`: + Base-class for all :term:`block` classes. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: EndBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EndBlock + :parts: 1 + +.. autoclass:: DeclarativeRegion + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: DeclarativeRegion + :parts: 1 + +.. autoclass:: NameBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: NameBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.Sequential.PackageBody.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Sequential.PackageBody.rst.txt new file mode 100644 index 000000000..86b40fd36 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Sequential.PackageBody.rst.txt @@ -0,0 +1,66 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +========================================== +pyVHDLParser.Blocks.Sequential.PackageBody +========================================== + +.. automodule:: pyVHDLParser.Blocks.Sequential.PackageBody + + +.. currentmodule:: pyVHDLParser.Blocks.Sequential.PackageBody + + +**Classes** + +- :py:class:`EndBlock`: + Base-class for blocks that are final in a fast-forward scanning. + +- :py:class:`DeclarativeRegion`: + Base-class for all sequential declarative region blocks. + +- :py:class:`NameBlock`: + Base-class for all :term:`block` classes. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: EndBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EndBlock + :parts: 1 + +.. autoclass:: DeclarativeRegion + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: DeclarativeRegion + :parts: 1 + +.. autoclass:: NameBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: NameBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.Sequential.Procedure.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Sequential.Procedure.rst.txt new file mode 100644 index 000000000..5a3ce43a4 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Sequential.Procedure.rst.txt @@ -0,0 +1,94 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +======================================== +pyVHDLParser.Blocks.Sequential.Procedure +======================================== + +.. automodule:: pyVHDLParser.Blocks.Sequential.Procedure + + +.. currentmodule:: pyVHDLParser.Blocks.Sequential.Procedure + + +**Classes** + +- :py:class:`EndBlock`: + Base-class for blocks that are final in a fast-forward scanning. + +- :py:class:`BeginBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`DeclarativeRegion`: + Base-class for all sequential declarative region blocks. + +- :py:class:`NameBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`VoidBlock`: + Base-class for all :term:`block` classes. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: EndBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EndBlock + :parts: 1 + +.. autoclass:: BeginBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: BeginBlock + :parts: 1 + +.. autoclass:: DeclarativeRegion + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: DeclarativeRegion + :parts: 1 + +.. autoclass:: NameBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: NameBlock + :parts: 1 + +.. autoclass:: VoidBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: VoidBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.Sequential.Process.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Sequential.Process.rst.txt new file mode 100644 index 000000000..f5b384a1f --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Sequential.Process.rst.txt @@ -0,0 +1,94 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +====================================== +pyVHDLParser.Blocks.Sequential.Process +====================================== + +.. automodule:: pyVHDLParser.Blocks.Sequential.Process + + +.. currentmodule:: pyVHDLParser.Blocks.Sequential.Process + + +**Classes** + +- :py:class:`EndBlock`: + Base-class for blocks that are final in a fast-forward scanning. + +- :py:class:`BeginBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`DeclarativeRegion`: + Base-class for all sequential declarative region blocks. + +- :py:class:`OpenBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`OpenBlock2`: + Base-class for all :term:`block` classes. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: EndBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EndBlock + :parts: 1 + +.. autoclass:: BeginBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: BeginBlock + :parts: 1 + +.. autoclass:: DeclarativeRegion + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: DeclarativeRegion + :parts: 1 + +.. autoclass:: OpenBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: OpenBlock + :parts: 1 + +.. autoclass:: OpenBlock2 + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: OpenBlock2 + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.Sequential.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Sequential.rst.txt new file mode 100644 index 000000000..1aaa843df --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Sequential.rst.txt @@ -0,0 +1,24 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +============================== +pyVHDLParser.Blocks.Sequential +============================== + +.. automodule:: pyVHDLParser.Blocks.Sequential + + + +**Submodules** + +.. toctree:: + :maxdepth: 1 + + pyVHDLParser.Blocks.Sequential.Function + pyVHDLParser.Blocks.Sequential.Package + pyVHDLParser.Blocks.Sequential.PackageBody + pyVHDLParser.Blocks.Sequential.Procedure + pyVHDLParser.Blocks.Sequential.Process + +.. currentmodule:: pyVHDLParser.Blocks.Sequential diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.Structural.Architecture.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Structural.Architecture.rst.txt new file mode 100644 index 000000000..87f072632 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Structural.Architecture.rst.txt @@ -0,0 +1,80 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +=========================================== +pyVHDLParser.Blocks.Structural.Architecture +=========================================== + +.. automodule:: pyVHDLParser.Blocks.Structural.Architecture + + +.. currentmodule:: pyVHDLParser.Blocks.Structural.Architecture + + +**Classes** + +- :py:class:`EndBlock`: + Base-class for blocks that are final in a fast-forward scanning. + +- :py:class:`BeginBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`DeclarativeRegion`: + Base-class for all concurrent declarative region blocks. + +- :py:class:`NameBlock`: + Base-class for all :term:`block` classes. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: EndBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EndBlock + :parts: 1 + +.. autoclass:: BeginBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: BeginBlock + :parts: 1 + +.. autoclass:: DeclarativeRegion + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: DeclarativeRegion + :parts: 1 + +.. autoclass:: NameBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: NameBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.Structural.Block.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Structural.Block.rst.txt new file mode 100644 index 000000000..a306e8361 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Structural.Block.rst.txt @@ -0,0 +1,80 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +==================================== +pyVHDLParser.Blocks.Structural.Block +==================================== + +.. automodule:: pyVHDLParser.Blocks.Structural.Block + + +.. currentmodule:: pyVHDLParser.Blocks.Structural.Block + + +**Classes** + +- :py:class:`EndBlock`: + Base-class for blocks that are final in a fast-forward scanning. + +- :py:class:`BeginBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`DeclarativeRegion`: + Base-class for all concurrent declarative region blocks. + +- :py:class:`NameBlock`: + Base-class for all :term:`block` classes. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: EndBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EndBlock + :parts: 1 + +.. autoclass:: BeginBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: BeginBlock + :parts: 1 + +.. autoclass:: DeclarativeRegion + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: DeclarativeRegion + :parts: 1 + +.. autoclass:: NameBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: NameBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.Structural.Component.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Structural.Component.rst.txt new file mode 100644 index 000000000..614a09707 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Structural.Component.rst.txt @@ -0,0 +1,52 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +======================================== +pyVHDLParser.Blocks.Structural.Component +======================================== + +.. automodule:: pyVHDLParser.Blocks.Structural.Component + + +.. currentmodule:: pyVHDLParser.Blocks.Structural.Component + + +**Classes** + +- :py:class:`NameBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`EndBlock`: + Base-class for blocks that are final in a fast-forward scanning. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: NameBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: NameBlock + :parts: 1 + +.. autoclass:: EndBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EndBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.Structural.Configuration.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Structural.Configuration.rst.txt new file mode 100644 index 000000000..422bcb03e --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Structural.Configuration.rst.txt @@ -0,0 +1,66 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +============================================ +pyVHDLParser.Blocks.Structural.Configuration +============================================ + +.. automodule:: pyVHDLParser.Blocks.Structural.Configuration + + +.. currentmodule:: pyVHDLParser.Blocks.Structural.Configuration + + +**Classes** + +- :py:class:`NameBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`EndBlock`: + Base-class for blocks that are final in a fast-forward scanning. + +- :py:class:`BeginBlock`: + Base-class for all :term:`block` classes. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: NameBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: NameBlock + :parts: 1 + +.. autoclass:: EndBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EndBlock + :parts: 1 + +.. autoclass:: BeginBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: BeginBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.Structural.Entity.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Structural.Entity.rst.txt new file mode 100644 index 000000000..a3e5b7b9f --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Structural.Entity.rst.txt @@ -0,0 +1,80 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +===================================== +pyVHDLParser.Blocks.Structural.Entity +===================================== + +.. automodule:: pyVHDLParser.Blocks.Structural.Entity + + +.. currentmodule:: pyVHDLParser.Blocks.Structural.Entity + + +**Classes** + +- :py:class:`EndBlock`: + Base-class for blocks that are final in a fast-forward scanning. + +- :py:class:`BeginBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`DeclarativeRegion`: + Base-class for all concurrent declarative region blocks. + +- :py:class:`NameBlock`: + Base-class for all :term:`block` classes. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: EndBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EndBlock + :parts: 1 + +.. autoclass:: BeginBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: BeginBlock + :parts: 1 + +.. autoclass:: DeclarativeRegion + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: DeclarativeRegion + :parts: 1 + +.. autoclass:: NameBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: NameBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.Structural.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Structural.rst.txt new file mode 100644 index 000000000..8b9d2147f --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Structural.rst.txt @@ -0,0 +1,24 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +============================== +pyVHDLParser.Blocks.Structural +============================== + +.. automodule:: pyVHDLParser.Blocks.Structural + + + +**Submodules** + +.. toctree:: + :maxdepth: 1 + + pyVHDLParser.Blocks.Structural.Architecture + pyVHDLParser.Blocks.Structural.Block + pyVHDLParser.Blocks.Structural.Component + pyVHDLParser.Blocks.Structural.Configuration + pyVHDLParser.Blocks.Structural.Entity + +.. currentmodule:: pyVHDLParser.Blocks.Structural diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.Type.ResolutionIndication.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Type.ResolutionIndication.rst.txt new file mode 100644 index 000000000..5107596da --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Type.ResolutionIndication.rst.txt @@ -0,0 +1,66 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +============================================= +pyVHDLParser.Blocks.Type.ResolutionIndication +============================================= + +.. automodule:: pyVHDLParser.Blocks.Type.ResolutionIndication + + +.. currentmodule:: pyVHDLParser.Blocks.Type.ResolutionIndication + + +**Classes** + +- :py:class:`SimpleResolutionIndicationBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`ArrayResolutionIndicationBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`RecordResolutionIndicationBlock`: + Base-class for all :term:`block` classes. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: SimpleResolutionIndicationBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: SimpleResolutionIndicationBlock + :parts: 1 + +.. autoclass:: ArrayResolutionIndicationBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ArrayResolutionIndicationBlock + :parts: 1 + +.. autoclass:: RecordResolutionIndicationBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: RecordResolutionIndicationBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.Type.Subtype.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Type.Subtype.rst.txt new file mode 100644 index 000000000..70719ca86 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Type.Subtype.rst.txt @@ -0,0 +1,38 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +================================ +pyVHDLParser.Blocks.Type.Subtype +================================ + +.. automodule:: pyVHDLParser.Blocks.Type.Subtype + + +.. currentmodule:: pyVHDLParser.Blocks.Type.Subtype + + +**Classes** + +- :py:class:`SubtypeBlock`: + Base-class for all :term:`block` classes. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: SubtypeBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: SubtypeBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.Type.SubtypeIndication.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Type.SubtypeIndication.rst.txt new file mode 100644 index 000000000..594e5d3e3 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Type.SubtypeIndication.rst.txt @@ -0,0 +1,66 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +========================================== +pyVHDLParser.Blocks.Type.SubtypeIndication +========================================== + +.. automodule:: pyVHDLParser.Blocks.Type.SubtypeIndication + + +.. currentmodule:: pyVHDLParser.Blocks.Type.SubtypeIndication + + +**Classes** + +- :py:class:`SubtypeIndicationBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`ArrayConstrainedSubtypeIndicationBlock`: + Base-class for all :term:`block` classes. + +- :py:class:`RecordConstrainedSubtypeIndicationBlock`: + Base-class for all :term:`block` classes. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: SubtypeIndicationBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: SubtypeIndicationBlock + :parts: 1 + +.. autoclass:: ArrayConstrainedSubtypeIndicationBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ArrayConstrainedSubtypeIndicationBlock + :parts: 1 + +.. autoclass:: RecordConstrainedSubtypeIndicationBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: RecordConstrainedSubtypeIndicationBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.Type.Type.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Type.Type.rst.txt new file mode 100644 index 000000000..6a76adfcf --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Type.Type.rst.txt @@ -0,0 +1,38 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +============================= +pyVHDLParser.Blocks.Type.Type +============================= + +.. automodule:: pyVHDLParser.Blocks.Type.Type + + +.. currentmodule:: pyVHDLParser.Blocks.Type.Type + + +**Classes** + +- :py:class:`TypeBlock`: + Base-class for all :term:`block` classes. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: TypeBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: TypeBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.Type.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Type.rst.txt new file mode 100644 index 000000000..64dfaabe4 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.Type.rst.txt @@ -0,0 +1,23 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +======================== +pyVHDLParser.Blocks.Type +======================== + +.. automodule:: pyVHDLParser.Blocks.Type + + + +**Submodules** + +.. toctree:: + :maxdepth: 1 + + pyVHDLParser.Blocks.Type.ResolutionIndication + pyVHDLParser.Blocks.Type.Subtype + pyVHDLParser.Blocks.Type.SubtypeIndication + pyVHDLParser.Blocks.Type.Type + +.. currentmodule:: pyVHDLParser.Blocks.Type diff --git a/_sources/pyVHDLParser/pyVHDLParser.Blocks.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Blocks.rst.txt new file mode 100644 index 000000000..81f0e7806 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Blocks.rst.txt @@ -0,0 +1,267 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +=================== +pyVHDLParser.Blocks +=================== + +.. automodule:: pyVHDLParser.Blocks + + + +**Submodules** + +.. toctree:: + :maxdepth: 1 + + pyVHDLParser.Blocks.Assignment + pyVHDLParser.Blocks.Attribute + pyVHDLParser.Blocks.Comment + pyVHDLParser.Blocks.Common + pyVHDLParser.Blocks.ControlStructure + pyVHDLParser.Blocks.Exception + pyVHDLParser.Blocks.Expression + pyVHDLParser.Blocks.Generate + pyVHDLParser.Blocks.Generic + pyVHDLParser.Blocks.Generic1 + pyVHDLParser.Blocks.Instantiation + pyVHDLParser.Blocks.InterfaceObject + pyVHDLParser.Blocks.List + pyVHDLParser.Blocks.Object + pyVHDLParser.Blocks.Reference + pyVHDLParser.Blocks.Reporting + pyVHDLParser.Blocks.Sequential + pyVHDLParser.Blocks.Structural + pyVHDLParser.Blocks.Type + +.. currentmodule:: pyVHDLParser.Blocks + + +**Exceptions** + +- :py:exc:`BlockParserException`: + Base-class for exceptions when reading tokens and generating blocks. + + + +**Classes** + +- :py:class:`TokenToBlockParser`: + Represents the current state of a token-to-block parser. + +- :py:class:`MetaBlock`: + A :term:`meta-class` to construct *Block* classes. + +- :py:class:`BlockIterator`: + Undocumented. + +- :py:class:`BlockReverseIterator`: + Undocumented. + +- :py:class:`Block`: + Base-class for all :term:`block` classes. + +- :py:class:`SkipableBlock`: + Base-class for blocks that can be skipped in fast-forward scanning. + +- :py:class:`FinalBlock`: + Base-class for blocks that are final in a fast-forward scanning. + +- :py:class:`CommentBlock`: + Base-class for all comment blocks. + +- :py:class:`StartOfBlock`: + Base-class for a first block in a sequence of double-linked blocks. + +- :py:class:`EndOfBlock`: + Base-class for a last block in a sequence of double-linked blocks. + +- :py:class:`StartOfDocumentBlock`: + First block in a sequence of double-linked blocks. + +- :py:class:`EndOfDocumentBlock`: + Last block in a sequence of double-linked blocks. + +- :py:class:`StartOfSnippetBlock`: + Base-class for a first block in a sequence of double-linked blocks. + +- :py:class:`EndOfSnippetBlock`: + Base-class for a last block in a sequence of double-linked blocks. + + + +--------------------- + +**Exceptions** + + + + +.. autoexception:: BlockParserException + + .. rubric:: Inheritance + .. inheritance-diagram:: BlockParserException + :parts: 1 + + +--------------------- + +**Classes** + + + + +.. autoclass:: TokenToBlockParser + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: TokenToBlockParser + :parts: 1 + +.. autoclass:: MetaBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: MetaBlock + :parts: 1 + +.. autoclass:: BlockIterator + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: BlockIterator + :parts: 1 + +.. autoclass:: BlockReverseIterator + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: BlockReverseIterator + :parts: 1 + +.. autoclass:: Block + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: Block + :parts: 1 + +.. autoclass:: SkipableBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: SkipableBlock + :parts: 1 + +.. autoclass:: FinalBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: FinalBlock + :parts: 1 + +.. autoclass:: CommentBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: CommentBlock + :parts: 1 + +.. autoclass:: StartOfBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: StartOfBlock + :parts: 1 + +.. autoclass:: EndOfBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EndOfBlock + :parts: 1 + +.. autoclass:: StartOfDocumentBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: StartOfDocumentBlock + :parts: 1 + +.. autoclass:: EndOfDocumentBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EndOfDocumentBlock + :parts: 1 + +.. autoclass:: StartOfSnippetBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: StartOfSnippetBlock + :parts: 1 + +.. autoclass:: EndOfSnippetBlock + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EndOfSnippetBlock + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.CLI.ANTLR.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.CLI.ANTLR.rst.txt new file mode 100644 index 000000000..8fc7f1149 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.CLI.ANTLR.rst.txt @@ -0,0 +1,12 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +====================== +pyVHDLParser.CLI.ANTLR +====================== + +.. automodule:: pyVHDLParser.CLI.ANTLR + + +.. currentmodule:: pyVHDLParser.CLI.ANTLR diff --git a/_sources/pyVHDLParser/pyVHDLParser.CLI.Block.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.CLI.Block.rst.txt new file mode 100644 index 000000000..2a9356f51 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.CLI.Block.rst.txt @@ -0,0 +1,12 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +====================== +pyVHDLParser.CLI.Block +====================== + +.. automodule:: pyVHDLParser.CLI.Block + + +.. currentmodule:: pyVHDLParser.CLI.Block diff --git a/_sources/pyVHDLParser/pyVHDLParser.CLI.CodeDOM.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.CLI.CodeDOM.rst.txt new file mode 100644 index 000000000..1dc2391b9 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.CLI.CodeDOM.rst.txt @@ -0,0 +1,12 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +======================== +pyVHDLParser.CLI.CodeDOM +======================== + +.. automodule:: pyVHDLParser.CLI.CodeDOM + + +.. currentmodule:: pyVHDLParser.CLI.CodeDOM diff --git a/_sources/pyVHDLParser/pyVHDLParser.CLI.GraphML.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.CLI.GraphML.rst.txt new file mode 100644 index 000000000..b37f76cdc --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.CLI.GraphML.rst.txt @@ -0,0 +1,12 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +======================== +pyVHDLParser.CLI.GraphML +======================== + +.. automodule:: pyVHDLParser.CLI.GraphML + + +.. currentmodule:: pyVHDLParser.CLI.GraphML diff --git a/_sources/pyVHDLParser/pyVHDLParser.CLI.Group.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.CLI.Group.rst.txt new file mode 100644 index 000000000..508eca506 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.CLI.Group.rst.txt @@ -0,0 +1,12 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +====================== +pyVHDLParser.CLI.Group +====================== + +.. automodule:: pyVHDLParser.CLI.Group + + +.. currentmodule:: pyVHDLParser.CLI.Group diff --git a/_sources/pyVHDLParser/pyVHDLParser.CLI.Token.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.CLI.Token.rst.txt new file mode 100644 index 000000000..f2d5d7d8d --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.CLI.Token.rst.txt @@ -0,0 +1,12 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +====================== +pyVHDLParser.CLI.Token +====================== + +.. automodule:: pyVHDLParser.CLI.Token + + +.. currentmodule:: pyVHDLParser.CLI.Token diff --git a/_sources/pyVHDLParser/pyVHDLParser.CLI.VHDLParser.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.CLI.VHDLParser.rst.txt new file mode 100644 index 000000000..786c13696 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.CLI.VHDLParser.rst.txt @@ -0,0 +1,53 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +=========================== +pyVHDLParser.CLI.VHDLParser +=========================== + +.. automodule:: pyVHDLParser.CLI.VHDLParser + + +.. currentmodule:: pyVHDLParser.CLI.VHDLParser + + +**Functions** + +- :py:func:`printImportError`: + Undocumented. + + + +**Classes** + +- :py:class:`Application`: + A mixin class (interface) to provide class-local terminal writing methods. + + + +--------------------- + +**Functions** + + +.. autofunction:: printImportError + + +--------------------- + +**Classes** + + + + +.. autoclass:: Application + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: Application + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.CLI.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.CLI.rst.txt new file mode 100644 index 000000000..30ddfa5da --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.CLI.rst.txt @@ -0,0 +1,26 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +================ +pyVHDLParser.CLI +================ + +.. automodule:: pyVHDLParser.CLI + + + +**Submodules** + +.. toctree:: + :maxdepth: 1 + + pyVHDLParser.CLI.ANTLR + pyVHDLParser.CLI.Block + pyVHDLParser.CLI.CodeDOM + pyVHDLParser.CLI.GraphML + pyVHDLParser.CLI.Group + pyVHDLParser.CLI.Token + pyVHDLParser.CLI.VHDLParser + +.. currentmodule:: pyVHDLParser.CLI diff --git a/_sources/pyVHDLParser/pyVHDLParser.Decorators.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Decorators.rst.txt new file mode 100644 index 000000000..a9b62e6e8 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Decorators.rst.txt @@ -0,0 +1,11 @@ +.. # Template created by Patrick Lehmann + +Python Class Reference +###################### + +Reference of all packages and modules: + +.. automodule:: pyVHDLParser.Decorators + +.. toctree:: + :maxdepth: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.DocumentModel.DesignUnit.Architecture.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.DocumentModel.DesignUnit.Architecture.rst.txt new file mode 100644 index 000000000..d81c3cf0d --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.DocumentModel.DesignUnit.Architecture.rst.txt @@ -0,0 +1,38 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +================================================== +pyVHDLParser.DocumentModel.DesignUnit.Architecture +================================================== + +.. automodule:: pyVHDLParser.DocumentModel.DesignUnit.Architecture + + +.. currentmodule:: pyVHDLParser.DocumentModel.DesignUnit.Architecture + + +**Classes** + +- :py:class:`Architecture`: + A ``SecondaryUnit`` is a base-class for all secondary units. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: Architecture + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: Architecture + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.DocumentModel.DesignUnit.Context.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.DocumentModel.DesignUnit.Context.rst.txt new file mode 100644 index 000000000..5815f6846 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.DocumentModel.DesignUnit.Context.rst.txt @@ -0,0 +1,38 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +============================================= +pyVHDLParser.DocumentModel.DesignUnit.Context +============================================= + +.. automodule:: pyVHDLParser.DocumentModel.DesignUnit.Context + + +.. currentmodule:: pyVHDLParser.DocumentModel.DesignUnit.Context + + +**Classes** + +- :py:class:`Context`: + A ``PrimaryUnit`` is a base-class for all primary units. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: Context + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: Context + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.DocumentModel.DesignUnit.Entity.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.DocumentModel.DesignUnit.Entity.rst.txt new file mode 100644 index 000000000..e93cfcf5a --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.DocumentModel.DesignUnit.Entity.rst.txt @@ -0,0 +1,38 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +============================================ +pyVHDLParser.DocumentModel.DesignUnit.Entity +============================================ + +.. automodule:: pyVHDLParser.DocumentModel.DesignUnit.Entity + + +.. currentmodule:: pyVHDLParser.DocumentModel.DesignUnit.Entity + + +**Classes** + +- :py:class:`Entity`: + A ``PrimaryUnit`` is a base-class for all primary units. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: Entity + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: Entity + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.DocumentModel.DesignUnit.Package.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.DocumentModel.DesignUnit.Package.rst.txt new file mode 100644 index 000000000..518d713c8 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.DocumentModel.DesignUnit.Package.rst.txt @@ -0,0 +1,38 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +============================================= +pyVHDLParser.DocumentModel.DesignUnit.Package +============================================= + +.. automodule:: pyVHDLParser.DocumentModel.DesignUnit.Package + + +.. currentmodule:: pyVHDLParser.DocumentModel.DesignUnit.Package + + +**Classes** + +- :py:class:`Package`: + A ``PrimaryUnit`` is a base-class for all primary units. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: Package + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: Package + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.DocumentModel.DesignUnit.PackageBody.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.DocumentModel.DesignUnit.PackageBody.rst.txt new file mode 100644 index 000000000..c128c27e0 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.DocumentModel.DesignUnit.PackageBody.rst.txt @@ -0,0 +1,38 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +================================================= +pyVHDLParser.DocumentModel.DesignUnit.PackageBody +================================================= + +.. automodule:: pyVHDLParser.DocumentModel.DesignUnit.PackageBody + + +.. currentmodule:: pyVHDLParser.DocumentModel.DesignUnit.PackageBody + + +**Classes** + +- :py:class:`PackageBody`: + A ``SecondaryUnit`` is a base-class for all secondary units. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: PackageBody + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: PackageBody + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.DocumentModel.DesignUnit.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.DocumentModel.DesignUnit.rst.txt new file mode 100644 index 000000000..b667a1ca7 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.DocumentModel.DesignUnit.rst.txt @@ -0,0 +1,24 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +===================================== +pyVHDLParser.DocumentModel.DesignUnit +===================================== + +.. automodule:: pyVHDLParser.DocumentModel.DesignUnit + + + +**Submodules** + +.. toctree:: + :maxdepth: 1 + + pyVHDLParser.DocumentModel.DesignUnit.Architecture + pyVHDLParser.DocumentModel.DesignUnit.Context + pyVHDLParser.DocumentModel.DesignUnit.Entity + pyVHDLParser.DocumentModel.DesignUnit.Package + pyVHDLParser.DocumentModel.DesignUnit.PackageBody + +.. currentmodule:: pyVHDLParser.DocumentModel.DesignUnit diff --git a/_sources/pyVHDLParser/pyVHDLParser.DocumentModel.ObjectDeclaration.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.DocumentModel.ObjectDeclaration.rst.txt new file mode 100644 index 000000000..e583b2882 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.DocumentModel.ObjectDeclaration.rst.txt @@ -0,0 +1,12 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +============================================ +pyVHDLParser.DocumentModel.ObjectDeclaration +============================================ + +.. automodule:: pyVHDLParser.DocumentModel.ObjectDeclaration + + +.. currentmodule:: pyVHDLParser.DocumentModel.ObjectDeclaration diff --git a/_sources/pyVHDLParser/pyVHDLParser.DocumentModel.Reference.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.DocumentModel.Reference.rst.txt new file mode 100644 index 000000000..867540143 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.DocumentModel.Reference.rst.txt @@ -0,0 +1,12 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +==================================== +pyVHDLParser.DocumentModel.Reference +==================================== + +.. automodule:: pyVHDLParser.DocumentModel.Reference + + +.. currentmodule:: pyVHDLParser.DocumentModel.Reference diff --git a/_sources/pyVHDLParser/pyVHDLParser.DocumentModel.Sequential.Function.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.DocumentModel.Sequential.Function.rst.txt new file mode 100644 index 000000000..063de33e3 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.DocumentModel.Sequential.Function.rst.txt @@ -0,0 +1,12 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +============================================== +pyVHDLParser.DocumentModel.Sequential.Function +============================================== + +.. automodule:: pyVHDLParser.DocumentModel.Sequential.Function + + +.. currentmodule:: pyVHDLParser.DocumentModel.Sequential.Function diff --git a/_sources/pyVHDLParser/pyVHDLParser.DocumentModel.Sequential.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.DocumentModel.Sequential.rst.txt new file mode 100644 index 000000000..a692fe28b --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.DocumentModel.Sequential.rst.txt @@ -0,0 +1,20 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +===================================== +pyVHDLParser.DocumentModel.Sequential +===================================== + +.. automodule:: pyVHDLParser.DocumentModel.Sequential + + + +**Submodules** + +.. toctree:: + :maxdepth: 1 + + pyVHDLParser.DocumentModel.Sequential.Function + +.. currentmodule:: pyVHDLParser.DocumentModel.Sequential diff --git a/_sources/pyVHDLParser/pyVHDLParser.DocumentModel.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.DocumentModel.rst.txt new file mode 100644 index 000000000..5d5ff7451 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.DocumentModel.rst.txt @@ -0,0 +1,70 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +========================== +pyVHDLParser.DocumentModel +========================== + +.. automodule:: pyVHDLParser.DocumentModel + + + +**Submodules** + +.. toctree:: + :maxdepth: 1 + + pyVHDLParser.DocumentModel.DesignUnit + pyVHDLParser.DocumentModel.ObjectDeclaration + pyVHDLParser.DocumentModel.Reference + pyVHDLParser.DocumentModel.Sequential + +.. currentmodule:: pyVHDLParser.DocumentModel + + +**Exceptions** + +- :py:exc:`DOMParserException`: + Common base class for all non-exit exceptions. + + + +**Classes** + +- :py:class:`Document`: + A ``Document`` represents a sourcefile. It contains *primary* and *secondary* design units. + + + +--------------------- + +**Exceptions** + + + + +.. autoexception:: DOMParserException + + .. rubric:: Inheritance + .. inheritance-diagram:: DOMParserException + :parts: 1 + + +--------------------- + +**Classes** + + + + +.. autoclass:: Document + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: Document + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Filters.Comment.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Filters.Comment.rst.txt new file mode 100644 index 000000000..625762a69 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Filters.Comment.rst.txt @@ -0,0 +1,12 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +============================ +pyVHDLParser.Filters.Comment +============================ + +.. automodule:: pyVHDLParser.Filters.Comment + + +.. currentmodule:: pyVHDLParser.Filters.Comment diff --git a/_sources/pyVHDLParser/pyVHDLParser.Filters.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Filters.rst.txt new file mode 100644 index 000000000..d6442fe95 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Filters.rst.txt @@ -0,0 +1,20 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +==================== +pyVHDLParser.Filters +==================== + +.. automodule:: pyVHDLParser.Filters + + + +**Submodules** + +.. toctree:: + :maxdepth: 1 + + pyVHDLParser.Filters.Comment + +.. currentmodule:: pyVHDLParser.Filters diff --git a/_sources/pyVHDLParser/pyVHDLParser.Groups.Comment.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Groups.Comment.rst.txt new file mode 100644 index 000000000..1b8b94662 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Groups.Comment.rst.txt @@ -0,0 +1,52 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +=========================== +pyVHDLParser.Groups.Comment +=========================== + +.. automodule:: pyVHDLParser.Groups.Comment + + +.. currentmodule:: pyVHDLParser.Groups.Comment + + +**Classes** + +- :py:class:`CommentGroup`: + Undocumented. + +- :py:class:`WhitespaceGroup`: + Undocumented. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: CommentGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: CommentGroup + :parts: 1 + +.. autoclass:: WhitespaceGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: WhitespaceGroup + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Groups.Concurrent.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Groups.Concurrent.rst.txt new file mode 100644 index 000000000..91d876df8 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Groups.Concurrent.rst.txt @@ -0,0 +1,66 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +============================== +pyVHDLParser.Groups.Concurrent +============================== + +.. automodule:: pyVHDLParser.Groups.Concurrent + + +.. currentmodule:: pyVHDLParser.Groups.Concurrent + + +**Classes** + +- :py:class:`AssertGroup`: + Undocumented. + +- :py:class:`ReportGroup`: + Undocumented. + +- :py:class:`SignalAssignmentGroup`: + Undocumented. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: AssertGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: AssertGroup + :parts: 1 + +.. autoclass:: ReportGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ReportGroup + :parts: 1 + +.. autoclass:: SignalAssignmentGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: SignalAssignmentGroup + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Groups.DesignUnit.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Groups.DesignUnit.rst.txt new file mode 100644 index 000000000..6055edfb7 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Groups.DesignUnit.rst.txt @@ -0,0 +1,122 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +============================== +pyVHDLParser.Groups.DesignUnit +============================== + +.. automodule:: pyVHDLParser.Groups.DesignUnit + + +.. currentmodule:: pyVHDLParser.Groups.DesignUnit + + +**Classes** + +- :py:class:`ContextGroup`: + Undocumented. + +- :py:class:`EntityGroup`: + Undocumented. + +- :py:class:`ArchitectureGroup`: + Undocumented. + +- :py:class:`PackageGroup`: + Undocumented. + +- :py:class:`PackageBodyGroup`: + Undocumented. + +- :py:class:`ComponentGroup`: + Undocumented. + +- :py:class:`ConfigurationGroup`: + Undocumented. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: ContextGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ContextGroup + :parts: 1 + +.. autoclass:: EntityGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EntityGroup + :parts: 1 + +.. autoclass:: ArchitectureGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ArchitectureGroup + :parts: 1 + +.. autoclass:: PackageGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: PackageGroup + :parts: 1 + +.. autoclass:: PackageBodyGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: PackageBodyGroup + :parts: 1 + +.. autoclass:: ComponentGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ComponentGroup + :parts: 1 + +.. autoclass:: ConfigurationGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ConfigurationGroup + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Groups.List.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Groups.List.rst.txt new file mode 100644 index 000000000..63da644ba --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Groups.List.rst.txt @@ -0,0 +1,220 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +======================== +pyVHDLParser.Groups.List +======================== + +.. automodule:: pyVHDLParser.Groups.List + + +.. currentmodule:: pyVHDLParser.Groups.List + + +**Classes** + +- :py:class:`GenericListGroup`: + Undocumented. + +- :py:class:`GenericListItemGroup`: + Undocumented. + +- :py:class:`GenericMapGroup`: + Undocumented. + +- :py:class:`GenericMapItemGroup`: + Undocumented. + +- :py:class:`PortListGroup`: + Undocumented. + +- :py:class:`PortListItemGroup`: + Undocumented. + +- :py:class:`PortMapGroup`: + Undocumented. + +- :py:class:`PortMapItemGroup`: + Undocumented. + +- :py:class:`ParameterListGroup`: + Undocumented. + +- :py:class:`ParameterListItemGroup`: + Undocumented. + +- :py:class:`ParameterMapGroup`: + Undocumented. + +- :py:class:`ParameterMapItemGroup`: + Undocumented. + +- :py:class:`SensitivityListGroup`: + Undocumented. + +- :py:class:`SensitivityListItemGroup`: + Undocumented. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: GenericListGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: GenericListGroup + :parts: 1 + +.. autoclass:: GenericListItemGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: GenericListItemGroup + :parts: 1 + +.. autoclass:: GenericMapGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: GenericMapGroup + :parts: 1 + +.. autoclass:: GenericMapItemGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: GenericMapItemGroup + :parts: 1 + +.. autoclass:: PortListGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: PortListGroup + :parts: 1 + +.. autoclass:: PortListItemGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: PortListItemGroup + :parts: 1 + +.. autoclass:: PortMapGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: PortMapGroup + :parts: 1 + +.. autoclass:: PortMapItemGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: PortMapItemGroup + :parts: 1 + +.. autoclass:: ParameterListGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ParameterListGroup + :parts: 1 + +.. autoclass:: ParameterListItemGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ParameterListItemGroup + :parts: 1 + +.. autoclass:: ParameterMapGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ParameterMapGroup + :parts: 1 + +.. autoclass:: ParameterMapItemGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ParameterMapItemGroup + :parts: 1 + +.. autoclass:: SensitivityListGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: SensitivityListGroup + :parts: 1 + +.. autoclass:: SensitivityListItemGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: SensitivityListItemGroup + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Groups.Object.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Groups.Object.rst.txt new file mode 100644 index 000000000..6fbd8d742 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Groups.Object.rst.txt @@ -0,0 +1,66 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +========================== +pyVHDLParser.Groups.Object +========================== + +.. automodule:: pyVHDLParser.Groups.Object + + +.. currentmodule:: pyVHDLParser.Groups.Object + + +**Classes** + +- :py:class:`ConstantGroup`: + Undocumented. + +- :py:class:`VariableGroup`: + Undocumented. + +- :py:class:`SignalGroup`: + Undocumented. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: ConstantGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ConstantGroup + :parts: 1 + +.. autoclass:: VariableGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: VariableGroup + :parts: 1 + +.. autoclass:: SignalGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: SignalGroup + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Groups.Reference.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Groups.Reference.rst.txt new file mode 100644 index 000000000..a6c80052d --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Groups.Reference.rst.txt @@ -0,0 +1,52 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +============================= +pyVHDLParser.Groups.Reference +============================= + +.. automodule:: pyVHDLParser.Groups.Reference + + +.. currentmodule:: pyVHDLParser.Groups.Reference + + +**Classes** + +- :py:class:`LibraryGroup`: + Undocumented. + +- :py:class:`UseGroup`: + Undocumented. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: LibraryGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: LibraryGroup + :parts: 1 + +.. autoclass:: UseGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: UseGroup + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Groups.Sequential.Function.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Groups.Sequential.Function.rst.txt new file mode 100644 index 000000000..b18b0c18b --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Groups.Sequential.Function.rst.txt @@ -0,0 +1,52 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +======================================= +pyVHDLParser.Groups.Sequential.Function +======================================= + +.. automodule:: pyVHDLParser.Groups.Sequential.Function + + +.. currentmodule:: pyVHDLParser.Groups.Sequential.Function + + +**Classes** + +- :py:class:`FunctionGroup`: + Undocumented. + +- :py:class:`ReturnTypeGroup`: + Undocumented. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: FunctionGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: FunctionGroup + :parts: 1 + +.. autoclass:: ReturnTypeGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ReturnTypeGroup + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Groups.Sequential.Procedure.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Groups.Sequential.Procedure.rst.txt new file mode 100644 index 000000000..1ad8f0e1f --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Groups.Sequential.Procedure.rst.txt @@ -0,0 +1,38 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +======================================== +pyVHDLParser.Groups.Sequential.Procedure +======================================== + +.. automodule:: pyVHDLParser.Groups.Sequential.Procedure + + +.. currentmodule:: pyVHDLParser.Groups.Sequential.Procedure + + +**Classes** + +- :py:class:`ProcedureGroup`: + Undocumented. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: ProcedureGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ProcedureGroup + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Groups.Sequential.Process.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Groups.Sequential.Process.rst.txt new file mode 100644 index 000000000..e4dde795b --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Groups.Sequential.Process.rst.txt @@ -0,0 +1,220 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +====================================== +pyVHDLParser.Groups.Sequential.Process +====================================== + +.. automodule:: pyVHDLParser.Groups.Sequential.Process + + +.. currentmodule:: pyVHDLParser.Groups.Sequential.Process + + +**Classes** + +- :py:class:`ProcessGroup`: + Undocumented. + +- :py:class:`IfGroup`: + Undocumented. + +- :py:class:`IfBranchGroup`: + Undocumented. + +- :py:class:`ElsIfBranchGroup`: + Undocumented. + +- :py:class:`ElseBranchGroup`: + Undocumented. + +- :py:class:`CaseGroup`: + Undocumented. + +- :py:class:`ChoiceGroup`: + Undocumented. + +- :py:class:`ForLoopGroup`: + Undocumented. + +- :py:class:`WhileLoopGroup`: + Undocumented. + +- :py:class:`NextGroup`: + Undocumented. + +- :py:class:`ExitGroup`: + Undocumented. + +- :py:class:`ReturnGroup`: + Undocumented. + +- :py:class:`VariableAssignmentGroup`: + Undocumented. + +- :py:class:`SignalAssignmentGroup`: + Undocumented. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: ProcessGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ProcessGroup + :parts: 1 + +.. autoclass:: IfGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: IfGroup + :parts: 1 + +.. autoclass:: IfBranchGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: IfBranchGroup + :parts: 1 + +.. autoclass:: ElsIfBranchGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ElsIfBranchGroup + :parts: 1 + +.. autoclass:: ElseBranchGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ElseBranchGroup + :parts: 1 + +.. autoclass:: CaseGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: CaseGroup + :parts: 1 + +.. autoclass:: ChoiceGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ChoiceGroup + :parts: 1 + +.. autoclass:: ForLoopGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ForLoopGroup + :parts: 1 + +.. autoclass:: WhileLoopGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: WhileLoopGroup + :parts: 1 + +.. autoclass:: NextGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: NextGroup + :parts: 1 + +.. autoclass:: ExitGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ExitGroup + :parts: 1 + +.. autoclass:: ReturnGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ReturnGroup + :parts: 1 + +.. autoclass:: VariableAssignmentGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: VariableAssignmentGroup + :parts: 1 + +.. autoclass:: SignalAssignmentGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: SignalAssignmentGroup + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Groups.Sequential.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Groups.Sequential.rst.txt new file mode 100644 index 000000000..33bc8e9b4 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Groups.Sequential.rst.txt @@ -0,0 +1,22 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +============================== +pyVHDLParser.Groups.Sequential +============================== + +.. automodule:: pyVHDLParser.Groups.Sequential + + + +**Submodules** + +.. toctree:: + :maxdepth: 1 + + pyVHDLParser.Groups.Sequential.Function + pyVHDLParser.Groups.Sequential.Procedure + pyVHDLParser.Groups.Sequential.Process + +.. currentmodule:: pyVHDLParser.Groups.Sequential diff --git a/_sources/pyVHDLParser/pyVHDLParser.Groups.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Groups.rst.txt new file mode 100644 index 000000000..b8b5984b5 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Groups.rst.txt @@ -0,0 +1,199 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +=================== +pyVHDLParser.Groups +=================== + +.. automodule:: pyVHDLParser.Groups + + + +**Submodules** + +.. toctree:: + :maxdepth: 1 + + pyVHDLParser.Groups.Comment + pyVHDLParser.Groups.Concurrent + pyVHDLParser.Groups.DesignUnit + pyVHDLParser.Groups.List + pyVHDLParser.Groups.Object + pyVHDLParser.Groups.Reference + pyVHDLParser.Groups.Sequential + +.. currentmodule:: pyVHDLParser.Groups + + +**Exceptions** + +- :py:exc:`GroupParserException`: + Common base class for all non-exit exceptions. + + + +**Classes** + +- :py:class:`BlockIterator`: + Undocumented. + +- :py:class:`BlockToGroupParser`: + Represents the current state of a block-to-group parser. + +- :py:class:`MetaGroup`: + Register all state*** methods in an array called '__STATES__' + +- :py:class:`Group`: + Undocumented. + +- :py:class:`StartOfGroup`: + Undocumented. + +- :py:class:`EndOfGroup`: + Undocumented. + +- :py:class:`StartOfDocumentGroup`: + Base-class (mixin) for all StartOf***Document classes. + +- :py:class:`EndOfDocumentGroup`: + Base-class (mixin) for all EndOf***Document classes. + +- :py:class:`StartOfSnippetGroup`: + Base-class (mixin) for all StartOf***Snippet classes. + +- :py:class:`EndOfSnippetGroup`: + Base-class (mixin) for all EndOf***Snippet classes. + + + +--------------------- + +**Exceptions** + + + + +.. autoexception:: GroupParserException + + .. rubric:: Inheritance + .. inheritance-diagram:: GroupParserException + :parts: 1 + + +--------------------- + +**Classes** + + + + +.. autoclass:: BlockIterator + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: BlockIterator + :parts: 1 + +.. autoclass:: BlockToGroupParser + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: BlockToGroupParser + :parts: 1 + +.. autoclass:: MetaGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: MetaGroup + :parts: 1 + +.. autoclass:: Group + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: Group + :parts: 1 + +.. autoclass:: StartOfGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: StartOfGroup + :parts: 1 + +.. autoclass:: EndOfGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EndOfGroup + :parts: 1 + +.. autoclass:: StartOfDocumentGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: StartOfDocumentGroup + :parts: 1 + +.. autoclass:: EndOfDocumentGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EndOfDocumentGroup + :parts: 1 + +.. autoclass:: StartOfSnippetGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: StartOfSnippetGroup + :parts: 1 + +.. autoclass:: EndOfSnippetGroup + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EndOfSnippetGroup + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.LanguageModel.DesignUnit.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.LanguageModel.DesignUnit.rst.txt new file mode 100644 index 000000000..f6d143ff0 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.LanguageModel.DesignUnit.rst.txt @@ -0,0 +1,108 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +===================================== +pyVHDLParser.LanguageModel.DesignUnit +===================================== + +.. automodule:: pyVHDLParser.LanguageModel.DesignUnit + + +.. currentmodule:: pyVHDLParser.LanguageModel.DesignUnit + + +**Classes** + +- :py:class:`Context`: + A ``PrimaryUnit`` is a base-class for all primary units. + +- :py:class:`Entity`: + A ``PrimaryUnit`` is a base-class for all primary units. + +- :py:class:`Architecture`: + A ``SecondaryUnit`` is a base-class for all secondary units. + +- :py:class:`Configuration`: + A ``PrimaryUnit`` is a base-class for all primary units. + +- :py:class:`Package`: + A ``PrimaryUnit`` is a base-class for all primary units. + +- :py:class:`PackageBody`: + A ``SecondaryUnit`` is a base-class for all secondary units. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: Context + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: Context + :parts: 1 + +.. autoclass:: Entity + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: Entity + :parts: 1 + +.. autoclass:: Architecture + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: Architecture + :parts: 1 + +.. autoclass:: Configuration + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: Configuration + :parts: 1 + +.. autoclass:: Package + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: Package + :parts: 1 + +.. autoclass:: PackageBody + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: PackageBody + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.LanguageModel.Expression.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.LanguageModel.Expression.rst.txt new file mode 100644 index 000000000..5fdb7ee25 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.LanguageModel.Expression.rst.txt @@ -0,0 +1,12 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +===================================== +pyVHDLParser.LanguageModel.Expression +===================================== + +.. automodule:: pyVHDLParser.LanguageModel.Expression + + +.. currentmodule:: pyVHDLParser.LanguageModel.Expression diff --git a/_sources/pyVHDLParser/pyVHDLParser.LanguageModel.InterfaceItem.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.LanguageModel.InterfaceItem.rst.txt new file mode 100644 index 000000000..9d1845892 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.LanguageModel.InterfaceItem.rst.txt @@ -0,0 +1,12 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +======================================== +pyVHDLParser.LanguageModel.InterfaceItem +======================================== + +.. automodule:: pyVHDLParser.LanguageModel.InterfaceItem + + +.. currentmodule:: pyVHDLParser.LanguageModel.InterfaceItem diff --git a/_sources/pyVHDLParser/pyVHDLParser.LanguageModel.Reference.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.LanguageModel.Reference.rst.txt new file mode 100644 index 000000000..23dfebd0a --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.LanguageModel.Reference.rst.txt @@ -0,0 +1,12 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +==================================== +pyVHDLParser.LanguageModel.Reference +==================================== + +.. automodule:: pyVHDLParser.LanguageModel.Reference + + +.. currentmodule:: pyVHDLParser.LanguageModel.Reference diff --git a/_sources/pyVHDLParser/pyVHDLParser.LanguageModel.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.LanguageModel.rst.txt new file mode 100644 index 000000000..0baf0d590 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.LanguageModel.rst.txt @@ -0,0 +1,23 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +========================== +pyVHDLParser.LanguageModel +========================== + +.. automodule:: pyVHDLParser.LanguageModel + + + +**Submodules** + +.. toctree:: + :maxdepth: 1 + + pyVHDLParser.LanguageModel.DesignUnit + pyVHDLParser.LanguageModel.Expression + pyVHDLParser.LanguageModel.InterfaceItem + pyVHDLParser.LanguageModel.Reference + +.. currentmodule:: pyVHDLParser.LanguageModel diff --git a/_sources/pyVHDLParser/pyVHDLParser.NetlistModel.NetlistModel.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.NetlistModel.NetlistModel.rst.txt new file mode 100644 index 000000000..35525e759 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.NetlistModel.NetlistModel.rst.txt @@ -0,0 +1,80 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +====================================== +pyVHDLParser.NetlistModel.NetlistModel +====================================== + +.. automodule:: pyVHDLParser.NetlistModel.NetlistModel + + +.. currentmodule:: pyVHDLParser.NetlistModel.NetlistModel + + +**Classes** + +- :py:class:`ModelBase`: + Undocumented. + +- :py:class:`Netlist`: + Undocumented. + +- :py:class:`Wire`: + Undocumented. + +- :py:class:`Primitive`: + Undocumented. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: ModelBase + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ModelBase + :parts: 1 + +.. autoclass:: Netlist + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: Netlist + :parts: 1 + +.. autoclass:: Wire + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: Wire + :parts: 1 + +.. autoclass:: Primitive + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: Primitive + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.NetlistModel.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.NetlistModel.rst.txt new file mode 100644 index 000000000..43457f720 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.NetlistModel.rst.txt @@ -0,0 +1,20 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +========================= +pyVHDLParser.NetlistModel +========================= + +.. automodule:: pyVHDLParser.NetlistModel + + + +**Submodules** + +.. toctree:: + :maxdepth: 1 + + pyVHDLParser.NetlistModel.NetlistModel + +.. currentmodule:: pyVHDLParser.NetlistModel diff --git a/_sources/pyVHDLParser/pyVHDLParser.SimulationModel.EventSystem.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.SimulationModel.EventSystem.rst.txt new file mode 100644 index 000000000..9f7b6ad77 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.SimulationModel.EventSystem.rst.txt @@ -0,0 +1,108 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +======================================== +pyVHDLParser.SimulationModel.EventSystem +======================================== + +.. automodule:: pyVHDLParser.SimulationModel.EventSystem + + +.. currentmodule:: pyVHDLParser.SimulationModel.EventSystem + + +**Classes** + +- :py:class:`Scheduler`: + Undocumented. + +- :py:class:`Event`: + Undocumented. + +- :py:class:`Transaction`: + Undocumented. + +- :py:class:`TimeLine`: + Undocumented. + +- :py:class:`Waveform`: + Undocumented. + +- :py:class:`ProjectedWaveform`: + Undocumented. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: Scheduler + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: Scheduler + :parts: 1 + +.. autoclass:: Event + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: Event + :parts: 1 + +.. autoclass:: Transaction + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: Transaction + :parts: 1 + +.. autoclass:: TimeLine + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: TimeLine + :parts: 1 + +.. autoclass:: Waveform + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: Waveform + :parts: 1 + +.. autoclass:: ProjectedWaveform + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ProjectedWaveform + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.SimulationModel.SimulationModel.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.SimulationModel.SimulationModel.rst.txt new file mode 100644 index 000000000..1a54ed199 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.SimulationModel.SimulationModel.rst.txt @@ -0,0 +1,136 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +============================================ +pyVHDLParser.SimulationModel.SimulationModel +============================================ + +.. automodule:: pyVHDLParser.SimulationModel.SimulationModel + + +.. currentmodule:: pyVHDLParser.SimulationModel.SimulationModel + + +**Classes** + +- :py:class:`Simulation`: + Undocumented. + +- :py:class:`Path`: + Undocumented. + +- :py:class:`Signal`: + Undocumented. + +- :py:class:`Process`: + Undocumented. + +- :py:class:`Source`: + Undocumented. + +- :py:class:`Driver`: + Undocumented. + +- :py:class:`ResolutionFunction`: + Undocumented. + +- :py:class:`DrivingValue`: + Undocumented. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: Simulation + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: Simulation + :parts: 1 + +.. autoclass:: Path + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: Path + :parts: 1 + +.. autoclass:: Signal + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: Signal + :parts: 1 + +.. autoclass:: Process + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: Process + :parts: 1 + +.. autoclass:: Source + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: Source + :parts: 1 + +.. autoclass:: Driver + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: Driver + :parts: 1 + +.. autoclass:: ResolutionFunction + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ResolutionFunction + :parts: 1 + +.. autoclass:: DrivingValue + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: DrivingValue + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.SimulationModel.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.SimulationModel.rst.txt new file mode 100644 index 000000000..2a2cefef6 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.SimulationModel.rst.txt @@ -0,0 +1,21 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +============================ +pyVHDLParser.SimulationModel +============================ + +.. automodule:: pyVHDLParser.SimulationModel + + + +**Submodules** + +.. toctree:: + :maxdepth: 1 + + pyVHDLParser.SimulationModel.EventSystem + pyVHDLParser.SimulationModel.SimulationModel + +.. currentmodule:: pyVHDLParser.SimulationModel diff --git a/_sources/pyVHDLParser/pyVHDLParser.StyleChecks.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.StyleChecks.rst.txt new file mode 100644 index 000000000..07de20ec8 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.StyleChecks.rst.txt @@ -0,0 +1,12 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +======================== +pyVHDLParser.StyleChecks +======================== + +.. automodule:: pyVHDLParser.StyleChecks + + +.. currentmodule:: pyVHDLParser.StyleChecks diff --git a/_sources/pyVHDLParser/pyVHDLParser.Token.Keywords.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Token.Keywords.rst.txt new file mode 100644 index 000000000..2caca2d62 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Token.Keywords.rst.txt @@ -0,0 +1,2390 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +=========================== +pyVHDLParser.Token.Keywords +=========================== + +.. automodule:: pyVHDLParser.Token.Keywords + + +.. currentmodule:: pyVHDLParser.Token.Keywords + + +**Classes** + +- :py:class:`SpecificVHDLToken`: + Base-class for all specific tokens. + +- :py:class:`BoundaryToken`: + Token representing a boundary between (reserved) words. + +- :py:class:`BracketToken`: + Base-class for all bracket tokens: ``(``, ``)``, ``[``, ``]``, ``{``, ``}``, ``<`` and ``>``. + +- :py:class:`RoundBracketToken`: + Base-class for all round bracket tokens: ``(`` and ``)``. + +- :py:class:`OpeningRoundBracketToken`: + Token representing an opening round bracket: ``(``. + +- :py:class:`ClosingRoundBracketToken`: + Token representing a closing round bracket: ``)``. + +- :py:class:`SquareBracketToken`: + Base-class for all square bracket tokens: ``[`` and ``]``. + +- :py:class:`OpeningSquareBracketToken`: + Token representing an square round bracket: ``[``. + +- :py:class:`ClosingSquareBracketToken`: + Token representing a closing square bracket: ``]``. + +- :py:class:`CurlyBracketToken`: + Base-class for all curly bracket tokens: ``{`` and ``}``. + +- :py:class:`OpeningCurlyBracketToken`: + Token representing an opening curly bracket: ``{``. + +- :py:class:`ClosingCurlyBracketToken`: + Token representing a closing curly bracket: ``}``. + +- :py:class:`AngleBracketToken`: + Base-class for all angle bracket tokens: ``<`` and ``>``. + +- :py:class:`OpeningAngleBracketToken`: + Token representing an opening angle bracket: ``<``. + +- :py:class:`ClosingAngleBracketToken`: + Token representing a closing angle bracket: ``>``. + +- :py:class:`OperatorToken`: + Base-class for all operator tokens. + +- :py:class:`PlusOperator`: + Token representing a plus operator: ``+``. + +- :py:class:`MinusOperator`: + Token representing a minus operator: ``-``. + +- :py:class:`MultiplyOperator`: + Token representing a multiply operator: ``*``. + +- :py:class:`DivideOperator`: + Token representing a divide operator: ``/``. + +- :py:class:`ModuloOperator`: + Base-class for all operator tokens. + +- :py:class:`RemainderOperator`: + Base-class for all operator tokens. + +- :py:class:`PowerOperator`: + Token representing a power operator: ``**``. + +- :py:class:`ConcatOperator`: + Token representing a concat operator: ``&``. + +- :py:class:`RelationalOperator`: + Base-class for all relational operator tokens. + +- :py:class:`EqualOperator`: + Base-class for all relational operator tokens. + +- :py:class:`UnequalOperator`: + Base-class for all relational operator tokens. + +- :py:class:`LessThanOperator`: + Base-class for all relational operator tokens. + +- :py:class:`LessThanOrEqualOperator`: + Base-class for all relational operator tokens. + +- :py:class:`GreaterThanOperator`: + Base-class for all relational operator tokens. + +- :py:class:`GreaterThanOrEqualOperator`: + Base-class for all relational operator tokens. + +- :py:class:`MatchingEqualOperator`: + Base-class for all relational operator tokens. + +- :py:class:`MatchingUnequalOperator`: + Base-class for all relational operator tokens. + +- :py:class:`MatchingLessThanOperator`: + Base-class for all relational operator tokens. + +- :py:class:`MatchingLessThanOrEqualOperator`: + Base-class for all relational operator tokens. + +- :py:class:`MatchingGreaterThanOperator`: + Base-class for all relational operator tokens. + +- :py:class:`MatchingGreaterThanOrEqualOperator`: + Base-class for all relational operator tokens. + +- :py:class:`DelimiterToken`: + Token representing a delimiter sign in between list items. + +- :py:class:`EndToken`: + Token representing an end of a statement. + +- :py:class:`IdentifierToken`: + Token representing an identifier. + +- :py:class:`RepeatedIdentifierToken`: + Token representing a repeated identifier. + +- :py:class:`SimpleNameToken`: + Base-class for all specific tokens. + +- :py:class:`LabelToken`: + Token representing a label. + +- :py:class:`RepeatedLabelToken`: + Token representing a repeated label. + +- :py:class:`MultiCharKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`CommentKeyword`: + Base-class for all comment keywords: ``--``, ``/*`` and ``*/``. + +- :py:class:`SingleLineCommentKeyword`: + Token representing a starting sequence for a single-line comment: ``--``. + +- :py:class:`MultiLineCommentKeyword`: + Base-class for all tokens related to multi-line comments: ``/*`` and ``*/``. + +- :py:class:`MultiLineCommentStartKeyword`: + Token representing a starting sequence for a multi-line comment: ``/*``. + +- :py:class:`MultiLineCommentEndKeyword`: + Token representing a closing sequence for a multi-line comment: ``*/``. + +- :py:class:`AssignmentKeyword`: + Base-class for all assignment keywords: ``:=`` and ``<=``. + +- :py:class:`VariableAssignmentKeyword`: + Token representing a variable assignment: ``:=``. + +- :py:class:`SignalAssignmentKeyword`: + Token representing a signal assignment: ``<=``. + +- :py:class:`AssociationKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`MapAssociationKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`SignalAssociationKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`KeywordToken`: + Base-class for all VHDL specific tokens. + +- :py:class:`DirectionKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`Operator`: + Base-class for all VHDL specific tokens. + +- :py:class:`LogicalOperator`: + Base-class for all VHDL specific tokens. + +- :py:class:`MiscellaneousOperator`: + Base-class for all VHDL specific tokens. + +- :py:class:`ShiftOperator`: + Base-class for all VHDL specific tokens. + +- :py:class:`AbsOperator`: + Reserved word 'abs' for unary operator *absolute value*. + +- :py:class:`AccessKeyword`: + Reserved word 'access' to defined access types. + +- :py:class:`AfterKeyword`: + Reserved word 'after'. + +- :py:class:`AliasKeyword`: + Reserved word 'alias' to declare aliases. + +- :py:class:`AllKeyword`: + Reserved word 'all'. + +- :py:class:`AndOperator`: + Reserved word 'and' for binary logical operator *and*. + +- :py:class:`ArchitectureKeyword`: + Reserved word 'architecture' to define architectures. + +- :py:class:`ArrayKeyword`: + Reserved word 'array' to define array types. + +- :py:class:`AssertKeyword`: + Reserved word 'assert' for *assert*-statements. + +- :py:class:`AttributeKeyword`: + Reserved word 'attribute'. + +- :py:class:`BeginKeyword`: + Reserved word 'begin' to distinguish declarative regions from statements regions. + +- :py:class:`BlockKeyword`: + Reserved word 'block' for *block*-statements. + +- :py:class:`BodyKeyword`: + Reserved word 'body' to distinguish declarations from implementations (bodies). + +- :py:class:`BufferKeyword`: + Reserved word 'buffer' for mode *buffer*. + +- :py:class:`BusKeyword`: + Reserved word 'bus'. + +- :py:class:`CaseKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`ComponentKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`ConfigurationKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`ConstantKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`ContextKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`DefaultKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`DisconnectKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`DowntoKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`ElseKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`ElsIfKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`EndKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`EntityKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`ExitKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`FileKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`ForKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`ForceKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`FunctionKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`GenerateKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`GenericKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`GroupKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`GuardedKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`IfKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`IsKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`InKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`InoutKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`ImpureKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`InertialKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`LabelKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`LibraryKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`LinkageKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`LiteralKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`LoopKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`MapKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`NandOperator`: + Base-class for all VHDL specific tokens. + +- :py:class:`NewKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`NextKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`NorOperator`: + Base-class for all VHDL specific tokens. + +- :py:class:`NotOperator`: + Base-class for all VHDL specific tokens. + +- :py:class:`NullKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`OfKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`OnKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`OpenKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`OrOperator`: + Base-class for all VHDL specific tokens. + +- :py:class:`OthersKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`OutKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`PackageKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`ParameterKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`PortKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`PostponedKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`PrivateKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`ProcedureKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`ProcessKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`PropertyKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`ProtectedKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`PureKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`RangeKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`RecordKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`RegisterKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`RejectKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`ReleaseKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`ReportKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`ReturnKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`RolOperator`: + Base-class for all VHDL specific tokens. + +- :py:class:`RorOperator`: + Base-class for all VHDL specific tokens. + +- :py:class:`SelectKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`SequenceKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`SeverityKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`SharedKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`SignalKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`SlaOperator`: + Base-class for all VHDL specific tokens. + +- :py:class:`SllOperator`: + Base-class for all VHDL specific tokens. + +- :py:class:`SraOperator`: + Base-class for all VHDL specific tokens. + +- :py:class:`SrlOperator`: + Base-class for all VHDL specific tokens. + +- :py:class:`SubtypeKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`ThenKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`ToKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`TransportKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`TypeKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`UnaffectedKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`UnitsKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`UntilKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`UseKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`UnbufferedKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`VariableKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`ViewKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`VunitKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`WaitKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`WhenKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`WhileKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`WithKeyword`: + Base-class for all VHDL specific tokens. + +- :py:class:`XorOperator`: + Base-class for all VHDL specific tokens. + +- :py:class:`XnorOperator`: + Base-class for all VHDL specific tokens. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: SpecificVHDLToken + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: SpecificVHDLToken + :parts: 1 + +.. autoclass:: BoundaryToken + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: BoundaryToken + :parts: 1 + +.. autoclass:: BracketToken + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: BracketToken + :parts: 1 + +.. autoclass:: RoundBracketToken + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: RoundBracketToken + :parts: 1 + +.. autoclass:: OpeningRoundBracketToken + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: OpeningRoundBracketToken + :parts: 1 + +.. autoclass:: ClosingRoundBracketToken + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ClosingRoundBracketToken + :parts: 1 + +.. autoclass:: SquareBracketToken + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: SquareBracketToken + :parts: 1 + +.. autoclass:: OpeningSquareBracketToken + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: OpeningSquareBracketToken + :parts: 1 + +.. autoclass:: ClosingSquareBracketToken + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ClosingSquareBracketToken + :parts: 1 + +.. autoclass:: CurlyBracketToken + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: CurlyBracketToken + :parts: 1 + +.. autoclass:: OpeningCurlyBracketToken + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: OpeningCurlyBracketToken + :parts: 1 + +.. autoclass:: ClosingCurlyBracketToken + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ClosingCurlyBracketToken + :parts: 1 + +.. autoclass:: AngleBracketToken + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: AngleBracketToken + :parts: 1 + +.. autoclass:: OpeningAngleBracketToken + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: OpeningAngleBracketToken + :parts: 1 + +.. autoclass:: ClosingAngleBracketToken + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ClosingAngleBracketToken + :parts: 1 + +.. autoclass:: OperatorToken + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: OperatorToken + :parts: 1 + +.. autoclass:: PlusOperator + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: PlusOperator + :parts: 1 + +.. autoclass:: MinusOperator + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: MinusOperator + :parts: 1 + +.. autoclass:: MultiplyOperator + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: MultiplyOperator + :parts: 1 + +.. autoclass:: DivideOperator + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: DivideOperator + :parts: 1 + +.. autoclass:: ModuloOperator + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ModuloOperator + :parts: 1 + +.. autoclass:: RemainderOperator + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: RemainderOperator + :parts: 1 + +.. autoclass:: PowerOperator + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: PowerOperator + :parts: 1 + +.. autoclass:: ConcatOperator + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ConcatOperator + :parts: 1 + +.. autoclass:: RelationalOperator + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: RelationalOperator + :parts: 1 + +.. autoclass:: EqualOperator + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EqualOperator + :parts: 1 + +.. autoclass:: UnequalOperator + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: UnequalOperator + :parts: 1 + +.. autoclass:: LessThanOperator + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: LessThanOperator + :parts: 1 + +.. autoclass:: LessThanOrEqualOperator + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: LessThanOrEqualOperator + :parts: 1 + +.. autoclass:: GreaterThanOperator + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: GreaterThanOperator + :parts: 1 + +.. autoclass:: GreaterThanOrEqualOperator + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: GreaterThanOrEqualOperator + :parts: 1 + +.. autoclass:: MatchingEqualOperator + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: MatchingEqualOperator + :parts: 1 + +.. autoclass:: MatchingUnequalOperator + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: MatchingUnequalOperator + :parts: 1 + +.. autoclass:: MatchingLessThanOperator + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: MatchingLessThanOperator + :parts: 1 + +.. autoclass:: MatchingLessThanOrEqualOperator + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: MatchingLessThanOrEqualOperator + :parts: 1 + +.. autoclass:: MatchingGreaterThanOperator + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: MatchingGreaterThanOperator + :parts: 1 + +.. autoclass:: MatchingGreaterThanOrEqualOperator + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: MatchingGreaterThanOrEqualOperator + :parts: 1 + +.. autoclass:: DelimiterToken + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: DelimiterToken + :parts: 1 + +.. autoclass:: EndToken + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EndToken + :parts: 1 + +.. autoclass:: IdentifierToken + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: IdentifierToken + :parts: 1 + +.. autoclass:: RepeatedIdentifierToken + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: RepeatedIdentifierToken + :parts: 1 + +.. autoclass:: SimpleNameToken + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: SimpleNameToken + :parts: 1 + +.. autoclass:: LabelToken + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: LabelToken + :parts: 1 + +.. autoclass:: RepeatedLabelToken + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: RepeatedLabelToken + :parts: 1 + +.. autoclass:: MultiCharKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: MultiCharKeyword + :parts: 1 + +.. autoclass:: CommentKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: CommentKeyword + :parts: 1 + +.. autoclass:: SingleLineCommentKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: SingleLineCommentKeyword + :parts: 1 + +.. autoclass:: MultiLineCommentKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: MultiLineCommentKeyword + :parts: 1 + +.. autoclass:: MultiLineCommentStartKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: MultiLineCommentStartKeyword + :parts: 1 + +.. autoclass:: MultiLineCommentEndKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: MultiLineCommentEndKeyword + :parts: 1 + +.. autoclass:: AssignmentKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: AssignmentKeyword + :parts: 1 + +.. autoclass:: VariableAssignmentKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: VariableAssignmentKeyword + :parts: 1 + +.. autoclass:: SignalAssignmentKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: SignalAssignmentKeyword + :parts: 1 + +.. autoclass:: AssociationKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: AssociationKeyword + :parts: 1 + +.. autoclass:: MapAssociationKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: MapAssociationKeyword + :parts: 1 + +.. autoclass:: SignalAssociationKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: SignalAssociationKeyword + :parts: 1 + +.. autoclass:: KeywordToken + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: KeywordToken + :parts: 1 + +.. autoclass:: DirectionKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: DirectionKeyword + :parts: 1 + +.. autoclass:: Operator + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: Operator + :parts: 1 + +.. autoclass:: LogicalOperator + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: LogicalOperator + :parts: 1 + +.. autoclass:: MiscellaneousOperator + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: MiscellaneousOperator + :parts: 1 + +.. autoclass:: ShiftOperator + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ShiftOperator + :parts: 1 + +.. autoclass:: AbsOperator + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: AbsOperator + :parts: 1 + +.. autoclass:: AccessKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: AccessKeyword + :parts: 1 + +.. autoclass:: AfterKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: AfterKeyword + :parts: 1 + +.. autoclass:: AliasKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: AliasKeyword + :parts: 1 + +.. autoclass:: AllKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: AllKeyword + :parts: 1 + +.. autoclass:: AndOperator + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: AndOperator + :parts: 1 + +.. autoclass:: ArchitectureKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ArchitectureKeyword + :parts: 1 + +.. autoclass:: ArrayKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ArrayKeyword + :parts: 1 + +.. autoclass:: AssertKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: AssertKeyword + :parts: 1 + +.. autoclass:: AttributeKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: AttributeKeyword + :parts: 1 + +.. autoclass:: BeginKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: BeginKeyword + :parts: 1 + +.. autoclass:: BlockKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: BlockKeyword + :parts: 1 + +.. autoclass:: BodyKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: BodyKeyword + :parts: 1 + +.. autoclass:: BufferKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: BufferKeyword + :parts: 1 + +.. autoclass:: BusKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: BusKeyword + :parts: 1 + +.. autoclass:: CaseKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: CaseKeyword + :parts: 1 + +.. autoclass:: ComponentKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ComponentKeyword + :parts: 1 + +.. autoclass:: ConfigurationKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ConfigurationKeyword + :parts: 1 + +.. autoclass:: ConstantKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ConstantKeyword + :parts: 1 + +.. autoclass:: ContextKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ContextKeyword + :parts: 1 + +.. autoclass:: DefaultKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: DefaultKeyword + :parts: 1 + +.. autoclass:: DisconnectKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: DisconnectKeyword + :parts: 1 + +.. autoclass:: DowntoKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: DowntoKeyword + :parts: 1 + +.. autoclass:: ElseKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ElseKeyword + :parts: 1 + +.. autoclass:: ElsIfKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ElsIfKeyword + :parts: 1 + +.. autoclass:: EndKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EndKeyword + :parts: 1 + +.. autoclass:: EntityKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EntityKeyword + :parts: 1 + +.. autoclass:: ExitKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ExitKeyword + :parts: 1 + +.. autoclass:: FileKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: FileKeyword + :parts: 1 + +.. autoclass:: ForKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ForKeyword + :parts: 1 + +.. autoclass:: ForceKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ForceKeyword + :parts: 1 + +.. autoclass:: FunctionKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: FunctionKeyword + :parts: 1 + +.. autoclass:: GenerateKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: GenerateKeyword + :parts: 1 + +.. autoclass:: GenericKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: GenericKeyword + :parts: 1 + +.. autoclass:: GroupKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: GroupKeyword + :parts: 1 + +.. autoclass:: GuardedKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: GuardedKeyword + :parts: 1 + +.. autoclass:: IfKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: IfKeyword + :parts: 1 + +.. autoclass:: IsKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: IsKeyword + :parts: 1 + +.. autoclass:: InKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: InKeyword + :parts: 1 + +.. autoclass:: InoutKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: InoutKeyword + :parts: 1 + +.. autoclass:: ImpureKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ImpureKeyword + :parts: 1 + +.. autoclass:: InertialKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: InertialKeyword + :parts: 1 + +.. autoclass:: LabelKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: LabelKeyword + :parts: 1 + +.. autoclass:: LibraryKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: LibraryKeyword + :parts: 1 + +.. autoclass:: LinkageKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: LinkageKeyword + :parts: 1 + +.. autoclass:: LiteralKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: LiteralKeyword + :parts: 1 + +.. autoclass:: LoopKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: LoopKeyword + :parts: 1 + +.. autoclass:: MapKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: MapKeyword + :parts: 1 + +.. autoclass:: NandOperator + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: NandOperator + :parts: 1 + +.. autoclass:: NewKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: NewKeyword + :parts: 1 + +.. autoclass:: NextKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: NextKeyword + :parts: 1 + +.. autoclass:: NorOperator + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: NorOperator + :parts: 1 + +.. autoclass:: NotOperator + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: NotOperator + :parts: 1 + +.. autoclass:: NullKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: NullKeyword + :parts: 1 + +.. autoclass:: OfKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: OfKeyword + :parts: 1 + +.. autoclass:: OnKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: OnKeyword + :parts: 1 + +.. autoclass:: OpenKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: OpenKeyword + :parts: 1 + +.. autoclass:: OrOperator + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: OrOperator + :parts: 1 + +.. autoclass:: OthersKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: OthersKeyword + :parts: 1 + +.. autoclass:: OutKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: OutKeyword + :parts: 1 + +.. autoclass:: PackageKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: PackageKeyword + :parts: 1 + +.. autoclass:: ParameterKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ParameterKeyword + :parts: 1 + +.. autoclass:: PortKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: PortKeyword + :parts: 1 + +.. autoclass:: PostponedKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: PostponedKeyword + :parts: 1 + +.. autoclass:: PrivateKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: PrivateKeyword + :parts: 1 + +.. autoclass:: ProcedureKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ProcedureKeyword + :parts: 1 + +.. autoclass:: ProcessKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ProcessKeyword + :parts: 1 + +.. autoclass:: PropertyKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: PropertyKeyword + :parts: 1 + +.. autoclass:: ProtectedKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ProtectedKeyword + :parts: 1 + +.. autoclass:: PureKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: PureKeyword + :parts: 1 + +.. autoclass:: RangeKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: RangeKeyword + :parts: 1 + +.. autoclass:: RecordKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: RecordKeyword + :parts: 1 + +.. autoclass:: RegisterKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: RegisterKeyword + :parts: 1 + +.. autoclass:: RejectKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: RejectKeyword + :parts: 1 + +.. autoclass:: ReleaseKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ReleaseKeyword + :parts: 1 + +.. autoclass:: ReportKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ReportKeyword + :parts: 1 + +.. autoclass:: ReturnKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ReturnKeyword + :parts: 1 + +.. autoclass:: RolOperator + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: RolOperator + :parts: 1 + +.. autoclass:: RorOperator + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: RorOperator + :parts: 1 + +.. autoclass:: SelectKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: SelectKeyword + :parts: 1 + +.. autoclass:: SequenceKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: SequenceKeyword + :parts: 1 + +.. autoclass:: SeverityKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: SeverityKeyword + :parts: 1 + +.. autoclass:: SharedKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: SharedKeyword + :parts: 1 + +.. autoclass:: SignalKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: SignalKeyword + :parts: 1 + +.. autoclass:: SlaOperator + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: SlaOperator + :parts: 1 + +.. autoclass:: SllOperator + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: SllOperator + :parts: 1 + +.. autoclass:: SraOperator + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: SraOperator + :parts: 1 + +.. autoclass:: SrlOperator + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: SrlOperator + :parts: 1 + +.. autoclass:: SubtypeKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: SubtypeKeyword + :parts: 1 + +.. autoclass:: ThenKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ThenKeyword + :parts: 1 + +.. autoclass:: ToKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ToKeyword + :parts: 1 + +.. autoclass:: TransportKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: TransportKeyword + :parts: 1 + +.. autoclass:: TypeKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: TypeKeyword + :parts: 1 + +.. autoclass:: UnaffectedKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: UnaffectedKeyword + :parts: 1 + +.. autoclass:: UnitsKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: UnitsKeyword + :parts: 1 + +.. autoclass:: UntilKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: UntilKeyword + :parts: 1 + +.. autoclass:: UseKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: UseKeyword + :parts: 1 + +.. autoclass:: UnbufferedKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: UnbufferedKeyword + :parts: 1 + +.. autoclass:: VariableKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: VariableKeyword + :parts: 1 + +.. autoclass:: ViewKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ViewKeyword + :parts: 1 + +.. autoclass:: VunitKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: VunitKeyword + :parts: 1 + +.. autoclass:: WaitKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: WaitKeyword + :parts: 1 + +.. autoclass:: WhenKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: WhenKeyword + :parts: 1 + +.. autoclass:: WhileKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: WhileKeyword + :parts: 1 + +.. autoclass:: WithKeyword + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: WithKeyword + :parts: 1 + +.. autoclass:: XorOperator + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: XorOperator + :parts: 1 + +.. autoclass:: XnorOperator + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: XnorOperator + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Token.Parser.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Token.Parser.rst.txt new file mode 100644 index 000000000..0ec423b3a --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Token.Parser.rst.txt @@ -0,0 +1,59 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +========================= +pyVHDLParser.Token.Parser +========================= + +.. automodule:: pyVHDLParser.Token.Parser + + +.. currentmodule:: pyVHDLParser.Token.Parser + + +**Exceptions** + +- :py:exc:`TokenizerException`: + A :exc:`~pyVHDLParser.Base.ParserException` generated by the :class:`~pyVHDLParser.Token.Parser.Tokenizer`. + + + +**Classes** + +- :py:class:`Tokenizer`: + Undocumented. + + + +--------------------- + +**Exceptions** + + + + +.. autoexception:: TokenizerException + + .. rubric:: Inheritance + .. inheritance-diagram:: TokenizerException + :parts: 1 + + +--------------------- + +**Classes** + + + + +.. autoclass:: Tokenizer + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: Tokenizer + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.Token.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.Token.rst.txt new file mode 100644 index 000000000..71400f6a2 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.Token.rst.txt @@ -0,0 +1,440 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +================== +pyVHDLParser.Token +================== + +.. automodule:: pyVHDLParser.Token + + + +**Submodules** + +.. toctree:: + :maxdepth: 1 + + pyVHDLParser.Token.Keywords + pyVHDLParser.Token.Parser + +.. currentmodule:: pyVHDLParser.Token + + +**Functions** + +- :py:func:`CharacterTranslation`: + Undocumented. + + + +**Classes** + +- :py:class:`TokenIterator`: + Undocumented. + +- :py:class:`TokenReverseIterator`: + Undocumented. + +- :py:class:`Token`: + Base-class for all token classes. + +- :py:class:`ValuedToken`: + Base-class for all *valued* token. + +- :py:class:`StartOfToken`: + Base-class for meta-tokens representing the start of a token stream. + +- :py:class:`EndOfToken`: + Base-class for meta-tokens representing the end of a token stream. + +- :py:class:`StartOfDocumentToken`: + Base-class for meta-tokens representing the start of a token stream. + +- :py:class:`EndOfDocumentToken`: + Base-class for meta-tokens representing the end of a token stream. + +- :py:class:`StartOfSnippetToken`: + Base-class for meta-tokens representing the start of a token stream. + +- :py:class:`EndOfSnippetToken`: + Base-class for meta-tokens representing the end of a token stream. + +- :py:class:`CharacterToken`: + Token representing a single character. + +- :py:class:`FusedCharacterToken`: + Token representing a double (or triple) character. + +- :py:class:`SpaceToken`: + Token representing a space (space or tab). + +- :py:class:`WordToken`: + Token representing a string. + +- :py:class:`VHDLToken`: + Base-class for all VHDL specific tokens. + +- :py:class:`CommentToken`: + Base-class for comment tokens. + +- :py:class:`SingleLineCommentToken`: + Token representing a single-line comment. + +- :py:class:`MultiLineCommentToken`: + Token representing a multi-line comment. + +- :py:class:`LiteralToken`: + Base-class for all literals in VHDL. + +- :py:class:`IntegerLiteralToken`: + Token representing an integer literal. + +- :py:class:`RealLiteralToken`: + Token representing a real literal. + +- :py:class:`CharacterLiteralToken`: + Token representing a character literal in VHDL. + +- :py:class:`StringLiteralToken`: + Token representing a string literal in VHDL. + +- :py:class:`BitStringLiteralToken`: + Token representing a bit-string literal in VHDL. + +- :py:class:`ExtendedIdentifier`: + Token representing an extended identifier in VHDL. + +- :py:class:`DirectiveToken`: + Base-class for comment tokens. + +- :py:class:`LinebreakToken`: + Token representing a linebreak in the source code file. + +- :py:class:`IndentationToken`: + Token representing an indentation in a source code line. + + + +--------------------- + +**Functions** + + +.. autofunction:: CharacterTranslation + + +--------------------- + +**Classes** + + + + +.. autoclass:: TokenIterator + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: TokenIterator + :parts: 1 + +.. autoclass:: TokenReverseIterator + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: TokenReverseIterator + :parts: 1 + +.. autoclass:: Token + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: Token + :parts: 1 + +.. autoclass:: ValuedToken + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ValuedToken + :parts: 1 + +.. autoclass:: StartOfToken + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: StartOfToken + :parts: 1 + +.. autoclass:: EndOfToken + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EndOfToken + :parts: 1 + +.. autoclass:: StartOfDocumentToken + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: StartOfDocumentToken + :parts: 1 + +.. autoclass:: EndOfDocumentToken + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EndOfDocumentToken + :parts: 1 + +.. autoclass:: StartOfSnippetToken + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: StartOfSnippetToken + :parts: 1 + +.. autoclass:: EndOfSnippetToken + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EndOfSnippetToken + :parts: 1 + +.. autoclass:: CharacterToken + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: CharacterToken + :parts: 1 + +.. autoclass:: FusedCharacterToken + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: FusedCharacterToken + :parts: 1 + +.. autoclass:: SpaceToken + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: SpaceToken + :parts: 1 + +.. autoclass:: WordToken + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: WordToken + :parts: 1 + +.. autoclass:: VHDLToken + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: VHDLToken + :parts: 1 + +.. autoclass:: CommentToken + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: CommentToken + :parts: 1 + +.. autoclass:: SingleLineCommentToken + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: SingleLineCommentToken + :parts: 1 + +.. autoclass:: MultiLineCommentToken + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: MultiLineCommentToken + :parts: 1 + +.. autoclass:: LiteralToken + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: LiteralToken + :parts: 1 + +.. autoclass:: IntegerLiteralToken + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: IntegerLiteralToken + :parts: 1 + +.. autoclass:: RealLiteralToken + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: RealLiteralToken + :parts: 1 + +.. autoclass:: CharacterLiteralToken + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: CharacterLiteralToken + :parts: 1 + +.. autoclass:: StringLiteralToken + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: StringLiteralToken + :parts: 1 + +.. autoclass:: BitStringLiteralToken + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: BitStringLiteralToken + :parts: 1 + +.. autoclass:: ExtendedIdentifier + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ExtendedIdentifier + :parts: 1 + +.. autoclass:: DirectiveToken + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: DirectiveToken + :parts: 1 + +.. autoclass:: LinebreakToken + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: LinebreakToken + :parts: 1 + +.. autoclass:: IndentationToken + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: IndentationToken + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.TypeSystem.Package.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.TypeSystem.Package.rst.txt new file mode 100644 index 000000000..7c7e5ec81 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.TypeSystem.Package.rst.txt @@ -0,0 +1,164 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +=============================== +pyVHDLParser.TypeSystem.Package +=============================== + +.. automodule:: pyVHDLParser.TypeSystem.Package + + +.. currentmodule:: pyVHDLParser.TypeSystem.Package + + +**Classes** + +- :py:class:`Parameter`: + Undocumented. + +- :py:class:`SubProgramDeclaration`: + Undocumented. + +- :py:class:`ProcedureDeclaration`: + Undocumented. + +- :py:class:`FunctionDeclaration`: + Undocumented. + +- :py:class:`SubProgram`: + Undocumented. + +- :py:class:`Procedure`: + Undocumented. + +- :py:class:`Function`: + Undocumented. + +- :py:class:`PackageDeclation`: + Undocumented. + +- :py:class:`PackageBody`: + Undocumented. + +- :py:class:`Package`: + Undocumented. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: Parameter + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: Parameter + :parts: 1 + +.. autoclass:: SubProgramDeclaration + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: SubProgramDeclaration + :parts: 1 + +.. autoclass:: ProcedureDeclaration + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ProcedureDeclaration + :parts: 1 + +.. autoclass:: FunctionDeclaration + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: FunctionDeclaration + :parts: 1 + +.. autoclass:: SubProgram + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: SubProgram + :parts: 1 + +.. autoclass:: Procedure + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: Procedure + :parts: 1 + +.. autoclass:: Function + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: Function + :parts: 1 + +.. autoclass:: PackageDeclation + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: PackageDeclation + :parts: 1 + +.. autoclass:: PackageBody + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: PackageBody + :parts: 1 + +.. autoclass:: Package + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: Package + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.TypeSystem.TypeSystem.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.TypeSystem.TypeSystem.rst.txt new file mode 100644 index 000000000..67148cc03 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.TypeSystem.TypeSystem.rst.txt @@ -0,0 +1,248 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +================================== +pyVHDLParser.TypeSystem.TypeSystem +================================== + +.. automodule:: pyVHDLParser.TypeSystem.TypeSystem + + +.. currentmodule:: pyVHDLParser.TypeSystem.TypeSystem + + +**Classes** + +- :py:class:`_Attributes`: + Undocumented. + +- :py:class:`Type`: + Undocumented. + +- :py:class:`IntegerType`: + Undocumented. + +- :py:class:`RealType`: + Undocumented. + +- :py:class:`EnumerationLiteral`: + Undocumented. + +- :py:class:`EnumerationType`: + Undocumented. + +- :py:class:`ArrayType`: + Undocumented. + +- :py:class:`RecordMember`: + Undocumented. + +- :py:class:`RecordType`: + Undocumented. + +- :py:class:`Subtype`: + Undocumented. + +- :py:class:`IntegerSubtype`: + Undocumented. + +- :py:class:`EnumerationSubtype`: + Undocumented. + +- :py:class:`Direction`: + Create a collection of name/value pairs. + +- :py:class:`Range`: + Undocumented. + +- :py:class:`TypeInstance`: + Undocumented. + +- :py:class:`Array`: + Undocumented. + + + +--------------------- + +**Classes** + + + + +.. autoclass:: _Attributes + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: _Attributes + :parts: 1 + +.. autoclass:: Type + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: Type + :parts: 1 + +.. autoclass:: IntegerType + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: IntegerType + :parts: 1 + +.. autoclass:: RealType + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: RealType + :parts: 1 + +.. autoclass:: EnumerationLiteral + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EnumerationLiteral + :parts: 1 + +.. autoclass:: EnumerationType + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EnumerationType + :parts: 1 + +.. autoclass:: ArrayType + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: ArrayType + :parts: 1 + +.. autoclass:: RecordMember + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: RecordMember + :parts: 1 + +.. autoclass:: RecordType + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: RecordType + :parts: 1 + +.. autoclass:: Subtype + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: Subtype + :parts: 1 + +.. autoclass:: IntegerSubtype + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: IntegerSubtype + :parts: 1 + +.. autoclass:: EnumerationSubtype + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: EnumerationSubtype + :parts: 1 + +.. autoclass:: Direction + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: Direction + :parts: 1 + +.. autoclass:: Range + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: Range + :parts: 1 + +.. autoclass:: TypeInstance + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: TypeInstance + :parts: 1 + +.. autoclass:: Array + :members: + :private-members: + :special-members: + :inherited-members: + :exclude-members: __weakref__ + + .. rubric:: Inheritance + .. inheritance-diagram:: Array + :parts: 1 diff --git a/_sources/pyVHDLParser/pyVHDLParser.TypeSystem.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.TypeSystem.rst.txt new file mode 100644 index 000000000..c875aa1fa --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.TypeSystem.rst.txt @@ -0,0 +1,23 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +======================= +pyVHDLParser.TypeSystem +======================= + +.. automodule:: pyVHDLParser.TypeSystem + + + +**Submodules** + +.. toctree:: + :maxdepth: 1 + + pyVHDLParser.TypeSystem.Package + pyVHDLParser.TypeSystem.TypeSystem + pyVHDLParser.TypeSystem.std + pyVHDLParser.TypeSystem.std_logic_1164 + +.. currentmodule:: pyVHDLParser.TypeSystem diff --git a/_sources/pyVHDLParser/pyVHDLParser.TypeSystem.std.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.TypeSystem.std.rst.txt new file mode 100644 index 000000000..841593179 --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.TypeSystem.std.rst.txt @@ -0,0 +1,12 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +=========================== +pyVHDLParser.TypeSystem.std +=========================== + +.. automodule:: pyVHDLParser.TypeSystem.std + + +.. currentmodule:: pyVHDLParser.TypeSystem.std diff --git a/_sources/pyVHDLParser/pyVHDLParser.TypeSystem.std_logic_1164.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.TypeSystem.std_logic_1164.rst.txt new file mode 100644 index 000000000..01736500a --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.TypeSystem.std_logic_1164.rst.txt @@ -0,0 +1,12 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +====================================== +pyVHDLParser.TypeSystem.std_logic_1164 +====================================== + +.. automodule:: pyVHDLParser.TypeSystem.std_logic_1164 + + +.. currentmodule:: pyVHDLParser.TypeSystem.std_logic_1164 diff --git a/_sources/pyVHDLParser/pyVHDLParser.rst.txt b/_sources/pyVHDLParser/pyVHDLParser.rst.txt new file mode 100644 index 000000000..0652a59da --- /dev/null +++ b/_sources/pyVHDLParser/pyVHDLParser.rst.txt @@ -0,0 +1,26 @@ +.. # Template created by Patrick Lehmann + +Python Class Reference +###################### + +Reference of all packages and modules: + +.. automodule:: pyVHDLParser + +.. toctree:: + :maxdepth: 1 + + pyVHDLParser.ANTLR4 + pyVHDLParser.Base + pyVHDLParser.Blocks + pyVHDLParser.CLI + pyVHDLParser.Decorators + pyVHDLParser.DocumentModel + pyVHDLParser.Filters + pyVHDLParser.Groups + pyVHDLParser.LanguageModel + pyVHDLParser.NetlistModel + pyVHDLParser.SimulationModel + pyVHDLParser.StyleChecks + pyVHDLParser.Token + pyVHDLParser.TypeSystem \ No newline at end of file diff --git a/_static/_sphinx_javascript_frameworks_compat.js b/_static/_sphinx_javascript_frameworks_compat.js new file mode 100644 index 000000000..8549469dc --- /dev/null +++ b/_static/_sphinx_javascript_frameworks_compat.js @@ -0,0 +1,134 @@ +/* + * _sphinx_javascript_frameworks_compat.js + * ~~~~~~~~~~ + * + * Compatability shim for jQuery and underscores.js. + * + * WILL BE REMOVED IN Sphinx 6.0 + * xref RemovedInSphinx60Warning + * + */ + +/** + * select a different prefix for underscore + */ +$u = _.noConflict(); + + +/** + * small helper function to urldecode strings + * + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL + */ +jQuery.urldecode = function(x) { + if (!x) { + return x + } + return decodeURIComponent(x.replace(/\+/g, ' ')); +}; + +/** + * small helper function to urlencode strings + */ +jQuery.urlencode = encodeURIComponent; + +/** + * This function returns the parsed url parameters of the + * current request. Multiple values per key are supported, + * it will always return arrays of strings for the value parts. + */ +jQuery.getQueryParameters = function(s) { + if (typeof s === 'undefined') + s = document.location.search; + var parts = s.substr(s.indexOf('?') + 1).split('&'); + var result = {}; + for (var i = 0; i < parts.length; i++) { + var tmp = parts[i].split('=', 2); + var key = jQuery.urldecode(tmp[0]); + var value = jQuery.urldecode(tmp[1]); + if (key in result) + result[key].push(value); + else + result[key] = [value]; + } + return result; +}; + +/** + * highlight a given string on a jquery object by wrapping it in + * span elements with the given class name. + */ +jQuery.fn.highlightText = function(text, className) { + function highlight(node, addItems) { + if (node.nodeType === 3) { + var val = node.nodeValue; + var pos = val.toLowerCase().indexOf(text); + if (pos >= 0 && + !jQuery(node.parentNode).hasClass(className) && + !jQuery(node.parentNode).hasClass("nohighlight")) { + var span; + var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.className = className; + } + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + node.parentNode.insertBefore(span, node.parentNode.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling)); + node.nodeValue = val.substr(0, pos); + if (isInSVG) { + var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); + var bbox = node.parentElement.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute('class', className); + addItems.push({ + "parent": node.parentNode, + "target": rect}); + } + } + } + else if (!jQuery(node).is("button, select, textarea")) { + jQuery.each(node.childNodes, function() { + highlight(this, addItems); + }); + } + } + var addItems = []; + var result = this.each(function() { + highlight(this, addItems); + }); + for (var i = 0; i < addItems.length; ++i) { + jQuery(addItems[i].parent).before(addItems[i].target); + } + return result; +}; + +/* + * backward compatibility for jQuery.browser + * This will be supported until firefox bug is fixed. + */ +if (!jQuery.browser) { + jQuery.uaMatch = function(ua) { + ua = ua.toLowerCase(); + + var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || + /(webkit)[ \/]([\w.]+)/.exec(ua) || + /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || + /(msie) ([\w.]+)/.exec(ua) || + ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || + []; + + return { + browser: match[ 1 ] || "", + version: match[ 2 ] || "0" + }; + }; + jQuery.browser = {}; + jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; +} diff --git a/_static/basic.css b/_static/basic.css new file mode 100644 index 000000000..4e9a9f1fa --- /dev/null +++ b/_static/basic.css @@ -0,0 +1,900 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +div.section::after { + display: block; + content: ''; + clear: left; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li p.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 360px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, figure.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, figure.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, figure.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, figure.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-default { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar, +aside.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px; + background-color: #ffe; + width: 40%; + float: right; + clear: right; + overflow-x: auto; +} + +p.sidebar-title { + font-weight: bold; +} +nav.contents, +aside.topic, +div.admonition, div.topic, blockquote { + clear: left; +} + +/* -- topics ---------------------------------------------------------------- */ +nav.contents, +aside.topic, +div.topic { + border: 1px solid #ccc; + padding: 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +aside.sidebar > :last-child, +nav.contents > :last-child, +aside.topic > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +nav.contents::after, +aside.topic::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + margin-top: 10px; + margin-bottom: 10px; + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure, figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption, figcaption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number, +figcaption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text, +figcaption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist { + margin: 1em 0; +} + +table.hlist td { + vertical-align: top; +} + +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} +aside.footnote > span, +div.citation > span { + float: left; +} +aside.footnote > span:last-of-type, +div.citation > span:last-of-type { + padding-right: 0.5em; +} +aside.footnote > p { + margin-left: 2em; +} +div.citation > p { + margin-left: 4em; +} +aside.footnote > p:last-of-type, +div.citation > p:last-of-type { + margin-bottom: 0em; +} +aside.footnote > p:last-of-type:after, +div.citation > p:last-of-type:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + +dl { + margin-bottom: 15px; +} + +dd > :first-child { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +.classifier:before { + font-style: normal; + margin: 0 0.5em; + content: ":"; + display: inline-block; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +pre, div[class*="highlight-"] { + clear: both; +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; + white-space: nowrap; +} + +div[class*="highlight-"] { + margin: 1em 0; +} + +td.linenos pre { + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; +} + +table.highlighttable td { + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; +} + +div.code-block-caption { + margin-top: 1em; + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +table.highlighttable td.linenos, +span.linenos, +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + margin: 1em 0; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: absolute; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/_static/css/badge_only.css b/_static/css/badge_only.css new file mode 100644 index 000000000..ec0f9a893 --- /dev/null +++ b/_static/css/badge_only.css @@ -0,0 +1 @@ +.fa:before{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-style:normal;font-weight:400;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#FontAwesome) format("svg")}.fa:before{font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1}.fa:before,a .fa{text-decoration:inherit}.fa:before,a .fa,li .fa{display:inline-block}li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before,.icon-book:before{content:"\f02d"}.fa-caret-down:before,.icon-caret-down:before{content:"\f0d7"}.fa-caret-up:before,.icon-caret-up:before{content:"\f0d8"}.fa-caret-left:before,.icon-caret-left:before{content:"\f0d9"}.fa-caret-right:before,.icon-caret-right:before{content:"\f0da"}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1f1f;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#262626;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60}.rst-versions .rst-current-version:after{clear:both;content:"";display:block}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #404040}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}} \ No newline at end of file diff --git a/_static/css/fonts/Roboto-Slab-Bold.woff b/_static/css/fonts/Roboto-Slab-Bold.woff new file mode 100644 index 000000000..6cb600001 Binary files /dev/null and b/_static/css/fonts/Roboto-Slab-Bold.woff differ diff --git a/_static/css/fonts/Roboto-Slab-Bold.woff2 b/_static/css/fonts/Roboto-Slab-Bold.woff2 new file mode 100644 index 000000000..7059e2314 Binary files /dev/null and b/_static/css/fonts/Roboto-Slab-Bold.woff2 differ diff --git a/_static/css/fonts/Roboto-Slab-Regular.woff b/_static/css/fonts/Roboto-Slab-Regular.woff new file mode 100644 index 000000000..f815f63f9 Binary files /dev/null and b/_static/css/fonts/Roboto-Slab-Regular.woff differ diff --git a/_static/css/fonts/Roboto-Slab-Regular.woff2 b/_static/css/fonts/Roboto-Slab-Regular.woff2 new file mode 100644 index 000000000..f2c76e5bd Binary files /dev/null and b/_static/css/fonts/Roboto-Slab-Regular.woff2 differ diff --git a/_static/css/fonts/fontawesome-webfont.eot b/_static/css/fonts/fontawesome-webfont.eot new file mode 100644 index 000000000..e9f60ca95 Binary files /dev/null and b/_static/css/fonts/fontawesome-webfont.eot differ diff --git a/_static/css/fonts/fontawesome-webfont.svg b/_static/css/fonts/fontawesome-webfont.svg new file mode 100644 index 000000000..855c845e5 --- /dev/null +++ b/_static/css/fonts/fontawesome-webfont.svg @@ -0,0 +1,2671 @@ + + + + +Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 + By ,,, +Copyright Dave Gandy 2016. All rights reserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_static/css/fonts/fontawesome-webfont.ttf b/_static/css/fonts/fontawesome-webfont.ttf new file mode 100644 index 000000000..35acda2fa Binary files /dev/null and b/_static/css/fonts/fontawesome-webfont.ttf differ diff --git a/_static/css/fonts/fontawesome-webfont.woff b/_static/css/fonts/fontawesome-webfont.woff new file mode 100644 index 000000000..400014a4b Binary files /dev/null and b/_static/css/fonts/fontawesome-webfont.woff differ diff --git a/_static/css/fonts/fontawesome-webfont.woff2 b/_static/css/fonts/fontawesome-webfont.woff2 new file mode 100644 index 000000000..4d13fc604 Binary files /dev/null and b/_static/css/fonts/fontawesome-webfont.woff2 differ diff --git a/_static/css/fonts/lato-bold-italic.woff b/_static/css/fonts/lato-bold-italic.woff new file mode 100644 index 000000000..88ad05b9f Binary files /dev/null and b/_static/css/fonts/lato-bold-italic.woff differ diff --git a/_static/css/fonts/lato-bold-italic.woff2 b/_static/css/fonts/lato-bold-italic.woff2 new file mode 100644 index 000000000..c4e3d804b Binary files /dev/null and b/_static/css/fonts/lato-bold-italic.woff2 differ diff --git a/_static/css/fonts/lato-bold.woff b/_static/css/fonts/lato-bold.woff new file mode 100644 index 000000000..c6dff51f0 Binary files /dev/null and b/_static/css/fonts/lato-bold.woff differ diff --git a/_static/css/fonts/lato-bold.woff2 b/_static/css/fonts/lato-bold.woff2 new file mode 100644 index 000000000..bb195043c Binary files /dev/null and b/_static/css/fonts/lato-bold.woff2 differ diff --git a/_static/css/fonts/lato-normal-italic.woff b/_static/css/fonts/lato-normal-italic.woff new file mode 100644 index 000000000..76114bc03 Binary files /dev/null and b/_static/css/fonts/lato-normal-italic.woff differ diff --git a/_static/css/fonts/lato-normal-italic.woff2 b/_static/css/fonts/lato-normal-italic.woff2 new file mode 100644 index 000000000..3404f37e2 Binary files /dev/null and b/_static/css/fonts/lato-normal-italic.woff2 differ diff --git a/_static/css/fonts/lato-normal.woff b/_static/css/fonts/lato-normal.woff new file mode 100644 index 000000000..ae1307ff5 Binary files /dev/null and b/_static/css/fonts/lato-normal.woff differ diff --git a/_static/css/fonts/lato-normal.woff2 b/_static/css/fonts/lato-normal.woff2 new file mode 100644 index 000000000..3bf984332 Binary files /dev/null and b/_static/css/fonts/lato-normal.woff2 differ diff --git a/_static/css/theme.css b/_static/css/theme.css new file mode 100644 index 000000000..2d181942d --- /dev/null +++ b/_static/css/theme.css @@ -0,0 +1,4 @@ +html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}[hidden],audio:not([controls]){display:none}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}blockquote{margin:0}dfn{font-style:italic}ins{background:#ff9;text-decoration:none}ins,mark{color:#000}mark{background:#ff0;font-style:italic;font-weight:700}.rst-content code,.rst-content tt,code,kbd,pre,samp{font-family:monospace,serif;_font-family:courier new,monospace;font-size:1em}pre{white-space:pre}q{quotes:none}q:after,q:before{content:"";content:none}small{font-size:85%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}dl,ol,ul{margin:0;padding:0;list-style:none;list-style-image:none}li{list-style:none}dd{margin:0}img{border:0;-ms-interpolation-mode:bicubic;vertical-align:middle;max-width:100%}svg:not(:root){overflow:hidden}figure,form{margin:0}label{cursor:pointer}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button;*overflow:visible}button[disabled],input[disabled]{cursor:default}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}textarea{resize:vertical}table{border-collapse:collapse;border-spacing:0}td{vertical-align:top}.chromeframe{margin:.2em 0;background:#ccc;color:#000;padding:.2em 0}.ir{display:block;border:0;text-indent:-999em;overflow:hidden;background-color:transparent;background-repeat:no-repeat;text-align:left;direction:ltr;*line-height:0}.ir br{display:none}.hidden{display:none!important;visibility:hidden}.visuallyhidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.visuallyhidden.focusable:active,.visuallyhidden.focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.invisible{visibility:hidden}.relative{position:relative}big,small{font-size:100%}@media print{body,html,section{background:none!important}*{box-shadow:none!important;text-shadow:none!important;filter:none!important;-ms-filter:none!important}a,a:visited{text-decoration:underline}.ir a:after,a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}.rst-content .toctree-wrapper>p.caption,h2,h3,p{orphans:3;widows:3}.rst-content .toctree-wrapper>p.caption,h2,h3{page-break-after:avoid}}.btn,.fa:before,.icon:before,.rst-content .admonition,.rst-content .admonition-title:before,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .code-block-caption .headerlink:before,.rst-content .danger,.rst-content .eqno .headerlink:before,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content p .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-alert,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a,.wy-menu-vertical li.on a button.toctree-expand:before,.wy-menu-vertical li button.toctree-expand:before,.wy-nav-top a,.wy-side-nav-search .wy-dropdown>a,.wy-side-nav-search>a,input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:FontAwesome;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713);src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix&v=4.7.0) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#fontawesomeregular) format("svg");font-weight:400;font-style:normal}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li button.toctree-expand{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14286em;width:2.14286em;top:.14286em;text-align:center}.fa-li.fa-lg{left:-1.85714em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa-pull-left.icon,.fa.fa-pull-left,.rst-content .code-block-caption .fa-pull-left.headerlink,.rst-content .eqno .fa-pull-left.headerlink,.rst-content .fa-pull-left.admonition-title,.rst-content code.download span.fa-pull-left:first-child,.rst-content dl dt .fa-pull-left.headerlink,.rst-content h1 .fa-pull-left.headerlink,.rst-content h2 .fa-pull-left.headerlink,.rst-content h3 .fa-pull-left.headerlink,.rst-content h4 .fa-pull-left.headerlink,.rst-content h5 .fa-pull-left.headerlink,.rst-content h6 .fa-pull-left.headerlink,.rst-content p .fa-pull-left.headerlink,.rst-content table>caption .fa-pull-left.headerlink,.rst-content tt.download span.fa-pull-left:first-child,.wy-menu-vertical li.current>a button.fa-pull-left.toctree-expand,.wy-menu-vertical li.on a button.fa-pull-left.toctree-expand,.wy-menu-vertical li button.fa-pull-left.toctree-expand{margin-right:.3em}.fa-pull-right.icon,.fa.fa-pull-right,.rst-content .code-block-caption .fa-pull-right.headerlink,.rst-content .eqno .fa-pull-right.headerlink,.rst-content .fa-pull-right.admonition-title,.rst-content code.download span.fa-pull-right:first-child,.rst-content dl dt .fa-pull-right.headerlink,.rst-content h1 .fa-pull-right.headerlink,.rst-content h2 .fa-pull-right.headerlink,.rst-content h3 .fa-pull-right.headerlink,.rst-content h4 .fa-pull-right.headerlink,.rst-content h5 .fa-pull-right.headerlink,.rst-content h6 .fa-pull-right.headerlink,.rst-content p .fa-pull-right.headerlink,.rst-content table>caption .fa-pull-right.headerlink,.rst-content tt.download span.fa-pull-right:first-child,.wy-menu-vertical li.current>a button.fa-pull-right.toctree-expand,.wy-menu-vertical li.on a button.fa-pull-right.toctree-expand,.wy-menu-vertical li button.fa-pull-right.toctree-expand{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left,.pull-left.icon,.rst-content .code-block-caption .pull-left.headerlink,.rst-content .eqno .pull-left.headerlink,.rst-content .pull-left.admonition-title,.rst-content code.download span.pull-left:first-child,.rst-content dl dt .pull-left.headerlink,.rst-content h1 .pull-left.headerlink,.rst-content h2 .pull-left.headerlink,.rst-content h3 .pull-left.headerlink,.rst-content h4 .pull-left.headerlink,.rst-content h5 .pull-left.headerlink,.rst-content h6 .pull-left.headerlink,.rst-content p .pull-left.headerlink,.rst-content table>caption .pull-left.headerlink,.rst-content tt.download span.pull-left:first-child,.wy-menu-vertical li.current>a button.pull-left.toctree-expand,.wy-menu-vertical li.on a button.pull-left.toctree-expand,.wy-menu-vertical li button.pull-left.toctree-expand{margin-right:.3em}.fa.pull-right,.pull-right.icon,.rst-content .code-block-caption .pull-right.headerlink,.rst-content .eqno .pull-right.headerlink,.rst-content .pull-right.admonition-title,.rst-content code.download span.pull-right:first-child,.rst-content dl dt .pull-right.headerlink,.rst-content h1 .pull-right.headerlink,.rst-content h2 .pull-right.headerlink,.rst-content h3 .pull-right.headerlink,.rst-content h4 .pull-right.headerlink,.rst-content h5 .pull-right.headerlink,.rst-content h6 .pull-right.headerlink,.rst-content p .pull-right.headerlink,.rst-content table>caption .pull-right.headerlink,.rst-content tt.download span.pull-right:first-child,.wy-menu-vertical li.current>a button.pull-right.toctree-expand,.wy-menu-vertical li.on a button.pull-right.toctree-expand,.wy-menu-vertical li button.pull-right.toctree-expand{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);-ms-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scaleY(-1);-ms-transform:scaleY(-1);transform:scaleY(-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before,.icon-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-close:before,.fa-remove:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-cog:before,.fa-gear:before{content:""}.fa-trash-o:before{content:""}.fa-home:before,.icon-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before,.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-repeat:before,.fa-rotate-right:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before,.icon-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before{content:""}.fa-check-circle:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before,.rst-content .admonition-title:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before,.icon-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-exclamation-triangle:before,.fa-warning:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-cogs:before,.fa-gears:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook-f:before,.fa-facebook:before{content:""}.fa-github:before,.icon-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before,.icon-circle-arrow-left:before{content:""}.fa-arrow-circle-right:before,.icon-circle-arrow-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before,.icon-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-floppy-o:before,.fa-save:before{content:""}.fa-square:before{content:""}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before,.icon-caret-down:before,.wy-dropdown .caret:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-sort:before,.fa-unsorted:before{content:""}.fa-sort-desc:before,.fa-sort-down:before{content:""}.fa-sort-asc:before,.fa-sort-up:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-gavel:before,.fa-legal:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-bolt:before,.fa-flash:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-clipboard:before,.fa-paste:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell-o:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-chain-broken:before,.fa-unlink:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:""}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:""}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:""}.fa-eur:before,.fa-euro:before{content:""}.fa-gbp:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-inr:before,.fa-rupee:before{content:""}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:""}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:""}.fa-krw:before,.fa-won:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before,.icon-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before,.fa-gratipay:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-try:before,.fa-turkish-lira:before{content:""}.fa-plus-square-o:before,.wy-menu-vertical li button.toctree-expand:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-bank:before,.fa-institution:before,.fa-university:before{content:""}.fa-graduation-cap:before,.fa-mortar-board:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-pied-piper-pp:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:""}.fa-file-archive-o:before,.fa-file-zip-o:before{content:""}.fa-file-audio-o:before,.fa-file-sound-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:""}.fa-empire:before,.fa-ge:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-paper-plane:before,.fa-send:before{content:""}.fa-paper-plane-o:before,.fa-send-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before{content:""}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:""}.fa-meanpath:before{content:""}.fa-buysellads:before{content:""}.fa-connectdevelop:before{content:""}.fa-dashcube:before{content:""}.fa-forumbee:before{content:""}.fa-leanpub:before{content:""}.fa-sellsy:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-simplybuilt:before{content:""}.fa-skyatlas:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-diamond:before{content:""}.fa-ship:before{content:""}.fa-user-secret:before{content:""}.fa-motorcycle:before{content:""}.fa-street-view:before{content:""}.fa-heartbeat:before{content:""}.fa-venus:before{content:""}.fa-mars:before{content:""}.fa-mercury:before{content:""}.fa-intersex:before,.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-venus-double:before{content:""}.fa-mars-double:before{content:""}.fa-venus-mars:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-neuter:before{content:""}.fa-genderless:before{content:""}.fa-facebook-official:before{content:""}.fa-pinterest-p:before{content:""}.fa-whatsapp:before{content:""}.fa-server:before{content:""}.fa-user-plus:before{content:""}.fa-user-times:before{content:""}.fa-bed:before,.fa-hotel:before{content:""}.fa-viacoin:before{content:""}.fa-train:before{content:""}.fa-subway:before{content:""}.fa-medium:before{content:""}.fa-y-combinator:before,.fa-yc:before{content:""}.fa-optin-monster:before{content:""}.fa-opencart:before{content:""}.fa-expeditedssl:before{content:""}.fa-battery-4:before,.fa-battery-full:before,.fa-battery:before{content:""}.fa-battery-3:before,.fa-battery-three-quarters:before{content:""}.fa-battery-2:before,.fa-battery-half:before{content:""}.fa-battery-1:before,.fa-battery-quarter:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-mouse-pointer:before{content:""}.fa-i-cursor:before{content:""}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-sticky-note:before{content:""}.fa-sticky-note-o:before{content:""}.fa-cc-jcb:before{content:""}.fa-cc-diners-club:before{content:""}.fa-clone:before{content:""}.fa-balance-scale:before{content:""}.fa-hourglass-o:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass:before{content:""}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:""}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:""}.fa-hand-scissors-o:before{content:""}.fa-hand-lizard-o:before{content:""}.fa-hand-spock-o:before{content:""}.fa-hand-pointer-o:before{content:""}.fa-hand-peace-o:before{content:""}.fa-trademark:before{content:""}.fa-registered:before{content:""}.fa-creative-commons:before{content:""}.fa-gg:before{content:""}.fa-gg-circle:before{content:""}.fa-tripadvisor:before{content:""}.fa-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-get-pocket:before{content:""}.fa-wikipedia-w:before{content:""}.fa-safari:before{content:""}.fa-chrome:before{content:""}.fa-firefox:before{content:""}.fa-opera:before{content:""}.fa-internet-explorer:before{content:""}.fa-television:before,.fa-tv:before{content:""}.fa-contao:before{content:""}.fa-500px:before{content:""}.fa-amazon:before{content:""}.fa-calendar-plus-o:before{content:""}.fa-calendar-minus-o:before{content:""}.fa-calendar-times-o:before{content:""}.fa-calendar-check-o:before{content:""}.fa-industry:before{content:""}.fa-map-pin:before{content:""}.fa-map-signs:before{content:""}.fa-map-o:before{content:""}.fa-map:before{content:""}.fa-commenting:before{content:""}.fa-commenting-o:before{content:""}.fa-houzz:before{content:""}.fa-vimeo:before{content:""}.fa-black-tie:before{content:""}.fa-fonticons:before{content:""}.fa-reddit-alien:before{content:""}.fa-edge:before{content:""}.fa-credit-card-alt:before{content:""}.fa-codiepie:before{content:""}.fa-modx:before{content:""}.fa-fort-awesome:before{content:""}.fa-usb:before{content:""}.fa-product-hunt:before{content:""}.fa-mixcloud:before{content:""}.fa-scribd:before{content:""}.fa-pause-circle:before{content:""}.fa-pause-circle-o:before{content:""}.fa-stop-circle:before{content:""}.fa-stop-circle-o:before{content:""}.fa-shopping-bag:before{content:""}.fa-shopping-basket:before{content:""}.fa-hashtag:before{content:""}.fa-bluetooth:before{content:""}.fa-bluetooth-b:before{content:""}.fa-percent:before{content:""}.fa-gitlab:before,.icon-gitlab:before{content:""}.fa-wpbeginner:before{content:""}.fa-wpforms:before{content:""}.fa-envira:before{content:""}.fa-universal-access:before{content:""}.fa-wheelchair-alt:before{content:""}.fa-question-circle-o:before{content:""}.fa-blind:before{content:""}.fa-audio-description:before{content:""}.fa-volume-control-phone:before{content:""}.fa-braille:before{content:""}.fa-assistive-listening-systems:before{content:""}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:""}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:""}.fa-glide:before{content:""}.fa-glide-g:before{content:""}.fa-sign-language:before,.fa-signing:before{content:""}.fa-low-vision:before{content:""}.fa-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-snapchat-square:before{content:""}.fa-pied-piper:before{content:""}.fa-first-order:before{content:""}.fa-yoast:before{content:""}.fa-themeisle:before{content:""}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:""}.fa-fa:before,.fa-font-awesome:before{content:""}.fa-handshake-o:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-o:before{content:""}.fa-linode:before{content:""}.fa-address-book:before{content:""}.fa-address-book-o:before{content:""}.fa-address-card:before,.fa-vcard:before{content:""}.fa-address-card-o:before,.fa-vcard-o:before{content:""}.fa-user-circle:before{content:""}.fa-user-circle-o:before{content:""}.fa-user-o:before{content:""}.fa-id-badge:before{content:""}.fa-drivers-license:before,.fa-id-card:before{content:""}.fa-drivers-license-o:before,.fa-id-card-o:before{content:""}.fa-quora:before{content:""}.fa-free-code-camp:before{content:""}.fa-telegram:before{content:""}.fa-thermometer-4:before,.fa-thermometer-full:before,.fa-thermometer:before{content:""}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:""}.fa-thermometer-2:before,.fa-thermometer-half:before{content:""}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:""}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:""}.fa-shower:before{content:""}.fa-bath:before,.fa-bathtub:before,.fa-s15:before{content:""}.fa-podcast:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-times-rectangle:before,.fa-window-close:before{content:""}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:""}.fa-bandcamp:before{content:""}.fa-grav:before{content:""}.fa-etsy:before{content:""}.fa-imdb:before{content:""}.fa-ravelry:before{content:""}.fa-eercast:before{content:""}.fa-microchip:before{content:""}.fa-snowflake-o:before{content:""}.fa-superpowers:before{content:""}.fa-wpexplorer:before{content:""}.fa-meetup:before{content:""}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-dropdown .caret,.wy-inline-validate.wy-inline-validate-danger .wy-input-context,.wy-inline-validate.wy-inline-validate-info .wy-input-context,.wy-inline-validate.wy-inline-validate-success .wy-input-context,.wy-inline-validate.wy-inline-validate-warning .wy-input-context,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li button.toctree-expand{font-family:inherit}.fa:before,.icon:before,.rst-content .admonition-title:before,.rst-content .code-block-caption .headerlink:before,.rst-content .eqno .headerlink:before,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content p .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before,.wy-menu-vertical li button.toctree-expand:before{font-family:FontAwesome;display:inline-block;font-style:normal;font-weight:400;line-height:1;text-decoration:inherit}.rst-content .code-block-caption a .headerlink,.rst-content .eqno a .headerlink,.rst-content a .admonition-title,.rst-content code.download a span:first-child,.rst-content dl dt a .headerlink,.rst-content h1 a .headerlink,.rst-content h2 a .headerlink,.rst-content h3 a .headerlink,.rst-content h4 a .headerlink,.rst-content h5 a .headerlink,.rst-content h6 a .headerlink,.rst-content p.caption a .headerlink,.rst-content p a .headerlink,.rst-content table>caption a .headerlink,.rst-content tt.download a span:first-child,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li a button.toctree-expand,a .fa,a .icon,a .rst-content .admonition-title,a .rst-content .code-block-caption .headerlink,a .rst-content .eqno .headerlink,a .rst-content code.download span:first-child,a .rst-content dl dt .headerlink,a .rst-content h1 .headerlink,a .rst-content h2 .headerlink,a .rst-content h3 .headerlink,a .rst-content h4 .headerlink,a .rst-content h5 .headerlink,a .rst-content h6 .headerlink,a .rst-content p.caption .headerlink,a .rst-content p .headerlink,a .rst-content table>caption .headerlink,a .rst-content tt.download span:first-child,a .wy-menu-vertical li button.toctree-expand{display:inline-block;text-decoration:inherit}.btn .fa,.btn .icon,.btn .rst-content .admonition-title,.btn .rst-content .code-block-caption .headerlink,.btn .rst-content .eqno .headerlink,.btn .rst-content code.download span:first-child,.btn .rst-content dl dt .headerlink,.btn .rst-content h1 .headerlink,.btn .rst-content h2 .headerlink,.btn .rst-content h3 .headerlink,.btn .rst-content h4 .headerlink,.btn .rst-content h5 .headerlink,.btn .rst-content h6 .headerlink,.btn .rst-content p .headerlink,.btn .rst-content table>caption .headerlink,.btn .rst-content tt.download span:first-child,.btn .wy-menu-vertical li.current>a button.toctree-expand,.btn .wy-menu-vertical li.on a button.toctree-expand,.btn .wy-menu-vertical li button.toctree-expand,.nav .fa,.nav .icon,.nav .rst-content .admonition-title,.nav .rst-content .code-block-caption .headerlink,.nav .rst-content .eqno .headerlink,.nav .rst-content code.download span:first-child,.nav .rst-content dl dt .headerlink,.nav .rst-content h1 .headerlink,.nav .rst-content h2 .headerlink,.nav .rst-content h3 .headerlink,.nav .rst-content h4 .headerlink,.nav .rst-content h5 .headerlink,.nav .rst-content h6 .headerlink,.nav .rst-content p .headerlink,.nav .rst-content table>caption .headerlink,.nav .rst-content tt.download span:first-child,.nav .wy-menu-vertical li.current>a button.toctree-expand,.nav .wy-menu-vertical li.on a button.toctree-expand,.nav .wy-menu-vertical li button.toctree-expand,.rst-content .btn .admonition-title,.rst-content .code-block-caption .btn .headerlink,.rst-content .code-block-caption .nav .headerlink,.rst-content .eqno .btn .headerlink,.rst-content .eqno .nav .headerlink,.rst-content .nav .admonition-title,.rst-content code.download .btn span:first-child,.rst-content code.download .nav span:first-child,.rst-content dl dt .btn .headerlink,.rst-content dl dt .nav .headerlink,.rst-content h1 .btn .headerlink,.rst-content h1 .nav .headerlink,.rst-content h2 .btn .headerlink,.rst-content h2 .nav .headerlink,.rst-content h3 .btn .headerlink,.rst-content h3 .nav .headerlink,.rst-content h4 .btn .headerlink,.rst-content h4 .nav .headerlink,.rst-content h5 .btn .headerlink,.rst-content h5 .nav .headerlink,.rst-content h6 .btn .headerlink,.rst-content h6 .nav .headerlink,.rst-content p .btn .headerlink,.rst-content p .nav .headerlink,.rst-content table>caption .btn .headerlink,.rst-content table>caption .nav .headerlink,.rst-content tt.download .btn span:first-child,.rst-content tt.download .nav span:first-child,.wy-menu-vertical li .btn button.toctree-expand,.wy-menu-vertical li.current>a .btn button.toctree-expand,.wy-menu-vertical li.current>a .nav button.toctree-expand,.wy-menu-vertical li .nav button.toctree-expand,.wy-menu-vertical li.on a .btn button.toctree-expand,.wy-menu-vertical li.on a .nav button.toctree-expand{display:inline}.btn .fa-large.icon,.btn .fa.fa-large,.btn .rst-content .code-block-caption .fa-large.headerlink,.btn .rst-content .eqno .fa-large.headerlink,.btn .rst-content .fa-large.admonition-title,.btn .rst-content code.download span.fa-large:first-child,.btn .rst-content dl dt .fa-large.headerlink,.btn .rst-content h1 .fa-large.headerlink,.btn .rst-content h2 .fa-large.headerlink,.btn .rst-content h3 .fa-large.headerlink,.btn .rst-content h4 .fa-large.headerlink,.btn .rst-content h5 .fa-large.headerlink,.btn .rst-content h6 .fa-large.headerlink,.btn .rst-content p .fa-large.headerlink,.btn .rst-content table>caption .fa-large.headerlink,.btn .rst-content tt.download span.fa-large:first-child,.btn .wy-menu-vertical li button.fa-large.toctree-expand,.nav .fa-large.icon,.nav .fa.fa-large,.nav .rst-content .code-block-caption .fa-large.headerlink,.nav .rst-content .eqno .fa-large.headerlink,.nav .rst-content .fa-large.admonition-title,.nav .rst-content code.download span.fa-large:first-child,.nav .rst-content dl dt .fa-large.headerlink,.nav .rst-content h1 .fa-large.headerlink,.nav .rst-content h2 .fa-large.headerlink,.nav .rst-content h3 .fa-large.headerlink,.nav .rst-content h4 .fa-large.headerlink,.nav .rst-content h5 .fa-large.headerlink,.nav .rst-content h6 .fa-large.headerlink,.nav .rst-content p .fa-large.headerlink,.nav .rst-content table>caption .fa-large.headerlink,.nav .rst-content tt.download span.fa-large:first-child,.nav .wy-menu-vertical li button.fa-large.toctree-expand,.rst-content .btn .fa-large.admonition-title,.rst-content .code-block-caption .btn .fa-large.headerlink,.rst-content .code-block-caption .nav .fa-large.headerlink,.rst-content .eqno .btn .fa-large.headerlink,.rst-content .eqno .nav .fa-large.headerlink,.rst-content .nav .fa-large.admonition-title,.rst-content code.download .btn span.fa-large:first-child,.rst-content code.download .nav span.fa-large:first-child,.rst-content dl dt .btn .fa-large.headerlink,.rst-content dl dt .nav .fa-large.headerlink,.rst-content h1 .btn .fa-large.headerlink,.rst-content h1 .nav .fa-large.headerlink,.rst-content h2 .btn .fa-large.headerlink,.rst-content h2 .nav .fa-large.headerlink,.rst-content h3 .btn .fa-large.headerlink,.rst-content h3 .nav .fa-large.headerlink,.rst-content h4 .btn .fa-large.headerlink,.rst-content h4 .nav .fa-large.headerlink,.rst-content h5 .btn .fa-large.headerlink,.rst-content h5 .nav .fa-large.headerlink,.rst-content h6 .btn .fa-large.headerlink,.rst-content h6 .nav .fa-large.headerlink,.rst-content p .btn .fa-large.headerlink,.rst-content p .nav .fa-large.headerlink,.rst-content table>caption .btn .fa-large.headerlink,.rst-content table>caption .nav .fa-large.headerlink,.rst-content tt.download .btn span.fa-large:first-child,.rst-content tt.download .nav span.fa-large:first-child,.wy-menu-vertical li .btn button.fa-large.toctree-expand,.wy-menu-vertical li .nav button.fa-large.toctree-expand{line-height:.9em}.btn .fa-spin.icon,.btn .fa.fa-spin,.btn .rst-content .code-block-caption .fa-spin.headerlink,.btn .rst-content .eqno .fa-spin.headerlink,.btn .rst-content .fa-spin.admonition-title,.btn .rst-content code.download span.fa-spin:first-child,.btn .rst-content dl dt .fa-spin.headerlink,.btn .rst-content h1 .fa-spin.headerlink,.btn .rst-content h2 .fa-spin.headerlink,.btn .rst-content h3 .fa-spin.headerlink,.btn .rst-content h4 .fa-spin.headerlink,.btn .rst-content h5 .fa-spin.headerlink,.btn .rst-content h6 .fa-spin.headerlink,.btn .rst-content p .fa-spin.headerlink,.btn .rst-content table>caption .fa-spin.headerlink,.btn .rst-content tt.download span.fa-spin:first-child,.btn .wy-menu-vertical li button.fa-spin.toctree-expand,.nav .fa-spin.icon,.nav .fa.fa-spin,.nav .rst-content .code-block-caption .fa-spin.headerlink,.nav .rst-content .eqno .fa-spin.headerlink,.nav .rst-content .fa-spin.admonition-title,.nav .rst-content code.download span.fa-spin:first-child,.nav .rst-content dl dt .fa-spin.headerlink,.nav .rst-content h1 .fa-spin.headerlink,.nav .rst-content h2 .fa-spin.headerlink,.nav .rst-content h3 .fa-spin.headerlink,.nav .rst-content h4 .fa-spin.headerlink,.nav .rst-content h5 .fa-spin.headerlink,.nav .rst-content h6 .fa-spin.headerlink,.nav .rst-content p .fa-spin.headerlink,.nav .rst-content table>caption .fa-spin.headerlink,.nav .rst-content tt.download span.fa-spin:first-child,.nav .wy-menu-vertical li button.fa-spin.toctree-expand,.rst-content .btn .fa-spin.admonition-title,.rst-content .code-block-caption .btn .fa-spin.headerlink,.rst-content .code-block-caption .nav .fa-spin.headerlink,.rst-content .eqno .btn .fa-spin.headerlink,.rst-content .eqno .nav .fa-spin.headerlink,.rst-content .nav .fa-spin.admonition-title,.rst-content code.download .btn span.fa-spin:first-child,.rst-content code.download .nav span.fa-spin:first-child,.rst-content dl dt .btn .fa-spin.headerlink,.rst-content dl dt .nav .fa-spin.headerlink,.rst-content h1 .btn .fa-spin.headerlink,.rst-content h1 .nav .fa-spin.headerlink,.rst-content h2 .btn .fa-spin.headerlink,.rst-content h2 .nav .fa-spin.headerlink,.rst-content h3 .btn .fa-spin.headerlink,.rst-content h3 .nav .fa-spin.headerlink,.rst-content h4 .btn .fa-spin.headerlink,.rst-content h4 .nav .fa-spin.headerlink,.rst-content h5 .btn .fa-spin.headerlink,.rst-content h5 .nav .fa-spin.headerlink,.rst-content h6 .btn .fa-spin.headerlink,.rst-content h6 .nav .fa-spin.headerlink,.rst-content p .btn .fa-spin.headerlink,.rst-content p .nav .fa-spin.headerlink,.rst-content table>caption .btn .fa-spin.headerlink,.rst-content table>caption .nav .fa-spin.headerlink,.rst-content tt.download .btn span.fa-spin:first-child,.rst-content tt.download .nav span.fa-spin:first-child,.wy-menu-vertical li .btn button.fa-spin.toctree-expand,.wy-menu-vertical li .nav button.fa-spin.toctree-expand{display:inline-block}.btn.fa:before,.btn.icon:before,.rst-content .btn.admonition-title:before,.rst-content .code-block-caption .btn.headerlink:before,.rst-content .eqno .btn.headerlink:before,.rst-content code.download span.btn:first-child:before,.rst-content dl dt .btn.headerlink:before,.rst-content h1 .btn.headerlink:before,.rst-content h2 .btn.headerlink:before,.rst-content h3 .btn.headerlink:before,.rst-content h4 .btn.headerlink:before,.rst-content h5 .btn.headerlink:before,.rst-content h6 .btn.headerlink:before,.rst-content p .btn.headerlink:before,.rst-content table>caption .btn.headerlink:before,.rst-content tt.download span.btn:first-child:before,.wy-menu-vertical li button.btn.toctree-expand:before{opacity:.5;-webkit-transition:opacity .05s ease-in;-moz-transition:opacity .05s ease-in;transition:opacity .05s ease-in}.btn.fa:hover:before,.btn.icon:hover:before,.rst-content .btn.admonition-title:hover:before,.rst-content .code-block-caption .btn.headerlink:hover:before,.rst-content .eqno .btn.headerlink:hover:before,.rst-content code.download span.btn:first-child:hover:before,.rst-content dl dt .btn.headerlink:hover:before,.rst-content h1 .btn.headerlink:hover:before,.rst-content h2 .btn.headerlink:hover:before,.rst-content h3 .btn.headerlink:hover:before,.rst-content h4 .btn.headerlink:hover:before,.rst-content h5 .btn.headerlink:hover:before,.rst-content h6 .btn.headerlink:hover:before,.rst-content p .btn.headerlink:hover:before,.rst-content table>caption .btn.headerlink:hover:before,.rst-content tt.download span.btn:first-child:hover:before,.wy-menu-vertical li button.btn.toctree-expand:hover:before{opacity:1}.btn-mini .fa:before,.btn-mini .icon:before,.btn-mini .rst-content .admonition-title:before,.btn-mini .rst-content .code-block-caption .headerlink:before,.btn-mini .rst-content .eqno .headerlink:before,.btn-mini .rst-content code.download span:first-child:before,.btn-mini .rst-content dl dt .headerlink:before,.btn-mini .rst-content h1 .headerlink:before,.btn-mini .rst-content h2 .headerlink:before,.btn-mini .rst-content h3 .headerlink:before,.btn-mini .rst-content h4 .headerlink:before,.btn-mini .rst-content h5 .headerlink:before,.btn-mini .rst-content h6 .headerlink:before,.btn-mini .rst-content p .headerlink:before,.btn-mini .rst-content table>caption .headerlink:before,.btn-mini .rst-content tt.download span:first-child:before,.btn-mini .wy-menu-vertical li button.toctree-expand:before,.rst-content .btn-mini .admonition-title:before,.rst-content .code-block-caption .btn-mini .headerlink:before,.rst-content .eqno .btn-mini .headerlink:before,.rst-content code.download .btn-mini span:first-child:before,.rst-content dl dt .btn-mini .headerlink:before,.rst-content h1 .btn-mini .headerlink:before,.rst-content h2 .btn-mini .headerlink:before,.rst-content h3 .btn-mini .headerlink:before,.rst-content h4 .btn-mini .headerlink:before,.rst-content h5 .btn-mini .headerlink:before,.rst-content h6 .btn-mini .headerlink:before,.rst-content p .btn-mini .headerlink:before,.rst-content table>caption .btn-mini .headerlink:before,.rst-content tt.download .btn-mini span:first-child:before,.wy-menu-vertical li .btn-mini button.toctree-expand:before{font-size:14px;vertical-align:-15%}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.wy-alert{padding:12px;line-height:24px;margin-bottom:24px;background:#e7f2fa}.rst-content .admonition-title,.wy-alert-title{font-weight:700;display:block;color:#fff;background:#6ab0de;padding:6px 12px;margin:-12px -12px 12px}.rst-content .danger,.rst-content .error,.rst-content .wy-alert-danger.admonition,.rst-content .wy-alert-danger.admonition-todo,.rst-content .wy-alert-danger.attention,.rst-content .wy-alert-danger.caution,.rst-content .wy-alert-danger.hint,.rst-content .wy-alert-danger.important,.rst-content .wy-alert-danger.note,.rst-content .wy-alert-danger.seealso,.rst-content .wy-alert-danger.tip,.rst-content .wy-alert-danger.warning,.wy-alert.wy-alert-danger{background:#fdf3f2}.rst-content .danger .admonition-title,.rst-content .danger .wy-alert-title,.rst-content .error .admonition-title,.rst-content .error .wy-alert-title,.rst-content .wy-alert-danger.admonition-todo .admonition-title,.rst-content .wy-alert-danger.admonition-todo .wy-alert-title,.rst-content .wy-alert-danger.admonition .admonition-title,.rst-content .wy-alert-danger.admonition .wy-alert-title,.rst-content .wy-alert-danger.attention .admonition-title,.rst-content .wy-alert-danger.attention .wy-alert-title,.rst-content .wy-alert-danger.caution .admonition-title,.rst-content .wy-alert-danger.caution .wy-alert-title,.rst-content .wy-alert-danger.hint .admonition-title,.rst-content .wy-alert-danger.hint .wy-alert-title,.rst-content .wy-alert-danger.important .admonition-title,.rst-content .wy-alert-danger.important .wy-alert-title,.rst-content .wy-alert-danger.note .admonition-title,.rst-content .wy-alert-danger.note .wy-alert-title,.rst-content .wy-alert-danger.seealso .admonition-title,.rst-content .wy-alert-danger.seealso .wy-alert-title,.rst-content .wy-alert-danger.tip .admonition-title,.rst-content .wy-alert-danger.tip .wy-alert-title,.rst-content .wy-alert-danger.warning .admonition-title,.rst-content .wy-alert-danger.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-danger .admonition-title,.wy-alert.wy-alert-danger .rst-content .admonition-title,.wy-alert.wy-alert-danger .wy-alert-title{background:#f29f97}.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .warning,.rst-content .wy-alert-warning.admonition,.rst-content .wy-alert-warning.danger,.rst-content .wy-alert-warning.error,.rst-content .wy-alert-warning.hint,.rst-content .wy-alert-warning.important,.rst-content .wy-alert-warning.note,.rst-content .wy-alert-warning.seealso,.rst-content .wy-alert-warning.tip,.wy-alert.wy-alert-warning{background:#ffedcc}.rst-content .admonition-todo .admonition-title,.rst-content .admonition-todo .wy-alert-title,.rst-content .attention .admonition-title,.rst-content .attention .wy-alert-title,.rst-content .caution .admonition-title,.rst-content .caution .wy-alert-title,.rst-content .warning .admonition-title,.rst-content .warning .wy-alert-title,.rst-content .wy-alert-warning.admonition .admonition-title,.rst-content .wy-alert-warning.admonition .wy-alert-title,.rst-content .wy-alert-warning.danger .admonition-title,.rst-content .wy-alert-warning.danger .wy-alert-title,.rst-content .wy-alert-warning.error .admonition-title,.rst-content .wy-alert-warning.error .wy-alert-title,.rst-content .wy-alert-warning.hint .admonition-title,.rst-content .wy-alert-warning.hint .wy-alert-title,.rst-content .wy-alert-warning.important .admonition-title,.rst-content .wy-alert-warning.important .wy-alert-title,.rst-content .wy-alert-warning.note .admonition-title,.rst-content .wy-alert-warning.note .wy-alert-title,.rst-content .wy-alert-warning.seealso .admonition-title,.rst-content .wy-alert-warning.seealso .wy-alert-title,.rst-content .wy-alert-warning.tip .admonition-title,.rst-content .wy-alert-warning.tip .wy-alert-title,.rst-content .wy-alert.wy-alert-warning .admonition-title,.wy-alert.wy-alert-warning .rst-content .admonition-title,.wy-alert.wy-alert-warning .wy-alert-title{background:#f0b37e}.rst-content .note,.rst-content .seealso,.rst-content .wy-alert-info.admonition,.rst-content .wy-alert-info.admonition-todo,.rst-content .wy-alert-info.attention,.rst-content .wy-alert-info.caution,.rst-content .wy-alert-info.danger,.rst-content .wy-alert-info.error,.rst-content .wy-alert-info.hint,.rst-content .wy-alert-info.important,.rst-content .wy-alert-info.tip,.rst-content .wy-alert-info.warning,.wy-alert.wy-alert-info{background:#e7f2fa}.rst-content .note .admonition-title,.rst-content .note .wy-alert-title,.rst-content .seealso .admonition-title,.rst-content .seealso .wy-alert-title,.rst-content .wy-alert-info.admonition-todo .admonition-title,.rst-content .wy-alert-info.admonition-todo .wy-alert-title,.rst-content .wy-alert-info.admonition .admonition-title,.rst-content .wy-alert-info.admonition .wy-alert-title,.rst-content .wy-alert-info.attention .admonition-title,.rst-content .wy-alert-info.attention .wy-alert-title,.rst-content .wy-alert-info.caution .admonition-title,.rst-content .wy-alert-info.caution .wy-alert-title,.rst-content .wy-alert-info.danger .admonition-title,.rst-content .wy-alert-info.danger .wy-alert-title,.rst-content .wy-alert-info.error .admonition-title,.rst-content .wy-alert-info.error .wy-alert-title,.rst-content .wy-alert-info.hint .admonition-title,.rst-content .wy-alert-info.hint .wy-alert-title,.rst-content .wy-alert-info.important .admonition-title,.rst-content .wy-alert-info.important .wy-alert-title,.rst-content .wy-alert-info.tip .admonition-title,.rst-content .wy-alert-info.tip .wy-alert-title,.rst-content .wy-alert-info.warning .admonition-title,.rst-content .wy-alert-info.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-info .admonition-title,.wy-alert.wy-alert-info .rst-content .admonition-title,.wy-alert.wy-alert-info .wy-alert-title{background:#6ab0de}.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .wy-alert-success.admonition,.rst-content .wy-alert-success.admonition-todo,.rst-content .wy-alert-success.attention,.rst-content .wy-alert-success.caution,.rst-content .wy-alert-success.danger,.rst-content .wy-alert-success.error,.rst-content .wy-alert-success.note,.rst-content .wy-alert-success.seealso,.rst-content .wy-alert-success.warning,.wy-alert.wy-alert-success{background:#dbfaf4}.rst-content .hint .admonition-title,.rst-content .hint .wy-alert-title,.rst-content .important .admonition-title,.rst-content .important .wy-alert-title,.rst-content .tip .admonition-title,.rst-content .tip .wy-alert-title,.rst-content .wy-alert-success.admonition-todo .admonition-title,.rst-content .wy-alert-success.admonition-todo .wy-alert-title,.rst-content .wy-alert-success.admonition .admonition-title,.rst-content .wy-alert-success.admonition .wy-alert-title,.rst-content .wy-alert-success.attention .admonition-title,.rst-content .wy-alert-success.attention .wy-alert-title,.rst-content .wy-alert-success.caution .admonition-title,.rst-content .wy-alert-success.caution .wy-alert-title,.rst-content .wy-alert-success.danger .admonition-title,.rst-content .wy-alert-success.danger .wy-alert-title,.rst-content .wy-alert-success.error .admonition-title,.rst-content .wy-alert-success.error .wy-alert-title,.rst-content .wy-alert-success.note .admonition-title,.rst-content .wy-alert-success.note .wy-alert-title,.rst-content .wy-alert-success.seealso .admonition-title,.rst-content .wy-alert-success.seealso .wy-alert-title,.rst-content .wy-alert-success.warning .admonition-title,.rst-content .wy-alert-success.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-success .admonition-title,.wy-alert.wy-alert-success .rst-content .admonition-title,.wy-alert.wy-alert-success .wy-alert-title{background:#1abc9c}.rst-content .wy-alert-neutral.admonition,.rst-content .wy-alert-neutral.admonition-todo,.rst-content .wy-alert-neutral.attention,.rst-content .wy-alert-neutral.caution,.rst-content .wy-alert-neutral.danger,.rst-content .wy-alert-neutral.error,.rst-content .wy-alert-neutral.hint,.rst-content .wy-alert-neutral.important,.rst-content .wy-alert-neutral.note,.rst-content .wy-alert-neutral.seealso,.rst-content .wy-alert-neutral.tip,.rst-content .wy-alert-neutral.warning,.wy-alert.wy-alert-neutral{background:#f3f6f6}.rst-content .wy-alert-neutral.admonition-todo .admonition-title,.rst-content .wy-alert-neutral.admonition-todo .wy-alert-title,.rst-content .wy-alert-neutral.admonition .admonition-title,.rst-content .wy-alert-neutral.admonition .wy-alert-title,.rst-content .wy-alert-neutral.attention .admonition-title,.rst-content .wy-alert-neutral.attention .wy-alert-title,.rst-content .wy-alert-neutral.caution .admonition-title,.rst-content .wy-alert-neutral.caution .wy-alert-title,.rst-content .wy-alert-neutral.danger .admonition-title,.rst-content .wy-alert-neutral.danger .wy-alert-title,.rst-content .wy-alert-neutral.error .admonition-title,.rst-content .wy-alert-neutral.error .wy-alert-title,.rst-content .wy-alert-neutral.hint .admonition-title,.rst-content .wy-alert-neutral.hint .wy-alert-title,.rst-content .wy-alert-neutral.important .admonition-title,.rst-content .wy-alert-neutral.important .wy-alert-title,.rst-content .wy-alert-neutral.note .admonition-title,.rst-content .wy-alert-neutral.note .wy-alert-title,.rst-content .wy-alert-neutral.seealso .admonition-title,.rst-content .wy-alert-neutral.seealso .wy-alert-title,.rst-content .wy-alert-neutral.tip .admonition-title,.rst-content .wy-alert-neutral.tip .wy-alert-title,.rst-content .wy-alert-neutral.warning .admonition-title,.rst-content .wy-alert-neutral.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-neutral .admonition-title,.wy-alert.wy-alert-neutral .rst-content .admonition-title,.wy-alert.wy-alert-neutral .wy-alert-title{color:#404040;background:#e1e4e5}.rst-content .wy-alert-neutral.admonition-todo a,.rst-content .wy-alert-neutral.admonition a,.rst-content .wy-alert-neutral.attention a,.rst-content .wy-alert-neutral.caution a,.rst-content .wy-alert-neutral.danger a,.rst-content .wy-alert-neutral.error a,.rst-content .wy-alert-neutral.hint a,.rst-content .wy-alert-neutral.important a,.rst-content .wy-alert-neutral.note a,.rst-content .wy-alert-neutral.seealso a,.rst-content .wy-alert-neutral.tip a,.rst-content .wy-alert-neutral.warning a,.wy-alert.wy-alert-neutral a{color:#2980b9}.rst-content .admonition-todo p:last-child,.rst-content .admonition p:last-child,.rst-content .attention p:last-child,.rst-content .caution p:last-child,.rst-content .danger p:last-child,.rst-content .error p:last-child,.rst-content .hint p:last-child,.rst-content .important p:last-child,.rst-content .note p:last-child,.rst-content .seealso p:last-child,.rst-content .tip p:last-child,.rst-content .warning p:last-child,.wy-alert p:last-child{margin-bottom:0}.wy-tray-container{position:fixed;bottom:0;left:0;z-index:600}.wy-tray-container li{display:block;width:300px;background:transparent;color:#fff;text-align:center;box-shadow:0 5px 5px 0 rgba(0,0,0,.1);padding:0 24px;min-width:20%;opacity:0;height:0;line-height:56px;overflow:hidden;-webkit-transition:all .3s ease-in;-moz-transition:all .3s ease-in;transition:all .3s ease-in}.wy-tray-container li.wy-tray-item-success{background:#27ae60}.wy-tray-container li.wy-tray-item-info{background:#2980b9}.wy-tray-container li.wy-tray-item-warning{background:#e67e22}.wy-tray-container li.wy-tray-item-danger{background:#e74c3c}.wy-tray-container li.on{opacity:1;height:56px}@media screen and (max-width:768px){.wy-tray-container{bottom:auto;top:0;width:100%}.wy-tray-container li{width:100%}}button{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;cursor:pointer;line-height:normal;-webkit-appearance:button;*overflow:visible}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}button[disabled]{cursor:default}.btn{display:inline-block;border-radius:2px;line-height:normal;white-space:nowrap;text-align:center;cursor:pointer;font-size:100%;padding:6px 12px 8px;color:#fff;border:1px solid rgba(0,0,0,.1);background-color:#27ae60;text-decoration:none;font-weight:400;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 2px -1px hsla(0,0%,100%,.5),inset 0 -2px 0 0 rgba(0,0,0,.1);outline-none:false;vertical-align:middle;*display:inline;zoom:1;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:all .1s linear;-moz-transition:all .1s linear;transition:all .1s linear}.btn-hover{background:#2e8ece;color:#fff}.btn:hover{background:#2cc36b;color:#fff}.btn:focus{background:#2cc36b;outline:0}.btn:active{box-shadow:inset 0 -1px 0 0 rgba(0,0,0,.05),inset 0 2px 0 0 rgba(0,0,0,.1);padding:8px 12px 6px}.btn:visited{color:#fff}.btn-disabled,.btn-disabled:active,.btn-disabled:focus,.btn-disabled:hover,.btn:disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn::-moz-focus-inner{padding:0;border:0}.btn-small{font-size:80%}.btn-info{background-color:#2980b9!important}.btn-info:hover{background-color:#2e8ece!important}.btn-neutral{background-color:#f3f6f6!important;color:#404040!important}.btn-neutral:hover{background-color:#e5ebeb!important;color:#404040}.btn-neutral:visited{color:#404040!important}.btn-success{background-color:#27ae60!important}.btn-success:hover{background-color:#295!important}.btn-danger{background-color:#e74c3c!important}.btn-danger:hover{background-color:#ea6153!important}.btn-warning{background-color:#e67e22!important}.btn-warning:hover{background-color:#e98b39!important}.btn-invert{background-color:#222}.btn-invert:hover{background-color:#2f2f2f!important}.btn-link{background-color:transparent!important;color:#2980b9;box-shadow:none;border-color:transparent!important}.btn-link:active,.btn-link:hover{background-color:transparent!important;color:#409ad5!important;box-shadow:none}.btn-link:visited{color:#9b59b6}.wy-btn-group .btn,.wy-control .btn{vertical-align:middle}.wy-btn-group{margin-bottom:24px;*zoom:1}.wy-btn-group:after,.wy-btn-group:before{display:table;content:""}.wy-btn-group:after{clear:both}.wy-dropdown{position:relative;display:inline-block}.wy-dropdown-active .wy-dropdown-menu{display:block}.wy-dropdown-menu{position:absolute;left:0;display:none;float:left;top:100%;min-width:100%;background:#fcfcfc;z-index:100;border:1px solid #cfd7dd;box-shadow:0 2px 2px 0 rgba(0,0,0,.1);padding:12px}.wy-dropdown-menu>dd>a{display:block;clear:both;color:#404040;white-space:nowrap;font-size:90%;padding:0 12px;cursor:pointer}.wy-dropdown-menu>dd>a:hover{background:#2980b9;color:#fff}.wy-dropdown-menu>dd.divider{border-top:1px solid #cfd7dd;margin:6px 0}.wy-dropdown-menu>dd.search{padding-bottom:12px}.wy-dropdown-menu>dd.search input[type=search]{width:100%}.wy-dropdown-menu>dd.call-to-action{background:#e3e3e3;text-transform:uppercase;font-weight:500;font-size:80%}.wy-dropdown-menu>dd.call-to-action:hover{background:#e3e3e3}.wy-dropdown-menu>dd.call-to-action .btn{color:#fff}.wy-dropdown.wy-dropdown-up .wy-dropdown-menu{bottom:100%;top:auto;left:auto;right:0}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu{background:#fcfcfc;margin-top:2px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a{padding:6px 12px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a:hover{background:#2980b9;color:#fff}.wy-dropdown.wy-dropdown-left .wy-dropdown-menu{right:0;left:auto;text-align:right}.wy-dropdown-arrow:before{content:" ";border-bottom:5px solid #f5f5f5;border-left:5px solid transparent;border-right:5px solid transparent;position:absolute;display:block;top:-4px;left:50%;margin-left:-3px}.wy-dropdown-arrow.wy-dropdown-arrow-left:before{left:11px}.wy-form-stacked select{display:block}.wy-form-aligned .wy-help-inline,.wy-form-aligned input,.wy-form-aligned label,.wy-form-aligned select,.wy-form-aligned textarea{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-form-aligned .wy-control-group>label{display:inline-block;vertical-align:middle;width:10em;margin:6px 12px 0 0;float:left}.wy-form-aligned .wy-control{float:left}.wy-form-aligned .wy-control label{display:block}.wy-form-aligned .wy-control select{margin-top:6px}fieldset{margin:0}fieldset,legend{border:0;padding:0}legend{width:100%;white-space:normal;margin-bottom:24px;font-size:150%;*margin-left:-7px}label,legend{display:block}label{margin:0 0 .3125em;color:#333;font-size:90%}input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}.wy-control-group{margin-bottom:24px;max-width:1200px;margin-left:auto;margin-right:auto;*zoom:1}.wy-control-group:after,.wy-control-group:before{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group.wy-control-group-required>label:after{content:" *";color:#e74c3c}.wy-control-group .wy-form-full,.wy-control-group .wy-form-halves,.wy-control-group .wy-form-thirds{padding-bottom:12px}.wy-control-group .wy-form-full input[type=color],.wy-control-group .wy-form-full input[type=date],.wy-control-group .wy-form-full input[type=datetime-local],.wy-control-group .wy-form-full input[type=datetime],.wy-control-group .wy-form-full input[type=email],.wy-control-group .wy-form-full input[type=month],.wy-control-group .wy-form-full input[type=number],.wy-control-group .wy-form-full input[type=password],.wy-control-group .wy-form-full input[type=search],.wy-control-group .wy-form-full input[type=tel],.wy-control-group .wy-form-full input[type=text],.wy-control-group .wy-form-full input[type=time],.wy-control-group .wy-form-full input[type=url],.wy-control-group .wy-form-full input[type=week],.wy-control-group .wy-form-full select,.wy-control-group .wy-form-halves input[type=color],.wy-control-group .wy-form-halves input[type=date],.wy-control-group .wy-form-halves input[type=datetime-local],.wy-control-group .wy-form-halves input[type=datetime],.wy-control-group .wy-form-halves input[type=email],.wy-control-group .wy-form-halves input[type=month],.wy-control-group .wy-form-halves input[type=number],.wy-control-group .wy-form-halves input[type=password],.wy-control-group .wy-form-halves input[type=search],.wy-control-group .wy-form-halves input[type=tel],.wy-control-group .wy-form-halves input[type=text],.wy-control-group .wy-form-halves input[type=time],.wy-control-group .wy-form-halves input[type=url],.wy-control-group .wy-form-halves input[type=week],.wy-control-group .wy-form-halves select,.wy-control-group .wy-form-thirds input[type=color],.wy-control-group .wy-form-thirds input[type=date],.wy-control-group .wy-form-thirds input[type=datetime-local],.wy-control-group .wy-form-thirds input[type=datetime],.wy-control-group .wy-form-thirds input[type=email],.wy-control-group .wy-form-thirds input[type=month],.wy-control-group .wy-form-thirds input[type=number],.wy-control-group .wy-form-thirds input[type=password],.wy-control-group .wy-form-thirds input[type=search],.wy-control-group .wy-form-thirds input[type=tel],.wy-control-group .wy-form-thirds input[type=text],.wy-control-group .wy-form-thirds input[type=time],.wy-control-group .wy-form-thirds input[type=url],.wy-control-group .wy-form-thirds input[type=week],.wy-control-group .wy-form-thirds select{width:100%}.wy-control-group .wy-form-full{float:left;display:block;width:100%;margin-right:0}.wy-control-group .wy-form-full:last-child{margin-right:0}.wy-control-group .wy-form-halves{float:left;display:block;margin-right:2.35765%;width:48.82117%}.wy-control-group .wy-form-halves:last-child,.wy-control-group .wy-form-halves:nth-of-type(2n){margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(odd){clear:left}.wy-control-group .wy-form-thirds{float:left;display:block;margin-right:2.35765%;width:31.76157%}.wy-control-group .wy-form-thirds:last-child,.wy-control-group .wy-form-thirds:nth-of-type(3n){margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n+1){clear:left}.wy-control-group.wy-control-group-no-input .wy-control,.wy-control-no-input{margin:6px 0 0;font-size:90%}.wy-control-no-input{display:inline-block}.wy-control-group.fluid-input input[type=color],.wy-control-group.fluid-input input[type=date],.wy-control-group.fluid-input input[type=datetime-local],.wy-control-group.fluid-input input[type=datetime],.wy-control-group.fluid-input input[type=email],.wy-control-group.fluid-input input[type=month],.wy-control-group.fluid-input input[type=number],.wy-control-group.fluid-input input[type=password],.wy-control-group.fluid-input input[type=search],.wy-control-group.fluid-input input[type=tel],.wy-control-group.fluid-input input[type=text],.wy-control-group.fluid-input input[type=time],.wy-control-group.fluid-input input[type=url],.wy-control-group.fluid-input input[type=week]{width:100%}.wy-form-message-inline{padding-left:.3em;color:#666;font-size:90%}.wy-form-message{display:block;color:#999;font-size:70%;margin-top:.3125em;font-style:italic}.wy-form-message p{font-size:inherit;font-style:italic;margin-bottom:6px}.wy-form-message p:last-child{margin-bottom:0}input{line-height:normal}input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;*overflow:visible}input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week]{-webkit-appearance:none;padding:6px;display:inline-block;border:1px solid #ccc;font-size:80%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 3px #ddd;border-radius:0;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}input[type=datetime-local]{padding:.34375em .625em}input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{padding:0;margin-right:.3125em;*height:13px;*width:13px}input[type=checkbox],input[type=radio],input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus{outline:0;outline:thin dotted\9;border-color:#333}input.no-focus:focus{border-color:#ccc!important}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:thin dotted #333;outline:1px auto #129fea}input[type=color][disabled],input[type=date][disabled],input[type=datetime-local][disabled],input[type=datetime][disabled],input[type=email][disabled],input[type=month][disabled],input[type=number][disabled],input[type=password][disabled],input[type=search][disabled],input[type=tel][disabled],input[type=text][disabled],input[type=time][disabled],input[type=url][disabled],input[type=week][disabled]{cursor:not-allowed;background-color:#fafafa}input:focus:invalid,select:focus:invalid,textarea:focus:invalid{color:#e74c3c;border:1px solid #e74c3c}input:focus:invalid:focus,select:focus:invalid:focus,textarea:focus:invalid:focus{border-color:#e74c3c}input[type=checkbox]:focus:invalid:focus,input[type=file]:focus:invalid:focus,input[type=radio]:focus:invalid:focus{outline-color:#e74c3c}input.wy-input-large{padding:12px;font-size:100%}textarea{overflow:auto;vertical-align:top;width:100%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif}select,textarea{padding:.5em .625em;display:inline-block;border:1px solid #ccc;font-size:80%;box-shadow:inset 0 1px 3px #ddd;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}select{border:1px solid #ccc;background-color:#fff}select[multiple]{height:auto}select:focus,textarea:focus{outline:0}input[readonly],select[disabled],select[readonly],textarea[disabled],textarea[readonly]{cursor:not-allowed;background-color:#fafafa}input[type=checkbox][disabled],input[type=radio][disabled]{cursor:not-allowed}.wy-checkbox,.wy-radio{margin:6px 0;color:#404040;display:block}.wy-checkbox input,.wy-radio input{vertical-align:baseline}.wy-form-message-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-input-prefix,.wy-input-suffix{white-space:nowrap;padding:6px}.wy-input-prefix .wy-input-context,.wy-input-suffix .wy-input-context{line-height:27px;padding:0 8px;display:inline-block;font-size:80%;background-color:#f3f6f6;border:1px solid #ccc;color:#999}.wy-input-suffix .wy-input-context{border-left:0}.wy-input-prefix .wy-input-context{border-right:0}.wy-switch{position:relative;display:block;height:24px;margin-top:12px;cursor:pointer}.wy-switch:before{left:0;top:0;width:36px;height:12px;background:#ccc}.wy-switch:after,.wy-switch:before{position:absolute;content:"";display:block;border-radius:4px;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wy-switch:after{width:18px;height:18px;background:#999;left:-3px;top:-3px}.wy-switch span{position:absolute;left:48px;display:block;font-size:12px;color:#ccc;line-height:1}.wy-switch.active:before{background:#1e8449}.wy-switch.active:after{left:24px;background:#27ae60}.wy-switch.disabled{cursor:not-allowed;opacity:.8}.wy-control-group.wy-control-group-error .wy-form-message,.wy-control-group.wy-control-group-error>label{color:#e74c3c}.wy-control-group.wy-control-group-error input[type=color],.wy-control-group.wy-control-group-error input[type=date],.wy-control-group.wy-control-group-error input[type=datetime-local],.wy-control-group.wy-control-group-error input[type=datetime],.wy-control-group.wy-control-group-error input[type=email],.wy-control-group.wy-control-group-error input[type=month],.wy-control-group.wy-control-group-error input[type=number],.wy-control-group.wy-control-group-error input[type=password],.wy-control-group.wy-control-group-error input[type=search],.wy-control-group.wy-control-group-error input[type=tel],.wy-control-group.wy-control-group-error input[type=text],.wy-control-group.wy-control-group-error input[type=time],.wy-control-group.wy-control-group-error input[type=url],.wy-control-group.wy-control-group-error input[type=week],.wy-control-group.wy-control-group-error textarea{border:1px solid #e74c3c}.wy-inline-validate{white-space:nowrap}.wy-inline-validate .wy-input-context{padding:.5em .625em;display:inline-block;font-size:80%}.wy-inline-validate.wy-inline-validate-success .wy-input-context{color:#27ae60}.wy-inline-validate.wy-inline-validate-danger .wy-input-context{color:#e74c3c}.wy-inline-validate.wy-inline-validate-warning .wy-input-context{color:#e67e22}.wy-inline-validate.wy-inline-validate-info .wy-input-context{color:#2980b9}.rotate-90{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.rotate-180{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.rotate-270{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.mirror{-webkit-transform:scaleX(-1);-moz-transform:scaleX(-1);-ms-transform:scaleX(-1);-o-transform:scaleX(-1);transform:scaleX(-1)}.mirror.rotate-90{-webkit-transform:scaleX(-1) rotate(90deg);-moz-transform:scaleX(-1) rotate(90deg);-ms-transform:scaleX(-1) rotate(90deg);-o-transform:scaleX(-1) rotate(90deg);transform:scaleX(-1) rotate(90deg)}.mirror.rotate-180{-webkit-transform:scaleX(-1) rotate(180deg);-moz-transform:scaleX(-1) rotate(180deg);-ms-transform:scaleX(-1) rotate(180deg);-o-transform:scaleX(-1) rotate(180deg);transform:scaleX(-1) rotate(180deg)}.mirror.rotate-270{-webkit-transform:scaleX(-1) rotate(270deg);-moz-transform:scaleX(-1) rotate(270deg);-ms-transform:scaleX(-1) rotate(270deg);-o-transform:scaleX(-1) rotate(270deg);transform:scaleX(-1) rotate(270deg)}@media only screen and (max-width:480px){.wy-form button[type=submit]{margin:.7em 0 0}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=text],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week],.wy-form label{margin-bottom:.3em;display:block}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week]{margin-bottom:0}.wy-form-aligned .wy-control-group label{margin-bottom:.3em;text-align:left;display:block;width:100%}.wy-form-aligned .wy-control{margin:1.5em 0 0}.wy-form-message,.wy-form-message-inline,.wy-form .wy-help-inline{display:block;font-size:80%;padding:6px 0}}@media screen and (max-width:768px){.tablet-hide{display:none}}@media screen and (max-width:480px){.mobile-hide{display:none}}.float-left{float:left}.float-right{float:right}.full-width{width:100%}.rst-content table.docutils,.rst-content table.field-list,.wy-table{border-collapse:collapse;border-spacing:0;empty-cells:show;margin-bottom:24px}.rst-content table.docutils caption,.rst-content table.field-list caption,.wy-table caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.rst-content table.docutils td,.rst-content table.docutils th,.rst-content table.field-list td,.rst-content table.field-list th,.wy-table td,.wy-table th{font-size:90%;margin:0;overflow:visible;padding:8px 16px}.rst-content table.docutils td:first-child,.rst-content table.docutils th:first-child,.rst-content table.field-list td:first-child,.rst-content table.field-list th:first-child,.wy-table td:first-child,.wy-table th:first-child{border-left-width:0}.rst-content table.docutils thead,.rst-content table.field-list thead,.wy-table thead{color:#000;text-align:left;vertical-align:bottom;white-space:nowrap}.rst-content table.docutils thead th,.rst-content table.field-list thead th,.wy-table thead th{font-weight:700;border-bottom:2px solid #e1e4e5}.rst-content table.docutils td,.rst-content table.field-list td,.wy-table td{background-color:transparent;vertical-align:middle}.rst-content table.docutils td p,.rst-content table.field-list td p,.wy-table td p{line-height:18px}.rst-content table.docutils td p:last-child,.rst-content table.field-list td p:last-child,.wy-table td p:last-child{margin-bottom:0}.rst-content table.docutils .wy-table-cell-min,.rst-content table.field-list .wy-table-cell-min,.wy-table .wy-table-cell-min{width:1%;padding-right:0}.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox],.wy-table .wy-table-cell-min input[type=checkbox]{margin:0}.wy-table-secondary{color:grey;font-size:90%}.wy-table-tertiary{color:grey;font-size:80%}.rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td,.wy-table-backed,.wy-table-odd td,.wy-table-striped tr:nth-child(2n-1) td{background-color:#f3f6f6}.rst-content table.docutils,.wy-table-bordered-all{border:1px solid #e1e4e5}.rst-content table.docutils td,.wy-table-bordered-all td{border-bottom:1px solid #e1e4e5;border-left:1px solid #e1e4e5}.rst-content table.docutils tbody>tr:last-child td,.wy-table-bordered-all tbody>tr:last-child td{border-bottom-width:0}.wy-table-bordered{border:1px solid #e1e4e5}.wy-table-bordered-rows td{border-bottom:1px solid #e1e4e5}.wy-table-bordered-rows tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal td,.wy-table-horizontal th{border-width:0 0 1px;border-bottom:1px solid #e1e4e5}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-responsive{margin-bottom:24px;max-width:100%;overflow:auto}.wy-table-responsive table{margin-bottom:0!important}.wy-table-responsive table td,.wy-table-responsive table th{white-space:nowrap}a{color:#2980b9;text-decoration:none;cursor:pointer}a:hover{color:#3091d1}a:visited{color:#9b59b6}html{height:100%}body,html{overflow-x:hidden}body{font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;font-weight:400;color:#404040;min-height:100%;background:#edf0f2}.wy-text-left{text-align:left}.wy-text-center{text-align:center}.wy-text-right{text-align:right}.wy-text-large{font-size:120%}.wy-text-normal{font-size:100%}.wy-text-small,small{font-size:80%}.wy-text-strike{text-decoration:line-through}.wy-text-warning{color:#e67e22!important}a.wy-text-warning:hover{color:#eb9950!important}.wy-text-info{color:#2980b9!important}a.wy-text-info:hover{color:#409ad5!important}.wy-text-success{color:#27ae60!important}a.wy-text-success:hover{color:#36d278!important}.wy-text-danger{color:#e74c3c!important}a.wy-text-danger:hover{color:#ed7669!important}.wy-text-neutral{color:#404040!important}a.wy-text-neutral:hover{color:#595959!important}.rst-content .toctree-wrapper>p.caption,h1,h2,h3,h4,h5,h6,legend{margin-top:0;font-weight:700;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif}p{line-height:24px;font-size:15px;margin:0 0 24px}h1{font-size:175%}.rst-content .toctree-wrapper>p.caption,h2{font-size:150%}h3{font-size:125%}h4{font-size:115%}h5{font-size:110%}h6{font-size:100%}hr{display:block;height:1px;border:0;border-top:1px solid #e1e4e5;margin:24px 0;padding:0}.rst-content code,.rst-content tt,code{white-space:nowrap;max-width:100%;background:#fff;border:1px solid #e1e4e5;font-size:75%;padding:0 5px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;color:#e74c3c;overflow-x:auto}.rst-content tt.code-large,code.code-large{font-size:90%}.rst-content .section ul,.rst-content .toctree-wrapper ul,.rst-content section ul,.wy-plain-list-disc,article ul{list-style:disc;line-height:24px;margin-bottom:24px}.rst-content .section ul li,.rst-content .toctree-wrapper ul li,.rst-content section ul li,.wy-plain-list-disc li,article ul li{list-style:disc;margin-left:24px}.rst-content .section ul li p:last-child,.rst-content .section ul li ul,.rst-content .toctree-wrapper ul li p:last-child,.rst-content .toctree-wrapper ul li ul,.rst-content section ul li p:last-child,.rst-content section ul li ul,.wy-plain-list-disc li p:last-child,.wy-plain-list-disc li ul,article ul li p:last-child,article ul li ul{margin-bottom:0}.rst-content .section ul li li,.rst-content .toctree-wrapper ul li li,.rst-content section ul li li,.wy-plain-list-disc li li,article ul li li{list-style:circle}.rst-content .section ul li li li,.rst-content .toctree-wrapper ul li li li,.rst-content section ul li li li,.wy-plain-list-disc li li li,article ul li li li{list-style:square}.rst-content .section ul li ol li,.rst-content .toctree-wrapper ul li ol li,.rst-content section ul li ol li,.wy-plain-list-disc li ol li,article ul li ol li{list-style:decimal}.rst-content .section ol,.rst-content .section ol.arabic,.rst-content .toctree-wrapper ol,.rst-content .toctree-wrapper ol.arabic,.rst-content section ol,.rst-content section ol.arabic,.wy-plain-list-decimal,article ol{list-style:decimal;line-height:24px;margin-bottom:24px}.rst-content .section ol.arabic li,.rst-content .section ol li,.rst-content .toctree-wrapper ol.arabic li,.rst-content .toctree-wrapper ol li,.rst-content section ol.arabic li,.rst-content section ol li,.wy-plain-list-decimal li,article ol li{list-style:decimal;margin-left:24px}.rst-content .section ol.arabic li ul,.rst-content .section ol li p:last-child,.rst-content .section ol li ul,.rst-content .toctree-wrapper ol.arabic li ul,.rst-content .toctree-wrapper ol li p:last-child,.rst-content .toctree-wrapper ol li ul,.rst-content section ol.arabic li ul,.rst-content section ol li p:last-child,.rst-content section ol li ul,.wy-plain-list-decimal li p:last-child,.wy-plain-list-decimal li ul,article ol li p:last-child,article ol li ul{margin-bottom:0}.rst-content .section ol.arabic li ul li,.rst-content .section ol li ul li,.rst-content .toctree-wrapper ol.arabic li ul li,.rst-content .toctree-wrapper ol li ul li,.rst-content section ol.arabic li ul li,.rst-content section ol li ul li,.wy-plain-list-decimal li ul li,article ol li ul li{list-style:disc}.wy-breadcrumbs{*zoom:1}.wy-breadcrumbs:after,.wy-breadcrumbs:before{display:table;content:""}.wy-breadcrumbs:after{clear:both}.wy-breadcrumbs li{display:inline-block}.wy-breadcrumbs li.wy-breadcrumbs-aside{float:right}.wy-breadcrumbs li a{display:inline-block;padding:5px}.wy-breadcrumbs li a:first-child{padding-left:0}.rst-content .wy-breadcrumbs li tt,.wy-breadcrumbs li .rst-content tt,.wy-breadcrumbs li code{padding:5px;border:none;background:none}.rst-content .wy-breadcrumbs li tt.literal,.wy-breadcrumbs li .rst-content tt.literal,.wy-breadcrumbs li code.literal{color:#404040}.wy-breadcrumbs-extra{margin-bottom:0;color:#b3b3b3;font-size:80%;display:inline-block}@media screen and (max-width:480px){.wy-breadcrumbs-extra,.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}@media print{.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}html{font-size:15px}.wy-affix{position:fixed;top:1.618em}.wy-menu a:hover{text-decoration:none}.wy-menu-horiz{*zoom:1}.wy-menu-horiz:after,.wy-menu-horiz:before{display:table;content:""}.wy-menu-horiz:after{clear:both}.wy-menu-horiz li,.wy-menu-horiz ul{display:inline-block}.wy-menu-horiz li:hover{background:hsla(0,0%,100%,.1)}.wy-menu-horiz li.divide-left{border-left:1px solid #404040}.wy-menu-horiz li.divide-right{border-right:1px solid #404040}.wy-menu-horiz a{height:30px;display:inline-block;line-height:30px;padding:0 15px}.wy-menu-vertical{width:300px}.wy-menu-vertical header,.wy-menu-vertical p.caption{color:#9b9b9b;height:30px;line-height:30px;padding:0 .809em;margin:6px 0 0;border-top:1px solid #9b9b9b;display:block;font-weight:700;text-transform:uppercase;font-size:85%;white-space:nowrap}.wy-menu-vertical ul{margin-bottom:0}.wy-menu-vertical li.divide-top{border-top:1px solid #404040}.wy-menu-vertical li.divide-bottom{border-bottom:1px solid #404040}.wy-menu-vertical li.current{background:#e3e3e3}.wy-menu-vertical li.current a{color:grey;border-right:1px solid #c9c9c9;padding:.4045em 2.427em}.wy-menu-vertical li.current a:hover{background:#d6d6d6}.rst-content .wy-menu-vertical li tt,.wy-menu-vertical li .rst-content tt,.wy-menu-vertical li code{border:none;background:inherit;color:inherit;padding-left:0;padding-right:0}.wy-menu-vertical li button.toctree-expand{display:block;float:left;margin-left:-1.2em;line-height:18px;color:#4d4d4d;border:none;background:none;padding:0}.wy-menu-vertical li.current>a,.wy-menu-vertical li.on a{color:#404040;font-weight:700;position:relative;background:#fcfcfc;border:none;padding:.4045em 1.618em}.wy-menu-vertical li.current>a:hover,.wy-menu-vertical li.on a:hover{background:#fcfcfc}.wy-menu-vertical li.current>a:hover button.toctree-expand,.wy-menu-vertical li.on a:hover button.toctree-expand{color:grey}.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand{display:block;line-height:18px;color:#333}.wy-menu-vertical li.toctree-l1.current>a{border-bottom:1px solid #c9c9c9;border-top:1px solid #c9c9c9}.wy-menu-vertical .toctree-l1.current .toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .toctree-l11>ul{display:none}.wy-menu-vertical .toctree-l1.current .current.toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .current.toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .current.toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .current.toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .current.toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .current.toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .current.toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .current.toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .current.toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .current.toctree-l11>ul{display:block}.wy-menu-vertical li.toctree-l3,.wy-menu-vertical li.toctree-l4{font-size:.9em}.wy-menu-vertical li.toctree-l2 a,.wy-menu-vertical li.toctree-l3 a,.wy-menu-vertical li.toctree-l4 a,.wy-menu-vertical li.toctree-l5 a,.wy-menu-vertical li.toctree-l6 a,.wy-menu-vertical li.toctree-l7 a,.wy-menu-vertical li.toctree-l8 a,.wy-menu-vertical li.toctree-l9 a,.wy-menu-vertical li.toctree-l10 a{color:#404040}.wy-menu-vertical li.toctree-l2 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l3 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l4 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l5 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l6 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l7 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l8 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l9 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l10 a:hover button.toctree-expand{color:grey}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a,.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a,.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a,.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a,.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a,.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a,.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a,.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{display:block}.wy-menu-vertical li.toctree-l2.current>a{padding:.4045em 2.427em}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{padding:.4045em 1.618em .4045em 4.045em}.wy-menu-vertical li.toctree-l3.current>a{padding:.4045em 4.045em}.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{padding:.4045em 1.618em .4045em 5.663em}.wy-menu-vertical li.toctree-l4.current>a{padding:.4045em 5.663em}.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a{padding:.4045em 1.618em .4045em 7.281em}.wy-menu-vertical li.toctree-l5.current>a{padding:.4045em 7.281em}.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a{padding:.4045em 1.618em .4045em 8.899em}.wy-menu-vertical li.toctree-l6.current>a{padding:.4045em 8.899em}.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a{padding:.4045em 1.618em .4045em 10.517em}.wy-menu-vertical li.toctree-l7.current>a{padding:.4045em 10.517em}.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a{padding:.4045em 1.618em .4045em 12.135em}.wy-menu-vertical li.toctree-l8.current>a{padding:.4045em 12.135em}.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a{padding:.4045em 1.618em .4045em 13.753em}.wy-menu-vertical li.toctree-l9.current>a{padding:.4045em 13.753em}.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a{padding:.4045em 1.618em .4045em 15.371em}.wy-menu-vertical li.toctree-l10.current>a{padding:.4045em 15.371em}.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{padding:.4045em 1.618em .4045em 16.989em}.wy-menu-vertical li.toctree-l2.current>a,.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{background:#c9c9c9}.wy-menu-vertical li.toctree-l2 button.toctree-expand{color:#a3a3a3}.wy-menu-vertical li.toctree-l3.current>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{background:#bdbdbd}.wy-menu-vertical li.toctree-l3 button.toctree-expand{color:#969696}.wy-menu-vertical li.current ul{display:block}.wy-menu-vertical li ul{margin-bottom:0;display:none}.wy-menu-vertical li ul li a{margin-bottom:0;color:#d9d9d9;font-weight:400}.wy-menu-vertical a{line-height:18px;padding:.4045em 1.618em;display:block;position:relative;font-size:90%;color:#d9d9d9}.wy-menu-vertical a:hover{background-color:#4d4d4d;cursor:pointer}.wy-menu-vertical a:hover button.toctree-expand{color:#d9d9d9}.wy-menu-vertical a:active{background-color:#333;cursor:pointer;color:#fff}.wy-menu-vertical a:active button.toctree-expand{color:#fff}.wy-side-nav-search{display:block;width:300px;padding:.809em;margin-bottom:0;z-index:200;background-color:#333;text-align:center}.wy-side-nav-search input[type=text]{width:100%;border-radius:0;padding:6px 12px;border-color:#2472a4}.wy-side-nav-search img{display:block;margin:auto auto .809em;height:45px;width:45px;background-color:#333;padding:5px;border-radius:100%}.wy-side-nav-search .wy-dropdown>a,.wy-side-nav-search>a{font-size:100%;font-weight:700;display:inline-block;padding:4px 6px;margin-bottom:.4045em;max-width:100%}.wy-side-nav-search .wy-dropdown>a:hover,.wy-side-nav-search>a:hover{background:hsla(0,0%,100%,.1)}.wy-side-nav-search .wy-dropdown>a img.logo,.wy-side-nav-search>a img.logo{display:block;margin:0 auto;height:auto;width:auto;border-radius:0;max-width:100%;background:transparent}.wy-side-nav-search .wy-dropdown>a.icon img.logo,.wy-side-nav-search>a.icon img.logo{margin-top:.85em}.wy-side-nav-search>div.version{margin:0 0 .809em;font-weight:400}.wy-nav .wy-menu-vertical header{color:#2980b9}.wy-nav .wy-menu-vertical a{color:#b3b3b3}.wy-nav .wy-menu-vertical a:hover{background-color:#333;color:#fff}[data-menu-wrap]{-webkit-transition:all .2s ease-in;-moz-transition:all .2s ease-in;transition:all .2s ease-in;position:absolute;opacity:1;width:100%;opacity:0}[data-menu-wrap].move-center{left:0;right:auto;opacity:1}[data-menu-wrap].move-left{right:auto;left:-100%;opacity:0}[data-menu-wrap].move-right{right:-100%;left:auto;opacity:0}.wy-body-for-nav{background:#fcfcfc}.wy-grid-for-nav{position:absolute;width:100%;height:100%}.wy-nav-side{position:fixed;top:0;bottom:0;left:0;padding-bottom:2em;width:300px;overflow-x:hidden;overflow-y:hidden;min-height:100%;color:#9b9b9b;background:#333;z-index:200}.wy-side-scroll{width:320px;position:relative;overflow-x:hidden;overflow-y:scroll;height:100%}.wy-nav-top{display:none;background:#333;color:#fff;padding:.4045em .809em;position:relative;line-height:50px;text-align:center;font-size:100%;*zoom:1}.wy-nav-top:after,.wy-nav-top:before{display:table;content:""}.wy-nav-top:after{clear:both}.wy-nav-top a{color:#fff;font-weight:700}.wy-nav-top img{margin-right:12px;height:45px;width:45px;background-color:#333;padding:5px;border-radius:100%}.wy-nav-top i{font-size:30px;float:left;cursor:pointer;padding-top:inherit}.wy-nav-content-wrap{margin-left:300px;background:#fcfcfc;min-height:100%}.wy-nav-content{padding:1.618em 3.236em;height:100%;max-width:1024px;margin:auto}.wy-body-mask{position:fixed;width:100%;height:100%;background:rgba(0,0,0,.2);display:none;z-index:499}.wy-body-mask.on{display:block}footer{color:grey;font-size:95%;text-align:center}footer p{margin-bottom:0;font-size:95%}.rst-content footer span.commit tt,footer span.commit .rst-content tt,footer span.commit code{padding:0;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:1em;background:none;border:none;color:grey}.rst-footer-buttons{*zoom:1}.rst-footer-buttons:after,.rst-footer-buttons:before{width:100%;display:table;content:""}.rst-footer-buttons:after{clear:both}.rst-breadcrumbs-buttons{margin-top:12px;*zoom:1}.rst-breadcrumbs-buttons:after,.rst-breadcrumbs-buttons:before{display:table;content:""}.rst-breadcrumbs-buttons:after{clear:both}#search-results .search li{margin-bottom:24px;border-bottom:1px solid #e1e4e5;padding-bottom:24px}#search-results .search li:first-child{border-top:1px solid #e1e4e5;padding-top:24px}#search-results .search li a{font-size:120%;margin-bottom:12px;display:inline-block}#search-results .context{color:grey;font-size:90%}.genindextable li>ul{margin-left:24px}@media screen and (max-width:768px){.wy-body-for-nav{background:#fcfcfc}.wy-nav-top{display:block}.wy-nav-side{left:-300px}.wy-nav-side.shift{width:85%;left:0}.wy-menu.wy-menu-vertical,.wy-side-nav-search,.wy-side-scroll{width:auto}.wy-nav-content-wrap{margin-left:0}.wy-nav-content-wrap .wy-nav-content{padding:1.618em}.wy-nav-content-wrap.shift{position:fixed;min-width:100%;left:85%;top:0;height:100%;overflow:hidden}}@media print{.rst-versions,.wy-nav-side,footer{display:none}.wy-nav-content-wrap{margin-left:0}}.rst-content .toctree-wrapper>p.caption,h1,h2,h3,h4,h5,h6,p{margin-bottom:12px}h1{display:none}.rst-content .toctree-wrapper>p.caption,h2{border-bottom:1px solid #e1e4e5;padding:0 0 3px;font-size:130%}h3{font-size:115%;text-decoration:underline}.section p,.simple li,section>p{text-align:justify}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1f1f;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#262626;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60;*zoom:1}.rst-versions .rst-current-version:after,.rst-versions .rst-current-version:before{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-content .code-block-caption .rst-versions .rst-current-version .headerlink,.rst-content .eqno .rst-versions .rst-current-version .headerlink,.rst-content .rst-versions .rst-current-version .admonition-title,.rst-content code.download .rst-versions .rst-current-version span:first-child,.rst-content dl dt .rst-versions .rst-current-version .headerlink,.rst-content h1 .rst-versions .rst-current-version .headerlink,.rst-content h2 .rst-versions .rst-current-version .headerlink,.rst-content h3 .rst-versions .rst-current-version .headerlink,.rst-content h4 .rst-versions .rst-current-version .headerlink,.rst-content h5 .rst-versions .rst-current-version .headerlink,.rst-content h6 .rst-versions .rst-current-version .headerlink,.rst-content p .rst-versions .rst-current-version .headerlink,.rst-content table>caption .rst-versions .rst-current-version .headerlink,.rst-content tt.download .rst-versions .rst-current-version span:first-child,.rst-versions .rst-current-version .fa,.rst-versions .rst-current-version .icon,.rst-versions .rst-current-version .rst-content .admonition-title,.rst-versions .rst-current-version .rst-content .code-block-caption .headerlink,.rst-versions .rst-current-version .rst-content .eqno .headerlink,.rst-versions .rst-current-version .rst-content code.download span:first-child,.rst-versions .rst-current-version .rst-content dl dt .headerlink,.rst-versions .rst-current-version .rst-content h1 .headerlink,.rst-versions .rst-current-version .rst-content h2 .headerlink,.rst-versions .rst-current-version .rst-content h3 .headerlink,.rst-versions .rst-current-version .rst-content h4 .headerlink,.rst-versions .rst-current-version .rst-content h5 .headerlink,.rst-versions .rst-current-version .rst-content h6 .headerlink,.rst-versions .rst-current-version .rst-content p .headerlink,.rst-versions .rst-current-version .rst-content table>caption .headerlink,.rst-versions .rst-current-version .rst-content tt.download span:first-child,.rst-versions .rst-current-version .wy-menu-vertical li button.toctree-expand,.wy-menu-vertical li .rst-versions .rst-current-version button.toctree-expand{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #404040}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}.rst-content .toctree-wrapper>p.caption,.rst-content h1,.rst-content h2,.rst-content h3,.rst-content h4,.rst-content h5,.rst-content h6{margin-bottom:24px}.rst-content img{max-width:100%}.rst-content div.figure,.rst-content figure{margin-bottom:24px}.rst-content div.figure .caption-text,.rst-content figure .caption-text{font-style:italic}.rst-content div.figure p:last-child.caption,.rst-content figure p:last-child.caption{margin-bottom:0}.rst-content div.figure.align-center,.rst-content figure.align-center{text-align:center}.rst-content .section>a>img,.rst-content .section>img,.rst-content section>a>img,.rst-content section>img{margin-bottom:24px}.rst-content abbr[title]{text-decoration:none}.rst-content.style-external-links a.reference.external:after{font-family:FontAwesome;content:"\f08e";color:#b3b3b3;vertical-align:super;font-size:60%;margin:0 .2em}.rst-content blockquote{margin-left:24px;line-height:24px;margin-bottom:24px}.rst-content pre.literal-block{white-space:pre;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;display:block;overflow:auto}.rst-content div[class^=highlight],.rst-content pre.literal-block{border:1px solid #e1e4e5;overflow-x:auto;margin:1px 0 24px}.rst-content div[class^=highlight] div[class^=highlight],.rst-content pre.literal-block div[class^=highlight]{padding:0;border:none;margin:0}.rst-content div[class^=highlight] td.code{width:100%}.rst-content .linenodiv pre{border-right:1px solid #e6e9ea;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;user-select:none;pointer-events:none}.rst-content div[class^=highlight] pre{white-space:pre;margin:0;padding:12px;display:block;overflow:auto}.rst-content div[class^=highlight] pre .hll{display:block;margin:0 -12px;padding:0 12px}.rst-content .linenodiv pre,.rst-content div[class^=highlight] pre,.rst-content pre.literal-block{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:12px;line-height:1.4}.rst-content div.highlight .gp,.rst-content div.highlight span.linenos{user-select:none;pointer-events:none}.rst-content div.highlight span.linenos{display:inline-block;padding-left:0;padding-right:12px;margin-right:12px;border-right:1px solid #e6e9ea}.rst-content .code-block-caption{font-style:italic;font-size:85%;line-height:1;padding:1em 0;text-align:center}@media print{.rst-content .codeblock,.rst-content div[class^=highlight],.rst-content div[class^=highlight] pre{white-space:pre-wrap}}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning{clear:both}.rst-content .admonition-todo .last,.rst-content .admonition-todo>:last-child,.rst-content .admonition .last,.rst-content .admonition>:last-child,.rst-content .attention .last,.rst-content .attention>:last-child,.rst-content .caution .last,.rst-content .caution>:last-child,.rst-content .danger .last,.rst-content .danger>:last-child,.rst-content .error .last,.rst-content .error>:last-child,.rst-content .hint .last,.rst-content .hint>:last-child,.rst-content .important .last,.rst-content .important>:last-child,.rst-content .note .last,.rst-content .note>:last-child,.rst-content .seealso .last,.rst-content .seealso>:last-child,.rst-content .tip .last,.rst-content .tip>:last-child,.rst-content .warning .last,.rst-content .warning>:last-child{margin-bottom:0}.rst-content .admonition-title:before{margin-right:4px}.rst-content .admonition table{border-color:rgba(0,0,0,.1)}.rst-content .admonition table td,.rst-content .admonition table th{background:transparent!important;border-color:rgba(0,0,0,.1)!important}.rst-content .section ol.loweralpha,.rst-content .section ol.loweralpha>li,.rst-content .toctree-wrapper ol.loweralpha,.rst-content .toctree-wrapper ol.loweralpha>li,.rst-content section ol.loweralpha,.rst-content section ol.loweralpha>li{list-style:lower-alpha}.rst-content .section ol.upperalpha,.rst-content .section ol.upperalpha>li,.rst-content .toctree-wrapper ol.upperalpha,.rst-content .toctree-wrapper ol.upperalpha>li,.rst-content section ol.upperalpha,.rst-content section ol.upperalpha>li{list-style:upper-alpha}.rst-content .section ol li>*,.rst-content .section ul li>*,.rst-content .toctree-wrapper ol li>*,.rst-content .toctree-wrapper ul li>*,.rst-content section ol li>*,.rst-content section ul li>*{margin-top:12px;margin-bottom:12px}.rst-content .section ol li>:first-child,.rst-content .section ul li>:first-child,.rst-content .toctree-wrapper ol li>:first-child,.rst-content .toctree-wrapper ul li>:first-child,.rst-content section ol li>:first-child,.rst-content section ul li>:first-child{margin-top:0}.rst-content .section ol li>p,.rst-content .section ol li>p:last-child,.rst-content .section ul li>p,.rst-content .section ul li>p:last-child,.rst-content .toctree-wrapper ol li>p,.rst-content .toctree-wrapper ol li>p:last-child,.rst-content .toctree-wrapper ul li>p,.rst-content .toctree-wrapper ul li>p:last-child,.rst-content section ol li>p,.rst-content section ol li>p:last-child,.rst-content section ul li>p,.rst-content section ul li>p:last-child{margin-bottom:12px}.rst-content .section ol li>p:only-child,.rst-content .section ol li>p:only-child:last-child,.rst-content .section ul li>p:only-child,.rst-content .section ul li>p:only-child:last-child,.rst-content .toctree-wrapper ol li>p:only-child,.rst-content .toctree-wrapper ol li>p:only-child:last-child,.rst-content .toctree-wrapper ul li>p:only-child,.rst-content .toctree-wrapper ul li>p:only-child:last-child,.rst-content section ol li>p:only-child,.rst-content section ol li>p:only-child:last-child,.rst-content section ul li>p:only-child,.rst-content section ul li>p:only-child:last-child{margin-bottom:0}.rst-content .section ol li>ol,.rst-content .section ol li>ul,.rst-content .section ul li>ol,.rst-content .section ul li>ul,.rst-content .toctree-wrapper ol li>ol,.rst-content .toctree-wrapper ol li>ul,.rst-content .toctree-wrapper ul li>ol,.rst-content .toctree-wrapper ul li>ul,.rst-content section ol li>ol,.rst-content section ol li>ul,.rst-content section ul li>ol,.rst-content section ul li>ul{margin-bottom:12px}.rst-content .section ol.simple li>*,.rst-content .section ol.simple li ol,.rst-content .section ol.simple li ul,.rst-content .section ul.simple li>*,.rst-content .section ul.simple li ol,.rst-content .section ul.simple li ul,.rst-content .toctree-wrapper ol.simple li>*,.rst-content .toctree-wrapper ol.simple li ol,.rst-content .toctree-wrapper ol.simple li ul,.rst-content .toctree-wrapper ul.simple li>*,.rst-content .toctree-wrapper ul.simple li ol,.rst-content .toctree-wrapper ul.simple li ul,.rst-content section ol.simple li>*,.rst-content section ol.simple li ol,.rst-content section ol.simple li ul,.rst-content section ul.simple li>*,.rst-content section ul.simple li ol,.rst-content section ul.simple li ul{margin-top:0;margin-bottom:0}.rst-content .line-block{margin-left:0;margin-bottom:24px;line-height:24px}.rst-content .line-block .line-block{margin-left:24px;margin-bottom:0}.rst-content .topic-title{font-weight:700;margin-bottom:12px}.rst-content .toc-backref{color:#404040}.rst-content .align-right{float:right;margin:0 0 24px 24px}.rst-content .align-left{float:left;margin:0 24px 24px 0}.rst-content .align-center{margin:auto}.rst-content .align-center:not(table){display:block}.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content .toctree-wrapper>p.caption .headerlink,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink{opacity:0;font-size:14px;font-family:FontAwesome;margin-left:.5em}.rst-content .code-block-caption .headerlink:focus,.rst-content .code-block-caption:hover .headerlink,.rst-content .eqno .headerlink:focus,.rst-content .eqno:hover .headerlink,.rst-content .toctree-wrapper>p.caption .headerlink:focus,.rst-content .toctree-wrapper>p.caption:hover .headerlink,.rst-content dl dt .headerlink:focus,.rst-content dl dt:hover .headerlink,.rst-content h1 .headerlink:focus,.rst-content h1:hover .headerlink,.rst-content h2 .headerlink:focus,.rst-content h2:hover .headerlink,.rst-content h3 .headerlink:focus,.rst-content h3:hover .headerlink,.rst-content h4 .headerlink:focus,.rst-content h4:hover .headerlink,.rst-content h5 .headerlink:focus,.rst-content h5:hover .headerlink,.rst-content h6 .headerlink:focus,.rst-content h6:hover .headerlink,.rst-content p.caption .headerlink:focus,.rst-content p.caption:hover .headerlink,.rst-content p .headerlink:focus,.rst-content p:hover .headerlink,.rst-content table>caption .headerlink:focus,.rst-content table>caption:hover .headerlink{opacity:1}.rst-content .btn:focus{outline:2px solid}.rst-content table>caption .headerlink:after{font-size:12px}.rst-content .centered{text-align:center}.rst-content .sidebar{float:right;width:40%;display:block;margin:0 0 24px 24px;padding:24px;background:#f3f6f6;border:1px solid #e1e4e5}.rst-content .sidebar dl,.rst-content .sidebar p,.rst-content .sidebar ul{font-size:90%}.rst-content .sidebar .last,.rst-content .sidebar>:last-child{margin-bottom:0}.rst-content .sidebar .sidebar-title{display:block;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif;font-weight:700;background:#e1e4e5;padding:6px 12px;margin:-24px -24px 24px;font-size:100%}.rst-content .highlighted{background:#f1c40f;box-shadow:0 0 0 2px #f1c40f;display:inline;font-weight:700}.rst-content .citation-reference,.rst-content .footnote-reference{vertical-align:baseline;position:relative;top:-.4em;line-height:0;font-size:90%}.rst-content .hlist{width:100%}.rst-content dl dt span.classifier:before{content:" : "}.rst-content dl dt span.classifier-delimiter{display:none!important}html.writer-html4 .rst-content table.docutils.citation,html.writer-html4 .rst-content table.docutils.footnote{background:none;border:none}html.writer-html4 .rst-content table.docutils.citation td,html.writer-html4 .rst-content table.docutils.citation tr,html.writer-html4 .rst-content table.docutils.footnote td,html.writer-html4 .rst-content table.docutils.footnote tr{border:none;background-color:transparent!important;white-space:normal}html.writer-html4 .rst-content table.docutils.citation td.label,html.writer-html4 .rst-content table.docutils.footnote td.label{padding-left:0;padding-right:0;vertical-align:top}html.writer-html5 .rst-content dl.field-list,html.writer-html5 .rst-content dl.footnote{display:grid;grid-template-columns:max-content auto}html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dt{padding-left:1rem}html.writer-html5 .rst-content dl.field-list>dt:after,html.writer-html5 .rst-content dl.footnote>dt:after{content:":"}html.writer-html5 .rst-content dl.field-list>dd,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dd,html.writer-html5 .rst-content dl.footnote>dt{margin-bottom:0}html.writer-html5 .rst-content dl.footnote{font-size:.9rem}html.writer-html5 .rst-content dl.footnote>dt{margin:0 .5rem .5rem 0;line-height:1.2rem;word-break:break-all;font-weight:400}html.writer-html5 .rst-content dl.footnote>dt>span.brackets{margin-right:.5rem}html.writer-html5 .rst-content dl.footnote>dt>span.brackets:before{content:"["}html.writer-html5 .rst-content dl.footnote>dt>span.brackets:after{content:"]"}html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref{font-style:italic}html.writer-html5 .rst-content dl.footnote>dd{margin:0 0 .5rem;line-height:1.2rem}html.writer-html5 .rst-content dl.footnote>dd p,html.writer-html5 .rst-content dl.option-list kbd{font-size:.9rem}.rst-content table.docutils.footnote,html.writer-html4 .rst-content table.docutils.citation,html.writer-html5 .rst-content dl.footnote{color:grey}.rst-content table.docutils.footnote code,.rst-content table.docutils.footnote tt,html.writer-html4 .rst-content table.docutils.citation code,html.writer-html4 .rst-content table.docutils.citation tt,html.writer-html5 .rst-content dl.footnote code,html.writer-html5 .rst-content dl.footnote tt{color:#555}.rst-content .wy-table-responsive.citation,.rst-content .wy-table-responsive.footnote{margin-bottom:0}.rst-content .wy-table-responsive.citation+:not(.citation),.rst-content .wy-table-responsive.footnote+:not(.footnote){margin-top:24px}.rst-content .wy-table-responsive.citation:last-child,.rst-content .wy-table-responsive.footnote:last-child{margin-bottom:24px}.rst-content table.docutils th{border-color:#e1e4e5}html.writer-html5 .rst-content table.docutils th{border:1px solid #e1e4e5}html.writer-html5 .rst-content table.docutils td>p,html.writer-html5 .rst-content table.docutils th>p{line-height:1rem;margin-bottom:0;font-size:.9rem}.rst-content table.docutils td .last,.rst-content table.docutils td .last>:last-child{margin-bottom:0}.rst-content table.field-list,.rst-content table.field-list td{border:none}.rst-content table.field-list td p{font-size:inherit;line-height:inherit}.rst-content table.field-list td>strong{display:inline-block}.rst-content table.field-list .field-name{padding-right:10px;text-align:left;white-space:nowrap}.rst-content table.field-list .field-body{text-align:left}.rst-content code,.rst-content tt{color:#000;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;padding:2px 5px}.rst-content code big,.rst-content code em,.rst-content tt big,.rst-content tt em{font-size:100%!important;line-height:normal}.rst-content code.literal,.rst-content tt.literal{color:#e74c3c;white-space:normal}.rst-content code.xref,.rst-content tt.xref,a .rst-content code,a .rst-content tt{font-weight:700;color:#404040}.rst-content kbd,.rst-content pre,.rst-content samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace}.rst-content a code,.rst-content a tt{color:#2980b9}.rst-content dl{margin-bottom:24px}.rst-content dl dt{font-weight:700;margin-bottom:12px}.rst-content dl ol,.rst-content dl p,.rst-content dl table,.rst-content dl ul{margin-bottom:12px}.rst-content dl dd{margin:0 0 12px 24px;line-height:24px}html.writer-html4 .rst-content dl:not(.docutils),html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple){margin-bottom:24px}html.writer-html4 .rst-content dl:not(.docutils)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)>dt{display:table;margin:6px 0;font-size:90%;line-height:normal;background:#b3b3b3;color:#333;border-top:3px solid #666;padding:6px;position:relative}html.writer-html4 .rst-content dl:not(.docutils)>dt:before,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)>dt:before{color:#666}html.writer-html4 .rst-content dl:not(.docutils)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.field-list)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dl:not(.field-list)>dt{margin-bottom:6px;border:none;border-left:3px solid #ccc;background:#f0f0f0;color:#555}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.field-list)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dl:not(.field-list)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils)>dt:first-child,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)>dt:first-child{margin-top:0}html.writer-html4 .rst-content dl:not(.docutils) code.descclassname,html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descclassname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) code.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) tt.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) tt.descname{background-color:transparent;border:none;padding:0;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) tt.descname{font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .optional,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .optional{display:inline-block;padding:0 4px;color:#000;font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .property,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .property{display:inline-block;padding-right:8px;max-width:100%}html.writer-html4 .rst-content dl:not(.docutils) .k,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .k{font-style:italic}html.writer-html4 .rst-content dl:not(.docutils) .descclassname,html.writer-html4 .rst-content dl:not(.docutils) .descname,html.writer-html4 .rst-content dl:not(.docutils) .sig-name,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .sig-name{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;color:#000}.rst-content .viewcode-back,.rst-content .viewcode-link{display:inline-block;color:#27ae60;font-size:80%;padding-left:24px}.rst-content .viewcode-back{display:block;float:right}.rst-content p.rubric{margin-bottom:12px;font-weight:700}.rst-content code.download,.rst-content tt.download{background:inherit;padding:inherit;font-weight:400;font-family:inherit;font-size:inherit;color:inherit;border:inherit;white-space:inherit}.rst-content code.download span:first-child,.rst-content tt.download span:first-child{-webkit-font-smoothing:subpixel-antialiased}.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{margin-right:4px}.rst-content .guilabel{border:1px solid #737373;background:#b3b3b3;font-size:80%;font-weight:700;border-radius:4px;padding:2.4px 6px;margin:auto 2px}.rst-content .versionmodified{font-style:italic}@media screen and (max-width:480px){.rst-content .sidebar{width:100%}}span[id*=MathJax-Span]{color:#404040}.math{text-align:center}@font-face{font-family:Lato;src:url(fonts/lato-normal.woff2?bd03a2cc277bbbc338d464e679fe9942) format("woff2"),url(fonts/lato-normal.woff?27bd77b9162d388cb8d4c4217c7c5e2a) format("woff");font-weight:400;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold.woff2?cccb897485813c7c256901dbca54ecf2) format("woff2"),url(fonts/lato-bold.woff?d878b6c29b10beca227e9eef4246111b) format("woff");font-weight:700;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold-italic.woff2?0b6bb6725576b072c5d0b02ecdd1900d) format("woff2"),url(fonts/lato-bold-italic.woff?9c7e4e9eb485b4a121c760e61bc3707c) format("woff");font-weight:700;font-style:italic;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-normal-italic.woff2?4eb103b4d12be57cb1d040ed5e162e9d) format("woff2"),url(fonts/lato-normal-italic.woff?f28f2d6482446544ef1ea1ccc6dd5892) format("woff");font-weight:400;font-style:italic;font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:400;src:url(fonts/Roboto-Slab-Regular.woff2?7abf5b8d04d26a2cafea937019bca958) format("woff2"),url(fonts/Roboto-Slab-Regular.woff?c1be9284088d487c5e3ff0a10a92e58c) format("woff");font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:700;src:url(fonts/Roboto-Slab-Bold.woff2?9984f4a9bda09be08e83f2506954adbe) format("woff2"),url(fonts/Roboto-Slab-Bold.woff?bed5564a116b05148e3b3bea6fb1162a) format("woff");font-display:block} \ No newline at end of file diff --git a/_static/doctools.js b/_static/doctools.js new file mode 100644 index 000000000..527b876ca --- /dev/null +++ b/_static/doctools.js @@ -0,0 +1,156 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Base JavaScript utilities for all Sphinx HTML documentation. + * + * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + +const _ready = (callback) => { + if (document.readyState !== "loading") { + callback(); + } else { + document.addEventListener("DOMContentLoaded", callback); + } +}; + +/** + * Small JavaScript module for the documentation. + */ +const Documentation = { + init: () => { + Documentation.initDomainIndexTable(); + Documentation.initOnKeyListeners(); + }, + + /** + * i18n support + */ + TRANSLATIONS: {}, + PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), + LOCALE: "unknown", + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext: (string) => { + const translated = Documentation.TRANSLATIONS[string]; + switch (typeof translated) { + case "undefined": + return string; // no translation + case "string": + return translated; // translation exists + default: + return translated[0]; // (singular, plural) translation tuple exists + } + }, + + ngettext: (singular, plural, n) => { + const translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated !== "undefined") + return translated[Documentation.PLURAL_EXPR(n)]; + return n === 1 ? singular : plural; + }, + + addTranslations: (catalog) => { + Object.assign(Documentation.TRANSLATIONS, catalog.messages); + Documentation.PLURAL_EXPR = new Function( + "n", + `return (${catalog.plural_expr})` + ); + Documentation.LOCALE = catalog.locale; + }, + + /** + * helper function to focus on search bar + */ + focusSearchBar: () => { + document.querySelectorAll("input[name=q]")[0]?.focus(); + }, + + /** + * Initialise the domain index toggle buttons + */ + initDomainIndexTable: () => { + const toggler = (el) => { + const idNumber = el.id.substr(7); + const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); + if (el.src.substr(-9) === "minus.png") { + el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; + toggledRows.forEach((el) => (el.style.display = "none")); + } else { + el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; + toggledRows.forEach((el) => (el.style.display = "")); + } + }; + + const togglerElements = document.querySelectorAll("img.toggler"); + togglerElements.forEach((el) => + el.addEventListener("click", (event) => toggler(event.currentTarget)) + ); + togglerElements.forEach((el) => (el.style.display = "")); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); + }, + + initOnKeyListeners: () => { + // only install a listener if it is really needed + if ( + !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && + !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS + ) + return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; + + if (!event.shiftKey) { + switch (event.key) { + case "ArrowLeft": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const prevLink = document.querySelector('link[rel="prev"]'); + if (prevLink && prevLink.href) { + window.location.href = prevLink.href; + event.preventDefault(); + } + break; + case "ArrowRight": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const nextLink = document.querySelector('link[rel="next"]'); + if (nextLink && nextLink.href) { + window.location.href = nextLink.href; + event.preventDefault(); + } + break; + } + } + + // some keyboard layouts may need Shift to get / + switch (event.key) { + case "/": + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; + Documentation.focusSearchBar(); + event.preventDefault(); + } + }); + }, +}; + +// quick alias for translations +const _ = Documentation.gettext; + +_ready(Documentation.init); diff --git a/_static/documentation_options.js b/_static/documentation_options.js new file mode 100644 index 000000000..458dc5f47 --- /dev/null +++ b/_static/documentation_options.js @@ -0,0 +1,14 @@ +var DOCUMENTATION_OPTIONS = { + URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), + VERSION: '0.8.0', + LANGUAGE: 'en', + COLLAPSE_INDEX: false, + BUILDER: 'html', + FILE_SUFFIX: '.html', + LINK_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt', + NAVIGATION_WITH_KEYS: false, + SHOW_SEARCH_SUMMARY: true, + ENABLE_SEARCH_SHORTCUTS: true, +}; \ No newline at end of file diff --git a/_static/favicon.svg b/_static/favicon.svg new file mode 100644 index 000000000..30f30d25a --- /dev/null +++ b/_static/favicon.svg @@ -0,0 +1,65 @@ + + + + + + + + + + + diff --git a/_static/file.png b/_static/file.png new file mode 100644 index 000000000..a858a410e Binary files /dev/null and b/_static/file.png differ diff --git a/_static/graphviz.css b/_static/graphviz.css new file mode 100644 index 000000000..19e7afd38 --- /dev/null +++ b/_static/graphviz.css @@ -0,0 +1,19 @@ +/* + * graphviz.css + * ~~~~~~~~~~~~ + * + * Sphinx stylesheet -- graphviz extension. + * + * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +img.graphviz { + border: 0; + max-width: 100%; +} + +object.graphviz { + max-width: 100%; +} diff --git a/_static/jquery-3.6.0.js b/_static/jquery-3.6.0.js new file mode 100644 index 000000000..fc6c299b7 --- /dev/null +++ b/_static/jquery-3.6.0.js @@ -0,0 +1,10881 @@ +/*! + * jQuery JavaScript Library v3.6.0 + * https://jquery.com/ + * + * Includes Sizzle.js + * https://sizzlejs.com/ + * + * Copyright OpenJS Foundation and other contributors + * Released under the MIT license + * https://jquery.org/license + * + * Date: 2021-03-02T17:08Z + */ +( function( global, factory ) { + + "use strict"; + + if ( typeof module === "object" && typeof module.exports === "object" ) { + + // For CommonJS and CommonJS-like environments where a proper `window` + // is present, execute the factory and get jQuery. + // For environments that do not have a `window` with a `document` + // (such as Node.js), expose a factory as module.exports. + // This accentuates the need for the creation of a real `window`. + // e.g. var jQuery = require("jquery")(window); + // See ticket #14549 for more info. + module.exports = global.document ? + factory( global, true ) : + function( w ) { + if ( !w.document ) { + throw new Error( "jQuery requires a window with a document" ); + } + return factory( w ); + }; + } else { + factory( global ); + } + +// Pass this if window is not defined yet +} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { + +// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 +// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode +// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common +// enough that all such attempts are guarded in a try block. +"use strict"; + +var arr = []; + +var getProto = Object.getPrototypeOf; + +var slice = arr.slice; + +var flat = arr.flat ? function( array ) { + return arr.flat.call( array ); +} : function( array ) { + return arr.concat.apply( [], array ); +}; + + +var push = arr.push; + +var indexOf = arr.indexOf; + +var class2type = {}; + +var toString = class2type.toString; + +var hasOwn = class2type.hasOwnProperty; + +var fnToString = hasOwn.toString; + +var ObjectFunctionString = fnToString.call( Object ); + +var support = {}; + +var isFunction = function isFunction( obj ) { + + // Support: Chrome <=57, Firefox <=52 + // In some browsers, typeof returns "function" for HTML elements + // (i.e., `typeof document.createElement( "object" ) === "function"`). + // We don't want to classify *any* DOM node as a function. + // Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5 + // Plus for old WebKit, typeof returns "function" for HTML collections + // (e.g., `typeof document.getElementsByTagName("div") === "function"`). (gh-4756) + return typeof obj === "function" && typeof obj.nodeType !== "number" && + typeof obj.item !== "function"; + }; + + +var isWindow = function isWindow( obj ) { + return obj != null && obj === obj.window; + }; + + +var document = window.document; + + + + var preservedScriptAttributes = { + type: true, + src: true, + nonce: true, + noModule: true + }; + + function DOMEval( code, node, doc ) { + doc = doc || document; + + var i, val, + script = doc.createElement( "script" ); + + script.text = code; + if ( node ) { + for ( i in preservedScriptAttributes ) { + + // Support: Firefox 64+, Edge 18+ + // Some browsers don't support the "nonce" property on scripts. + // On the other hand, just using `getAttribute` is not enough as + // the `nonce` attribute is reset to an empty string whenever it + // becomes browsing-context connected. + // See https://github.com/whatwg/html/issues/2369 + // See https://html.spec.whatwg.org/#nonce-attributes + // The `node.getAttribute` check was added for the sake of + // `jQuery.globalEval` so that it can fake a nonce-containing node + // via an object. + val = node[ i ] || node.getAttribute && node.getAttribute( i ); + if ( val ) { + script.setAttribute( i, val ); + } + } + } + doc.head.appendChild( script ).parentNode.removeChild( script ); + } + + +function toType( obj ) { + if ( obj == null ) { + return obj + ""; + } + + // Support: Android <=2.3 only (functionish RegExp) + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call( obj ) ] || "object" : + typeof obj; +} +/* global Symbol */ +// Defining this global in .eslintrc.json would create a danger of using the global +// unguarded in another place, it seems safer to define global only for this module + + + +var + version = "3.6.0", + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + + // The jQuery object is actually just the init constructor 'enhanced' + // Need init if jQuery is called (just allow error to be thrown if not included) + return new jQuery.fn.init( selector, context ); + }; + +jQuery.fn = jQuery.prototype = { + + // The current version of jQuery being used + jquery: version, + + constructor: jQuery, + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + + // Return all the elements in a clean array + if ( num == null ) { + return slice.call( this ); + } + + // Return just the one element from the set + return num < 0 ? this[ num + this.length ] : this[ num ]; + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + each: function( callback ) { + return jQuery.each( this, callback ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map( this, function( elem, i ) { + return callback.call( elem, i, elem ); + } ) ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + even: function() { + return this.pushStack( jQuery.grep( this, function( _elem, i ) { + return ( i + 1 ) % 2; + } ) ); + }, + + odd: function() { + return this.pushStack( jQuery.grep( this, function( _elem, i ) { + return i % 2; + } ) ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); + }, + + end: function() { + return this.prevObject || this.constructor(); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: arr.sort, + splice: arr.splice +}; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[ 0 ] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // Skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !isFunction( target ) ) { + target = {}; + } + + // Extend jQuery itself if only one argument is passed + if ( i === length ) { + target = this; + i--; + } + + for ( ; i < length; i++ ) { + + // Only deal with non-null/undefined values + if ( ( options = arguments[ i ] ) != null ) { + + // Extend the base object + for ( name in options ) { + copy = options[ name ]; + + // Prevent Object.prototype pollution + // Prevent never-ending loop + if ( name === "__proto__" || target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject( copy ) || + ( copyIsArray = Array.isArray( copy ) ) ) ) { + src = target[ name ]; + + // Ensure proper type for the source value + if ( copyIsArray && !Array.isArray( src ) ) { + clone = []; + } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) { + clone = {}; + } else { + clone = src; + } + copyIsArray = false; + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend( { + + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), + + // Assume jQuery is ready without the ready module + isReady: true, + + error: function( msg ) { + throw new Error( msg ); + }, + + noop: function() {}, + + isPlainObject: function( obj ) { + var proto, Ctor; + + // Detect obvious negatives + // Use toString instead of jQuery.type to catch host objects + if ( !obj || toString.call( obj ) !== "[object Object]" ) { + return false; + } + + proto = getProto( obj ); + + // Objects with no prototype (e.g., `Object.create( null )`) are plain + if ( !proto ) { + return true; + } + + // Objects with prototype are plain iff they were constructed by a global Object function + Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; + return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; + }, + + isEmptyObject: function( obj ) { + var name; + + for ( name in obj ) { + return false; + } + return true; + }, + + // Evaluates a script in a provided context; falls back to the global one + // if not specified. + globalEval: function( code, options, doc ) { + DOMEval( code, { nonce: options && options.nonce }, doc ); + }, + + each: function( obj, callback ) { + var length, i = 0; + + if ( isArrayLike( obj ) ) { + length = obj.length; + for ( ; i < length; i++ ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } else { + for ( i in obj ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } + + return obj; + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArrayLike( Object( arr ) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + return arr == null ? -1 : indexOf.call( arr, elem, i ); + }, + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; + + for ( ; j < len; j++ ) { + first[ i++ ] = second[ j ]; + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } + + return matches; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var length, value, + i = 0, + ret = []; + + // Go through the array, translating each of the items to their new values + if ( isArrayLike( elems ) ) { + length = elems.length; + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + } + + // Flatten any nested arrays + return flat( ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support +} ); + +if ( typeof Symbol === "function" ) { + jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; +} + +// Populate the class2type map +jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), + function( _i, name ) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); + } ); + +function isArrayLike( obj ) { + + // Support: real iOS 8.2 only (not reproducible in simulator) + // `in` check used to prevent JIT error (gh-2145) + // hasOwn isn't used here due to false negatives + // regarding Nodelist length in IE + var length = !!obj && "length" in obj && obj.length, + type = toType( obj ); + + if ( isFunction( obj ) || isWindow( obj ) ) { + return false; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} +var Sizzle = +/*! + * Sizzle CSS Selector Engine v2.3.6 + * https://sizzlejs.com/ + * + * Copyright JS Foundation and other contributors + * Released under the MIT license + * https://js.foundation/ + * + * Date: 2021-02-16 + */ +( function( window ) { +var i, + support, + Expr, + getText, + isXML, + tokenize, + compile, + select, + outermostContext, + sortInput, + hasDuplicate, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + 1 * new Date(), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + nonnativeSelectorCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + // Instance methods + hasOwn = ( {} ).hasOwnProperty, + arr = [], + pop = arr.pop, + pushNative = arr.push, + push = arr.push, + slice = arr.slice, + + // Use a stripped-down indexOf as it's faster than native + // https://jsperf.com/thor-indexof-vs-for/5 + indexOf = function( list, elem ) { + var i = 0, + len = list.length; + for ( ; i < len; i++ ) { + if ( list[ i ] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|" + + "ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + + // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram + identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace + + "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+", + + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + + // "Attribute values must be CSS identifiers [capture 5] + // or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + + whitespace + "*\\]", + + pseudos = ":(" + identifier + ")(?:\\((" + + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + + // 3. anything else (capture 2) + ".*" + + ")\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rwhitespace = new RegExp( whitespace + "+", "g" ), + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + + "*" ), + rdescend = new RegExp( whitespace + "|>" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + identifier + ")" ), + "CLASS": new RegExp( "^\\.(" + identifier + ")" ), + "TAG": new RegExp( "^(" + identifier + "|[*])" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rhtml = /HTML$/i, + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + + // CSS escapes + // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g" ), + funescape = function( escape, nonHex ) { + var high = "0x" + escape.slice( 1 ) - 0x10000; + + return nonHex ? + + // Strip the backslash prefix from a non-hex escape sequence + nonHex : + + // Replace a hexadecimal escape sequence with the encoded Unicode code point + // Support: IE <=11+ + // For values outside the Basic Multilingual Plane (BMP), manually construct a + // surrogate pair + high < 0 ? + String.fromCharCode( high + 0x10000 ) : + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }, + + // CSS string/identifier serialization + // https://drafts.csswg.org/cssom/#common-serializing-idioms + rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, + fcssescape = function( ch, asCodePoint ) { + if ( asCodePoint ) { + + // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER + if ( ch === "\0" ) { + return "\uFFFD"; + } + + // Control characters and (dependent upon position) numbers get escaped as code points + return ch.slice( 0, -1 ) + "\\" + + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; + } + + // Other potentially-special ASCII characters get backslash-escaped + return "\\" + ch; + }, + + // Used for iframes + // See setDocument() + // Removing the function wrapper causes a "Permission Denied" + // error in IE + unloadHandler = function() { + setDocument(); + }, + + inDisabledFieldset = addCombinator( + function( elem ) { + return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset"; + }, + { dir: "parentNode", next: "legend" } + ); + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + ( arr = slice.call( preferredDoc.childNodes ) ), + preferredDoc.childNodes + ); + + // Support: Android<4.0 + // Detect silently failing push.apply + // eslint-disable-next-line no-unused-expressions + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + pushNative.apply( target, slice.call( els ) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + + // Can't trust NodeList.length + while ( ( target[ j++ ] = els[ i++ ] ) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var m, i, elem, nid, match, groups, newSelector, + newContext = context && context.ownerDocument, + + // nodeType defaults to 9, since context defaults to document + nodeType = context ? context.nodeType : 9; + + results = results || []; + + // Return early from calls with invalid selector or context + if ( typeof selector !== "string" || !selector || + nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { + + return results; + } + + // Try to shortcut find operations (as opposed to filters) in HTML documents + if ( !seed ) { + setDocument( context ); + context = context || document; + + if ( documentIsHTML ) { + + // If the selector is sufficiently simple, try using a "get*By*" DOM method + // (excepting DocumentFragment context, where the methods don't exist) + if ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) { + + // ID selector + if ( ( m = match[ 1 ] ) ) { + + // Document context + if ( nodeType === 9 ) { + if ( ( elem = context.getElementById( m ) ) ) { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + + // Element context + } else { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( newContext && ( elem = newContext.getElementById( m ) ) && + contains( context, elem ) && + elem.id === m ) { + + results.push( elem ); + return results; + } + } + + // Type selector + } else if ( match[ 2 ] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Class selector + } else if ( ( m = match[ 3 ] ) && support.getElementsByClassName && + context.getElementsByClassName ) { + + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // Take advantage of querySelectorAll + if ( support.qsa && + !nonnativeSelectorCache[ selector + " " ] && + ( !rbuggyQSA || !rbuggyQSA.test( selector ) ) && + + // Support: IE 8 only + // Exclude object elements + ( nodeType !== 1 || context.nodeName.toLowerCase() !== "object" ) ) { + + newSelector = selector; + newContext = context; + + // qSA considers elements outside a scoping root when evaluating child or + // descendant combinators, which is not what we want. + // In such cases, we work around the behavior by prefixing every selector in the + // list with an ID selector referencing the scope context. + // The technique has to be used as well when a leading combinator is used + // as such selectors are not recognized by querySelectorAll. + // Thanks to Andrew Dupont for this technique. + if ( nodeType === 1 && + ( rdescend.test( selector ) || rcombinators.test( selector ) ) ) { + + // Expand context for sibling selectors + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || + context; + + // We can use :scope instead of the ID hack if the browser + // supports it & if we're not changing the context. + if ( newContext !== context || !support.scope ) { + + // Capture the context ID, setting it first if necessary + if ( ( nid = context.getAttribute( "id" ) ) ) { + nid = nid.replace( rcssescape, fcssescape ); + } else { + context.setAttribute( "id", ( nid = expando ) ); + } + } + + // Prefix every selector in the list + groups = tokenize( selector ); + i = groups.length; + while ( i-- ) { + groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " + + toSelector( groups[ i ] ); + } + newSelector = groups.join( "," ); + } + + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch ( qsaError ) { + nonnativeSelectorCache( selector, true ); + } finally { + if ( nid === expando ) { + context.removeAttribute( "id" ); + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {function(string, object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key + " " ) > Expr.cacheLength ) { + + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return ( cache[ key + " " ] = value ); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created element and returns a boolean result + */ +function assert( fn ) { + var el = document.createElement( "fieldset" ); + + try { + return !!fn( el ); + } catch ( e ) { + return false; + } finally { + + // Remove from its parent by default + if ( el.parentNode ) { + el.parentNode.removeChild( el ); + } + + // release memory in IE + el = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split( "|" ), + i = arr.length; + + while ( i-- ) { + Expr.attrHandle[ arr[ i ] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + a.sourceIndex - b.sourceIndex; + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( ( cur = cur.nextSibling ) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return ( name === "input" || name === "button" ) && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for :enabled/:disabled + * @param {Boolean} disabled true for :disabled; false for :enabled + */ +function createDisabledPseudo( disabled ) { + + // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable + return function( elem ) { + + // Only certain elements can match :enabled or :disabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled + if ( "form" in elem ) { + + // Check for inherited disabledness on relevant non-disabled elements: + // * listed form-associated elements in a disabled fieldset + // https://html.spec.whatwg.org/multipage/forms.html#category-listed + // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled + // * option elements in a disabled optgroup + // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled + // All such elements have a "form" property. + if ( elem.parentNode && elem.disabled === false ) { + + // Option elements defer to a parent optgroup if present + if ( "label" in elem ) { + if ( "label" in elem.parentNode ) { + return elem.parentNode.disabled === disabled; + } else { + return elem.disabled === disabled; + } + } + + // Support: IE 6 - 11 + // Use the isDisabled shortcut property to check for disabled fieldset ancestors + return elem.isDisabled === disabled || + + // Where there is no isDisabled, check manually + /* jshint -W018 */ + elem.isDisabled !== !disabled && + inDisabledFieldset( elem ) === disabled; + } + + return elem.disabled === disabled; + + // Try to winnow out elements that can't be disabled before trusting the disabled property. + // Some victims get caught in our net (label, legend, menu, track), but it shouldn't + // even exist on them, let alone have a boolean value. + } else if ( "label" in elem ) { + return elem.disabled === disabled; + } + + // Remaining elements are neither :enabled nor :disabled + return false; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction( function( argument ) { + argument = +argument; + return markFunction( function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ ( j = matchIndexes[ i ] ) ] ) { + seed[ j ] = !( matches[ j ] = seed[ j ] ); + } + } + } ); + } ); +} + +/** + * Checks a node for validity as a Sizzle context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ +function testContext( context ) { + return context && typeof context.getElementsByTagName !== "undefined" && context; +} + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Detects XML nodes + * @param {Element|Object} elem An element or a document + * @returns {Boolean} True iff elem is a non-HTML XML node + */ +isXML = Sizzle.isXML = function( elem ) { + var namespace = elem && elem.namespaceURI, + docElem = elem && ( elem.ownerDocument || elem ).documentElement; + + // Support: IE <=8 + // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes + // https://bugs.jquery.com/ticket/4833 + return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" ); +}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var hasCompare, subWindow, + doc = node ? node.ownerDocument || node : preferredDoc; + + // Return early if doc is invalid or already selected + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Update global variables + document = doc; + docElem = document.documentElement; + documentIsHTML = !isXML( document ); + + // Support: IE 9 - 11+, Edge 12 - 18+ + // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( preferredDoc != document && + ( subWindow = document.defaultView ) && subWindow.top !== subWindow ) { + + // Support: IE 11, Edge + if ( subWindow.addEventListener ) { + subWindow.addEventListener( "unload", unloadHandler, false ); + + // Support: IE 9 - 10 only + } else if ( subWindow.attachEvent ) { + subWindow.attachEvent( "onunload", unloadHandler ); + } + } + + // Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only, + // Safari 4 - 5 only, Opera <=11.6 - 12.x only + // IE/Edge & older browsers don't support the :scope pseudo-class. + // Support: Safari 6.0 only + // Safari 6.0 supports :scope but it's an alias of :root there. + support.scope = assert( function( el ) { + docElem.appendChild( el ).appendChild( document.createElement( "div" ) ); + return typeof el.querySelectorAll !== "undefined" && + !el.querySelectorAll( ":scope fieldset div" ).length; + } ); + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties + // (excepting IE8 booleans) + support.attributes = assert( function( el ) { + el.className = "i"; + return !el.getAttribute( "className" ); + } ); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert( function( el ) { + el.appendChild( document.createComment( "" ) ); + return !el.getElementsByTagName( "*" ).length; + } ); + + // Support: IE<9 + support.getElementsByClassName = rnative.test( document.getElementsByClassName ); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programmatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert( function( el ) { + docElem.appendChild( el ).id = expando; + return !document.getElementsByName || !document.getElementsByName( expando ).length; + } ); + + // ID filter and find + if ( support.getById ) { + Expr.filter[ "ID" ] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute( "id" ) === attrId; + }; + }; + Expr.find[ "ID" ] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var elem = context.getElementById( id ); + return elem ? [ elem ] : []; + } + }; + } else { + Expr.filter[ "ID" ] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== "undefined" && + elem.getAttributeNode( "id" ); + return node && node.value === attrId; + }; + }; + + // Support: IE 6 - 7 only + // getElementById is not reliable as a find shortcut + Expr.find[ "ID" ] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var node, i, elems, + elem = context.getElementById( id ); + + if ( elem ) { + + // Verify the id attribute + node = elem.getAttributeNode( "id" ); + if ( node && node.value === id ) { + return [ elem ]; + } + + // Fall back on getElementsByName + elems = context.getElementsByName( id ); + i = 0; + while ( ( elem = elems[ i++ ] ) ) { + node = elem.getAttributeNode( "id" ); + if ( node && node.value === id ) { + return [ elem ]; + } + } + } + + return []; + } + }; + } + + // Tag + Expr.find[ "TAG" ] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( tag ); + + // DocumentFragment nodes don't have gEBTN + } else if ( support.qsa ) { + return context.querySelectorAll( tag ); + } + } : + + function( tag, context ) { + var elem, + tmp = [], + i = 0, + + // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( ( elem = results[ i++ ] ) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find[ "CLASS" ] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See https://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) { + + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert( function( el ) { + + var input; + + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // https://bugs.jquery.com/ticket/12359 + docElem.appendChild( el ).innerHTML = "" + + ""; + + // Support: IE8, Opera 11-12.16 + // Nothing should be selected when empty strings follow ^= or $= or *= + // The test attribute must be unknown in Opera but "safe" for WinRT + // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section + if ( el.querySelectorAll( "[msallowcapture^='']" ).length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !el.querySelectorAll( "[selected]" ).length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ + if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { + rbuggyQSA.push( "~=" ); + } + + // Support: IE 11+, Edge 15 - 18+ + // IE 11/Edge don't find elements on a `[name='']` query in some cases. + // Adding a temporary attribute to the document before the selection works + // around the issue. + // Interestingly, IE 10 & older don't seem to have the issue. + input = document.createElement( "input" ); + input.setAttribute( "name", "" ); + el.appendChild( input ); + if ( !el.querySelectorAll( "[name='']" ).length ) { + rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" + + whitespace + "*(?:''|\"\")" ); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !el.querySelectorAll( ":checked" ).length ) { + rbuggyQSA.push( ":checked" ); + } + + // Support: Safari 8+, iOS 8+ + // https://bugs.webkit.org/show_bug.cgi?id=136851 + // In-page `selector#id sibling-combinator selector` fails + if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { + rbuggyQSA.push( ".#.+[+~]" ); + } + + // Support: Firefox <=3.6 - 5 only + // Old Firefox doesn't throw on a badly-escaped identifier. + el.querySelectorAll( "\\\f" ); + rbuggyQSA.push( "[\\r\\n\\f]" ); + } ); + + assert( function( el ) { + el.innerHTML = "" + + ""; + + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + var input = document.createElement( "input" ); + input.setAttribute( "type", "hidden" ); + el.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE8 + // Enforce case-sensitivity of name attribute + if ( el.querySelectorAll( "[name=d]" ).length ) { + rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( el.querySelectorAll( ":enabled" ).length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Support: IE9-11+ + // IE's :disabled selector does not pick up the children of disabled fieldsets + docElem.appendChild( el ).disabled = true; + if ( el.querySelectorAll( ":disabled" ).length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Support: Opera 10 - 11 only + // Opera 10-11 does not throw on post-comma invalid pseudos + el.querySelectorAll( "*,:x" ); + rbuggyQSA.push( ",.*:" ); + } ); + } + + if ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches || + docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector ) ) ) ) { + + assert( function( el ) { + + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( el, "*" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( el, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + } ); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( "|" ) ); + + /* Contains + ---------------------------------------------------------------------- */ + hasCompare = rnative.test( docElem.compareDocumentPosition ); + + // Element contains another + // Purposefully self-exclusive + // As in, an element does not contain itself + contains = hasCompare || rnative.test( docElem.contains ) ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + ) ); + } : + function( a, b ) { + if ( b ) { + while ( ( b = b.parentNode ) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = hasCompare ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + // Sort on method existence if only one input has compareDocumentPosition + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if ( compare ) { + return compare; + } + + // Calculate position if both inputs belong to the same document + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + compare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ? + a.compareDocumentPosition( b ) : + + // Otherwise we know they are disconnected + 1; + + // Disconnected nodes + if ( compare & 1 || + ( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) { + + // Choose the first element that is related to our preferred document + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( a == document || a.ownerDocument == preferredDoc && + contains( preferredDoc, a ) ) { + return -1; + } + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( b == document || b.ownerDocument == preferredDoc && + contains( preferredDoc, b ) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } : + function( a, b ) { + + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Parentless nodes are either documents or disconnected + if ( !aup || !bup ) { + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + /* eslint-disable eqeqeq */ + return a == document ? -1 : + b == document ? 1 : + /* eslint-enable eqeqeq */ + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( ( cur = cur.parentNode ) ) { + ap.unshift( cur ); + } + cur = b; + while ( ( cur = cur.parentNode ) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[ i ] === bp[ i ] ) { + i++; + } + + return i ? + + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[ i ], bp[ i ] ) : + + // Otherwise nodes in our document sort first + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + /* eslint-disable eqeqeq */ + ap[ i ] == preferredDoc ? -1 : + bp[ i ] == preferredDoc ? 1 : + /* eslint-enable eqeqeq */ + 0; + }; + + return document; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + setDocument( elem ); + + if ( support.matchesSelector && documentIsHTML && + !nonnativeSelectorCache[ expr + " " ] && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch ( e ) { + nonnativeSelectorCache( expr, true ); + } + } + + return Sizzle( expr, document, null, [ elem ] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + + // Set document vars if needed + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( ( context.ownerDocument || context ) != document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + + // Set document vars if needed + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( ( elem.ownerDocument || elem ) != document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val !== undefined ? + val : + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + ( val = elem.getAttributeNode( name ) ) && val.specified ? + val.value : + null; +}; + +Sizzle.escape = function( sel ) { + return ( sel + "" ).replace( rcssescape, fcssescape ); +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( ( elem = results[ i++ ] ) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + // Clear input after sorting to release objects + // See https://github.com/jquery/sizzle/pull/225 + sortInput = null; + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + + // If no nodeType, this is expected to be an array + while ( ( node = elem[ i++ ] ) ) { + + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + + // Use textContent for elements + // innerText usage removed for consistency of new lines (jQuery #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[ 1 ] = match[ 1 ].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[ 3 ] = ( match[ 3 ] || match[ 4 ] || + match[ 5 ] || "" ).replace( runescape, funescape ); + + if ( match[ 2 ] === "~=" ) { + match[ 3 ] = " " + match[ 3 ] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[ 1 ] = match[ 1 ].toLowerCase(); + + if ( match[ 1 ].slice( 0, 3 ) === "nth" ) { + + // nth-* requires argument + if ( !match[ 3 ] ) { + Sizzle.error( match[ 0 ] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[ 4 ] = +( match[ 4 ] ? + match[ 5 ] + ( match[ 6 ] || 1 ) : + 2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" ) ); + match[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === "odd" ); + + // other types prohibit arguments + } else if ( match[ 3 ] ) { + Sizzle.error( match[ 0 ] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[ 6 ] && match[ 2 ]; + + if ( matchExpr[ "CHILD" ].test( match[ 0 ] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[ 3 ] ) { + match[ 2 ] = match[ 4 ] || match[ 5 ] || ""; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + + // Get excess from tokenize (recursively) + ( excess = tokenize( unquoted, true ) ) && + + // advance to the next closing parenthesis + ( excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length ) ) { + + // excess is a negative index + match[ 0 ] = match[ 0 ].slice( 0, excess ); + match[ 2 ] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { + return true; + } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + ( pattern = new RegExp( "(^|" + whitespace + + ")" + className + "(" + whitespace + "|$)" ) ) && classCache( + className, function( elem ) { + return pattern.test( + typeof elem.className === "string" && elem.className || + typeof elem.getAttribute !== "undefined" && + elem.getAttribute( "class" ) || + "" + ); + } ); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + /* eslint-disable max-len */ + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + /* eslint-enable max-len */ + + }; + }, + + "CHILD": function( type, what, _argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, _context, xml ) { + var cache, uniqueCache, outerCache, node, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType, + diff = false; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( ( node = node[ dir ] ) ) { + if ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) { + + return false; + } + } + + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + + // Seek `elem` from a previously-cached index + + // ...in a gzip-friendly way + node = parent; + outerCache = node[ expando ] || ( node[ expando ] = {} ); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + ( outerCache[ node.uniqueID ] = {} ); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex && cache[ 2 ]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( ( node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + ( diff = nodeIndex = 0 ) || start.pop() ) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + } else { + + // Use previously-cached element index if available + if ( useCache ) { + + // ...in a gzip-friendly way + node = elem; + outerCache = node[ expando ] || ( node[ expando ] = {} ); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + ( outerCache[ node.uniqueID ] = {} ); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex; + } + + // xml :nth-child(...) + // or :nth-last-child(...) or :nth(-last)?-of-type(...) + if ( diff === false ) { + + // Use the same loop as above to seek `elem` from the start + while ( ( node = ++nodeIndex && node && node[ dir ] || + ( diff = nodeIndex = 0 ) || start.pop() ) ) { + + if ( ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) && + ++diff ) { + + // Cache the index of each encountered element + if ( useCache ) { + outerCache = node[ expando ] || + ( node[ expando ] = {} ); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + ( outerCache[ node.uniqueID ] = {} ); + + uniqueCache[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction( function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf( seed, matched[ i ] ); + seed[ idx ] = !( matches[ idx ] = matched[ i ] ); + } + } ) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + + // Potentially complex pseudos + "not": markFunction( function( selector ) { + + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction( function( seed, matches, _context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( ( elem = unmatched[ i ] ) ) { + seed[ i ] = !( matches[ i ] = elem ); + } + } + } ) : + function( elem, _context, xml ) { + input[ 0 ] = elem; + matcher( input, null, xml, results ); + + // Don't keep the element (issue #299) + input[ 0 ] = null; + return !results.pop(); + }; + } ), + + "has": markFunction( function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + } ), + + "contains": markFunction( function( text ) { + text = text.replace( runescape, funescape ); + return function( elem ) { + return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1; + }; + } ), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + + // lang value must be a valid identifier + if ( !ridentifier.test( lang || "" ) ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( ( elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute( "xml:lang" ) || elem.getAttribute( "lang" ) ) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( ( elem = elem.parentNode ) && elem.nodeType === 1 ); + return false; + }; + } ), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && + ( !document.hasFocus || document.hasFocus() ) && + !!( elem.type || elem.href || ~elem.tabIndex ); + }, + + // Boolean properties + "enabled": createDisabledPseudo( false ), + "disabled": createDisabledPseudo( true ), + + "checked": function( elem ) { + + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return ( nodeName === "input" && !!elem.checked ) || + ( nodeName === "option" && !!elem.selected ); + }, + + "selected": function( elem ) { + + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + // eslint-disable-next-line no-unused-expressions + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), + // but not by others (comment: 8; processing instruction: 7; etc.) + // nodeType < 6 works because attributes (2) do not appear as children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeType < 6 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos[ "empty" ]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + + // Support: IE<8 + // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" + ( ( attr = elem.getAttribute( "type" ) ) == null || + attr.toLowerCase() === "text" ); + }, + + // Position-in-collection + "first": createPositionalPseudo( function() { + return [ 0 ]; + } ), + + "last": createPositionalPseudo( function( _matchIndexes, length ) { + return [ length - 1 ]; + } ), + + "eq": createPositionalPseudo( function( _matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + } ), + + "even": createPositionalPseudo( function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ), + + "odd": createPositionalPseudo( function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ), + + "lt": createPositionalPseudo( function( matchIndexes, length, argument ) { + var i = argument < 0 ? + argument + length : + argument > length ? + length : + argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ), + + "gt": createPositionalPseudo( function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ) + } +}; + +Expr.pseudos[ "nth" ] = Expr.pseudos[ "eq" ]; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +tokenize = Sizzle.tokenize = function( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || ( match = rcomma.exec( soFar ) ) ) { + if ( match ) { + + // Don't consume trailing commas as valid + soFar = soFar.slice( match[ 0 ].length ) || soFar; + } + groups.push( ( tokens = [] ) ); + } + + matched = false; + + // Combinators + if ( ( match = rcombinators.exec( soFar ) ) ) { + matched = match.shift(); + tokens.push( { + value: matched, + + // Cast descendant combinators to space + type: match[ 0 ].replace( rtrim, " " ) + } ); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] || + ( match = preFilters[ type ]( match ) ) ) ) { + matched = match.shift(); + tokens.push( { + value: matched, + type: type, + matches: match + } ); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +}; + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[ i ].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + skip = combinator.next, + key = skip || dir, + checkNonElements = base && key === "parentNode", + doneName = done++; + + return combinator.first ? + + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( ( elem = elem[ dir ] ) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + return false; + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var oldCache, uniqueCache, outerCache, + newCache = [ dirruns, doneName ]; + + // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching + if ( xml ) { + while ( ( elem = elem[ dir ] ) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( ( elem = elem[ dir ] ) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || ( elem[ expando ] = {} ); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ elem.uniqueID ] || + ( outerCache[ elem.uniqueID ] = {} ); + + if ( skip && skip === elem.nodeName.toLowerCase() ) { + elem = elem[ dir ] || elem; + } else if ( ( oldCache = uniqueCache[ key ] ) && + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { + + // Assign to newCache so results back-propagate to previous elements + return ( newCache[ 2 ] = oldCache[ 2 ] ); + } else { + + // Reuse newcache so results back-propagate to previous elements + uniqueCache[ key ] = newCache; + + // A match means we're done; a fail means we have to keep checking + if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) { + return true; + } + } + } + } + } + return false; + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[ i ]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[ 0 ]; +} + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[ i ], results ); + } + return results; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( ( elem = unmatched[ i ] ) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction( function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( + selector || "*", + context.nodeType ? [ context ] : context, + [] + ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( ( elem = temp[ i ] ) ) { + matcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem ); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( ( elem = matcherOut[ i ] ) ) { + + // Restore matcherIn since elem is not yet a final match + temp.push( ( matcherIn[ i ] = elem ) ); + } + } + postFinder( null, ( matcherOut = [] ), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( ( elem = matcherOut[ i ] ) && + ( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) { + + seed[ temp ] = !( results[ temp ] = elem ); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + } ); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[ 0 ].type ], + implicitRelative = leadingRelative || Expr.relative[ " " ], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + ( checkContext = context ).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + + // Avoid hanging onto element (issue #299) + checkContext = null; + return ret; + } ]; + + for ( ; i < len; i++ ) { + if ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) { + matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ]; + } else { + matcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[ j ].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens + .slice( 0, i - 1 ) + .concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } ) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + var bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, outermost ) { + var elem, j, matcher, + matchedCount = 0, + i = "0", + unmatched = seed && [], + setMatched = [], + contextBackup = outermostContext, + + // We must always have either seed elements or outermost context + elems = seed || byElement && Expr.find[ "TAG" ]( "*", outermost ), + + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ), + len = elems.length; + + if ( outermost ) { + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + outermostContext = context == document || context || outermost; + } + + // Add elements passing elementMatchers directly to results + // Support: IE<9, Safari + // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id + for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( !context && elem.ownerDocument != document ) { + setDocument( elem ); + xml = !documentIsHTML; + } + while ( ( matcher = elementMatchers[ j++ ] ) ) { + if ( matcher( elem, context || document, xml ) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + + // They will have gone through all possible matchers + if ( ( elem = !matcher && elem ) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // `i` is now the count of elements visited above, and adding it to `matchedCount` + // makes the latter nonnegative. + matchedCount += i; + + // Apply set filters to unmatched elements + // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` + // equals `i`), unless we didn't visit _any_ elements in the above loop because we have + // no element matchers and no seed. + // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that + // case, which will result in a "00" `matchedCount` that differs from `i` but is also + // numerically zero. + if ( bySet && i !== matchedCount ) { + j = 0; + while ( ( matcher = setMatchers[ j++ ] ) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !( unmatched[ i ] || setMatched[ i ] ) ) { + setMatched[ i ] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + + // Generate a function of recursive functions that can be used to check each element + if ( !match ) { + match = tokenize( selector ); + } + i = match.length; + while ( i-- ) { + cached = matcherFromTokens( match[ i ] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( + selector, + matcherFromGroupMatchers( elementMatchers, setMatchers ) + ); + + // Save selector and tokenization + cached.selector = selector; + } + return cached; +}; + +/** + * A low-level selection function that works with Sizzle's compiled + * selector functions + * @param {String|Function} selector A selector or a pre-compiled + * selector function built with Sizzle.compile + * @param {Element} context + * @param {Array} [results] + * @param {Array} [seed] A set of elements to match against + */ +select = Sizzle.select = function( selector, context, results, seed ) { + var i, tokens, token, type, find, + compiled = typeof selector === "function" && selector, + match = !seed && tokenize( ( selector = compiled.selector || selector ) ); + + results = results || []; + + // Try to minimize operations if there is only one selector in the list and no seed + // (the latter of which guarantees us context) + if ( match.length === 1 ) { + + // Reduce context if the leading compound selector is an ID + tokens = match[ 0 ] = match[ 0 ].slice( 0 ); + if ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === "ID" && + context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) { + + context = ( Expr.find[ "ID" ]( token.matches[ 0 ] + .replace( runescape, funescape ), context ) || [] )[ 0 ]; + if ( !context ) { + return results; + + // Precompiled matchers will still verify ancestry, so step up a level + } else if ( compiled ) { + context = context.parentNode; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr[ "needsContext" ].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[ i ]; + + // Abort if we hit a combinator + if ( Expr.relative[ ( type = token.type ) ] ) { + break; + } + if ( ( find = Expr.find[ type ] ) ) { + + // Search, expanding context for leading sibling combinators + if ( ( seed = find( + token.matches[ 0 ].replace( runescape, funescape ), + rsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) || + context + ) ) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + + // Compile and execute a filtering function if one is not provided + // Provide `match` to avoid retokenization if we modified the selector above + ( compiled || compile( selector, match ) )( + seed, + context, + !documentIsHTML, + results, + !context || rsibling.test( selector ) && testContext( context.parentNode ) || context + ); + return results; +}; + +// One-time assignments + +// Sort stability +support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando; + +// Support: Chrome 14-35+ +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = !!hasDuplicate; + +// Initialize against the default document +setDocument(); + +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert( function( el ) { + + // Should return 1, but returns 4 (following) + return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1; +} ); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert( function( el ) { + el.innerHTML = ""; + return el.firstChild.getAttribute( "href" ) === "#"; +} ) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + } ); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert( function( el ) { + el.innerHTML = ""; + el.firstChild.setAttribute( "value", "" ); + return el.firstChild.getAttribute( "value" ) === ""; +} ) ) { + addHandle( "value", function( elem, _name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + } ); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert( function( el ) { + return el.getAttribute( "disabled" ) == null; +} ) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return elem[ name ] === true ? name.toLowerCase() : + ( val = elem.getAttributeNode( name ) ) && val.specified ? + val.value : + null; + } + } ); +} + +return Sizzle; + +} )( window ); + + + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; + +// Deprecated +jQuery.expr[ ":" ] = jQuery.expr.pseudos; +jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; +jQuery.escapeSelector = Sizzle.escape; + + + + +var dir = function( elem, dir, until ) { + var matched = [], + truncate = until !== undefined; + + while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { + if ( elem.nodeType === 1 ) { + if ( truncate && jQuery( elem ).is( until ) ) { + break; + } + matched.push( elem ); + } + } + return matched; +}; + + +var siblings = function( n, elem ) { + var matched = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + matched.push( n ); + } + } + + return matched; +}; + + +var rneedsContext = jQuery.expr.match.needsContext; + + + +function nodeName( elem, name ) { + + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + +} +var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); + + + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + return !!qualifier.call( elem, i, elem ) !== not; + } ); + } + + // Single element + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + } ); + } + + // Arraylike of elements (jQuery, arguments, Array) + if ( typeof qualifier !== "string" ) { + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) > -1 ) !== not; + } ); + } + + // Filtered directly for both simple and complex selectors + return jQuery.filter( qualifier, elements, not ); +} + +jQuery.filter = function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + if ( elems.length === 1 && elem.nodeType === 1 ) { + return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; + } + + return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + } ) ); +}; + +jQuery.fn.extend( { + find: function( selector ) { + var i, ret, + len = this.length, + self = this; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter( function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + } ) ); + } + + ret = this.pushStack( [] ); + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + return len > 1 ? jQuery.uniqueSort( ret ) : ret; + }, + filter: function( selector ) { + return this.pushStack( winnow( this, selector || [], false ) ); + }, + not: function( selector ) { + return this.pushStack( winnow( this, selector || [], true ) ); + }, + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + } +} ); + + +// Initialize a jQuery object + + +// A central reference to the root jQuery(document) +var rootjQuery, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + // Shortcut simple #id case for speed + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, + + init = jQuery.fn.init = function( selector, context, root ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Method init() accepts an alternate rootjQuery + // so migrate can support jQuery.sub (gh-2101) + root = root || rootjQuery; + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector[ 0 ] === "<" && + selector[ selector.length - 1 ] === ">" && + selector.length >= 3 ) { + + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && ( match[ 1 ] || !context ) ) { + + // HANDLE: $(html) -> $(array) + if ( match[ 1 ] ) { + context = context instanceof jQuery ? context[ 0 ] : context; + + // Option to run scripts is true for back-compat + // Intentionally let the error be thrown if parseHTML is not present + jQuery.merge( this, jQuery.parseHTML( + match[ 1 ], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + + // Properties of context are called as methods if possible + if ( isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[ 2 ] ); + + if ( elem ) { + + // Inject the element directly into the jQuery object + this[ 0 ] = elem; + this.length = 1; + } + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || root ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this[ 0 ] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( isFunction( selector ) ) { + return root.ready !== undefined ? + root.ready( selector ) : + + // Execute immediately if ready is not present + selector( jQuery ); + } + + return jQuery.makeArray( selector, this ); + }; + +// Give the init function the jQuery prototype for later instantiation +init.prototype = jQuery.fn; + +// Initialize central reference +rootjQuery = jQuery( document ); + + +var rparentsprev = /^(?:parents|prev(?:Until|All))/, + + // Methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend( { + has: function( target ) { + var targets = jQuery( target, this ), + l = targets.length; + + return this.filter( function() { + var i = 0; + for ( ; i < l; i++ ) { + if ( jQuery.contains( this, targets[ i ] ) ) { + return true; + } + } + } ); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + matched = [], + targets = typeof selectors !== "string" && jQuery( selectors ); + + // Positional selectors never match, since there's no _selection_ context + if ( !rneedsContext.test( selectors ) ) { + for ( ; i < l; i++ ) { + for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { + + // Always skip document fragments + if ( cur.nodeType < 11 && ( targets ? + targets.index( cur ) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector( cur, selectors ) ) ) { + + matched.push( cur ); + break; + } + } + } + } + + return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); + }, + + // Determine the position of an element within the set + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; + } + + // Index in selector + if ( typeof elem === "string" ) { + return indexOf.call( jQuery( elem ), this[ 0 ] ); + } + + // Locate the position of the desired element + return indexOf.call( this, + + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[ 0 ] : elem + ); + }, + + add: function( selector, context ) { + return this.pushStack( + jQuery.uniqueSort( + jQuery.merge( this.get(), jQuery( selector, context ) ) + ) + ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter( selector ) + ); + } +} ); + +function sibling( cur, dir ) { + while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} + return cur; +} + +jQuery.each( { + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, _i, until ) { + return dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, _i, until ) { + return dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, _i, until ) { + return dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return siblings( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return siblings( elem.firstChild ); + }, + contents: function( elem ) { + if ( elem.contentDocument != null && + + // Support: IE 11+ + // elements with no `data` attribute has an object + // `contentDocument` with a `null` prototype. + getProto( elem.contentDocument ) ) { + + return elem.contentDocument; + } + + // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only + // Treat the template element as a regular one in browsers that + // don't support it. + if ( nodeName( elem, "template" ) ) { + elem = elem.content || elem; + } + + return jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var matched = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + matched = jQuery.filter( selector, matched ); + } + + if ( this.length > 1 ) { + + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + jQuery.uniqueSort( matched ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + matched.reverse(); + } + } + + return this.pushStack( matched ); + }; +} ); +var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); + + + +// Convert String-formatted options into Object-formatted ones +function createOptions( options ) { + var object = {}; + jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { + object[ flag ] = true; + } ); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + createOptions( options ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + + // Last fire value for non-forgettable lists + memory, + + // Flag to know if list was already fired + fired, + + // Flag to prevent firing + locked, + + // Actual callback list + list = [], + + // Queue of execution data for repeatable lists + queue = [], + + // Index of currently firing callback (modified by add/remove as needed) + firingIndex = -1, + + // Fire callbacks + fire = function() { + + // Enforce single-firing + locked = locked || options.once; + + // Execute callbacks for all pending executions, + // respecting firingIndex overrides and runtime changes + fired = firing = true; + for ( ; queue.length; firingIndex = -1 ) { + memory = queue.shift(); + while ( ++firingIndex < list.length ) { + + // Run callback and check for early termination + if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && + options.stopOnFalse ) { + + // Jump to end and forget the data so .add doesn't re-fire + firingIndex = list.length; + memory = false; + } + } + } + + // Forget the data if we're done with it + if ( !options.memory ) { + memory = false; + } + + firing = false; + + // Clean up if we're done firing for good + if ( locked ) { + + // Keep an empty list if we have data for future add calls + if ( memory ) { + list = []; + + // Otherwise, this object is spent + } else { + list = ""; + } + } + }, + + // Actual Callbacks object + self = { + + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + + // If we have memory from a past run, we should fire after adding + if ( memory && !firing ) { + firingIndex = list.length - 1; + queue.push( memory ); + } + + ( function add( args ) { + jQuery.each( args, function( _, arg ) { + if ( isFunction( arg ) ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && toType( arg ) !== "string" ) { + + // Inspect recursively + add( arg ); + } + } ); + } )( arguments ); + + if ( memory && !firing ) { + fire(); + } + } + return this; + }, + + // Remove a callback from the list + remove: function() { + jQuery.each( arguments, function( _, arg ) { + var index; + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + + // Handle firing indexes + if ( index <= firingIndex ) { + firingIndex--; + } + } + } ); + return this; + }, + + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? + jQuery.inArray( fn, list ) > -1 : + list.length > 0; + }, + + // Remove all callbacks from the list + empty: function() { + if ( list ) { + list = []; + } + return this; + }, + + // Disable .fire and .add + // Abort any current/pending executions + // Clear all callbacks and values + disable: function() { + locked = queue = []; + list = memory = ""; + return this; + }, + disabled: function() { + return !list; + }, + + // Disable .fire + // Also disable .add unless we have memory (since it would have no effect) + // Abort any pending executions + lock: function() { + locked = queue = []; + if ( !memory && !firing ) { + list = memory = ""; + } + return this; + }, + locked: function() { + return !!locked; + }, + + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( !locked ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + queue.push( args ); + if ( !firing ) { + fire(); + } + } + return this; + }, + + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; + + +function Identity( v ) { + return v; +} +function Thrower( ex ) { + throw ex; +} + +function adoptValue( value, resolve, reject, noValue ) { + var method; + + try { + + // Check for promise aspect first to privilege synchronous behavior + if ( value && isFunction( ( method = value.promise ) ) ) { + method.call( value ).done( resolve ).fail( reject ); + + // Other thenables + } else if ( value && isFunction( ( method = value.then ) ) ) { + method.call( value, resolve, reject ); + + // Other non-thenables + } else { + + // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: + // * false: [ value ].slice( 0 ) => resolve( value ) + // * true: [ value ].slice( 1 ) => resolve() + resolve.apply( undefined, [ value ].slice( noValue ) ); + } + + // For Promises/A+, convert exceptions into rejections + // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in + // Deferred#then to conditionally suppress rejection. + } catch ( value ) { + + // Support: Android 4.0 only + // Strict mode functions invoked without .call/.apply get global-object context + reject.apply( undefined, [ value ] ); + } +} + +jQuery.extend( { + + Deferred: function( func ) { + var tuples = [ + + // action, add listener, callbacks, + // ... .then handlers, argument index, [final state] + [ "notify", "progress", jQuery.Callbacks( "memory" ), + jQuery.Callbacks( "memory" ), 2 ], + [ "resolve", "done", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 0, "resolved" ], + [ "reject", "fail", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 1, "rejected" ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + "catch": function( fn ) { + return promise.then( null, fn ); + }, + + // Keep pipe for back-compat + pipe: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + + return jQuery.Deferred( function( newDefer ) { + jQuery.each( tuples, function( _i, tuple ) { + + // Map tuples (progress, done, fail) to arguments (done, fail, progress) + var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; + + // deferred.progress(function() { bind to newDefer or newDefer.notify }) + // deferred.done(function() { bind to newDefer or newDefer.resolve }) + // deferred.fail(function() { bind to newDefer or newDefer.reject }) + deferred[ tuple[ 1 ] ]( function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && isFunction( returned.promise ) ) { + returned.promise() + .progress( newDefer.notify ) + .done( newDefer.resolve ) + .fail( newDefer.reject ); + } else { + newDefer[ tuple[ 0 ] + "With" ]( + this, + fn ? [ returned ] : arguments + ); + } + } ); + } ); + fns = null; + } ).promise(); + }, + then: function( onFulfilled, onRejected, onProgress ) { + var maxDepth = 0; + function resolve( depth, deferred, handler, special ) { + return function() { + var that = this, + args = arguments, + mightThrow = function() { + var returned, then; + + // Support: Promises/A+ section 2.3.3.3.3 + // https://promisesaplus.com/#point-59 + // Ignore double-resolution attempts + if ( depth < maxDepth ) { + return; + } + + returned = handler.apply( that, args ); + + // Support: Promises/A+ section 2.3.1 + // https://promisesaplus.com/#point-48 + if ( returned === deferred.promise() ) { + throw new TypeError( "Thenable self-resolution" ); + } + + // Support: Promises/A+ sections 2.3.3.1, 3.5 + // https://promisesaplus.com/#point-54 + // https://promisesaplus.com/#point-75 + // Retrieve `then` only once + then = returned && + + // Support: Promises/A+ section 2.3.4 + // https://promisesaplus.com/#point-64 + // Only check objects and functions for thenability + ( typeof returned === "object" || + typeof returned === "function" ) && + returned.then; + + // Handle a returned thenable + if ( isFunction( then ) ) { + + // Special processors (notify) just wait for resolution + if ( special ) { + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ) + ); + + // Normal processors (resolve) also hook into progress + } else { + + // ...and disregard older resolution values + maxDepth++; + + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ), + resolve( maxDepth, deferred, Identity, + deferred.notifyWith ) + ); + } + + // Handle all other returned values + } else { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Identity ) { + that = undefined; + args = [ returned ]; + } + + // Process the value(s) + // Default process is resolve + ( special || deferred.resolveWith )( that, args ); + } + }, + + // Only normal processors (resolve) catch and reject exceptions + process = special ? + mightThrow : + function() { + try { + mightThrow(); + } catch ( e ) { + + if ( jQuery.Deferred.exceptionHook ) { + jQuery.Deferred.exceptionHook( e, + process.stackTrace ); + } + + // Support: Promises/A+ section 2.3.3.3.4.1 + // https://promisesaplus.com/#point-61 + // Ignore post-resolution exceptions + if ( depth + 1 >= maxDepth ) { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Thrower ) { + that = undefined; + args = [ e ]; + } + + deferred.rejectWith( that, args ); + } + } + }; + + // Support: Promises/A+ section 2.3.3.3.1 + // https://promisesaplus.com/#point-57 + // Re-resolve promises immediately to dodge false rejection from + // subsequent errors + if ( depth ) { + process(); + } else { + + // Call an optional hook to record the stack, in case of exception + // since it's otherwise lost when execution goes async + if ( jQuery.Deferred.getStackHook ) { + process.stackTrace = jQuery.Deferred.getStackHook(); + } + window.setTimeout( process ); + } + }; + } + + return jQuery.Deferred( function( newDefer ) { + + // progress_handlers.add( ... ) + tuples[ 0 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onProgress ) ? + onProgress : + Identity, + newDefer.notifyWith + ) + ); + + // fulfilled_handlers.add( ... ) + tuples[ 1 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onFulfilled ) ? + onFulfilled : + Identity + ) + ); + + // rejected_handlers.add( ... ) + tuples[ 2 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onRejected ) ? + onRejected : + Thrower + ) + ); + } ).promise(); + }, + + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 5 ]; + + // promise.progress = list.add + // promise.done = list.add + // promise.fail = list.add + promise[ tuple[ 1 ] ] = list.add; + + // Handle state + if ( stateString ) { + list.add( + function() { + + // state = "resolved" (i.e., fulfilled) + // state = "rejected" + state = stateString; + }, + + // rejected_callbacks.disable + // fulfilled_callbacks.disable + tuples[ 3 - i ][ 2 ].disable, + + // rejected_handlers.disable + // fulfilled_handlers.disable + tuples[ 3 - i ][ 3 ].disable, + + // progress_callbacks.lock + tuples[ 0 ][ 2 ].lock, + + // progress_handlers.lock + tuples[ 0 ][ 3 ].lock + ); + } + + // progress_handlers.fire + // fulfilled_handlers.fire + // rejected_handlers.fire + list.add( tuple[ 3 ].fire ); + + // deferred.notify = function() { deferred.notifyWith(...) } + // deferred.resolve = function() { deferred.resolveWith(...) } + // deferred.reject = function() { deferred.rejectWith(...) } + deferred[ tuple[ 0 ] ] = function() { + deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); + return this; + }; + + // deferred.notifyWith = list.fireWith + // deferred.resolveWith = list.fireWith + // deferred.rejectWith = list.fireWith + deferred[ tuple[ 0 ] + "With" ] = list.fireWith; + } ); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( singleValue ) { + var + + // count of uncompleted subordinates + remaining = arguments.length, + + // count of unprocessed arguments + i = remaining, + + // subordinate fulfillment data + resolveContexts = Array( i ), + resolveValues = slice.call( arguments ), + + // the primary Deferred + primary = jQuery.Deferred(), + + // subordinate callback factory + updateFunc = function( i ) { + return function( value ) { + resolveContexts[ i ] = this; + resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; + if ( !( --remaining ) ) { + primary.resolveWith( resolveContexts, resolveValues ); + } + }; + }; + + // Single- and empty arguments are adopted like Promise.resolve + if ( remaining <= 1 ) { + adoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject, + !remaining ); + + // Use .then() to unwrap secondary thenables (cf. gh-3000) + if ( primary.state() === "pending" || + isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { + + return primary.then(); + } + } + + // Multiple arguments are aggregated like Promise.all array elements + while ( i-- ) { + adoptValue( resolveValues[ i ], updateFunc( i ), primary.reject ); + } + + return primary.promise(); + } +} ); + + +// These usually indicate a programmer mistake during development, +// warn about them ASAP rather than swallowing them by default. +var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; + +jQuery.Deferred.exceptionHook = function( error, stack ) { + + // Support: IE 8 - 9 only + // Console exists when dev tools are open, which can happen at any time + if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { + window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); + } +}; + + + + +jQuery.readyException = function( error ) { + window.setTimeout( function() { + throw error; + } ); +}; + + + + +// The deferred used on DOM ready +var readyList = jQuery.Deferred(); + +jQuery.fn.ready = function( fn ) { + + readyList + .then( fn ) + + // Wrap jQuery.readyException in a function so that the lookup + // happens at the time of error handling instead of callback + // registration. + .catch( function( error ) { + jQuery.readyException( error ); + } ); + + return this; +}; + +jQuery.extend( { + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + } +} ); + +jQuery.ready.then = readyList.then; + +// The ready event handler and self cleanup method +function completed() { + document.removeEventListener( "DOMContentLoaded", completed ); + window.removeEventListener( "load", completed ); + jQuery.ready(); +} + +// Catch cases where $(document).ready() is called +// after the browser event has already occurred. +// Support: IE <=9 - 10 only +// Older IE sometimes signals "interactive" too soon +if ( document.readyState === "complete" || + ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { + + // Handle it asynchronously to allow scripts the opportunity to delay ready + window.setTimeout( jQuery.ready ); + +} else { + + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed ); +} + + + + +// Multifunctional method to get and set values of a collection +// The value/s can optionally be executed if it's a function +var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + len = elems.length, + bulk = key == null; + + // Sets many values + if ( toType( key ) === "object" ) { + chainable = true; + for ( i in key ) { + access( elems, fn, i, key[ i ], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, _key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < len; i++ ) { + fn( + elems[ i ], key, raw ? + value : + value.call( elems[ i ], i, fn( elems[ i ], key ) ) + ); + } + } + } + + if ( chainable ) { + return elems; + } + + // Gets + if ( bulk ) { + return fn.call( elems ); + } + + return len ? fn( elems[ 0 ], key ) : emptyGet; +}; + + +// Matches dashed string for camelizing +var rmsPrefix = /^-ms-/, + rdashAlpha = /-([a-z])/g; + +// Used by camelCase as callback to replace() +function fcamelCase( _all, letter ) { + return letter.toUpperCase(); +} + +// Convert dashed to camelCase; used by the css and data modules +// Support: IE <=9 - 11, Edge 12 - 15 +// Microsoft forgot to hump their vendor prefix (#9572) +function camelCase( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); +} +var acceptData = function( owner ) { + + // Accepts only: + // - Node + // - Node.ELEMENT_NODE + // - Node.DOCUMENT_NODE + // - Object + // - Any + return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); +}; + + + + +function Data() { + this.expando = jQuery.expando + Data.uid++; +} + +Data.uid = 1; + +Data.prototype = { + + cache: function( owner ) { + + // Check if the owner object already has a cache + var value = owner[ this.expando ]; + + // If not, create one + if ( !value ) { + value = {}; + + // We can accept data for non-element nodes in modern browsers, + // but we should not, see #8335. + // Always return an empty object. + if ( acceptData( owner ) ) { + + // If it is a node unlikely to be stringify-ed or looped over + // use plain assignment + if ( owner.nodeType ) { + owner[ this.expando ] = value; + + // Otherwise secure it in a non-enumerable property + // configurable must be true to allow the property to be + // deleted when data is removed + } else { + Object.defineProperty( owner, this.expando, { + value: value, + configurable: true + } ); + } + } + } + + return value; + }, + set: function( owner, data, value ) { + var prop, + cache = this.cache( owner ); + + // Handle: [ owner, key, value ] args + // Always use camelCase key (gh-2257) + if ( typeof data === "string" ) { + cache[ camelCase( data ) ] = value; + + // Handle: [ owner, { properties } ] args + } else { + + // Copy the properties one-by-one to the cache object + for ( prop in data ) { + cache[ camelCase( prop ) ] = data[ prop ]; + } + } + return cache; + }, + get: function( owner, key ) { + return key === undefined ? + this.cache( owner ) : + + // Always use camelCase key (gh-2257) + owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ]; + }, + access: function( owner, key, value ) { + + // In cases where either: + // + // 1. No key was specified + // 2. A string key was specified, but no value provided + // + // Take the "read" path and allow the get method to determine + // which value to return, respectively either: + // + // 1. The entire cache object + // 2. The data stored at the key + // + if ( key === undefined || + ( ( key && typeof key === "string" ) && value === undefined ) ) { + + return this.get( owner, key ); + } + + // When the key is not a string, or both a key and value + // are specified, set or extend (existing objects) with either: + // + // 1. An object of properties + // 2. A key and value + // + this.set( owner, key, value ); + + // Since the "set" path can have two possible entry points + // return the expected data based on which path was taken[*] + return value !== undefined ? value : key; + }, + remove: function( owner, key ) { + var i, + cache = owner[ this.expando ]; + + if ( cache === undefined ) { + return; + } + + if ( key !== undefined ) { + + // Support array or space separated string of keys + if ( Array.isArray( key ) ) { + + // If key is an array of keys... + // We always set camelCase keys, so remove that. + key = key.map( camelCase ); + } else { + key = camelCase( key ); + + // If a key with the spaces exists, use it. + // Otherwise, create an array by matching non-whitespace + key = key in cache ? + [ key ] : + ( key.match( rnothtmlwhite ) || [] ); + } + + i = key.length; + + while ( i-- ) { + delete cache[ key[ i ] ]; + } + } + + // Remove the expando if there's no more data + if ( key === undefined || jQuery.isEmptyObject( cache ) ) { + + // Support: Chrome <=35 - 45 + // Webkit & Blink performance suffers when deleting properties + // from DOM nodes, so set to undefined instead + // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) + if ( owner.nodeType ) { + owner[ this.expando ] = undefined; + } else { + delete owner[ this.expando ]; + } + } + }, + hasData: function( owner ) { + var cache = owner[ this.expando ]; + return cache !== undefined && !jQuery.isEmptyObject( cache ); + } +}; +var dataPriv = new Data(); + +var dataUser = new Data(); + + + +// Implementation Summary +// +// 1. Enforce API surface and semantic compatibility with 1.9.x branch +// 2. Improve the module's maintainability by reducing the storage +// paths to a single mechanism. +// 3. Use the same single mechanism to support "private" and "user" data. +// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) +// 5. Avoid exposing implementation details on user objects (eg. expando properties) +// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 + +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + rmultiDash = /[A-Z]/g; + +function getData( data ) { + if ( data === "true" ) { + return true; + } + + if ( data === "false" ) { + return false; + } + + if ( data === "null" ) { + return null; + } + + // Only convert to a number if it doesn't change the string + if ( data === +data + "" ) { + return +data; + } + + if ( rbrace.test( data ) ) { + return JSON.parse( data ); + } + + return data; +} + +function dataAttr( elem, key, data ) { + var name; + + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = getData( data ); + } catch ( e ) {} + + // Make sure we set the data so it isn't changed later + dataUser.set( elem, key, data ); + } else { + data = undefined; + } + } + return data; +} + +jQuery.extend( { + hasData: function( elem ) { + return dataUser.hasData( elem ) || dataPriv.hasData( elem ); + }, + + data: function( elem, name, data ) { + return dataUser.access( elem, name, data ); + }, + + removeData: function( elem, name ) { + dataUser.remove( elem, name ); + }, + + // TODO: Now that all calls to _data and _removeData have been replaced + // with direct calls to dataPriv methods, these can be deprecated. + _data: function( elem, name, data ) { + return dataPriv.access( elem, name, data ); + }, + + _removeData: function( elem, name ) { + dataPriv.remove( elem, name ); + } +} ); + +jQuery.fn.extend( { + data: function( key, value ) { + var i, name, data, + elem = this[ 0 ], + attrs = elem && elem.attributes; + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = dataUser.get( elem ); + + if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { + i = attrs.length; + while ( i-- ) { + + // Support: IE 11 only + // The attrs elements can be null (#14894) + if ( attrs[ i ] ) { + name = attrs[ i ].name; + if ( name.indexOf( "data-" ) === 0 ) { + name = camelCase( name.slice( 5 ) ); + dataAttr( elem, name, data[ name ] ); + } + } + } + dataPriv.set( elem, "hasDataAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each( function() { + dataUser.set( this, key ); + } ); + } + + return access( this, function( value ) { + var data; + + // The calling jQuery object (element matches) is not empty + // (and therefore has an element appears at this[ 0 ]) and the + // `value` parameter was not undefined. An empty jQuery object + // will result in `undefined` for elem = this[ 0 ] which will + // throw an exception if an attempt to read a data cache is made. + if ( elem && value === undefined ) { + + // Attempt to get data from the cache + // The key will always be camelCased in Data + data = dataUser.get( elem, key ); + if ( data !== undefined ) { + return data; + } + + // Attempt to "discover" the data in + // HTML5 custom data-* attrs + data = dataAttr( elem, key ); + if ( data !== undefined ) { + return data; + } + + // We tried really hard, but the data doesn't exist. + return; + } + + // Set the data... + this.each( function() { + + // We always store the camelCased key + dataUser.set( this, key, value ); + } ); + }, null, value, arguments.length > 1, null, true ); + }, + + removeData: function( key ) { + return this.each( function() { + dataUser.remove( this, key ); + } ); + } +} ); + + +jQuery.extend( { + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = dataPriv.get( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || Array.isArray( data ) ) { + queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // Clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // Not public - generate a queueHooks object, or return the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { + empty: jQuery.Callbacks( "once memory" ).add( function() { + dataPriv.remove( elem, [ type + "queue", key ] ); + } ) + } ); + } +} ); + +jQuery.fn.extend( { + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[ 0 ], type ); + } + + return data === undefined ? + this : + this.each( function() { + var queue = jQuery.queue( this, type, data ); + + // Ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + } ); + }, + dequeue: function( type ) { + return this.each( function() { + jQuery.dequeue( this, type ); + } ); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while ( i-- ) { + tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +} ); +var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; + +var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); + + +var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; + +var documentElement = document.documentElement; + + + + var isAttached = function( elem ) { + return jQuery.contains( elem.ownerDocument, elem ); + }, + composed = { composed: true }; + + // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only + // Check attachment across shadow DOM boundaries when possible (gh-3504) + // Support: iOS 10.0-10.2 only + // Early iOS 10 versions support `attachShadow` but not `getRootNode`, + // leading to errors. We need to check for `getRootNode`. + if ( documentElement.getRootNode ) { + isAttached = function( elem ) { + return jQuery.contains( elem.ownerDocument, elem ) || + elem.getRootNode( composed ) === elem.ownerDocument; + }; + } +var isHiddenWithinTree = function( elem, el ) { + + // isHiddenWithinTree might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + + // Inline style trumps all + return elem.style.display === "none" || + elem.style.display === "" && + + // Otherwise, check computed style + // Support: Firefox <=43 - 45 + // Disconnected elements can have computed display: none, so first confirm that elem is + // in the document. + isAttached( elem ) && + + jQuery.css( elem, "display" ) === "none"; + }; + + + +function adjustCSS( elem, prop, valueParts, tween ) { + var adjusted, scale, + maxIterations = 20, + currentValue = tween ? + function() { + return tween.cur(); + } : + function() { + return jQuery.css( elem, prop, "" ); + }, + initial = currentValue(), + unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), + + // Starting value computation is required for potential unit mismatches + initialInUnit = elem.nodeType && + ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && + rcssNum.exec( jQuery.css( elem, prop ) ); + + if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { + + // Support: Firefox <=54 + // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144) + initial = initial / 2; + + // Trust units reported by jQuery.css + unit = unit || initialInUnit[ 3 ]; + + // Iteratively approximate from a nonzero starting point + initialInUnit = +initial || 1; + + while ( maxIterations-- ) { + + // Evaluate and update our best guess (doubling guesses that zero out). + // Finish if the scale equals or crosses 1 (making the old*new product non-positive). + jQuery.style( elem, prop, initialInUnit + unit ); + if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) { + maxIterations = 0; + } + initialInUnit = initialInUnit / scale; + + } + + initialInUnit = initialInUnit * 2; + jQuery.style( elem, prop, initialInUnit + unit ); + + // Make sure we update the tween properties later on + valueParts = valueParts || []; + } + + if ( valueParts ) { + initialInUnit = +initialInUnit || +initial || 0; + + // Apply relative offset (+=/-=) if specified + adjusted = valueParts[ 1 ] ? + initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : + +valueParts[ 2 ]; + if ( tween ) { + tween.unit = unit; + tween.start = initialInUnit; + tween.end = adjusted; + } + } + return adjusted; +} + + +var defaultDisplayMap = {}; + +function getDefaultDisplay( elem ) { + var temp, + doc = elem.ownerDocument, + nodeName = elem.nodeName, + display = defaultDisplayMap[ nodeName ]; + + if ( display ) { + return display; + } + + temp = doc.body.appendChild( doc.createElement( nodeName ) ); + display = jQuery.css( temp, "display" ); + + temp.parentNode.removeChild( temp ); + + if ( display === "none" ) { + display = "block"; + } + defaultDisplayMap[ nodeName ] = display; + + return display; +} + +function showHide( elements, show ) { + var display, elem, + values = [], + index = 0, + length = elements.length; + + // Determine new display value for elements that need to change + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + + display = elem.style.display; + if ( show ) { + + // Since we force visibility upon cascade-hidden elements, an immediate (and slow) + // check is required in this first loop unless we have a nonempty display value (either + // inline or about-to-be-restored) + if ( display === "none" ) { + values[ index ] = dataPriv.get( elem, "display" ) || null; + if ( !values[ index ] ) { + elem.style.display = ""; + } + } + if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { + values[ index ] = getDefaultDisplay( elem ); + } + } else { + if ( display !== "none" ) { + values[ index ] = "none"; + + // Remember what we're overwriting + dataPriv.set( elem, "display", display ); + } + } + } + + // Set the display of the elements in a second loop to avoid constant reflow + for ( index = 0; index < length; index++ ) { + if ( values[ index ] != null ) { + elements[ index ].style.display = values[ index ]; + } + } + + return elements; +} + +jQuery.fn.extend( { + show: function() { + return showHide( this, true ); + }, + hide: function() { + return showHide( this ); + }, + toggle: function( state ) { + if ( typeof state === "boolean" ) { + return state ? this.show() : this.hide(); + } + + return this.each( function() { + if ( isHiddenWithinTree( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + } ); + } +} ); +var rcheckableType = ( /^(?:checkbox|radio)$/i ); + +var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i ); + +var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); + + + +( function() { + var fragment = document.createDocumentFragment(), + div = fragment.appendChild( document.createElement( "div" ) ), + input = document.createElement( "input" ); + + // Support: Android 4.0 - 4.3 only + // Check state lost if the name is set (#11217) + // Support: Windows Web Apps (WWA) + // `name` and `type` must use .setAttribute for WWA (#14901) + input.setAttribute( "type", "radio" ); + input.setAttribute( "checked", "checked" ); + input.setAttribute( "name", "t" ); + + div.appendChild( input ); + + // Support: Android <=4.1 only + // Older WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE <=11 only + // Make sure textarea (and checkbox) defaultValue is properly cloned + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; + + // Support: IE <=9 only + // IE <=9 replaces "; + support.option = !!div.lastChild; +} )(); + + +// We have to close these tags to support XHTML (#13200) +var wrapMap = { + + // XHTML parsers do not magically insert elements in the + // same way that tag soup parsers do. So we cannot shorten + // this by omitting or other required elements. + thead: [ 1, "", "
" ], + col: [ 2, "", "
" ], + tr: [ 2, "", "
" ], + td: [ 3, "", "
" ], + + _default: [ 0, "", "" ] +}; + +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +// Support: IE <=9 only +if ( !support.option ) { + wrapMap.optgroup = wrapMap.option = [ 1, "" ]; +} + + +function getAll( context, tag ) { + + // Support: IE <=9 - 11 only + // Use typeof to avoid zero-argument method invocation on host objects (#15151) + var ret; + + if ( typeof context.getElementsByTagName !== "undefined" ) { + ret = context.getElementsByTagName( tag || "*" ); + + } else if ( typeof context.querySelectorAll !== "undefined" ) { + ret = context.querySelectorAll( tag || "*" ); + + } else { + ret = []; + } + + if ( tag === undefined || tag && nodeName( context, tag ) ) { + return jQuery.merge( [ context ], ret ); + } + + return ret; +} + + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + dataPriv.set( + elems[ i ], + "globalEval", + !refElements || dataPriv.get( refElements[ i ], "globalEval" ) + ); + } +} + + +var rhtml = /<|&#?\w+;/; + +function buildFragment( elems, context, scripts, selection, ignored ) { + var elem, tmp, tag, wrap, attached, j, + fragment = context.createDocumentFragment(), + nodes = [], + i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( toType( elem ) === "object" ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; + + // Descend through wrappers to the right content + j = wrap[ 0 ]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, tmp.childNodes ); + + // Remember the top-level container + tmp = fragment.firstChild; + + // Ensure the created nodes are orphaned (#12392) + tmp.textContent = ""; + } + } + } + + // Remove wrapper from fragment + fragment.textContent = ""; + + i = 0; + while ( ( elem = nodes[ i++ ] ) ) { + + // Skip elements already in the context collection (trac-4087) + if ( selection && jQuery.inArray( elem, selection ) > -1 ) { + if ( ignored ) { + ignored.push( elem ); + } + continue; + } + + attached = isAttached( elem ); + + // Append to fragment + tmp = getAll( fragment.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( attached ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( ( elem = tmp[ j++ ] ) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + return fragment; +} + + +var rtypenamespace = /^([^.]*)(?:\.(.+)|)/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +// Support: IE <=9 - 11+ +// focus() and blur() are asynchronous, except when they are no-op. +// So expect focus to be synchronous when the element is already active, +// and blur to be synchronous when the element is not already active. +// (focus and blur are always synchronous in other supported browsers, +// this just defines when we can count on it). +function expectSync( elem, type ) { + return ( elem === safeActiveElement() ) === ( type === "focus" ); +} + +// Support: IE <=9 only +// Accessing document.activeElement can throw unexpectedly +// https://bugs.jquery.com/ticket/13393 +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +function on( elem, types, selector, data, fn, one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + on( elem, type, selector, data, types[ type ], one ); + } + return elem; + } + + if ( data == null && fn == null ) { + + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return elem; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return elem.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + } ); +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + + var handleObjIn, eventHandle, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.get( elem ); + + // Only attach events to objects that accept data + if ( !acceptData( elem ) ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Ensure that invalid selectors throw exceptions at attach time + // Evaluate against documentElement in case elem is a non-element node (e.g., document) + if ( selector ) { + jQuery.find.matchesSelector( documentElement, selector ); + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !( events = elemData.events ) ) { + events = elemData.events = Object.create( null ); + } + if ( !( eventHandle = elemData.handle ) ) { + eventHandle = elemData.handle = function( e ) { + + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? + jQuery.event.dispatch.apply( elem, arguments ) : undefined; + }; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend( { + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join( "." ) + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !( handlers = events[ type ] ) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener if the special events handler returns false + if ( !special.setup || + special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var j, origCount, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); + + if ( !elemData || !( events = elemData.events ) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[ 2 ] && + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || + selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || + special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove data and the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + dataPriv.remove( elem, "handle events" ); + } + }, + + dispatch: function( nativeEvent ) { + + var i, j, ret, matched, handleObj, handlerQueue, + args = new Array( arguments.length ), + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( nativeEvent ), + + handlers = ( + dataPriv.get( this, "events" ) || Object.create( null ) + )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[ 0 ] = event; + + for ( i = 1; i < arguments.length; i++ ) { + args[ i ] = arguments[ i ]; + } + + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( ( handleObj = matched.handlers[ j++ ] ) && + !event.isImmediatePropagationStopped() ) { + + // If the event is namespaced, then each handler is only invoked if it is + // specially universal or its namespaces are a superset of the event's. + if ( !event.rnamespace || handleObj.namespace === false || + event.rnamespace.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || + handleObj.handler ).apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( ( event.result = ret ) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var i, handleObj, sel, matchedHandlers, matchedSelectors, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + if ( delegateCount && + + // Support: IE <=9 + // Black-hole SVG instance trees (trac-13180) + cur.nodeType && + + // Support: Firefox <=42 + // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) + // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click + // Support: IE 11 only + // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) + !( event.type === "click" && event.button >= 1 ) ) { + + for ( ; cur !== this; cur = cur.parentNode || this ) { + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { + matchedHandlers = []; + matchedSelectors = {}; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matchedSelectors[ sel ] === undefined ) { + matchedSelectors[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) > -1 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matchedSelectors[ sel ] ) { + matchedHandlers.push( handleObj ); + } + } + if ( matchedHandlers.length ) { + handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); + } + } + } + } + + // Add the remaining (directly-bound) handlers + cur = this; + if ( delegateCount < handlers.length ) { + handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); + } + + return handlerQueue; + }, + + addProp: function( name, hook ) { + Object.defineProperty( jQuery.Event.prototype, name, { + enumerable: true, + configurable: true, + + get: isFunction( hook ) ? + function() { + if ( this.originalEvent ) { + return hook( this.originalEvent ); + } + } : + function() { + if ( this.originalEvent ) { + return this.originalEvent[ name ]; + } + }, + + set: function( value ) { + Object.defineProperty( this, name, { + enumerable: true, + configurable: true, + writable: true, + value: value + } ); + } + } ); + }, + + fix: function( originalEvent ) { + return originalEvent[ jQuery.expando ] ? + originalEvent : + new jQuery.Event( originalEvent ); + }, + + special: { + load: { + + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + click: { + + // Utilize native event to ensure correct state for checkable inputs + setup: function( data ) { + + // For mutual compressibility with _default, replace `this` access with a local var. + // `|| data` is dead code meant only to preserve the variable through minification. + var el = this || data; + + // Claim the first handler + if ( rcheckableType.test( el.type ) && + el.click && nodeName( el, "input" ) ) { + + // dataPriv.set( el, "click", ... ) + leverageNative( el, "click", returnTrue ); + } + + // Return false to allow normal processing in the caller + return false; + }, + trigger: function( data ) { + + // For mutual compressibility with _default, replace `this` access with a local var. + // `|| data` is dead code meant only to preserve the variable through minification. + var el = this || data; + + // Force setup before triggering a click + if ( rcheckableType.test( el.type ) && + el.click && nodeName( el, "input" ) ) { + + leverageNative( el, "click" ); + } + + // Return non-false to allow normal event-path propagation + return true; + }, + + // For cross-browser consistency, suppress native .click() on links + // Also prevent it if we're currently inside a leveraged native-event stack + _default: function( event ) { + var target = event.target; + return rcheckableType.test( target.type ) && + target.click && nodeName( target, "input" ) && + dataPriv.get( target, "click" ) || + nodeName( target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Support: Firefox 20+ + // Firefox doesn't alert if the returnValue field is not set. + if ( event.result !== undefined && event.originalEvent ) { + event.originalEvent.returnValue = event.result; + } + } + } + } +}; + +// Ensure the presence of an event listener that handles manually-triggered +// synthetic events by interrupting progress until reinvoked in response to +// *native* events that it fires directly, ensuring that state changes have +// already occurred before other listeners are invoked. +function leverageNative( el, type, expectSync ) { + + // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add + if ( !expectSync ) { + if ( dataPriv.get( el, type ) === undefined ) { + jQuery.event.add( el, type, returnTrue ); + } + return; + } + + // Register the controller as a special universal handler for all event namespaces + dataPriv.set( el, type, false ); + jQuery.event.add( el, type, { + namespace: false, + handler: function( event ) { + var notAsync, result, + saved = dataPriv.get( this, type ); + + if ( ( event.isTrigger & 1 ) && this[ type ] ) { + + // Interrupt processing of the outer synthetic .trigger()ed event + // Saved data should be false in such cases, but might be a leftover capture object + // from an async native handler (gh-4350) + if ( !saved.length ) { + + // Store arguments for use when handling the inner native event + // There will always be at least one argument (an event object), so this array + // will not be confused with a leftover capture object. + saved = slice.call( arguments ); + dataPriv.set( this, type, saved ); + + // Trigger the native event and capture its result + // Support: IE <=9 - 11+ + // focus() and blur() are asynchronous + notAsync = expectSync( this, type ); + this[ type ](); + result = dataPriv.get( this, type ); + if ( saved !== result || notAsync ) { + dataPriv.set( this, type, false ); + } else { + result = {}; + } + if ( saved !== result ) { + + // Cancel the outer synthetic event + event.stopImmediatePropagation(); + event.preventDefault(); + + // Support: Chrome 86+ + // In Chrome, if an element having a focusout handler is blurred by + // clicking outside of it, it invokes the handler synchronously. If + // that handler calls `.remove()` on the element, the data is cleared, + // leaving `result` undefined. We need to guard against this. + return result && result.value; + } + + // If this is an inner synthetic event for an event with a bubbling surrogate + // (focus or blur), assume that the surrogate already propagated from triggering the + // native event and prevent that from happening again here. + // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the + // bubbling surrogate propagates *after* the non-bubbling base), but that seems + // less bad than duplication. + } else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) { + event.stopPropagation(); + } + + // If this is a native event triggered above, everything is now in order + // Fire an inner synthetic event with the original arguments + } else if ( saved.length ) { + + // ...and capture the result + dataPriv.set( this, type, { + value: jQuery.event.trigger( + + // Support: IE <=9 - 11+ + // Extend with the prototype to reset the above stopImmediatePropagation() + jQuery.extend( saved[ 0 ], jQuery.Event.prototype ), + saved.slice( 1 ), + this + ) + } ); + + // Abort handling of the native event + event.stopImmediatePropagation(); + } + } + } ); +} + +jQuery.removeEvent = function( elem, type, handle ) { + + // This "if" is needed for plain objects + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle ); + } +}; + +jQuery.Event = function( src, props ) { + + // Allow instantiation without the 'new' keyword + if ( !( this instanceof jQuery.Event ) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = src.defaultPrevented || + src.defaultPrevented === undefined && + + // Support: Android <=2.3 only + src.returnValue === false ? + returnTrue : + returnFalse; + + // Create target properties + // Support: Safari <=6 - 7 only + // Target should not be a text node (#504, #13143) + this.target = ( src.target && src.target.nodeType === 3 ) ? + src.target.parentNode : + src.target; + + this.currentTarget = src.currentTarget; + this.relatedTarget = src.relatedTarget; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || Date.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + constructor: jQuery.Event, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + isSimulated: false, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + + if ( e && !this.isSimulated ) { + e.preventDefault(); + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopPropagation(); + } + }, + stopImmediatePropagation: function() { + var e = this.originalEvent; + + this.isImmediatePropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopImmediatePropagation(); + } + + this.stopPropagation(); + } +}; + +// Includes all common event props including KeyEvent and MouseEvent specific props +jQuery.each( { + altKey: true, + bubbles: true, + cancelable: true, + changedTouches: true, + ctrlKey: true, + detail: true, + eventPhase: true, + metaKey: true, + pageX: true, + pageY: true, + shiftKey: true, + view: true, + "char": true, + code: true, + charCode: true, + key: true, + keyCode: true, + button: true, + buttons: true, + clientX: true, + clientY: true, + offsetX: true, + offsetY: true, + pointerId: true, + pointerType: true, + screenX: true, + screenY: true, + targetTouches: true, + toElement: true, + touches: true, + which: true +}, jQuery.event.addProp ); + +jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) { + jQuery.event.special[ type ] = { + + // Utilize native event if possible so blur/focus sequence is correct + setup: function() { + + // Claim the first handler + // dataPriv.set( this, "focus", ... ) + // dataPriv.set( this, "blur", ... ) + leverageNative( this, type, expectSync ); + + // Return false to allow normal processing in the caller + return false; + }, + trigger: function() { + + // Force setup before trigger + leverageNative( this, type ); + + // Return non-false to allow normal event-path propagation + return true; + }, + + // Suppress native focus or blur as it's already being fired + // in leverageNative. + _default: function() { + return true; + }, + + delegateType: delegateType + }; +} ); + +// Create mouseenter/leave events using mouseover/out and event-time checks +// so that event delegation works in jQuery. +// Do the same for pointerenter/pointerleave and pointerover/pointerout +// +// Support: Safari 7 only +// Safari sends mouseenter too often; see: +// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 +// for the description of the bug (it existed in older Chrome versions as well). +jQuery.each( { + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mouseenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +} ); + +jQuery.fn.extend( { + + on: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn ); + }, + one: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? + handleObj.origType + "." + handleObj.namespace : + handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each( function() { + jQuery.event.remove( this, types, fn, selector ); + } ); + } +} ); + + +var + + // Support: IE <=10 - 11, Edge 12 - 13 only + // In IE/Edge using regex groups here causes severe slowdowns. + // See https://connect.microsoft.com/IE/feedback/details/1736512/ + rnoInnerhtml = /\s*$/g; + +// Prefer a tbody over its parent table for containing new rows +function manipulationTarget( elem, content ) { + if ( nodeName( elem, "table" ) && + nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { + + return jQuery( elem ).children( "tbody" )[ 0 ] || elem; + } + + return elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) { + elem.type = elem.type.slice( 5 ); + } else { + elem.removeAttribute( "type" ); + } + + return elem; +} + +function cloneCopyEvent( src, dest ) { + var i, l, type, pdataOld, udataOld, udataCur, events; + + if ( dest.nodeType !== 1 ) { + return; + } + + // 1. Copy private data: events, handlers, etc. + if ( dataPriv.hasData( src ) ) { + pdataOld = dataPriv.get( src ); + events = pdataOld.events; + + if ( events ) { + dataPriv.remove( dest, "handle events" ); + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + } + + // 2. Copy user data + if ( dataUser.hasData( src ) ) { + udataOld = dataUser.access( src ); + udataCur = jQuery.extend( {}, udataOld ); + + dataUser.set( dest, udataCur ); + } +} + +// Fix IE bugs, see support tests +function fixInput( src, dest ) { + var nodeName = dest.nodeName.toLowerCase(); + + // Fails to persist the checked state of a cloned checkbox or radio button. + if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + dest.checked = src.checked; + + // Fails to return the selected option to the default selected state when cloning options + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +function domManip( collection, args, callback, ignored ) { + + // Flatten any nested arrays + args = flat( args ); + + var fragment, first, scripts, hasScripts, node, doc, + i = 0, + l = collection.length, + iNoClone = l - 1, + value = args[ 0 ], + valueIsFunction = isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( valueIsFunction || + ( l > 1 && typeof value === "string" && + !support.checkClone && rchecked.test( value ) ) ) { + return collection.each( function( index ) { + var self = collection.eq( index ); + if ( valueIsFunction ) { + args[ 0 ] = value.call( this, index, self.html() ); + } + domManip( self, args, callback, ignored ); + } ); + } + + if ( l ) { + fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + // Require either new content or an interest in ignored elements to invoke the callback + if ( first || ignored ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item + // instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( collection[ i ], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !dataPriv.access( node, "globalEval" ) && + jQuery.contains( doc, node ) ) { + + if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) { + + // Optional AJAX dependency, but won't run scripts if not present + if ( jQuery._evalUrl && !node.noModule ) { + jQuery._evalUrl( node.src, { + nonce: node.nonce || node.getAttribute( "nonce" ) + }, doc ); + } + } else { + DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc ); + } + } + } + } + } + } + + return collection; +} + +function remove( elem, selector, keepData ) { + var node, + nodes = selector ? jQuery.filter( selector, elem ) : elem, + i = 0; + + for ( ; ( node = nodes[ i ] ) != null; i++ ) { + if ( !keepData && node.nodeType === 1 ) { + jQuery.cleanData( getAll( node ) ); + } + + if ( node.parentNode ) { + if ( keepData && isAttached( node ) ) { + setGlobalEval( getAll( node, "script" ) ); + } + node.parentNode.removeChild( node ); + } + } + + return elem; +} + +jQuery.extend( { + htmlPrefilter: function( html ) { + return html; + }, + + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var i, l, srcElements, destElements, + clone = elem.cloneNode( true ), + inPage = isAttached( elem ); + + // Fix IE cloning issues + if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && + !jQuery.isXMLDoc( elem ) ) { + + // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + fixInput( srcElements[ i ], destElements[ i ] ); + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + cloneCopyEvent( srcElements[ i ], destElements[ i ] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + // Return the cloned set + return clone; + }, + + cleanData: function( elems ) { + var data, elem, type, + special = jQuery.event.special, + i = 0; + + for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { + if ( acceptData( elem ) ) { + if ( ( data = elem[ dataPriv.expando ] ) ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataPriv.expando ] = undefined; + } + if ( elem[ dataUser.expando ] ) { + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataUser.expando ] = undefined; + } + } + } + } +} ); + +jQuery.fn.extend( { + detach: function( selector ) { + return remove( this, selector, true ); + }, + + remove: function( selector ) { + return remove( this, selector ); + }, + + text: function( value ) { + return access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().each( function() { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + this.textContent = value; + } + } ); + }, null, value, arguments.length ); + }, + + append: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + } ); + }, + + prepend: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + } ); + }, + + before: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + } ); + }, + + after: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + } ); + }, + + empty: function() { + var elem, + i = 0; + + for ( ; ( elem = this[ i ] ) != null; i++ ) { + if ( elem.nodeType === 1 ) { + + // Prevent memory leaks + jQuery.cleanData( getAll( elem, false ) ); + + // Remove any remaining nodes + elem.textContent = ""; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function() { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + } ); + }, + + html: function( value ) { + return access( this, function( value ) { + var elem = this[ 0 ] || {}, + i = 0, + l = this.length; + + if ( value === undefined && elem.nodeType === 1 ) { + return elem.innerHTML; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { + + value = jQuery.htmlPrefilter( value ); + + try { + for ( ; i < l; i++ ) { + elem = this[ i ] || {}; + + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch ( e ) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var ignored = []; + + // Make the changes, replacing each non-ignored context element with the new content + return domManip( this, arguments, function( elem ) { + var parent = this.parentNode; + + if ( jQuery.inArray( this, ignored ) < 0 ) { + jQuery.cleanData( getAll( this ) ); + if ( parent ) { + parent.replaceChild( elem, this ); + } + } + + // Force callback invocation + }, ignored ); + } +} ); + +jQuery.each( { + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1, + i = 0; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone( true ); + jQuery( insert[ i ] )[ original ]( elems ); + + // Support: Android <=4.0 only, PhantomJS 1 only + // .get() because push.apply(_, arraylike) throws on ancient WebKit + push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +} ); +var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); + +var getStyles = function( elem ) { + + // Support: IE <=11 only, Firefox <=30 (#15098, #14150) + // IE throws on elements created in popups + // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" + var view = elem.ownerDocument.defaultView; + + if ( !view || !view.opener ) { + view = window; + } + + return view.getComputedStyle( elem ); + }; + +var swap = function( elem, options, callback ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.call( elem ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; +}; + + +var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); + + + +( function() { + + // Executing both pixelPosition & boxSizingReliable tests require only one layout + // so they're executed at the same time to save the second computation. + function computeStyleTests() { + + // This is a singleton, we need to execute it only once + if ( !div ) { + return; + } + + container.style.cssText = "position:absolute;left:-11111px;width:60px;" + + "margin-top:1px;padding:0;border:0"; + div.style.cssText = + "position:relative;display:block;box-sizing:border-box;overflow:scroll;" + + "margin:auto;border:1px;padding:1px;" + + "width:60%;top:1%"; + documentElement.appendChild( container ).appendChild( div ); + + var divStyle = window.getComputedStyle( div ); + pixelPositionVal = divStyle.top !== "1%"; + + // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 + reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12; + + // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3 + // Some styles come back with percentage values, even though they shouldn't + div.style.right = "60%"; + pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36; + + // Support: IE 9 - 11 only + // Detect misreporting of content dimensions for box-sizing:border-box elements + boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36; + + // Support: IE 9 only + // Detect overflow:scroll screwiness (gh-3699) + // Support: Chrome <=64 + // Don't get tricked when zoom affects offsetWidth (gh-4029) + div.style.position = "absolute"; + scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12; + + documentElement.removeChild( container ); + + // Nullify the div so it wouldn't be stored in the memory and + // it will also be a sign that checks already performed + div = null; + } + + function roundPixelMeasures( measure ) { + return Math.round( parseFloat( measure ) ); + } + + var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, + reliableTrDimensionsVal, reliableMarginLeftVal, + container = document.createElement( "div" ), + div = document.createElement( "div" ); + + // Finish early in limited (non-browser) environments + if ( !div.style ) { + return; + } + + // Support: IE <=9 - 11 only + // Style of cloned element affects source element cloned (#8908) + div.style.backgroundClip = "content-box"; + div.cloneNode( true ).style.backgroundClip = ""; + support.clearCloneStyle = div.style.backgroundClip === "content-box"; + + jQuery.extend( support, { + boxSizingReliable: function() { + computeStyleTests(); + return boxSizingReliableVal; + }, + pixelBoxStyles: function() { + computeStyleTests(); + return pixelBoxStylesVal; + }, + pixelPosition: function() { + computeStyleTests(); + return pixelPositionVal; + }, + reliableMarginLeft: function() { + computeStyleTests(); + return reliableMarginLeftVal; + }, + scrollboxSize: function() { + computeStyleTests(); + return scrollboxSizeVal; + }, + + // Support: IE 9 - 11+, Edge 15 - 18+ + // IE/Edge misreport `getComputedStyle` of table rows with width/height + // set in CSS while `offset*` properties report correct values. + // Behavior in IE 9 is more subtle than in newer versions & it passes + // some versions of this test; make sure not to make it pass there! + // + // Support: Firefox 70+ + // Only Firefox includes border widths + // in computed dimensions. (gh-4529) + reliableTrDimensions: function() { + var table, tr, trChild, trStyle; + if ( reliableTrDimensionsVal == null ) { + table = document.createElement( "table" ); + tr = document.createElement( "tr" ); + trChild = document.createElement( "div" ); + + table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate"; + tr.style.cssText = "border:1px solid"; + + // Support: Chrome 86+ + // Height set through cssText does not get applied. + // Computed height then comes back as 0. + tr.style.height = "1px"; + trChild.style.height = "9px"; + + // Support: Android 8 Chrome 86+ + // In our bodyBackground.html iframe, + // display for all div elements is set to "inline", + // which causes a problem only in Android 8 Chrome 86. + // Ensuring the div is display: block + // gets around this issue. + trChild.style.display = "block"; + + documentElement + .appendChild( table ) + .appendChild( tr ) + .appendChild( trChild ); + + trStyle = window.getComputedStyle( tr ); + reliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) + + parseInt( trStyle.borderTopWidth, 10 ) + + parseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight; + + documentElement.removeChild( table ); + } + return reliableTrDimensionsVal; + } + } ); +} )(); + + +function curCSS( elem, name, computed ) { + var width, minWidth, maxWidth, ret, + + // Support: Firefox 51+ + // Retrieving style before computed somehow + // fixes an issue with getting wrong values + // on detached elements + style = elem.style; + + computed = computed || getStyles( elem ); + + // getPropertyValue is needed for: + // .css('filter') (IE 9 only, #12537) + // .css('--customProperty) (#3144) + if ( computed ) { + ret = computed.getPropertyValue( name ) || computed[ name ]; + + if ( ret === "" && !isAttached( elem ) ) { + ret = jQuery.style( elem, name ); + } + + // A tribute to the "awesome hack by Dean Edwards" + // Android Browser returns percentage for some values, + // but width seems to be reliably pixels. + // This is against the CSSOM draft spec: + // https://drafts.csswg.org/cssom/#resolved-values + if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) { + + // Remember the original values + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + // Put in the new values to get a computed value out + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + // Revert the changed values + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret !== undefined ? + + // Support: IE <=9 - 11 only + // IE returns zIndex value as an integer. + ret + "" : + ret; +} + + +function addGetHookIf( conditionFn, hookFn ) { + + // Define the hook, we'll check on the first run if it's really needed. + return { + get: function() { + if ( conditionFn() ) { + + // Hook not needed (or it's not possible to use it due + // to missing dependency), remove it. + delete this.get; + return; + } + + // Hook needed; redefine it so that the support test is not executed again. + return ( this.get = hookFn ).apply( this, arguments ); + } + }; +} + + +var cssPrefixes = [ "Webkit", "Moz", "ms" ], + emptyStyle = document.createElement( "div" ).style, + vendorProps = {}; + +// Return a vendor-prefixed property or undefined +function vendorPropName( name ) { + + // Check for vendor prefixed names + var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in emptyStyle ) { + return name; + } + } +} + +// Return a potentially-mapped jQuery.cssProps or vendor prefixed property +function finalPropName( name ) { + var final = jQuery.cssProps[ name ] || vendorProps[ name ]; + + if ( final ) { + return final; + } + if ( name in emptyStyle ) { + return name; + } + return vendorProps[ name ] = vendorPropName( name ) || name; +} + + +var + + // Swappable if display is none or starts with table + // except "table", "table-cell", or "table-caption" + // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + rcustomProp = /^--/, + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: "0", + fontWeight: "400" + }; + +function setPositiveNumber( _elem, value, subtract ) { + + // Any relative (+/-) values have already been + // normalized at this point + var matches = rcssNum.exec( value ); + return matches ? + + // Guard against undefined "subtract", e.g., when used as in cssHooks + Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : + value; +} + +function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) { + var i = dimension === "width" ? 1 : 0, + extra = 0, + delta = 0; + + // Adjustment may not be necessary + if ( box === ( isBorderBox ? "border" : "content" ) ) { + return 0; + } + + for ( ; i < 4; i += 2 ) { + + // Both box models exclude margin + if ( box === "margin" ) { + delta += jQuery.css( elem, box + cssExpand[ i ], true, styles ); + } + + // If we get here with a content-box, we're seeking "padding" or "border" or "margin" + if ( !isBorderBox ) { + + // Add padding + delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + + // For "border" or "margin", add border + if ( box !== "padding" ) { + delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + + // But still keep track of it otherwise + } else { + extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + + // If we get here with a border-box (content + padding + border), we're seeking "content" or + // "padding" or "margin" + } else { + + // For "content", subtract padding + if ( box === "content" ) { + delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + } + + // For "content" or "padding", subtract border + if ( box !== "margin" ) { + delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } + } + + // Account for positive content-box scroll gutter when requested by providing computedVal + if ( !isBorderBox && computedVal >= 0 ) { + + // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border + // Assuming integer scroll gutter, subtract the rest and round down + delta += Math.max( 0, Math.ceil( + elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - + computedVal - + delta - + extra - + 0.5 + + // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter + // Use an explicit zero to avoid NaN (gh-3964) + ) ) || 0; + } + + return delta; +} + +function getWidthOrHeight( elem, dimension, extra ) { + + // Start with computed style + var styles = getStyles( elem ), + + // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322). + // Fake content-box until we know it's needed to know the true value. + boxSizingNeeded = !support.boxSizingReliable() || extra, + isBorderBox = boxSizingNeeded && + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + valueIsBorderBox = isBorderBox, + + val = curCSS( elem, dimension, styles ), + offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ); + + // Support: Firefox <=54 + // Return a confounding non-pixel value or feign ignorance, as appropriate. + if ( rnumnonpx.test( val ) ) { + if ( !extra ) { + return val; + } + val = "auto"; + } + + + // Support: IE 9 - 11 only + // Use offsetWidth/offsetHeight for when box sizing is unreliable. + // In those cases, the computed value can be trusted to be border-box. + if ( ( !support.boxSizingReliable() && isBorderBox || + + // Support: IE 10 - 11+, Edge 15 - 18+ + // IE/Edge misreport `getComputedStyle` of table rows with width/height + // set in CSS while `offset*` properties report correct values. + // Interestingly, in some cases IE 9 doesn't suffer from this issue. + !support.reliableTrDimensions() && nodeName( elem, "tr" ) || + + // Fall back to offsetWidth/offsetHeight when value is "auto" + // This happens for inline elements with no explicit setting (gh-3571) + val === "auto" || + + // Support: Android <=4.1 - 4.3 only + // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) + !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) && + + // Make sure the element is visible & connected + elem.getClientRects().length ) { + + isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; + + // Where available, offsetWidth/offsetHeight approximate border box dimensions. + // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the + // retrieved value as a content box dimension. + valueIsBorderBox = offsetProp in elem; + if ( valueIsBorderBox ) { + val = elem[ offsetProp ]; + } + } + + // Normalize "" and auto + val = parseFloat( val ) || 0; + + // Adjust for the element's box model + return ( val + + boxModelAdjustment( + elem, + dimension, + extra || ( isBorderBox ? "border" : "content" ), + valueIsBorderBox, + styles, + + // Provide the current computed size to request scroll gutter calculation (gh-3589) + val + ) + ) + "px"; +} + +jQuery.extend( { + + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function( elem, computed ) { + if ( computed ) { + + // We should always get a number back from opacity + var ret = curCSS( elem, "opacity" ); + return ret === "" ? "1" : ret; + } + } + } + }, + + // Don't automatically add "px" to these possibly-unitless properties + cssNumber: { + "animationIterationCount": true, + "columnCount": true, + "fillOpacity": true, + "flexGrow": true, + "flexShrink": true, + "fontWeight": true, + "gridArea": true, + "gridColumn": true, + "gridColumnEnd": true, + "gridColumnStart": true, + "gridRow": true, + "gridRowEnd": true, + "gridRowStart": true, + "lineHeight": true, + "opacity": true, + "order": true, + "orphans": true, + "widows": true, + "zIndex": true, + "zoom": true + }, + + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: {}, + + // Get and set the style property on a DOM Node + style: function( elem, name, value, extra ) { + + // Don't set styles on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { + return; + } + + // Make sure that we're working with the right name + var ret, type, hooks, + origName = camelCase( name ), + isCustomProp = rcustomProp.test( name ), + style = elem.style; + + // Make sure that we're working with the right name. We don't + // want to query the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Gets hook for the prefixed version, then unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // Convert "+=" or "-=" to relative numbers (#7345) + if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { + value = adjustCSS( elem, name, ret ); + + // Fixes bug #9237 + type = "number"; + } + + // Make sure that null and NaN values aren't set (#7116) + if ( value == null || value !== value ) { + return; + } + + // If a number was passed in, add the unit (except for certain CSS properties) + // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append + // "px" to a few hardcoded values. + if ( type === "number" && !isCustomProp ) { + value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); + } + + // background-* props affect original clone's values + if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { + style[ name ] = "inherit"; + } + + // If a hook was provided, use that value, otherwise just set the specified value + if ( !hooks || !( "set" in hooks ) || + ( value = hooks.set( elem, value, extra ) ) !== undefined ) { + + if ( isCustomProp ) { + style.setProperty( name, value ); + } else { + style[ name ] = value; + } + } + + } else { + + // If a hook was provided get the non-computed value from there + if ( hooks && "get" in hooks && + ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { + + return ret; + } + + // Otherwise just get the value from the style object + return style[ name ]; + } + }, + + css: function( elem, name, extra, styles ) { + var val, num, hooks, + origName = camelCase( name ), + isCustomProp = rcustomProp.test( name ); + + // Make sure that we're working with the right name. We don't + // want to modify the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Try prefixed name followed by the unprefixed name + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks ) { + val = hooks.get( elem, true, extra ); + } + + // Otherwise, if a way to get the computed value exists, use that + if ( val === undefined ) { + val = curCSS( elem, name, styles ); + } + + // Convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Make numeric if forced or a qualifier was provided and val looks numeric + if ( extra === "" || extra ) { + num = parseFloat( val ); + return extra === true || isFinite( num ) ? num || 0 : val; + } + + return val; + } +} ); + +jQuery.each( [ "height", "width" ], function( _i, dimension ) { + jQuery.cssHooks[ dimension ] = { + get: function( elem, computed, extra ) { + if ( computed ) { + + // Certain elements can have dimension info if we invisibly show them + // but it must have a current display style that would benefit + return rdisplayswap.test( jQuery.css( elem, "display" ) ) && + + // Support: Safari 8+ + // Table columns in Safari have non-zero offsetWidth & zero + // getBoundingClientRect().width unless display is changed. + // Support: IE <=11 only + // Running getBoundingClientRect on a disconnected node + // in IE throws an error. + ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? + swap( elem, cssShow, function() { + return getWidthOrHeight( elem, dimension, extra ); + } ) : + getWidthOrHeight( elem, dimension, extra ); + } + }, + + set: function( elem, value, extra ) { + var matches, + styles = getStyles( elem ), + + // Only read styles.position if the test has a chance to fail + // to avoid forcing a reflow. + scrollboxSizeBuggy = !support.scrollboxSize() && + styles.position === "absolute", + + // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991) + boxSizingNeeded = scrollboxSizeBuggy || extra, + isBorderBox = boxSizingNeeded && + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + subtract = extra ? + boxModelAdjustment( + elem, + dimension, + extra, + isBorderBox, + styles + ) : + 0; + + // Account for unreliable border-box dimensions by comparing offset* to computed and + // faking a content-box to get border and padding (gh-3699) + if ( isBorderBox && scrollboxSizeBuggy ) { + subtract -= Math.ceil( + elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - + parseFloat( styles[ dimension ] ) - + boxModelAdjustment( elem, dimension, "border", false, styles ) - + 0.5 + ); + } + + // Convert to pixels if value adjustment is needed + if ( subtract && ( matches = rcssNum.exec( value ) ) && + ( matches[ 3 ] || "px" ) !== "px" ) { + + elem.style[ dimension ] = value; + value = jQuery.css( elem, dimension ); + } + + return setPositiveNumber( elem, value, subtract ); + } + }; +} ); + +jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, + function( elem, computed ) { + if ( computed ) { + return ( parseFloat( curCSS( elem, "marginLeft" ) ) || + elem.getBoundingClientRect().left - + swap( elem, { marginLeft: 0 }, function() { + return elem.getBoundingClientRect().left; + } ) + ) + "px"; + } + } +); + +// These hooks are used by animate to expand properties +jQuery.each( { + margin: "", + padding: "", + border: "Width" +}, function( prefix, suffix ) { + jQuery.cssHooks[ prefix + suffix ] = { + expand: function( value ) { + var i = 0, + expanded = {}, + + // Assumes a single number if not a string + parts = typeof value === "string" ? value.split( " " ) : [ value ]; + + for ( ; i < 4; i++ ) { + expanded[ prefix + cssExpand[ i ] + suffix ] = + parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; + } + + return expanded; + } + }; + + if ( prefix !== "margin" ) { + jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; + } +} ); + +jQuery.fn.extend( { + css: function( name, value ) { + return access( this, function( elem, name, value ) { + var styles, len, + map = {}, + i = 0; + + if ( Array.isArray( name ) ) { + styles = getStyles( elem ); + len = name.length; + + for ( ; i < len; i++ ) { + map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); + } + + return map; + } + + return value !== undefined ? + jQuery.style( elem, name, value ) : + jQuery.css( elem, name ); + }, name, value, arguments.length > 1 ); + } +} ); + + +function Tween( elem, options, prop, end, easing ) { + return new Tween.prototype.init( elem, options, prop, end, easing ); +} +jQuery.Tween = Tween; + +Tween.prototype = { + constructor: Tween, + init: function( elem, options, prop, end, easing, unit ) { + this.elem = elem; + this.prop = prop; + this.easing = easing || jQuery.easing._default; + this.options = options; + this.start = this.now = this.cur(); + this.end = end; + this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); + }, + cur: function() { + var hooks = Tween.propHooks[ this.prop ]; + + return hooks && hooks.get ? + hooks.get( this ) : + Tween.propHooks._default.get( this ); + }, + run: function( percent ) { + var eased, + hooks = Tween.propHooks[ this.prop ]; + + if ( this.options.duration ) { + this.pos = eased = jQuery.easing[ this.easing ]( + percent, this.options.duration * percent, 0, 1, this.options.duration + ); + } else { + this.pos = eased = percent; + } + this.now = ( this.end - this.start ) * eased + this.start; + + if ( this.options.step ) { + this.options.step.call( this.elem, this.now, this ); + } + + if ( hooks && hooks.set ) { + hooks.set( this ); + } else { + Tween.propHooks._default.set( this ); + } + return this; + } +}; + +Tween.prototype.init.prototype = Tween.prototype; + +Tween.propHooks = { + _default: { + get: function( tween ) { + var result; + + // Use a property on the element directly when it is not a DOM element, + // or when there is no matching style property that exists. + if ( tween.elem.nodeType !== 1 || + tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { + return tween.elem[ tween.prop ]; + } + + // Passing an empty string as a 3rd parameter to .css will automatically + // attempt a parseFloat and fallback to a string if the parse fails. + // Simple values such as "10px" are parsed to Float; + // complex values such as "rotate(1rad)" are returned as-is. + result = jQuery.css( tween.elem, tween.prop, "" ); + + // Empty strings, null, undefined and "auto" are converted to 0. + return !result || result === "auto" ? 0 : result; + }, + set: function( tween ) { + + // Use step hook for back compat. + // Use cssHook if its there. + // Use .style if available and use plain properties where available. + if ( jQuery.fx.step[ tween.prop ] ) { + jQuery.fx.step[ tween.prop ]( tween ); + } else if ( tween.elem.nodeType === 1 && ( + jQuery.cssHooks[ tween.prop ] || + tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) { + jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); + } else { + tween.elem[ tween.prop ] = tween.now; + } + } + } +}; + +// Support: IE <=9 only +// Panic based approach to setting things on disconnected nodes +Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { + set: function( tween ) { + if ( tween.elem.nodeType && tween.elem.parentNode ) { + tween.elem[ tween.prop ] = tween.now; + } + } +}; + +jQuery.easing = { + linear: function( p ) { + return p; + }, + swing: function( p ) { + return 0.5 - Math.cos( p * Math.PI ) / 2; + }, + _default: "swing" +}; + +jQuery.fx = Tween.prototype.init; + +// Back compat <1.8 extension point +jQuery.fx.step = {}; + + + + +var + fxNow, inProgress, + rfxtypes = /^(?:toggle|show|hide)$/, + rrun = /queueHooks$/; + +function schedule() { + if ( inProgress ) { + if ( document.hidden === false && window.requestAnimationFrame ) { + window.requestAnimationFrame( schedule ); + } else { + window.setTimeout( schedule, jQuery.fx.interval ); + } + + jQuery.fx.tick(); + } +} + +// Animations created synchronously will run synchronously +function createFxNow() { + window.setTimeout( function() { + fxNow = undefined; + } ); + return ( fxNow = Date.now() ); +} + +// Generate parameters to create a standard animation +function genFx( type, includeWidth ) { + var which, + i = 0, + attrs = { height: type }; + + // If we include width, step value is 1 to do all cssExpand values, + // otherwise step value is 2 to skip over Left and Right + includeWidth = includeWidth ? 1 : 0; + for ( ; i < 4; i += 2 - includeWidth ) { + which = cssExpand[ i ]; + attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; + } + + if ( includeWidth ) { + attrs.opacity = attrs.width = type; + } + + return attrs; +} + +function createTween( value, prop, animation ) { + var tween, + collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), + index = 0, + length = collection.length; + for ( ; index < length; index++ ) { + if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { + + // We're done with this property + return tween; + } + } +} + +function defaultPrefilter( elem, props, opts ) { + var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, + isBox = "width" in props || "height" in props, + anim = this, + orig = {}, + style = elem.style, + hidden = elem.nodeType && isHiddenWithinTree( elem ), + dataShow = dataPriv.get( elem, "fxshow" ); + + // Queue-skipping animations hijack the fx hooks + if ( !opts.queue ) { + hooks = jQuery._queueHooks( elem, "fx" ); + if ( hooks.unqueued == null ) { + hooks.unqueued = 0; + oldfire = hooks.empty.fire; + hooks.empty.fire = function() { + if ( !hooks.unqueued ) { + oldfire(); + } + }; + } + hooks.unqueued++; + + anim.always( function() { + + // Ensure the complete handler is called before this completes + anim.always( function() { + hooks.unqueued--; + if ( !jQuery.queue( elem, "fx" ).length ) { + hooks.empty.fire(); + } + } ); + } ); + } + + // Detect show/hide animations + for ( prop in props ) { + value = props[ prop ]; + if ( rfxtypes.test( value ) ) { + delete props[ prop ]; + toggle = toggle || value === "toggle"; + if ( value === ( hidden ? "hide" : "show" ) ) { + + // Pretend to be hidden if this is a "show" and + // there is still data from a stopped show/hide + if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { + hidden = true; + + // Ignore all other no-op show/hide data + } else { + continue; + } + } + orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); + } + } + + // Bail out if this is a no-op like .hide().hide() + propTween = !jQuery.isEmptyObject( props ); + if ( !propTween && jQuery.isEmptyObject( orig ) ) { + return; + } + + // Restrict "overflow" and "display" styles during box animations + if ( isBox && elem.nodeType === 1 ) { + + // Support: IE <=9 - 11, Edge 12 - 15 + // Record all 3 overflow attributes because IE does not infer the shorthand + // from identically-valued overflowX and overflowY and Edge just mirrors + // the overflowX value there. + opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; + + // Identify a display type, preferring old show/hide data over the CSS cascade + restoreDisplay = dataShow && dataShow.display; + if ( restoreDisplay == null ) { + restoreDisplay = dataPriv.get( elem, "display" ); + } + display = jQuery.css( elem, "display" ); + if ( display === "none" ) { + if ( restoreDisplay ) { + display = restoreDisplay; + } else { + + // Get nonempty value(s) by temporarily forcing visibility + showHide( [ elem ], true ); + restoreDisplay = elem.style.display || restoreDisplay; + display = jQuery.css( elem, "display" ); + showHide( [ elem ] ); + } + } + + // Animate inline elements as inline-block + if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { + if ( jQuery.css( elem, "float" ) === "none" ) { + + // Restore the original display value at the end of pure show/hide animations + if ( !propTween ) { + anim.done( function() { + style.display = restoreDisplay; + } ); + if ( restoreDisplay == null ) { + display = style.display; + restoreDisplay = display === "none" ? "" : display; + } + } + style.display = "inline-block"; + } + } + } + + if ( opts.overflow ) { + style.overflow = "hidden"; + anim.always( function() { + style.overflow = opts.overflow[ 0 ]; + style.overflowX = opts.overflow[ 1 ]; + style.overflowY = opts.overflow[ 2 ]; + } ); + } + + // Implement show/hide animations + propTween = false; + for ( prop in orig ) { + + // General show/hide setup for this element animation + if ( !propTween ) { + if ( dataShow ) { + if ( "hidden" in dataShow ) { + hidden = dataShow.hidden; + } + } else { + dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); + } + + // Store hidden/visible for toggle so `.stop().toggle()` "reverses" + if ( toggle ) { + dataShow.hidden = !hidden; + } + + // Show elements before animating them + if ( hidden ) { + showHide( [ elem ], true ); + } + + /* eslint-disable no-loop-func */ + + anim.done( function() { + + /* eslint-enable no-loop-func */ + + // The final step of a "hide" animation is actually hiding the element + if ( !hidden ) { + showHide( [ elem ] ); + } + dataPriv.remove( elem, "fxshow" ); + for ( prop in orig ) { + jQuery.style( elem, prop, orig[ prop ] ); + } + } ); + } + + // Per-property setup + propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); + if ( !( prop in dataShow ) ) { + dataShow[ prop ] = propTween.start; + if ( hidden ) { + propTween.end = propTween.start; + propTween.start = 0; + } + } + } +} + +function propFilter( props, specialEasing ) { + var index, name, easing, value, hooks; + + // camelCase, specialEasing and expand cssHook pass + for ( index in props ) { + name = camelCase( index ); + easing = specialEasing[ name ]; + value = props[ index ]; + if ( Array.isArray( value ) ) { + easing = value[ 1 ]; + value = props[ index ] = value[ 0 ]; + } + + if ( index !== name ) { + props[ name ] = value; + delete props[ index ]; + } + + hooks = jQuery.cssHooks[ name ]; + if ( hooks && "expand" in hooks ) { + value = hooks.expand( value ); + delete props[ name ]; + + // Not quite $.extend, this won't overwrite existing keys. + // Reusing 'index' because we have the correct "name" + for ( index in value ) { + if ( !( index in props ) ) { + props[ index ] = value[ index ]; + specialEasing[ index ] = easing; + } + } + } else { + specialEasing[ name ] = easing; + } + } +} + +function Animation( elem, properties, options ) { + var result, + stopped, + index = 0, + length = Animation.prefilters.length, + deferred = jQuery.Deferred().always( function() { + + // Don't match elem in the :animated selector + delete tick.elem; + } ), + tick = function() { + if ( stopped ) { + return false; + } + var currentTime = fxNow || createFxNow(), + remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), + + // Support: Android 2.3 only + // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) + temp = remaining / animation.duration || 0, + percent = 1 - temp, + index = 0, + length = animation.tweens.length; + + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( percent ); + } + + deferred.notifyWith( elem, [ animation, percent, remaining ] ); + + // If there's more to do, yield + if ( percent < 1 && length ) { + return remaining; + } + + // If this was an empty animation, synthesize a final progress notification + if ( !length ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + } + + // Resolve the animation and report its conclusion + deferred.resolveWith( elem, [ animation ] ); + return false; + }, + animation = deferred.promise( { + elem: elem, + props: jQuery.extend( {}, properties ), + opts: jQuery.extend( true, { + specialEasing: {}, + easing: jQuery.easing._default + }, options ), + originalProperties: properties, + originalOptions: options, + startTime: fxNow || createFxNow(), + duration: options.duration, + tweens: [], + createTween: function( prop, end ) { + var tween = jQuery.Tween( elem, animation.opts, prop, end, + animation.opts.specialEasing[ prop ] || animation.opts.easing ); + animation.tweens.push( tween ); + return tween; + }, + stop: function( gotoEnd ) { + var index = 0, + + // If we are going to the end, we want to run all the tweens + // otherwise we skip this part + length = gotoEnd ? animation.tweens.length : 0; + if ( stopped ) { + return this; + } + stopped = true; + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( 1 ); + } + + // Resolve when we played the last frame; otherwise, reject + if ( gotoEnd ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + deferred.resolveWith( elem, [ animation, gotoEnd ] ); + } else { + deferred.rejectWith( elem, [ animation, gotoEnd ] ); + } + return this; + } + } ), + props = animation.props; + + propFilter( props, animation.opts.specialEasing ); + + for ( ; index < length; index++ ) { + result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); + if ( result ) { + if ( isFunction( result.stop ) ) { + jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = + result.stop.bind( result ); + } + return result; + } + } + + jQuery.map( props, createTween, animation ); + + if ( isFunction( animation.opts.start ) ) { + animation.opts.start.call( elem, animation ); + } + + // Attach callbacks from options + animation + .progress( animation.opts.progress ) + .done( animation.opts.done, animation.opts.complete ) + .fail( animation.opts.fail ) + .always( animation.opts.always ); + + jQuery.fx.timer( + jQuery.extend( tick, { + elem: elem, + anim: animation, + queue: animation.opts.queue + } ) + ); + + return animation; +} + +jQuery.Animation = jQuery.extend( Animation, { + + tweeners: { + "*": [ function( prop, value ) { + var tween = this.createTween( prop, value ); + adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); + return tween; + } ] + }, + + tweener: function( props, callback ) { + if ( isFunction( props ) ) { + callback = props; + props = [ "*" ]; + } else { + props = props.match( rnothtmlwhite ); + } + + var prop, + index = 0, + length = props.length; + + for ( ; index < length; index++ ) { + prop = props[ index ]; + Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; + Animation.tweeners[ prop ].unshift( callback ); + } + }, + + prefilters: [ defaultPrefilter ], + + prefilter: function( callback, prepend ) { + if ( prepend ) { + Animation.prefilters.unshift( callback ); + } else { + Animation.prefilters.push( callback ); + } + } +} ); + +jQuery.speed = function( speed, easing, fn ) { + var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { + complete: fn || !fn && easing || + isFunction( speed ) && speed, + duration: speed, + easing: fn && easing || easing && !isFunction( easing ) && easing + }; + + // Go to the end state if fx are off + if ( jQuery.fx.off ) { + opt.duration = 0; + + } else { + if ( typeof opt.duration !== "number" ) { + if ( opt.duration in jQuery.fx.speeds ) { + opt.duration = jQuery.fx.speeds[ opt.duration ]; + + } else { + opt.duration = jQuery.fx.speeds._default; + } + } + } + + // Normalize opt.queue - true/undefined/null -> "fx" + if ( opt.queue == null || opt.queue === true ) { + opt.queue = "fx"; + } + + // Queueing + opt.old = opt.complete; + + opt.complete = function() { + if ( isFunction( opt.old ) ) { + opt.old.call( this ); + } + + if ( opt.queue ) { + jQuery.dequeue( this, opt.queue ); + } + }; + + return opt; +}; + +jQuery.fn.extend( { + fadeTo: function( speed, to, easing, callback ) { + + // Show any hidden elements after setting opacity to 0 + return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() + + // Animate to the value specified + .end().animate( { opacity: to }, speed, easing, callback ); + }, + animate: function( prop, speed, easing, callback ) { + var empty = jQuery.isEmptyObject( prop ), + optall = jQuery.speed( speed, easing, callback ), + doAnimation = function() { + + // Operate on a copy of prop so per-property easing won't be lost + var anim = Animation( this, jQuery.extend( {}, prop ), optall ); + + // Empty animations, or finishing resolves immediately + if ( empty || dataPriv.get( this, "finish" ) ) { + anim.stop( true ); + } + }; + + doAnimation.finish = doAnimation; + + return empty || optall.queue === false ? + this.each( doAnimation ) : + this.queue( optall.queue, doAnimation ); + }, + stop: function( type, clearQueue, gotoEnd ) { + var stopQueue = function( hooks ) { + var stop = hooks.stop; + delete hooks.stop; + stop( gotoEnd ); + }; + + if ( typeof type !== "string" ) { + gotoEnd = clearQueue; + clearQueue = type; + type = undefined; + } + if ( clearQueue ) { + this.queue( type || "fx", [] ); + } + + return this.each( function() { + var dequeue = true, + index = type != null && type + "queueHooks", + timers = jQuery.timers, + data = dataPriv.get( this ); + + if ( index ) { + if ( data[ index ] && data[ index ].stop ) { + stopQueue( data[ index ] ); + } + } else { + for ( index in data ) { + if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { + stopQueue( data[ index ] ); + } + } + } + + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && + ( type == null || timers[ index ].queue === type ) ) { + + timers[ index ].anim.stop( gotoEnd ); + dequeue = false; + timers.splice( index, 1 ); + } + } + + // Start the next in the queue if the last step wasn't forced. + // Timers currently will call their complete callbacks, which + // will dequeue but only if they were gotoEnd. + if ( dequeue || !gotoEnd ) { + jQuery.dequeue( this, type ); + } + } ); + }, + finish: function( type ) { + if ( type !== false ) { + type = type || "fx"; + } + return this.each( function() { + var index, + data = dataPriv.get( this ), + queue = data[ type + "queue" ], + hooks = data[ type + "queueHooks" ], + timers = jQuery.timers, + length = queue ? queue.length : 0; + + // Enable finishing flag on private data + data.finish = true; + + // Empty the queue first + jQuery.queue( this, type, [] ); + + if ( hooks && hooks.stop ) { + hooks.stop.call( this, true ); + } + + // Look for any active animations, and finish them + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && timers[ index ].queue === type ) { + timers[ index ].anim.stop( true ); + timers.splice( index, 1 ); + } + } + + // Look for any animations in the old queue and finish them + for ( index = 0; index < length; index++ ) { + if ( queue[ index ] && queue[ index ].finish ) { + queue[ index ].finish.call( this ); + } + } + + // Turn off finishing flag + delete data.finish; + } ); + } +} ); + +jQuery.each( [ "toggle", "show", "hide" ], function( _i, name ) { + var cssFn = jQuery.fn[ name ]; + jQuery.fn[ name ] = function( speed, easing, callback ) { + return speed == null || typeof speed === "boolean" ? + cssFn.apply( this, arguments ) : + this.animate( genFx( name, true ), speed, easing, callback ); + }; +} ); + +// Generate shortcuts for custom animations +jQuery.each( { + slideDown: genFx( "show" ), + slideUp: genFx( "hide" ), + slideToggle: genFx( "toggle" ), + fadeIn: { opacity: "show" }, + fadeOut: { opacity: "hide" }, + fadeToggle: { opacity: "toggle" } +}, function( name, props ) { + jQuery.fn[ name ] = function( speed, easing, callback ) { + return this.animate( props, speed, easing, callback ); + }; +} ); + +jQuery.timers = []; +jQuery.fx.tick = function() { + var timer, + i = 0, + timers = jQuery.timers; + + fxNow = Date.now(); + + for ( ; i < timers.length; i++ ) { + timer = timers[ i ]; + + // Run the timer and safely remove it when done (allowing for external removal) + if ( !timer() && timers[ i ] === timer ) { + timers.splice( i--, 1 ); + } + } + + if ( !timers.length ) { + jQuery.fx.stop(); + } + fxNow = undefined; +}; + +jQuery.fx.timer = function( timer ) { + jQuery.timers.push( timer ); + jQuery.fx.start(); +}; + +jQuery.fx.interval = 13; +jQuery.fx.start = function() { + if ( inProgress ) { + return; + } + + inProgress = true; + schedule(); +}; + +jQuery.fx.stop = function() { + inProgress = null; +}; + +jQuery.fx.speeds = { + slow: 600, + fast: 200, + + // Default speed + _default: 400 +}; + + +// Based off of the plugin by Clint Helfers, with permission. +// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ +jQuery.fn.delay = function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = window.setTimeout( next, time ); + hooks.stop = function() { + window.clearTimeout( timeout ); + }; + } ); +}; + + +( function() { + var input = document.createElement( "input" ), + select = document.createElement( "select" ), + opt = select.appendChild( document.createElement( "option" ) ); + + input.type = "checkbox"; + + // Support: Android <=4.3 only + // Default value for a checkbox should be "on" + support.checkOn = input.value !== ""; + + // Support: IE <=11 only + // Must access selectedIndex to make default options select + support.optSelected = opt.selected; + + // Support: IE <=11 only + // An input loses its value after becoming a radio + input = document.createElement( "input" ); + input.value = "t"; + input.type = "radio"; + support.radioValue = input.value === "t"; +} )(); + + +var boolHook, + attrHandle = jQuery.expr.attrHandle; + +jQuery.fn.extend( { + attr: function( name, value ) { + return access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each( function() { + jQuery.removeAttr( this, name ); + } ); + } +} ); + +jQuery.extend( { + attr: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set attributes on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === "undefined" ) { + return jQuery.prop( elem, name, value ); + } + + // Attribute hooks are determined by the lowercase version + // Grab necessary hook if one is defined + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + hooks = jQuery.attrHooks[ name.toLowerCase() ] || + ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); + } + + if ( value !== undefined ) { + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return; + } + + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + elem.setAttribute( name, value + "" ); + return value; + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + ret = jQuery.find.attr( elem, name ); + + // Non-existent attributes return null, we normalize to undefined + return ret == null ? undefined : ret; + }, + + attrHooks: { + type: { + set: function( elem, value ) { + if ( !support.radioValue && value === "radio" && + nodeName( elem, "input" ) ) { + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + } + }, + + removeAttr: function( elem, value ) { + var name, + i = 0, + + // Attribute names can contain non-HTML whitespace characters + // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 + attrNames = value && value.match( rnothtmlwhite ); + + if ( attrNames && elem.nodeType === 1 ) { + while ( ( name = attrNames[ i++ ] ) ) { + elem.removeAttribute( name ); + } + } + } +} ); + +// Hooks for boolean attributes +boolHook = { + set: function( elem, value, name ) { + if ( value === false ) { + + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + elem.setAttribute( name, name ); + } + return name; + } +}; + +jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) { + var getter = attrHandle[ name ] || jQuery.find.attr; + + attrHandle[ name ] = function( elem, name, isXML ) { + var ret, handle, + lowercaseName = name.toLowerCase(); + + if ( !isXML ) { + + // Avoid an infinite loop by temporarily removing this function from the getter + handle = attrHandle[ lowercaseName ]; + attrHandle[ lowercaseName ] = ret; + ret = getter( elem, name, isXML ) != null ? + lowercaseName : + null; + attrHandle[ lowercaseName ] = handle; + } + return ret; + }; +} ); + + + + +var rfocusable = /^(?:input|select|textarea|button)$/i, + rclickable = /^(?:a|area)$/i; + +jQuery.fn.extend( { + prop: function( name, value ) { + return access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + return this.each( function() { + delete this[ jQuery.propFix[ name ] || name ]; + } ); + } +} ); + +jQuery.extend( { + prop: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set properties on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + return ( elem[ name ] = value ); + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + return elem[ name ]; + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + + // Support: IE <=9 - 11 only + // elem.tabIndex doesn't always return the + // correct value when it hasn't been explicitly set + // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + // Use proper attribute retrieval(#12072) + var tabindex = jQuery.find.attr( elem, "tabindex" ); + + if ( tabindex ) { + return parseInt( tabindex, 10 ); + } + + if ( + rfocusable.test( elem.nodeName ) || + rclickable.test( elem.nodeName ) && + elem.href + ) { + return 0; + } + + return -1; + } + } + }, + + propFix: { + "for": "htmlFor", + "class": "className" + } +} ); + +// Support: IE <=11 only +// Accessing the selectedIndex property +// forces the browser to respect setting selected +// on the option +// The getter ensures a default option is selected +// when in an optgroup +// eslint rule "no-unused-expressions" is disabled for this code +// since it considers such accessions noop +if ( !support.optSelected ) { + jQuery.propHooks.selected = { + get: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent && parent.parentNode ) { + parent.parentNode.selectedIndex; + } + return null; + }, + set: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent ) { + parent.selectedIndex; + + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + } + }; +} + +jQuery.each( [ + "tabIndex", + "readOnly", + "maxLength", + "cellSpacing", + "cellPadding", + "rowSpan", + "colSpan", + "useMap", + "frameBorder", + "contentEditable" +], function() { + jQuery.propFix[ this.toLowerCase() ] = this; +} ); + + + + + // Strip and collapse whitespace according to HTML spec + // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace + function stripAndCollapse( value ) { + var tokens = value.match( rnothtmlwhite ) || []; + return tokens.join( " " ); + } + + +function getClass( elem ) { + return elem.getAttribute && elem.getAttribute( "class" ) || ""; +} + +function classesToArray( value ) { + if ( Array.isArray( value ) ) { + return value; + } + if ( typeof value === "string" ) { + return value.match( rnothtmlwhite ) || []; + } + return []; +} + +jQuery.fn.extend( { + addClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + classes = classesToArray( value ); + + if ( classes.length ) { + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + if ( cur.indexOf( " " + clazz + " " ) < 0 ) { + cur += clazz + " "; + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + if ( !arguments.length ) { + return this.attr( "class", "" ); + } + + classes = classesToArray( value ); + + if ( classes.length ) { + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + + // This expression is here for better compressibility (see addClass) + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + + // Remove *all* instances + while ( cur.indexOf( " " + clazz + " " ) > -1 ) { + cur = cur.replace( " " + clazz + " ", " " ); + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value, + isValidValue = type === "string" || Array.isArray( value ); + + if ( typeof stateVal === "boolean" && isValidValue ) { + return stateVal ? this.addClass( value ) : this.removeClass( value ); + } + + if ( isFunction( value ) ) { + return this.each( function( i ) { + jQuery( this ).toggleClass( + value.call( this, i, getClass( this ), stateVal ), + stateVal + ); + } ); + } + + return this.each( function() { + var className, i, self, classNames; + + if ( isValidValue ) { + + // Toggle individual class names + i = 0; + self = jQuery( this ); + classNames = classesToArray( value ); + + while ( ( className = classNames[ i++ ] ) ) { + + // Check each className given, space separated list + if ( self.hasClass( className ) ) { + self.removeClass( className ); + } else { + self.addClass( className ); + } + } + + // Toggle whole class name + } else if ( value === undefined || type === "boolean" ) { + className = getClass( this ); + if ( className ) { + + // Store className if set + dataPriv.set( this, "__className__", className ); + } + + // If the element has a class name or if we're passed `false`, + // then remove the whole classname (if there was one, the above saved it). + // Otherwise bring back whatever was previously saved (if anything), + // falling back to the empty string if nothing was stored. + if ( this.setAttribute ) { + this.setAttribute( "class", + className || value === false ? + "" : + dataPriv.get( this, "__className__" ) || "" + ); + } + } + } ); + }, + + hasClass: function( selector ) { + var className, elem, + i = 0; + + className = " " + selector + " "; + while ( ( elem = this[ i++ ] ) ) { + if ( elem.nodeType === 1 && + ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { + return true; + } + } + + return false; + } +} ); + + + + +var rreturn = /\r/g; + +jQuery.fn.extend( { + val: function( value ) { + var hooks, ret, valueIsFunction, + elem = this[ 0 ]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.type ] || + jQuery.valHooks[ elem.nodeName.toLowerCase() ]; + + if ( hooks && + "get" in hooks && + ( ret = hooks.get( elem, "value" ) ) !== undefined + ) { + return ret; + } + + ret = elem.value; + + // Handle most common string cases + if ( typeof ret === "string" ) { + return ret.replace( rreturn, "" ); + } + + // Handle cases where value is null/undef or number + return ret == null ? "" : ret; + } + + return; + } + + valueIsFunction = isFunction( value ); + + return this.each( function( i ) { + var val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( valueIsFunction ) { + val = value.call( this, i, jQuery( this ).val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + + } else if ( typeof val === "number" ) { + val += ""; + + } else if ( Array.isArray( val ) ) { + val = jQuery.map( val, function( value ) { + return value == null ? "" : value + ""; + } ); + } + + hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + } ); + } +} ); + +jQuery.extend( { + valHooks: { + option: { + get: function( elem ) { + + var val = jQuery.find.attr( elem, "value" ); + return val != null ? + val : + + // Support: IE <=10 - 11 only + // option.text throws exceptions (#14686, #14858) + // Strip and collapse whitespace + // https://html.spec.whatwg.org/#strip-and-collapse-whitespace + stripAndCollapse( jQuery.text( elem ) ); + } + }, + select: { + get: function( elem ) { + var value, option, i, + options = elem.options, + index = elem.selectedIndex, + one = elem.type === "select-one", + values = one ? null : [], + max = one ? index + 1 : options.length; + + if ( index < 0 ) { + i = max; + + } else { + i = one ? index : 0; + } + + // Loop through all the selected options + for ( ; i < max; i++ ) { + option = options[ i ]; + + // Support: IE <=9 only + // IE8-9 doesn't update selected after form reset (#2551) + if ( ( option.selected || i === index ) && + + // Don't return options that are disabled or in a disabled optgroup + !option.disabled && + ( !option.parentNode.disabled || + !nodeName( option.parentNode, "optgroup" ) ) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + }, + + set: function( elem, value ) { + var optionSet, option, + options = elem.options, + values = jQuery.makeArray( value ), + i = options.length; + + while ( i-- ) { + option = options[ i ]; + + /* eslint-disable no-cond-assign */ + + if ( option.selected = + jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 + ) { + optionSet = true; + } + + /* eslint-enable no-cond-assign */ + } + + // Force browsers to behave consistently when non-matching value is set + if ( !optionSet ) { + elem.selectedIndex = -1; + } + return values; + } + } + } +} ); + +// Radios and checkboxes getter/setter +jQuery.each( [ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + set: function( elem, value ) { + if ( Array.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); + } + } + }; + if ( !support.checkOn ) { + jQuery.valHooks[ this ].get = function( elem ) { + return elem.getAttribute( "value" ) === null ? "on" : elem.value; + }; + } +} ); + + + + +// Return jQuery for attributes-only inclusion + + +support.focusin = "onfocusin" in window; + + +var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + stopPropagationCallback = function( e ) { + e.stopPropagation(); + }; + +jQuery.extend( jQuery.event, { + + trigger: function( event, data, elem, onlyHandlers ) { + + var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, + eventPath = [ elem || document ], + type = hasOwn.call( event, "type" ) ? event.type : event, + namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; + + cur = lastElement = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf( "." ) > -1 ) { + + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split( "." ); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf( ":" ) < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join( "." ); + event.rnamespace = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === ( elem.ownerDocument || document ) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { + lastElement = cur; + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( dataPriv.get( cur, "events" ) || Object.create( null ) )[ event.type ] && + dataPriv.get( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && handle.apply && acceptData( cur ) ) { + event.result = handle.apply( cur, data ); + if ( event.result === false ) { + event.preventDefault(); + } + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( ( !special._default || + special._default.apply( eventPath.pop(), data ) === false ) && + acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name as the event. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + + if ( event.isPropagationStopped() ) { + lastElement.addEventListener( type, stopPropagationCallback ); + } + + elem[ type ](); + + if ( event.isPropagationStopped() ) { + lastElement.removeEventListener( type, stopPropagationCallback ); + } + + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + // Piggyback on a donor event to simulate a different one + // Used only for `focus(in | out)` events + simulate: function( type, elem, event ) { + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true + } + ); + + jQuery.event.trigger( e, null, elem ); + } + +} ); + +jQuery.fn.extend( { + + trigger: function( type, data ) { + return this.each( function() { + jQuery.event.trigger( type, data, this ); + } ); + }, + triggerHandler: function( type, data ) { + var elem = this[ 0 ]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +} ); + + +// Support: Firefox <=44 +// Firefox doesn't have focus(in | out) events +// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 +// +// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 +// focus(in | out) events fire after focus & blur events, +// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order +// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 +if ( !support.focusin ) { + jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler on the document while someone wants focusin/focusout + var handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + + // Handle: regular nodes (via `this.ownerDocument`), window + // (via `this.document`) & document (via `this`). + var doc = this.ownerDocument || this.document || this, + attaches = dataPriv.access( doc, fix ); + + if ( !attaches ) { + doc.addEventListener( orig, handler, true ); + } + dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); + }, + teardown: function() { + var doc = this.ownerDocument || this.document || this, + attaches = dataPriv.access( doc, fix ) - 1; + + if ( !attaches ) { + doc.removeEventListener( orig, handler, true ); + dataPriv.remove( doc, fix ); + + } else { + dataPriv.access( doc, fix, attaches ); + } + } + }; + } ); +} +var location = window.location; + +var nonce = { guid: Date.now() }; + +var rquery = ( /\?/ ); + + + +// Cross-browser xml parsing +jQuery.parseXML = function( data ) { + var xml, parserErrorElem; + if ( !data || typeof data !== "string" ) { + return null; + } + + // Support: IE 9 - 11 only + // IE throws on parseFromString with invalid input. + try { + xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); + } catch ( e ) {} + + parserErrorElem = xml && xml.getElementsByTagName( "parsererror" )[ 0 ]; + if ( !xml || parserErrorElem ) { + jQuery.error( "Invalid XML: " + ( + parserErrorElem ? + jQuery.map( parserErrorElem.childNodes, function( el ) { + return el.textContent; + } ).join( "\n" ) : + data + ) ); + } + return xml; +}; + + +var + rbracket = /\[\]$/, + rCRLF = /\r?\n/g, + rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, + rsubmittable = /^(?:input|select|textarea|keygen)/i; + +function buildParams( prefix, obj, traditional, add ) { + var name; + + if ( Array.isArray( obj ) ) { + + // Serialize array item. + jQuery.each( obj, function( i, v ) { + if ( traditional || rbracket.test( prefix ) ) { + + // Treat each array item as a scalar. + add( prefix, v ); + + } else { + + // Item is non-scalar (array or object), encode its numeric index. + buildParams( + prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", + v, + traditional, + add + ); + } + } ); + + } else if ( !traditional && toType( obj ) === "object" ) { + + // Serialize object item. + for ( name in obj ) { + buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); + } + + } else { + + // Serialize scalar item. + add( prefix, obj ); + } +} + +// Serialize an array of form elements or a set of +// key/values into a query string +jQuery.param = function( a, traditional ) { + var prefix, + s = [], + add = function( key, valueOrFunction ) { + + // If value is a function, invoke it and use its return value + var value = isFunction( valueOrFunction ) ? + valueOrFunction() : + valueOrFunction; + + s[ s.length ] = encodeURIComponent( key ) + "=" + + encodeURIComponent( value == null ? "" : value ); + }; + + if ( a == null ) { + return ""; + } + + // If an array was passed in, assume that it is an array of form elements. + if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { + + // Serialize the form elements + jQuery.each( a, function() { + add( this.name, this.value ); + } ); + + } else { + + // If traditional, encode the "old" way (the way 1.3.2 or older + // did it), otherwise encode params recursively. + for ( prefix in a ) { + buildParams( prefix, a[ prefix ], traditional, add ); + } + } + + // Return the resulting serialization + return s.join( "&" ); +}; + +jQuery.fn.extend( { + serialize: function() { + return jQuery.param( this.serializeArray() ); + }, + serializeArray: function() { + return this.map( function() { + + // Can add propHook for "elements" to filter or add form elements + var elements = jQuery.prop( this, "elements" ); + return elements ? jQuery.makeArray( elements ) : this; + } ).filter( function() { + var type = this.type; + + // Use .is( ":disabled" ) so that fieldset[disabled] works + return this.name && !jQuery( this ).is( ":disabled" ) && + rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && + ( this.checked || !rcheckableType.test( type ) ); + } ).map( function( _i, elem ) { + var val = jQuery( this ).val(); + + if ( val == null ) { + return null; + } + + if ( Array.isArray( val ) ) { + return jQuery.map( val, function( val ) { + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ); + } + + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ).get(); + } +} ); + + +var + r20 = /%20/g, + rhash = /#.*$/, + rantiCache = /([?&])_=[^&]*/, + rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, + + // #7653, #8125, #8152: local protocol detection + rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, + rnoContent = /^(?:GET|HEAD)$/, + rprotocol = /^\/\//, + + /* Prefilters + * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) + * 2) These are called: + * - BEFORE asking for a transport + * - AFTER param serialization (s.data is a string if s.processData is true) + * 3) key is the dataType + * 4) the catchall symbol "*" can be used + * 5) execution will start with transport dataType and THEN continue down to "*" if needed + */ + prefilters = {}, + + /* Transports bindings + * 1) key is the dataType + * 2) the catchall symbol "*" can be used + * 3) selection will start with transport dataType and THEN go to "*" if needed + */ + transports = {}, + + // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression + allTypes = "*/".concat( "*" ), + + // Anchor tag for parsing the document origin + originAnchor = document.createElement( "a" ); + +originAnchor.href = location.href; + +// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport +function addToPrefiltersOrTransports( structure ) { + + // dataTypeExpression is optional and defaults to "*" + return function( dataTypeExpression, func ) { + + if ( typeof dataTypeExpression !== "string" ) { + func = dataTypeExpression; + dataTypeExpression = "*"; + } + + var dataType, + i = 0, + dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; + + if ( isFunction( func ) ) { + + // For each dataType in the dataTypeExpression + while ( ( dataType = dataTypes[ i++ ] ) ) { + + // Prepend if requested + if ( dataType[ 0 ] === "+" ) { + dataType = dataType.slice( 1 ) || "*"; + ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); + + // Otherwise append + } else { + ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); + } + } + } + }; +} + +// Base inspection function for prefilters and transports +function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { + + var inspected = {}, + seekingTransport = ( structure === transports ); + + function inspect( dataType ) { + var selected; + inspected[ dataType ] = true; + jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { + var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); + if ( typeof dataTypeOrTransport === "string" && + !seekingTransport && !inspected[ dataTypeOrTransport ] ) { + + options.dataTypes.unshift( dataTypeOrTransport ); + inspect( dataTypeOrTransport ); + return false; + } else if ( seekingTransport ) { + return !( selected = dataTypeOrTransport ); + } + } ); + return selected; + } + + return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); +} + +// A special extend for ajax options +// that takes "flat" options (not to be deep extended) +// Fixes #9887 +function ajaxExtend( target, src ) { + var key, deep, + flatOptions = jQuery.ajaxSettings.flatOptions || {}; + + for ( key in src ) { + if ( src[ key ] !== undefined ) { + ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; + } + } + if ( deep ) { + jQuery.extend( true, target, deep ); + } + + return target; +} + +/* Handles responses to an ajax request: + * - finds the right dataType (mediates between content-type and expected dataType) + * - returns the corresponding response + */ +function ajaxHandleResponses( s, jqXHR, responses ) { + + var ct, type, finalDataType, firstDataType, + contents = s.contents, + dataTypes = s.dataTypes; + + // Remove auto dataType and get content-type in the process + while ( dataTypes[ 0 ] === "*" ) { + dataTypes.shift(); + if ( ct === undefined ) { + ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); + } + } + + // Check if we're dealing with a known content-type + if ( ct ) { + for ( type in contents ) { + if ( contents[ type ] && contents[ type ].test( ct ) ) { + dataTypes.unshift( type ); + break; + } + } + } + + // Check to see if we have a response for the expected dataType + if ( dataTypes[ 0 ] in responses ) { + finalDataType = dataTypes[ 0 ]; + } else { + + // Try convertible dataTypes + for ( type in responses ) { + if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { + finalDataType = type; + break; + } + if ( !firstDataType ) { + firstDataType = type; + } + } + + // Or just use first one + finalDataType = finalDataType || firstDataType; + } + + // If we found a dataType + // We add the dataType to the list if needed + // and return the corresponding response + if ( finalDataType ) { + if ( finalDataType !== dataTypes[ 0 ] ) { + dataTypes.unshift( finalDataType ); + } + return responses[ finalDataType ]; + } +} + +/* Chain conversions given the request and the original response + * Also sets the responseXXX fields on the jqXHR instance + */ +function ajaxConvert( s, response, jqXHR, isSuccess ) { + var conv2, current, conv, tmp, prev, + converters = {}, + + // Work with a copy of dataTypes in case we need to modify it for conversion + dataTypes = s.dataTypes.slice(); + + // Create converters map with lowercased keys + if ( dataTypes[ 1 ] ) { + for ( conv in s.converters ) { + converters[ conv.toLowerCase() ] = s.converters[ conv ]; + } + } + + current = dataTypes.shift(); + + // Convert to each sequential dataType + while ( current ) { + + if ( s.responseFields[ current ] ) { + jqXHR[ s.responseFields[ current ] ] = response; + } + + // Apply the dataFilter if provided + if ( !prev && isSuccess && s.dataFilter ) { + response = s.dataFilter( response, s.dataType ); + } + + prev = current; + current = dataTypes.shift(); + + if ( current ) { + + // There's only work to do if current dataType is non-auto + if ( current === "*" ) { + + current = prev; + + // Convert response if prev dataType is non-auto and differs from current + } else if ( prev !== "*" && prev !== current ) { + + // Seek a direct converter + conv = converters[ prev + " " + current ] || converters[ "* " + current ]; + + // If none found, seek a pair + if ( !conv ) { + for ( conv2 in converters ) { + + // If conv2 outputs current + tmp = conv2.split( " " ); + if ( tmp[ 1 ] === current ) { + + // If prev can be converted to accepted input + conv = converters[ prev + " " + tmp[ 0 ] ] || + converters[ "* " + tmp[ 0 ] ]; + if ( conv ) { + + // Condense equivalence converters + if ( conv === true ) { + conv = converters[ conv2 ]; + + // Otherwise, insert the intermediate dataType + } else if ( converters[ conv2 ] !== true ) { + current = tmp[ 0 ]; + dataTypes.unshift( tmp[ 1 ] ); + } + break; + } + } + } + } + + // Apply converter (if not an equivalence) + if ( conv !== true ) { + + // Unless errors are allowed to bubble, catch and return them + if ( conv && s.throws ) { + response = conv( response ); + } else { + try { + response = conv( response ); + } catch ( e ) { + return { + state: "parsererror", + error: conv ? e : "No conversion from " + prev + " to " + current + }; + } + } + } + } + } + } + + return { state: "success", data: response }; +} + +jQuery.extend( { + + // Counter for holding the number of active queries + active: 0, + + // Last-Modified header cache for next request + lastModified: {}, + etag: {}, + + ajaxSettings: { + url: location.href, + type: "GET", + isLocal: rlocalProtocol.test( location.protocol ), + global: true, + processData: true, + async: true, + contentType: "application/x-www-form-urlencoded; charset=UTF-8", + + /* + timeout: 0, + data: null, + dataType: null, + username: null, + password: null, + cache: null, + throws: false, + traditional: false, + headers: {}, + */ + + accepts: { + "*": allTypes, + text: "text/plain", + html: "text/html", + xml: "application/xml, text/xml", + json: "application/json, text/javascript" + }, + + contents: { + xml: /\bxml\b/, + html: /\bhtml/, + json: /\bjson\b/ + }, + + responseFields: { + xml: "responseXML", + text: "responseText", + json: "responseJSON" + }, + + // Data converters + // Keys separate source (or catchall "*") and destination types with a single space + converters: { + + // Convert anything to text + "* text": String, + + // Text to html (true = no transformation) + "text html": true, + + // Evaluate text as a json expression + "text json": JSON.parse, + + // Parse text as xml + "text xml": jQuery.parseXML + }, + + // For options that shouldn't be deep extended: + // you can add your own custom options here if + // and when you create one that shouldn't be + // deep extended (see ajaxExtend) + flatOptions: { + url: true, + context: true + } + }, + + // Creates a full fledged settings object into target + // with both ajaxSettings and settings fields. + // If target is omitted, writes into ajaxSettings. + ajaxSetup: function( target, settings ) { + return settings ? + + // Building a settings object + ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : + + // Extending ajaxSettings + ajaxExtend( jQuery.ajaxSettings, target ); + }, + + ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), + ajaxTransport: addToPrefiltersOrTransports( transports ), + + // Main method + ajax: function( url, options ) { + + // If url is an object, simulate pre-1.5 signature + if ( typeof url === "object" ) { + options = url; + url = undefined; + } + + // Force options to be an object + options = options || {}; + + var transport, + + // URL without anti-cache param + cacheURL, + + // Response headers + responseHeadersString, + responseHeaders, + + // timeout handle + timeoutTimer, + + // Url cleanup var + urlAnchor, + + // Request state (becomes false upon send and true upon completion) + completed, + + // To know if global events are to be dispatched + fireGlobals, + + // Loop variable + i, + + // uncached part of the url + uncached, + + // Create the final options object + s = jQuery.ajaxSetup( {}, options ), + + // Callbacks context + callbackContext = s.context || s, + + // Context for global events is callbackContext if it is a DOM node or jQuery collection + globalEventContext = s.context && + ( callbackContext.nodeType || callbackContext.jquery ) ? + jQuery( callbackContext ) : + jQuery.event, + + // Deferreds + deferred = jQuery.Deferred(), + completeDeferred = jQuery.Callbacks( "once memory" ), + + // Status-dependent callbacks + statusCode = s.statusCode || {}, + + // Headers (they are sent all at once) + requestHeaders = {}, + requestHeadersNames = {}, + + // Default abort message + strAbort = "canceled", + + // Fake xhr + jqXHR = { + readyState: 0, + + // Builds headers hashtable if needed + getResponseHeader: function( key ) { + var match; + if ( completed ) { + if ( !responseHeaders ) { + responseHeaders = {}; + while ( ( match = rheaders.exec( responseHeadersString ) ) ) { + responseHeaders[ match[ 1 ].toLowerCase() + " " ] = + ( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] ) + .concat( match[ 2 ] ); + } + } + match = responseHeaders[ key.toLowerCase() + " " ]; + } + return match == null ? null : match.join( ", " ); + }, + + // Raw string + getAllResponseHeaders: function() { + return completed ? responseHeadersString : null; + }, + + // Caches the header + setRequestHeader: function( name, value ) { + if ( completed == null ) { + name = requestHeadersNames[ name.toLowerCase() ] = + requestHeadersNames[ name.toLowerCase() ] || name; + requestHeaders[ name ] = value; + } + return this; + }, + + // Overrides response content-type header + overrideMimeType: function( type ) { + if ( completed == null ) { + s.mimeType = type; + } + return this; + }, + + // Status-dependent callbacks + statusCode: function( map ) { + var code; + if ( map ) { + if ( completed ) { + + // Execute the appropriate callbacks + jqXHR.always( map[ jqXHR.status ] ); + } else { + + // Lazy-add the new callbacks in a way that preserves old ones + for ( code in map ) { + statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; + } + } + } + return this; + }, + + // Cancel the request + abort: function( statusText ) { + var finalText = statusText || strAbort; + if ( transport ) { + transport.abort( finalText ); + } + done( 0, finalText ); + return this; + } + }; + + // Attach deferreds + deferred.promise( jqXHR ); + + // Add protocol if not provided (prefilters might expect it) + // Handle falsy url in the settings object (#10093: consistency with old signature) + // We also use the url parameter if available + s.url = ( ( url || s.url || location.href ) + "" ) + .replace( rprotocol, location.protocol + "//" ); + + // Alias method option to type as per ticket #12004 + s.type = options.method || options.type || s.method || s.type; + + // Extract dataTypes list + s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; + + // A cross-domain request is in order when the origin doesn't match the current origin. + if ( s.crossDomain == null ) { + urlAnchor = document.createElement( "a" ); + + // Support: IE <=8 - 11, Edge 12 - 15 + // IE throws exception on accessing the href property if url is malformed, + // e.g. http://example.com:80x/ + try { + urlAnchor.href = s.url; + + // Support: IE <=8 - 11 only + // Anchor's host property isn't correctly set when s.url is relative + urlAnchor.href = urlAnchor.href; + s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== + urlAnchor.protocol + "//" + urlAnchor.host; + } catch ( e ) { + + // If there is an error parsing the URL, assume it is crossDomain, + // it can be rejected by the transport if it is invalid + s.crossDomain = true; + } + } + + // Convert data if not already a string + if ( s.data && s.processData && typeof s.data !== "string" ) { + s.data = jQuery.param( s.data, s.traditional ); + } + + // Apply prefilters + inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); + + // If request was aborted inside a prefilter, stop there + if ( completed ) { + return jqXHR; + } + + // We can fire global events as of now if asked to + // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) + fireGlobals = jQuery.event && s.global; + + // Watch for a new set of requests + if ( fireGlobals && jQuery.active++ === 0 ) { + jQuery.event.trigger( "ajaxStart" ); + } + + // Uppercase the type + s.type = s.type.toUpperCase(); + + // Determine if request has content + s.hasContent = !rnoContent.test( s.type ); + + // Save the URL in case we're toying with the If-Modified-Since + // and/or If-None-Match header later on + // Remove hash to simplify url manipulation + cacheURL = s.url.replace( rhash, "" ); + + // More options handling for requests with no content + if ( !s.hasContent ) { + + // Remember the hash so we can put it back + uncached = s.url.slice( cacheURL.length ); + + // If data is available and should be processed, append data to url + if ( s.data && ( s.processData || typeof s.data === "string" ) ) { + cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; + + // #9682: remove data so that it's not used in an eventual retry + delete s.data; + } + + // Add or update anti-cache param if needed + if ( s.cache === false ) { + cacheURL = cacheURL.replace( rantiCache, "$1" ); + uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce.guid++ ) + + uncached; + } + + // Put hash and anti-cache on the URL that will be requested (gh-1732) + s.url = cacheURL + uncached; + + // Change '%20' to '+' if this is encoded form body content (gh-2658) + } else if ( s.data && s.processData && + ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { + s.data = s.data.replace( r20, "+" ); + } + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + if ( jQuery.lastModified[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); + } + if ( jQuery.etag[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); + } + } + + // Set the correct header, if data is being sent + if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { + jqXHR.setRequestHeader( "Content-Type", s.contentType ); + } + + // Set the Accepts header for the server, depending on the dataType + jqXHR.setRequestHeader( + "Accept", + s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? + s.accepts[ s.dataTypes[ 0 ] ] + + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : + s.accepts[ "*" ] + ); + + // Check for headers option + for ( i in s.headers ) { + jqXHR.setRequestHeader( i, s.headers[ i ] ); + } + + // Allow custom headers/mimetypes and early abort + if ( s.beforeSend && + ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { + + // Abort if not done already and return + return jqXHR.abort(); + } + + // Aborting is no longer a cancellation + strAbort = "abort"; + + // Install callbacks on deferreds + completeDeferred.add( s.complete ); + jqXHR.done( s.success ); + jqXHR.fail( s.error ); + + // Get transport + transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); + + // If no transport, we auto-abort + if ( !transport ) { + done( -1, "No Transport" ); + } else { + jqXHR.readyState = 1; + + // Send global event + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); + } + + // If request was aborted inside ajaxSend, stop there + if ( completed ) { + return jqXHR; + } + + // Timeout + if ( s.async && s.timeout > 0 ) { + timeoutTimer = window.setTimeout( function() { + jqXHR.abort( "timeout" ); + }, s.timeout ); + } + + try { + completed = false; + transport.send( requestHeaders, done ); + } catch ( e ) { + + // Rethrow post-completion exceptions + if ( completed ) { + throw e; + } + + // Propagate others as results + done( -1, e ); + } + } + + // Callback for when everything is done + function done( status, nativeStatusText, responses, headers ) { + var isSuccess, success, error, response, modified, + statusText = nativeStatusText; + + // Ignore repeat invocations + if ( completed ) { + return; + } + + completed = true; + + // Clear timeout if it exists + if ( timeoutTimer ) { + window.clearTimeout( timeoutTimer ); + } + + // Dereference transport for early garbage collection + // (no matter how long the jqXHR object will be used) + transport = undefined; + + // Cache response headers + responseHeadersString = headers || ""; + + // Set readyState + jqXHR.readyState = status > 0 ? 4 : 0; + + // Determine if successful + isSuccess = status >= 200 && status < 300 || status === 304; + + // Get response data + if ( responses ) { + response = ajaxHandleResponses( s, jqXHR, responses ); + } + + // Use a noop converter for missing script but not if jsonp + if ( !isSuccess && + jQuery.inArray( "script", s.dataTypes ) > -1 && + jQuery.inArray( "json", s.dataTypes ) < 0 ) { + s.converters[ "text script" ] = function() {}; + } + + // Convert no matter what (that way responseXXX fields are always set) + response = ajaxConvert( s, response, jqXHR, isSuccess ); + + // If successful, handle type chaining + if ( isSuccess ) { + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + modified = jqXHR.getResponseHeader( "Last-Modified" ); + if ( modified ) { + jQuery.lastModified[ cacheURL ] = modified; + } + modified = jqXHR.getResponseHeader( "etag" ); + if ( modified ) { + jQuery.etag[ cacheURL ] = modified; + } + } + + // if no content + if ( status === 204 || s.type === "HEAD" ) { + statusText = "nocontent"; + + // if not modified + } else if ( status === 304 ) { + statusText = "notmodified"; + + // If we have data, let's convert it + } else { + statusText = response.state; + success = response.data; + error = response.error; + isSuccess = !error; + } + } else { + + // Extract error from statusText and normalize for non-aborts + error = statusText; + if ( status || !statusText ) { + statusText = "error"; + if ( status < 0 ) { + status = 0; + } + } + } + + // Set data for the fake xhr object + jqXHR.status = status; + jqXHR.statusText = ( nativeStatusText || statusText ) + ""; + + // Success/Error + if ( isSuccess ) { + deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); + } else { + deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); + } + + // Status-dependent callbacks + jqXHR.statusCode( statusCode ); + statusCode = undefined; + + if ( fireGlobals ) { + globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", + [ jqXHR, s, isSuccess ? success : error ] ); + } + + // Complete + completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); + + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); + + // Handle the global AJAX counter + if ( !( --jQuery.active ) ) { + jQuery.event.trigger( "ajaxStop" ); + } + } + } + + return jqXHR; + }, + + getJSON: function( url, data, callback ) { + return jQuery.get( url, data, callback, "json" ); + }, + + getScript: function( url, callback ) { + return jQuery.get( url, undefined, callback, "script" ); + } +} ); + +jQuery.each( [ "get", "post" ], function( _i, method ) { + jQuery[ method ] = function( url, data, callback, type ) { + + // Shift arguments if data argument was omitted + if ( isFunction( data ) ) { + type = type || callback; + callback = data; + data = undefined; + } + + // The url can be an options object (which then must have .url) + return jQuery.ajax( jQuery.extend( { + url: url, + type: method, + dataType: type, + data: data, + success: callback + }, jQuery.isPlainObject( url ) && url ) ); + }; +} ); + +jQuery.ajaxPrefilter( function( s ) { + var i; + for ( i in s.headers ) { + if ( i.toLowerCase() === "content-type" ) { + s.contentType = s.headers[ i ] || ""; + } + } +} ); + + +jQuery._evalUrl = function( url, options, doc ) { + return jQuery.ajax( { + url: url, + + // Make this explicit, since user can override this through ajaxSetup (#11264) + type: "GET", + dataType: "script", + cache: true, + async: false, + global: false, + + // Only evaluate the response if it is successful (gh-4126) + // dataFilter is not invoked for failure responses, so using it instead + // of the default converter is kludgy but it works. + converters: { + "text script": function() {} + }, + dataFilter: function( response ) { + jQuery.globalEval( response, options, doc ); + } + } ); +}; + + +jQuery.fn.extend( { + wrapAll: function( html ) { + var wrap; + + if ( this[ 0 ] ) { + if ( isFunction( html ) ) { + html = html.call( this[ 0 ] ); + } + + // The elements to wrap the target around + wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); + + if ( this[ 0 ].parentNode ) { + wrap.insertBefore( this[ 0 ] ); + } + + wrap.map( function() { + var elem = this; + + while ( elem.firstElementChild ) { + elem = elem.firstElementChild; + } + + return elem; + } ).append( this ); + } + + return this; + }, + + wrapInner: function( html ) { + if ( isFunction( html ) ) { + return this.each( function( i ) { + jQuery( this ).wrapInner( html.call( this, i ) ); + } ); + } + + return this.each( function() { + var self = jQuery( this ), + contents = self.contents(); + + if ( contents.length ) { + contents.wrapAll( html ); + + } else { + self.append( html ); + } + } ); + }, + + wrap: function( html ) { + var htmlIsFunction = isFunction( html ); + + return this.each( function( i ) { + jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html ); + } ); + }, + + unwrap: function( selector ) { + this.parent( selector ).not( "body" ).each( function() { + jQuery( this ).replaceWith( this.childNodes ); + } ); + return this; + } +} ); + + +jQuery.expr.pseudos.hidden = function( elem ) { + return !jQuery.expr.pseudos.visible( elem ); +}; +jQuery.expr.pseudos.visible = function( elem ) { + return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); +}; + + + + +jQuery.ajaxSettings.xhr = function() { + try { + return new window.XMLHttpRequest(); + } catch ( e ) {} +}; + +var xhrSuccessStatus = { + + // File protocol always yields status code 0, assume 200 + 0: 200, + + // Support: IE <=9 only + // #1450: sometimes IE returns 1223 when it should be 204 + 1223: 204 + }, + xhrSupported = jQuery.ajaxSettings.xhr(); + +support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); +support.ajax = xhrSupported = !!xhrSupported; + +jQuery.ajaxTransport( function( options ) { + var callback, errorCallback; + + // Cross domain only allowed if supported through XMLHttpRequest + if ( support.cors || xhrSupported && !options.crossDomain ) { + return { + send: function( headers, complete ) { + var i, + xhr = options.xhr(); + + xhr.open( + options.type, + options.url, + options.async, + options.username, + options.password + ); + + // Apply custom fields if provided + if ( options.xhrFields ) { + for ( i in options.xhrFields ) { + xhr[ i ] = options.xhrFields[ i ]; + } + } + + // Override mime type if needed + if ( options.mimeType && xhr.overrideMimeType ) { + xhr.overrideMimeType( options.mimeType ); + } + + // X-Requested-With header + // For cross-domain requests, seeing as conditions for a preflight are + // akin to a jigsaw puzzle, we simply never set it to be sure. + // (it can always be set on a per-request basis or even using ajaxSetup) + // For same-domain requests, won't change header if already provided. + if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { + headers[ "X-Requested-With" ] = "XMLHttpRequest"; + } + + // Set headers + for ( i in headers ) { + xhr.setRequestHeader( i, headers[ i ] ); + } + + // Callback + callback = function( type ) { + return function() { + if ( callback ) { + callback = errorCallback = xhr.onload = + xhr.onerror = xhr.onabort = xhr.ontimeout = + xhr.onreadystatechange = null; + + if ( type === "abort" ) { + xhr.abort(); + } else if ( type === "error" ) { + + // Support: IE <=9 only + // On a manual native abort, IE9 throws + // errors on any property access that is not readyState + if ( typeof xhr.status !== "number" ) { + complete( 0, "error" ); + } else { + complete( + + // File: protocol always yields status 0; see #8605, #14207 + xhr.status, + xhr.statusText + ); + } + } else { + complete( + xhrSuccessStatus[ xhr.status ] || xhr.status, + xhr.statusText, + + // Support: IE <=9 only + // IE9 has no XHR2 but throws on binary (trac-11426) + // For XHR2 non-text, let the caller handle it (gh-2498) + ( xhr.responseType || "text" ) !== "text" || + typeof xhr.responseText !== "string" ? + { binary: xhr.response } : + { text: xhr.responseText }, + xhr.getAllResponseHeaders() + ); + } + } + }; + }; + + // Listen to events + xhr.onload = callback(); + errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" ); + + // Support: IE 9 only + // Use onreadystatechange to replace onabort + // to handle uncaught aborts + if ( xhr.onabort !== undefined ) { + xhr.onabort = errorCallback; + } else { + xhr.onreadystatechange = function() { + + // Check readyState before timeout as it changes + if ( xhr.readyState === 4 ) { + + // Allow onerror to be called first, + // but that will not handle a native abort + // Also, save errorCallback to a variable + // as xhr.onerror cannot be accessed + window.setTimeout( function() { + if ( callback ) { + errorCallback(); + } + } ); + } + }; + } + + // Create the abort callback + callback = callback( "abort" ); + + try { + + // Do send the request (this may raise an exception) + xhr.send( options.hasContent && options.data || null ); + } catch ( e ) { + + // #14683: Only rethrow if this hasn't been notified as an error yet + if ( callback ) { + throw e; + } + } + }, + + abort: function() { + if ( callback ) { + callback(); + } + } + }; + } +} ); + + + + +// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) +jQuery.ajaxPrefilter( function( s ) { + if ( s.crossDomain ) { + s.contents.script = false; + } +} ); + +// Install script dataType +jQuery.ajaxSetup( { + accepts: { + script: "text/javascript, application/javascript, " + + "application/ecmascript, application/x-ecmascript" + }, + contents: { + script: /\b(?:java|ecma)script\b/ + }, + converters: { + "text script": function( text ) { + jQuery.globalEval( text ); + return text; + } + } +} ); + +// Handle cache's special case and crossDomain +jQuery.ajaxPrefilter( "script", function( s ) { + if ( s.cache === undefined ) { + s.cache = false; + } + if ( s.crossDomain ) { + s.type = "GET"; + } +} ); + +// Bind script tag hack transport +jQuery.ajaxTransport( "script", function( s ) { + + // This transport only deals with cross domain or forced-by-attrs requests + if ( s.crossDomain || s.scriptAttrs ) { + var script, callback; + return { + send: function( _, complete ) { + script = jQuery( " + + +
+
+

+ Coverage for pyVHDLParser/CLI/ANTLR.py: + 0% +

+ +

+ 104 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2022 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30import time 

+

31from pathlib import Path 

+

32 

+

33from antlr4 import CommonTokenStream, InputStream 

+

34from pyAttributes.ArgParseAttributes import CommandAttribute 

+

35 

+

36from ..LanguageModel import Document 

+

37from ..LanguageModel.Reference import UseClause, LibraryClause 

+

38from ..LanguageModel.DesignUnit import Entity, Architecture, Package, PackageBody 

+

39from ..LanguageModel.InterfaceItem import GenericConstantInterfaceItem, PortSignalInterfaceItem 

+

40 

+

41from ..ANTLR4 import ANTLR2Token 

+

42from ..ANTLR4.VHDLLexer import VHDLLexer 

+

43from ..ANTLR4.VHDLParser import VHDLParser 

+

44from ..ANTLR4.Visitor import VHDLVisitor 

+

45 

+

46from . import FrontEndProtocol, FilenameAttribute 

+

47 

+

48 

+

49class ANTLRHandlers: 

+

50 # ---------------------------------------------------------------------------- 

+

51 # create the sub-parser for the "token-stream" command 

+

52 # ---------------------------------------------------------------------------- 

+

53 @CommandAttribute("antlr", help="Create DOM from ANTLR4 grammar.", description="Create DOM from ANTLR4 grammar.") 

+

54 @FilenameAttribute() 

+

55 def HandleANTLR(self: FrontEndProtocol, args): 

+

56 self.PrintHeadline() 

+

57 

+

58 file = Path(args.Filename) 

+

59 

+

60 if not file.exists(): 

+

61 print(f"File '{file}' does not exist.") 

+

62 

+

63 startTime = time.perf_counter() 

+

64 with file.open('r') as fileHandle: 

+

65 content = fileHandle.read() 

+

66 print(f"Load file: {(time.perf_counter() - startTime):.6f}") 

+

67 

+

68 lexer = VHDLLexer(InputStream(content)) 

+

69 print(f"Lexer: {(time.perf_counter() - startTime):.6f}") 

+

70 stream = CommonTokenStream(lexer) 

+

71 parser = VHDLParser(stream) 

+

72 print(f"Parser: {(time.perf_counter() - startTime):.6f}") 

+

73 parserTree = parser.rule_DesignFile() 

+

74 print(f"ParseTree: {(time.perf_counter() - startTime):.6f}") 

+

75 visitor = VHDLVisitor() 

+

76 designUnits = visitor.visit(parserTree) 

+

77 print(f"Visitor: {(time.perf_counter() - startTime):.6f}") 

+

78 

+

79 print(f"{'-' * 40}") 

+

80 conv = ANTLR2Token() 

+

81 converted = conv.ConvertToTokenChain(stream) 

+

82 print(f"ANTLR2Token: {(time.perf_counter() - startTime):.6f}") 

+

83 # for token in converted: 

+

84 # print(f"{token!r}") 

+

85 print(f"{'-' * 40}") 

+

86 

+

87 document = Document(file, converted[0], converted[-1]) 

+

88 for designUnit in designUnits: 

+

89 if isinstance(designUnit, Entity): 

+

90 document.Entities.append(designUnit) 

+

91 elif isinstance(designUnit, Architecture): 

+

92 document.Architectures.append(designUnit) 

+

93 elif isinstance(designUnit, Package): 

+

94 document.Packages.append(designUnit) 

+

95 elif isinstance(designUnit, PackageBody): 

+

96 document.PackageBodies.append(designUnit) 

+

97 

+

98 print("=" * 80) 

+

99 print(f"Sourcefile: {document.Path}") 

+

100 print(f" Entities:") 

+

101 for entity in document.Entities: 

+

102 print(f" {entity.Identifier}") 

+

103 print(f" Doc-String:") 

+

104 for line in entity.docstring: 

+

105 print(f" {line}") 

+

106 print(f" Context:") 

+

107 for item in entity.ContextItems: 

+

108 if isinstance(item, LibraryClause): 

+

109 print(f" library: {', '.join(item.Names)}") 

+

110 elif isinstance(item, UseClause): 

+

111 print(f" use: {', '.join(item.Names)}") 

+

112 print(f" Generics:") 

+

113 for generic in entity.GenericItems: 

+

114 if isinstance(generic, GenericConstantInterfaceItem): 

+

115 print(f" constant {', '.join(generic.Identifiers)} : {generic.Mode} {generic.Subtype}") 

+

116 print(f" Ports:") 

+

117 for port in entity.PortItems: 

+

118 if isinstance(port, PortSignalInterfaceItem): 

+

119 print(f" signal {', '.join(port.Identifiers)} : {port.Mode} {port.Subtype}") 

+

120 

+

121 print(f" Architectures:") 

+

122 for arch in document.Architectures: 

+

123 print(f" {arch.Identifier}") 

+

124 print(f" Context:") 

+

125 for item in arch.ContextItems: 

+

126 if isinstance(item, LibraryClause): 

+

127 print(f" library: {', '.join(item.Names)}") 

+

128 elif isinstance(item, UseClause): 

+

129 print(f" use: {', '.join(item.Names)}") 

+

130 

+

131 print(f" Packages:") 

+

132 for package in document.Packages: 

+

133 print(f" {package.Identifier}") 

+

134 print(f" Context:") 

+

135 for item in package.ContextItems: 

+

136 if isinstance(item, LibraryClause): 

+

137 print(f" library: {', '.join(item.Names)}") 

+

138 elif isinstance(item, UseClause): 

+

139 print(f" use: {', '.join(item.Names)}") 

+

140 print(f" Generics:") 

+

141 for generic in package.GenericItems: 

+

142 if isinstance(generic, GenericConstantInterfaceItem): 

+

143 print(f" constant {', '.join(generic.Identifiers)} : {generic.Subtype}") 

+

144 

+

145 print(f" Package bodies:") 

+

146 for packageBody in document.PackageBodies: 

+

147 print(f" {packageBody.Identifier}") 

+

148 print(f" Context:") 

+

149 for item in packageBody.ContextItems: 

+

150 if isinstance(item, LibraryClause): 

+

151 print(f" library: {', '.join(item.Names)}") 

+

152 elif isinstance(item, UseClause): 

+

153 print(f" use: {', '.join(item.Names)}") 

+

154 

+

155 self.exit() 

+

156 

+
+ + + diff --git a/coverage/d_038a1401f996c67d_Block_py.html b/coverage/d_038a1401f996c67d_Block_py.html new file mode 100644 index 000000000..bb0e455f3 --- /dev/null +++ b/coverage/d_038a1401f996c67d_Block_py.html @@ -0,0 +1,317 @@ + + + + + Coverage for pyVHDLParser/CLI/Block.py: 0% + + + + + +
+
+

+ Coverage for pyVHDLParser/CLI/Block.py: + 0% +

+ +

+ 137 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pathlib import Path 

+

31 

+

32from pyAttributes.ArgParseAttributes import CommandAttribute 

+

33 

+

34from .GraphML import GraphML 

+

35from ..Base import ParserException 

+

36from ..Token import Token, StartOfDocumentToken, EndOfDocumentToken 

+

37from ..Token.Parser import Tokenizer 

+

38from ..Blocks import Block, TokenToBlockParser, StartOfDocumentBlock, EndOfDocumentBlock, CommentBlock 

+

39from ..Blocks.Common import LinebreakBlock, IndentationBlock 

+

40from ..Blocks.List import GenericList, PortList 

+

41from ..Blocks.InterfaceObject import InterfaceConstantBlock, InterfaceSignalBlock 

+

42from ..Blocks.Structural import Entity 

+

43 

+

44from . import FrontEndProtocol, FilenameAttribute, WithTokensAttribute 

+

45 

+

46 

+

47class BlockStreamHandlers: 

+

48 # ---------------------------------------------------------------------------- 

+

49 # create the sub-parser for the "block-stream" command 

+

50 # ---------------------------------------------------------------------------- 

+

51 @CommandAttribute("block-stream", help="Create a stream of block objects.", description="Create a stream of block objects.") 

+

52 @WithTokensAttribute() 

+

53 @FilenameAttribute() 

+

54 def HandleBlockStreaming(self: FrontEndProtocol, args): 

+

55 self.PrintHeadline() 

+

56 

+

57 # self._writeLevel = Severity.Verbose 

+

58 

+

59 file = Path(args.Filename) 

+

60 

+

61 if not file.exists(): 

+

62 print("File '{0!s}' does not exist.".format(file)) 

+

63 

+

64 with file.open('r') as fileHandle: 

+

65 content = fileHandle.read() 

+

66 

+

67 tokenStream = Tokenizer.GetVHDLTokenizer(content) 

+

68 blockStream = TokenToBlockParser(tokenStream)() 

+

69 

+

70 blockIterator = iter(blockStream) 

+

71 firstBlock = next(blockIterator) 

+

72 

+

73 try: 

+

74 while next(blockIterator): 

+

75 pass 

+

76 except StopIteration: 

+

77 pass 

+

78 

+

79 if isinstance(firstBlock, StartOfDocumentBlock): 

+

80 print("{YELLOW}{block!r}{NOCOLOR}".format(block=firstBlock, **self.Foreground)) 

+

81 print(" {YELLOW}{token!r}{NOCOLOR}".format(token=firstBlock.StartToken, **self.Foreground)) 

+

82 

+

83 try: 

+

84 blockIterator = firstBlock.GetIterator(inclusiveStopBlock=False) 

+

85 for block in blockIterator: 

+

86 if isinstance(block, (LinebreakBlock, IndentationBlock)): 

+

87 self.WriteNormal("{DARK_GRAY}{block!r}{NOCOLOR}".format(block=block, **self.Foreground)) 

+

88 elif isinstance(block, CommentBlock): 

+

89 self.WriteNormal("{DARK_GREEN}{block!r}{NOCOLOR}".format(block=block, **self.Foreground)) 

+

90 elif isinstance(block, (Entity.NameBlock, Entity.NameBlock, Entity.EndBlock)): 

+

91 self.WriteNormal("{DARK_RED}{block!r}{NOCOLOR}".format(block=block, **self.Foreground)) 

+

92 elif isinstance(block, (GenericList.OpenBlock, GenericList.DelimiterBlock, GenericList.CloseBlock)): 

+

93 self.WriteNormal("{DARK_BLUE}{block!r}{NOCOLOR}".format(block=block, **self.Foreground)) 

+

94 elif isinstance(block, (PortList.OpenBlock, PortList.DelimiterBlock, PortList.CloseBlock)): 

+

95 self.WriteNormal("{DARK_CYAN}{block!r}{NOCOLOR}".format(block=block, **self.Foreground)) 

+

96 elif isinstance(block, (InterfaceConstantBlock, InterfaceSignalBlock)): 

+

97 self.WriteNormal("{BLUE}{block!r}{NOCOLOR}".format(block=block, **self.Foreground)) 

+

98 else: 

+

99 self.WriteNormal("{YELLOW}{block!r}{NOCOLOR}".format(block=block, **self.Foreground)) 

+

100 

+

101 for token in block: 

+

102 self.WriteVerbose(repr(token)) 

+

103 

+

104 blockIterator = block.GetIterator() 

+

105 lastBlock = next(blockIterator) 

+

106 if isinstance(lastBlock, EndOfDocumentBlock): 

+

107 print("{YELLOW}{block!r}{NOCOLOR}".format(block=lastBlock, **self.Foreground)) 

+

108 print(" {YELLOW}{token!r}{NOCOLOR}".format(token=lastBlock.StartToken, **self.Foreground)) 

+

109 

+

110 except ParserException as ex: 

+

111 print("{RED}ERROR: {0!s}{NOCOLOR}".format(ex, **self.Foreground)) 

+

112 except NotImplementedError as ex: 

+

113 print("{RED}NotImplementedError: {0!s}{NOCOLOR}".format(ex, **self.Foreground)) 

+

114 

+

115 exporter = GraphML() 

+

116 tokenStreamSubgraph = exporter.AddTokenStream(firstBlock.StartToken) 

+

117 blockStreamSubgraph = exporter.AddBlockStream(firstBlock, tokenStreamSubgraph) 

+

118 exporter.WriteDocument(Path.cwd() / "temp/BlockStream.graphml") 

+

119 

+

120 self.exit() 

+

121 

+

122 # ---------------------------------------------------------------------------- 

+

123 # create the sub-parser for the "block-check" command 

+

124 # ---------------------------------------------------------------------------- 

+

125 @CommandAttribute("block-check", help="Check a stream of block objects.", description="Check a stream of block objects.") 

+

126 @WithTokensAttribute() 

+

127 @FilenameAttribute() 

+

128 def HandleCheckBlockStreaming(self: FrontEndProtocol, args): 

+

129 self.PrintHeadline() 

+

130 

+

131 file = Path(args.Filename) 

+

132 

+

133 if not file.exists(): 

+

134 print("File '{0!s}' does not exist.".format(file)) 

+

135 

+

136 with file.open('r') as fileHandle: 

+

137 content = fileHandle.read() 

+

138 

+

139 vhdlTokenStream = Tokenizer.GetVHDLTokenizer(content) 

+

140 vhdlBlockStream = TokenToBlockParser(vhdlTokenStream)() 

+

141 

+

142 try: 

+

143 blockIterator = iter(vhdlBlockStream) 

+

144 firstBlock = next(blockIterator) 

+

145 self.WriteVerbose(str(firstBlock)) 

+

146 

+

147 if not isinstance(firstBlock, StartOfDocumentBlock): 

+

148 self.WriteError("{RED}First block is not StartOfDocumentBlock: {block}{NOCOLOR}".format(block=firstBlock, **self.Foreground)) 

+

149 self.WriteError("{YELLOW} Block: {block}{NOCOLOR}".format(block=firstBlock, **self.Foreground)) 

+

150 startToken = firstBlock.StartToken 

+

151 self.WriteDebug(str(startToken)) 

+

152 if not isinstance(startToken, StartOfDocumentToken): 

+

153 self.WriteError("{RED}First token is not StartOfDocumentToken: {token}{NOCOLOR}".format(token=startToken, **self.Foreground)) 

+

154 self.WriteError("{YELLOW} Token: {token}{NOCOLOR}".format(token=startToken, **self.Foreground)) 

+

155 

+

156 lastBlock: Block = firstBlock 

+

157 endBlock: Block = None 

+

158 lastToken: Token = startToken 

+

159 

+

160 for vhdlBlock in blockIterator: 

+

161 self.WriteNormal(str(vhdlBlock)) 

+

162 

+

163 if isinstance(vhdlBlock, EndOfDocumentBlock): 

+

164 self.WriteDebug("{GREEN}Found EndOfDocumentBlock...{NOCOLOR}".format(**self.Foreground)) 

+

165 endBlock = vhdlBlock 

+

166 break 

+

167 

+

168 tokenIterator = iter(vhdlBlock) 

+

169 

+

170 for token in tokenIterator: 

+

171 self.WriteVerbose(str(token)) 

+

172 

+

173 # if token.NextToken is None: 

+

174 # self.WriteError("{RED}Token has an open end (NextToken).{NOCOLOR}".format(**self.Foreground)) 

+

175 # self.WriteError("{YELLOW} Token: {token}{NOCOLOR}".format(token=token, **self.Foreground)) 

+

176 # el 

+

177 if lastToken.NextToken is not token: 

+

178 self.WriteError("{RED}Last token is not connected to the current token.{NOCOLOR}".format(**self.Foreground)) 

+

179 self.WriteError("{YELLOW} Last: {token!s}{NOCOLOR}".format(token=lastToken, **self.Foreground)) 

+

180 self.WriteError("{YELLOW} Next: {token!s}{NOCOLOR}".format(token=lastToken.NextToken, **self.Foreground)) 

+

181 self.WriteError("") 

+

182 self.WriteError("{YELLOW} Cur.: {token!s}{NOCOLOR}".format(token=token, **self.Foreground)) 

+

183 self.WriteError("") 

+

184 

+

185 if token.PreviousToken is None: 

+

186 self.WriteError("{RED}Token has an open end (PreviousToken).{NOCOLOR}".format(**self.Foreground)) 

+

187 self.WriteError("{YELLOW} Token: {token}{NOCOLOR}".format(token=token, **self.Foreground)) 

+

188 elif token.PreviousToken is not lastToken: 

+

189 print("{RED}Current token is not connected to lastToken.{NOCOLOR}".format(**self.Foreground)) 

+

190 # print("{RED} Block: {block}{NOCOLOR}".format(block=vhdlBlock, **self.Foreground)) 

+

191 print("{YELLOW} Cur.: {token}{NOCOLOR}".format(token=token, **self.Foreground)) 

+

192 print("{YELLOW} Prev: {token}{NOCOLOR}".format(token=token.PreviousToken, **self.Foreground)) 

+

193 self.WriteError("") 

+

194 print("{YELLOW} Last: {token}{NOCOLOR}".format(token=lastToken, **self.Foreground)) 

+

195 print("{YELLOW} Next: {token}{NOCOLOR}".format(token=lastToken.NextToken, **self.Foreground)) 

+

196 self.WriteError("") 

+

197 

+

198 lastToken = token 

+

199 

+

200 lastBlock = vhdlBlock 

+

201 else: 

+

202 self.WriteError("{RED}No EndOfDocumentBlock found.{NOCOLOR}".format(**self.Foreground)) 

+

203 

+

204 if not isinstance(endBlock, EndOfDocumentBlock): 

+

205 self.WriteError("{RED}Last block is not EndOfDocumentBlock: {block}{NOCOLOR}".format(block=endBlock, **self.Foreground)) 

+

206 self.WriteError("{YELLOW} Block: {block}{NOCOLOR}".format(block=firstBlock, **self.Foreground)) 

+

207 elif not isinstance(endBlock.EndToken, EndOfDocumentToken): 

+

208 self.WriteError("{RED}Last token is not EndOfDocumentToken: {token}{NOCOLOR}".format(token=endBlock.EndToken, **self.Foreground)) 

+

209 self.WriteError("{YELLOW} Token: {token}{NOCOLOR}".format(token=endBlock.EndToken, **self.Foreground)) 

+

210 

+

211 except ParserException as ex: 

+

212 print("{RED}ERROR: {0!s}{NOCOLOR}".format(ex, **self.Foreground)) 

+

213 except NotImplementedError as ex: 

+

214 print("{RED}NotImplementedError: {0!s}{NOCOLOR}".format(ex, **self.Foreground)) 

+

215 

+

216 self.WriteNormal("") 

+

217 self.WriteNormal("{CYAN}All checks are done.{NOCOLOR}".format(**self.Foreground)) 

+

218 self.exit() 

+
+ + + diff --git a/coverage/d_038a1401f996c67d_CodeDOM_py.html b/coverage/d_038a1401f996c67d_CodeDOM_py.html new file mode 100644 index 000000000..0017437f5 --- /dev/null +++ b/coverage/d_038a1401f996c67d_CodeDOM_py.html @@ -0,0 +1,166 @@ + + + + + Coverage for pyVHDLParser/CLI/CodeDOM.py: 0% + + + + + +
+
+

+ Coverage for pyVHDLParser/CLI/CodeDOM.py: + 0% +

+ +

+ 24 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pathlib import Path 

+

31 

+

32from pyAttributes.ArgParseAttributes import CommandAttribute 

+

33 

+

34from ..Base import ParserException 

+

35from ..DocumentModel import Document 

+

36 

+

37from . import FrontEndProtocol, FilenameAttribute 

+

38 

+

39 

+

40class CodeDOMHandlers: 

+

41 # ---------------------------------------------------------------------------- 

+

42 # create the sub-parser for the "DOM" command 

+

43 # ---------------------------------------------------------------------------- 

+

44 @CommandAttribute("CodeDOM", help="Create a CodeDOM.", description="Create a code document object model (CodeDOM).") 

+

45 @FilenameAttribute() 

+

46 def HandleCodeDOM(self : FrontEndProtocol, args): 

+

47 self.PrintHeadline() 

+

48 

+

49 file = Path(args.Filename) 

+

50 

+

51 if not file.exists(): 

+

52 print("File '{0!s}' does not exist.".format(file)) # raise error 

+

53 

+

54 with file.open('r') as fileHandle: 

+

55 content = fileHandle.read() 

+

56 

+

57 try: 

+

58 document = Document(file) 

+

59 document.Parse() 

+

60 document.Print(0) 

+

61 

+

62 except ParserException as ex: 

+

63 print("{RED}ERROR: {0!s}{NOCOLOR}".format(ex, **self.Foreground)) 

+

64 except NotImplementedError as ex: 

+

65 print("{RED}NotImplementedError: {0!s}{NOCOLOR}".format(ex, **self.Foreground)) 

+

66 

+

67 self.exit() 

+
+ + + diff --git a/coverage/d_038a1401f996c67d_GraphML_py.html b/coverage/d_038a1401f996c67d_GraphML_py.html new file mode 100644 index 000000000..d7cb813e9 --- /dev/null +++ b/coverage/d_038a1401f996c67d_GraphML_py.html @@ -0,0 +1,232 @@ + + + + + Coverage for pyVHDLParser/CLI/GraphML.py: 0% + + + + + +
+
+

+ Coverage for pyVHDLParser/CLI/GraphML.py: + 0% +

+ +

+ 109 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1from pyTooling.Graph import Graph, Subgraph, Vertex 

+

2from pyTooling.Graph.GraphML import GraphMLDocument 

+

3from pyVHDLParser.Groups import Group 

+

4 

+

5from pyVHDLParser.Blocks import Block 

+

6 

+

7from pyVHDLParser.Token import Token 

+

8 

+

9 

+

10class GraphML: 

+

11 _graph: Graph 

+

12 

+

13 def __init__(self): 

+

14 self._graph = Graph(name="Streams") 

+

15 

+

16 def AddTokenStream(self, firstToken: Token): 

+

17 tokenStreamSubgraph = Subgraph(name="TokenStream", graph=self._graph) 

+

18 

+

19 firstVertex = Vertex(vertexID=id(firstToken), value=f"{firstToken!s}", subgraph=tokenStreamSubgraph) 

+

20 firstVertex["order"] = 0 

+

21 firstVertex["kind"] = type(firstToken).__name__ 

+

22 

+

23 tokenIterator = firstToken.GetIterator(inclusiveStopToken=False) 

+

24 for tokenID, token in enumerate(tokenIterator, start=1): 

+

25 vertex = Vertex(vertexID=id(token), value=f"{token!s}", subgraph=tokenStreamSubgraph) 

+

26 vertex["order"] = tokenID 

+

27 vertex["kind"] = type(token).__name__ 

+

28 

+

29 tokenIterator = token.GetIterator() 

+

30 lastToken = next(tokenIterator) 

+

31 lastVertex = Vertex(vertexID=id(lastToken), value=f"{lastToken!s}", subgraph=tokenStreamSubgraph) 

+

32 lastVertex["order"] = tokenID + 1 

+

33 lastVertex["kind"] = type(lastToken).__name__ 

+

34 

+

35 firstVertex.EdgeToVertex(tokenStreamSubgraph._verticesWithID[id(firstToken.NextToken)], edgeID=f"n0_next") 

+

36 tokenIterator = firstToken.GetIterator(inclusiveStopToken=False) 

+

37 for tokenID, token in enumerate(tokenIterator, start=1): 

+

38 vertex = tokenStreamSubgraph._verticesWithID[id(token)] 

+

39 vertex.EdgeToVertex(tokenStreamSubgraph._verticesWithID[id(token.PreviousToken)], edgeID=f"n{tokenID}_prev") 

+

40 vertex.EdgeToVertex(tokenStreamSubgraph._verticesWithID[id(token.NextToken)], edgeID=f"n{tokenID}_next") 

+

41 tokenIterator = token.GetIterator() 

+

42 lastToken = next(tokenIterator) 

+

43 lastVertex = tokenStreamSubgraph._verticesWithID[id(lastToken)] 

+

44 lastVertex.EdgeToVertex(tokenStreamSubgraph._verticesWithID[id(lastToken.PreviousToken)], edgeID=f"n{tokenID + 1}_prev") 

+

45 

+

46 return tokenStreamSubgraph 

+

47 

+

48 def AddBlockStream(self, firstBlock: Block, tokenStreamSubgraph: Subgraph): 

+

49 blockStreamSubgraph = Subgraph(name="BlockStream", graph=self._graph) 

+

50 

+

51 firstVertex = Vertex(vertexID=id(firstBlock), value=f"{firstBlock}", subgraph=blockStreamSubgraph) 

+

52 firstVertex["order"] = 0 

+

53 firstVertex["kind"] = type(firstBlock).__name__ 

+

54 firstLink = firstVertex.LinkToVertex(tokenStreamSubgraph._verticesWithID[id(firstBlock.StartToken)]) 

+

55 firstLink["kind"] = "block2token" 

+

56 

+

57 blockIterator = firstBlock.GetIterator(inclusiveStopBlock=False) 

+

58 for blockID, block in enumerate(blockIterator, start=1): 

+

59 vertex = Vertex(vertexID=id(block), value=f"{block!s}", subgraph=blockStreamSubgraph) 

+

60 vertex["order"] = blockID 

+

61 vertex["kind"] = type(block).__name__ 

+

62 startTokenLink = vertex.LinkToVertex(tokenStreamSubgraph._verticesWithID[id(block.StartToken)]) 

+

63 startTokenLink["kind"] = "block2token" 

+

64 if block.EndToken is not block.StartToken: 

+

65 endTokenLink = vertex.LinkToVertex(tokenStreamSubgraph._verticesWithID[id(block.EndToken)]) 

+

66 endTokenLink["kind"] = "block2token" 

+

67 

+

68 blockIterator = block.GetIterator() 

+

69 lastBlock = next(blockIterator) 

+

70 lastVertex = Vertex(vertexID=id(lastBlock), value=f"{lastBlock}", subgraph=blockStreamSubgraph) 

+

71 lastVertex["order"] = blockID + 1 

+

72 lastVertex["kind"] = type(lastBlock).__name__ 

+

73 lastLink = lastVertex.LinkToVertex(tokenStreamSubgraph._verticesWithID[id(lastBlock.StartToken)]) 

+

74 lastLink["kind"] = "block2token" 

+

75 

+

76 firstVertex.EdgeToVertex(blockStreamSubgraph._verticesWithID[id(firstBlock.NextBlock)], edgeID=f"n0_next") 

+

77 blockIterator = firstBlock.GetIterator(inclusiveStopBlock=False) 

+

78 for blockID, block in enumerate(blockIterator, start=1): 

+

79 vertex = blockStreamSubgraph._verticesWithID[id(block)] 

+

80 vertex.EdgeToVertex(blockStreamSubgraph._verticesWithID[id(block.PreviousBlock)], edgeID=f"n{blockID}_prev") 

+

81 vertex.EdgeToVertex(blockStreamSubgraph._verticesWithID[id(block.NextBlock)], edgeID=f"n{blockID}_next") 

+

82 blockIterator = block.GetIterator() 

+

83 lastBlock = next(blockIterator) 

+

84 lastVertex = blockStreamSubgraph._verticesWithID[id(lastBlock)] 

+

85 lastVertex.EdgeToVertex(blockStreamSubgraph._verticesWithID[id(lastBlock.PreviousBlock)], edgeID=f"n{blockID + 1}_prev") 

+

86 

+

87 return blockStreamSubgraph 

+

88 

+

89 def AddGroupStream(self, firstGroup: Group, blockStreamSubgraph: Subgraph): 

+

90 groupStreamSubgraph = Subgraph(name="GroupStream", graph=self._graph) 

+

91 

+

92 firstVertex = Vertex(vertexID=id(firstGroup), value=f"{firstGroup}", subgraph=groupStreamSubgraph) 

+

93 firstVertex["order"] = 0 

+

94 firstVertex["kind"] = type(firstGroup).__name__ 

+

95 firstLink = firstVertex.LinkToVertex(blockStreamSubgraph._verticesWithID[id(firstGroup.StartToken)]) 

+

96 firstLink["kind"] = "group2block" 

+

97 

+

98 groupIterator = firstGroup.GetIterator(inclusiveStopBlock=False) 

+

99 for groupID, group in enumerate(groupIterator, start=1): 

+

100 vertex = Vertex(vertexID=id(group), value=f"{group!s}", subgraph=groupStreamSubgraph) 

+

101 vertex["order"] = groupID 

+

102 vertex["kind"] = type(group).__name__ 

+

103 startBlockLink = vertex.LinkToVertex(blockStreamSubgraph._verticesWithID[id(group.StartToken)]) 

+

104 startBlockLink["kind"] = "group2block" 

+

105 if group.EndToken is not group.StartToken: 

+

106 endBlockLink = vertex.LinkToVertex(blockStreamSubgraph._verticesWithID[id(group.EndToken)]) 

+

107 endBlockLink["kind"] = "group2block" 

+

108 

+

109 groupIterator = group.GetIterator() 

+

110 lastGroup = next(groupIterator) 

+

111 lastVertex = Vertex(vertexID=id(lastGroup), value=f"{lastGroup}", subgraph=groupStreamSubgraph) 

+

112 lastVertex["order"] = groupID + 1 

+

113 lastVertex["kind"] = type(lastGroup).__name__ 

+

114 lastLink = lastVertex.LinkToVertex(blockStreamSubgraph._verticesWithID[id(lastGroup.StartToken)]) 

+

115 lastLink["kind"] = "group2block" 

+

116 

+

117 firstVertex.EdgeToVertex(groupStreamSubgraph._verticesWithID[id(firstGroup.NextBlock)], edgeID=f"n0_next") 

+

118 groupIterator = firstGroup.GetIterator(inclusiveStopBlock=False) 

+

119 for groupID, group in enumerate(groupIterator, start=1): 

+

120 vertex = groupStreamSubgraph._verticesWithID[id(group)] 

+

121 vertex.EdgeToVertex(groupStreamSubgraph._verticesWithID[id(group.PreviousBlock)], edgeID=f"n{groupID}_prev") 

+

122 vertex.EdgeToVertex(groupStreamSubgraph._verticesWithID[id(group.NextBlock)], edgeID=f"n{groupID}_next") 

+

123 groupIterator = group.GetIterator() 

+

124 lastGroup = next(groupIterator) 

+

125 lastVertex = groupStreamSubgraph._verticesWithID[id(lastGroup)] 

+

126 lastVertex.EdgeToVertex(groupStreamSubgraph._verticesWithID[id(lastGroup.PreviousBlock)], edgeID=f"n{groupID + 1}_prev") 

+

127 

+

128 return groupStreamSubgraph 

+

129 

+

130 def WriteDocument(self, path): 

+

131 graphMLDocument = GraphMLDocument("Streams") 

+

132 graphMLDocument.FromGraph(self._graph) 

+

133 graphMLDocument.WriteToFile(path) 

+
+ + + diff --git a/coverage/d_038a1401f996c67d_Group_py.html b/coverage/d_038a1401f996c67d_Group_py.html new file mode 100644 index 000000000..277935499 --- /dev/null +++ b/coverage/d_038a1401f996c67d_Group_py.html @@ -0,0 +1,231 @@ + + + + + Coverage for pyVHDLParser/CLI/Group.py: 0% + + + + + +
+
+

+ Coverage for pyVHDLParser/CLI/Group.py: + 0% +

+ +

+ 79 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pathlib import Path 

+

31 

+

32from pyAttributes.ArgParseAttributes import CommandAttribute 

+

33 

+

34from .GraphML import GraphML 

+

35from ..Base import ParserException 

+

36from ..Token import CharacterToken, SpaceToken, WordToken, LinebreakToken, CommentToken, IndentationToken 

+

37from ..Token.Parser import Tokenizer 

+

38from ..Token.Keywords import BoundaryToken, EndToken, KeywordToken, DelimiterToken 

+

39from ..Blocks import TokenToBlockParser 

+

40from ..Groups import BlockToGroupParser, StartOfDocumentGroup 

+

41 

+

42from . import FrontEndProtocol, WithTokensAttribute, WithBlocksAttribute, FilenameAttribute 

+

43 

+

44 

+

45class GroupStreamHandlers: 

+

46 # ---------------------------------------------------------------------------- 

+

47 # create the sub-parser for the "groupstreaming" command 

+

48 # ---------------------------------------------------------------------------- 

+

49 @CommandAttribute("group-stream", help="Create a stream of group objects.", description="Create a stream of group objects.") 

+

50 @WithTokensAttribute() 

+

51 @WithBlocksAttribute() 

+

52 @FilenameAttribute() 

+

53 def HandleGroupStreaming(self : FrontEndProtocol, args): 

+

54 self.PrintHeadline() 

+

55 

+

56 file = Path(args.Filename) 

+

57 

+

58 if not file.exists(): 

+

59 print("File '{0!s}' does not exist.".format(file)) 

+

60 

+

61 with file.open('r') as fileHandle: 

+

62 content = fileHandle.read() 

+

63 

+

64 tokenStream = Tokenizer.GetVHDLTokenizer(content) 

+

65 blockStream = TokenToBlockParser(tokenStream)() 

+

66 groupStream = BlockToGroupParser(blockStream)() 

+

67 

+

68 groupIterator = iter(groupStream) 

+

69 firstGroup = next(groupIterator) 

+

70 

+

71 try: 

+

72 while next(groupIterator): 

+

73 pass 

+

74 except StopIteration: 

+

75 pass 

+

76 

+

77 if isinstance(firstGroup, StartOfDocumentGroup): 

+

78 print("{YELLOW}{group!r}{NOCOLOR}".format(block=firstGroup, **self.Foreground)) 

+

79 print(" {YELLOW}{block!r}{NOCOLOR}".format(block=firstGroup.StartBlock, **self.Foreground)) 

+

80 print(" {YELLOW}{token!r}{NOCOLOR}".format(token=firstGroup.StartBlock.StartToken, **self.Foreground)) 

+

81 

+

82 buffered = True 

+

83 if buffered: 

+

84 self.WriteVerbose("Reading and buffering tokens...") 

+

85 try: 

+

86 tokenStream = [token for token in Tokenizer.GetVHDLTokenizer(content)] 

+

87 except ParserException as ex: 

+

88 self.WriteError("{RED}ERROR: {0!s}{NOCOLOR}".format(ex, **self.Foreground)) 

+

89 except NotImplementedError as ex: 

+

90 print("{RED}NotImplementedError: {0!s}{NOCOLOR}".format(ex, **self.Foreground)) 

+

91 

+

92 self.WriteVerbose("Reading and buffering blocks...") 

+

93 try: 

+

94 blockStream = [block for block in TokenToBlockParser(tokenStream)()] 

+

95 except ParserException as ex: 

+

96 print("{RED}ERROR: {0!s}{NOCOLOR}".format(ex, **self.Foreground)) 

+

97 except NotImplementedError as ex: 

+

98 print("{RED}NotImplementedError: {0!s}{NOCOLOR}".format(ex, **self.Foreground)) 

+

99 else: 

+

100 tokenStream = Tokenizer.GetVHDLTokenizer(content) 

+

101 blockStream = TokenToBlockParser(tokenStream)() 

+

102 

+

103 self.WriteVerbose("Transforming blocks to groups...") 

+

104 groupStream = BlockToGroupParser(blockStream)() 

+

105 

+

106 try: 

+

107 for group in groupStream: 

+

108 print("{CYAN}{group}{NOCOLOR}".format(group=group, **self.Foreground)) 

+

109 for block in group: 

+

110 if isinstance(block, (IndentationToken, LinebreakToken, BoundaryToken, DelimiterToken, EndToken)): 

+

111 print("{DARK_GRAY} {block}{NOCOLOR}".format(block=block, **self.Foreground)) 

+

112 elif isinstance(block, (CommentToken)): 

+

113 print("{DARK_GREEN} {block}{NOCOLOR}".format(block=block, **self.Foreground)) 

+

114 elif isinstance(block, KeywordToken): 

+

115 print("{DARK_CYAN} {block}{NOCOLOR}".format(block=block, **self.Foreground)) 

+

116 elif isinstance(block, (WordToken, SpaceToken, CharacterToken)): 

+

117 print("{DARK_GREEN} {block}{NOCOLOR}".format(block=block, **self.Foreground)) 

+

118 else: 

+

119 print("{YELLOW} {block}{NOCOLOR}".format(block=block, **self.Foreground)) 

+

120 

+

121 except ParserException as ex: 

+

122 print("{RED}ERROR: {0!s}{NOCOLOR}".format(ex, **self.Foreground)) 

+

123 except NotImplementedError as ex: 

+

124 print("{RED}NotImplementedError: {0!s}{NOCOLOR}".format(ex, **self.Foreground)) 

+

125 

+

126 exporter = GraphML() 

+

127 tokenStreamSubgraph = exporter.AddTokenStream(firstBlock.StartToken) 

+

128 blockStreamSubgraph = exporter.AddBlockStream(firstBlock, tokenStreamSubgraph) 

+

129 blockStreamSubgraph = exporter.AddGroupStream(firstBlock, blockStreamSubgraph) 

+

130 exporter.WriteDocument(Path.cwd() / "temp/BlockStream.graphml") 

+

131 

+

132 self.exit() 

+
+ + + diff --git a/coverage/d_038a1401f996c67d_Token_py.html b/coverage/d_038a1401f996c67d_Token_py.html new file mode 100644 index 000000000..e244a1012 --- /dev/null +++ b/coverage/d_038a1401f996c67d_Token_py.html @@ -0,0 +1,292 @@ + + + + + Coverage for pyVHDLParser/CLI/Token.py: 0% + + + + + +
+
+

+ Coverage for pyVHDLParser/CLI/Token.py: + 0% +

+ +

+ 120 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pathlib import Path 

+

31 

+

32from pyAttributes.ArgParseAttributes import CommandAttribute 

+

33from pyTooling.Graph import Graph, Vertex, Subgraph 

+

34from pyTooling.Graph.GraphML import GraphMLDocument 

+

35 

+

36from pyVHDLParser.Base import ParserException 

+

37from pyVHDLParser.CLI.GraphML import GraphML 

+

38from pyVHDLParser.Token import StartOfDocumentToken, EndOfDocumentToken, CharacterToken, SpaceToken, WordToken, LinebreakToken, CommentToken, IndentationToken 

+

39from pyVHDLParser.Token import CharacterTranslation, SingleLineCommentToken 

+

40from pyVHDLParser.Token.Parser import Tokenizer 

+

41 

+

42from pyVHDLParser.CLI import FrontEndProtocol, FilenameAttribute, translate 

+

43 

+

44 

+

45class TokenStreamHandlers: 

+

46 # ---------------------------------------------------------------------------- 

+

47 # create the sub-parser for the "token-stream" command 

+

48 # ---------------------------------------------------------------------------- 

+

49 @CommandAttribute("token-stream", help="Create a stream of token objects.", description="Create a stream of token objects.") 

+

50 @FilenameAttribute() 

+

51 def HandleTokenize(self: FrontEndProtocol, args): 

+

52 self.PrintHeadline() 

+

53 

+

54 file = Path(args.Filename) 

+

55 

+

56 if not file.exists(): 

+

57 print(f"File '{file}' does not exist.") 

+

58 

+

59 with file.open('r') as fileHandle: 

+

60 content = fileHandle.read() 

+

61 

+

62 tokenStream = Tokenizer.GetVHDLTokenizer(content) 

+

63 tokenIterator = iter(tokenStream) 

+

64 firstToken = next(tokenIterator) 

+

65 

+

66 try: 

+

67 while next(tokenIterator): 

+

68 pass 

+

69 except StopIteration: 

+

70 pass 

+

71 

+

72 if isinstance(firstToken, StartOfDocumentToken): 

+

73 print("{YELLOW}{token!r}{NOCOLOR}".format(token=firstToken, **self.Foreground)) 

+

74 

+

75 try: 

+

76 tokenIterator = firstToken.GetIterator(inclusiveStopToken=False) 

+

77 for token in tokenIterator: 

+

78 if isinstance(token, (LinebreakToken, SpaceToken, IndentationToken)): 

+

79 print("{DARK_GRAY}{token!r}{NOCOLOR}".format(token=token, **self.Foreground)) 

+

80 elif isinstance(token, CommentToken): 

+

81 print("{DARK_GREEN}{token!r}{NOCOLOR}".format(token=token, **self.Foreground)) 

+

82 elif isinstance(token, CharacterToken): 

+

83 print("{DARK_CYAN}{token!r}{NOCOLOR}".format(token=token, **self.Foreground)) 

+

84 elif isinstance(token, WordToken): 

+

85 print("{WHITE}{token!r}{NOCOLOR}".format(token=token, **self.Foreground)) 

+

86 else: 

+

87 print("{RED}{token!r}{NOCOLOR}".format(token=token, **self.Foreground)) 

+

88 

+

89 tokenIterator = token.GetIterator() 

+

90 lastToken = next(tokenIterator) 

+

91 if isinstance(lastToken, EndOfDocumentToken): 

+

92 print("{YELLOW}{token!r}{NOCOLOR}".format(token=lastToken, **self.Foreground)) 

+

93 

+

94 except ParserException as ex: 

+

95 print("{RED}ERROR: {0!s}{NOCOLOR}".format(ex, **self.Foreground)) 

+

96 except NotImplementedError as ex: 

+

97 print("{RED}NotImplementedError: {0!s}{NOCOLOR}".format(ex, **self.Foreground)) 

+

98 

+

99 exporter = GraphML() 

+

100 exporter.AddTokenStream(firstToken) 

+

101 exporter.WriteDocument(Path.cwd() / "temp/TokenStream.graphml") 

+

102 

+

103 self.exit() 

+

104 

+

105 # ---------------------------------------------------------------------------- 

+

106 # create the sub-parser for the "token-check" command 

+

107 # ---------------------------------------------------------------------------- 

+

108 @CommandAttribute("token-check", help="Check a stream of token objects.", description="Generates and checks a stream of token objects for correct double-pointers.") 

+

109 @FilenameAttribute() 

+

110 def HandleCheckTokenize(self: FrontEndProtocol, args): 

+

111 self.PrintHeadline() 

+

112 

+

113 file = Path(args.Filename) 

+

114 

+

115 if not file.exists(): 

+

116 print("File '{0!s}' does not exist.".format(file)) 

+

117 

+

118 with file.open('r') as fileHandle: 

+

119 content = fileHandle.read() 

+

120 

+

121 vhdlTokenStream = Tokenizer.GetVHDLTokenizer(content) 

+

122 

+

123 try: 

+

124 tokenIterator = iter(vhdlTokenStream) 

+

125 firstToken = next(tokenIterator) 

+

126 

+

127 try: 

+

128 while next(tokenIterator): 

+

129 pass 

+

130 except StopIteration: 

+

131 pass 

+

132 

+

133 if not isinstance(firstToken, StartOfDocumentToken): 

+

134 print("{RED}First token is not StartOfDocumentToken: {token}{NOCOLOR}".format(token=firstToken, **self.Foreground)) 

+

135 if firstToken.NextToken is None: 

+

136 print("{RED}First token has an open end.{NOCOLOR}".format(**self.Foreground)) 

+

137 

+

138 tokenIterator = firstToken.GetIterator() 

+

139 lastToken = None 

+

140 token = firstToken 

+

141 

+

142 for newToken in tokenIterator: 

+

143 if token.NextToken is None: 

+

144 print("{RED}Token has an open end.{NOCOLOR}".format(**self.Foreground)) 

+

145 print("{RED} Token: {token}{NOCOLOR}".format(token=token, **self.Foreground)) 

+

146 elif (token is not firstToken) and (lastToken.NextToken is not token): 

+

147 print("{RED}Last token is not connected to the current token.{NOCOLOR}".format(**self.Foreground)) 

+

148 print("{RED} Curr: {token}{NOCOLOR}".format(token=token, **self.Foreground)) 

+

149 print("{DARK_RED} Prev: {token}{NOCOLOR}".format(token=token.PreviousToken, **self.Foreground)) 

+

150 print("{RED} Last: {token}{NOCOLOR}".format(token=lastToken, **self.Foreground)) 

+

151 print("{RED} Next: {token}{NOCOLOR}".format(token=lastToken.NextToken, **self.Foreground)) 

+

152 if lastToken.NextToken is None: 

+

153 print("{DARK_RED} Next: {token}{NOCOLOR}".format(token="--------", **self.Foreground)) 

+

154 else: 

+

155 print( 

+

156 "{DARK_RED} Next: {token}{NOCOLOR}".format(token=lastToken.NextToken.NextToken, **self.Foreground)) 

+

157 if token.PreviousToken is None: 

+

158 print("{DARK_RED} Prev: {token}{NOCOLOR}".format(token="--------", **self.Foreground)) 

+

159 else: 

+

160 print("{DARK_RED} Prev: {token}{NOCOLOR}".format(token=token.PreviousToken.PreviousToken, 

+

161 **self.Foreground)) 

+

162 elif token.PreviousToken is not lastToken: 

+

163 print("{RED}Current token is not connected to lastToken.{NOCOLOR}".format(**self.Foreground)) 

+

164 print("{RED} Curr: {token}{NOCOLOR}".format(token=token, **self.Foreground)) 

+

165 print("{RED} Prev: {token}{NOCOLOR}".format(token=token.PreviousToken, **self.Foreground)) 

+

166 print("{RED} Last: {token}{NOCOLOR}".format(token=lastToken, **self.Foreground)) 

+

167 print("{DARK_RED} Next: {token}{NOCOLOR}".format(token=lastToken.NextToken, **self.Foreground)) 

+

168 

+

169 lastToken = token 

+

170 token = newToken 

+

171 

+

172 if isinstance(newToken, EndOfDocumentToken): 

+

173 print("{GREEN}No double-linking errors in token stream found.{NOCOLOR}".format(**self.Foreground)) 

+

174 break 

+

175 else: 

+

176 print("{RED}No EndOfDocumentToken found.{NOCOLOR}".format(**self.Foreground)) 

+

177 

+

178 if not isinstance(token, EndOfDocumentToken): 

+

179 print( 

+

180 "{RED}Last token is not EndOfDocumentToken: {token}{NOCOLOR}".format(token=lastToken, **self.Foreground)) 

+

181 elif token.PreviousToken is not lastToken: 

+

182 print("{RED}EndOfDocumentToken is not connected to lastToken.{NOCOLOR}".format(**self.Foreground)) 

+

183 print("{RED} Curr: {token}{NOCOLOR}".format(token=token, **self.Foreground)) 

+

184 print("{RED} Prev: {token}{NOCOLOR}".format(token=token.PreviousToken, **self.Foreground)) 

+

185 print("{RED} Last: {token}{NOCOLOR}".format(token=lastToken, **self.Foreground)) 

+

186 print("{DARK_RED} Next: {token}{NOCOLOR}".format(token=lastToken.NextToken, **self.Foreground)) 

+

187 

+

188 except ParserException as ex: 

+

189 print("{RED}ERROR: {0!s}{NOCOLOR}".format(ex, **self.Foreground)) 

+

190 except NotImplementedError as ex: 

+

191 print("{RED}NotImplementedError: {0!s}{NOCOLOR}".format(ex, **self.Foreground)) 

+

192 

+

193 self.exit() 

+
+ + + diff --git a/coverage/d_038a1401f996c67d_VHDLParser_py.html b/coverage/d_038a1401f996c67d_VHDLParser_py.html new file mode 100644 index 000000000..1f7163814 --- /dev/null +++ b/coverage/d_038a1401f996c67d_VHDLParser_py.html @@ -0,0 +1,338 @@ + + + + + Coverage for pyVHDLParser/CLI/VHDLParser.py: 0% + + + + + +
+
+

+ Coverage for pyVHDLParser/CLI/VHDLParser.py: + 0% +

+ +

+ 109 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from argparse import RawDescriptionHelpFormatter 

+

31from platform import system as platform_system 

+

32from textwrap import dedent, wrap 

+

33from typing import NoReturn 

+

34 

+

35from pyTooling.Exceptions import ExceptionBase 

+

36from pyTooling.Decorators import export 

+

37from pyTooling.TerminalUI import LineTerminal, Severity 

+

38from pyAttributes.ArgParseAttributes import ArgParseMixin, DefaultAttribute, CommandAttribute, ArgumentAttribute, CommonSwitchArgumentAttribute 

+

39 

+

40from pyVHDLParser import __author__, __license__, __version__, __copyright__ 

+

41from pyVHDLParser.Blocks import MetaBlock 

+

42 

+

43from pyVHDLParser.CLI.Token import TokenStreamHandlers 

+

44from pyVHDLParser.CLI.Block import BlockStreamHandlers 

+

45from pyVHDLParser.CLI.Group import GroupStreamHandlers 

+

46from pyVHDLParser.CLI.CodeDOM import CodeDOMHandlers 

+

47from pyVHDLParser.CLI.ANTLR import ANTLRHandlers 

+

48 

+

49 

+

50@export 

+

51def printImportError(ex) -> NoReturn: 

+

52 # TODO: use pyTooling Platform 

+

53 platform = platform_system() 

+

54 print("IMPORT ERROR: One or more Python packages are not available in your environment.") 

+

55 print("Missing package: '{0}'\n".format(ex.name)) 

+

56 if platform == "Windows": 

+

57 print("Run: 'py.exe -3 -m pip install -r requirements.txt'\n") 

+

58 elif platform == "Linux": 

+

59 print("Run: 'python3 -m pip install -r requirements.txt'\n") 

+

60 

+

61 exit(1) 

+

62 

+

63 

+

64@export 

+

65class Application(LineTerminal, ArgParseMixin, TokenStreamHandlers, BlockStreamHandlers, GroupStreamHandlers, CodeDOMHandlers, ANTLRHandlers): 

+

66 HeadLine = "pyVHDLParser - Test Application" 

+

67 

+

68 # load platform information (Windows, Linux, Darwin, ...) 

+

69 # TODO: use pyTooling Platform 

+

70 __PLATFORM = platform_system() 

+

71 

+

72 def __init__(self): 

+

73 super().__init__() 

+

74 

+

75 # Late-initialize Block classes 

+

76 # -------------------------------------------------------------------------- 

+

77 for block in MetaBlock.BLOCKS: 

+

78 try: 

+

79 block.__cls_init__() 

+

80 except AttributeError: 

+

81 pass 

+

82 

+

83 # Call the constructor of the ArgParseMixin 

+

84 # -------------------------------------------------------------------------- 

+

85 textWidth = min(self.Width, 160) 

+

86 description = dedent("""\ 

+

87 Test application to test pyVHDLParser capabilities. 

+

88 """) 

+

89 epilog = "\n".join(wrap(dedent("""\ 

+

90 pyVHDLParser is a streaming parser to read and understand VHDL code equipped with comments for documentation extraction. 

+

91 """), textWidth, replace_whitespace=False)) 

+

92 

+

93 class HelpFormatter(RawDescriptionHelpFormatter): 

+

94 def __init__(self, *args, **kwargs): 

+

95 kwargs['max_help_position'] = 30 

+

96 kwargs['width'] = textWidth 

+

97 super().__init__(*args, **kwargs) 

+

98 

+

99 ArgParseMixin.__init__( 

+

100 self, 

+

101 description=description, 

+

102 epilog=epilog, 

+

103 formatter_class=HelpFormatter, 

+

104 add_help=False 

+

105 ) 

+

106 

+

107 # Change error and warning reporting 

+

108 # -------------------------------------------------------------------------- 

+

109 self._LOG_MESSAGE_FORMAT__[Severity.Fatal] = "{DARK_RED}[FATAL] {message}{NOCOLOR}" 

+

110 self._LOG_MESSAGE_FORMAT__[Severity.Error] = "{RED}[ERROR] {message}{NOCOLOR}" 

+

111 self._LOG_MESSAGE_FORMAT__[Severity.Warning] = "{YELLOW}[WARNING] {message}{NOCOLOR}" 

+

112 self._LOG_MESSAGE_FORMAT__[Severity.Normal] = "{GRAY}{message}{NOCOLOR}" 

+

113 

+

114 # class properties 

+

115 # ============================================================================ 

+

116 @property 

+

117 def Platform(self): 

+

118 return self.__PLATFORM 

+

119 

+

120 def PrintHeadline(self): 

+

121 self.WriteNormal(dedent("""\ 

+

122 {HEADLINE}{line} 

+

123 {headline: ^80s} 

+

124 {line}""").format(line="=" * 80, headline=self.HeadLine, **LineTerminal.Foreground)) 

+

125 

+

126 # ============================================================================ 

+

127 # Common commands 

+

128 # ============================================================================ 

+

129 # common arguments valid for all commands 

+

130 # ---------------------------------------------------------------------------- 

+

131 @CommonSwitchArgumentAttribute("-d", "--debug", dest="debug", help="Enable debug mode.") 

+

132 @CommonSwitchArgumentAttribute("-v", "--verbose", dest="verbose", help="Print out detailed messages.") 

+

133 @CommonSwitchArgumentAttribute("-q", "--quiet", dest="quiet", help="Reduce messages to a minimum.") 

+

134 def Run(self): 

+

135 ArgParseMixin.Run(self) 

+

136 

+

137 @DefaultAttribute() 

+

138 def HandleDefault(self, _): 

+

139 self.PrintHeadline() 

+

140 self.MainParser.print_help() 

+

141 

+

142 self.WriteNormal("") 

+

143 self.exit() 

+

144 

+

145 # ---------------------------------------------------------------------------- 

+

146 # create the sub-parser for the "help" command 

+

147 # ---------------------------------------------------------------------------- 

+

148 @CommandAttribute("help", help="Display help page(s) for the given command name.") 

+

149 @ArgumentAttribute(metavar="Command", dest="Command", type=str, nargs="?", help="Print help page(s) for a command.") 

+

150 def HandleHelp(self, args): 

+

151 self.PrintHeadline() 

+

152 

+

153 if args.Command is None: 

+

154 self.MainParser.print_help() 

+

155 elif args.Command == "help": 

+

156 self.WriteError("This is a recursion ...") 

+

157 else: 

+

158 try: 

+

159 self.SubParsers[args.Command].print_help() 

+

160 except KeyError: 

+

161 self.WriteError("Command {0} is unknown.".format(args.Command)) 

+

162 

+

163 self.WriteNormal("") 

+

164 self.exit() 

+

165 

+

166 # ---------------------------------------------------------------------------- 

+

167 # create the sub-parser for the "version" command 

+

168 # ---------------------------------------------------------------------------- 

+

169 @CommandAttribute("version", help="Display tool and version information.") 

+

170 def HandleInfo(self, args): 

+

171 self.PrintHeadline() 

+

172 

+

173 copyrights = __copyright__.split("\n", 1) 

+

174 self.WriteNormal("Copyright: {0}".format(copyrights[0])) 

+

175 for copyright in copyrights[1:]: 

+

176 self.WriteNormal(" {0}".format(copyright)) 

+

177 self.WriteNormal("License: {0}".format(__license__)) 

+

178 authors = __author__.split(", ") 

+

179 self.WriteNormal("Authors: {0}".format(authors[0])) 

+

180 for author in authors[1:]: 

+

181 self.WriteNormal(" {0}".format(author)) 

+

182 self.WriteNormal("Version: {0}".format(__version__)) 

+

183 self.exit() 

+

184 

+

185 

+

186# main program 

+

187def main(): # mccabe:disable=MC0001 

+

188 """This is the entry point for pyVHDLParser written as a function. 

+

189 

+

190 1. It extracts common flags from the script's arguments list, before :py:class:`~argparse.ArgumentParser` is fully loaded. 

+

191 2. It creates an instance of VHDLParser and hands over to a class based execution. 

+

192 All is wrapped in a big ``try..except`` block to catch every unhandled exception. 

+

193 3. Shutdown the script and return its exit code. 

+

194 """ 

+

195 from sys import argv as sys_argv 

+

196 

+

197 try: 

+

198 # handover to a class instance 

+

199 app = Application() # debug, verbose, quiet) 

+

200 app.Configure( 

+

201 verbose="-v" in sys_argv, 

+

202 debug="-d" in sys_argv, 

+

203 quiet="-q" in sys_argv 

+

204 ) 

+

205 app.Run() 

+

206 app.exit() 

+

207 

+

208 # except (CommonException, ConfigurationException) as ex: 

+

209 # print("{RED}ERROR:{NOCOLOR} {message}".format(message=ex.message, **Init.Foreground)) 

+

210 # cause = ex.__cause__ 

+

211 # if isinstance(cause, FileNotFoundError): 

+

212 # print("{YELLOW} FileNotFound:{NOCOLOR} '{cause}'".format(cause=str(cause), **Init.Foreground)) 

+

213 # elif isinstance(cause, NotADirectoryError): 

+

214 # print("{YELLOW} NotADirectory:{NOCOLOR} '{cause}'".format(cause=str(cause), **Init.Foreground)) 

+

215 # elif isinstance(cause, ParserException): 

+

216 # print("{YELLOW} ParserException:{NOCOLOR} {cause}".format(cause=str(cause), **Init.Foreground)) 

+

217 # cause = cause.__cause__ 

+

218 # if cause is not None: 

+

219 # print("{YELLOW} {name}:{NOCOLOR} {cause}".format(name=cause.__class__.__name__, cause= str(cause), **Init.Foreground)) 

+

220 # 

+

221 # if not (verbose or debug): 

+

222 # print() 

+

223 # print("{CYAN} Use '-v' for verbose or '-d' for debug to print out extended messages.{NOCOLOR}".format(**Init.Foreground)) 

+

224 # LineTerminal.exit(1) 

+

225 

+

226 except ExceptionBase as ex: 

+

227 LineTerminal.printExceptionBase(ex) 

+

228 except NotImplementedError as ex: 

+

229 LineTerminal.printNotImplementedError(ex) 

+

230 # except ImportError as ex: 

+

231 # printImportError(ex) 

+

232 except Exception as ex: 

+

233 LineTerminal.printException(ex) 

+

234 

+

235 

+

236# entry point 

+

237if __name__ == "__main__": 

+

238 LineTerminal.versionCheck((3,8,0)) 

+

239 main() 

+
+ + + diff --git a/coverage/d_038a1401f996c67d___init___py.html b/coverage/d_038a1401f996c67d___init___py.html new file mode 100644 index 000000000..105760ad1 --- /dev/null +++ b/coverage/d_038a1401f996c67d___init___py.html @@ -0,0 +1,201 @@ + + + + + Coverage for pyVHDLParser/CLI/__init__.py: 0% + + + + + +
+
+

+ Coverage for pyVHDLParser/CLI/__init__.py: + 0% +

+ +

+ 31 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from typing import Protocol, Callable, Dict 

+

31 

+

32from pyAttributes import Attribute 

+

33from pyAttributes.ArgParseAttributes import ArgumentAttribute, SwitchArgumentAttribute 

+

34 

+

35from pyVHDLParser.Token import LinebreakToken, IndentationToken, CommentToken, StringLiteralToken 

+

36from pyVHDLParser.Token import IntegerLiteralToken, WordToken, Token, SpaceToken, CharacterToken 

+

37from pyVHDLParser.Token.Keywords import KeywordToken 

+

38 

+

39 

+

40class FilenameAttribute(Attribute): 

+

41 def __call__(self, func): 

+

42 self._AppendAttribute(func, ArgumentAttribute(metavar="filename", dest="Filename", type=str, help="The filename to parse.")) 

+

43 return func 

+

44 

+

45 

+

46class WithTokensAttribute(Attribute): 

+

47 def __call__(self, func): 

+

48 self._AppendAttribute(func, SwitchArgumentAttribute("-T", "--with-tokens", dest="withTokens", help="Display tokens in between.")) 

+

49 return func 

+

50 

+

51 

+

52class WithBlocksAttribute(Attribute): 

+

53 def __call__(self, func): 

+

54 self._AppendAttribute(func, SwitchArgumentAttribute("-B", "--with-blocks", dest="withBlocks", help="Display blocks in between.")) 

+

55 return func 

+

56 

+

57 

+

58class FrontEndProtocol(Protocol): 

+

59 # TerminalUI 

+

60 Foreground: Dict 

+

61 WriteError: Callable[[str], None] 

+

62 WriteWarning: Callable[[str], None] 

+

63 WriteQuiet: Callable[[str], None] 

+

64 WriteNormal: Callable[[str], None] 

+

65 WriteVerbose: Callable[[str], None] 

+

66 WriteDebug: Callable[[str], None] 

+

67 exit: Callable[[int], None] 

+

68 

+

69 # Frontend 

+

70 PrintHeadline: Callable 

+

71 

+

72 

+

73TOKENTYPE_TO_COLOR_TRANSLATION = { 

+

74 LinebreakToken: "black", 

+

75 IndentationToken: "grey", 

+

76 SpaceToken: "lightblue1", 

+

77 CharacterToken: "darkorange", 

+

78 CommentToken: "forestgreen", 

+

79 StringLiteralToken: "chocolate1", 

+

80 IntegerLiteralToken: "deepskyblue3", 

+

81 WordToken: "aquamarine3", 

+

82 KeywordToken: "dodgerblue4", 

+

83} 

+

84 

+

85 

+

86def translate(token: Token) -> str: 

+

87 return "crimson" 

+

88 

+

89 print(Token) 

+

90 if isinstance(token, Token): 

+

91 tokenCls = token.__class__ 

+

92 else: 

+

93 tokenCls = token 

+

94 

+

95 try: 

+

96 return TOKENTYPE_TO_COLOR_TRANSLATION[tokenCls] 

+

97 except KeyError: 

+

98 for key, color in TOKENTYPE_TO_COLOR_TRANSLATION.items(): 

+

99 if issubclass(tokenCls, key): 

+

100 return color 

+

101 else: 

+

102 return "crimson" 

+
+ + + diff --git a/coverage/d_04128728490d4342_Architecture_py.html b/coverage/d_04128728490d4342_Architecture_py.html new file mode 100644 index 000000000..6788d7f9b --- /dev/null +++ b/coverage/d_04128728490d4342_Architecture_py.html @@ -0,0 +1,353 @@ + + + + + Coverage for pyVHDLParser/Blocks/Structural/Architecture.py: 70% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/Structural/Architecture.py: + 70% +

+ +

+ 197 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Token import LinebreakToken, WordToken, SpaceToken, CommentToken, MultiLineCommentToken, IndentationToken, SingleLineCommentToken, ExtendedIdentifier 

+

33from pyVHDLParser.Token.Keywords import ArchitectureKeyword, IsKeyword, OfKeyword, BoundaryToken, IdentifierToken 

+

34from pyVHDLParser.Blocks import BlockParserException, Block, CommentBlock, TokenToBlockParser 

+

35from pyVHDLParser.Blocks.Common import LinebreakBlock, WhitespaceBlock 

+

36from pyVHDLParser.Blocks.Generic import ConcurrentBeginBlock, ConcurrentDeclarativeRegion 

+

37from pyVHDLParser.Blocks.Generic1 import EndBlock as EndBlockBase 

+

38 

+

39 

+

40@export 

+

41class EndBlock(EndBlockBase): 

+

42 KEYWORD = ArchitectureKeyword 

+

43 KEYWORD_IS_OPTIONAL = True 

+

44 EXPECTED_NAME = KEYWORD.__KEYWORD__ 

+

45 

+

46 

+

47@export 

+

48class BeginBlock(ConcurrentBeginBlock): 

+

49 END_BLOCK = EndBlock 

+

50 

+

51 

+

52@export 

+

53class DeclarativeRegion(ConcurrentDeclarativeRegion): 

+

54 BEGIN_BLOCK = BeginBlock 

+

55 END_BLOCK = EndBlock 

+

56 

+

57 

+

58@export 

+

59class NameBlock(Block): 

+

60 @classmethod 

+

61 def stateArchitectureKeyword(cls, parserState: TokenToBlockParser): 

+

62 token = parserState.Token 

+

63 if isinstance(token, SpaceToken): 

+

64 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

65 parserState.NextState = cls.stateWhitespace1 

+

66 return 

+

67 elif isinstance(token, (LinebreakToken, CommentToken)): 67 ↛ 75line 67 didn't jump to line 75, because the condition on line 67 was never false

+

68 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

69 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

70 _ = block(parserState.NewBlock, token) 

+

71 parserState.TokenMarker = None 

+

72 parserState.NextState = cls.stateWhitespace1 

+

73 return 

+

74 

+

75 raise BlockParserException("Expected whitespace after keyword ARCHITECTURE.", token) 

+

76 

+

77 @classmethod 

+

78 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

79 token = parserState.Token 

+

80 if isinstance(token, WordToken): 

+

81 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

82 parserState.NextState = cls.stateArchitectureName 

+

83 return 

+

84 elif isinstance(token, ExtendedIdentifier): 84 ↛ 85line 84 didn't jump to line 85, because the condition on line 84 was never true

+

85 parserState.NextState = cls.stateArchitectureName 

+

86 return 

+

87 elif isinstance(token, LinebreakToken): 87 ↛ 88line 87 didn't jump to line 88, because the condition on line 87 was never true

+

88 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

89 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

90 _ = LinebreakBlock(parserState.NewBlock, token) 

+

91 else: 

+

92 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

93 parserState.TokenMarker = None 

+

94 return 

+

95 elif isinstance(token, CommentToken): 

+

96 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

97 _ = CommentBlock(parserState.NewBlock, token) 

+

98 parserState.TokenMarker = None 

+

99 return 

+

100 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 100 ↛ 102line 100 didn't jump to line 102, because the condition on line 100 was never false

+

101 return 

+

102 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

103 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

104 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

105 parserState.TokenMarker = None 

+

106 return 

+

107 

+

108 raise BlockParserException("Expected architecture name (identifier).", token) 

+

109 

+

110 @classmethod 

+

111 def stateArchitectureName(cls, parserState: TokenToBlockParser): 

+

112 token = parserState.Token 

+

113 if isinstance(token, SpaceToken): 

+

114 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

115 parserState.NextState = cls.stateWhitespace2 

+

116 return 

+

117 elif isinstance(token, (LinebreakToken, CommentToken)): 117 ↛ 125line 117 didn't jump to line 125, because the condition on line 117 was never false

+

118 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

119 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

120 _ = block(parserState.NewBlock, token) 

+

121 parserState.TokenMarker = None 

+

122 parserState.NextState = cls.stateWhitespace2 

+

123 return 

+

124 

+

125 raise BlockParserException("Expected whitespace after architecture name.", token) 

+

126 

+

127 @classmethod 

+

128 def stateWhitespace2(cls, parserState: TokenToBlockParser): 

+

129 token = parserState.Token 

+

130 if isinstance(token, WordToken) and (token <= "of"): 

+

131 parserState.NewToken = OfKeyword(fromExistingToken=token) 

+

132 parserState.NextState = cls.stateOfKeyword 

+

133 return 

+

134 elif isinstance(token, LinebreakToken): 134 ↛ 135line 134 didn't jump to line 135, because the condition on line 134 was never true

+

135 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

136 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

137 _ = LinebreakBlock(parserState.NewBlock, token) 

+

138 else: 

+

139 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

140 parserState.TokenMarker = None 

+

141 return 

+

142 elif isinstance(token, CommentToken): 

+

143 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

144 _ = CommentBlock(parserState.NewBlock, token) 

+

145 parserState.TokenMarker = None 

+

146 return 

+

147 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 147 ↛ 149line 147 didn't jump to line 149, because the condition on line 147 was never false

+

148 return 

+

149 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

150 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

151 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

152 parserState.TokenMarker = None 

+

153 return 

+

154 

+

155 raise BlockParserException("Expected keyword IS after architecture name.", token) 

+

156 

+

157 @classmethod 

+

158 def stateOfKeyword(cls, parserState: TokenToBlockParser): 

+

159 token = parserState.Token 

+

160 if isinstance(token, SpaceToken): 

+

161 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

162 parserState.NextState = cls.stateWhitespace3 

+

163 return 

+

164 elif isinstance(token, (LinebreakToken, CommentToken)): 164 ↛ 172line 164 didn't jump to line 172, because the condition on line 164 was never false

+

165 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

166 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

167 _ = block(parserState.NewBlock, token) 

+

168 parserState.TokenMarker = None 

+

169 parserState.NextState = cls.stateWhitespace3 

+

170 return 

+

171 

+

172 raise BlockParserException("Expected whitespace after keyword ARCHITECTURE.", token) 

+

173 

+

174 @classmethod 

+

175 def stateWhitespace3(cls, parserState: TokenToBlockParser): 

+

176 token = parserState.Token 

+

177 if isinstance(token, WordToken): 

+

178 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

179 parserState.NextState = cls.stateEntityName 

+

180 return 

+

181 elif isinstance(token, ExtendedIdentifier): 181 ↛ 182line 181 didn't jump to line 182, because the condition on line 181 was never true

+

182 parserState.NextState = cls.stateEntityName 

+

183 return 

+

184 elif isinstance(token, LinebreakToken): 184 ↛ 185line 184 didn't jump to line 185, because the condition on line 184 was never true

+

185 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

186 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

187 _ = LinebreakBlock(parserState.NewBlock, token) 

+

188 else: 

+

189 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

190 parserState.TokenMarker = None 

+

191 return 

+

192 elif isinstance(token, CommentToken): 

+

193 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

194 _ = CommentBlock(parserState.NewBlock, token) 

+

195 parserState.TokenMarker = None 

+

196 return 

+

197 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 197 ↛ 199line 197 didn't jump to line 199, because the condition on line 197 was never false

+

198 return 

+

199 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

200 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

201 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

202 parserState.TokenMarker = None 

+

203 return 

+

204 

+

205 raise BlockParserException("Expected architecture name (identifier).", token) 

+

206 

+

207 @classmethod 

+

208 def stateEntityName(cls, parserState: TokenToBlockParser): 

+

209 token = parserState.Token 

+

210 if isinstance(token, SpaceToken): 

+

211 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

212 parserState.NextState = cls.stateWhitespace4 

+

213 return 

+

214 elif isinstance(token, (LinebreakToken, CommentToken)): 214 ↛ 222line 214 didn't jump to line 222, because the condition on line 214 was never false

+

215 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

216 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

217 _ = block(parserState.NewBlock, token) 

+

218 parserState.TokenMarker = None 

+

219 parserState.NextState = cls.stateWhitespace4 

+

220 return 

+

221 

+

222 raise BlockParserException("Expected whitespace after architecture name.", token) 

+

223 

+

224 @classmethod 

+

225 def stateWhitespace4(cls, parserState: TokenToBlockParser): 

+

226 token = parserState.Token 

+

227 if isinstance(token, WordToken) and (token <= "is"): 

+

228 parserState.NewToken = IsKeyword(fromExistingToken=token) 

+

229 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

230 parserState.TokenMarker = None 

+

231 parserState.NextState = DeclarativeRegion.stateDeclarativeRegion 

+

232 return 

+

233 elif isinstance(token, LinebreakToken): 233 ↛ 234line 233 didn't jump to line 234, because the condition on line 233 was never true

+

234 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

235 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

236 _ = LinebreakBlock(parserState.NewBlock, token) 

+

237 else: 

+

238 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

239 parserState.TokenMarker = None 

+

240 return 

+

241 elif isinstance(token, CommentToken): 

+

242 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

243 _ = CommentBlock(parserState.NewBlock, token) 

+

244 parserState.TokenMarker = None 

+

245 return 

+

246 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 246 ↛ 248line 246 didn't jump to line 248, because the condition on line 246 was never false

+

247 return 

+

248 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

249 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

250 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

251 parserState.TokenMarker = None 

+

252 return 

+

253 

+

254 raise BlockParserException("Expected keyword IS after architecture name.", token) 

+
+ + + diff --git a/coverage/d_04128728490d4342_Block_py.html b/coverage/d_04128728490d4342_Block_py.html new file mode 100644 index 000000000..62a357e8e --- /dev/null +++ b/coverage/d_04128728490d4342_Block_py.html @@ -0,0 +1,308 @@ + + + + + Coverage for pyVHDLParser/Blocks/Structural/Block.py: 0% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/Structural/Block.py: + 0% +

+ +

+ 162 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Token import CharacterToken, SpaceToken, WordToken, LinebreakToken, IndentationToken 

+

33from pyVHDLParser.Token.Keywords import BoundaryToken, IdentifierToken, EndToken 

+

34from pyVHDLParser.Token.Keywords import SignalKeyword, ConstantKeyword, VariableKeyword, SharedKeyword, ProcessKeyword, AssertKeyword, BlockKeyword 

+

35from pyVHDLParser.Token.Keywords import IsKeyword, EndKeyword, BlockKeyword, BeginKeyword 

+

36from pyVHDLParser.Blocks import Block, BlockParserException, TokenToBlockParser 

+

37from pyVHDLParser.Blocks.Common import LinebreakBlock, IndentationBlock, WhitespaceBlock 

+

38from pyVHDLParser.Blocks.Comment import SingleLineCommentBlock, MultiLineCommentBlock 

+

39from pyVHDLParser.Blocks.Generic import EndBlock as EndBlockBase, ConcurrentDeclarativeRegion, ConcurrentBeginBlock 

+

40from pyVHDLParser.Blocks.List import PortList 

+

41from pyVHDLParser.Blocks.Reporting import Assert 

+

42from pyVHDLParser.Blocks.Sequential import Process 

+

43 

+

44 

+

45@export 

+

46class EndBlock(EndBlockBase): 

+

47 KEYWORD = BlockKeyword 

+

48 EXPECTED_NAME = KEYWORD.__KEYWORD__ 

+

49 

+

50 

+

51@export 

+

52class BeginBlock(ConcurrentBeginBlock): 

+

53 END_BLOCK = EndBlock 

+

54 

+

55 

+

56@export 

+

57class DeclarativeRegion(ConcurrentDeclarativeRegion): 

+

58 BEGIN_BLOCK = BeginBlock 

+

59 END_BLOCK = EndBlock 

+

60 

+

61 

+

62@export 

+

63class NameBlock(Block): 

+

64 @classmethod 

+

65 def stateBlockKeyword(cls, parserState: TokenToBlockParser): 

+

66 token = parserState.Token 

+

67 errorMessage = "Expected whitespace after keyword " 

+

68 if isinstance(token, CharacterToken): 

+

69 if token == "\n": 

+

70 parserState.NewBlock = NameBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

71 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

72 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

73 parserState.TokenMarker = None 

+

74 parserState.NextState = cls.stateWhitespace1 

+

75 parserState.PushState = LinebreakBlock.stateLinebreak 

+

76 return 

+

77 elif token == "-": 

+

78 parserState.NewBlock = NameBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

79 parserState.TokenMarker = None 

+

80 parserState.NextState = cls.stateWhitespace1 

+

81 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

82 parserState.TokenMarker = token 

+

83 return 

+

84 elif token == "/": 

+

85 parserState.NewBlock = NameBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

86 parserState.TokenMarker = None 

+

87 parserState.NextState = cls.stateWhitespace1 

+

88 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

89 parserState.TokenMarker = token 

+

90 return 

+

91 elif isinstance(token, SpaceToken): 

+

92 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

93 parserState.NextState = cls.stateWhitespace1 

+

94 return 

+

95 

+

96 raise BlockParserException(errorMessage, token) 

+

97 

+

98 @classmethod 

+

99 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

100 token = parserState.Token 

+

101 errorMessage = "Expected block name (identifier)." 

+

102 if isinstance(token, CharacterToken): 

+

103 if token == "\n": 

+

104 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

105 if not isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

106 parserState.NewBlock = NameBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) 

+

107 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

108 else: 

+

109 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

110 parserState.TokenMarker = None 

+

111 parserState.PushState = LinebreakBlock.stateLinebreak 

+

112 return 

+

113 elif token == "-": 

+

114 parserState.NewBlock = NameBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

115 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

116 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

117 parserState.TokenMarker = None 

+

118 parserState.PushState = LinebreakBlock.stateLinebreak 

+

119 return 

+

120 elif token == "/": 

+

121 parserState.NewBlock = NameBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

122 parserState.TokenMarker = None 

+

123 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

124 parserState.TokenMarker = token 

+

125 return 

+

126 elif isinstance(token, WordToken): 

+

127 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

128 parserState.NextState = cls.stateBlockName 

+

129 return 

+

130 elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

131 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

132 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

133 parserState.TokenMarker = None 

+

134 return 

+

135 

+

136 raise BlockParserException(errorMessage, token) 

+

137 

+

138 @classmethod 

+

139 def stateBlockName(cls, parserState: TokenToBlockParser): 

+

140 token = parserState.Token 

+

141 errorMessage = "Expected whitespace after keyword " 

+

142 if isinstance(token, CharacterToken): 

+

143 if token == "\n": 

+

144 parserState.NewBlock = NameBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

145 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

146 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

147 parserState.TokenMarker = None 

+

148 parserState.NextState = cls.stateWhitespace2 

+

149 parserState.PushState = LinebreakBlock.stateLinebreak 

+

150 return 

+

151 elif token == "-": 

+

152 parserState.NewBlock = NameBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

153 parserState.TokenMarker = None 

+

154 parserState.NextState = cls.stateWhitespace2 

+

155 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

156 parserState.TokenMarker = token 

+

157 return 

+

158 elif token == "/": 

+

159 parserState.NewBlock = NameBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

160 parserState.TokenMarker = None 

+

161 parserState.NextState = cls.stateWhitespace2 

+

162 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

163 parserState.TokenMarker = token 

+

164 return 

+

165 elif isinstance(token, SpaceToken): 

+

166 parserState.NextState = cls.stateWhitespace2 

+

167 return 

+

168 

+

169 raise BlockParserException(errorMessage, token) 

+

170 

+

171 @classmethod 

+

172 def stateWhitespace2(cls, parserState: TokenToBlockParser): 

+

173 token = parserState.Token 

+

174 errorMessage = "Expected keyword IS after block name." 

+

175 if isinstance(token, CharacterToken): 

+

176 if token == "\n": 

+

177 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

178 if not isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

179 parserState.NewBlock = NameBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) 

+

180 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

181 else: 

+

182 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

183 parserState.TokenMarker = None 

+

184 parserState.PushState = LinebreakBlock.stateLinebreak 

+

185 return 

+

186 elif token == "-": 

+

187 parserState.NewBlock = NameBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

188 parserState.TokenMarker = None 

+

189 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

190 parserState.TokenMarker = token 

+

191 return 

+

192 elif token == "/": 

+

193 parserState.NewBlock = NameBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

194 parserState.TokenMarker = None 

+

195 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

196 parserState.TokenMarker = token 

+

197 return 

+

198 elif isinstance(token, WordToken) and (token <= "is"): 

+

199 parserState.NewToken = IsKeyword(fromExistingToken=token) 

+

200 parserState.NewBlock = NameBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

201 parserState.NextState = DeclarativeRegion.stateDeclarativeRegion 

+

202 return 

+

203 elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

204 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

205 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

206 parserState.TokenMarker = None 

+

207 return 

+

208 

+

209 raise BlockParserException(errorMessage, token) 

+
+ + + diff --git a/coverage/d_04128728490d4342_Component_py.html b/coverage/d_04128728490d4342_Component_py.html new file mode 100644 index 000000000..e1df5ba39 --- /dev/null +++ b/coverage/d_04128728490d4342_Component_py.html @@ -0,0 +1,293 @@ + + + + + Coverage for pyVHDLParser/Blocks/Structural/Component.py: 23% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/Structural/Component.py: + 23% +

+ +

+ 133 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Token import LinebreakToken, WordToken, SpaceToken, CommentToken, MultiLineCommentToken, IndentationToken, SingleLineCommentToken, ExtendedIdentifier 

+

33from pyVHDLParser.Token.Keywords import ComponentKeyword, IsKeyword, EndKeyword, GenericKeyword, PortKeyword, UseKeyword, BeginKeyword 

+

34from pyVHDLParser.Token.Keywords import BoundaryToken, IdentifierToken 

+

35from pyVHDLParser.Blocks import BlockParserException, Block, CommentBlock, TokenToBlockParser 

+

36from pyVHDLParser.Blocks.Common import LinebreakBlock, IndentationBlock, WhitespaceBlock 

+

37from pyVHDLParser.Blocks.Generic import EndBlock as EndBlockBase 

+

38 

+

39 

+

40@export 

+

41class NameBlock(Block): 

+

42 KEYWORDS = None 

+

43 

+

44 @classmethod 

+

45 def __cls_init__(cls): 

+

46 from pyVHDLParser.Blocks.List import GenericList, PortList 

+

47 

+

48 cls.KEYWORDS = { 

+

49 # Keyword Transition 

+

50 GenericKeyword: GenericList.OpenBlock.stateGenericKeyword, 

+

51 PortKeyword: PortList.OpenBlock.statePortKeyword 

+

52 } 

+

53 

+

54 @classmethod 

+

55 def stateComponentKeyword(cls, parserState: TokenToBlockParser): 

+

56 token = parserState.Token 

+

57 if isinstance(token, SpaceToken): 

+

58 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

59 parserState.NextState = cls.stateWhitespace1 

+

60 return 

+

61 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

62 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

63 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

64 _ = block(parserState.NewBlock, token) 

+

65 parserState.TokenMarker = None 

+

66 parserState.NextState = cls.stateWhitespace1 

+

67 return 

+

68 

+

69 raise BlockParserException("Expected whitespace after keyword COMPONENT.", token) 

+

70 

+

71 @classmethod 

+

72 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

73 token = parserState.Token 

+

74 if isinstance(token, WordToken): 

+

75 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

76 parserState.NextState = cls.stateComponentName 

+

77 return 

+

78 elif isinstance(token, ExtendedIdentifier): 

+

79 parserState.NextState = cls.stateComponentName 

+

80 return 

+

81 elif isinstance(token, LinebreakToken): 

+

82 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

83 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

84 _ = LinebreakBlock(parserState.NewBlock, token) 

+

85 else: 

+

86 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

87 parserState.TokenMarker = None 

+

88 return 

+

89 elif isinstance(token, CommentToken): 

+

90 parserState.NewBlock = CommentBlock(parserState.LastBlock, token) 

+

91 parserState.TokenMarker = None 

+

92 return 

+

93 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

94 return 

+

95 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

96 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

97 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

98 parserState.TokenMarker = None 

+

99 return 

+

100 

+

101 raise BlockParserException("Expected component name (identifier).", token) 

+

102 

+

103 @classmethod 

+

104 def stateComponentName(cls, parserState: TokenToBlockParser): 

+

105 token = parserState.Token 

+

106 if isinstance(token, SpaceToken): 

+

107 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

108 parserState.NextState = cls.stateWhitespace2 

+

109 return 

+

110 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

111 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

112 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

113 _ = block(parserState.NewBlock, token) 

+

114 parserState.TokenMarker = None 

+

115 parserState.NextState = cls.stateWhitespace2 

+

116 return 

+

117 

+

118 raise BlockParserException("Expected whitespace after component name.", token) 

+

119 

+

120 @classmethod 

+

121 def stateWhitespace2(cls, parserState: TokenToBlockParser): 

+

122 token = parserState.Token 

+

123 if isinstance(token, WordToken) and (token <= "is"): 

+

124 parserState.NewToken = IsKeyword(fromExistingToken=token) 

+

125 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

126 parserState.TokenMarker = None 

+

127 parserState.NextState = cls.stateDeclarativeRegion 

+

128 return 

+

129 elif isinstance(token, LinebreakToken): 

+

130 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

131 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

132 _ = LinebreakBlock(parserState.NewBlock, token) 

+

133 else: 

+

134 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

135 parserState.TokenMarker = None 

+

136 return 

+

137 elif isinstance(token, CommentToken): 

+

138 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

139 _ = CommentBlock(parserState.NewBlock, token) 

+

140 parserState.TokenMarker = None 

+

141 return 

+

142 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

143 return 

+

144 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

145 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

146 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

147 parserState.TokenMarker = None 

+

148 return 

+

149 

+

150 raise BlockParserException("Expected keyword IS after component name.", token) 

+

151 

+

152 @classmethod 

+

153 def stateDeclarativeRegion(cls, parserState: TokenToBlockParser): 

+

154 

+

155 token = parserState.Token 

+

156 if isinstance(token, SpaceToken): 

+

157 blockType = IndentationBlock if isinstance(token, IndentationToken) else WhitespaceBlock 

+

158 parserState.NewBlock = blockType(parserState.LastBlock, token) 

+

159 return 

+

160 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

161 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

162 parserState.NewBlock = block(parserState.LastBlock, token) 

+

163 parserState.TokenMarker = None 

+

164 return 

+

165 elif isinstance(token, WordToken): 

+

166 tokenValue = token.Value.lower() 

+

167 

+

168 for keyword in cls.__KEYWORDS__: 

+

169 if tokenValue == keyword.__KEYWORD__: 

+

170 newToken = keyword(fromExistingToken=token) 

+

171 parserState.PushState = cls.__KEYWORDS__[keyword] 

+

172 parserState.NewToken = newToken 

+

173 parserState.TokenMarker = newToken 

+

174 return 

+

175 

+

176 if tokenValue == "end": 

+

177 parserState.NewToken = EndKeyword(fromExistingToken=token) 

+

178 parserState.NextState = EndBlock.stateEndKeyword 

+

179 return 

+

180 

+

181 raise BlockParserException( 

+

182 "Expected one of these keywords: END, {keywords}. Found: '{tokenValue}'.".format( 

+

183 keywords=", ".join( 

+

184 [kw.__KEYWORD__.upper() for kw in cls.__KEYWORDS__] 

+

185 ), 

+

186 tokenValue=token.Value 

+

187 ), token) 

+

188 

+

189 

+

190@export 

+

191class EndBlock(EndBlockBase): 

+

192 KEYWORD = ComponentKeyword 

+

193 KEYWORD_IS_OPTIONAL = False 

+

194 EXPECTED_NAME = KEYWORD.__KEYWORD__ 

+
+ + + diff --git a/coverage/d_04128728490d4342_Configuration_py.html b/coverage/d_04128728490d4342_Configuration_py.html new file mode 100644 index 000000000..521b89f94 --- /dev/null +++ b/coverage/d_04128728490d4342_Configuration_py.html @@ -0,0 +1,304 @@ + + + + + Coverage for pyVHDLParser/Blocks/Structural/Configuration.py: 24% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/Structural/Configuration.py: + 24% +

+ +

+ 141 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Token import LinebreakToken, WordToken, SpaceToken, CommentToken, MultiLineCommentToken, IndentationToken, SingleLineCommentToken, ExtendedIdentifier 

+

33from pyVHDLParser.Token.Keywords import ConfigurationKeyword, IsKeyword, EndKeyword, GenericKeyword, PortKeyword, UseKeyword, BeginKeyword 

+

34from pyVHDLParser.Token.Keywords import BoundaryToken, IdentifierToken 

+

35from pyVHDLParser.Blocks import BlockParserException, Block, CommentBlock, TokenToBlockParser 

+

36from pyVHDLParser.Blocks.Common import LinebreakBlock, IndentationBlock, WhitespaceBlock 

+

37from pyVHDLParser.Blocks.Generic import ConcurrentBeginBlock, EndBlock as EndBlockBase 

+

38 

+

39 

+

40@export 

+

41class NameBlock(Block): 

+

42 KEYWORDS = None 

+

43 

+

44 @classmethod 

+

45 def __cls_init__(cls): 

+

46 from pyVHDLParser.Blocks.Reference import Use 

+

47 from pyVHDLParser.Blocks.List import GenericList, PortList 

+

48 

+

49 cls.KEYWORDS = { 

+

50 # Keyword Transition 

+

51 UseKeyword: Use.StartBlock.stateUseKeyword, 

+

52 GenericKeyword: GenericList.OpenBlock.stateGenericKeyword, 

+

53 PortKeyword: PortList.OpenBlock.statePortKeyword 

+

54 } 

+

55 

+

56 @classmethod 

+

57 def stateConfigurationKeyword(cls, parserState: TokenToBlockParser): 

+

58 token = parserState.Token 

+

59 if isinstance(token, SpaceToken): 

+

60 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

61 parserState.NextState = cls.stateWhitespace1 

+

62 return 

+

63 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

64 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

65 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

66 _ = block(parserState.NewBlock, token) 

+

67 parserState.TokenMarker = None 

+

68 parserState.NextState = cls.stateWhitespace1 

+

69 return 

+

70 

+

71 raise BlockParserException("Expected whitespace after keyword CONFIGURATION.", token) 

+

72 

+

73 @classmethod 

+

74 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

75 token = parserState.Token 

+

76 if isinstance(token, WordToken): 

+

77 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

78 parserState.NextState = cls.stateConfigurationName 

+

79 return 

+

80 elif isinstance(token, ExtendedIdentifier): 

+

81 parserState.NextState = cls.stateConfigurationName 

+

82 return 

+

83 elif isinstance(token, LinebreakToken): 

+

84 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

85 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

86 _ = LinebreakBlock(parserState.NewBlock, token) 

+

87 else: 

+

88 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

89 parserState.TokenMarker = None 

+

90 return 

+

91 elif isinstance(token, CommentToken): 

+

92 parserState.NewBlock = CommentBlock(parserState.LastBlock, token) 

+

93 parserState.TokenMarker = None 

+

94 return 

+

95 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

96 return 

+

97 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

98 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

99 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

100 parserState.TokenMarker = None 

+

101 return 

+

102 

+

103 raise BlockParserException("Expected configuration name (identifier).", token) 

+

104 

+

105 @classmethod 

+

106 def stateConfigurationName(cls, parserState: TokenToBlockParser): 

+

107 token = parserState.Token 

+

108 if isinstance(token, SpaceToken): 

+

109 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

110 parserState.NextState = cls.stateWhitespace2 

+

111 return 

+

112 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

113 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

114 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

115 _ = block(parserState.NewBlock, token) 

+

116 parserState.TokenMarker = None 

+

117 parserState.NextState = cls.stateWhitespace2 

+

118 return 

+

119 

+

120 raise BlockParserException("Expected whitespace after configuration name.", token) 

+

121 

+

122 @classmethod 

+

123 def stateWhitespace2(cls, parserState: TokenToBlockParser): 

+

124 token = parserState.Token 

+

125 if isinstance(token, WordToken) and (token <= "is"): 

+

126 parserState.NewToken = IsKeyword(fromExistingToken=token) 

+

127 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

128 parserState.TokenMarker = None 

+

129 parserState.NextState = cls.stateDeclarativeRegion 

+

130 return 

+

131 elif isinstance(token, LinebreakToken): 

+

132 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

133 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

134 _ = LinebreakBlock(parserState.NewBlock, token) 

+

135 else: 

+

136 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

137 parserState.TokenMarker = None 

+

138 return 

+

139 elif isinstance(token, CommentToken): 

+

140 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

141 _ = CommentBlock(parserState.NewBlock, token) 

+

142 parserState.TokenMarker = None 

+

143 return 

+

144 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

145 return 

+

146 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

147 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

148 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

149 parserState.TokenMarker = None 

+

150 return 

+

151 

+

152 raise BlockParserException("Expected keyword IS after configuration name.", token) 

+

153 

+

154 @classmethod 

+

155 def stateDeclarativeRegion(cls, parserState: TokenToBlockParser): 

+

156 

+

157 token = parserState.Token 

+

158 if isinstance(token, SpaceToken): 

+

159 blockType = IndentationBlock if isinstance(token, IndentationToken) else WhitespaceBlock 

+

160 parserState.NewBlock = blockType(parserState.LastBlock, token) 

+

161 return 

+

162 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

163 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

164 parserState.NewBlock = block(parserState.LastBlock, token) 

+

165 parserState.TokenMarker = None 

+

166 return 

+

167 elif isinstance(token, WordToken): 

+

168 tokenValue = token.Value.lower() 

+

169 

+

170 for keyword in cls.KEYWORDS: 

+

171 if tokenValue == keyword.KEYWORDS: 

+

172 newToken = keyword(fromExistingToken=token) 

+

173 parserState.PushState = cls.KEYWORDS[keyword] 

+

174 parserState.NewToken = newToken 

+

175 parserState.TokenMarker = newToken 

+

176 return 

+

177 

+

178 if tokenValue == "begin": 

+

179 parserState.NewToken = BeginKeyword(fromExistingToken=token) 

+

180 parserState.NextState = BeginBlock.stateBeginKeyword 

+

181 return 

+

182 elif tokenValue == "end": 

+

183 parserState.NewToken = EndKeyword(fromExistingToken=token) 

+

184 parserState.NextState = EndBlock.stateEndKeyword 

+

185 return 

+

186 

+

187 raise BlockParserException( 

+

188 "Expected one of these keywords: END, {keywords}. Found: '{tokenValue}'.".format( 

+

189 keywords=", ".join( 

+

190 [kw.__KEYWORD__.upper() for kw in cls.KEYWORDS] 

+

191 ), 

+

192 tokenValue=token.Value 

+

193 ), token) 

+

194 

+

195 

+

196@export 

+

197class EndBlock(EndBlockBase): 

+

198 KEYWORD = ConfigurationKeyword 

+

199 KEYWORD_IS_OPTIONAL = True 

+

200 EXPECTED_NAME = KEYWORD.__KEYWORD__ 

+

201 

+

202 

+

203@export 

+

204class BeginBlock(ConcurrentBeginBlock): 

+

205 END_BLOCK = EndBlock 

+
+ + + diff --git a/coverage/d_04128728490d4342_Entity_py.html b/coverage/d_04128728490d4342_Entity_py.html new file mode 100644 index 000000000..39032b6a7 --- /dev/null +++ b/coverage/d_04128728490d4342_Entity_py.html @@ -0,0 +1,270 @@ + + + + + Coverage for pyVHDLParser/Blocks/Structural/Entity.py: 64% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/Structural/Entity.py: + 64% +

+ +

+ 117 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Token import LinebreakToken, WordToken, SpaceToken, CommentToken, MultiLineCommentToken, IndentationToken, SingleLineCommentToken, ExtendedIdentifier 

+

33from pyVHDLParser.Token.Keywords import EntityKeyword, IsKeyword, GenericKeyword, PortKeyword 

+

34from pyVHDLParser.Token.Keywords import BoundaryToken, IdentifierToken 

+

35from pyVHDLParser.Blocks import BlockParserException, Block, CommentBlock, TokenToBlockParser 

+

36from pyVHDLParser.Blocks.Common import LinebreakBlock, WhitespaceBlock 

+

37from pyVHDLParser.Blocks.Generic import ConcurrentBeginBlock, ConcurrentDeclarativeRegion 

+

38from pyVHDLParser.Blocks.Generic1 import EndBlock as EndBlockBase 

+

39 

+

40 

+

41@export 

+

42class EndBlock(EndBlockBase): 

+

43 KEYWORD = EntityKeyword 

+

44 KEYWORD_IS_OPTIONAL = True 

+

45 EXPECTED_NAME = KEYWORD.__KEYWORD__ 

+

46 

+

47 

+

48@export 

+

49class BeginBlock(ConcurrentBeginBlock): 

+

50 END_BLOCK = EndBlock 

+

51 

+

52 

+

53@export 

+

54class DeclarativeRegion(ConcurrentDeclarativeRegion): 

+

55 BEGIN_BLOCK = BeginBlock 

+

56 END_BLOCK = EndBlock 

+

57 

+

58 @classmethod 

+

59 def __cls_init__(cls): 

+

60 super().__cls_init__() 

+

61 

+

62 from pyVHDLParser.Blocks.List.GenericList import OpenBlock as GenericListOpenBlock 

+

63 from pyVHDLParser.Blocks.List.PortList import OpenBlock as PortListOpenBlock 

+

64 

+

65 cls.KEYWORDS.update({ 

+

66 # Keyword Transition 

+

67 GenericKeyword: GenericListOpenBlock.stateGenericKeyword, 

+

68 PortKeyword: PortListOpenBlock.statePortKeyword 

+

69 }) 

+

70 

+

71 

+

72@export 

+

73class NameBlock(Block): 

+

74 @classmethod 

+

75 def stateEntityKeyword(cls, parserState: TokenToBlockParser): 

+

76 token = parserState.Token 

+

77 if isinstance(token, SpaceToken): 

+

78 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

79 parserState.NextState = cls.stateWhitespace1 

+

80 return 

+

81 elif isinstance(token, (LinebreakToken, CommentToken)): 81 ↛ 89line 81 didn't jump to line 89, because the condition on line 81 was never false

+

82 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

83 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

84 _ = block(parserState.NewBlock, token) 

+

85 parserState.TokenMarker = None 

+

86 parserState.NextState = cls.stateWhitespace1 

+

87 return 

+

88 

+

89 raise BlockParserException("Expected whitespace after keyword ENTITY.", token) 

+

90 

+

91 @classmethod 

+

92 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

93 token = parserState.Token 

+

94 if isinstance(token, WordToken): 94 ↛ 98line 94 didn't jump to line 98, because the condition on line 94 was never false

+

95 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

96 parserState.NextState = cls.stateEntityName 

+

97 return 

+

98 elif isinstance(token, ExtendedIdentifier): 

+

99 parserState.NextState = cls.stateEntityName 

+

100 return 

+

101 elif isinstance(token, LinebreakToken): 

+

102 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

103 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

104 _ = LinebreakBlock(parserState.NewBlock, token) 

+

105 else: 

+

106 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

107 parserState.TokenMarker = None 

+

108 return 

+

109 elif isinstance(token, CommentToken): 

+

110 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

111 _ = CommentBlock(parserState.NewBlock, token) 

+

112 parserState.TokenMarker = None 

+

113 return 

+

114 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

115 return 

+

116 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

117 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

118 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

119 parserState.TokenMarker = None 

+

120 return 

+

121 

+

122 raise BlockParserException("Expected entity name (identifier).", token) 

+

123 

+

124 @classmethod 

+

125 def stateEntityName(cls, parserState: TokenToBlockParser): 

+

126 token = parserState.Token 

+

127 if isinstance(token, SpaceToken): 

+

128 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

129 parserState.NextState = cls.stateWhitespace2 

+

130 return 

+

131 elif isinstance(token, (LinebreakToken, CommentToken)): 131 ↛ 139line 131 didn't jump to line 139, because the condition on line 131 was never false

+

132 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

133 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

134 _ = block(parserState.NewBlock, token) 

+

135 parserState.TokenMarker = None 

+

136 parserState.NextState = cls.stateWhitespace2 

+

137 return 

+

138 

+

139 raise BlockParserException("Expected whitespace after entity name.", token) 

+

140 

+

141 @classmethod 

+

142 def stateWhitespace2(cls, parserState: TokenToBlockParser): 

+

143 token = parserState.Token 

+

144 if isinstance(token, WordToken) and (token <= "is"): 

+

145 parserState.NewToken = IsKeyword(fromExistingToken=token) 

+

146 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

147 parserState.TokenMarker = None 

+

148 parserState.NextState = DeclarativeRegion.stateDeclarativeRegion 

+

149 return 

+

150 elif isinstance(token, LinebreakToken): 150 ↛ 151line 150 didn't jump to line 151, because the condition on line 150 was never true

+

151 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

152 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

153 _ = LinebreakBlock(parserState.NewBlock, token) 

+

154 else: 

+

155 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

156 parserState.TokenMarker = None 

+

157 return 

+

158 elif isinstance(token, CommentToken): 158 ↛ 159line 158 didn't jump to line 159, because the condition on line 158 was never true

+

159 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

160 _ = CommentBlock(parserState.NewBlock, token) 

+

161 parserState.TokenMarker = None 

+

162 return 

+

163 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 163 ↛ 164line 163 didn't jump to line 164, because the condition on line 163 was never true

+

164 return 

+

165 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 165 ↛ 166line 165 didn't jump to line 166, because the condition on line 165 was never true

+

166 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

167 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

168 parserState.TokenMarker = None 

+

169 return 

+

170 

+

171 raise BlockParserException("Expected keyword IS after entity name.", token) 

+
+ + + diff --git a/coverage/d_07f20d4589d19dfa_Function_py.html b/coverage/d_07f20d4589d19dfa_Function_py.html new file mode 100644 index 000000000..61729a573 --- /dev/null +++ b/coverage/d_07f20d4589d19dfa_Function_py.html @@ -0,0 +1,506 @@ + + + + + Coverage for pyVHDLParser/Blocks/Sequential/Function.py: 30% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/Sequential/Function.py: + 30% +

+ +

+ 336 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Token import SpaceToken, LinebreakToken, CommentToken, CharacterToken, IndentationToken, MultiLineCommentToken 

+

33from pyVHDLParser.Token.Keywords import WordToken, BoundaryToken, IdentifierToken, PureKeyword, ImpureKeyword 

+

34from pyVHDLParser.Token.Keywords import ReturnKeyword, GenericKeyword, ParameterKeyword, FunctionKeyword, EndKeyword 

+

35from pyVHDLParser.Token.Keywords import UseKeyword, ConstantKeyword, VariableKeyword, IsKeyword, EndToken, BeginKeyword, ProcedureKeyword, ReportKeyword 

+

36from pyVHDLParser.Blocks import Block, BlockParserException, CommentBlock, TokenToBlockParser 

+

37from pyVHDLParser.Blocks.Common import LinebreakBlock, IndentationBlock, WhitespaceBlock 

+

38from pyVHDLParser.Blocks.Generic import SequentialBeginBlock, SequentialDeclarativeRegion 

+

39from pyVHDLParser.Blocks.Generic1 import EndBlock as EndBlockBase 

+

40from pyVHDLParser.Blocks.List import GenericList, ParameterList 

+

41 

+

42 

+

43@export 

+

44class EndBlock(EndBlockBase): 

+

45 KEYWORD = FunctionKeyword 

+

46 KEYWORD_IS_OPTIONAL = True 

+

47 EXPECTED_NAME = KEYWORD.__KEYWORD__ 

+

48 

+

49 

+

50@export 

+

51class BeginBlock(SequentialBeginBlock): 

+

52 END_BLOCK = EndBlock 

+

53 

+

54 

+

55@export 

+

56class DeclarativeRegion(SequentialDeclarativeRegion): 

+

57 BEGIN_BLOCK = BeginBlock 

+

58 END_BLOCK = EndBlock 

+

59 

+

60 

+

61@export 

+

62class NameBlock(Block): 

+

63 @classmethod 

+

64 def statePureKeyword(cls, parserState: TokenToBlockParser): 

+

65 token = parserState.Token 

+

66 if isinstance(token, SpaceToken): 

+

67 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

68 parserState.NextState = cls.stateWhitespace0 

+

69 return 

+

70 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

71 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

72 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

73 _ = block(parserState.NewBlock, token) 

+

74 parserState.TokenMarker = None 

+

75 parserState.NextState = cls.stateWhitespace0 

+

76 return 

+

77 

+

78 raise BlockParserException("Expected whitespace after keyword PURE.", token) 

+

79 

+

80 @classmethod 

+

81 def stateImpureKeyword(cls, parserState: TokenToBlockParser): 

+

82 token = parserState.Token 

+

83 if isinstance(token, SpaceToken): 

+

84 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

85 parserState.NextState = cls.stateWhitespace0 

+

86 return 

+

87 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

88 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

89 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

90 _ = block(parserState.NewBlock, token) 

+

91 parserState.TokenMarker = None 

+

92 parserState.NextState = cls.stateWhitespace0 

+

93 return 

+

94 

+

95 raise BlockParserException("Expected whitespace after keyword IMPURE.", token) 

+

96 

+

97 @classmethod 

+

98 def stateWhitespace0(cls, parserState: TokenToBlockParser): 

+

99 token = parserState.Token 

+

100 if isinstance(token, WordToken): 

+

101 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

102 parserState.NextState = cls.stateFunctionName 

+

103 return 

+

104 elif isinstance(token, LinebreakToken): 

+

105 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

106 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

107 _ = LinebreakBlock(parserState.NewBlock, token) 

+

108 else: 

+

109 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

110 parserState.TokenMarker = None 

+

111 return 

+

112 elif isinstance(token, CommentToken): 

+

113 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

114 _ = CommentBlock(parserState.NewBlock, token) 

+

115 parserState.TokenMarker = None 

+

116 return 

+

117 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

118 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

119 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

120 parserState.TokenMarker = None 

+

121 return 

+

122 

+

123 raise BlockParserException("Expected keyword FUNCTION.", token) 

+

124 

+

125 @classmethod 

+

126 def stateFunctionKeyword(cls, parserState: TokenToBlockParser): 

+

127 token = parserState.Token 

+

128 if isinstance(token, SpaceToken): 128 ↛ 132line 128 didn't jump to line 132, because the condition on line 128 was never false

+

129 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

130 parserState.NextState = cls.stateWhitespace1 

+

131 return 

+

132 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

133 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

134 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

135 _ = block(parserState.NewBlock, token) 

+

136 parserState.TokenMarker = None 

+

137 parserState.NextState = cls.stateWhitespace1 

+

138 return 

+

139 

+

140 raise BlockParserException("Expected whitespace after keyword FUNCTION.", token) 

+

141 

+

142 @classmethod 

+

143 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

144 token = parserState.Token 

+

145 if isinstance(token, WordToken): 145 ↛ 149line 145 didn't jump to line 149, because the condition on line 145 was never false

+

146 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

147 parserState.NextState = cls.stateFunctionName 

+

148 return 

+

149 elif isinstance(token, LinebreakToken): 

+

150 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

151 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

152 _ = LinebreakBlock(parserState.NewBlock, token) 

+

153 else: 

+

154 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

155 parserState.TokenMarker = None 

+

156 return 

+

157 elif isinstance(token, CommentToken): 

+

158 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

159 _ = CommentBlock(parserState.NewBlock, token) 

+

160 parserState.TokenMarker = None 

+

161 return 

+

162 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

163 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

164 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

165 parserState.TokenMarker = None 

+

166 return 

+

167 

+

168 raise BlockParserException("Expected function name (designator).", token) 

+

169 

+

170 @classmethod 

+

171 def stateFunctionName(cls, parserState: TokenToBlockParser): 

+

172 token = parserState.Token 

+

173 if isinstance(token, CharacterToken) and (token == "("): 173 ↛ 174line 173 didn't jump to line 174, because the condition on line 173 was never true

+

174 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

175 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

176 _ = ParameterList.OpenBlock(parserState.NewBlock, parserState.NewToken) 

+

177 parserState.TokenMarker = None 

+

178 parserState.NextState = ReturnTypeBlock.stateAfterParameterList 

+

179 parserState.PushState = ParameterList.OpenBlock.stateOpeningParenthesis 

+

180 parserState.Counter = 1 

+

181 return 

+

182 elif isinstance(token, SpaceToken): 182 ↛ 186line 182 didn't jump to line 186, because the condition on line 182 was never false

+

183 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

184 parserState.NextState = cls.stateWhitespace2 

+

185 return 

+

186 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

187 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

188 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

189 _ = block(parserState.NewBlock, token) 

+

190 parserState.TokenMarker = None 

+

191 parserState.NextState = cls.stateWhitespace2 

+

192 return 

+

193 

+

194 raise BlockParserException("Expected '(' or whitespace after function name.", token) 

+

195 

+

196 @classmethod 

+

197 def stateWhitespace2(cls, parserState: TokenToBlockParser): 

+

198 token = parserState.Token 

+

199 if isinstance(token, CharacterToken) and (token == "("): 199 ↛ 200line 199 didn't jump to line 200, because the condition on line 199 was never true

+

200 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

201 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

202 _ = ParameterList.OpenBlock(parserState.NewBlock, parserState.NewToken) 

+

203 parserState.TokenMarker = None 

+

204 parserState.NextState = ReturnTypeBlock.stateAfterParameterList 

+

205 parserState.PushState = ParameterList.OpenBlock.stateOpeningParenthesis 

+

206 parserState.Counter = 1 

+

207 return 

+

208 elif isinstance(token, WordToken): 208 ↛ 228line 208 didn't jump to line 228, because the condition on line 208 was never false

+

209 keyword = token.Value.lower() 

+

210 if keyword == "return": 210 ↛ 216line 210 didn't jump to line 216, because the condition on line 210 was never false

+

211 parserState.NewToken = ReturnKeyword(fromExistingToken=token) 

+

212 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

213 parserState.TokenMarker = parserState.NewToken 

+

214 parserState.NextState = ReturnTypeBlock.stateReturnKeyword 

+

215 return 

+

216 elif keyword == "generic": 

+

217 parserState.NewToken = GenericKeyword(fromExistingToken=token) 

+

218 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

219 parserState.NextState = GenericList.OpenBlock.stateGenericKeyword 

+

220 parserState.TokenMarker = parserState.NewToken 

+

221 return 

+

222 elif keyword == "parameter": 

+

223 parserState.NewToken = ParameterKeyword(fromExistingToken=token) 

+

224 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

225 parserState.NextState = ParameterList.OpenBlock.stateParameterKeyword 

+

226 parserState.TokenMarker = parserState.NewToken 

+

227 return 

+

228 elif isinstance(token, LinebreakToken): 

+

229 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

230 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

231 _ = LinebreakBlock(parserState.NewBlock, token) 

+

232 else: 

+

233 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

234 parserState.TokenMarker = None 

+

235 return 

+

236 elif isinstance(token, CommentToken): 

+

237 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

238 _ = CommentBlock(parserState.NewBlock, token) 

+

239 parserState.TokenMarker = None 

+

240 return 

+

241 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

242 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

243 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

244 parserState.TokenMarker = None 

+

245 return 

+

246 

+

247 raise BlockParserException("Expected '(' or keywords GENERIC, PARAMETER or RETURN after function name.", token) 

+

248 

+

249 

+

250@export 

+

251class ReturnTypeBlock(Block): 

+

252 @classmethod 

+

253 def stateAfterParameterList(cls, parserState: TokenToBlockParser): 

+

254 token = parserState.Token 

+

255 if isinstance(token, WordToken): 

+

256 if token <= "return": 

+

257 parserState.NewToken = ReturnKeyword(fromExistingToken=token) 

+

258 # parserState.NewBlock = NameBlock2(parserState.LastBlock, parserState.TokenMarker, parserState.NewToken) 

+

259 parserState.NextState = cls.stateReturnKeyword 

+

260 return 

+

261 elif isinstance(token, SpaceToken): 

+

262 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

263 parserState.NextState = cls.stateWhitespace1 

+

264 return 

+

265 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

266 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

267 parserState.NewBlock = block(parserState.LastBlock, token) 

+

268 parserState.TokenMarker = None 

+

269 parserState.NextState = cls.stateWhitespace1 

+

270 return 

+

271 

+

272 raise BlockParserException("Expected keyword RETURN.", token) 

+

273 

+

274 @classmethod 

+

275 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

276 token = parserState.Token 

+

277 if isinstance(token, WordToken) and (token <= "return"): 

+

278 parserState.NewToken = ReturnKeyword(fromExistingToken=token) 

+

279 parserState.NextState = cls.stateReturnKeyword 

+

280 return 

+

281 elif isinstance(token, LinebreakToken): 

+

282 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

283 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

284 _ = LinebreakBlock(parserState.NewBlock, token) 

+

285 else: 

+

286 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

287 parserState.TokenMarker = None 

+

288 return 

+

289 elif isinstance(token, CommentToken): 

+

290 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

291 _ = CommentBlock(parserState.NewBlock, token) 

+

292 parserState.TokenMarker = None 

+

293 return 

+

294 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

295 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

296 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

297 parserState.TokenMarker = None 

+

298 return 

+

299 

+

300 raise BlockParserException("Expected function name (designator).", token) 

+

301 

+

302 @classmethod 

+

303 def stateReturnKeyword(cls, parserState: TokenToBlockParser): 

+

304 token = parserState.Token 

+

305 errorMessage = "Expected whitespace after keyword RETURN." 

+

306 if isinstance(token, SpaceToken): 306 ↛ 310line 306 didn't jump to line 310, because the condition on line 306 was never false

+

307 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

308 parserState.NextState = cls.stateWhitespace2 

+

309 return 

+

310 elif isinstance(token, SpaceToken): 

+

311 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

312 parserState.NextState = cls.stateWhitespace2 

+

313 return 

+

314 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

315 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

316 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

317 _ = block(parserState.NewBlock, token) 

+

318 parserState.TokenMarker = None 

+

319 parserState.NextState = cls.stateWhitespace2 

+

320 return 

+

321 

+

322 raise BlockParserException(errorMessage, token) 

+

323 

+

324 @classmethod 

+

325 def stateWhitespace2(cls, parserState: TokenToBlockParser): 

+

326 token = parserState.Token 

+

327 if isinstance(token, WordToken): 327 ↛ 331line 327 didn't jump to line 331, because the condition on line 327 was never false

+

328 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

329 parserState.NextState = cls.stateReturnType 

+

330 return 

+

331 elif isinstance(token, LinebreakToken): 

+

332 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

333 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

334 _ = LinebreakBlock(parserState.NewBlock, token) 

+

335 else: 

+

336 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

337 parserState.TokenMarker = None 

+

338 return 

+

339 elif isinstance(token, CommentToken): 

+

340 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

341 _ = CommentBlock(parserState.NewBlock, token) 

+

342 parserState.TokenMarker = None 

+

343 return 

+

344 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

345 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

346 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

347 parserState.TokenMarker = None 

+

348 return 

+

349 

+

350 raise BlockParserException("Expected return type (type mark).", token) 

+

351 

+

352 @classmethod 

+

353 def stateReturnType(cls, parserState: TokenToBlockParser): 

+

354 token = parserState.Token 

+

355 errorMessage = "Expected ';' or whitespace after type mark (return type)." 

+

356 if isinstance(token, CharacterToken) and (token == ";"): 356 ↛ 361line 356 didn't jump to line 361, because the condition on line 356 was never false

+

357 parserState.NewToken = EndToken(fromExistingToken=token) 

+

358 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

359 parserState.Pop() 

+

360 return 

+

361 elif isinstance(token, SpaceToken): 

+

362 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

363 parserState.NextState = cls.stateWhitespace3 

+

364 return 

+

365 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

366 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

367 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

368 _ = block(parserState.NewBlock, token) 

+

369 parserState.TokenMarker = None 

+

370 parserState.NextState = cls.stateWhitespace3 

+

371 return 

+

372 

+

373 raise BlockParserException(errorMessage, token) 

+

374 

+

375 @classmethod 

+

376 def stateWhitespace3(cls, parserState: TokenToBlockParser): 

+

377 token = parserState.Token 

+

378 if isinstance(token, CharacterToken) and (token == ";"): 

+

379 parserState.NewToken = EndToken(fromExistingToken=token) 

+

380 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

381 parserState.Pop() 

+

382 return 

+

383 elif isinstance(token, WordToken) and (token <= "is"): 

+

384 parserState.NewToken = IsKeyword(fromExistingToken=token) 

+

385 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

386 parserState.NextState = DeclarativeRegion.stateDeclarativeRegion 

+

387 return 

+

388 elif isinstance(token, LinebreakToken): 

+

389 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

390 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

391 _ = LinebreakBlock(parserState.NewBlock, token) 

+

392 else: 

+

393 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

394 parserState.TokenMarker = None 

+

395 return 

+

396 elif isinstance(token, CommentToken): 

+

397 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

398 _ = CommentBlock(parserState.NewBlock, token) 

+

399 parserState.TokenMarker = None 

+

400 return 

+

401 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

402 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

403 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

404 parserState.TokenMarker = None 

+

405 return 

+

406 

+

407 raise BlockParserException("Expected function name (designator).", token) 

+
+ + + diff --git a/coverage/d_07f20d4589d19dfa_PackageBody_py.html b/coverage/d_07f20d4589d19dfa_PackageBody_py.html new file mode 100644 index 000000000..53908cff6 --- /dev/null +++ b/coverage/d_07f20d4589d19dfa_PackageBody_py.html @@ -0,0 +1,245 @@ + + + + + Coverage for pyVHDLParser/Blocks/Sequential/PackageBody.py: 53% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/Sequential/PackageBody.py: + 53% +

+ +

+ 101 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Token import LinebreakToken, WordToken, SpaceToken, CommentToken, MultiLineCommentToken, IndentationToken 

+

33from pyVHDLParser.Token.Keywords import PackageKeyword, IsKeyword, EndKeyword, BodyKeyword, FunctionKeyword, SignalKeyword 

+

34from pyVHDLParser.Token.Keywords import BoundaryToken, IdentifierToken 

+

35from pyVHDLParser.Token.Keywords import ConstantKeyword, SharedKeyword, ProcedureKeyword, FunctionKeyword, PureKeyword, ImpureKeyword 

+

36from pyVHDLParser.Blocks import BlockParserException, Block, CommentBlock, TokenToBlockParser 

+

37from pyVHDLParser.Blocks.Common import LinebreakBlock, IndentationBlock, WhitespaceBlock 

+

38from pyVHDLParser.Blocks.Generic import SequentialDeclarativeRegion 

+

39from pyVHDLParser.Blocks.Generic1 import EndBlock as EndBlockBase 

+

40 

+

41 

+

42@export 

+

43class EndBlock(EndBlockBase): 

+

44 KEYWORD = (PackageKeyword, BodyKeyword) 

+

45 KEYWORD_IS_OPTIONAL = True 

+

46 EXPECTED_NAME = " ".join(kw.__KEYWORD__ for kw in KEYWORD) 

+

47 

+

48 

+

49@export 

+

50class DeclarativeRegion(SequentialDeclarativeRegion): 

+

51 END_BLOCK = EndBlock 

+

52 

+

53 

+

54@export 

+

55class NameBlock(Block): 

+

56 @classmethod 

+

57 def stateBodyKeyword(cls, parserState: TokenToBlockParser): 

+

58 token = parserState.Token 

+

59 if isinstance(token, SpaceToken): 59 ↛ 63line 59 didn't jump to line 63, because the condition on line 59 was never false

+

60 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

61 parserState.NextState = cls.stateWhitespace1 

+

62 return 

+

63 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

64 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

65 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

66 _ = block(parserState.NewBlock, token) 

+

67 parserState.TokenMarker = None 

+

68 parserState.NextState = cls.stateWhitespace1 

+

69 return 

+

70 

+

71 raise BlockParserException("Expected whitespace after keyword ", token) 

+

72 

+

73 @classmethod 

+

74 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

75 token = parserState.Token 

+

76 if isinstance(token, WordToken): 76 ↛ 80line 76 didn't jump to line 80, because the condition on line 76 was never false

+

77 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

78 parserState.NextState = cls.statePackageName 

+

79 return 

+

80 elif isinstance(token, LinebreakToken): 

+

81 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

82 parserState.NewBlock = NameBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

83 _ = LinebreakBlock(parserState.NewBlock, token) 

+

84 else: 

+

85 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

86 parserState.TokenMarker = None 

+

87 return 

+

88 elif isinstance(token, CommentToken): 

+

89 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

90 _ = CommentBlock(parserState.NewBlock, token) 

+

91 parserState.TokenMarker = None 

+

92 return 

+

93 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

94 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

95 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

96 parserState.TokenMarker = None 

+

97 return 

+

98 

+

99 raise BlockParserException("Expected package name (identifier).", token) 

+

100 

+

101 @classmethod 

+

102 def statePackageName(cls, parserState: TokenToBlockParser): 

+

103 token = parserState.Token 

+

104 if isinstance(token, SpaceToken): 104 ↛ 108line 104 didn't jump to line 108, because the condition on line 104 was never false

+

105 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

106 parserState.NextState = cls.stateWhitespace2 

+

107 return 

+

108 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

109 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

110 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

111 _ = block(parserState.NewBlock, token) 

+

112 parserState.TokenMarker = None 

+

113 parserState.NextState = cls.stateWhitespace2 

+

114 return 

+

115 

+

116 raise BlockParserException("Expected whitespace after package name.", token) 

+

117 

+

118 @classmethod 

+

119 def stateWhitespace2(cls, parserState: TokenToBlockParser): 

+

120 token = parserState.Token 

+

121 if isinstance(token, WordToken) and (token <= "is"): 

+

122 parserState.NewToken = IsKeyword(fromExistingToken=token) 

+

123 parserState.NewBlock = NameBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

124 parserState.TokenMarker = None 

+

125 parserState.NextState = DeclarativeRegion.stateDeclarativeRegion 

+

126 return 

+

127 elif isinstance(token, LinebreakToken): 127 ↛ 128line 127 didn't jump to line 128, because the condition on line 127 was never true

+

128 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

129 parserState.NewBlock = NameBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

130 _ = LinebreakBlock(parserState.NewBlock, token) 

+

131 else: 

+

132 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

133 parserState.TokenMarker = None 

+

134 return 

+

135 elif isinstance(token, CommentToken): 135 ↛ 136line 135 didn't jump to line 136, because the condition on line 135 was never true

+

136 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

137 _ = CommentBlock(parserState.NewBlock, token) 

+

138 parserState.TokenMarker = None 

+

139 return 

+

140 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 140 ↛ 141line 140 didn't jump to line 141, because the condition on line 140 was never true

+

141 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

142 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

143 parserState.TokenMarker = None 

+

144 return 

+

145 

+

146 raise BlockParserException("Expected keyword IS after package name.", token) 

+
+ + + diff --git a/coverage/d_07f20d4589d19dfa_Package_py.html b/coverage/d_07f20d4589d19dfa_Package_py.html new file mode 100644 index 000000000..1c4f32ad9 --- /dev/null +++ b/coverage/d_07f20d4589d19dfa_Package_py.html @@ -0,0 +1,261 @@ + + + + + Coverage for pyVHDLParser/Blocks/Sequential/Package.py: 68% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/Sequential/Package.py: + 68% +

+ +

+ 111 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Token import LinebreakToken, WordToken, SpaceToken, CommentToken, MultiLineCommentToken 

+

33from pyVHDLParser.Token.Keywords import PackageKeyword, IsKeyword, EndKeyword, GenericKeyword, BodyKeyword, UseKeyword, VariableKeyword, SignalKeyword 

+

34from pyVHDLParser.Token.Keywords import BoundaryToken, IdentifierToken 

+

35from pyVHDLParser.Token.Keywords import ConstantKeyword, SharedKeyword, ProcedureKeyword, FunctionKeyword, PureKeyword, ImpureKeyword 

+

36from pyVHDLParser.Blocks import BlockParserException, Block, CommentBlock, TokenToBlockParser 

+

37from pyVHDLParser.Blocks.Common import LinebreakBlock, IndentationBlock, WhitespaceBlock 

+

38from pyVHDLParser.Blocks.Generic import SequentialDeclarativeRegion 

+

39from pyVHDLParser.Blocks.Generic1 import EndBlock as EndBlockBase 

+

40from pyVHDLParser.Blocks.Sequential import PackageBody 

+

41from pyVHDLParser.Blocks.List import GenericList 

+

42 

+

43 

+

44@export 

+

45class EndBlock(EndBlockBase): 

+

46 KEYWORD = PackageKeyword 

+

47 KEYWORD_IS_OPTIONAL = True 

+

48 EXPECTED_NAME = KEYWORD.__KEYWORD__ 

+

49 

+

50 

+

51@export 

+

52class DeclarativeRegion(SequentialDeclarativeRegion): 

+

53 END_BLOCK = EndBlock 

+

54 

+

55 @classmethod 

+

56 def __cls_init__(cls): 

+

57 super().__cls_init__() 

+

58 

+

59 # TODO: use key assignment: a[b] = c 

+

60 cls.KEYWORDS.update({ 

+

61 # Keyword Transition 

+

62 GenericKeyword: GenericList.OpenBlock.stateGenericKeyword 

+

63 }) 

+

64 

+

65@export 

+

66class NameBlock(Block): 

+

67 @classmethod 

+

68 def statePackageKeyword(cls, parserState: TokenToBlockParser): 

+

69 token = parserState.Token 

+

70 if isinstance(token, SpaceToken): 

+

71 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

72 parserState.NextState = cls.stateWhitespace1 

+

73 return 

+

74 elif isinstance(token, (LinebreakToken, CommentToken)): 74 ↛ 82line 74 didn't jump to line 82, because the condition on line 74 was never false

+

75 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

76 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

77 _ = block(parserState.NewBlock, token) 

+

78 parserState.TokenMarker = None 

+

79 parserState.NextState = cls.stateWhitespace1 

+

80 return 

+

81 

+

82 raise BlockParserException("Expected whitespace after keyword PACKAGE.", token) 

+

83 

+

84 @classmethod 

+

85 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

86 token = parserState.Token 

+

87 if isinstance(token, WordToken): 87 ↛ 96line 87 didn't jump to line 96, because the condition on line 87 was never false

+

88 if token <= "body": 

+

89 parserState.NewToken = BodyKeyword(fromExistingToken=token) 

+

90 parserState.NextState = PackageBody.NameBlock.stateBodyKeyword 

+

91 return 

+

92 else: 

+

93 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

94 parserState.NextState = cls.statePackageName 

+

95 return 

+

96 elif isinstance(token, LinebreakToken): 

+

97 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

98 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

99 _ = LinebreakBlock(parserState.NewBlock, token) 

+

100 else: 

+

101 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

102 parserState.TokenMarker = None 

+

103 return 

+

104 elif isinstance(token, CommentToken): 

+

105 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

106 _ = CommentBlock(parserState.NewBlock, token) 

+

107 parserState.TokenMarker = None 

+

108 return 

+

109 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

110 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

111 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

112 parserState.TokenMarker = None 

+

113 return 

+

114 

+

115 raise BlockParserException("Expected package name (identifier).", token) 

+

116 

+

117 @classmethod 

+

118 def statePackageName(cls, parserState: TokenToBlockParser): 

+

119 token = parserState.Token 

+

120 if isinstance(token, SpaceToken): 

+

121 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

122 parserState.NextState = cls.stateWhitespace2 

+

123 return 

+

124 elif isinstance(token, (LinebreakToken, CommentToken)): 124 ↛ 132line 124 didn't jump to line 132, because the condition on line 124 was never false

+

125 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

126 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

127 _ = block(parserState.NewBlock, token) 

+

128 parserState.TokenMarker = None 

+

129 parserState.NextState = cls.stateWhitespace2 

+

130 return 

+

131 

+

132 raise BlockParserException("Expected whitespace after package name.", token) 

+

133 

+

134 @classmethod 

+

135 def stateWhitespace2(cls, parserState: TokenToBlockParser): 

+

136 token = parserState.Token 

+

137 if isinstance(token, WordToken) and (token <= "is"): 

+

138 parserState.NewToken = IsKeyword(fromExistingToken=token) 

+

139 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

140 parserState.TokenMarker = None 

+

141 parserState.NextState = DeclarativeRegion.stateDeclarativeRegion 

+

142 return 

+

143 elif isinstance(token, LinebreakToken): 143 ↛ 144line 143 didn't jump to line 144, because the condition on line 143 was never true

+

144 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

145 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

146 _ = LinebreakBlock(parserState.NewBlock, token) 

+

147 else: 

+

148 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

149 parserState.TokenMarker = None 

+

150 return 

+

151 elif isinstance(token, CommentToken): 151 ↛ 152line 151 didn't jump to line 152, because the condition on line 151 was never true

+

152 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

153 _ = CommentBlock(parserState.NewBlock, token) 

+

154 parserState.TokenMarker = None 

+

155 return 

+

156 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 156 ↛ 157line 156 didn't jump to line 157, because the condition on line 156 was never true

+

157 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

158 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

159 parserState.TokenMarker = None 

+

160 return 

+

161 

+

162 raise BlockParserException("Expected keyword IS after package name.", token) 

+
+ + + diff --git a/coverage/d_07f20d4589d19dfa_Procedure_py.html b/coverage/d_07f20d4589d19dfa_Procedure_py.html new file mode 100644 index 000000000..4730215b1 --- /dev/null +++ b/coverage/d_07f20d4589d19dfa_Procedure_py.html @@ -0,0 +1,357 @@ + + + + + Coverage for pyVHDLParser/Blocks/Sequential/Procedure.py: 28% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/Sequential/Procedure.py: + 28% +

+ +

+ 202 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Token import SpaceToken, LinebreakToken, CommentToken, CharacterToken, IndentationToken, MultiLineCommentToken 

+

33from pyVHDLParser.Token.Keywords import WordToken, BoundaryToken, IdentifierToken, GenericKeyword, ParameterKeyword, ProcedureKeyword, EndKeyword, ImpureKeyword, PureKeyword 

+

34from pyVHDLParser.Token.Keywords import UseKeyword, ConstantKeyword, VariableKeyword, IsKeyword, EndToken, BeginKeyword, FunctionKeyword, ReportKeyword 

+

35from pyVHDLParser.Blocks import Block, BlockParserException, CommentBlock, TokenToBlockParser 

+

36from pyVHDLParser.Blocks.Common import LinebreakBlock, IndentationBlock, WhitespaceBlock 

+

37# from pyVHDLParser.Blocks.ControlStructure import If, Case, ForLoop, WhileLoop, Return 

+

38from pyVHDLParser.Blocks.Generic import SequentialBeginBlock, SequentialDeclarativeRegion 

+

39from pyVHDLParser.Blocks.Generic1 import EndBlock as EndBlockBase 

+

40from pyVHDLParser.Blocks.List import GenericList, ParameterList 

+

41 

+

42 

+

43@export 

+

44class EndBlock(EndBlockBase): 

+

45 KEYWORD = ProcedureKeyword 

+

46 KEYWORD_IS_OPTIONAL = True 

+

47 EXPECTED_NAME = KEYWORD.__KEYWORD__ 

+

48 

+

49 

+

50@export 

+

51class BeginBlock(SequentialBeginBlock): 

+

52 END_BLOCK = EndBlock 

+

53 

+

54 

+

55@export 

+

56class DeclarativeRegion(SequentialDeclarativeRegion): 

+

57 BEGIN_BLOCK = BeginBlock 

+

58 END_BLOCK = EndBlock 

+

59 

+

60 

+

61@export 

+

62class NameBlock(Block): 

+

63 @classmethod 

+

64 def stateProcedureKeyword(cls, parserState: TokenToBlockParser): 

+

65 token = parserState.Token 

+

66 if isinstance(token, SpaceToken): 66 ↛ 70line 66 didn't jump to line 70, because the condition on line 66 was never false

+

67 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

68 parserState.NextState = cls.stateWhitespace1 

+

69 return 

+

70 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

71 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

72 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

73 _ = block(parserState.NewBlock, token) 

+

74 parserState.TokenMarker = None 

+

75 parserState.NextState = cls.stateWhitespace1 

+

76 return 

+

77 

+

78 raise BlockParserException("Expected whitespace after keyword PROCEDURE.", token) 

+

79 

+

80 @classmethod 

+

81 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

82 token = parserState.Token 

+

83 if isinstance(token, WordToken): 83 ↛ 87line 83 didn't jump to line 87, because the condition on line 83 was never false

+

84 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

85 parserState.NextState = cls.stateProcedureName 

+

86 return 

+

87 elif isinstance(token, LinebreakToken): 

+

88 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

89 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

90 _ = LinebreakBlock(parserState.NewBlock, token) 

+

91 else: 

+

92 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

93 parserState.TokenMarker = None 

+

94 return 

+

95 elif isinstance(token, CommentToken): 

+

96 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

97 _ = CommentBlock(parserState.NewBlock, token) 

+

98 parserState.TokenMarker = None 

+

99 return 

+

100 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

101 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

102 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

103 parserState.TokenMarker = None 

+

104 return 

+

105 

+

106 raise BlockParserException("Expected procedure name (designator).", token) 

+

107 

+

108 @classmethod 

+

109 def stateProcedureName(cls, parserState: TokenToBlockParser): 

+

110 token = parserState.Token 

+

111 if isinstance(token, CharacterToken): 111 ↛ 127line 111 didn't jump to line 127, because the condition on line 111 was never false

+

112 if token == "(": 112 ↛ 113line 112 didn't jump to line 113, because the condition on line 112 was never true

+

113 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

114 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

115 _ = ParameterList.OpenBlock(parserState.NewBlock, parserState.NewToken) 

+

116 parserState.TokenMarker = None 

+

117 parserState.NextState = VoidBlock.stateAfterParameterList 

+

118 parserState.PushState = ParameterList.OpenBlock.stateOpeningParenthesis 

+

119 parserState.Counter = 1 

+

120 return 

+

121 elif token == ";": 121 ↛ 139line 121 didn't jump to line 139, because the condition on line 121 was never false

+

122 parserState.NewToken = EndToken(fromExistingToken=token) 

+

123 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) # .PreviousToken) 

+

124# _ = EndBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

125 parserState.Pop() 

+

126 return 

+

127 elif isinstance(token, SpaceToken): 

+

128 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

129 parserState.NextState = cls.stateWhitespace2 

+

130 return 

+

131 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

132 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

133 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

134 _ = block(parserState.NewBlock, token) 

+

135 parserState.TokenMarker = None 

+

136 parserState.NextState = cls.stateWhitespace2 

+

137 return 

+

138 

+

139 raise BlockParserException("Expected ';', '(' or whitespace after procedure name.", token) 

+

140 

+

141 @classmethod 

+

142 def stateWhitespace2(cls, parserState: TokenToBlockParser): 

+

143 token = parserState.Token 

+

144 if isinstance(token, CharacterToken): 

+

145 if token == "(": 

+

146 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

147 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

148 _ = ParameterList.OpenBlock(parserState.NewBlock, parserState.NewToken) 

+

149 parserState.TokenMarker = None 

+

150 parserState.NextState = VoidBlock.stateAfterParameterList 

+

151 parserState.PushState = ParameterList.OpenBlock.stateOpeningParenthesis 

+

152 parserState.Counter = 1 

+

153 return 

+

154 elif token == ";": 

+

155 parserState.NewToken = EndToken(fromExistingToken=token) 

+

156 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) # .PreviousToken) 

+

157# _ = EndBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

158 parserState.Pop() 

+

159 return 

+

160 elif isinstance(token, WordToken): 

+

161 keyword = token.Value.lower() 

+

162 if keyword == "is": 

+

163 parserState.NewToken = IsKeyword(fromExistingToken=token) 

+

164 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

165 _ = VoidBlock(parserState.NewBlock, parserState.NewToken) 

+

166 parserState.TokenMarker = parserState.NewToken 

+

167 parserState.NextState = VoidBlock.stateDeclarativeRegion 

+

168 return 

+

169 elif keyword == "generic": 

+

170 parserState.NewToken = GenericKeyword(fromExistingToken=token) 

+

171 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

172 parserState.NextState = GenericList.OpenBlock.stateGenericKeyword 

+

173 parserState.TokenMarker = parserState.NewToken 

+

174 return 

+

175 elif keyword == "parameter": 

+

176 parserState.NewToken = ParameterKeyword(fromExistingToken=token) 

+

177 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

178 parserState.NextState = ParameterList.OpenBlock.stateParameterKeyword 

+

179 parserState.TokenMarker = parserState.NewToken 

+

180 return 

+

181 elif isinstance(token, LinebreakToken): 

+

182 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

183 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

184 _ = LinebreakBlock(parserState.NewBlock, token) 

+

185 else: 

+

186 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

187 parserState.TokenMarker = None 

+

188 return 

+

189 elif isinstance(token, CommentToken): 

+

190 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

191 _ = CommentBlock(parserState.NewBlock, token) 

+

192 parserState.TokenMarker = None 

+

193 return 

+

194 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

195 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

196 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

197 parserState.TokenMarker = None 

+

198 return 

+

199 

+

200 raise BlockParserException("Expected ';', '(' or keywords GENERIC, PARAMETER or RETURN after procedure name.", token) 

+

201 

+

202 

+

203@export 

+

204class VoidBlock(Block): 

+

205 @classmethod 

+

206 def stateAfterParameterList(cls, parserState: TokenToBlockParser): 

+

207 token = parserState.Token 

+

208 if isinstance(token, CharacterToken) and (token == ";"): 

+

209 parserState.NewToken = EndToken(fromExistingToken=token) 

+

210 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

211 parserState.Pop() 

+

212 return 

+

213 elif isinstance(token, WordToken): 

+

214 if token <= "is": 

+

215 parserState.NewToken = IsKeyword(fromExistingToken=token) 

+

216 parserState.NewBlock = VoidBlock(parserState.LastBlock, parserState.TokenMarker, parserState.NewToken) 

+

217 parserState.NextState = DeclarativeRegion.stateDeclarativeRegion 

+

218 return 

+

219 elif isinstance(token, SpaceToken): 

+

220 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

221 parserState.NextState = cls.stateWhitespace1 

+

222 return 

+

223 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

224 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

225 parserState.NewBlock = block(parserState.LastBlock, token) 

+

226 parserState.TokenMarker = None 

+

227 parserState.NextState = cls.stateWhitespace1 

+

228 return 

+

229 

+

230 raise BlockParserException("Expected keyword RETURN.", token) 

+

231 

+

232 @classmethod 

+

233 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

234 token = parserState.Token 

+

235 if isinstance(token, WordToken) and (token <= "is"): 

+

236 parserState.NewToken = IsKeyword(fromExistingToken=token) 

+

237 parserState.NextState = DeclarativeRegion.stateDeclarativeRegion 

+

238 return 

+

239 elif isinstance(token, LinebreakToken): 

+

240 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

241 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

242 _ = LinebreakBlock(parserState.NewBlock, token) 

+

243 else: 

+

244 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

245 parserState.TokenMarker = None 

+

246 return 

+

247 elif isinstance(token, CommentToken): 

+

248 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

249 _ = CommentBlock(parserState.NewBlock, token) 

+

250 parserState.TokenMarker = None 

+

251 return 

+

252 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

253 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

254 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

255 parserState.TokenMarker = None 

+

256 return 

+

257 

+

258 raise BlockParserException("Expected procedure name (designator).", token) 

+
+ + + diff --git a/coverage/d_07f20d4589d19dfa_Process_py.html b/coverage/d_07f20d4589d19dfa_Process_py.html new file mode 100644 index 000000000..5abcf40c9 --- /dev/null +++ b/coverage/d_07f20d4589d19dfa_Process_py.html @@ -0,0 +1,351 @@ + + + + + Coverage for pyVHDLParser/Blocks/Sequential/Process.py: 37% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/Sequential/Process.py: + 37% +

+ +

+ 183 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Token import CharacterToken, SpaceToken, LinebreakToken, CommentToken, IndentationToken, MultiLineCommentToken, SingleLineCommentToken 

+

33from pyVHDLParser.Token.Keywords import WordToken, BoundaryToken, IsKeyword, UseKeyword, ConstantKeyword, ImpureKeyword, PureKeyword 

+

34from pyVHDLParser.Token.Keywords import VariableKeyword, ProcessKeyword, BeginKeyword, FunctionKeyword, ProcedureKeyword 

+

35from pyVHDLParser.Blocks import Block, CommentBlock, BlockParserException, TokenToBlockParser 

+

36from pyVHDLParser.Blocks.Common import LinebreakBlock, IndentationBlock, WhitespaceBlock 

+

37# from pyVHDLParser.Blocks.ControlStructure import If, Case, ForLoop, WhileLoop 

+

38from pyVHDLParser.Blocks.Generic import SequentialBeginBlock, SequentialDeclarativeRegion 

+

39from pyVHDLParser.Blocks.Generic1 import EndBlock as EndBlockBase 

+

40from pyVHDLParser.Blocks.List import SensitivityList 

+

41 

+

42 

+

43@export 

+

44class EndBlock(EndBlockBase): 

+

45 KEYWORD = ProcessKeyword 

+

46 KEYWORD_IS_OPTIONAL = True 

+

47 EXPECTED_NAME = KEYWORD.__KEYWORD__ 

+

48 

+

49 

+

50@export 

+

51class BeginBlock(SequentialBeginBlock): 

+

52 END_BLOCK = EndBlock 

+

53 

+

54 

+

55@export 

+

56class DeclarativeRegion(SequentialDeclarativeRegion): 

+

57 BEGIN_BLOCK = BeginBlock 

+

58 END_BLOCK = EndBlock 

+

59 

+

60 

+

61@export 

+

62class OpenBlock(Block): 

+

63 @classmethod 

+

64 def stateProcessKeyword(cls, parserState: TokenToBlockParser): 

+

65 token = parserState.Token 

+

66 if isinstance(token, CharacterToken)and (token == "("): 66 ↛ 67line 66 didn't jump to line 67, because the condition on line 66 was never true

+

67 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

68 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

69 parserState.NextState = OpenBlock2.stateAfterSensitivityList 

+

70 parserState.PushState = SensitivityList.OpenBlock.stateOpeningParenthesis 

+

71 parserState.Counter = 1 

+

72 return 

+

73 elif isinstance(token, SpaceToken): 73 ↛ 76line 73 didn't jump to line 76, because the condition on line 73 was never false

+

74 parserState.NextState = cls.stateWhitespace1 

+

75 return 

+

76 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

77 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

78 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

79 _ = block(parserState.NewBlock, token) 

+

80 parserState.TokenMarker = None 

+

81 parserState.NextState = cls.stateWhitespace1 

+

82 return 

+

83 

+

84 raise BlockParserException("Expected '(' or whitespace after keyword PROCESS.", token) 

+

85 

+

86 @classmethod 

+

87 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

88 token = parserState.Token 

+

89 if isinstance(token, CharacterToken)and (token == "("): 89 ↛ 90line 89 didn't jump to line 90, because the condition on line 89 was never true

+

90 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

91 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

92 parserState.NextState = OpenBlock2.stateAfterSensitivityList 

+

93 parserState.PushState = SensitivityList.OpenBlock.stateOpeningParenthesis 

+

94 parserState.Counter = 1 

+

95 return 

+

96 elif isinstance(token, LinebreakToken): 96 ↛ 97line 96 didn't jump to line 97, because the condition on line 96 was never true

+

97 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

98 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

99 _ = LinebreakBlock(parserState.NewBlock, token) 

+

100 else: 

+

101 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

102 parserState.TokenMarker = None 

+

103 return 

+

104 elif isinstance(token, CommentToken): 104 ↛ 105line 104 didn't jump to line 105, because the condition on line 104 was never true

+

105 parserState.NewBlock = CommentBlock(parserState.LastBlock, token) 

+

106 parserState.TokenMarker = None 

+

107 return 

+

108 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 108 ↛ 109line 108 didn't jump to line 109, because the condition on line 108 was never true

+

109 return 

+

110 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 110 ↛ 111line 110 didn't jump to line 111, because the condition on line 110 was never true

+

111 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

112 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

113 parserState.TokenMarker = None 

+

114 return 

+

115 elif isinstance(token, WordToken): 115 ↛ 136line 115 didn't jump to line 136, because the condition on line 115 was never false

+

116 tokenValue = token.Value.lower() 

+

117 

+

118 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken) 

+

119 

+

120 for keyword in OpenBlock2.KEYWORDS: 

+

121 if tokenValue == keyword.__KEYWORD__: 121 ↛ 122line 121 didn't jump to line 122, because the condition on line 121 was never true

+

122 newToken = keyword(fromExistingToken=token) 

+

123 parserState.NextState = DeclarativeRegion.stateDeclarativeRegion 

+

124 parserState.PushState = cls.KEYWORDS[keyword] 

+

125 parserState.NewToken = newToken 

+

126 parserState.TokenMarker = newToken 

+

127 return 

+

128 

+

129 if tokenValue == "begin": 129 ↛ 136line 129 didn't jump to line 136, because the condition on line 129 was never false

+

130 parserState.NewToken = BeginKeyword(fromExistingToken=token) 

+

131 _ = BeginBlock(parserState.NewBlock, parserState.NewToken) 

+

132 parserState.TokenMarker = None 

+

133 parserState.NextState = BeginBlock.stateSequentialRegion 

+

134 return 

+

135 

+

136 raise BlockParserException("Expected '(' after keyword PROCESS.", token) 

+

137 

+

138# TODO: Find a better name 

+

139@export 

+

140class OpenBlock2(Block): 

+

141 KEYWORDS = None 

+

142 

+

143 # TODO: Merge with OpenBlock.KEYWORDS ?? 

+

144 @classmethod 

+

145 def __cls_init__(cls): 

+

146 from pyVHDLParser.Blocks.Object.Variable import VariableDeclarationBlock, VariableDeclarationEndMarkerBlock 

+

147 from pyVHDLParser.Blocks.Object.Constant import ConstantDeclarationBlock, ConstantDeclarationEndMarkerBlock 

+

148 from pyVHDLParser.Blocks.Reference import Use 

+

149 from pyVHDLParser.Blocks.Reporting import Report 

+

150 from pyVHDLParser.Blocks.Sequential import Procedure, Function 

+

151 

+

152 cls.KEYWORDS = { 

+

153 # Keyword Transition 

+

154 UseKeyword: Use.StartBlock.stateUseKeyword, 

+

155 ConstantKeyword: ConstantDeclarationBlock.stateConstantKeyword, 

+

156 VariableKeyword: VariableDeclarationBlock.stateVariableKeyword, 

+

157 FunctionKeyword: Function.NameBlock.stateFunctionKeyword, 

+

158 ProcedureKeyword: Procedure.NameBlock.stateProcedureKeyword, 

+

159 ImpureKeyword: Function.NameBlock.stateImpureKeyword, 

+

160 PureKeyword: Function.NameBlock.statePureKeyword 

+

161 } 

+

162 

+

163 @classmethod 

+

164 def stateAfterSensitivityList(cls, parserState: TokenToBlockParser): 

+

165 token = parserState.Token 

+

166 if isinstance(token, WordToken): 

+

167 tokenValue = token.Value.lower() 

+

168 

+

169 for keyword in OpenBlock2.KEYWORDS: 

+

170 if tokenValue == keyword.__KEYWORD__: 

+

171 newToken = keyword(fromExistingToken=token) 

+

172 parserState.NextState = DeclarativeRegion.stateDeclarativeRegion 

+

173 parserState.PushState = OpenBlock2.KEYWORDS[keyword] 

+

174 parserState.NewToken = newToken 

+

175 parserState.TokenMarker = newToken 

+

176 return 

+

177 

+

178 if tokenValue == "begin": 

+

179 parserState.NewToken = BeginKeyword(fromExistingToken=token) 

+

180 parserState.NewBlock = BeginBlock(parserState.LastBlock, parserState.NewToken) 

+

181 parserState.TokenMarker = None 

+

182 parserState.NextState = BeginBlock.stateSequentialRegion 

+

183 return 

+

184 elif tokenValue == "is": 

+

185 parserState.NewToken = IsKeyword(fromExistingToken=token) 

+

186 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, parserState.NewToken) 

+

187 parserState.TokenMarker = None 

+

188 parserState.NextState = DeclarativeRegion.stateDeclarativeRegion 

+

189 return 

+

190 elif isinstance(token, SpaceToken): 

+

191 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

192 parserState.TokenMarker = parserState.NewToken 

+

193 parserState.NextState = cls.stateWhitespace1 

+

194 return 

+

195 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

196 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

197 parserState.NewBlock = block(parserState.LastBlock, token) 

+

198 parserState.TokenMarker = None 

+

199 parserState.NextState = cls.stateWhitespace1 

+

200 return 

+

201 

+

202 raise BlockParserException("Expected whitespace after keyword ENTITY.", token) 

+

203 

+

204 @classmethod 

+

205 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

206 token = parserState.Token 

+

207 if isinstance(token, WordToken): 

+

208 tokenValue = token.Value.lower() 

+

209 

+

210 for keyword in cls.KEYWORDS: 

+

211 if tokenValue == keyword.__KEYWORD__: 

+

212 newToken = keyword(fromExistingToken=token) 

+

213 parserState.NextState = DeclarativeRegion.stateDeclarativeRegion 

+

214 parserState.PushState = cls.KEYWORDS[keyword] 

+

215 parserState.NewToken = newToken 

+

216 parserState.TokenMarker = newToken 

+

217 return 

+

218 

+

219 if tokenValue == "begin": 

+

220 parserState.NewToken = BeginKeyword(fromExistingToken=token) 

+

221 parserState.NewBlock = BeginBlock(parserState.LastBlock, parserState.NewToken) 

+

222 parserState.TokenMarker = None 

+

223 parserState.NextState = BeginBlock.stateSequentialRegion 

+

224 return 

+

225 elif tokenValue == "is": 

+

226 parserState.NewToken = IsKeyword(fromExistingToken=token) 

+

227 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, parserState.NewToken) 

+

228 parserState.TokenMarker = None 

+

229 parserState.NextState = DeclarativeRegion.stateDeclarativeRegion 

+

230 return 

+

231 elif isinstance(token, LinebreakToken): 

+

232 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

233 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

234 _ = LinebreakBlock(parserState.NewBlock, token) 

+

235 else: 

+

236 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

237 parserState.TokenMarker = None 

+

238 return 

+

239 elif isinstance(token, CommentToken): 

+

240 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

241 _ = CommentBlock(parserState.NewBlock, token) 

+

242 parserState.TokenMarker = None 

+

243 return 

+

244 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

245 return 

+

246 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

247 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

248 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

249 parserState.TokenMarker = None 

+

250 return 

+

251 

+

252 raise BlockParserException("Expected declarations or keyword IS after sensitivity list.", token) 

+
+ + + diff --git a/coverage/d_144afdd2475fd7ef___init___py.html b/coverage/d_144afdd2475fd7ef___init___py.html new file mode 100644 index 000000000..9d813b8a9 --- /dev/null +++ b/coverage/d_144afdd2475fd7ef___init___py.html @@ -0,0 +1,179 @@ + + + + + Coverage for pyVHDLParser/DocumentModel/ObjectDeclaration/__init__.py: 0% + + + + + +
+
+

+ Coverage for pyVHDLParser/DocumentModel/ObjectDeclaration/__init__.py: + 0% +

+ +

+ 33 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.TerminalUI import LineTerminal 

+

31 

+

32from pyVHDLModel.Object import Constant as ConstantBase 

+

33 

+

34from pyVHDLParser.Token.Keywords import IdentifierToken 

+

35from pyVHDLParser.Blocks import BlockParserException 

+

36from pyVHDLParser.Blocks.Object.Constant import ConstantDeclarationBlock 

+

37# from pyVHDLParser.DocumentModel.Parser import GroupToModelParser 

+

38 

+

39# Type alias for type hinting 

+

40class ParserState: 

+

41 pass 

+

42# ParserState = GroupToModelParser.GroupParserState 

+

43 

+

44 

+

45class Constant(ConstantBase): 

+

46 def __init__(self, constantName): 

+

47 super().__init__() 

+

48 self._name = constantName 

+

49 

+

50 @classmethod 

+

51 def stateParse(cls, parserState: ParserState): 

+

52 assert isinstance(parserState.CurrentGroup, ConstantDeclarationBlock) 

+

53 

+

54 cls.stateParseConstantName(parserState) 

+

55 

+

56 parserState.Pop() 

+

57 

+

58 @classmethod 

+

59 def stateParseConstantName(cls, parserState: ParserState): 

+

60 assert isinstance(parserState.CurrentGroup, ConstantDeclarationBlock) 

+

61 

+

62 tokenIterator = iter(parserState) 

+

63 for token in tokenIterator: 

+

64 if isinstance(token, IdentifierToken): 

+

65 constantName = token.Value 

+

66 break 

+

67 else: 

+

68 raise BlockParserException("Constant name (identifier) not found.", None) 

+

69 

+

70 constant = cls(constantName) 

+

71 

+

72 parserState.CurrentNode.AddConstant(constant) 

+

73 parserState.CurrentNode = constant 

+

74 

+

75 def __str__(self): 

+

76 return "{GREEN}{0}{NOCOLOR} : {YELLOW}{1}{NOCOLOR}".format(self._name, self._subtype, **LineTerminal().Foreground) 

+

77 

+

78 def Print(self, indent=0): 

+

79 indentation = " " * indent 

+

80 print("{indent}{DARK_CYAN}CONSTANT {GREEN}{name}{NOCOLOR} : {GREEN}{type}{NOCOLOR} := xxx;".format(indent=indentation, name=self._name, type="", **LineTerminal().Foreground)) 

+
+ + + diff --git a/coverage/d_1582d9098c720d29_SignalAssignment_py.html b/coverage/d_1582d9098c720d29_SignalAssignment_py.html new file mode 100644 index 000000000..16d99ae3e --- /dev/null +++ b/coverage/d_1582d9098c720d29_SignalAssignment_py.html @@ -0,0 +1,289 @@ + + + + + Coverage for pyVHDLParser/Blocks/Assignment/SignalAssignment.py: 0% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/Assignment/SignalAssignment.py: + 0% +

+ +

+ 149 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Token import CharacterToken, SpaceToken, WordToken, LinebreakToken 

+

33from pyVHDLParser.Token.Keywords import BoundaryToken, IdentifierToken, EndToken 

+

34from pyVHDLParser.Blocks import BlockParserException, Block, TokenToBlockParser 

+

35from pyVHDLParser.Blocks.Common import LinebreakBlock, WhitespaceBlock 

+

36from pyVHDLParser.Blocks.Comment import SingleLineCommentBlock, MultiLineCommentBlock 

+

37 

+

38 

+

39@export 

+

40class SignalAssignmentBlock(Block): 

+

41 @classmethod 

+

42 def stateSignalAssignmentKeyword(cls, parserState: TokenToBlockParser): 

+

43 token = parserState.Token 

+

44 errorMessage = "Expected whitespace after keyword SignalAssignment." 

+

45 if isinstance(token, CharacterToken): 

+

46 if token == "\n": 

+

47 parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

48 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

49 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

50 parserState.TokenMarker = None 

+

51 parserState.NextState = cls.stateWhitespace1 

+

52 parserState.PushState = LinebreakBlock.stateLinebreak 

+

53 return 

+

54 elif token == "-": 

+

55 parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

56 parserState.TokenMarker = None 

+

57 parserState.NextState = cls.stateWhitespace1 

+

58 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

59 parserState.TokenMarker = token 

+

60 return 

+

61 elif token == "/": 

+

62 parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

63 parserState.TokenMarker = None 

+

64 parserState.NextState = cls.stateWhitespace1 

+

65 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

66 parserState.TokenMarker = token 

+

67 return 

+

68 elif isinstance(token, SpaceToken): 

+

69 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

70 parserState.NextState = cls.stateWhitespace1 

+

71 return 

+

72 

+

73 raise BlockParserException(errorMessage, token) 

+

74 

+

75 @classmethod 

+

76 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

77 token = parserState.Token 

+

78 errorMessage = "Expected signalAssignment name (identifier)." 

+

79 if isinstance(token, CharacterToken): 

+

80 if token == "\n": 

+

81 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

82 if not isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

83 parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

84 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

85 else: 

+

86 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

87 parserState.TokenMarker = None 

+

88 parserState.PushState = LinebreakBlock.stateLinebreak 

+

89 return 

+

90 elif token == "-": 

+

91 parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

92 parserState.TokenMarker = None 

+

93 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

94 parserState.TokenMarker = token 

+

95 return 

+

96 elif token == "/": 

+

97 parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

98 parserState.TokenMarker = None 

+

99 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

100 parserState.TokenMarker = token 

+

101 return 

+

102 elif isinstance(token, WordToken): 

+

103 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

104 parserState.NextState = cls.stateSignalAssignmentName 

+

105 return 

+

106 elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

107 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

108 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

109 parserState.TokenMarker = None 

+

110 return 

+

111 

+

112 raise BlockParserException(errorMessage, token) 

+

113 

+

114 @classmethod 

+

115 def stateSignalAssignmentName(cls, parserState: TokenToBlockParser): 

+

116 token = parserState.Token 

+

117 errorMessage = "Expected ';' after signalAssignment name." 

+

118 if isinstance(token, CharacterToken): 

+

119 if token == ";": 

+

120 parserState.NewToken = EndToken(fromExistingToken=token) 

+

121 parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

122 parserState.Pop() 

+

123 return 

+

124 elif token == "\n": 

+

125 parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

126 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

127 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

128 parserState.TokenMarker = None 

+

129 parserState.NextState = cls.stateWhitespace2 

+

130 parserState.PushState = LinebreakBlock.stateLinebreak 

+

131 return 

+

132 elif token == "-": 

+

133 parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

134 parserState.TokenMarker = None 

+

135 parserState.NextState = cls.stateWhitespace2 

+

136 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

137 parserState.TokenMarker = token 

+

138 return 

+

139 elif token == "/": 

+

140 parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

141 parserState.TokenMarker = None 

+

142 parserState.NextState = cls.stateWhitespace2 

+

143 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

144 parserState.TokenMarker = token 

+

145 return 

+

146 elif isinstance(token, SpaceToken): 

+

147 parserState.NextState = cls.stateWhitespace2 

+

148 return 

+

149 

+

150 raise BlockParserException(errorMessage, token) 

+

151 

+

152 @classmethod 

+

153 def stateWhitespace2(cls, parserState: TokenToBlockParser): 

+

154 token = parserState.Token 

+

155 errorMessage = "Expected ';'." 

+

156 if isinstance(token, CharacterToken): 

+

157 if token == ";": 

+

158 parserState.NewToken = EndToken(fromExistingToken=token) 

+

159 parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

160 parserState.Pop() 

+

161 return 

+

162 elif token == "\n": 

+

163 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

164 if not isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

165 parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

166 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

167 else: 

+

168 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

169 parserState.TokenMarker = None 

+

170 parserState.PushState = LinebreakBlock.stateLinebreak 

+

171 return 

+

172 elif token == "-": 

+

173 parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

174 parserState.TokenMarker = None 

+

175 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

176 parserState.TokenMarker = token 

+

177 return 

+

178 elif token == "/": 

+

179 parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

180 parserState.TokenMarker = None 

+

181 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

182 parserState.TokenMarker = token 

+

183 return 

+

184 elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

185 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

186 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

187 parserState.TokenMarker = None 

+

188 return 

+

189 

+

190 raise BlockParserException(errorMessage, token) 

+
+ + + diff --git a/coverage/d_1582d9098c720d29_VariableAssignment_py.html b/coverage/d_1582d9098c720d29_VariableAssignment_py.html new file mode 100644 index 000000000..d45ece447 --- /dev/null +++ b/coverage/d_1582d9098c720d29_VariableAssignment_py.html @@ -0,0 +1,289 @@ + + + + + Coverage for pyVHDLParser/Blocks/Assignment/VariableAssignment.py: 0% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/Assignment/VariableAssignment.py: + 0% +

+ +

+ 149 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Token import CharacterToken, SpaceToken, WordToken, LinebreakToken 

+

33from pyVHDLParser.Token.Keywords import BoundaryToken, IdentifierToken, EndToken 

+

34from pyVHDLParser.Blocks import BlockParserException, Block, TokenToBlockParser 

+

35from pyVHDLParser.Blocks.Common import LinebreakBlock, WhitespaceBlock 

+

36from pyVHDLParser.Blocks.Comment import SingleLineCommentBlock, MultiLineCommentBlock 

+

37 

+

38 

+

39@export 

+

40class SignalAssignmentBlock(Block): 

+

41 @classmethod 

+

42 def stateSignalAssignmentKeyword(cls, parserState: TokenToBlockParser): 

+

43 token = parserState.Token 

+

44 errorMessage = "Expected whitespace after keyword SignalAssignment." 

+

45 if isinstance(token, CharacterToken): 

+

46 if token == "\n": 

+

47 parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

48 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

49 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

50 parserState.TokenMarker = None 

+

51 parserState.NextState = cls.stateWhitespace1 

+

52 parserState.PushState = LinebreakBlock.stateLinebreak 

+

53 return 

+

54 elif token == "-": 

+

55 parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

56 parserState.TokenMarker = None 

+

57 parserState.NextState = cls.stateWhitespace1 

+

58 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

59 parserState.TokenMarker = token 

+

60 return 

+

61 elif token == "/": 

+

62 parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

63 parserState.TokenMarker = None 

+

64 parserState.NextState = cls.stateWhitespace1 

+

65 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

66 parserState.TokenMarker = token 

+

67 return 

+

68 elif isinstance(token, SpaceToken): 

+

69 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

70 parserState.NextState = cls.stateWhitespace1 

+

71 return 

+

72 

+

73 raise BlockParserException(errorMessage, token) 

+

74 

+

75 @classmethod 

+

76 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

77 token = parserState.Token 

+

78 errorMessage = "Expected signalAssignment name (identifier)." 

+

79 if isinstance(token, CharacterToken): 

+

80 if token == "\n": 

+

81 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

82 if not isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

83 parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

84 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

85 else: 

+

86 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

87 parserState.TokenMarker = None 

+

88 parserState.PushState = LinebreakBlock.stateLinebreak 

+

89 return 

+

90 elif token == "-": 

+

91 parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

92 parserState.TokenMarker = None 

+

93 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

94 parserState.TokenMarker = token 

+

95 return 

+

96 elif token == "/": 

+

97 parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

98 parserState.TokenMarker = None 

+

99 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

100 parserState.TokenMarker = token 

+

101 return 

+

102 elif isinstance(token, WordToken): 

+

103 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

104 parserState.NextState = cls.stateSignalAssignmentName 

+

105 return 

+

106 elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

107 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

108 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

109 parserState.TokenMarker = None 

+

110 return 

+

111 

+

112 raise BlockParserException(errorMessage, token) 

+

113 

+

114 @classmethod 

+

115 def stateSignalAssignmentName(cls, parserState: TokenToBlockParser): 

+

116 token = parserState.Token 

+

117 errorMessage = "Expected ';' after signalAssignment name." 

+

118 if isinstance(token, CharacterToken): 

+

119 if token == ";": 

+

120 parserState.NewToken = EndToken(fromExistingToken=token) 

+

121 parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

122 parserState.Pop() 

+

123 return 

+

124 elif token == "\n": 

+

125 parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

126 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

127 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

128 parserState.TokenMarker = None 

+

129 parserState.NextState = cls.stateWhitespace2 

+

130 parserState.PushState = LinebreakBlock.stateLinebreak 

+

131 return 

+

132 elif token == "-": 

+

133 parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

134 parserState.TokenMarker = None 

+

135 parserState.NextState = cls.stateWhitespace2 

+

136 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

137 parserState.TokenMarker = token 

+

138 return 

+

139 elif token == "/": 

+

140 parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

141 parserState.TokenMarker = None 

+

142 parserState.NextState = cls.stateWhitespace2 

+

143 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

144 parserState.TokenMarker = token 

+

145 return 

+

146 elif isinstance(token, SpaceToken): 

+

147 parserState.NextState = cls.stateWhitespace2 

+

148 return 

+

149 

+

150 raise BlockParserException(errorMessage, token) 

+

151 

+

152 @classmethod 

+

153 def stateWhitespace2(cls, parserState: TokenToBlockParser): 

+

154 token = parserState.Token 

+

155 errorMessage = "Expected ';'." 

+

156 if isinstance(token, CharacterToken): 

+

157 if token == ";": 

+

158 parserState.NewToken = EndToken(fromExistingToken=token) 

+

159 parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

160 parserState.Pop() 

+

161 return 

+

162 elif token == "\n": 

+

163 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

164 if not isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

165 parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

166 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

167 else: 

+

168 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

169 parserState.TokenMarker = None 

+

170 parserState.PushState = LinebreakBlock.stateLinebreak 

+

171 return 

+

172 elif token == "-": 

+

173 parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

174 parserState.TokenMarker = None 

+

175 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

176 parserState.TokenMarker = token 

+

177 return 

+

178 elif token == "/": 

+

179 parserState.NewBlock = SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

180 parserState.TokenMarker = None 

+

181 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

182 parserState.TokenMarker = token 

+

183 return 

+

184 elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

185 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

186 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

187 parserState.TokenMarker = None 

+

188 return 

+

189 

+

190 raise BlockParserException(errorMessage, token) 

+
+ + + diff --git a/coverage/d_16378e9cfef5f3d4_Comment_py.html b/coverage/d_16378e9cfef5f3d4_Comment_py.html new file mode 100644 index 000000000..2563e1563 --- /dev/null +++ b/coverage/d_16378e9cfef5f3d4_Comment_py.html @@ -0,0 +1,159 @@ + + + + + Coverage for pyVHDLParser/Groups/Comment.py: 70% + + + + + +
+
+

+ Coverage for pyVHDLParser/Groups/Comment.py: + 70% +

+ +

+ 24 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Blocks import CommentBlock 

+

33from pyVHDLParser.Blocks.Common import WhitespaceBlock, LinebreakBlock, IndentationBlock 

+

34from pyVHDLParser.Groups import BlockToGroupParser, GroupParserException, Group 

+

35 

+

36 

+

37@export 

+

38class CommentGroup(Group): 

+

39 @classmethod 

+

40 def stateParse(cls, parserState: BlockToGroupParser): 

+

41 for block in parserState.GetBlockIterator: 

+

42 if not isinstance(block, CommentBlock): 

+

43 parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, block) 

+

44 parserState.Pop() 

+

45 return True 

+

46 

+

47 raise GroupParserException("End of library clause not found.", block) 

+

48 

+

49 

+

50@export 

+

51class WhitespaceGroup(Group): 

+

52 @classmethod 

+

53 def stateParse(cls, parserState: BlockToGroupParser): 

+

54 for block in parserState.GetBlockIterator: 54 ↛ 60line 54 didn't jump to line 60, because the loop on line 54 didn't complete

+

55 if not isinstance(block, (WhitespaceBlock, LinebreakBlock, IndentationBlock)): 

+

56 parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, block.PreviousBlock) 

+

57 parserState.Pop() 

+

58 return True 

+

59 

+

60 raise GroupParserException("End of library clause not found.", block) 

+
+ + + diff --git a/coverage/d_16378e9cfef5f3d4_Concurrent_py.html b/coverage/d_16378e9cfef5f3d4_Concurrent_py.html new file mode 100644 index 000000000..af3a7247e --- /dev/null +++ b/coverage/d_16378e9cfef5f3d4_Concurrent_py.html @@ -0,0 +1,182 @@ + + + + + Coverage for pyVHDLParser/Groups/Concurrent.py: 44% + + + + + +
+
+

+ Coverage for pyVHDLParser/Groups/Concurrent.py: + 44% +

+ +

+ 39 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Blocks.Reporting.Assert import AssertBlock 

+

33from pyVHDLParser.Blocks.Reporting.Report import ReportBlock 

+

34from pyVHDLParser.Groups import BlockToGroupParser, Group, GroupParserException 

+

35 

+

36 

+

37@export 

+

38class AssertGroup(Group): 

+

39 @classmethod 

+

40 def stateParse(cls, parserState: BlockToGroupParser): 

+

41 marker = parserState.Block 

+

42 if parserState.Block.MultiPart: 

+

43 for block in parserState.GetBlockIterator: 

+

44 if isinstance(block, AssertBlock) and not block.MultiPart: 

+

45 marker2 = block 

+

46 break 

+

47 else: 

+

48 raise GroupParserException("End of multi parted constant declaration not found.", block) 

+

49 else: 

+

50 marker2 = marker 

+

51 

+

52 parserState.NextGroup = cls(parserState.LastGroup, marker, marker2) 

+

53 parserState.Pop() 

+

54 return 

+

55 

+

56 

+

57@export 

+

58class ReportGroup(Group): 

+

59 @classmethod 

+

60 def stateParse(cls, parserState: BlockToGroupParser): 

+

61 marker = parserState.Block 

+

62 if parserState.Block.MultiPart: 

+

63 for block in parserState.GetBlockIterator: 

+

64 if isinstance(block, ReportBlock) and not block.MultiPart: 

+

65 marker2 = block 

+

66 break 

+

67 else: 

+

68 raise GroupParserException("End of multi parted constant declaration not found.", block) 

+

69 else: 

+

70 marker2 = marker 

+

71 

+

72 parserState.NextGroup = cls(parserState.LastGroup, marker, marker2) 

+

73 parserState.Pop() 

+

74 return 

+

75 

+

76 

+

77@export 

+

78class SignalAssignmentGroup(Group): 

+

79 @classmethod 

+

80 def stateParse(cls, parserState: BlockToGroupParser): 

+

81 block = parserState.Block 

+

82 

+

83 raise NotImplementedError("State=Parse: {0!r}".format(block)) 

+
+ + + diff --git a/coverage/d_16378e9cfef5f3d4_DesignUnit_py.html b/coverage/d_16378e9cfef5f3d4_DesignUnit_py.html new file mode 100644 index 000000000..b2d101f6e --- /dev/null +++ b/coverage/d_16378e9cfef5f3d4_DesignUnit_py.html @@ -0,0 +1,812 @@ + + + + + Coverage for pyVHDLParser/Groups/DesignUnit.py: 34% + + + + + +
+
+

+ Coverage for pyVHDLParser/Groups/DesignUnit.py: + 34% +

+ +

+ 465 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from collections import ChainMap 

+

31from itertools import chain 

+

32 

+

33from pyTooling.Decorators import export 

+

34 

+

35from pyVHDLParser.Blocks import CommentBlock, EndOfDocumentBlock 

+

36from pyVHDLParser.Blocks.Common import LinebreakBlock, IndentationBlock 

+

37from pyVHDLParser.Blocks.List import GenericList, ParameterList, PortList 

+

38from pyVHDLParser.Blocks.Object.Signal import SignalDeclarationBlock 

+

39from pyVHDLParser.Blocks.Object.Constant import ConstantDeclarationBlock 

+

40from pyVHDLParser.Blocks.Reference import Context, Library, Use 

+

41from pyVHDLParser.Blocks.Reporting.Assert import AssertBlock 

+

42from pyVHDLParser.Blocks.Sequential import Package, PackageBody, Function, Procedure, Process 

+

43from pyVHDLParser.Blocks.Structural import Entity, Architecture, Component, Configuration 

+

44from pyVHDLParser.Groups import GroupParserException, Group, EndOfDocumentGroup, BlockToGroupParser 

+

45from pyVHDLParser.Groups.Comment import CommentGroup, WhitespaceGroup 

+

46from pyVHDLParser.Groups.Concurrent import AssertGroup 

+

47from pyVHDLParser.Groups.List import GenericListGroup, ParameterListGroup, PortListGroup 

+

48from pyVHDLParser.Groups.Object import ConstantGroup, SignalGroup 

+

49from pyVHDLParser.Groups.Reference import LibraryGroup, UseGroup 

+

50from pyVHDLParser.Groups.Sequential.Function import FunctionGroup 

+

51from pyVHDLParser.Groups.Sequential.Procedure import ProcedureGroup 

+

52from pyVHDLParser.Groups.Sequential.Process import ProcessGroup 

+

53 

+

54 

+

55@export 

+

56class ContextGroup(Group): 

+

57 SIMPLE_BLOCKS = { 

+

58 Library.StartBlock: LibraryGroup, 

+

59 Use.StartBlock: UseGroup 

+

60 } 

+

61 

+

62 def __init__(self, previousGroup, startBlock, endBlock=None): 

+

63 super().__init__(previousGroup, startBlock, endBlock) 

+

64 

+

65 self._subGroups = { 

+

66 CommentGroup: [], 

+

67 WhitespaceGroup: [], 

+

68 LibraryGroup: [], 

+

69 UseGroup: [] 

+

70 } 

+

71 

+

72 @classmethod 

+

73 def stateParse(cls, parserState: BlockToGroupParser): 

+

74 currentBlock = parserState.Block 

+

75 

+

76 if isinstance(currentBlock, Context.NameBlock): 

+

77 parserState.NextGroup = cls(parserState.LastGroup, currentBlock) 

+

78 parserState.BlockMarker = currentBlock 

+

79 #parserState.NextState = cls.stateParseGenerics 

+

80 return 

+

81 elif isinstance(currentBlock, Context.EndBlock): 

+

82 #parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, parserState.Block) 

+

83 #parserState.Pop() 

+

84 #parserState.BlockMarker = None 

+

85 return 

+

86 elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): 

+

87 parserState.PushState = WhitespaceGroup.stateParse 

+

88 parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) 

+

89 parserState.BlockMarker = currentBlock 

+

90 return True 

+

91 elif isinstance(currentBlock, CommentBlock): 91 ↛ 92line 91 didn't jump to line 92, because the condition on line 91 was never true

+

92 parserState.PushState = CommentGroup.stateParse 

+

93 parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) 

+

94 parserState.BlockMarker = currentBlock 

+

95 return True 

+

96 else: 

+

97 for block in cls.SIMPLE_BLOCKS: 

+

98 if isinstance(currentBlock, block): 

+

99 group = cls.SIMPLE_BLOCKS[block] 

+

100 parserState.PushState = group.stateParse 

+

101 parserState.BlockMarker = currentBlock 

+

102 return True 

+

103 

+

104 if isinstance(currentBlock, EndOfDocumentBlock): 104 ↛ 108line 104 didn't jump to line 108, because the condition on line 104 was never false

+

105 parserState.NextGroup = EndOfDocumentGroup(currentBlock) 

+

106 return 

+

107 

+

108 raise GroupParserException("End of context declaration not found.".format( 

+

109 block=currentBlock.__class__.__qualname__ 

+

110 ), currentBlock) 

+

111 

+

112 

+

113@export 

+

114class EntityGroup(Group): 

+

115 DECLARATION_SIMPLE_BLOCKS = { 

+

116 GenericList.OpenBlock: GenericListGroup, 

+

117 PortList.OpenBlock: PortListGroup, 

+

118 Use.StartBlock: UseGroup, 

+

119 ConstantDeclarationBlock: ConstantGroup 

+

120 } 

+

121 DECLARATION_COMPOUND_BLOCKS = {} 

+

122 STATEMENT_SIMPLE_BLOCKS = { 

+

123 AssertBlock: AssertGroup 

+

124 } 

+

125 STATEMENT_COMPOUND_BLOCKS = { 

+

126 Process.OpenBlock: ProcessGroup, 

+

127 } 

+

128 

+

129 def __init__(self, previousGroup, startBlock, endBlock=None): 

+

130 super().__init__(previousGroup, startBlock, endBlock) 

+

131 

+

132 self._subGroups = dict(ChainMap( 

+

133 {v: [] for v in chain( 

+

134 self.DECLARATION_SIMPLE_BLOCKS.values(), 

+

135 self.DECLARATION_COMPOUND_BLOCKS.values(), 

+

136 self.STATEMENT_SIMPLE_BLOCKS.values(), 

+

137 self.STATEMENT_COMPOUND_BLOCKS.values() 

+

138 )}, 

+

139 {CommentGroup: [], 

+

140 WhitespaceGroup: [] 

+

141 } 

+

142 )) 

+

143 

+

144 @classmethod 

+

145 def stateParse(cls, parserState: BlockToGroupParser): 

+

146 currentBlock = parserState.Block 

+

147 

+

148 # consume OpenBlock 

+

149 if isinstance(currentBlock, Entity.NameBlock): 

+

150 parserState.NextGroup = cls(parserState.LastGroup, currentBlock) 

+

151 parserState.BlockMarker = currentBlock 

+

152 parserState.NextState = cls.stateParseGenerics 

+

153 return 

+

154 else: 

+

155 raise GroupParserException("Begin of entity expected.", currentBlock) 

+

156 

+

157 @classmethod 

+

158 def stateParseGenerics(cls, parserState: BlockToGroupParser): 

+

159 currentBlock = parserState.Block 

+

160 

+

161 if isinstance(currentBlock, GenericList.OpenBlock): 

+

162 parserState.NextState = cls.stateParsePorts 

+

163 parserState.PushState = GenericListGroup.stateParse 

+

164 parserState.NextGroup = GenericListGroup(parserState.LastGroup, currentBlock) 

+

165 parserState.BlockMarker = currentBlock 

+

166 return True 

+

167 elif isinstance(currentBlock, PortList.OpenBlock): 

+

168 parserState.NextState = cls.stateParseDeclarations 

+

169 parserState.PushState = PortListGroup.stateParse 

+

170 parserState.NextGroup = PortListGroup(parserState.LastGroup, currentBlock) 

+

171 parserState.BlockMarker = currentBlock 

+

172 return True 

+

173 elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): 

+

174 parserState.PushState = WhitespaceGroup.stateParse 

+

175 parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) 

+

176 parserState.BlockMarker = currentBlock 

+

177 return True 

+

178 elif isinstance(currentBlock, CommentBlock): 

+

179 parserState.PushState = CommentGroup.stateParse 

+

180 parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) 

+

181 parserState.BlockMarker = currentBlock 

+

182 return True 

+

183 

+

184 if isinstance(currentBlock, EndOfDocumentBlock): 

+

185 parserState.NextGroup = EndOfDocumentGroup(currentBlock) 

+

186 return 

+

187 

+

188 raise GroupParserException("End of generic clause not found.", currentBlock) 

+

189 

+

190 @classmethod 

+

191 def stateParsePorts(cls, parserState: BlockToGroupParser): 

+

192 currentBlock = parserState.Block 

+

193 

+

194 if isinstance(currentBlock, PortList.OpenBlock): 

+

195 parserState.NextState = cls.stateParseDeclarations 

+

196 parserState.PushState = PortListGroup.stateParse 

+

197 parserState.NextGroup = PortListGroup(parserState.LastGroup, currentBlock) 

+

198 parserState.BlockMarker = currentBlock 

+

199 return True 

+

200 elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): 

+

201 parserState.PushState = WhitespaceGroup.stateParse 

+

202 parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) 

+

203 parserState.BlockMarker = currentBlock 

+

204 return True 

+

205 elif isinstance(currentBlock, CommentBlock): 

+

206 parserState.PushState = CommentGroup.stateParse 

+

207 parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) 

+

208 parserState.BlockMarker = currentBlock 

+

209 return True 

+

210 

+

211 if isinstance(currentBlock, EndOfDocumentBlock): 

+

212 parserState.NextGroup = EndOfDocumentGroup(currentBlock) 

+

213 return 

+

214 

+

215 raise GroupParserException("End of port clause not found.", currentBlock) 

+

216 

+

217 @classmethod 

+

218 def stateParseDeclarations(cls, parserState: BlockToGroupParser): 

+

219 currentBlock = parserState.Block 

+

220 

+

221 if isinstance(currentBlock, Entity.BeginBlock): 

+

222 parserState.NextState = cls.stateParseStatements 

+

223 return 

+

224 elif isinstance(currentBlock, Entity.EndBlock): 

+

225 parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, parserState.Block) 

+

226 parserState.Pop() 

+

227 parserState.BlockMarker = None 

+

228 return 

+

229 elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): 

+

230 parserState.PushState = WhitespaceGroup.stateParse 

+

231 parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) 

+

232 parserState.BlockMarker = currentBlock 

+

233 return True 

+

234 elif isinstance(currentBlock, CommentBlock): 

+

235 parserState.PushState = CommentGroup.stateParse 

+

236 parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) 

+

237 parserState.BlockMarker = currentBlock 

+

238 return True 

+

239 else: 

+

240 for block in cls.DECLARATION_SIMPLE_BLOCKS: 

+

241 if isinstance(currentBlock, block): 

+

242 group = cls.DECLARATION_SIMPLE_BLOCKS[block] 

+

243 parserState.PushState = group.stateParse 

+

244 parserState.BlockMarker = currentBlock 

+

245 return True 

+

246 

+

247 for block in cls.DECLARATION_COMPOUND_BLOCKS: 

+

248 if isinstance(currentBlock, block): 

+

249 group = cls.DECLARATION_COMPOUND_BLOCKS[block] 

+

250 parserState.PushState = group.stateParse 

+

251 parserState.BlockMarker = currentBlock 

+

252 return True 

+

253 

+

254 if isinstance(currentBlock, EndOfDocumentBlock): 

+

255 parserState.NextGroup = EndOfDocumentGroup(currentBlock) 

+

256 return 

+

257 

+

258 raise GroupParserException("End of entity declarative region not found.", currentBlock) 

+

259 

+

260 @classmethod 

+

261 def stateParseStatements(cls, parserState: BlockToGroupParser): 

+

262 currentBlock = parserState.Block 

+

263 

+

264 if isinstance(currentBlock, Entity.EndBlock): 

+

265 parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, parserState.Block) 

+

266 parserState.Pop() 

+

267 parserState.BlockMarker = None 

+

268 return 

+

269 elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): 

+

270 parserState.PushState = WhitespaceGroup.stateParse 

+

271 parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) 

+

272 parserState.BlockMarker = currentBlock 

+

273 return True 

+

274 elif isinstance(currentBlock, CommentBlock): 

+

275 parserState.PushState = CommentGroup.stateParse 

+

276 parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) 

+

277 parserState.BlockMarker = currentBlock 

+

278 return True 

+

279 else: 

+

280 for block in cls.STATEMENT_SIMPLE_BLOCKS: 

+

281 if isinstance(currentBlock, block): 

+

282 group = cls.STATEMENT_SIMPLE_BLOCKS[block] 

+

283 parserState.PushState = group.stateParse 

+

284 parserState.BlockMarker = currentBlock 

+

285 return True 

+

286 

+

287 for block in cls.STATEMENT_COMPOUND_BLOCKS: 

+

288 if isinstance(currentBlock, block): 

+

289 group = cls.STATEMENT_COMPOUND_BLOCKS[block] 

+

290 parserState.PushState = group.stateParse 

+

291 parserState.BlockMarker = currentBlock 

+

292 return True 

+

293 

+

294 if isinstance(currentBlock, EndOfDocumentBlock): 

+

295 parserState.NextGroup = EndOfDocumentGroup(currentBlock) 

+

296 return 

+

297 

+

298 raise GroupParserException("End of entity declaration not found.", currentBlock) 

+

299 

+

300 

+

301@export 

+

302class ArchitectureGroup(Group): 

+

303 DECLARATION_SIMPLE_BLOCKS = { 

+

304 Use.StartBlock: UseGroup, 

+

305 ConstantDeclarationBlock: ConstantGroup, 

+

306 # SharedVariableBlock: VariableGroup, 

+

307 SignalDeclarationBlock: SignalGroup 

+

308 } 

+

309 DECLARATION_COMPOUND_BLOCKS = { 

+

310 Function.NameBlock: FunctionGroup, 

+

311 Procedure.NameBlock: ProcedureGroup 

+

312 } 

+

313 STATEMENT_SIMPLE_BLOCKS = { 

+

314 AssertBlock: AssertGroup 

+

315 } 

+

316 STATEMENT_COMPOUND_BLOCKS = { 

+

317 Process.OpenBlock: ProcessGroup 

+

318 } 

+

319 

+

320 def __init__(self, previousGroup, startBlock, endBlock=None): 

+

321 super().__init__(previousGroup, startBlock, endBlock) 

+

322 

+

323 self._subGroups = dict(ChainMap( 

+

324 {v: [] for v in chain( 

+

325 self.DECLARATION_SIMPLE_BLOCKS.values(), 

+

326 self.DECLARATION_COMPOUND_BLOCKS.values(), 

+

327 self.STATEMENT_SIMPLE_BLOCKS.values(), 

+

328 self.STATEMENT_COMPOUND_BLOCKS.values() 

+

329 )}, 

+

330 {CommentGroup: [], 

+

331 WhitespaceGroup: [] 

+

332 } 

+

333 )) 

+

334 

+

335 @classmethod 

+

336 def stateParse(cls, parserState: BlockToGroupParser): 

+

337 currentBlock = parserState.Block 

+

338 

+

339 if isinstance(currentBlock, Architecture.NameBlock): 339 ↛ 342line 339 didn't jump to line 342, because the condition on line 339 was never false

+

340 parserState.NextState = cls.stateParseDeclarations 

+

341 return 

+

342 elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): 

+

343 parserState.PushState = WhitespaceGroup.stateParse 

+

344 parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) 

+

345 parserState.BlockMarker = currentBlock 

+

346 return True 

+

347 elif isinstance(currentBlock, CommentBlock): 

+

348 parserState.PushState = CommentGroup.stateParse 

+

349 parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) 

+

350 parserState.BlockMarker = currentBlock 

+

351 return True 

+

352 elif isinstance(currentBlock, EndOfDocumentBlock): 

+

353 parserState.NextGroup = EndOfDocumentGroup(currentBlock) 

+

354 return 

+

355 

+

356 raise GroupParserException("End of architecture declaration not found.".format( 

+

357 block=currentBlock.__class__.__qualname__ 

+

358 ), currentBlock) 

+

359 

+

360 @classmethod 

+

361 def stateParseDeclarations(cls, parserState: BlockToGroupParser): 

+

362 currentBlock = parserState.Block 

+

363 

+

364 if isinstance(currentBlock, Architecture.BeginBlock): 364 ↛ 365line 364 didn't jump to line 365, because the condition on line 364 was never true

+

365 parserState.NextState = cls.stateParseStatements 

+

366 return 

+

367 elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): 

+

368 parserState.PushState = WhitespaceGroup.stateParse 

+

369 parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) 

+

370 parserState.BlockMarker = currentBlock 

+

371 return True 

+

372 elif isinstance(currentBlock, CommentBlock): 372 ↛ 373line 372 didn't jump to line 373, because the condition on line 372 was never true

+

373 parserState.PushState = CommentGroup.stateParse 

+

374 parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) 

+

375 parserState.BlockMarker = currentBlock 

+

376 return True 

+

377 else: 

+

378 for block in cls.DECLARATION_SIMPLE_BLOCKS: 

+

379 if isinstance(currentBlock, block): 379 ↛ 380line 379 didn't jump to line 380, because the condition on line 379 was never true

+

380 group = cls.DECLARATION_SIMPLE_BLOCKS[block] 

+

381 parserState.PushState = group.stateParse 

+

382 parserState.BlockMarker = currentBlock 

+

383 return True 

+

384 

+

385 for block in cls.DECLARATION_COMPOUND_BLOCKS: 

+

386 if isinstance(currentBlock, block): 386 ↛ 387line 386 didn't jump to line 387, because the condition on line 386 was never true

+

387 group = cls.DECLARATION_COMPOUND_BLOCKS[block] 

+

388 parserState.PushState = group.stateParse 

+

389 parserState.BlockMarker = currentBlock 

+

390 return True 

+

391 

+

392 if isinstance(currentBlock, EndOfDocumentBlock): 392 ↛ 393line 392 didn't jump to line 393, because the condition on line 392 was never true

+

393 parserState.NextGroup = EndOfDocumentGroup(currentBlock) 

+

394 return 

+

395 

+

396 raise GroupParserException("End of architecture declaration not found.".format( 

+

397 block=currentBlock.__class__.__qualname__ 

+

398 ), currentBlock) 

+

399 

+

400 @classmethod 

+

401 def stateParseStatements(cls, parserState: BlockToGroupParser): 

+

402 currentBlock = parserState.Block 

+

403 

+

404 if isinstance(currentBlock, Architecture.EndBlock): 

+

405 parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, parserState.Block) 

+

406 parserState.Pop() 

+

407 parserState.BlockMarker = None 

+

408 return 

+

409 elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): 

+

410 parserState.PushState = WhitespaceGroup.stateParse 

+

411 parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) 

+

412 parserState.BlockMarker = currentBlock 

+

413 return True 

+

414 elif isinstance(currentBlock, CommentBlock): 

+

415 parserState.PushState = CommentGroup.stateParse 

+

416 parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) 

+

417 parserState.BlockMarker = currentBlock 

+

418 return True 

+

419 else: 

+

420 for block in cls.STATEMENT_SIMPLE_BLOCKS: 

+

421 if isinstance(currentBlock, block): 

+

422 group = cls.STATEMENT_SIMPLE_BLOCKS[block] 

+

423 parserState.PushState = group.stateParse 

+

424 parserState.BlockMarker = currentBlock 

+

425 return True 

+

426 

+

427 for block in cls.STATEMENT_COMPOUND_BLOCKS: 

+

428 if isinstance(currentBlock, block): 

+

429 group = cls.STATEMENT_COMPOUND_BLOCKS[block] 

+

430 parserState.PushState = group.stateParse 

+

431 parserState.BlockMarker = currentBlock 

+

432 return True 

+

433 

+

434 if isinstance(currentBlock, EndOfDocumentBlock): 

+

435 parserState.NextGroup = EndOfDocumentGroup(currentBlock) 

+

436 return 

+

437 

+

438 raise GroupParserException("End of architecture declaration not found.".format( 

+

439 block=currentBlock.__class__.__qualname__ 

+

440 ), currentBlock) 

+

441 

+

442 

+

443@export 

+

444class PackageGroup(Group): 

+

445 DECLARATION_SIMPLE_BLOCKS = { 

+

446 Library.StartBlock: LibraryGroup, 

+

447 Use.StartBlock: UseGroup, 

+

448 ConstantDeclarationBlock: ConstantGroup, 

+

449 # SharedVariableBlock: VariableGroup, 

+

450 SignalDeclarationBlock: SignalGroup 

+

451 } 

+

452 DECLARATION_COMPOUND_BLOCKS = { 

+

453 Function.NameBlock: FunctionGroup, 

+

454 Procedure.NameBlock: ProcedureGroup 

+

455 } 

+

456 

+

457 def __init__(self, previousGroup, startBlock, endBlock=None): 

+

458 super().__init__(previousGroup, startBlock, endBlock) 

+

459 

+

460 self._subGroups = dict(ChainMap( 

+

461 {v: [] for v in chain( 

+

462 self.DECLARATION_SIMPLE_BLOCKS.values(), 

+

463 self.DECLARATION_COMPOUND_BLOCKS.values() 

+

464 )}, 

+

465 {CommentGroup: [], 

+

466 WhitespaceGroup: [] 

+

467 } 

+

468 )) 

+

469 

+

470 @classmethod 

+

471 def stateParse(cls, parserState: BlockToGroupParser): 

+

472 currentBlock = parserState.Block 

+

473 

+

474 if isinstance(currentBlock, Package.NameBlock): 

+

475 return 

+

476 elif isinstance(currentBlock, Package.EndBlock): 

+

477 parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, parserState.Block) 

+

478 parserState.Pop() 

+

479 parserState.BlockMarker = None 

+

480 return 

+

481 elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): 481 ↛ 486line 481 didn't jump to line 486, because the condition on line 481 was never false

+

482 parserState.PushState = WhitespaceGroup.stateParse 

+

483 parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) 

+

484 parserState.BlockMarker = currentBlock 

+

485 return True 

+

486 elif isinstance(currentBlock, CommentBlock): 

+

487 parserState.PushState = CommentGroup.stateParse 

+

488 parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) 

+

489 parserState.BlockMarker = currentBlock 

+

490 return True 

+

491 else: 

+

492 for block in cls.DECLARATION_SIMPLE_BLOCKS: 

+

493 if isinstance(currentBlock, block): 

+

494 group = cls.DECLARATION_SIMPLE_BLOCKS[block] 

+

495 parserState.PushState = group.stateParse 

+

496 parserState.BlockMarker = currentBlock 

+

497 return True 

+

498 

+

499 for block in cls.DECLARATION_COMPOUND_BLOCKS: 

+

500 if isinstance(currentBlock, block): 

+

501 group = cls.DECLARATION_COMPOUND_BLOCKS[block] 

+

502 parserState.PushState = group.stateParse 

+

503 parserState.BlockMarker = currentBlock 

+

504 return True 

+

505 

+

506 if isinstance(currentBlock, EndOfDocumentBlock): 

+

507 parserState.NextGroup = EndOfDocumentGroup(currentBlock) 

+

508 return 

+

509 

+

510 raise GroupParserException("End of package declaration not found.".format( 

+

511 block=currentBlock.__class__.__qualname__ 

+

512 ), currentBlock) 

+

513 

+

514 

+

515@export 

+

516class PackageBodyGroup(Group): 

+

517 DECLARATION_SIMPLE_BLOCKS = { 

+

518 Library.StartBlock: LibraryGroup, 

+

519 Use.StartBlock: UseGroup, 

+

520 ConstantDeclarationBlock: ConstantGroup, 

+

521 # SharedVariableBlock: VariableGroup, 

+

522 SignalDeclarationBlock: SignalGroup 

+

523 } 

+

524 DECLARATION_COMPOUND_BLOCKS = { 

+

525 Function.NameBlock: FunctionGroup, 

+

526 Procedure.NameBlock: ProcedureGroup 

+

527 } 

+

528 

+

529 def __init__(self, previousGroup, startBlock, endBlock=None): 

+

530 super().__init__(previousGroup, startBlock, endBlock) 

+

531 

+

532 self._subGroups = dict(ChainMap( 

+

533 {v: [] for v in chain( 

+

534 self.DECLARATION_SIMPLE_BLOCKS.values(), 

+

535 self.DECLARATION_COMPOUND_BLOCKS.values() 

+

536 )}, 

+

537 {CommentGroup: [], 

+

538 WhitespaceGroup: [] 

+

539 } 

+

540 )) 

+

541 

+

542 @classmethod 

+

543 def stateParse(cls, parserState: BlockToGroupParser): 

+

544 currentBlock = parserState.Block 

+

545 

+

546 if isinstance(currentBlock, PackageBody.NameBlock): 

+

547 return 

+

548 elif isinstance(currentBlock, PackageBody.EndBlock): 

+

549 parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, parserState.Block) 

+

550 parserState.Pop() 

+

551 parserState.BlockMarker = None 

+

552 return 

+

553 elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): 553 ↛ 558line 553 didn't jump to line 558, because the condition on line 553 was never false

+

554 parserState.PushState = WhitespaceGroup.stateParse 

+

555 parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) 

+

556 parserState.BlockMarker = currentBlock 

+

557 return True 

+

558 elif isinstance(currentBlock, CommentBlock): 

+

559 parserState.PushState = CommentGroup.stateParse 

+

560 parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) 

+

561 parserState.BlockMarker = currentBlock 

+

562 return True 

+

563 else: 

+

564 for block in cls.DECLARATION_SIMPLE_BLOCKS: 

+

565 if isinstance(currentBlock, block): 

+

566 group = cls.DECLARATION_SIMPLE_BLOCKS[block] 

+

567 parserState.PushState = group.stateParse 

+

568 parserState.BlockMarker = currentBlock 

+

569 return True 

+

570 

+

571 for block in cls.DECLARATION_COMPOUND_BLOCKS: 

+

572 if isinstance(currentBlock, block): 

+

573 group = cls.DECLARATION_COMPOUND_BLOCKS[block] 

+

574 parserState.PushState = group.stateParse 

+

575 parserState.NextGroup = group(parserState.LastGroup, parserState.BlockMarker, currentBlock) 

+

576 parserState.BlockMarker = currentBlock 

+

577 return True 

+

578 

+

579 if isinstance(currentBlock, EndOfDocumentBlock): 

+

580 parserState.NextGroup = EndOfDocumentGroup(currentBlock) 

+

581 return 

+

582 

+

583 raise GroupParserException("End of package body declaration not found.".format( 

+

584 block=currentBlock.__class__.__qualname__ 

+

585 ), currentBlock) 

+

586 

+

587 

+

588@export 

+

589class ComponentGroup(Group): 

+

590 SIMPLE_BLOCKS = { 

+

591 # LibraryBlock: LibraryGroup, 

+

592 # UseBlock: UseGroup 

+

593 } 

+

594 COMPOUND_BLOCKS = { 

+

595 # Function.NameBlock: FunctionGroup, 

+

596 # Procedure.NameBlock: ProcedureGroup 

+

597 } 

+

598 

+

599 def __init__(self, previousGroup, startBlock, endBlock=None): 

+

600 super().__init__(previousGroup, startBlock, endBlock) 

+

601 

+

602 self._subGroups = { 

+

603 CommentGroup: [], 

+

604 WhitespaceGroup: [] 

+

605 } 

+

606 

+

607 @classmethod 

+

608 def stateParse(cls, parserState: BlockToGroupParser): 

+

609 currentBlock = parserState.Block 

+

610 

+

611 if isinstance(currentBlock, Component.NameBlock): 

+

612 return 

+

613 elif isinstance(currentBlock, Component.EndBlock): 

+

614 parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, parserState.Block) 

+

615 parserState.Pop() 

+

616 parserState.BlockMarker = None 

+

617 return 

+

618 elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): 

+

619 parserState.PushState = WhitespaceGroup.stateParse 

+

620 parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) 

+

621 parserState.BlockMarker = currentBlock 

+

622 return True 

+

623 elif isinstance(currentBlock, CommentBlock): 

+

624 parserState.PushState = CommentGroup.stateParse 

+

625 parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) 

+

626 parserState.BlockMarker = currentBlock 

+

627 return True 

+

628 else: 

+

629 for block in cls.SIMPLE_BLOCKS: 

+

630 if isinstance(currentBlock, block): 

+

631 group = cls.SIMPLE_BLOCKS[block] 

+

632 parserState.PushState = group.stateParse 

+

633 parserState.BlockMarker = currentBlock 

+

634 return True 

+

635 

+

636 for block in cls.COMPOUND_BLOCKS: 

+

637 if isinstance(currentBlock, block): 

+

638 group = cls.COMPOUND_BLOCKS[block] 

+

639 parserState.PushState = group.stateParse 

+

640 parserState.BlockMarker = currentBlock 

+

641 return True 

+

642 

+

643 if isinstance(currentBlock, EndOfDocumentBlock): 

+

644 parserState.NextGroup = EndOfDocumentGroup(currentBlock) 

+

645 return 

+

646 

+

647 raise GroupParserException("End of component declaration not found.".format( 

+

648 block=currentBlock.__class__.__qualname__ 

+

649 ), currentBlock) 

+

650 

+

651 

+

652@export 

+

653class ConfigurationGroup(Group): 

+

654 SIMPLE_BLOCKS = { 

+

655 # LibraryBlock: LibraryGroup, 

+

656 # UseBlock: UseGroup 

+

657 } 

+

658 COMPOUND_BLOCKS = { 

+

659 # Function.NameBlock: FunctionGroup, 

+

660 # Procedure.NameBlock: ProcedureGroup 

+

661 } 

+

662 

+

663 def __init__(self, previousGroup, startBlock, endBlock=None): 

+

664 super().__init__(previousGroup, startBlock, endBlock) 

+

665 

+

666 self._subGroups = { 

+

667 CommentGroup: [], 

+

668 WhitespaceGroup: [] 

+

669 } 

+

670 

+

671 @classmethod 

+

672 def stateParse(cls, parserState: BlockToGroupParser): 

+

673 currentBlock = parserState.Block 

+

674 

+

675 if isinstance(currentBlock, Configuration.NameBlock): 

+

676 return 

+

677 elif isinstance(currentBlock, Configuration.EndBlock): 

+

678 parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, parserState.Block) 

+

679 parserState.Pop() 

+

680 parserState.BlockMarker = None 

+

681 return 

+

682 elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): 

+

683 parserState.PushState = WhitespaceGroup.stateParse 

+

684 parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) 

+

685 parserState.BlockMarker = currentBlock 

+

686 return True 

+

687 elif isinstance(currentBlock, CommentBlock): 

+

688 parserState.PushState = CommentGroup.stateParse 

+

689 parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) 

+

690 parserState.BlockMarker = currentBlock 

+

691 return True 

+

692 else: 

+

693 for block in cls.SIMPLE_BLOCKS: 

+

694 if isinstance(currentBlock, block): 

+

695 group = cls.SIMPLE_BLOCKS[block] 

+

696 parserState.PushState = group.stateParse 

+

697 parserState.BlockMarker = currentBlock 

+

698 return True 

+

699 

+

700 for block in cls.COMPOUND_BLOCKS: 

+

701 if isinstance(currentBlock, block): 

+

702 group = cls.COMPOUND_BLOCKS[block] 

+

703 parserState.PushState = group.stateParse 

+

704 parserState.BlockMarker = currentBlock 

+

705 return True 

+

706 

+

707 if isinstance(currentBlock, EndOfDocumentBlock): 

+

708 parserState.NextGroup = EndOfDocumentGroup(currentBlock) 

+

709 return 

+

710 

+

711 raise GroupParserException("End of configuration declaration not found.".format( 

+

712 block=currentBlock.__class__.__qualname__ 

+

713 ), currentBlock) 

+
+ + + diff --git a/coverage/d_16378e9cfef5f3d4_List_py.html b/coverage/d_16378e9cfef5f3d4_List_py.html new file mode 100644 index 000000000..3f97d7119 --- /dev/null +++ b/coverage/d_16378e9cfef5f3d4_List_py.html @@ -0,0 +1,410 @@ + + + + + Coverage for pyVHDLParser/Groups/List.py: 39% + + + + + +
+
+

+ Coverage for pyVHDLParser/Groups/List.py: + 39% +

+ +

+ 197 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Blocks import CommentBlock, EndOfDocumentBlock 

+

33from pyVHDLParser.Blocks.Common import LinebreakBlock, IndentationBlock 

+

34import pyVHDLParser.Blocks.InterfaceObject 

+

35from pyVHDLParser.Blocks.List import GenericList, ParameterList, PortList, SensitivityList 

+

36from pyVHDLParser.Groups import BlockToGroupParser, GroupParserException, Group, EndOfDocumentGroup 

+

37from pyVHDLParser.Groups.Comment import WhitespaceGroup, CommentGroup 

+

38 

+

39 

+

40@export 

+

41class GenericListGroup(Group): 

+

42 def __init__(self, previousGroup, startBlock, endBlock=None): 

+

43 super().__init__(previousGroup, startBlock, endBlock) 

+

44 

+

45 self._subGroups = { 

+

46 CommentGroup: [], 

+

47 WhitespaceGroup: [], 

+

48 GenericListItemGroup: [] 

+

49 } 

+

50 

+

51 @classmethod 

+

52 def stateParse(cls, parserState: BlockToGroupParser): 

+

53 currentBlock = parserState.Block 

+

54 

+

55 if isinstance(currentBlock, GenericList.OpenBlock): 

+

56 return 

+

57 elif isinstance(currentBlock, pyVHDLParser.Blocks.InterfaceObject.InterfaceConstantBlock): 

+

58 parserState.PushState = GenericListItemGroup.stateParse 

+

59 parserState.NextGroup = GenericListItemGroup(parserState.LastGroup, currentBlock) 

+

60 parserState.BlockMarker = currentBlock 

+

61 return True 

+

62 elif isinstance(currentBlock, GenericList.CloseBlock): 

+

63 parserState.Pop() 

+

64 return 

+

65 elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): 

+

66 parserState.PushState = WhitespaceGroup.stateParse 

+

67 parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) 

+

68 parserState.BlockMarker = currentBlock 

+

69 return True 

+

70 elif isinstance(currentBlock, CommentBlock): 

+

71 parserState.PushState = CommentGroup.stateParse 

+

72 parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) 

+

73 parserState.BlockMarker = currentBlock 

+

74 return True 

+

75 

+

76 if isinstance(currentBlock, EndOfDocumentBlock): 

+

77 parserState.NextGroup = EndOfDocumentGroup(currentBlock) 

+

78 return 

+

79 

+

80 raise GroupParserException("End of generic list not found.", currentBlock) 

+

81 

+

82 

+

83@export 

+

84class GenericListItemGroup(Group): 

+

85 @classmethod 

+

86 def stateParse(cls, parserState: BlockToGroupParser): 

+

87 for block in parserState.GetBlockIterator: 

+

88 if isinstance(block, GenericList.DelimiterBlock): 

+

89 parserState.Pop() 

+

90 return 

+

91 elif isinstance(block, GenericList.CloseBlock): 

+

92 # parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, block) 

+

93 parserState.Pop() 

+

94 return True 

+

95 

+

96 raise GroupParserException("End of generic not found.", block) 

+

97 

+

98 

+

99@export 

+

100class GenericMapGroup(Group): 

+

101 @classmethod 

+

102 def stateParse(cls, parserState: BlockToGroupParser): 

+

103 block = parserState.Block 

+

104 

+

105 raise NotImplementedError("State=Parse: {0!r}".format(block)) 

+

106 

+

107 

+

108@export 

+

109class GenericMapItemGroup(Group): 

+

110 @classmethod 

+

111 def stateParse(cls, parserState: BlockToGroupParser): 

+

112 block = parserState.Block 

+

113 

+

114 raise NotImplementedError("State=Parse: {0!r}".format(block)) 

+

115 

+

116 

+

117@export 

+

118class PortListGroup(Group): 

+

119 def __init__(self, previousGroup, startBlock, endBlock=None): 

+

120 super().__init__(previousGroup, startBlock, endBlock) 

+

121 

+

122 self._subGroups = { 

+

123 CommentGroup: [], 

+

124 WhitespaceGroup: [], 

+

125 PortListItemGroup: [] 

+

126 } 

+

127 

+

128 @classmethod 

+

129 def stateParse(cls, parserState: BlockToGroupParser): 

+

130 currentBlock = parserState.Block 

+

131 

+

132 if isinstance(currentBlock, PortList.OpenBlock): 

+

133 return 

+

134 elif isinstance(currentBlock, (pyVHDLParser.Blocks.InterfaceObject.InterfaceSignalBlock, PortList.DelimiterBlock)): 

+

135 return 

+

136 elif isinstance(currentBlock, PortList.CloseBlock): 

+

137 parserState.Pop() 

+

138 return 

+

139 elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): 

+

140 parserState.PushState = WhitespaceGroup.stateParse 

+

141 parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) 

+

142 parserState.BlockMarker = currentBlock 

+

143 return True 

+

144 elif isinstance(currentBlock, CommentBlock): 

+

145 parserState.PushState = CommentGroup.stateParse 

+

146 parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) 

+

147 parserState.BlockMarker = currentBlock 

+

148 return True 

+

149 

+

150 if isinstance(currentBlock, EndOfDocumentBlock): 

+

151 parserState.NextGroup = EndOfDocumentGroup(currentBlock) 

+

152 return 

+

153 

+

154 raise GroupParserException("End of generic list not found.", currentBlock) 

+

155 

+

156 

+

157@export 

+

158class PortListItemGroup(Group): 

+

159 @classmethod 

+

160 def stateParse(cls, parserState: BlockToGroupParser): 

+

161 for block in parserState.GetBlockIterator: 

+

162 if isinstance(block, PortList.DelimiterBlock): 

+

163 parserState.Pop() 

+

164 return 

+

165 elif isinstance(block, PortList.CloseBlock): 

+

166 # parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, block) 

+

167 parserState.Pop() 

+

168 return True 

+

169 

+

170 raise GroupParserException("End of port not found.", block) 

+

171 

+

172 

+

173@export 

+

174class PortMapGroup(Group): 

+

175 @classmethod 

+

176 def stateParse(cls, parserState: BlockToGroupParser): 

+

177 block = parserState.Block 

+

178 

+

179 raise NotImplementedError("State=Parse: {0!r}".format(block)) 

+

180 

+

181 

+

182@export 

+

183class PortMapItemGroup(Group): 

+

184 @classmethod 

+

185 def stateParse(cls, parserState: BlockToGroupParser): 

+

186 block = parserState.Block 

+

187 

+

188 raise NotImplementedError("State=Parse: {0!r}".format(block)) 

+

189 

+

190 

+

191@export 

+

192class ParameterListGroup(Group): 

+

193 def __init__(self, previousGroup, startBlock, endBlock=None): 

+

194 super().__init__(previousGroup, startBlock, endBlock) 

+

195 

+

196 self._subGroups = { 

+

197 CommentGroup: [], 

+

198 WhitespaceGroup: [], 

+

199 ParameterListItemGroup: [] 

+

200 } 

+

201 

+

202 @classmethod 

+

203 def stateParse(cls, parserState: BlockToGroupParser): 

+

204 currentBlock = parserState.Block 

+

205 

+

206 if isinstance(currentBlock, ParameterList.OpenBlock): 

+

207 return 

+

208 elif isinstance(currentBlock, (ParameterList.ItemBlock, ParameterList.DelimiterBlock)): 

+

209 return 

+

210 elif isinstance(currentBlock, ParameterList.CloseBlock): 

+

211 parserState.Pop() 

+

212 return 

+

213 elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): 

+

214 parserState.PushState = WhitespaceGroup.stateParse 

+

215 parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) 

+

216 parserState.BlockMarker = currentBlock 

+

217 return True 

+

218 elif isinstance(currentBlock, CommentBlock): 

+

219 parserState.PushState = CommentGroup.stateParse 

+

220 parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) 

+

221 parserState.BlockMarker = currentBlock 

+

222 return True 

+

223 

+

224 if isinstance(currentBlock, EndOfDocumentBlock): 

+

225 parserState.NextGroup = EndOfDocumentGroup(currentBlock) 

+

226 return 

+

227 

+

228 raise GroupParserException("End of generic list not found.", currentBlock) 

+

229 

+

230 

+

231@export 

+

232class ParameterListItemGroup(Group): 

+

233 @classmethod 

+

234 def stateParse(cls, parserState: BlockToGroupParser): 

+

235 for block in parserState.GetBlockIterator: 

+

236 if isinstance(block, ParameterList.DelimiterBlock): 

+

237 parserState.Pop() 

+

238 return 

+

239 elif isinstance(block, ParameterList.CloseBlock): 

+

240 # parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, block) 

+

241 parserState.Pop() 

+

242 return True 

+

243 

+

244 raise GroupParserException("End of parameter not found.", block) 

+

245 

+

246 

+

247@export 

+

248class ParameterMapGroup(Group): 

+

249 @classmethod 

+

250 def stateParse(cls, parserState: BlockToGroupParser): 

+

251 block = parserState.Block 

+

252 

+

253 raise NotImplementedError("State=Parse: {0!r}".format(block)) 

+

254 

+

255 

+

256@export 

+

257class ParameterMapItemGroup(Group): 

+

258 @classmethod 

+

259 def stateParse(cls, parserState: BlockToGroupParser): 

+

260 block = parserState.Block 

+

261 

+

262 raise NotImplementedError("State=Parse: {0!r}".format(block)) 

+

263 

+

264 

+

265@export 

+

266class SensitivityListGroup(Group): 

+

267 def __init__(self, previousGroup, startBlock, endBlock=None): 

+

268 super().__init__(previousGroup, startBlock, endBlock) 

+

269 

+

270 self._subGroups = { 

+

271 CommentGroup: [], 

+

272 WhitespaceGroup: [], 

+

273 SensitivityListItemGroup: [] 

+

274 } 

+

275 

+

276 @classmethod 

+

277 def stateParse(cls, parserState: BlockToGroupParser): 

+

278 currentBlock = parserState.Block 

+

279 

+

280 if isinstance(currentBlock, SensitivityList.OpenBlock): 

+

281 return 

+

282 elif isinstance(currentBlock, (SensitivityList.ItemBlock, SensitivityList.DelimiterBlock)): 

+

283 return 

+

284 elif isinstance(currentBlock, SensitivityList.CloseBlock): 

+

285 parserState.Pop() 

+

286 return 

+

287 elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): 

+

288 parserState.PushState = WhitespaceGroup.stateParse 

+

289 parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) 

+

290 parserState.BlockMarker = currentBlock 

+

291 return True 

+

292 elif isinstance(currentBlock, CommentBlock): 

+

293 parserState.PushState = CommentGroup.stateParse 

+

294 parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) 

+

295 parserState.BlockMarker = currentBlock 

+

296 return True 

+

297 

+

298 if isinstance(currentBlock, EndOfDocumentBlock): 

+

299 parserState.NextGroup = EndOfDocumentGroup(currentBlock) 

+

300 return 

+

301 

+

302 raise GroupParserException("End of generic list not found.", currentBlock) 

+

303 

+

304 

+

305@export 

+

306class SensitivityListItemGroup(Group): 

+

307 @classmethod 

+

308 def stateParse(cls, parserState: BlockToGroupParser): 

+

309 block = parserState.Block 

+

310 

+

311 raise NotImplementedError("State=Parse: {0!r}".format(block)) 

+
+ + + diff --git a/coverage/d_16378e9cfef5f3d4_Object_py.html b/coverage/d_16378e9cfef5f3d4_Object_py.html new file mode 100644 index 000000000..70ab88779 --- /dev/null +++ b/coverage/d_16378e9cfef5f3d4_Object_py.html @@ -0,0 +1,196 @@ + + + + + Coverage for pyVHDLParser/Groups/Object.py: 38% + + + + + +
+
+

+ Coverage for pyVHDLParser/Groups/Object.py: + 38% +

+ +

+ 52 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Blocks.Object.Variable import VariableDeclarationBlock 

+

33from pyVHDLParser.Blocks.Object.Signal import SignalDeclarationBlock 

+

34from pyVHDLParser.Blocks.Object.Constant import ConstantDeclarationBlock 

+

35from pyVHDLParser.Blocks.Reference.Library import EndBlock, StartBlock 

+

36from pyVHDLParser.Blocks.Reference.Use import EndBlock, StartBlock 

+

37from pyVHDLParser.Groups import BlockToGroupParser, GroupParserException, Group 

+

38 

+

39 

+

40@export 

+

41class ConstantGroup(Group): 

+

42 @classmethod 

+

43 def stateParse(cls, parserState: BlockToGroupParser): 

+

44 marker = parserState.Block 

+

45 if parserState.Block.MultiPart: 

+

46 for block in parserState.GetBlockIterator: 

+

47 if isinstance(block, ConstantDeclarationBlock) and not block.MultiPart: 

+

48 marker2 = block 

+

49 break 

+

50 else: 

+

51 raise GroupParserException("End of multi parted constant declaration not found.", block) 

+

52 else: 

+

53 marker2 = marker 

+

54 

+

55 parserState.NextGroup = cls(parserState.LastGroup, marker, marker2) 

+

56 parserState.Pop() 

+

57 return 

+

58 

+

59 

+

60@export 

+

61class VariableGroup(Group): 

+

62 @classmethod 

+

63 def stateParse(cls, parserState: BlockToGroupParser): 

+

64 marker = parserState.Block 

+

65 if parserState.Block.MultiPart: 

+

66 for block in parserState.GetBlockIterator: 

+

67 if isinstance(block, VariableDeclarationBlock) and not block.MultiPart: 

+

68 marker2 = block 

+

69 break 

+

70 else: 

+

71 raise GroupParserException("End of multi parted variable declaration not found.", block) 

+

72 else: 

+

73 marker2 = marker 

+

74 

+

75 parserState.NextGroup = cls(parserState.LastGroup, marker, marker2) 

+

76 parserState.Pop() 

+

77 return 

+

78 

+

79 

+

80@export 

+

81class SignalGroup(Group): 

+

82 @classmethod 

+

83 def stateParse(cls, parserState: BlockToGroupParser): 

+

84 marker = parserState.Block 

+

85 if parserState.Block.MultiPart: 

+

86 for block in parserState.GetBlockIterator: 

+

87 if isinstance(block, SignalDeclarationBlock) and not block.MultiPart: 

+

88 marker2 = block 

+

89 break 

+

90 else: 

+

91 raise GroupParserException("End of multi parted signal declaration not found.", block) 

+

92 else: 

+

93 marker2 = marker 

+

94 

+

95 parserState.NextGroup = cls(parserState.LastGroup, marker, marker2) 

+

96 parserState.Pop() 

+

97 return 

+
+ + + diff --git a/coverage/d_16378e9cfef5f3d4_Reference_py.html b/coverage/d_16378e9cfef5f3d4_Reference_py.html new file mode 100644 index 000000000..565fda921 --- /dev/null +++ b/coverage/d_16378e9cfef5f3d4_Reference_py.html @@ -0,0 +1,158 @@ + + + + + Coverage for pyVHDLParser/Groups/Reference.py: 90% + + + + + +
+
+

+ Coverage for pyVHDLParser/Groups/Reference.py: + 90% +

+ +

+ 23 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Blocks.Reference import Library, Use 

+

33from pyVHDLParser.Groups import BlockToGroupParser, GroupParserException, Group 

+

34 

+

35 

+

36@export 

+

37class LibraryGroup(Group): 

+

38 @classmethod 

+

39 def stateParse(cls, parserState: BlockToGroupParser): 

+

40 for block in parserState.GetBlockIterator: 40 ↛ 46line 40 didn't jump to line 46, because the loop on line 40 didn't complete

+

41 if isinstance(block, Library.EndBlock): 

+

42 parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, block) 

+

43 parserState.Pop() 

+

44 return 

+

45 

+

46 raise GroupParserException("End of library clause not found.", block) 

+

47 

+

48 

+

49@export 

+

50class UseGroup(Group): 

+

51 @classmethod 

+

52 def stateParse(cls, parserState: BlockToGroupParser): 

+

53 for block in parserState.GetBlockIterator: 53 ↛ 59line 53 didn't jump to line 59, because the loop on line 53 didn't complete

+

54 if isinstance(block, Use.EndBlock): 

+

55 parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, block) 

+

56 parserState.Pop() 

+

57 return 

+

58 

+

59 raise GroupParserException("End of library clause not found.", block) 

+
+ + + diff --git a/coverage/d_16378e9cfef5f3d4___init___py.html b/coverage/d_16378e9cfef5f3d4___init___py.html new file mode 100644 index 000000000..6524803ce --- /dev/null +++ b/coverage/d_16378e9cfef5f3d4___init___py.html @@ -0,0 +1,554 @@ + + + + + Coverage for pyVHDLParser/Groups/__init__.py: 85% + + + + + +
+
+

+ Coverage for pyVHDLParser/Groups/__init__.py: + 85% +

+ +

+ 253 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from types import FunctionType 

+

31from typing import Iterator, Callable, List, Generator, Any, Dict, Tuple 

+

32 

+

33from pyTooling.MetaClasses import ExtendedType 

+

34from pyTooling.TerminalUI import LineTerminal 

+

35 

+

36from pyTooling.Decorators import export 

+

37 

+

38from pyVHDLParser import StartOfDocument, EndOfDocument, StartOfSnippet, EndOfSnippet 

+

39from pyVHDLParser.Base import ParserException 

+

40from pyVHDLParser.Blocks import Block, CommentBlock, StartOfDocumentBlock, EndOfDocumentBlock 

+

41from pyVHDLParser.Blocks.Common import LinebreakBlock, IndentationBlock 

+

42from pyVHDLParser.Blocks.Reference import Context, Library, Use 

+

43from pyVHDLParser.Blocks.Sequential import Package, PackageBody 

+

44from pyVHDLParser.Blocks.Structural import Entity, Architecture, Configuration 

+

45 

+

46 

+

47@export 

+

48class GroupParserException(ParserException): 

+

49 def __init__(self, message: str, block: Block): 

+

50 super().__init__(message) 

+

51 self._block = block 

+

52 

+

53 

+

54# @export 

+

55# class BlockToGroupParser: 

+

56# """Wrapping class to offer some class methods.""" 

+

57# 

+

58# @staticmethod 

+

59# def Transform(blockGenerator: Generator[Block, Any, None]) -> Generator['Group', Any, None]: 

+

60# """Returns a generator, that reads from a token generator and emits a chain of blocks.""" 

+

61# 

+

62# state = ParserState(blockGenerator) 

+

63# return state.GetGenerator() 

+

64 

+

65 

+

66@export 

+

67class BlockIterator: 

+

68 def __init__(self, parserState, blockGenerator: Iterator): 

+

69 self._parserState: BlockToGroupParser = parserState 

+

70 #self._blockIterator = iter(FastForward(groupGenerator)) 

+

71 self._blockIterator = iter(blockGenerator) 

+

72 

+

73 def __iter__(self) -> 'BlockIterator': 

+

74 return self 

+

75 

+

76 def __next__(self) -> 'Block': 

+

77 nextBlock = self._blockIterator.__next__() 

+

78 self._parserState.Block = nextBlock 

+

79 return nextBlock 

+

80 

+

81 

+

82@export 

+

83class BlockToGroupParser(metaclass=ExtendedType, useSlots=True): 

+

84 """Represents the current state of a block-to-group parser.""" 

+

85 

+

86 _iterator: Iterator 

+

87 _stack: List[Tuple[Callable[['BlockToGroupParser'], bool], Block, 'Group']] 

+

88 _blockMarker: Block 

+

89 

+

90 Block: Block 

+

91 NextState: Callable[['BlockToGroupParser'], bool] 

+

92 

+

93 NewBlock: Block 

+

94 NewGroup: 'Group' 

+

95 LastGroup: 'Group' 

+

96 NextGroup: 'Group' 

+

97 

+

98 def __init__(self, blockGenerator: Generator[Block, Any, None]): 

+

99 """Initializes the parser state.""" 

+

100 

+

101 self._iterator = iter(BlockIterator(self, blockGenerator)) # XXX: review iterator vs. generator 

+

102 self._stack = [] 

+

103 self._blockMarker = None 

+

104 

+

105 startBlock = next(self._iterator) 

+

106 startGroup = StartOfDocumentGroup(startBlock) 

+

107 

+

108 if not isinstance(startBlock, StartOfDocumentBlock): 108 ↛ 109line 108 didn't jump to line 109, because the condition on line 108 was never true

+

109 raise GroupParserException("First block is not a StartOfDocumentBlock.", startBlock) 

+

110 

+

111 self.Block = None 

+

112 self.NextState = StartOfDocumentGroup.stateDocument 

+

113 self.NewBlock = None 

+

114 self.NewGroup = None 

+

115 self.LastGroup = None 

+

116 self.NextGroup = startGroup 

+

117 

+

118 @property 

+

119 def PushState(self) -> Callable[['BlockToGroupParser'], bool]: 

+

120 return self.NextState 

+

121 

+

122 @PushState.setter 

+

123 def PushState(self, value: Callable[['BlockToGroupParser'], bool]): 

+

124 assert (self.NextGroup is not None) 

+

125 self._stack.append(( 

+

126 self.NextState, 

+

127 self._blockMarker, 

+

128 self.NextGroup 

+

129 )) 

+

130 self.NextState = value 

+

131 self._blockMarker = None 

+

132 self.NextGroup = None 

+

133 

+

134 @property 

+

135 def GetBlockIterator(self): # FIXME: what return type? 

+

136 return self._iterator 

+

137 

+

138 # XXX: implement this method 

+

139 # def __iter__(self): 

+

140 # return self._iterator 

+

141 

+

142 # def __iter__(self): 

+

143 # if self.Block.MultiPart: 

+

144 # return iter(BlockToGroupParser._TokenGenerator(self.Block, self.BlockIterator)) 

+

145 # else: 

+

146 # return iter(self.Block) 

+

147 

+

148 @property 

+

149 def BlockMarker(self) -> 'Block': 

+

150 if (self.NewBlock is not None) and (self._blockMarker is self.Block): 150 ↛ 152line 150 didn't jump to line 152, because the condition on line 150 was never true

+

151 # if self.debug: print(" {DARK_GREEN}@BlockMarker: {0!s} => {GREEN}{1!s}{NOCOLOR}".format(self._blockMarker, self.NewBlock, **Console.Foreground)) 

+

152 self._blockMarker = self.NewBlock 

+

153 return self._blockMarker 

+

154 

+

155 @BlockMarker.setter 

+

156 def BlockMarker(self, value: Block): 

+

157 # if self.debug: print(" {DARK_GREEN}@BlockMarker: {0!s} --> {GREEN}{1!s}{NOCOLOR}".format(self._blockMarker, value, **Console.Foreground)) 

+

158 self._blockMarker = value 

+

159 

+

160 def __eq__(self, other: Callable[['ParserState'], bool]) -> bool: 

+

161 """Return true if parser state is equal to the second operand.""" 

+

162 return self.NextState is other 

+

163 

+

164 def __ne__(self, other: Callable[['ParserState'], bool]) -> bool: 

+

165 """Return true if parser state is not equal to the second operand.""" 

+

166 return self.NextState is not other 

+

167 

+

168 def __str__(self) -> str: 

+

169 return self.NextState.__func__.__qualname__ 

+

170 

+

171 def Pop(self, n: int = 1) -> None: 

+

172 self.NewGroup = self.NextGroup 

+

173 

+

174 for i in range(n): 

+

175 top = self._stack.pop() 

+

176 self.NextState, self._blockMarker, self.NextGroup = top 

+

177 

+

178 # print("{MAGENTA}appending {0!s} to {1!s}{NOCOLOR}".format(self.NewGroup.__class__.__qualname__, self.NextGroup.__class__,**Console.Foreground)) 

+

179 if self.NextGroup.InnerGroup is None: 

+

180 self.NextGroup.InnerGroup = self.NewGroup 

+

181 if self.NewGroup.__class__ not in self.NextGroup._subGroups: 181 ↛ 182line 181 didn't jump to line 182, because the condition on line 181 was never true

+

182 raise GroupParserException("Group '{group1}' not supported in {group2}.".format( 

+

183 group1=self.NewGroup.__class__, 

+

184 group2=self.NextGroup.__class__.__qualname__ 

+

185 ), self.Block) 

+

186 

+

187 self.NextGroup._subGroups[self.NewGroup.__class__].append(self.NewGroup) 

+

188 

+

189 def __call__(self) -> Generator['Group', None, None]: 

+

190 # yield StartOfDocumentGroup 

+

191 self.LastGroup = self.NextGroup 

+

192 yield self.LastGroup 

+

193 

+

194 for block in self._iterator: 

+

195 # an empty marker means: set on next yield run 

+

196 if self._blockMarker is None: 

+

197 # if self.debug: print(" new block marker: None -> {0!s}".format(block)) 

+

198 self._blockMarker = block 

+

199 

+

200 # if self.debug: print("{MAGENTA}------ iteration end ------{NOCOLOR}".format(**Console.Foreground)) 

+

201 # execute a state and reissue execution if needed 

+

202 reissue = True 

+

203 while reissue: 

+

204 LineTerminal().WriteDryRun("{DARK_GRAY}reissue state={state!s: <50} block={block!s: <40} {NOCOLOR}".format(state=self, block=self.Block, **LineTerminal.Foreground)) 

+

205 reissue = self.NextState(self) 

+

206 

+

207 # yield a new group 

+

208 if self.NewGroup is not None: 

+

209 yield self.NewGroup 

+

210 self.LastGroup = self.NewGroup 

+

211 self.NewGroup = None 

+

212 

+

213 if isinstance(self.Block, EndOfDocumentBlock) and isinstance(self.LastGroup, EndOfDocumentGroup): 

+

214 return 

+

215 

+

216 else: 

+

217 raise GroupParserException("Unexpected end of document.", self.Block) 

+

218 

+

219 

+

220@export 

+

221class MetaGroup(ExtendedType): 

+

222 """Register all state*** methods in an array called '__STATES__'""" 

+

223 def __new__(cls, className, baseClasses, classMembers: dict): 

+

224 states = [] 

+

225 for memberName, memberObject in classMembers.items(): 

+

226 if isinstance(memberObject, FunctionType) and (memberName[:5] == "state"): 226 ↛ 227line 226 didn't jump to line 227, because the condition on line 226 was never true

+

227 states.append(memberObject) 

+

228 

+

229 group = super().__new__(cls, className, baseClasses, classMembers, useSlots=True) 

+

230 group.__STATES__ = states 

+

231 return group 

+

232 

+

233 

+

234@export 

+

235class Group(metaclass=MetaGroup): 

+

236 __STATES__ = None 

+

237 

+

238 _previousGroup: 'Group' #: Reference to the previous group. 

+

239 NextGroup: 'Group' #: Reference to the next group. 

+

240 InnerGroup: 'Group' #: Reference to the first inner group. 

+

241 _subGroups: Dict[MetaGroup, 'Group'] #: References to all inner groups by group type. 

+

242 

+

243 StartBlock: Block #: Reference to the first block in the scope of this group. 

+

244 EndBlock: Block #: Reference to the last block in the scope of this group. 

+

245 MultiPart: bool #: True, if this group has multiple parts. 

+

246 

+

247 def __init__(self, previousGroup: 'Group', startBlock: Block, endBlock: Block=None): 

+

248 previousGroup.NextGroup = self 

+

249 self._previousGroup = previousGroup 

+

250 self.NextGroup = None 

+

251 self.InnerGroup = None 

+

252 self._subGroups = {} 

+

253 

+

254 self.StartBlock = startBlock 

+

255 self.EndBlock = startBlock if (endBlock is None) else endBlock 

+

256 self.MultiPart = False 

+

257 

+

258 def __len__(self) -> int: 

+

259 return self.EndBlock.EndToken.End.Absolute - self.StartBlock.StartToken.Start.Absolute + 1 

+

260 

+

261 def __iter__(self): # XXX: return type; iterator vs. generator 

+

262 block = self.StartBlock 

+

263 print("group={0}({1}) start={2!s} end={3!s}".format(self.__class__.__name__, self.__class__.__module__, self.StartBlock.StartToken, self.EndBlock.EndToken)) 

+

264 while block is not self.EndBlock: 

+

265 yield block 

+

266 if block.NextBlock is None: 

+

267 raise GroupParserException("Token after {0!r} <- {1!r} <- {2!r} is empty (None).".format(block, block.PreviousToken, block.PreviousToken.PreviousToken), block) 

+

268 block = block.NextBlock 

+

269 

+

270 yield self.EndBlock 

+

271 

+

272 def __repr__(self) -> str: 

+

273 buffer = "undefined block content" 

+

274 # buffer = buffer.replace("\t", "\\t") 

+

275 # buffer = buffer.replace("\n", "\\n") 

+

276 return buffer 

+

277 

+

278 def __str__(self) -> str: 

+

279 return "{{{groupName:.<156s} at {start!s} .. {end!s}}}".format( 

+

280 groupName="{module}.{classname} ".format( 

+

281 module=self.__module__.rpartition(".")[2], 

+

282 classname=self.__class__.__name__ 

+

283 ), 

+

284 start=self.StartBlock.StartToken.Start, 

+

285 end=self.EndBlock.EndToken.End 

+

286 ) 

+

287 

+

288 def GetSubGroups(self, groupTypes=None): # XXX: return type 

+

289 group = self.InnerGroup 

+

290 while group is not None: 290 ↛ exitline 290 didn't return from function 'GetSubGroups', because the condition on line 290 was never false

+

291 yield group 

+

292 group = group.NextGroup 

+

293 

+

294 @property 

+

295 def PreviousGroup(self) -> 'Group': 

+

296 return self._previousGroup 

+

297 @PreviousGroup.setter 

+

298 def PreviousGroup(self, value: 'Group'): 

+

299 self._previousGroup = value 

+

300 value.NextGroup = self 

+

301 

+

302 @property 

+

303 def Length(self) -> int: 

+

304 return len(self) 

+

305 

+

306 @property 

+

307 def States(self) -> List[Callable]: 

+

308 return self.__STATES__ 

+

309 

+

310 

+

311@export 

+

312class StartOfGroup(Group): 

+

313 def __init__(self, startBlock: Block): 

+

314 self._previousGroup = None 

+

315 self.NextGroup = None 

+

316 self.InnerGroup = None 

+

317 self._subGroups = {} 

+

318 

+

319 self.StartBlock = startBlock 

+

320 self.EndBlock = None 

+

321 self.MultiPart = False 

+

322 

+

323 # TODO: needs review: should TokenIterator be used? 

+

324 def __iter__(self): 

+

325 yield self.StartBlock 

+

326 

+

327 def __len__(self) -> int: 

+

328 return 0 

+

329 

+

330 def __str__(self) -> str: 

+

331 return "{{{groupName:.<156s} at {start!s}}}".format( 

+

332 groupName="{module}.{classname} ".format( 

+

333 module=self.__module__.rpartition(".")[2], 

+

334 classname=self.__class__.__name__ 

+

335 ), 

+

336 start=self.StartBlock.StartToken.Start 

+

337 ) 

+

338 

+

339 

+

340@export 

+

341class EndOfGroup(Group): 

+

342 def __init__(self, endBlock: Block): 

+

343 self._previousGroup = None 

+

344 self.NextGroup = None 

+

345 self.StartBlock = None 

+

346 self.EndBlock = endBlock 

+

347 self.MultiPart = False 

+

348 

+

349 # TODO: needs review: should TokenIterator be used? 

+

350 def __iter__(self): 

+

351 yield self.EndBlock 

+

352 

+

353 def __len__(self) -> int: 

+

354 return 0 

+

355 

+

356 def __str__(self) -> str: 

+

357 return "{{{groupName:.<156s} at .. {end!s}}}".format( 

+

358 groupName="{module}.{classname} ".format( 

+

359 module=self.__module__.rpartition(".")[2], 

+

360 classname=self.__class__.__name__ 

+

361 ), 

+

362 end=self.EndBlock.EndToken.Start 

+

363 ) 

+

364 

+

365 

+

366@export 

+

367class StartOfDocumentGroup(StartOfGroup, StartOfDocument): 

+

368 def __init__(self, startBlock: Block): 

+

369 from pyVHDLParser.Groups.Comment import CommentGroup, WhitespaceGroup 

+

370 from pyVHDLParser.Groups.DesignUnit import ContextGroup, EntityGroup, ArchitectureGroup, PackageGroup, PackageBodyGroup, ConfigurationGroup 

+

371 from pyVHDLParser.Groups.Reference import LibraryGroup, UseGroup 

+

372 

+

373 super().__init__(startBlock) 

+

374 

+

375 self._subGroups = { 

+

376 CommentGroup: [], 

+

377 WhitespaceGroup: [], 

+

378 LibraryGroup: [], 

+

379 UseGroup: [], 

+

380 ContextGroup: [], 

+

381 EntityGroup: [], 

+

382 ArchitectureGroup: [], 

+

383 PackageGroup: [], 

+

384 PackageBodyGroup: [], 

+

385 ConfigurationGroup: [] 

+

386 } 

+

387 

+

388 @classmethod 

+

389 def stateDocument(cls, parserState: BlockToGroupParser): 

+

390 from pyVHDLParser.Groups.DesignUnit import ContextGroup, EntityGroup, ArchitectureGroup, PackageGroup, PackageBodyGroup, ConfigurationGroup 

+

391 from pyVHDLParser.Groups.Reference import LibraryGroup, UseGroup 

+

392 from pyVHDLParser.Groups.Comment import CommentGroup, WhitespaceGroup 

+

393 

+

394 SIMPLE_BLOCKS = { 

+

395 Library.StartBlock: LibraryGroup, 

+

396 Use.StartBlock: UseGroup 

+

397 } 

+

398 COMPOUND_BLOCKS = { 

+

399 Context.NameBlock: ContextGroup, 

+

400 Entity.NameBlock: EntityGroup, 

+

401 Architecture.NameBlock: ArchitectureGroup, 

+

402 Package.NameBlock: PackageGroup, 

+

403 PackageBody.NameBlock: PackageBodyGroup, 

+

404 Configuration.NameBlock: ConfigurationGroup 

+

405 } 

+

406 

+

407 currentBlock = parserState.Block 

+

408 

+

409 if isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): 

+

410 parserState.PushState = WhitespaceGroup.stateParse 

+

411 parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) 

+

412 parserState.BlockMarker = currentBlock 

+

413 return True 

+

414 elif isinstance(currentBlock, CommentBlock): 414 ↛ 415line 414 didn't jump to line 415, because the condition on line 414 was never true

+

415 parserState.PushState = CommentGroup.stateParse 

+

416 parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) 

+

417 parserState.BlockMarker = currentBlock 

+

418 return True 

+

419 else: 

+

420 for blk in SIMPLE_BLOCKS: 

+

421 if isinstance(currentBlock, blk): 421 ↛ 422line 421 didn't jump to line 422, because the condition on line 421 was never true

+

422 group = SIMPLE_BLOCKS[blk] 

+

423 parserState.PushState = group.stateParse 

+

424 parserState.NextGroup = group(parserState.LastGroup, currentBlock) 

+

425 parserState.BlockMarker = currentBlock 

+

426 return True 

+

427 

+

428 for blk in COMPOUND_BLOCKS: 

+

429 if isinstance(currentBlock, blk): 

+

430 group = COMPOUND_BLOCKS[blk] 

+

431 parserState.PushState = group.stateParse 

+

432 parserState.NextGroup = group(parserState.LastGroup, currentBlock) 

+

433 parserState.BlockMarker = currentBlock 

+

434 return True 

+

435 

+

436 if isinstance(currentBlock, EndOfDocumentBlock): 436 ↛ 440line 436 didn't jump to line 440, because the condition on line 436 was never false

+

437 parserState.NewGroup = EndOfDocumentGroup(currentBlock) 

+

438 return 

+

439 

+

440 raise GroupParserException("Expected keywords: architecture, context, entity, library, package, use. Found '{block!s}'.".format( 

+

441 block=currentBlock.__class__.__qualname__ 

+

442 ), currentBlock) 

+

443 

+

444 

+

445@export 

+

446class EndOfDocumentGroup(EndOfGroup, EndOfDocument): 

+

447 pass 

+

448 

+

449@export 

+

450class StartOfSnippetGroup(StartOfGroup, StartOfSnippet): 

+

451 pass 

+

452 

+

453@export 

+

454class EndOfSnippetGroup(EndOfGroup, EndOfSnippet): 

+

455 pass 

+
+ + + diff --git a/coverage/d_17500e2f8d5544af_Keywords_py.html b/coverage/d_17500e2f8d5544af_Keywords_py.html new file mode 100644 index 000000000..86833a3f7 --- /dev/null +++ b/coverage/d_17500e2f8d5544af_Keywords_py.html @@ -0,0 +1,1098 @@ + + + + + Coverage for pyVHDLParser/Token/Keywords.py: 99% + + + + + +
+
+

+ Coverage for pyVHDLParser/Token/Keywords.py: + 99% +

+ +

+ 506 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from typing import Any 

+

31 

+

32from pyTooling.Decorators import export 

+

33 

+

34from pyVHDLParser import SourceCodePosition 

+

35from pyVHDLParser.Token import Token, WordToken, VHDLToken, CharacterToken 

+

36from pyVHDLParser.Token.Parser import TokenizerException 

+

37 

+

38 

+

39@export 

+

40class SpecificVHDLToken(VHDLToken): 

+

41 """Base-class for all specific tokens. 

+

42 

+

43 Simple token will be converted to specific tokens while parsing. 

+

44 The internal data is copied, and the original token is replaced by this token. 

+

45 """ 

+

46 

+

47 def __init__(self, previousToken: Token = None, value: Any = None, start: SourceCodePosition = None, end: SourceCodePosition = None, fromExistingToken: Token = None): 

+

48 """ 

+

49 Initialize a specific token, by copying the simple token's data and link 

+

50 this new token to the previous token as a replacement. 

+

51 """ 

+

52 if fromExistingToken is None: 52 ↛ 53line 52 didn't jump to line 53, because the condition on line 52 was never true

+

53 super().__init__(previousToken, value, start, end) 

+

54 else: 

+

55 super().__init__(fromExistingToken.PreviousToken, fromExistingToken.Value, fromExistingToken.Start, fromExistingToken.End) 

+

56 

+

57 

+

58@export 

+

59class BoundaryToken(SpecificVHDLToken): 

+

60 """ 

+

61 Token representing a boundary between (reserved) words. 

+

62 

+

63 In many cases, a :class:`SpaceToken`, :class:`CommentToken`, 

+

64 :class:`LinebreakToken` or :class:`CharacterToken` becomes a BoundaryToken. 

+

65 """ 

+

66 

+

67 

+

68# ============================================================================== 

+

69# Bracket tokens: (), [], {}, <> 

+

70# ============================================================================== 

+

71@export 

+

72class BracketToken(SpecificVHDLToken): 

+

73 """Base-class for all bracket tokens: ``(``, ``)``, ``[``, ``]``, ``{``, ``}``, ``<`` and ``>``.""" 

+

74 

+

75 

+

76# Round bracket / parenthesis / () 

+

77# ---------------------------------------------------------- 

+

78@export 

+

79class RoundBracketToken(BracketToken): 

+

80 """Base-class for all round bracket tokens: ``(`` and ``)``.""" 

+

81 

+

82 

+

83@export 

+

84class OpeningRoundBracketToken(RoundBracketToken): 

+

85 """Token representing an opening round bracket: ``(``.""" 

+

86 

+

87 

+

88@export 

+

89class ClosingRoundBracketToken(RoundBracketToken): 

+

90 """Token representing a closing round bracket: ``)``.""" 

+

91 

+

92 

+

93# Square bracket / [] 

+

94# ---------------------------------------------------------- 

+

95@export 

+

96class SquareBracketToken(BracketToken): 

+

97 """Base-class for all square bracket tokens: ``[`` and ``]``.""" 

+

98 

+

99 

+

100@export 

+

101class OpeningSquareBracketToken(SquareBracketToken): 

+

102 """Token representing an square round bracket: ``[``.""" 

+

103 

+

104 

+

105@export 

+

106class ClosingSquareBracketToken(SquareBracketToken): 

+

107 """Token representing a closing square bracket: ``]``.""" 

+

108 

+

109 

+

110# Curly bracket / brace / curved bracket / {} 

+

111# ---------------------------------------------------------- 

+

112@export 

+

113class CurlyBracketToken(BracketToken): 

+

114 """Base-class for all curly bracket tokens: ``{`` and ``}``.""" 

+

115 

+

116 

+

117@export 

+

118class OpeningCurlyBracketToken(CurlyBracketToken): 

+

119 """Token representing an opening curly bracket: ``{``.""" 

+

120 

+

121 

+

122@export 

+

123class ClosingCurlyBracketToken(CurlyBracketToken): 

+

124 """Token representing a closing curly bracket: ``}``.""" 

+

125 

+

126 

+

127# Angle bracket / arrow bracket / <> 

+

128# ---------------------------------------------------------- 

+

129@export 

+

130class AngleBracketToken(BracketToken): 

+

131 """Base-class for all angle bracket tokens: ``<`` and ``>``.""" 

+

132 

+

133 

+

134@export 

+

135class OpeningAngleBracketToken(AngleBracketToken): 

+

136 """Token representing an opening angle bracket: ``<``.""" 

+

137 

+

138 

+

139@export 

+

140class ClosingAngleBracketToken(AngleBracketToken): 

+

141 """Token representing a closing angle bracket: ``>``.""" 

+

142 

+

143 

+

144# ============================================================================== 

+

145# Operator tokens: +, -, *, /, **, & 

+

146# ============================================================================== 

+

147@export 

+

148class OperatorToken(SpecificVHDLToken): 

+

149 """Base-class for all operator tokens.""" 

+

150 

+

151 

+

152@export 

+

153class PlusOperator(OperatorToken): 

+

154 """Token representing a plus operator: ``+``.""" 

+

155 __KEYWORD__ = "+" 

+

156 

+

157 

+

158@export 

+

159class MinusOperator(OperatorToken): 

+

160 """Token representing a minus operator: ``-``.""" 

+

161 __KEYWORD__ = "-" 

+

162 

+

163 

+

164@export 

+

165class MultiplyOperator(OperatorToken): 

+

166 """Token representing a multiply operator: ``*``.""" 

+

167 __KEYWORD__ = "*" 

+

168 

+

169 

+

170@export 

+

171class DivideOperator(OperatorToken): 

+

172 """Token representing a divide operator: ``/``.""" 

+

173 __KEYWORD__ = "/" 

+

174 

+

175 

+

176@export 

+

177class ModuloOperator(OperatorToken): 

+

178 __KEYWORD__ = "mod" 

+

179 

+

180 

+

181@export 

+

182class RemainderOperator(OperatorToken): 

+

183 __KEYWORD__ = "rem" 

+

184 

+

185 

+

186@export 

+

187class PowerOperator(OperatorToken): 

+

188 """Token representing a power operator: ``**``.""" 

+

189 __KEYWORD__ = "**" 

+

190 

+

191 

+

192@export 

+

193class ConcatOperator(OperatorToken): 

+

194 """Token representing a concat operator: ``&``.""" 

+

195 __KEYWORD__ = "&" 

+

196 

+

197 

+

198# Relational operatrors 

+

199# ---------------------------------------------------------- 

+

200@export 

+

201class RelationalOperator(OperatorToken): 

+

202 """Base-class for all relational operator tokens.""" 

+

203 

+

204 

+

205@export 

+

206class EqualOperator(RelationalOperator): 

+

207 __KEYWORD__ = "=" 

+

208 

+

209 

+

210@export 

+

211class UnequalOperator(RelationalOperator): 

+

212 __KEYWORD__ = "/=" 

+

213 

+

214 

+

215@export 

+

216class LessThanOperator(RelationalOperator): 

+

217 __KEYWORD__ = "<" 

+

218 

+

219 

+

220@export 

+

221class LessThanOrEqualOperator(RelationalOperator): 

+

222 __KEYWORD__ = "<=" 

+

223 

+

224 

+

225@export 

+

226class GreaterThanOperator(RelationalOperator): 

+

227 __KEYWORD__ = ">" 

+

228 

+

229 

+

230@export 

+

231class GreaterThanOrEqualOperator(RelationalOperator): 

+

232 __KEYWORD__ = ">=" 

+

233 

+

234 

+

235@export 

+

236class MatchingEqualOperator(RelationalOperator): 

+

237 __KEYWORD__ = "?=" 

+

238 

+

239 

+

240@export 

+

241class MatchingUnequalOperator(RelationalOperator): 

+

242 __KEYWORD__ = "?/=" 

+

243 

+

244 

+

245@export 

+

246class MatchingLessThanOperator(RelationalOperator): 

+

247 __KEYWORD__ = "?<" 

+

248 

+

249 

+

250@export 

+

251class MatchingLessThanOrEqualOperator(RelationalOperator): 

+

252 __KEYWORD__ = "?<=" 

+

253 

+

254 

+

255@export 

+

256class MatchingGreaterThanOperator(RelationalOperator): 

+

257 __KEYWORD__ = "?>" 

+

258 

+

259 

+

260@export 

+

261class MatchingGreaterThanOrEqualOperator(RelationalOperator): 

+

262 __KEYWORD__ = "?>=" 

+

263 

+

264 

+

265@export 

+

266class DelimiterToken(SpecificVHDLToken): 

+

267 """ 

+

268 Token representing a delimiter sign in between list items. 

+

269 

+

270 This token is usually created from a :class:`CharacterToken` with values ``,`` 

+

271 or ``;``. 

+

272 """ 

+

273 

+

274 

+

275@export 

+

276class EndToken(SpecificVHDLToken): 

+

277 """ 

+

278 Token representing an end of a statement. 

+

279 

+

280 This token is usually created from a :class:`CharacterToken` with value ``;``. 

+

281 """ 

+

282 

+

283 

+

284@export 

+

285class IdentifierToken(SpecificVHDLToken): 

+

286 """ 

+

287 Token representing an identifier. 

+

288 

+

289 This token is usually created from a :class:`WordToken` or :class:`ExtendedIdentifierToken`. 

+

290 """ 

+

291 

+

292 

+

293@export 

+

294class RepeatedIdentifierToken(IdentifierToken): 

+

295 """ 

+

296 Token representing a repeated identifier. 

+

297 

+

298 This token is usually created from a :class:`WordToken` or :class:`ExtendedIdentifierToken`. 

+

299 """ 

+

300 

+

301 

+

302@export 

+

303class SimpleNameToken(SpecificVHDLToken): 

+

304 pass 

+

305 

+

306 

+

307@export 

+

308class LabelToken(SpecificVHDLToken): 

+

309 """ 

+

310 Token representing a label. 

+

311 

+

312 This token is usually created from a :class:`WordToken` or :class:`ExtendedIdentifierToken`. 

+

313 """ 

+

314 

+

315 

+

316@export 

+

317class RepeatedLabelToken(LabelToken): 

+

318 """ 

+

319 Token representing a repeated label. 

+

320 

+

321 This token is usually created from a :class:`WordToken` or :class:`ExtendedIdentifierToken`. 

+

322 """ 

+

323 

+

324 

+

325@export 

+

326class MultiCharKeyword(VHDLToken): 

+

327 __KEYWORD__: str 

+

328 

+

329 def __init__(self, previousToken: Token = None, value: Any = None, start: SourceCodePosition = None, end: SourceCodePosition = None, fromExistingToken: CharacterToken = None): 

+

330 if fromExistingToken is None: 330 ↛ 331line 330 didn't jump to line 331, because the condition on line 330 was never true

+

331 super().__init__(previousToken, self.__KEYWORD__, start, end) 

+

332 else: 

+

333 super().__init__(fromExistingToken.PreviousToken, self.__KEYWORD__, fromExistingToken.Start, fromExistingToken.End) 

+

334 

+

335 def __str__(self) -> str: 

+

336 return "<{name: <50} '{value}' at {pos!r}>".format( 

+

337 name=self.__class__.__name__[:-7], 

+

338 value=self.__KEYWORD__, 

+

339 pos=self.Start 

+

340 ) 

+

341 

+

342 

+

343@export 

+

344class CommentKeyword(MultiCharKeyword): 

+

345 """Base-class for all comment keywords: ``--``, ``/*`` and ``*/``.""" 

+

346 

+

347 

+

348@export 

+

349class SingleLineCommentKeyword(CommentKeyword): 

+

350 """Token representing a starting sequence for a single-line comment: ``--``.""" 

+

351 __KEYWORD__ = "--" 

+

352 

+

353 

+

354@export 

+

355class MultiLineCommentKeyword(CommentKeyword): 

+

356 """Base-class for all tokens related to multi-line comments: ``/*`` and ``*/``.""" 

+

357 

+

358 

+

359@export 

+

360class MultiLineCommentStartKeyword(MultiLineCommentKeyword): 

+

361 """Token representing a starting sequence for a multi-line comment: ``/*``.""" 

+

362 __KEYWORD__ = "/*" 

+

363 

+

364 

+

365@export 

+

366class MultiLineCommentEndKeyword(MultiLineCommentKeyword): 

+

367 """Token representing a closing sequence for a multi-line comment: ``*/``.""" 

+

368 __KEYWORD__ = "*/" 

+

369 

+

370 

+

371@export 

+

372class AssignmentKeyword(MultiCharKeyword): 

+

373 """Base-class for all assignment keywords: ``:=`` and ``<=``.""" 

+

374 

+

375 

+

376@export 

+

377class VariableAssignmentKeyword(AssignmentKeyword): 

+

378 """Token representing a variable assignment: ``:=``.""" 

+

379 __KEYWORD__ = ":=" 

+

380 

+

381 

+

382@export 

+

383class SignalAssignmentKeyword(AssignmentKeyword): 

+

384 """Token representing a signal assignment: ``<=``.""" 

+

385 __KEYWORD__ = "<=" 

+

386 

+

387 

+

388@export 

+

389class AssociationKeyword(MultiCharKeyword): 

+

390 pass 

+

391 

+

392 

+

393@export 

+

394class MapAssociationKeyword(AssociationKeyword): 

+

395 __KEYWORD__ = "=>" 

+

396 

+

397 

+

398@export 

+

399class SignalAssociationKeyword(AssociationKeyword): 

+

400 __KEYWORD__ = "<=>" 

+

401 

+

402 

+

403@export 

+

404class KeywordToken(VHDLToken): 

+

405 __KEYWORD__ : str 

+

406 

+

407 def __init__(self, previousToken: Token = None, value: str = None, start: SourceCodePosition = None, end: SourceCodePosition = None, fromExistingToken: WordToken = None): 

+

408 if fromExistingToken is None: 408 ↛ 409line 408 didn't jump to line 409, because the condition on line 408 was never true

+

409 if value.lower() != self.__KEYWORD__: 

+

410 raise TokenizerException("Expected keyword {0}.".format(self.__KEYWORD__.upper()), None) 

+

411 

+

412 super().__init__(previousToken, value, str, end) 

+

413 else: 

+

414 if not (isinstance(fromExistingToken, WordToken) and (fromExistingToken <= self.__KEYWORD__)): 

+

415 raise TokenizerException("Expected keyword {0}.".format(self.__KEYWORD__.upper()), fromExistingToken) 

+

416 

+

417 super().__init__(fromExistingToken.PreviousToken, self.__KEYWORD__, fromExistingToken.Start, fromExistingToken.End) 

+

418 

+

419 def __str__(self) -> str: 

+

420 return "<{name: <50} {value:.<59} at {pos!r}>".format( 

+

421 name=self.__class__.__name__, 

+

422 value="'" + self.Value + "' ", 

+

423 pos=self.Start 

+

424 ) 

+

425 

+

426 

+

427@export 

+

428class DirectionKeyword(KeywordToken): 

+

429 pass 

+

430 

+

431 

+

432@export 

+

433class Operator(KeywordToken): 

+

434 pass 

+

435 

+

436 

+

437@export 

+

438class LogicalOperator(Operator): 

+

439 pass 

+

440 

+

441 

+

442@export 

+

443class MiscellaneousOperator(Operator): 

+

444 pass 

+

445 

+

446 

+

447@export 

+

448class ShiftOperator(Operator): 

+

449 pass 

+

450 

+

451 

+

452@export 

+

453class AbsOperator(KeywordToken): 

+

454 """Reserved word 'abs' for unary operator *absolute value*.""" 

+

455 __KEYWORD__ = "abs" 

+

456 

+

457 

+

458@export 

+

459class AccessKeyword(KeywordToken): 

+

460 """Reserved word 'access' to defined access types.""" 

+

461 __KEYWORD__ = "access" 

+

462 

+

463 

+

464@export 

+

465class AfterKeyword(KeywordToken): 

+

466 """Reserved word 'after'.""" 

+

467 __KEYWORD__ = "after" 

+

468 

+

469 

+

470@export 

+

471class AliasKeyword(KeywordToken): 

+

472 """Reserved word 'alias' to declare aliases.""" 

+

473 __KEYWORD__ = "alias" 

+

474 

+

475 

+

476@export 

+

477class AllKeyword(KeywordToken): 

+

478 """Reserved word 'all'.""" 

+

479 __KEYWORD__ = "all" 

+

480 

+

481 

+

482@export 

+

483class AndOperator(LogicalOperator): 

+

484 """Reserved word 'and' for binary logical operator *and*.""" 

+

485 __KEYWORD__ = "and" 

+

486 

+

487 

+

488@export 

+

489class ArchitectureKeyword(KeywordToken): 

+

490 """Reserved word 'architecture' to define architectures.""" 

+

491 __KEYWORD__ = "architecture" 

+

492 

+

493 

+

494@export 

+

495class ArrayKeyword(KeywordToken): 

+

496 """Reserved word 'array' to define array types.""" 

+

497 __KEYWORD__ = "array" 

+

498 

+

499 

+

500@export 

+

501class AssertKeyword(KeywordToken): 

+

502 """Reserved word 'assert' for *assert*-statements.""" 

+

503 __KEYWORD__ = "assert" 

+

504 

+

505 

+

506@export 

+

507class AttributeKeyword(KeywordToken): 

+

508 """Reserved word 'attribute'.""" 

+

509 __KEYWORD__ = "attribute" 

+

510 

+

511 

+

512@export 

+

513class BeginKeyword(KeywordToken): 

+

514 """Reserved word 'begin' to distinguish declarative regions from statements regions.""" 

+

515 __KEYWORD__ = "begin" 

+

516 

+

517 

+

518@export 

+

519class BlockKeyword(KeywordToken): 

+

520 """Reserved word 'block' for *block*-statements.""" 

+

521 __KEYWORD__ = "block" 

+

522 

+

523 

+

524@export 

+

525class BodyKeyword(KeywordToken): 

+

526 """Reserved word 'body' to distinguish declarations from implementations (bodies).""" 

+

527 __KEYWORD__ = "body" 

+

528 

+

529 

+

530@export 

+

531class BufferKeyword(KeywordToken): 

+

532 """Reserved word 'buffer' for mode *buffer*.""" 

+

533 __KEYWORD__ = "buffer" 

+

534 

+

535 

+

536@export 

+

537class BusKeyword(KeywordToken): 

+

538 """Reserved word 'bus'.""" 

+

539 __KEYWORD__ = "bus" 

+

540 

+

541 

+

542@export 

+

543class CaseKeyword(KeywordToken): 

+

544 __KEYWORD__ = "case" 

+

545 

+

546 

+

547@export 

+

548class ComponentKeyword(KeywordToken): 

+

549 __KEYWORD__ = "component" 

+

550 

+

551 

+

552@export 

+

553class ConfigurationKeyword(KeywordToken): 

+

554 __KEYWORD__ = "configuration" 

+

555 

+

556 

+

557@export 

+

558class ConstantKeyword(KeywordToken): 

+

559 __KEYWORD__ = "constant" 

+

560 

+

561 

+

562@export 

+

563class ContextKeyword(KeywordToken): 

+

564 __KEYWORD__ = "context" 

+

565 

+

566 

+

567@export 

+

568class DefaultKeyword(KeywordToken): 

+

569 __KEYWORD__ = "default" 

+

570 

+

571 

+

572@export 

+

573class DisconnectKeyword(KeywordToken): 

+

574 __KEYWORD__ = "disconnect" 

+

575 

+

576 

+

577@export 

+

578class DowntoKeyword(DirectionKeyword): 

+

579 __KEYWORD__ = "downto" 

+

580 

+

581 

+

582@export 

+

583class ElseKeyword(KeywordToken): 

+

584 __KEYWORD__ = "else" 

+

585 

+

586 

+

587@export 

+

588class ElsIfKeyword(KeywordToken): 

+

589 __KEYWORD__ = "elsif" 

+

590 

+

591 

+

592@export 

+

593class EndKeyword(KeywordToken): 

+

594 __KEYWORD__ = "end" 

+

595 

+

596 

+

597@export 

+

598class EntityKeyword(KeywordToken): 

+

599 __KEYWORD__ = "entity" 

+

600 

+

601 

+

602@export 

+

603class ExitKeyword(KeywordToken): 

+

604 __KEYWORD__ = "exit" 

+

605 

+

606 

+

607@export 

+

608class FileKeyword(KeywordToken): 

+

609 __KEYWORD__ = "file" 

+

610 

+

611 

+

612@export 

+

613class ForKeyword(KeywordToken): 

+

614 __KEYWORD__ = "for" 

+

615 

+

616 

+

617@export 

+

618class ForceKeyword(KeywordToken): 

+

619 __KEYWORD__ = "force" 

+

620 

+

621 

+

622@export 

+

623class FunctionKeyword(KeywordToken): 

+

624 __KEYWORD__ = "function" 

+

625 

+

626 

+

627@export 

+

628class GenerateKeyword(KeywordToken): 

+

629 __KEYWORD__ = "generate" 

+

630 

+

631 

+

632@export 

+

633class GenericKeyword(KeywordToken): 

+

634 __KEYWORD__ = "generic" 

+

635 

+

636 

+

637@export 

+

638class GroupKeyword(KeywordToken): 

+

639 __KEYWORD__ = "group" 

+

640 

+

641 

+

642@export 

+

643class GuardedKeyword(KeywordToken): 

+

644 __KEYWORD__ = "guarded" 

+

645 

+

646 

+

647@export 

+

648class IfKeyword(KeywordToken): 

+

649 __KEYWORD__ = "if" 

+

650 

+

651 

+

652@export 

+

653class IsKeyword(KeywordToken): 

+

654 __KEYWORD__ = "is" 

+

655 

+

656 

+

657@export 

+

658class InKeyword(KeywordToken): 

+

659 __KEYWORD__ = "in" 

+

660 

+

661 

+

662@export 

+

663class InoutKeyword(KeywordToken): 

+

664 __KEYWORD__ = "inout" 

+

665 

+

666 

+

667@export 

+

668class ImpureKeyword(KeywordToken): 

+

669 __KEYWORD__ = "impure" 

+

670 

+

671 

+

672@export 

+

673class InertialKeyword(KeywordToken): 

+

674 __KEYWORD__ = "inertial" 

+

675 

+

676 

+

677@export 

+

678class LabelKeyword(KeywordToken): 

+

679 __KEYWORD__ = "lable" 

+

680 

+

681 

+

682@export 

+

683class LibraryKeyword(KeywordToken): 

+

684 __KEYWORD__ = "library" 

+

685 

+

686 

+

687@export 

+

688class LinkageKeyword(KeywordToken): 

+

689 __KEYWORD__ = "linkage" 

+

690 

+

691 

+

692@export 

+

693class LiteralKeyword(KeywordToken): 

+

694 __KEYWORD__ = "literal" 

+

695 

+

696 

+

697@export 

+

698class LoopKeyword(KeywordToken): 

+

699 __KEYWORD__ = "loop" 

+

700 

+

701 

+

702@export 

+

703class MapKeyword(KeywordToken): 

+

704 __KEYWORD__ = "map"\ 

+

705 

+

706 

+

707@export 

+

708class NandOperator(LogicalOperator): 

+

709 __KEYWORD__ = "nand" 

+

710 

+

711 

+

712@export 

+

713class NewKeyword(KeywordToken): 

+

714 __KEYWORD__ = "new" 

+

715 

+

716 

+

717@export 

+

718class NextKeyword(KeywordToken): 

+

719 __KEYWORD__ = "next" 

+

720 

+

721 

+

722@export 

+

723class NorOperator(LogicalOperator): 

+

724 __KEYWORD__ = "nor" 

+

725 

+

726 

+

727@export 

+

728class NotOperator(LogicalOperator): 

+

729 __KEYWORD__ = "not" 

+

730 

+

731 

+

732@export 

+

733class NullKeyword(KeywordToken): 

+

734 __KEYWORD__ = "null" 

+

735 

+

736 

+

737@export 

+

738class OfKeyword(KeywordToken): 

+

739 __KEYWORD__ = "of" 

+

740 

+

741 

+

742@export 

+

743class OnKeyword(KeywordToken): 

+

744 __KEYWORD__ = "on" 

+

745 

+

746 

+

747@export 

+

748class OpenKeyword(KeywordToken): 

+

749 __KEYWORD__ = "open" 

+

750 

+

751 

+

752@export 

+

753class OrOperator(LogicalOperator): 

+

754 __KEYWORD__ = "or" 

+

755 

+

756 

+

757@export 

+

758class OthersKeyword(KeywordToken): 

+

759 __KEYWORD__ = "others" 

+

760 

+

761 

+

762@export 

+

763class OutKeyword(KeywordToken): 

+

764 __KEYWORD__ = "out" 

+

765 

+

766 

+

767@export 

+

768class PackageKeyword(KeywordToken): 

+

769 __KEYWORD__ = "package" 

+

770 

+

771 

+

772@export 

+

773class ParameterKeyword(KeywordToken): 

+

774 __KEYWORD__ = "parameter" 

+

775 

+

776 

+

777@export 

+

778class PortKeyword(KeywordToken): 

+

779 __KEYWORD__ = "port" 

+

780 

+

781 

+

782@export 

+

783class PostponedKeyword(KeywordToken): 

+

784 __KEYWORD__ = "postponed" 

+

785 

+

786 

+

787@export 

+

788class PrivateKeyword(KeywordToken): 

+

789 __KEYWORD__ = "private" 

+

790 

+

791 

+

792@export 

+

793class ProcedureKeyword(KeywordToken): 

+

794 __KEYWORD__ = "procedure" 

+

795 

+

796 

+

797@export 

+

798class ProcessKeyword(KeywordToken): 

+

799 __KEYWORD__ = "process" 

+

800 

+

801 

+

802@export 

+

803class PropertyKeyword(KeywordToken): 

+

804 __KEYWORD__ = "property" 

+

805 

+

806 

+

807@export 

+

808class ProtectedKeyword(KeywordToken): 

+

809 __KEYWORD__ = "protected" 

+

810 

+

811 

+

812@export 

+

813class PureKeyword(KeywordToken): 

+

814 __KEYWORD__ = "pure" 

+

815 

+

816 

+

817@export 

+

818class RangeKeyword(KeywordToken): 

+

819 __KEYWORD__ = "range" 

+

820 

+

821 

+

822@export 

+

823class RecordKeyword(KeywordToken): 

+

824 __KEYWORD__ = "record" 

+

825 

+

826 

+

827@export 

+

828class RegisterKeyword(KeywordToken): 

+

829 __KEYWORD__ = "register" 

+

830 

+

831 

+

832@export 

+

833class RejectKeyword(KeywordToken): 

+

834 __KEYWORD__ = "reject" 

+

835 

+

836 

+

837@export 

+

838class ReleaseKeyword(KeywordToken): 

+

839 __KEYWORD__ = "release" 

+

840 

+

841 

+

842@export 

+

843class ReportKeyword(KeywordToken): 

+

844 __KEYWORD__ = "report" 

+

845 

+

846 

+

847@export 

+

848class ReturnKeyword(KeywordToken): 

+

849 __KEYWORD__ = "return" 

+

850 

+

851 

+

852@export 

+

853class RolOperator(ShiftOperator): 

+

854 __KEYWORD__ = "rol" 

+

855 

+

856 

+

857@export 

+

858class RorOperator(ShiftOperator): 

+

859 __KEYWORD__ = "ror" 

+

860 

+

861 

+

862@export 

+

863class SelectKeyword(KeywordToken): 

+

864 __KEYWORD__ = "select" 

+

865 

+

866 

+

867@export 

+

868class SequenceKeyword(KeywordToken): 

+

869 __KEYWORD__ = "sequence" 

+

870 

+

871 

+

872@export 

+

873class SeverityKeyword(KeywordToken): 

+

874 __KEYWORD__ = "severity" 

+

875 

+

876 

+

877@export 

+

878class SharedKeyword(KeywordToken): 

+

879 __KEYWORD__ = "shared" 

+

880 

+

881 

+

882@export 

+

883class SignalKeyword(KeywordToken): 

+

884 __KEYWORD__ = "signal" 

+

885 

+

886 

+

887@export 

+

888class SlaOperator(ShiftOperator): 

+

889 __KEYWORD__ = "sla" 

+

890 

+

891 

+

892@export 

+

893class SllOperator(ShiftOperator): 

+

894 __KEYWORD__ = "sll" 

+

895 

+

896 

+

897@export 

+

898class SraOperator(ShiftOperator): 

+

899 __KEYWORD__ = "sra" 

+

900 

+

901 

+

902@export 

+

903class SrlOperator(ShiftOperator): 

+

904 __KEYWORD__ = "srl" 

+

905 

+

906 

+

907@export 

+

908class SubtypeKeyword(KeywordToken): 

+

909 __KEYWORD__ = "subtype" 

+

910 

+

911 

+

912@export 

+

913class ThenKeyword(KeywordToken): 

+

914 __KEYWORD__ = "then" 

+

915 

+

916 

+

917@export 

+

918class ToKeyword(DirectionKeyword): 

+

919 __KEYWORD__ = "to" 

+

920 

+

921 

+

922@export 

+

923class TransportKeyword(KeywordToken): 

+

924 __KEYWORD__ = "transport" 

+

925 

+

926 

+

927@export 

+

928class TypeKeyword(KeywordToken): 

+

929 __KEYWORD__ = "type" 

+

930 

+

931 

+

932@export 

+

933class UnaffectedKeyword(KeywordToken): 

+

934 __KEYWORD__ = "unaffected" 

+

935 

+

936 

+

937@export 

+

938class UnitsKeyword(KeywordToken): 

+

939 __KEYWORD__ = "units" 

+

940 

+

941 

+

942@export 

+

943class UntilKeyword(KeywordToken): 

+

944 __KEYWORD__ = "until" 

+

945 

+

946 

+

947@export 

+

948class UseKeyword(KeywordToken): 

+

949 __KEYWORD__ = "use" 

+

950 

+

951 

+

952@export 

+

953class UnbufferedKeyword(KeywordToken): 

+

954 __KEYWORD__ = "unbuffered" 

+

955 

+

956 

+

957@export 

+

958class VariableKeyword(KeywordToken): 

+

959 __KEYWORD__ = "variable" 

+

960 

+

961 

+

962@export 

+

963class ViewKeyword(KeywordToken): 

+

964 __KEYWORD__ = "view" 

+

965 

+

966 

+

967@export 

+

968class VunitKeyword(KeywordToken): 

+

969 __KEYWORD__ = "vunit" 

+

970 

+

971 

+

972@export 

+

973class WaitKeyword(KeywordToken): 

+

974 __KEYWORD__ = "wait" 

+

975 

+

976 

+

977@export 

+

978class WhenKeyword(KeywordToken): 

+

979 __KEYWORD__ = "when" 

+

980 

+

981 

+

982@export 

+

983class WhileKeyword(KeywordToken): 

+

984 __KEYWORD__ = "while" 

+

985 

+

986 

+

987@export 

+

988class WithKeyword(KeywordToken): 

+

989 __KEYWORD__ = "with" 

+

990 

+

991 

+

992@export 

+

993class XorOperator(LogicalOperator): 

+

994 __KEYWORD__ = "xor" 

+

995 

+

996 

+

997@export 

+

998class XnorOperator(LogicalOperator): 

+

999 __KEYWORD__ = "xnor" 

+
+ + + diff --git a/coverage/d_17500e2f8d5544af_Parser_py.html b/coverage/d_17500e2f8d5544af_Parser_py.html new file mode 100644 index 000000000..b53b2828e --- /dev/null +++ b/coverage/d_17500e2f8d5544af_Parser_py.html @@ -0,0 +1,612 @@ + + + + + Coverage for pyVHDLParser/Token/Parser.py: 65% + + + + + +
+
+

+ Coverage for pyVHDLParser/Token/Parser.py: + 65% +

+ +

+ 394 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from enum import IntEnum 

+

31from typing import Iterator 

+

32 

+

33from pyTooling.Decorators import export 

+

34 

+

35from pyVHDLParser import SourceCodePosition 

+

36from pyVHDLParser.Base import ParserException 

+

37from pyVHDLParser.Token import StartOfDocumentToken, EndOfDocumentToken, IndentationToken, FusedCharacterToken 

+

38from pyVHDLParser.Token import CharacterLiteralToken, StringLiteralToken, ExtendedIdentifier, DirectiveToken, IntegerLiteralToken, RealLiteralToken 

+

39from pyVHDLParser.Token import CharacterToken, SpaceToken, WordToken, SingleLineCommentToken, MultiLineCommentToken, LinebreakToken 

+

40 

+

41 

+

42@export 

+

43class TokenizerException(ParserException): 

+

44 """A :exc:`~pyVHDLParser.Base.ParserException` generated by the :class:`~pyVHDLParser.Token.Parser.Tokenizer`.""" 

+

45 

+

46 def __init__(self, message: str, position: SourceCodePosition): 

+

47 super().__init__(message) 

+

48 self.Position = position 

+

49 

+

50 def __str__(self) -> str: 

+

51 return "{0!s}: {1}".format(self.Position, self._message) 

+

52 

+

53 

+

54@export 

+

55class Tokenizer: 

+

56 class TokenKind(IntEnum): 

+

57 """Enumeration of all Tokenizer states.""" 

+

58 

+

59 SpaceChars = 0 #: Last char was a space 

+

60 IntegerChars = 1 #: Last char was a digit 

+

61 RealChars = 2 #: Last char was a digit 

+

62 AlphaChars = 3 #: Last char was a letter 

+

63 DelimiterChars = 4 #: Last char was a delimiter character 

+

64 PossibleSingleLineCommentStart = 5 #: Last char was a dash 

+

65 PossibleLinebreak = 6 #: Last char was a ``\r`` 

+

66 PossibleRealLiteral = 7 #: Last char was a ``.`` 

+

67 PossibleCharacterLiteral = 8 #: Last char was a ``'`` 

+

68 PossibleStringLiteralStart = 9 #: Last char was a ``"`` 

+

69 PossibleExtendedIdentifierStart = 10 #: Last char was a ``\`` 

+

70 SingleLineComment = 11 #: Found ``--`` before 

+

71 MultiLineComment = 12 #: Found ``/*`` before 

+

72 Linebreak = 13 #: Last char was a ``\n`` 

+

73 Directive = 14 #: Last char was a `` ` `` 

+

74 FuseableCharacter = 15 #: Last char was a character that could be fused 

+

75 OtherChars = 16 #: Anything else 

+

76 

+

77 

+

78 @classmethod 

+

79 def GetVHDLTokenizer(cls, iterable: Iterator[str]): 

+

80 previousToken = StartOfDocumentToken() 

+

81 tokenKind = cls.TokenKind.OtherChars 

+

82 start = SourceCodePosition(1, 1, 1) 

+

83 buffer = "" 

+

84 absolute = 0 

+

85 column = 0 

+

86 row = 1 

+

87 

+

88 __NUMBER_CHARACTERS__ = "0123456789" 

+

89 __ALPHA_CHARACTERS__ = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" 

+

90 __WHITESPACE_CHARACTERS__ = " \t" 

+

91 __FUSEABLE_CHARS__ = "=<:/*>?" 

+

92 

+

93 yield previousToken 

+

94 

+

95 for char in iterable: 

+

96 absolute += 1 

+

97 column += 1 

+

98 

+

99 # State: SpaceChars 

+

100 if tokenKind is cls.TokenKind.SpaceChars: 

+

101 if char in __WHITESPACE_CHARACTERS__: 

+

102 buffer += char 

+

103 else: 

+

104 end = SourceCodePosition(row, column - 1, absolute - 1) 

+

105 if isinstance(previousToken, (LinebreakToken, SingleLineCommentToken, StartOfDocumentToken)): 

+

106 previousToken = IndentationToken(previousToken, buffer, start, end) 

+

107 else: 

+

108 previousToken = SpaceToken(previousToken, buffer, start, end) 

+

109 yield previousToken 

+

110 

+

111 start = SourceCodePosition(row, column, absolute) 

+

112 buffer = char 

+

113 if char in __NUMBER_CHARACTERS__: tokenKind = cls.TokenKind.IntegerChars 

+

114 elif char in __ALPHA_CHARACTERS__: tokenKind = cls.TokenKind.AlphaChars 

+

115 elif char == "'": tokenKind = cls.TokenKind.PossibleCharacterLiteral 

+

116 elif char == "\"": tokenKind = cls.TokenKind.PossibleStringLiteralStart 

+

117 elif char == "-": tokenKind = cls.TokenKind.PossibleSingleLineCommentStart 

+

118 elif char == "\r": tokenKind = cls.TokenKind.PossibleLinebreak 

+

119 elif char == "\n": 

+

120 previousToken = LinebreakToken(previousToken, char, start, start) 

+

121 yield previousToken 

+

122 tokenKind = cls.TokenKind.OtherChars 

+

123 elif char in __FUSEABLE_CHARS__: 

+

124 buffer = char 

+

125 tokenKind = cls.TokenKind.FuseableCharacter 

+

126 elif char == ".": tokenKind = cls.TokenKind.PossibleRealLiteral 

+

127 elif char == "\\": tokenKind = cls.TokenKind.PossibleExtendedIdentifierStart 

+

128 elif (char == "`") and isinstance(previousToken, (SpaceToken, LinebreakToken)): 128 ↛ 129line 128 didn't jump to line 129, because the condition on line 128 was never true

+

129 tokenKind = cls.TokenKind.Directive 

+

130 else: 

+

131 previousToken = CharacterToken(previousToken, char, start) 

+

132 yield previousToken 

+

133 tokenKind = cls.TokenKind.OtherChars 

+

134 

+

135 # State: IntegerChars 

+

136 elif tokenKind is cls.TokenKind.IntegerChars: 

+

137 if (char in __NUMBER_CHARACTERS__) or (char == "_"): 

+

138 buffer += char 

+

139 elif char == ".": 

+

140 buffer += char 

+

141 tokenKind = cls.TokenKind.RealChars 

+

142 else: 

+

143 previousToken = IntegerLiteralToken(previousToken, buffer, start, SourceCodePosition(row, column, absolute)) 

+

144 yield previousToken 

+

145 

+

146 start = SourceCodePosition(row, column, absolute) 

+

147 buffer = char 

+

148 if char in __WHITESPACE_CHARACTERS__: tokenKind = cls.TokenKind.SpaceChars 

+

149 elif char in __ALPHA_CHARACTERS__: tokenKind = cls.TokenKind.AlphaChars 149 ↛ 479line 149 didn't jump to line 479

+

150 elif char == "'": tokenKind = cls.TokenKind.PossibleCharacterLiteral 150 ↛ 479line 150 didn't jump to line 479

+

151 elif char == "\"": tokenKind = cls.TokenKind.PossibleStringLiteralStart 151 ↛ 479line 151 didn't jump to line 479

+

152 elif char == "-": tokenKind = cls.TokenKind.PossibleSingleLineCommentStart 

+

153 elif char == "\r": tokenKind = cls.TokenKind.PossibleLinebreak 

+

154 elif char == "\n": 

+

155 previousToken = LinebreakToken(previousToken, char, start, start) 

+

156 yield previousToken 

+

157 tokenKind = cls.TokenKind.OtherChars 

+

158 elif char in __FUSEABLE_CHARS__: 

+

159 buffer = char 

+

160 tokenKind = cls.TokenKind.FuseableCharacter 

+

161 elif char == "\\": tokenKind = cls.TokenKind.PossibleExtendedIdentifierStart 161 ↛ 479line 161 didn't jump to line 479

+

162 elif (char == "`") and isinstance(previousToken, (SpaceToken, LinebreakToken)): 162 ↛ 163line 162 didn't jump to line 163, because the condition on line 162 was never true

+

163 tokenKind = cls.TokenKind.Directive 

+

164 else: 

+

165 previousToken = CharacterToken(previousToken, char, start) 

+

166 yield previousToken 

+

167 tokenKind = cls.TokenKind.OtherChars 

+

168 

+

169 # State: RealChars 

+

170 elif tokenKind is cls.TokenKind.RealChars: 

+

171 if (char in __NUMBER_CHARACTERS__) or (char == "_"): 

+

172 buffer += char 

+

173 else: 

+

174 previousToken = RealLiteralToken(previousToken, buffer, start, SourceCodePosition(row, column, absolute)) 

+

175 yield previousToken 

+

176 

+

177 start = SourceCodePosition(row, column, absolute) 

+

178 buffer = char 

+

179 if char in __WHITESPACE_CHARACTERS__: tokenKind = cls.TokenKind.SpaceChars 

+

180 elif char in __ALPHA_CHARACTERS__: tokenKind = cls.TokenKind.AlphaChars 180 ↛ 479line 180 didn't jump to line 479

+

181 elif char == "'": tokenKind = cls.TokenKind.PossibleCharacterLiteral 181 ↛ 479line 181 didn't jump to line 479

+

182 elif char == "\"": tokenKind = cls.TokenKind.PossibleStringLiteralStart 182 ↛ 479line 182 didn't jump to line 479

+

183 elif char == "-": tokenKind = cls.TokenKind.PossibleSingleLineCommentStart 

+

184 elif char == "\r": tokenKind = cls.TokenKind.PossibleLinebreak 

+

185 elif char == "\n": 

+

186 previousToken = LinebreakToken(previousToken, char, start, start) 

+

187 yield previousToken 

+

188 tokenKind = cls.TokenKind.OtherChars 

+

189 elif char in __FUSEABLE_CHARS__: 189 ↛ 192line 189 didn't jump to line 192, because the condition on line 189 was never false

+

190 buffer = char 

+

191 tokenKind = cls.TokenKind.FuseableCharacter 

+

192 elif char == "\\": tokenKind = cls.TokenKind.PossibleExtendedIdentifierStart 

+

193 elif (char == "`") and isinstance(previousToken, (SpaceToken, LinebreakToken)): 

+

194 tokenKind = cls.TokenKind.Directive 

+

195 else: 

+

196 previousToken = CharacterToken(previousToken, char, start) 

+

197 yield previousToken 

+

198 tokenKind = cls.TokenKind.OtherChars 

+

199 

+

200 # State: AlphaChars 

+

201 elif tokenKind is cls.TokenKind.AlphaChars: 

+

202 if (char in __ALPHA_CHARACTERS__) or (char == "_"): 

+

203 buffer += char 

+

204 else: 

+

205 previousToken = WordToken(previousToken, buffer, start, SourceCodePosition(row, column, absolute)) 

+

206 yield previousToken 

+

207 

+

208 start = SourceCodePosition(row, column, absolute) 

+

209 buffer = char 

+

210 if char in __WHITESPACE_CHARACTERS__: tokenKind = cls.TokenKind.SpaceChars 

+

211 elif char == "'": tokenKind = cls.TokenKind.PossibleCharacterLiteral 211 ↛ 479line 211 didn't jump to line 479

+

212 elif char == "\"": tokenKind = cls.TokenKind.PossibleStringLiteralStart 212 ↛ 479line 212 didn't jump to line 479

+

213 elif char == "-": tokenKind = cls.TokenKind.PossibleSingleLineCommentStart 

+

214 elif char == "\r": tokenKind = cls.TokenKind.PossibleLinebreak 

+

215 elif char == "\n": 

+

216 previousToken = LinebreakToken(previousToken, char, start, start) 

+

217 yield previousToken 

+

218 tokenKind = cls.TokenKind.OtherChars 

+

219 elif char in __FUSEABLE_CHARS__: 

+

220 buffer = char 

+

221 tokenKind = cls.TokenKind.FuseableCharacter 

+

222 elif char == "\\": tokenKind = cls.TokenKind.PossibleExtendedIdentifierStart 222 ↛ 479line 222 didn't jump to line 479

+

223 elif (char == "`") and isinstance(previousToken, (SpaceToken, LinebreakToken)): 223 ↛ 224line 223 didn't jump to line 224, because the condition on line 223 was never true

+

224 tokenKind = cls.TokenKind.Directive 

+

225 else: 

+

226 previousToken = CharacterToken(previousToken, char, start) 

+

227 yield previousToken 

+

228 tokenKind = cls.TokenKind.OtherChars 

+

229 

+

230 # State: PossibleSingleLineCommentStart 

+

231 elif tokenKind is cls.TokenKind.PossibleSingleLineCommentStart: 

+

232 if char == "-": 

+

233 buffer = "--" 

+

234 tokenKind = cls.TokenKind.SingleLineComment 

+

235 else: 

+

236 previousToken = CharacterToken(previousToken, "-", start) 

+

237 yield previousToken 

+

238 

+

239 buffer = char 

+

240 if char in __WHITESPACE_CHARACTERS__: tokenKind = cls.TokenKind.SpaceChars 240 ↛ 241line 240 didn't jump to line 241, because the condition on line 240 was never false

+

241 elif char in __NUMBER_CHARACTERS__: tokenKind = cls.TokenKind.IntegerChars 

+

242 elif char in __ALPHA_CHARACTERS__: tokenKind = cls.TokenKind.AlphaChars 

+

243 elif char == "'": tokenKind = cls.TokenKind.PossibleCharacterLiteral 

+

244 elif char == "\"": tokenKind = cls.TokenKind.PossibleStringLiteralStart 

+

245 elif char == "/r": tokenKind = cls.TokenKind.PossibleLinebreak 

+

246 elif char == "/n": 

+

247 previousToken = LinebreakToken(previousToken, char, start, start) 

+

248 yield previousToken 

+

249 tokenKind = cls.TokenKind.OtherChars 

+

250 elif char in __FUSEABLE_CHARS__: 

+

251 buffer = char 

+

252 tokenKind = cls.TokenKind.FuseableCharacter 

+

253 elif char == "\\": tokenKind = cls.TokenKind.PossibleExtendedIdentifierStart 

+

254 elif (char == "`") and isinstance(previousToken, (SpaceToken, LinebreakToken)): 

+

255 tokenKind = cls.TokenKind.Directive 

+

256 else: 

+

257 previousToken = CharacterToken(previousToken, char, start) 

+

258 yield previousToken 

+

259 tokenKind = cls.TokenKind.OtherChars 

+

260 

+

261 # State: PossibleLinebreak 

+

262 elif tokenKind is cls.TokenKind.PossibleLinebreak: 

+

263 end = SourceCodePosition(row, column, absolute) 

+

264 if char == "\n": 264 ↛ 274line 264 didn't jump to line 274, because the condition on line 264 was never false

+

265 tokenKind = cls.TokenKind.OtherChars 

+

266 if buffer[:2] == "--": 

+

267 buffer += char 

+

268 previousToken = SingleLineCommentToken(previousToken, buffer, start, end) 

+

269 else: 

+

270 previousToken = LinebreakToken(previousToken, "\r\n", start, end) 

+

271 buffer = "\r\n" 

+

272 yield previousToken 

+

273 else: 

+

274 previousToken = LinebreakToken(previousToken, "\r", start, end) 

+

275 yield previousToken 

+

276 

+

277 start = end 

+

278 buffer = char 

+

279 if char in __WHITESPACE_CHARACTERS__: tokenKind = cls.TokenKind.SpaceChars 

+

280 elif char in __NUMBER_CHARACTERS__: tokenKind = cls.TokenKind.IntegerChars 

+

281 elif char in __ALPHA_CHARACTERS__: tokenKind = cls.TokenKind.AlphaChars 

+

282 elif char == "'": tokenKind = cls.TokenKind.PossibleCharacterLiteral 

+

283 elif char == "\"": tokenKind = cls.TokenKind.PossibleStringLiteralStart 

+

284 elif char == "-": tokenKind = cls.TokenKind.PossibleSingleLineCommentStart 

+

285 elif char == "/r": tokenKind = cls.TokenKind.PossibleLinebreak 

+

286 elif char == "/n": 

+

287 previousToken = LinebreakToken(previousToken, char, start, start) 

+

288 yield previousToken 

+

289 tokenKind = cls.TokenKind.OtherChars 

+

290 elif char in __FUSEABLE_CHARS__: 

+

291 buffer = char 

+

292 tokenKind = cls.TokenKind.FuseableCharacter 

+

293 elif char == "\\": tokenKind = cls.TokenKind.PossibleExtendedIdentifierStart 

+

294 elif (char == "`") and isinstance(previousToken, (SpaceToken, LinebreakToken)): 

+

295 tokenKind = cls.TokenKind.Directive 

+

296 else: 

+

297 previousToken = CharacterToken(previousToken, char, start) 

+

298 yield previousToken 

+

299 tokenKind = cls.TokenKind.OtherChars 

+

300 

+

301 # State: PossibleRealLiteral 

+

302 elif tokenKind is cls.TokenKind.PossibleRealLiteral: 

+

303 if char in __NUMBER_CHARACTERS__: 

+

304 buffer += char 

+

305 tokenKind = cls.TokenKind.RealChars 

+

306 else: 

+

307 previousToken = CharacterToken(previousToken, ".", start) 

+

308 yield previousToken 

+

309 

+

310 start = SourceCodePosition(row, column, absolute) 

+

311 buffer = char 

+

312 

+

313 if char in __WHITESPACE_CHARACTERS__: tokenKind = cls.TokenKind.SpaceChars 313 ↛ 314line 313 didn't jump to line 314, because the condition on line 313 was never false

+

314 elif char in __NUMBER_CHARACTERS__: tokenKind = cls.TokenKind.IntegerChars 

+

315 elif char in __ALPHA_CHARACTERS__: tokenKind = cls.TokenKind.AlphaChars 

+

316 elif char == "'": tokenKind = cls.TokenKind.PossibleCharacterLiteral 

+

317 elif char == "\"": tokenKind = cls.TokenKind.PossibleStringLiteralStart 

+

318 elif char == "-": tokenKind = cls.TokenKind.PossibleSingleLineCommentStart 

+

319 elif char == "/r": tokenKind = cls.TokenKind.PossibleLinebreak 

+

320 elif char == "/n": 

+

321 previousToken = LinebreakToken(previousToken, char, start, start) 

+

322 yield previousToken 

+

323 tokenKind = cls.TokenKind.OtherChars 

+

324 elif char in __FUSEABLE_CHARS__: 

+

325 buffer = char 

+

326 tokenKind = cls.TokenKind.FuseableCharacter 

+

327 elif char == "\\": tokenKind = cls.TokenKind.PossibleExtendedIdentifierStart 

+

328 elif (char == "`") and isinstance(previousToken, (SpaceToken, LinebreakToken)): 

+

329 tokenKind = cls.TokenKind.Directive 

+

330 else: 

+

331 previousToken = CharacterToken(previousToken, char, start) 

+

332 yield previousToken 

+

333 tokenKind = cls.TokenKind.OtherChars 

+

334 

+

335 # State: PossibleCharacterLiteral 

+

336 elif tokenKind is cls.TokenKind.PossibleCharacterLiteral: 

+

337 buffer += char 

+

338 if len(buffer) == 2: 

+

339 if buffer[1] == "'": 339 ↛ 340line 339 didn't jump to line 340, because the condition on line 339 was never true

+

340 previousToken = CharacterToken(previousToken, "'", start) 

+

341 yield previousToken 

+

342 previousToken = CharacterToken(previousToken, "'", SourceCodePosition(row, column, absolute)) 

+

343 yield previousToken 

+

344 tokenKind = cls.TokenKind.OtherChars 

+

345 else: 

+

346 continue 

+

347 elif (len(buffer) == 3) and (buffer[2] == "'"): 347 ↛ 352line 347 didn't jump to line 352, because the condition on line 347 was never false

+

348 previousToken = CharacterLiteralToken(previousToken, buffer, start, SourceCodePosition(row, column, absolute)) 

+

349 yield previousToken 

+

350 tokenKind = cls.TokenKind.OtherChars 

+

351 else: 

+

352 previousToken = CharacterToken(previousToken, "'", start) 

+

353 yield previousToken 

+

354 

+

355 start.Column += 1 

+

356 start.Absolute += 1 

+

357 buffer = buffer[:2] 

+

358 if (buffer[0] in __ALPHA_CHARACTERS__) and (buffer[1] in __ALPHA_CHARACTERS__): 

+

359 tokenKind = cls.TokenKind.AlphaChars 

+

360 elif (buffer[0] in __WHITESPACE_CHARACTERS__) and (buffer[1] in __WHITESPACE_CHARACTERS__): 

+

361 tokenKind = cls.TokenKind.SpaceChars 

+

362 else: 

+

363 raise TokenizerException("Ambiguous syntax detected. buffer: '{buffer}'".format(buffer=buffer), start) 

+

364 

+

365 # State: PossibleStringLiteralStart 

+

366 elif tokenKind is cls.TokenKind.PossibleStringLiteralStart: 

+

367 buffer += char 

+

368 if char == "\"": 

+

369 previousToken = StringLiteralToken(previousToken, buffer, start, SourceCodePosition(row, column, absolute)) 

+

370 yield previousToken 

+

371 tokenKind = cls.TokenKind.OtherChars 

+

372 

+

373 # State: PossibleExtendedIdentifierStart 

+

374 elif tokenKind is cls.TokenKind.PossibleExtendedIdentifierStart: 

+

375 buffer += char 

+

376 if char == "\\": 

+

377 previousToken = ExtendedIdentifier(previousToken, buffer, start, SourceCodePosition(row, column, absolute)) 

+

378 yield previousToken 

+

379 tokenKind = cls.TokenKind.OtherChars 

+

380 

+

381 # State: Directive 

+

382 elif tokenKind is cls.TokenKind.Directive: 382 ↛ 383line 382 didn't jump to line 383, because the condition on line 382 was never true

+

383 buffer += char 

+

384 if char == "\r": 

+

385 tokenKind = cls.TokenKind.PossibleLinebreak 

+

386 elif char == "\n": 

+

387 previousToken = DirectiveToken(previousToken, buffer, start, SourceCodePosition(row, column, absolute)) 

+

388 yield previousToken 

+

389 tokenKind = cls.TokenKind.OtherChars 

+

390 

+

391 # State: SingleLineComment 

+

392 elif tokenKind is cls.TokenKind.SingleLineComment: 

+

393 buffer += char 

+

394 if char == "\r": 

+

395 tokenKind = cls.TokenKind.PossibleLinebreak 

+

396 elif char == "\n": 

+

397 previousToken = SingleLineCommentToken(previousToken, buffer, start, SourceCodePosition(row, column, absolute)) 

+

398 yield previousToken 

+

399 tokenKind = cls.TokenKind.OtherChars 

+

400 

+

401 # State: MultiLineComment 

+

402 elif tokenKind is cls.TokenKind.MultiLineComment: 

+

403 buffer += char 

+

404 if buffer[-2:] == "*/": 

+

405 previousToken = MultiLineCommentToken(previousToken, buffer, start, SourceCodePosition(row, column, absolute)) 

+

406 yield previousToken 

+

407 tokenKind = cls.TokenKind.OtherChars 

+

408 

+

409 # State: FuseableCharacter 

+

410 elif tokenKind is cls.TokenKind.FuseableCharacter: 

+

411 fused = buffer + char 

+

412 if fused in ("=>", "**", ":=", "/=", "<=", ">=", "<>", "<<", ">>", "??", "?=", "?<", "?>", "?/=", "?<=", "?>="): 

+

413 previousToken = FusedCharacterToken(previousToken, fused, start, SourceCodePosition(row, column, absolute)) 

+

414 yield previousToken 

+

415 tokenKind = cls.TokenKind.OtherChars 

+

416 elif fused in ("?/", "?<", "?>"): 

+

417 buffer = fused 

+

418 elif fused == "/*": 

+

419 buffer = fused 

+

420 tokenKind = cls.TokenKind.MultiLineComment 

+

421 else: 

+

422 previousToken = CharacterToken(previousToken, buffer[0], start) 

+

423 yield previousToken 

+

424 if len(buffer) == 2: 424 ↛ 425line 424 didn't jump to line 425, because the condition on line 424 was never true

+

425 previousToken = CharacterToken(previousToken, buffer[1], start) 

+

426 yield previousToken 

+

427 

+

428 buffer = char 

+

429 if char in __WHITESPACE_CHARACTERS__: tokenKind = cls.TokenKind.SpaceChars 429 ↛ 430line 429 didn't jump to line 430, because the condition on line 429 was never false

+

430 elif char in __NUMBER_CHARACTERS__: tokenKind = cls.TokenKind.IntegerChars 

+

431 elif char in __ALPHA_CHARACTERS__: tokenKind = cls.TokenKind.AlphaChars 

+

432 elif char == "'": tokenKind = cls.TokenKind.PossibleCharacterLiteral 

+

433 elif char == "\"": tokenKind = cls.TokenKind.PossibleStringLiteralStart 

+

434 elif char == "-": tokenKind = cls.TokenKind.PossibleSingleLineCommentStart 

+

435 elif char == "\r": tokenKind = cls.TokenKind.PossibleLinebreak 

+

436 elif char == "\n": 

+

437 previousToken = LinebreakToken(previousToken, char, start, start) 

+

438 yield previousToken 

+

439 tokenKind = cls.TokenKind.OtherChars 

+

440 elif char in __FUSEABLE_CHARS__: 

+

441 pass 

+

442 elif char == "\\": tokenKind = cls.TokenKind.PossibleExtendedIdentifierStart 

+

443 elif (char == "`") and isinstance(previousToken, (SpaceToken, LinebreakToken)): 

+

444 tokenKind = cls.TokenKind.Directive 

+

445 else: 

+

446 previousToken = CharacterToken(previousToken, char, start) 

+

447 yield previousToken 

+

448 

+

449 # State: OtherChars 

+

450 elif tokenKind is cls.TokenKind.OtherChars: 450 ↛ 477line 450 didn't jump to line 477, because the condition on line 450 was never false

+

451 start = SourceCodePosition(row, column, absolute) 

+

452 buffer = char 

+

453 if char in __WHITESPACE_CHARACTERS__: tokenKind = cls.TokenKind.SpaceChars 

+

454 elif char in __NUMBER_CHARACTERS__: tokenKind = cls.TokenKind.IntegerChars 

+

455 elif char in __ALPHA_CHARACTERS__: tokenKind = cls.TokenKind.AlphaChars 

+

456 elif char == "'": tokenKind = cls.TokenKind.PossibleCharacterLiteral 

+

457 elif char == "\"": tokenKind = cls.TokenKind.PossibleStringLiteralStart 

+

458 elif char == "-": tokenKind = cls.TokenKind.PossibleSingleLineCommentStart 

+

459 elif char == "\r": tokenKind = cls.TokenKind.PossibleLinebreak 

+

460 elif char == "\n": 

+

461 previousToken = LinebreakToken(previousToken, char, start, start) 

+

462 yield previousToken 

+

463 tokenKind = cls.TokenKind.OtherChars 

+

464 elif char in __FUSEABLE_CHARS__: 

+

465 buffer = char 

+

466 tokenKind = cls.TokenKind.FuseableCharacter 

+

467 elif char == "\\": tokenKind = cls.TokenKind.PossibleExtendedIdentifierStart 

+

468 elif (char == "`") and isinstance(previousToken, (SpaceToken, LinebreakToken)): 468 ↛ 469line 468 didn't jump to line 469, because the condition on line 468 was never true

+

469 tokenKind = cls.TokenKind.Directive 

+

470 else: 

+

471 tokenKind = cls.TokenKind.OtherChars 

+

472 previousToken = CharacterToken(previousToken, char, start) 

+

473 yield previousToken 

+

474 

+

475 # State: unknown 

+

476 else: 

+

477 raise TokenizerException("Unknown state.", SourceCodePosition(row, column, absolute)) 

+

478 

+

479 if char == "\n": 

+

480 column = 0 

+

481 row += 1 

+

482 # end for 

+

483 

+

484 if tokenKind is cls.TokenKind.MultiLineComment: 484 ↛ 485line 484 didn't jump to line 485, because the condition on line 484 was never true

+

485 raise TokenizerException("End of document before end of multi line comment.", SourceCodePosition(row, column, absolute)) 

+

486 

+

487 # close open token when input stream is empty 

+

488 if tokenKind is cls.TokenKind.AlphaChars: 

+

489 previousToken = WordToken(previousToken, buffer, start, SourceCodePosition(row, column, absolute)) 

+

490 yield previousToken 

+

491 elif tokenKind is cls.TokenKind.IntegerChars: 491 ↛ 492line 491 didn't jump to line 492, because the condition on line 491 was never true

+

492 previousToken = IntegerLiteralToken(previousToken, buffer, start, SourceCodePosition(row, column, absolute)) 

+

493 yield previousToken 

+

494 elif tokenKind is cls.TokenKind.RealChars: 494 ↛ 495line 494 didn't jump to line 495, because the condition on line 494 was never true

+

495 previousToken = RealLiteralToken(previousToken, buffer, start, SourceCodePosition(row, column, absolute)) 

+

496 yield previousToken 

+

497 elif tokenKind is cls.TokenKind.SpaceChars: 

+

498 end = SourceCodePosition(row, column - 1, absolute - 1) 

+

499 if isinstance(previousToken, (LinebreakToken, SingleLineCommentToken, StartOfDocumentToken)): 

+

500 previousToken = IndentationToken(previousToken, buffer, start, end) 

+

501 else: 

+

502 previousToken = SpaceToken(previousToken, buffer, start, end) 

+

503 yield previousToken 

+

504 elif tokenKind is cls.TokenKind.SingleLineComment: 504 ↛ 505line 504 didn't jump to line 505, because the condition on line 504 was never true

+

505 previousToken = SingleLineCommentToken(previousToken, buffer, start, SourceCodePosition(row, column, absolute)) 

+

506 yield previousToken 

+

507 elif tokenKind in (cls.TokenKind.OtherChars, cls.TokenKind.DelimiterChars): 507 ↛ 510line 507 didn't jump to line 510, because the condition on line 507 was never false

+

508 pass 

+

509 else: 

+

510 raise TokenizerException("End of document before ...", SourceCodePosition(row, column, absolute)) 

+

511 

+

512 # End of document 

+

513 yield EndOfDocumentToken(previousToken, SourceCodePosition(row, column, absolute)) 

+
+ + + diff --git a/coverage/d_17500e2f8d5544af___init___py.html b/coverage/d_17500e2f8d5544af___init___py.html new file mode 100644 index 000000000..85daee84b --- /dev/null +++ b/coverage/d_17500e2f8d5544af___init___py.html @@ -0,0 +1,617 @@ + + + + + Coverage for pyVHDLParser/Token/__init__.py: 77% + + + + + +
+
+

+ Coverage for pyVHDLParser/Token/__init__.py: + 77% +

+ +

+ 286 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from typing import Iterator 

+

31 

+

32from pyTooling.Decorators import export 

+

33from pyTooling.MetaClasses import ExtendedType 

+

34 

+

35from pyVHDLParser import SourceCodePosition, StartOfDocument, EndOfDocument, StartOfSnippet, EndOfSnippet 

+

36from pyVHDLParser.Base import ParserException 

+

37 

+

38 

+

39@export 

+

40def CharacterTranslation(value: str, oneLiner: bool = False) -> str: 

+

41 buffer = "" 

+

42 charIterator = iter(value) 

+

43 try: 

+

44 while char := next(charIterator): 44 ↛ 71line 44 didn't jump to line 71, because the condition on line 44 was never false

+

45 if char == "\r": 45 ↛ 46line 45 didn't jump to line 46, because the condition on line 45 was never true

+

46 nextChar = next(charIterator) 

+

47 if nextChar == "\n": 

+

48 buffer += "«\\r\\n»" 

+

49 if not oneLiner: 

+

50 buffer += "\n" 

+

51 else: 

+

52 buffer += "«\\n»" 

+

53 if not oneLiner: 

+

54 buffer += "\n" 

+

55 

+

56 if nextChar == "\t": 

+

57 buffer += "«\\n»" 

+

58 else: 

+

59 buffer += nextChar 

+

60 elif char == "\n": 

+

61 buffer += "«\\n»" 

+

62 if not oneLiner: 62 ↛ 63line 62 didn't jump to line 63, because the condition on line 62 was never true

+

63 buffer += "\n" 

+

64 elif char == "\t": 

+

65 buffer += "«\\t»" 

+

66 else: 

+

67 buffer += char 

+

68 except StopIteration: 

+

69 pass 

+

70 

+

71 return buffer 

+

72 

+

73 

+

74@export 

+

75class TokenIterator(metaclass=ExtendedType, useSlots=True): 

+

76 startToken: 'Token' 

+

77 currentToken: 'Token' 

+

78 stopToken: 'Token' 

+

79 inclusiveStopToken: bool 

+

80 

+

81 state: int #: internal states: 0 = normal, 1 = reached stopToken, 2 = reached EndOfToken 

+

82 

+

83 def __init__(self, startToken: 'Token', inclusiveStartToken: bool=False, inclusiveStopToken: bool=True, stopToken: 'Token'=None): 

+

84 self.startToken = startToken 

+

85 self.currentToken = startToken if inclusiveStartToken else startToken.NextToken 

+

86 self.stopToken = stopToken 

+

87 self.inclusiveStopToken = inclusiveStopToken 

+

88 

+

89 self.state = 0 

+

90 

+

91 def __iter__(self) -> 'TokenIterator': 

+

92 return self 

+

93 

+

94 def __next__(self) -> 'Token': 

+

95 # in last call of '__next__', the last token in the sequence was returned 

+

96 if self.state > 0: 

+

97 raise StopIteration(self.state) 

+

98 

+

99 token = self.currentToken 

+

100 if token is self.stopToken: 

+

101 if not self.inclusiveStopToken: 101 ↛ 102line 101 didn't jump to line 102, because the condition on line 101 was never true

+

102 raise StopIteration(1) 

+

103 else: 

+

104 self.currentToken = None 

+

105 self.state = 1 

+

106 elif isinstance(self.currentToken, EndOfToken): 106 ↛ 107line 106 didn't jump to line 107, because the condition on line 106 was never true

+

107 if not self.inclusiveStopToken: 

+

108 raise StopIteration(2) 

+

109 else: 

+

110 self.currentToken = None 

+

111 self.state = 2 

+

112 else: 

+

113 self.currentToken = token.NextToken 

+

114 if self.currentToken is None: 114 ↛ 115line 114 didn't jump to line 115, because the condition on line 114 was never true

+

115 raise ParserException("Found open end while iterating token sequence.") # FIXME: how to append last token? 

+

116 

+

117 return token 

+

118 

+

119 

+

120@export 

+

121class TokenReverseIterator(metaclass=ExtendedType, useSlots=True): 

+

122 startToken: 'Token' 

+

123 currentToken: 'Token' 

+

124 stopToken: 'Token' 

+

125 inclusiveStopToken: bool 

+

126 

+

127 state: int #: internal states: 0 = normal, 1 = reached stopToken, 2 = reached StartOfToken 

+

128 

+

129 def __init__(self, startToken: 'Token', inclusiveStartToken: bool=False, inclusiveStopToken: bool=True, stopToken: 'Token'=None): 

+

130 self.startToken = startToken 

+

131 self.currentToken = startToken if inclusiveStartToken else startToken.PreviousToken 

+

132 self.stopToken = stopToken 

+

133 self.inclusiveStopToken = inclusiveStopToken 

+

134 

+

135 self.state = 0 

+

136 

+

137 def __iter__(self) -> 'TokenReverseIterator': 

+

138 return self 

+

139 

+

140 def __next__(self) -> 'Token': 

+

141 # in last call of '__next__', the last token in the sequence was returned 

+

142 if self.state > 0: 

+

143 raise StopIteration(self.state) 

+

144 

+

145 token = self.currentToken 

+

146 if token is self.stopToken: 

+

147 self.state = 1 

+

148 if not self.inclusiveStopToken: 

+

149 raise StopIteration(self.state) 

+

150 else: 

+

151 self.currentToken = None 

+

152 elif isinstance(self.currentToken, EndOfToken): 

+

153 self.state = 2 

+

154 if not self.inclusiveStopToken: 

+

155 raise StopIteration(self.state) 

+

156 else: 

+

157 self.currentToken = None 

+

158 else: 

+

159 self.currentToken = token.PreviousToken 

+

160 if self.currentToken is None: 

+

161 raise ParserException("Found open end while iterating token sequence.") # FIXME: how to append last token? 

+

162 

+

163 return token 

+

164 

+

165 

+

166@export 

+

167class Token(metaclass=ExtendedType, useSlots=True): 

+

168 """Base-class for all token classes.""" 

+

169 

+

170 _previousToken: 'Token' #: Reference to the previous token 

+

171 NextToken: 'Token' #: Reference to the next token 

+

172 Start: SourceCodePosition #: Position for the token start 

+

173 End: SourceCodePosition #: Position for the token end 

+

174 

+

175 def __init__(self, previousToken: 'Token', start: SourceCodePosition, end: SourceCodePosition = None): 

+

176 """ 

+

177 Initializes a token object. 

+

178 

+

179 While initialization, the following additional tasks are done: 

+

180 

+

181 * link this token to previous token. 

+

182 * link previous token to this token. 

+

183 """ 

+

184 previousToken.NextToken = self 

+

185 self._previousToken = previousToken 

+

186 self.NextToken = None 

+

187 self.Start = start 

+

188 self.End = end 

+

189 

+

190 def __len__(self) -> int: 

+

191 return self.End.Absolute - self.Start.Absolute + 1 

+

192 

+

193 def GetIterator(self, inclusiveStartToken: bool = False, inclusiveStopToken: bool = True, stopToken: 'Token' = None) -> Iterator['Token']: 

+

194 return TokenIterator(self, inclusiveStartToken=inclusiveStartToken, inclusiveStopToken=inclusiveStopToken, stopToken=stopToken) 

+

195 

+

196 def GetReverseIterator(self, inclusiveStartToken: bool = False, inclusiveStopToken: bool = True, stopToken: 'Token' = None) -> Iterator['Token']: 

+

197 return TokenReverseIterator(self, inclusiveStartToken=inclusiveStartToken, inclusiveStopToken=inclusiveStopToken, stopToken=stopToken) 

+

198 

+

199 @property 

+

200 def PreviousToken(self) -> 'Token': 

+

201 return self._previousToken 

+

202 

+

203 @PreviousToken.setter 

+

204 def PreviousToken(self, value: 'Token'): 

+

205 self._previousToken = value 

+

206 value.NextToken = self 

+

207 

+

208 @property 

+

209 def Length(self) -> int: 

+

210 return len(self) 

+

211 

+

212 def __str__(self) -> str: 

+

213 return f"{self.__class__.__qualname__} at {self.Start!s}" 

+

214 

+

215 def __repr__(self) -> str: 

+

216 return self.__str__() 

+

217 

+

218 

+

219@export 

+

220class ValuedToken(Token): 

+

221 """ 

+

222 Base-class for all *valued* token. 

+

223 

+

224 A ValuedToken contains a :attr:`Value` field for the underlying string from the source code file. 

+

225 """ 

+

226 

+

227 Value: str #: String value of this token. 

+

228 

+

229 def __init__(self, previousToken: Token, value: str, start: SourceCodePosition, end: SourceCodePosition = None): 

+

230 """Initializes a *valued* token object.""" 

+

231 super().__init__(previousToken, start, end) 

+

232 self.Value = value 

+

233 

+

234 def __iter__(self) -> Iterator[str]: 

+

235 return iter(self.Value) 

+

236 

+

237 def __eq__(self, other: str) -> bool: 

+

238 """Return true if the internal value is equal to the second operand.""" 

+

239 return self.Value == other 

+

240 

+

241 def __ne__(self, other: str) -> bool: 

+

242 """Return true if the internal value is unequal to the second operand.""" 

+

243 return self.Value != other 

+

244 

+

245 def __hash__(self): 

+

246 return super().__hash__() 

+

247 

+

248 def __str__(self) -> str: 

+

249 return self.Value 

+

250 

+

251 def __repr__(self) -> str: 

+

252 value = "'" + CharacterTranslation(self.Value) + "' " 

+

253 return f"<{self.__class__.__name__: <50} {value:.<59} at {self.Start!r}>" 

+

254 

+

255 

+

256@export 

+

257class StartOfToken(Token): 

+

258 """Base-class for meta-tokens representing the start of a token stream.""" 

+

259 

+

260 def __init__(self): 

+

261 """Initializes a StartOfToken object.""" 

+

262 self._previousToken = None 

+

263 self.NextToken = None 

+

264 self.Start = SourceCodePosition(1, 1, 1) 

+

265 self.End = None 

+

266 

+

267 def __len__(self) -> int: 

+

268 """Returns always 0.""" 

+

269 return 0 

+

270 

+

271 def __str__(self) -> str: 

+

272 return f"<{self.__class__.__name__}>" 

+

273 

+

274 

+

275@export 

+

276class EndOfToken(Token): 

+

277 """Base-class for meta-tokens representing the end of a token stream.""" 

+

278 

+

279 def __init__(self, previousToken: Token, end: SourceCodePosition): 

+

280 """Initializes a EndOfToken object.""" 

+

281 super().__init__(previousToken, start=end, end=end) 

+

282 

+

283 def __len__(self) -> int: 

+

284 """Returns always 0.""" 

+

285 return 0 

+

286 

+

287 def __str__(self) -> str: 

+

288 return f"<{self.__class__.__name__}>" 

+

289 

+

290 

+

291@export 

+

292class StartOfDocumentToken(StartOfToken, StartOfDocument): 

+

293 pass 

+

294 

+

295 

+

296@export 

+

297class EndOfDocumentToken(EndOfToken, EndOfDocument): 

+

298 pass 

+

299 

+

300 

+

301@export 

+

302class StartOfSnippetToken(StartOfToken, StartOfSnippet): 

+

303 pass 

+

304 

+

305 

+

306@export 

+

307class EndOfSnippetToken(EndOfToken, EndOfSnippet): 

+

308 pass 

+

309 

+

310 

+

311@export 

+

312class CharacterToken(ValuedToken): 

+

313 """Token representing a single character.""" 

+

314 

+

315 def __init__(self, previousToken: Token, value: str, start: SourceCodePosition): 

+

316 """ 

+

317 Initializes a CharacterToken object. 

+

318 

+

319 This class is used for single characters, thus: :attr:`Start` = :attr:`End`. 

+

320 """ 

+

321 super().__init__(previousToken, value, start=start, end=start) 

+

322 

+

323 def __len__(self) -> int: 

+

324 return 1 

+

325 

+

326 def __repr__(self) -> str: 

+

327 char = "'" + CharacterTranslation(self.Value) + "' " 

+

328 return f"<{self.__class__.__name__: <50} {char:.<59} at {self.Start!r}>" 

+

329 

+

330 

+

331@export 

+

332class FusedCharacterToken(CharacterToken): 

+

333 """Token representing a double (or triple) character.""" 

+

334 

+

335 def __init__(self, previousToken: Token, value: str, start: SourceCodePosition, end: SourceCodePosition): 

+

336 """Initializes a FusedCharacterToken object.""" 

+

337 super().__init__(previousToken, value, start=start) 

+

338 self.End = end 

+

339 

+

340 # FIXME: check if base-base class implementation could solve this question. 

+

341 def __len__(self) -> int: 

+

342 return len(self.Value) 

+

343 

+

344 def __repr__(self) -> str: 

+

345 char = "'" + self.Value + "' " 

+

346 return f"<{self.__class__.__name__: <50} {char:.<59} at {self.Start!r}>" 

+

347 

+

348 

+

349@export 

+

350class SpaceToken(ValuedToken): 

+

351 """Token representing a space (space or tab).""" 

+

352 

+

353 def __repr__(self) -> str: 

+

354 value = "'" + self.Value + "' " 

+

355 return f"<{self.__class__.__name__: <50} {value:.<59} at {self.Start!r}>" 

+

356 

+

357 

+

358@export 

+

359class WordToken(ValuedToken): 

+

360 """Token representing a string.""" 

+

361 

+

362 def __eq__(self, other: str) -> bool: 

+

363 """Return true if the internal value is equal to the second operand.""" 

+

364 return self.Value == other 

+

365 

+

366 def __ne__(self, other: str) -> bool: 

+

367 """Return true if the internal value is unequal to the second operand.""" 

+

368 return self.Value != other 

+

369 

+

370 def __le__(self, other: str) -> bool: 

+

371 """Return true if the internal value is equivalent (lower case, string compare) to the second operand.""" 

+

372 return self.Value.lower() == other 

+

373 

+

374 def __ge__(self, other: str) -> bool: 

+

375 """Return true if the internal value is equivalent (upper case, string compare) to the second operand.""" 

+

376 return self.Value.upper() == other 

+

377 

+

378 def __hash__(self): 

+

379 return super().__hash__() 

+

380 

+

381 def __repr__(self) -> str: 

+

382 value = "'" + self.Value + "' " 

+

383 return f"<{self.__class__.__name__: <50} {value:.<59} at {self.Start!r}>" 

+

384 

+

385 

+

386@export 

+

387class VHDLToken(ValuedToken): 

+

388 """Base-class for all VHDL specific tokens.""" 

+

389 

+

390 

+

391@export 

+

392class CommentToken(VHDLToken): 

+

393 """Base-class for comment tokens.""" 

+

394 

+

395 def __repr__(self) -> str: 

+

396 value = self.Value 

+

397 value = value.replace("\n", "\\n") 

+

398 value = value.replace("\r", "\\r") 

+

399 value = value.replace("\t", "\\t") 

+

400 value = "'" + value + "' " 

+

401 return f"<{self.__class__.__name__: <50} {value:.<59} at {self.Start!r}>" 

+

402 

+

403 

+

404@export 

+

405class SingleLineCommentToken(CommentToken): 

+

406 """Token representing a single-line comment.""" 

+

407 

+

408 

+

409@export 

+

410class MultiLineCommentToken(CommentToken): 

+

411 """Token representing a multi-line comment.""" 

+

412 

+

413 

+

414@export 

+

415class LiteralToken(VHDLToken): 

+

416 """Base-class for all literals in VHDL.""" 

+

417 

+

418 def __eq__(self, other: str): 

+

419 return self.Value == other 

+

420 

+

421 def __ne__(self, other: str): 

+

422 return self.Value != other 

+

423 

+

424 def __hash__(self): 

+

425 return super().__hash__() 

+

426 

+

427 def __repr__(self) -> str: 

+

428 value = self.Value + " " 

+

429 return f"<{self.__class__.__name__: <50} {value:.<59} at {self.Start!r}>" 

+

430 

+

431 

+

432@export 

+

433class IntegerLiteralToken(LiteralToken): 

+

434 """Token representing an integer literal.""" 

+

435 

+

436 

+

437@export 

+

438class RealLiteralToken(LiteralToken): 

+

439 """Token representing a real literal.""" 

+

440 

+

441 

+

442@export 

+

443class CharacterLiteralToken(LiteralToken): 

+

444 """Token representing a character literal in VHDL.""" 

+

445 

+

446 def __init__(self, previousToken: Token, value: str, start: SourceCodePosition, end: SourceCodePosition): 

+

447 """ 

+

448 Initializes a CharacterLiteralToken object. 

+

449 

+

450 Single quotes are omitted in the :attr:`Value`. 

+

451 """ 

+

452 super().__init__(previousToken, value[1:-1], start=start, end=end) 

+

453 

+

454 def __repr__(self) -> str: 

+

455 value = "'" + self.Value + "' " 

+

456 return f"<{self.__class__.__name__: <50} {value:.<59} at {self.Start!r}>" 

+

457 

+

458 

+

459@export 

+

460class StringLiteralToken(LiteralToken): 

+

461 """Token representing a string literal in VHDL.""" 

+

462 

+

463 def __init__(self, previousToken: Token, value: str, start: SourceCodePosition, end: SourceCodePosition): 

+

464 """ 

+

465 Initializes a CharacterLiteralToken object. 

+

466 

+

467 Double quotes are omitted in the :attr:`Value`. 

+

468 """ 

+

469 super().__init__(previousToken, value[1:-1], start=start, end=end) 

+

470 

+

471 def __repr__(self) -> str: 

+

472 value = "\"" + self.Value + "\" " 

+

473 return f"<{self.__class__.__name__: <50} {value:.<59} at {self.Start!r}>" 

+

474 

+

475 

+

476@export 

+

477class BitStringLiteralToken(LiteralToken): 

+

478 """Token representing a bit-string literal in VHDL.""" 

+

479 

+

480 def __init__(self, previousToken: Token, value: str, start: SourceCodePosition, end: SourceCodePosition): 

+

481 """ 

+

482 Initializes a BitStringLiteralToken object. 

+

483 

+

484 Double quotes are omitted in the :attr:`Value`. 

+

485 """ 

+

486 super().__init__(previousToken, value[1:-1], start=start, end=end) 

+

487 

+

488 def __repr__(self) -> str: 

+

489 value = "\"" + self.Value + "\" " 

+

490 return f"<{self.__class__.__name__: <50} {value:.<59} at {self.Start!r}>" 

+

491 

+

492 

+

493@export 

+

494class ExtendedIdentifier(VHDLToken): 

+

495 """Token representing an extended identifier in VHDL.""" 

+

496 

+

497 

+

498@export 

+

499class DirectiveToken(CommentToken): 

+

500 pass 

+

501 

+

502 

+

503@export 

+

504class LinebreakToken(VHDLToken): 

+

505 """Token representing a linebreak in the source code file.""" 

+

506 

+

507 def __repr__(self) -> str: 

+

508 return f"<{self.__class__.__name__ + ' ':-<111} at {self.Start!r}>" 

+

509 

+

510 

+

511@export 

+

512class IndentationToken(SpaceToken): 

+

513 """Token representing an indentation in a source code line.""" 

+

514 

+

515 def __repr__(self) -> str: 

+

516 value = self.Value 

+

517 value = value.replace("\t", "\\t") 

+

518 return f"""<{self.__class__.__name__: <50} {"'" + value + "' ":.<59} at {self.Start!r}>""" 

+
+ + + diff --git a/coverage/d_2b67a29648fff107_VHDLLexer_py.html b/coverage/d_2b67a29648fff107_VHDLLexer_py.html new file mode 100644 index 000000000..60c6c1214 --- /dev/null +++ b/coverage/d_2b67a29648fff107_VHDLLexer_py.html @@ -0,0 +1,747 @@ + + + + + Coverage for pyVHDLParser/ANTLR4/VHDLLexer.py: 0% + + + + + +
+
+

+ Coverage for pyVHDLParser/ANTLR4/VHDLLexer.py: + 0% +

+ +

+ 186 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# Generated from .\VHDLLexer.g4 by ANTLR 4.12.0 

+

2from sys import stdout 

+

3from typing import TextIO 

+

4 

+

5from antlr4 import Lexer, ATNDeserializer, DFA, LexerATNSimulator, PredictionContextCache 

+

6 

+

7 

+

8def serializedATN(): 

+

9 return ( 

+

10 4, 0, 163, 1377, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 

+

11 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 

+

12 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 

+

13 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 

+

14 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 

+

15 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 

+

16 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 

+

17 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 

+

18 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 

+

19 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 

+

20 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 

+

21 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 

+

22 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 

+

23 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 

+

24 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 

+

25 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 

+

26 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 

+

27 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 

+

28 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 

+

29 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 

+

30 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 

+

31 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 

+

32 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 1, 0, 4, 0, 357, 8, 0, 11, 

+

33 0, 12, 0, 358, 1, 0, 1, 0, 1, 1, 4, 1, 364, 8, 1, 11, 1, 12, 1, 365, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 5, 2, 374, 

+

34 8, 2, 10, 2, 12, 2, 377, 9, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 5, 3, 385, 8, 3, 10, 3, 12, 3, 388, 9, 3, 1, 3, 

+

35 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 5, 4, 397, 8, 4, 10, 4, 12, 4, 400, 9, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 

+

36 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 

+

37 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 

+

38 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 

+

39 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 

+

40 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 

+

41 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 

+

42 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 

+

43 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 

+

44 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 

+

45 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 

+

46 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 

+

47 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 

+

48 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 

+

49 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 

+

50 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 

+

51 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 

+

52 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 

+

53 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 

+

54 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 

+

55 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 

+

56 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 

+

57 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 

+

58 1, 62, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 67, 1, 

+

59 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 

+

60 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 

+

61 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 

+

62 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 

+

63 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 

+

64 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 

+

65 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 

+

66 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 

+

67 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 

+

68 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 

+

69 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 

+

70 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 

+

71 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 

+

72 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 

+

73 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 

+

74 103, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 

+

75 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 

+

76 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 

+

77 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 

+

78 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 

+

79 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 

+

80 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 121, 1, 121, 

+

81 1, 121, 1, 122, 1, 122, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 

+

82 126, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 

+

83 1, 131, 1, 131, 1, 132, 1, 132, 1, 133, 1, 133, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 137, 1, 

+

84 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 142, 

+

85 1, 142, 1, 143, 1, 143, 1, 144, 1, 144, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 1, 148, 1, 

+

86 148, 1, 149, 1, 149, 1, 150, 1, 150, 1, 151, 1, 151, 1, 152, 1, 152, 1, 153, 1, 153, 1, 154, 1, 154, 1, 155, 1, 155, 

+

87 1, 156, 1, 156, 1, 157, 1, 157, 1, 158, 1, 158, 1, 159, 1, 159, 1, 160, 1, 160, 1, 161, 1, 161, 5, 161, 1237, 8, 

+

88 161, 10, 161, 12, 161, 1240, 9, 161, 1, 162, 1, 162, 1, 162, 5, 162, 1245, 8, 162, 10, 162, 12, 162, 1248, 9, 162, 

+

89 1, 163, 1, 163, 3, 163, 1252, 8, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 164, 3, 164, 1260, 8, 164, 1, 165, 

+

90 1, 165, 1, 165, 1, 165, 1, 165, 3, 165, 1267, 8, 165, 1, 165, 1, 165, 3, 165, 1271, 8, 165, 1, 166, 1, 166, 1, 166, 

+

91 3, 166, 1276, 8, 166, 1, 167, 3, 167, 1279, 8, 167, 1, 167, 3, 167, 1282, 8, 167, 1, 167, 1, 167, 1, 167, 4, 167, 

+

92 1287, 8, 167, 11, 167, 12, 167, 1288, 1, 167, 1, 167, 1, 168, 3, 168, 1294, 8, 168, 1, 168, 3, 168, 1297, 8, 168, 1, 

+

93 168, 1, 168, 1, 168, 4, 168, 1302, 8, 168, 11, 168, 12, 168, 1303, 1, 168, 1, 168, 1, 169, 3, 169, 1309, 8, 169, 1, 

+

94 169, 1, 169, 1, 169, 4, 169, 1314, 8, 169, 11, 169, 12, 169, 1315, 1, 169, 1, 169, 1, 170, 3, 170, 1321, 8, 170, 1, 

+

95 170, 3, 170, 1324, 8, 170, 1, 170, 1, 170, 1, 170, 4, 170, 1329, 8, 170, 11, 170, 12, 170, 1330, 1, 170, 1, 170, 1, 

+

96 171, 1, 171, 1, 171, 1, 171, 3, 171, 1339, 8, 171, 1, 172, 1, 172, 1, 172, 1, 172, 1, 173, 1, 173, 1, 173, 1, 173, 

+

97 5, 173, 1349, 8, 173, 10, 173, 12, 173, 1352, 9, 173, 1, 173, 1, 173, 1, 174, 1, 174, 3, 174, 1358, 8, 174, 1, 174, 

+

98 5, 174, 1361, 8, 174, 10, 174, 12, 174, 1364, 9, 174, 1, 175, 1, 175, 4, 175, 1368, 8, 175, 11, 175, 12, 175, 1369, 

+

99 1, 175, 1, 175, 1, 176, 1, 176, 3, 176, 1376, 8, 176, 2, 386, 1369, 0, 177, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 

+

100 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 

+

101 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 

+

102 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, 89, 45, 91, 46, 93, 47, 95, 48, 97, 49, 99, 50, 101, 

+

103 51, 103, 52, 105, 53, 107, 54, 109, 55, 111, 56, 113, 57, 115, 58, 117, 59, 119, 60, 121, 61, 123, 62, 125, 63, 127, 

+

104 64, 129, 65, 131, 66, 133, 67, 135, 68, 137, 69, 139, 70, 141, 71, 143, 72, 145, 73, 147, 74, 149, 75, 151, 76, 153, 

+

105 77, 155, 78, 157, 79, 159, 80, 161, 81, 163, 82, 165, 83, 167, 84, 169, 85, 171, 86, 173, 87, 175, 88, 177, 89, 179, 

+

106 90, 181, 91, 183, 92, 185, 93, 187, 94, 189, 95, 191, 96, 193, 97, 195, 98, 197, 99, 199, 100, 201, 101, 203, 102, 

+

107 205, 103, 207, 104, 209, 105, 211, 106, 213, 107, 215, 108, 217, 109, 219, 110, 221, 111, 223, 112, 225, 113, 227, 

+

108 114, 229, 115, 231, 116, 233, 117, 235, 118, 237, 119, 239, 120, 241, 121, 243, 122, 245, 123, 247, 124, 249, 125, 

+

109 251, 126, 253, 127, 255, 128, 257, 129, 259, 130, 261, 131, 263, 132, 265, 133, 267, 134, 269, 135, 271, 136, 273, 

+

110 137, 275, 138, 277, 139, 279, 140, 281, 141, 283, 142, 285, 143, 287, 144, 289, 145, 291, 146, 293, 147, 295, 148, 

+

111 297, 149, 299, 150, 301, 151, 303, 152, 305, 153, 307, 154, 309, 155, 311, 156, 313, 157, 315, 158, 317, 0, 319, 0, 

+

112 321, 0, 323, 0, 325, 0, 327, 0, 329, 0, 331, 0, 333, 159, 335, 0, 337, 0, 339, 0, 341, 0, 343, 160, 345, 161, 347, 

+

113 162, 349, 0, 351, 0, 353, 163, 1, 0, 37, 2, 0, 10, 10, 13, 13, 3, 0, 8, 9, 12, 12, 32, 32, 2, 0, 65, 65, 97, 97, 2, 

+

114 0, 66, 66, 98, 98, 2, 0, 83, 83, 115, 115, 2, 0, 67, 67, 99, 99, 2, 0, 69, 69, 101, 101, 2, 0, 70, 70, 102, 102, 2, 

+

115 0, 84, 84, 116, 116, 2, 0, 82, 82, 114, 114, 2, 0, 76, 76, 108, 108, 2, 0, 73, 73, 105, 105, 2, 0, 78, 78, 110, 110, 

+

116 2, 0, 68, 68, 100, 100, 2, 0, 72, 72, 104, 104, 2, 0, 85, 85, 117, 117, 2, 0, 89, 89, 121, 121, 2, 0, 77, 77, 109, 

+

117 109, 2, 0, 71, 71, 103, 103, 2, 0, 79, 79, 111, 111, 2, 0, 75, 75, 107, 107, 2, 0, 80, 80, 112, 112, 2, 0, 88, 88, 

+

118 120, 120, 2, 0, 86, 86, 118, 118, 2, 0, 87, 87, 119, 119, 2, 0, 74, 74, 106, 106, 2, 0, 81, 81, 113, 113, 2, 0, 65, 

+

119 90, 97, 122, 1, 0, 48, 57, 3, 0, 48, 57, 65, 90, 97, 122, 2, 0, 48, 57, 95, 95, 2, 0, 43, 43, 45, 45, 4, 0, 83, 83, 

+

120 85, 85, 115, 115, 117, 117, 2, 0, 48, 49, 95, 95, 2, 0, 48, 55, 95, 95, 4, 0, 48, 57, 65, 70, 95, 95, 97, 102, 3, 0, 

+

121 10, 10, 13, 13, 34, 34, 1396, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 

+

122 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 

+

123 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 

+

124 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 

+

125 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 

+

126 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 

+

127 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 

+

128 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 

+

129 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 

+

130 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 

+

131 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 

+

132 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, 0, 

+

133 0, 0, 0, 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 

+

134 0, 0, 0, 0, 155, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, 0, 163, 1, 0, 0, 0, 0, 165, 

+

135 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, 1, 0, 0, 0, 0, 171, 1, 0, 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0, 

+

136 177, 1, 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 187, 1, 0, 0, 0, 

+

137 0, 189, 1, 0, 0, 0, 0, 191, 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, 0, 199, 1, 0, 0, 

+

138 0, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 

+

139 0, 0, 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, 1, 

+

140 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 235, 

+

141 1, 0, 0, 0, 0, 237, 1, 0, 0, 0, 0, 239, 1, 0, 0, 0, 0, 241, 1, 0, 0, 0, 0, 243, 1, 0, 0, 0, 0, 245, 1, 0, 0, 0, 0, 

+

142 247, 1, 0, 0, 0, 0, 249, 1, 0, 0, 0, 0, 251, 1, 0, 0, 0, 0, 253, 1, 0, 0, 0, 0, 255, 1, 0, 0, 0, 0, 257, 1, 0, 0, 0, 

+

143 0, 259, 1, 0, 0, 0, 0, 261, 1, 0, 0, 0, 0, 263, 1, 0, 0, 0, 0, 265, 1, 0, 0, 0, 0, 267, 1, 0, 0, 0, 0, 269, 1, 0, 0, 

+

144 0, 0, 271, 1, 0, 0, 0, 0, 273, 1, 0, 0, 0, 0, 275, 1, 0, 0, 0, 0, 277, 1, 0, 0, 0, 0, 279, 1, 0, 0, 0, 0, 281, 1, 0, 

+

145 0, 0, 0, 283, 1, 0, 0, 0, 0, 285, 1, 0, 0, 0, 0, 287, 1, 0, 0, 0, 0, 289, 1, 0, 0, 0, 0, 291, 1, 0, 0, 0, 0, 293, 1, 

+

146 0, 0, 0, 0, 295, 1, 0, 0, 0, 0, 297, 1, 0, 0, 0, 0, 299, 1, 0, 0, 0, 0, 301, 1, 0, 0, 0, 0, 303, 1, 0, 0, 0, 0, 305, 

+

147 1, 0, 0, 0, 0, 307, 1, 0, 0, 0, 0, 309, 1, 0, 0, 0, 0, 311, 1, 0, 0, 0, 0, 313, 1, 0, 0, 0, 0, 315, 1, 0, 0, 0, 0, 

+

148 333, 1, 0, 0, 0, 0, 343, 1, 0, 0, 0, 0, 345, 1, 0, 0, 0, 0, 347, 1, 0, 0, 0, 0, 353, 1, 0, 0, 0, 1, 356, 1, 0, 0, 0, 

+

149 3, 363, 1, 0, 0, 0, 5, 369, 1, 0, 0, 0, 7, 380, 1, 0, 0, 0, 9, 394, 1, 0, 0, 0, 11, 403, 1, 0, 0, 0, 13, 407, 1, 0, 

+

150 0, 0, 15, 414, 1, 0, 0, 0, 17, 420, 1, 0, 0, 0, 19, 426, 1, 0, 0, 0, 21, 430, 1, 0, 0, 0, 23, 434, 1, 0, 0, 0, 25, 

+

151 447, 1, 0, 0, 0, 27, 453, 1, 0, 0, 0, 29, 460, 1, 0, 0, 0, 31, 470, 1, 0, 0, 0, 33, 477, 1, 0, 0, 0, 35, 483, 1, 0, 

+

152 0, 0, 37, 489, 1, 0, 0, 0, 39, 494, 1, 0, 0, 0, 41, 501, 1, 0, 0, 0, 43, 505, 1, 0, 0, 0, 45, 510, 1, 0, 0, 0, 47, 

+

153 520, 1, 0, 0, 0, 49, 534, 1, 0, 0, 0, 51, 543, 1, 0, 0, 0, 53, 551, 1, 0, 0, 0, 55, 557, 1, 0, 0, 0, 57, 565, 1, 0, 

+

154 0, 0, 59, 576, 1, 0, 0, 0, 61, 583, 1, 0, 0, 0, 63, 588, 1, 0, 0, 0, 65, 594, 1, 0, 0, 0, 67, 598, 1, 0, 0, 0, 69, 

+

155 605, 1, 0, 0, 0, 71, 610, 1, 0, 0, 0, 73, 615, 1, 0, 0, 0, 75, 619, 1, 0, 0, 0, 77, 625, 1, 0, 0, 0, 79, 634, 1, 0, 

+

156 0, 0, 81, 643, 1, 0, 0, 0, 83, 652, 1, 0, 0, 0, 85, 660, 1, 0, 0, 0, 87, 668, 1, 0, 0, 0, 89, 674, 1, 0, 0, 0, 91, 

+

157 677, 1, 0, 0, 0, 93, 684, 1, 0, 0, 0, 95, 687, 1, 0, 0, 0, 97, 696, 1, 0, 0, 0, 99, 702, 1, 0, 0, 0, 101, 705, 1, 0, 

+

158 0, 0, 103, 711, 1, 0, 0, 0, 105, 719, 1, 0, 0, 0, 107, 727, 1, 0, 0, 0, 109, 732, 1, 0, 0, 0, 111, 740, 1, 0, 0, 0, 

+

159 113, 744, 1, 0, 0, 0, 115, 748, 1, 0, 0, 0, 117, 753, 1, 0, 0, 0, 119, 757, 1, 0, 0, 0, 121, 762, 1, 0, 0, 0, 123, 

+

160 766, 1, 0, 0, 0, 125, 770, 1, 0, 0, 0, 127, 775, 1, 0, 0, 0, 129, 778, 1, 0, 0, 0, 131, 781, 1, 0, 0, 0, 133, 786, 

+

161 1, 0, 0, 0, 135, 789, 1, 0, 0, 0, 137, 796, 1, 0, 0, 0, 139, 800, 1, 0, 0, 0, 141, 808, 1, 0, 0, 0, 143, 818, 1, 0, 

+

162 0, 0, 145, 823, 1, 0, 0, 0, 147, 833, 1, 0, 0, 0, 149, 841, 1, 0, 0, 0, 151, 851, 1, 0, 0, 0, 153, 859, 1, 0, 0, 0, 

+

163 155, 869, 1, 0, 0, 0, 157, 874, 1, 0, 0, 0, 159, 880, 1, 0, 0, 0, 161, 887, 1, 0, 0, 0, 163, 896, 1, 0, 0, 0, 165, 

+

164 903, 1, 0, 0, 0, 167, 911, 1, 0, 0, 0, 169, 915, 1, 0, 0, 0, 171, 922, 1, 0, 0, 0, 173, 929, 1, 0, 0, 0, 175, 933, 

+

165 1, 0, 0, 0, 177, 937, 1, 0, 0, 0, 179, 946, 1, 0, 0, 0, 181, 953, 1, 0, 0, 0, 183, 962, 1, 0, 0, 0, 185, 969, 1, 0, 

+

166 0, 0, 187, 976, 1, 0, 0, 0, 189, 980, 1, 0, 0, 0, 191, 984, 1, 0, 0, 0, 193, 988, 1, 0, 0, 0, 195, 992, 1, 0, 0, 0, 

+

167 197, 1000, 1, 0, 0, 0, 199, 1007, 1, 0, 0, 0, 201, 1016, 1, 0, 0, 0, 203, 1021, 1, 0, 0, 0, 205, 1024, 1, 0, 0, 0, 

+

168 207, 1034, 1, 0, 0, 0, 209, 1039, 1, 0, 0, 0, 211, 1050, 1, 0, 0, 0, 213, 1056, 1, 0, 0, 0, 215, 1062, 1, 0, 0, 0, 

+

169 217, 1066, 1, 0, 0, 0, 219, 1075, 1, 0, 0, 0, 221, 1080, 1, 0, 0, 0, 223, 1085, 1, 0, 0, 0, 225, 1091, 1, 0, 0, 0, 

+

170 227, 1097, 1, 0, 0, 0, 229, 1103, 1, 0, 0, 0, 231, 1108, 1, 0, 0, 0, 233, 1113, 1, 0, 0, 0, 235, 1118, 1, 0, 0, 0, 

+

171 237, 1124, 1, 0, 0, 0, 239, 1129, 1, 0, 0, 0, 241, 1133, 1, 0, 0, 0, 243, 1135, 1, 0, 0, 0, 245, 1138, 1, 0, 0, 0, 

+

172 247, 1140, 1, 0, 0, 0, 249, 1142, 1, 0, 0, 0, 251, 1145, 1, 0, 0, 0, 253, 1148, 1, 0, 0, 0, 255, 1152, 1, 0, 0, 0, 

+

173 257, 1155, 1, 0, 0, 0, 259, 1159, 1, 0, 0, 0, 261, 1162, 1, 0, 0, 0, 263, 1166, 1, 0, 0, 0, 265, 1168, 1, 0, 0, 0, 

+

174 267, 1170, 1, 0, 0, 0, 269, 1172, 1, 0, 0, 0, 271, 1174, 1, 0, 0, 0, 273, 1177, 1, 0, 0, 0, 275, 1179, 1, 0, 0, 0, 

+

175 277, 1182, 1, 0, 0, 0, 279, 1185, 1, 0, 0, 0, 281, 1188, 1, 0, 0, 0, 283, 1191, 1, 0, 0, 0, 285, 1194, 1, 0, 0, 0, 

+

176 287, 1196, 1, 0, 0, 0, 289, 1198, 1, 0, 0, 0, 291, 1200, 1, 0, 0, 0, 293, 1202, 1, 0, 0, 0, 295, 1205, 1, 0, 0, 0, 

+

177 297, 1208, 1, 0, 0, 0, 299, 1210, 1, 0, 0, 0, 301, 1212, 1, 0, 0, 0, 303, 1214, 1, 0, 0, 0, 305, 1216, 1, 0, 0, 0, 

+

178 307, 1218, 1, 0, 0, 0, 309, 1220, 1, 0, 0, 0, 311, 1222, 1, 0, 0, 0, 313, 1224, 1, 0, 0, 0, 315, 1226, 1, 0, 0, 0, 

+

179 317, 1228, 1, 0, 0, 0, 319, 1230, 1, 0, 0, 0, 321, 1232, 1, 0, 0, 0, 323, 1234, 1, 0, 0, 0, 325, 1241, 1, 0, 0, 0, 

+

180 327, 1249, 1, 0, 0, 0, 329, 1255, 1, 0, 0, 0, 331, 1261, 1, 0, 0, 0, 333, 1275, 1, 0, 0, 0, 335, 1278, 1, 0, 0, 0, 

+

181 337, 1293, 1, 0, 0, 0, 339, 1308, 1, 0, 0, 0, 341, 1320, 1, 0, 0, 0, 343, 1338, 1, 0, 0, 0, 345, 1340, 1, 0, 0, 0, 

+

182 347, 1344, 1, 0, 0, 0, 349, 1355, 1, 0, 0, 0, 351, 1365, 1, 0, 0, 0, 353, 1375, 1, 0, 0, 0, 355, 357, 7, 0, 0, 0, 

+

183 356, 355, 1, 0, 0, 0, 357, 358, 1, 0, 0, 0, 358, 356, 1, 0, 0, 0, 358, 359, 1, 0, 0, 0, 359, 360, 1, 0, 0, 0, 360, 

+

184 361, 6, 0, 0, 0, 361, 2, 1, 0, 0, 0, 362, 364, 7, 1, 0, 0, 363, 362, 1, 0, 0, 0, 364, 365, 1, 0, 0, 0, 365, 363, 1, 

+

185 0, 0, 0, 365, 366, 1, 0, 0, 0, 366, 367, 1, 0, 0, 0, 367, 368, 6, 1, 0, 0, 368, 4, 1, 0, 0, 0, 369, 370, 5, 45, 0, 

+

186 0, 370, 371, 5, 45, 0, 0, 371, 375, 1, 0, 0, 0, 372, 374, 8, 0, 0, 0, 373, 372, 1, 0, 0, 0, 374, 377, 1, 0, 0, 0, 

+

187 375, 373, 1, 0, 0, 0, 375, 376, 1, 0, 0, 0, 376, 378, 1, 0, 0, 0, 377, 375, 1, 0, 0, 0, 378, 379, 6, 2, 1, 0, 379, 

+

188 6, 1, 0, 0, 0, 380, 381, 5, 47, 0, 0, 381, 382, 5, 42, 0, 0, 382, 386, 1, 0, 0, 0, 383, 385, 9, 0, 0, 0, 384, 383, 

+

189 1, 0, 0, 0, 385, 388, 1, 0, 0, 0, 386, 387, 1, 0, 0, 0, 386, 384, 1, 0, 0, 0, 387, 389, 1, 0, 0, 0, 388, 386, 1, 0, 

+

190 0, 0, 389, 390, 5, 42, 0, 0, 390, 391, 5, 47, 0, 0, 391, 392, 1, 0, 0, 0, 392, 393, 6, 3, 1, 0, 393, 8, 1, 0, 0, 0, 

+

191 394, 398, 5, 96, 0, 0, 395, 397, 8, 0, 0, 0, 396, 395, 1, 0, 0, 0, 397, 400, 1, 0, 0, 0, 398, 396, 1, 0, 0, 0, 398, 

+

192 399, 1, 0, 0, 0, 399, 401, 1, 0, 0, 0, 400, 398, 1, 0, 0, 0, 401, 402, 6, 4, 2, 0, 402, 10, 1, 0, 0, 0, 403, 404, 7, 

+

193 2, 0, 0, 404, 405, 7, 3, 0, 0, 405, 406, 7, 4, 0, 0, 406, 12, 1, 0, 0, 0, 407, 408, 7, 2, 0, 0, 408, 409, 7, 5, 0, 

+

194 0, 409, 410, 7, 5, 0, 0, 410, 411, 7, 6, 0, 0, 411, 412, 7, 4, 0, 0, 412, 413, 7, 4, 0, 0, 413, 14, 1, 0, 0, 0, 414, 

+

195 415, 7, 2, 0, 0, 415, 416, 7, 7, 0, 0, 416, 417, 7, 8, 0, 0, 417, 418, 7, 6, 0, 0, 418, 419, 7, 9, 0, 0, 419, 16, 1, 

+

196 0, 0, 0, 420, 421, 7, 2, 0, 0, 421, 422, 7, 10, 0, 0, 422, 423, 7, 11, 0, 0, 423, 424, 7, 2, 0, 0, 424, 425, 7, 4, 

+

197 0, 0, 425, 18, 1, 0, 0, 0, 426, 427, 7, 2, 0, 0, 427, 428, 7, 10, 0, 0, 428, 429, 7, 10, 0, 0, 429, 20, 1, 0, 0, 0, 

+

198 430, 431, 7, 2, 0, 0, 431, 432, 7, 12, 0, 0, 432, 433, 7, 13, 0, 0, 433, 22, 1, 0, 0, 0, 434, 435, 7, 2, 0, 0, 435, 

+

199 436, 7, 9, 0, 0, 436, 437, 7, 5, 0, 0, 437, 438, 7, 14, 0, 0, 438, 439, 7, 11, 0, 0, 439, 440, 7, 8, 0, 0, 440, 441, 

+

200 7, 6, 0, 0, 441, 442, 7, 5, 0, 0, 442, 443, 7, 8, 0, 0, 443, 444, 7, 15, 0, 0, 444, 445, 7, 9, 0, 0, 445, 446, 7, 6, 

+

201 0, 0, 446, 24, 1, 0, 0, 0, 447, 448, 7, 2, 0, 0, 448, 449, 7, 9, 0, 0, 449, 450, 7, 9, 0, 0, 450, 451, 7, 2, 0, 0, 

+

202 451, 452, 7, 16, 0, 0, 452, 26, 1, 0, 0, 0, 453, 454, 7, 2, 0, 0, 454, 455, 7, 4, 0, 0, 455, 456, 7, 4, 0, 0, 456, 

+

203 457, 7, 6, 0, 0, 457, 458, 7, 9, 0, 0, 458, 459, 7, 8, 0, 0, 459, 28, 1, 0, 0, 0, 460, 461, 7, 2, 0, 0, 461, 462, 7, 

+

204 8, 0, 0, 462, 463, 7, 8, 0, 0, 463, 464, 7, 9, 0, 0, 464, 465, 7, 11, 0, 0, 465, 466, 7, 3, 0, 0, 466, 467, 7, 15, 

+

205 0, 0, 467, 468, 7, 8, 0, 0, 468, 469, 7, 6, 0, 0, 469, 30, 1, 0, 0, 0, 470, 471, 7, 2, 0, 0, 471, 472, 7, 4, 0, 0, 

+

206 472, 473, 7, 4, 0, 0, 473, 474, 7, 15, 0, 0, 474, 475, 7, 17, 0, 0, 475, 476, 7, 6, 0, 0, 476, 32, 1, 0, 0, 0, 477, 

+

207 478, 7, 3, 0, 0, 478, 479, 7, 6, 0, 0, 479, 480, 7, 18, 0, 0, 480, 481, 7, 11, 0, 0, 481, 482, 7, 12, 0, 0, 482, 34, 

+

208 1, 0, 0, 0, 483, 484, 7, 3, 0, 0, 484, 485, 7, 10, 0, 0, 485, 486, 7, 19, 0, 0, 486, 487, 7, 5, 0, 0, 487, 488, 7, 

+

209 20, 0, 0, 488, 36, 1, 0, 0, 0, 489, 490, 7, 3, 0, 0, 490, 491, 7, 19, 0, 0, 491, 492, 7, 13, 0, 0, 492, 493, 7, 16, 

+

210 0, 0, 493, 38, 1, 0, 0, 0, 494, 495, 7, 3, 0, 0, 495, 496, 7, 15, 0, 0, 496, 497, 7, 7, 0, 0, 497, 498, 7, 7, 0, 0, 

+

211 498, 499, 7, 6, 0, 0, 499, 500, 7, 9, 0, 0, 500, 40, 1, 0, 0, 0, 501, 502, 7, 3, 0, 0, 502, 503, 7, 15, 0, 0, 503, 

+

212 504, 7, 4, 0, 0, 504, 42, 1, 0, 0, 0, 505, 506, 7, 5, 0, 0, 506, 507, 7, 2, 0, 0, 507, 508, 7, 4, 0, 0, 508, 509, 7, 

+

213 6, 0, 0, 509, 44, 1, 0, 0, 0, 510, 511, 7, 5, 0, 0, 511, 512, 7, 19, 0, 0, 512, 513, 7, 17, 0, 0, 513, 514, 7, 21, 

+

214 0, 0, 514, 515, 7, 19, 0, 0, 515, 516, 7, 12, 0, 0, 516, 517, 7, 6, 0, 0, 517, 518, 7, 12, 0, 0, 518, 519, 7, 8, 0, 

+

215 0, 519, 46, 1, 0, 0, 0, 520, 521, 7, 5, 0, 0, 521, 522, 7, 19, 0, 0, 522, 523, 7, 12, 0, 0, 523, 524, 7, 7, 0, 0, 

+

216 524, 525, 7, 11, 0, 0, 525, 526, 7, 18, 0, 0, 526, 527, 7, 15, 0, 0, 527, 528, 7, 9, 0, 0, 528, 529, 7, 2, 0, 0, 

+

217 529, 530, 7, 8, 0, 0, 530, 531, 7, 11, 0, 0, 531, 532, 7, 19, 0, 0, 532, 533, 7, 12, 0, 0, 533, 48, 1, 0, 0, 0, 534, 

+

218 535, 7, 5, 0, 0, 535, 536, 7, 19, 0, 0, 536, 537, 7, 12, 0, 0, 537, 538, 7, 4, 0, 0, 538, 539, 7, 8, 0, 0, 539, 540, 

+

219 7, 2, 0, 0, 540, 541, 7, 12, 0, 0, 541, 542, 7, 8, 0, 0, 542, 50, 1, 0, 0, 0, 543, 544, 7, 5, 0, 0, 544, 545, 7, 19, 

+

220 0, 0, 545, 546, 7, 12, 0, 0, 546, 547, 7, 8, 0, 0, 547, 548, 7, 6, 0, 0, 548, 549, 7, 22, 0, 0, 549, 550, 7, 8, 0, 

+

221 0, 550, 52, 1, 0, 0, 0, 551, 552, 7, 5, 0, 0, 552, 553, 7, 19, 0, 0, 553, 554, 7, 23, 0, 0, 554, 555, 7, 6, 0, 0, 

+

222 555, 556, 7, 9, 0, 0, 556, 54, 1, 0, 0, 0, 557, 558, 7, 13, 0, 0, 558, 559, 7, 6, 0, 0, 559, 560, 7, 7, 0, 0, 560, 

+

223 561, 7, 2, 0, 0, 561, 562, 7, 15, 0, 0, 562, 563, 7, 10, 0, 0, 563, 564, 7, 8, 0, 0, 564, 56, 1, 0, 0, 0, 565, 566, 

+

224 7, 13, 0, 0, 566, 567, 7, 11, 0, 0, 567, 568, 7, 4, 0, 0, 568, 569, 7, 5, 0, 0, 569, 570, 7, 19, 0, 0, 570, 571, 7, 

+

225 12, 0, 0, 571, 572, 7, 12, 0, 0, 572, 573, 7, 6, 0, 0, 573, 574, 7, 5, 0, 0, 574, 575, 7, 8, 0, 0, 575, 58, 1, 0, 0, 

+

226 0, 576, 577, 7, 13, 0, 0, 577, 578, 7, 19, 0, 0, 578, 579, 7, 24, 0, 0, 579, 580, 7, 12, 0, 0, 580, 581, 7, 8, 0, 0, 

+

227 581, 582, 7, 19, 0, 0, 582, 60, 1, 0, 0, 0, 583, 584, 7, 6, 0, 0, 584, 585, 7, 10, 0, 0, 585, 586, 7, 4, 0, 0, 586, 

+

228 587, 7, 6, 0, 0, 587, 62, 1, 0, 0, 0, 588, 589, 7, 6, 0, 0, 589, 590, 7, 10, 0, 0, 590, 591, 7, 4, 0, 0, 591, 592, 

+

229 7, 11, 0, 0, 592, 593, 7, 7, 0, 0, 593, 64, 1, 0, 0, 0, 594, 595, 7, 6, 0, 0, 595, 596, 7, 12, 0, 0, 596, 597, 7, 

+

230 13, 0, 0, 597, 66, 1, 0, 0, 0, 598, 599, 7, 6, 0, 0, 599, 600, 7, 12, 0, 0, 600, 601, 7, 8, 0, 0, 601, 602, 7, 11, 

+

231 0, 0, 602, 603, 7, 8, 0, 0, 603, 604, 7, 16, 0, 0, 604, 68, 1, 0, 0, 0, 605, 606, 7, 6, 0, 0, 606, 607, 7, 22, 0, 0, 

+

232 607, 608, 7, 11, 0, 0, 608, 609, 7, 8, 0, 0, 609, 70, 1, 0, 0, 0, 610, 611, 7, 7, 0, 0, 611, 612, 7, 11, 0, 0, 612, 

+

233 613, 7, 10, 0, 0, 613, 614, 7, 6, 0, 0, 614, 72, 1, 0, 0, 0, 615, 616, 7, 7, 0, 0, 616, 617, 7, 19, 0, 0, 617, 618, 

+

234 7, 9, 0, 0, 618, 74, 1, 0, 0, 0, 619, 620, 7, 7, 0, 0, 620, 621, 7, 19, 0, 0, 621, 622, 7, 9, 0, 0, 622, 623, 7, 5, 

+

235 0, 0, 623, 624, 7, 6, 0, 0, 624, 76, 1, 0, 0, 0, 625, 626, 7, 7, 0, 0, 626, 627, 7, 15, 0, 0, 627, 628, 7, 12, 0, 0, 

+

236 628, 629, 7, 5, 0, 0, 629, 630, 7, 8, 0, 0, 630, 631, 7, 11, 0, 0, 631, 632, 7, 19, 0, 0, 632, 633, 7, 12, 0, 0, 

+

237 633, 78, 1, 0, 0, 0, 634, 635, 7, 7, 0, 0, 635, 636, 7, 2, 0, 0, 636, 637, 7, 11, 0, 0, 637, 638, 7, 9, 0, 0, 638, 

+

238 639, 7, 12, 0, 0, 639, 640, 7, 6, 0, 0, 640, 641, 7, 4, 0, 0, 641, 642, 7, 4, 0, 0, 642, 80, 1, 0, 0, 0, 643, 644, 

+

239 7, 18, 0, 0, 644, 645, 7, 6, 0, 0, 645, 646, 7, 12, 0, 0, 646, 647, 7, 6, 0, 0, 647, 648, 7, 9, 0, 0, 648, 649, 7, 

+

240 2, 0, 0, 649, 650, 7, 8, 0, 0, 650, 651, 7, 6, 0, 0, 651, 82, 1, 0, 0, 0, 652, 653, 7, 18, 0, 0, 653, 654, 7, 6, 0, 

+

241 0, 654, 655, 7, 12, 0, 0, 655, 656, 7, 6, 0, 0, 656, 657, 7, 9, 0, 0, 657, 658, 7, 11, 0, 0, 658, 659, 7, 5, 0, 0, 

+

242 659, 84, 1, 0, 0, 0, 660, 661, 7, 18, 0, 0, 661, 662, 7, 15, 0, 0, 662, 663, 7, 2, 0, 0, 663, 664, 7, 9, 0, 0, 664, 

+

243 665, 7, 13, 0, 0, 665, 666, 7, 6, 0, 0, 666, 667, 7, 13, 0, 0, 667, 86, 1, 0, 0, 0, 668, 669, 7, 18, 0, 0, 669, 670, 

+

244 7, 9, 0, 0, 670, 671, 7, 19, 0, 0, 671, 672, 7, 15, 0, 0, 672, 673, 7, 21, 0, 0, 673, 88, 1, 0, 0, 0, 674, 675, 7, 

+

245 11, 0, 0, 675, 676, 7, 7, 0, 0, 676, 90, 1, 0, 0, 0, 677, 678, 7, 11, 0, 0, 678, 679, 7, 17, 0, 0, 679, 680, 7, 21, 

+

246 0, 0, 680, 681, 7, 15, 0, 0, 681, 682, 7, 9, 0, 0, 682, 683, 7, 6, 0, 0, 683, 92, 1, 0, 0, 0, 684, 685, 7, 11, 0, 0, 

+

247 685, 686, 7, 12, 0, 0, 686, 94, 1, 0, 0, 0, 687, 688, 7, 11, 0, 0, 688, 689, 7, 12, 0, 0, 689, 690, 7, 6, 0, 0, 690, 

+

248 691, 7, 9, 0, 0, 691, 692, 7, 8, 0, 0, 692, 693, 7, 11, 0, 0, 693, 694, 7, 2, 0, 0, 694, 695, 7, 10, 0, 0, 695, 96, 

+

249 1, 0, 0, 0, 696, 697, 7, 11, 0, 0, 697, 698, 7, 12, 0, 0, 698, 699, 7, 19, 0, 0, 699, 700, 7, 15, 0, 0, 700, 701, 7, 

+

250 8, 0, 0, 701, 98, 1, 0, 0, 0, 702, 703, 7, 11, 0, 0, 703, 704, 7, 4, 0, 0, 704, 100, 1, 0, 0, 0, 705, 706, 7, 10, 0, 

+

251 0, 706, 707, 7, 2, 0, 0, 707, 708, 7, 3, 0, 0, 708, 709, 7, 6, 0, 0, 709, 710, 7, 10, 0, 0, 710, 102, 1, 0, 0, 0, 

+

252 711, 712, 7, 10, 0, 0, 712, 713, 7, 11, 0, 0, 713, 714, 7, 3, 0, 0, 714, 715, 7, 9, 0, 0, 715, 716, 7, 2, 0, 0, 716, 

+

253 717, 7, 9, 0, 0, 717, 718, 7, 16, 0, 0, 718, 104, 1, 0, 0, 0, 719, 720, 7, 10, 0, 0, 720, 721, 7, 11, 0, 0, 721, 

+

254 722, 7, 12, 0, 0, 722, 723, 7, 20, 0, 0, 723, 724, 7, 2, 0, 0, 724, 725, 7, 18, 0, 0, 725, 726, 7, 6, 0, 0, 726, 

+

255 106, 1, 0, 0, 0, 727, 728, 7, 10, 0, 0, 728, 729, 7, 19, 0, 0, 729, 730, 7, 19, 0, 0, 730, 731, 7, 21, 0, 0, 731, 

+

256 108, 1, 0, 0, 0, 732, 733, 7, 10, 0, 0, 733, 734, 7, 11, 0, 0, 734, 735, 7, 8, 0, 0, 735, 736, 7, 6, 0, 0, 736, 737, 

+

257 7, 9, 0, 0, 737, 738, 7, 2, 0, 0, 738, 739, 7, 10, 0, 0, 739, 110, 1, 0, 0, 0, 740, 741, 7, 17, 0, 0, 741, 742, 7, 

+

258 2, 0, 0, 742, 743, 7, 21, 0, 0, 743, 112, 1, 0, 0, 0, 744, 745, 7, 17, 0, 0, 745, 746, 7, 19, 0, 0, 746, 747, 7, 13, 

+

259 0, 0, 747, 114, 1, 0, 0, 0, 748, 749, 7, 12, 0, 0, 749, 750, 7, 2, 0, 0, 750, 751, 7, 12, 0, 0, 751, 752, 7, 13, 0, 

+

260 0, 752, 116, 1, 0, 0, 0, 753, 754, 7, 12, 0, 0, 754, 755, 7, 6, 0, 0, 755, 756, 7, 24, 0, 0, 756, 118, 1, 0, 0, 0, 

+

261 757, 758, 7, 12, 0, 0, 758, 759, 7, 6, 0, 0, 759, 760, 7, 22, 0, 0, 760, 761, 7, 8, 0, 0, 761, 120, 1, 0, 0, 0, 762, 

+

262 763, 7, 12, 0, 0, 763, 764, 7, 19, 0, 0, 764, 765, 7, 9, 0, 0, 765, 122, 1, 0, 0, 0, 766, 767, 7, 12, 0, 0, 767, 

+

263 768, 7, 19, 0, 0, 768, 769, 7, 8, 0, 0, 769, 124, 1, 0, 0, 0, 770, 771, 7, 12, 0, 0, 771, 772, 7, 15, 0, 0, 772, 

+

264 773, 7, 10, 0, 0, 773, 774, 7, 10, 0, 0, 774, 126, 1, 0, 0, 0, 775, 776, 7, 19, 0, 0, 776, 777, 7, 7, 0, 0, 777, 

+

265 128, 1, 0, 0, 0, 778, 779, 7, 19, 0, 0, 779, 780, 7, 12, 0, 0, 780, 130, 1, 0, 0, 0, 781, 782, 7, 19, 0, 0, 782, 

+

266 783, 7, 21, 0, 0, 783, 784, 7, 6, 0, 0, 784, 785, 7, 12, 0, 0, 785, 132, 1, 0, 0, 0, 786, 787, 7, 19, 0, 0, 787, 

+

267 788, 7, 9, 0, 0, 788, 134, 1, 0, 0, 0, 789, 790, 7, 19, 0, 0, 790, 791, 7, 8, 0, 0, 791, 792, 7, 14, 0, 0, 792, 793, 

+

268 7, 6, 0, 0, 793, 794, 7, 9, 0, 0, 794, 795, 7, 4, 0, 0, 795, 136, 1, 0, 0, 0, 796, 797, 7, 19, 0, 0, 797, 798, 7, 

+

269 15, 0, 0, 798, 799, 7, 8, 0, 0, 799, 138, 1, 0, 0, 0, 800, 801, 7, 21, 0, 0, 801, 802, 7, 2, 0, 0, 802, 803, 7, 5, 

+

270 0, 0, 803, 804, 7, 20, 0, 0, 804, 805, 7, 2, 0, 0, 805, 806, 7, 18, 0, 0, 806, 807, 7, 6, 0, 0, 807, 140, 1, 0, 0, 

+

271 0, 808, 809, 7, 21, 0, 0, 809, 810, 7, 2, 0, 0, 810, 811, 7, 9, 0, 0, 811, 812, 7, 2, 0, 0, 812, 813, 7, 17, 0, 0, 

+

272 813, 814, 7, 6, 0, 0, 814, 815, 7, 8, 0, 0, 815, 816, 7, 6, 0, 0, 816, 817, 7, 9, 0, 0, 817, 142, 1, 0, 0, 0, 818, 

+

273 819, 7, 21, 0, 0, 819, 820, 7, 19, 0, 0, 820, 821, 7, 9, 0, 0, 821, 822, 7, 8, 0, 0, 822, 144, 1, 0, 0, 0, 823, 824, 

+

274 7, 21, 0, 0, 824, 825, 7, 19, 0, 0, 825, 826, 7, 4, 0, 0, 826, 827, 7, 8, 0, 0, 827, 828, 7, 21, 0, 0, 828, 829, 7, 

+

275 19, 0, 0, 829, 830, 7, 12, 0, 0, 830, 831, 7, 6, 0, 0, 831, 832, 7, 13, 0, 0, 832, 146, 1, 0, 0, 0, 833, 834, 7, 21, 

+

276 0, 0, 834, 835, 7, 9, 0, 0, 835, 836, 7, 11, 0, 0, 836, 837, 7, 23, 0, 0, 837, 838, 7, 2, 0, 0, 838, 839, 7, 8, 0, 

+

277 0, 839, 840, 7, 6, 0, 0, 840, 148, 1, 0, 0, 0, 841, 842, 7, 21, 0, 0, 842, 843, 7, 9, 0, 0, 843, 844, 7, 19, 0, 0, 

+

278 844, 845, 7, 5, 0, 0, 845, 846, 7, 6, 0, 0, 846, 847, 7, 13, 0, 0, 847, 848, 7, 15, 0, 0, 848, 849, 7, 9, 0, 0, 849, 

+

279 850, 7, 6, 0, 0, 850, 150, 1, 0, 0, 0, 851, 852, 7, 21, 0, 0, 852, 853, 7, 9, 0, 0, 853, 854, 7, 19, 0, 0, 854, 855, 

+

280 7, 5, 0, 0, 855, 856, 7, 6, 0, 0, 856, 857, 7, 4, 0, 0, 857, 858, 7, 4, 0, 0, 858, 152, 1, 0, 0, 0, 859, 860, 7, 21, 

+

281 0, 0, 860, 861, 7, 9, 0, 0, 861, 862, 7, 19, 0, 0, 862, 863, 7, 8, 0, 0, 863, 864, 7, 6, 0, 0, 864, 865, 7, 5, 0, 0, 

+

282 865, 866, 7, 8, 0, 0, 866, 867, 7, 6, 0, 0, 867, 868, 7, 13, 0, 0, 868, 154, 1, 0, 0, 0, 869, 870, 7, 21, 0, 0, 870, 

+

283 871, 7, 15, 0, 0, 871, 872, 7, 9, 0, 0, 872, 873, 7, 6, 0, 0, 873, 156, 1, 0, 0, 0, 874, 875, 7, 9, 0, 0, 875, 876, 

+

284 7, 2, 0, 0, 876, 877, 7, 12, 0, 0, 877, 878, 7, 18, 0, 0, 878, 879, 7, 6, 0, 0, 879, 158, 1, 0, 0, 0, 880, 881, 7, 

+

285 9, 0, 0, 881, 882, 7, 6, 0, 0, 882, 883, 7, 5, 0, 0, 883, 884, 7, 19, 0, 0, 884, 885, 7, 9, 0, 0, 885, 886, 7, 13, 

+

286 0, 0, 886, 160, 1, 0, 0, 0, 887, 888, 7, 9, 0, 0, 888, 889, 7, 6, 0, 0, 889, 890, 7, 18, 0, 0, 890, 891, 7, 11, 0, 

+

287 0, 891, 892, 7, 4, 0, 0, 892, 893, 7, 8, 0, 0, 893, 894, 7, 6, 0, 0, 894, 895, 7, 9, 0, 0, 895, 162, 1, 0, 0, 0, 

+

288 896, 897, 7, 9, 0, 0, 897, 898, 7, 6, 0, 0, 898, 899, 7, 25, 0, 0, 899, 900, 7, 6, 0, 0, 900, 901, 7, 5, 0, 0, 901, 

+

289 902, 7, 8, 0, 0, 902, 164, 1, 0, 0, 0, 903, 904, 7, 9, 0, 0, 904, 905, 7, 6, 0, 0, 905, 906, 7, 10, 0, 0, 906, 907, 

+

290 7, 6, 0, 0, 907, 908, 7, 2, 0, 0, 908, 909, 7, 4, 0, 0, 909, 910, 7, 6, 0, 0, 910, 166, 1, 0, 0, 0, 911, 912, 7, 9, 

+

291 0, 0, 912, 913, 7, 6, 0, 0, 913, 914, 7, 17, 0, 0, 914, 168, 1, 0, 0, 0, 915, 916, 7, 9, 0, 0, 916, 917, 7, 6, 0, 0, 

+

292 917, 918, 7, 21, 0, 0, 918, 919, 7, 19, 0, 0, 919, 920, 7, 9, 0, 0, 920, 921, 7, 8, 0, 0, 921, 170, 1, 0, 0, 0, 922, 

+

293 923, 7, 9, 0, 0, 923, 924, 7, 6, 0, 0, 924, 925, 7, 8, 0, 0, 925, 926, 7, 15, 0, 0, 926, 927, 7, 9, 0, 0, 927, 928, 

+

294 7, 12, 0, 0, 928, 172, 1, 0, 0, 0, 929, 930, 7, 9, 0, 0, 930, 931, 7, 19, 0, 0, 931, 932, 7, 10, 0, 0, 932, 174, 1, 

+

295 0, 0, 0, 933, 934, 7, 9, 0, 0, 934, 935, 7, 19, 0, 0, 935, 936, 7, 9, 0, 0, 936, 176, 1, 0, 0, 0, 937, 938, 7, 9, 0, 

+

296 0, 938, 939, 7, 6, 0, 0, 939, 940, 7, 4, 0, 0, 940, 941, 7, 8, 0, 0, 941, 942, 7, 9, 0, 0, 942, 943, 7, 11, 0, 0, 

+

297 943, 944, 7, 5, 0, 0, 944, 945, 7, 8, 0, 0, 945, 178, 1, 0, 0, 0, 946, 947, 7, 4, 0, 0, 947, 948, 7, 6, 0, 0, 948, 

+

298 949, 7, 10, 0, 0, 949, 950, 7, 6, 0, 0, 950, 951, 7, 5, 0, 0, 951, 952, 7, 8, 0, 0, 952, 180, 1, 0, 0, 0, 953, 954, 

+

299 7, 4, 0, 0, 954, 955, 7, 6, 0, 0, 955, 956, 7, 23, 0, 0, 956, 957, 7, 6, 0, 0, 957, 958, 7, 9, 0, 0, 958, 959, 7, 

+

300 11, 0, 0, 959, 960, 7, 8, 0, 0, 960, 961, 7, 16, 0, 0, 961, 182, 1, 0, 0, 0, 962, 963, 7, 4, 0, 0, 963, 964, 7, 14, 

+

301 0, 0, 964, 965, 7, 2, 0, 0, 965, 966, 7, 9, 0, 0, 966, 967, 7, 6, 0, 0, 967, 968, 7, 13, 0, 0, 968, 184, 1, 0, 0, 0, 

+

302 969, 970, 7, 4, 0, 0, 970, 971, 7, 11, 0, 0, 971, 972, 7, 18, 0, 0, 972, 973, 7, 12, 0, 0, 973, 974, 7, 2, 0, 0, 

+

303 974, 975, 7, 10, 0, 0, 975, 186, 1, 0, 0, 0, 976, 977, 7, 4, 0, 0, 977, 978, 7, 10, 0, 0, 978, 979, 7, 2, 0, 0, 979, 

+

304 188, 1, 0, 0, 0, 980, 981, 7, 4, 0, 0, 981, 982, 7, 10, 0, 0, 982, 983, 7, 10, 0, 0, 983, 190, 1, 0, 0, 0, 984, 985, 

+

305 7, 4, 0, 0, 985, 986, 7, 9, 0, 0, 986, 987, 7, 2, 0, 0, 987, 192, 1, 0, 0, 0, 988, 989, 7, 4, 0, 0, 989, 990, 7, 9, 

+

306 0, 0, 990, 991, 7, 10, 0, 0, 991, 194, 1, 0, 0, 0, 992, 993, 7, 4, 0, 0, 993, 994, 7, 15, 0, 0, 994, 995, 7, 3, 0, 

+

307 0, 995, 996, 7, 8, 0, 0, 996, 997, 7, 16, 0, 0, 997, 998, 7, 21, 0, 0, 998, 999, 7, 6, 0, 0, 999, 196, 1, 0, 0, 0, 

+

308 1000, 1001, 7, 4, 0, 0, 1001, 1002, 7, 8, 0, 0, 1002, 1003, 7, 9, 0, 0, 1003, 1004, 7, 19, 0, 0, 1004, 1005, 7, 12, 

+

309 0, 0, 1005, 1006, 7, 18, 0, 0, 1006, 198, 1, 0, 0, 0, 1007, 1008, 7, 4, 0, 0, 1008, 1009, 7, 6, 0, 0, 1009, 1010, 7, 

+

310 26, 0, 0, 1010, 1011, 7, 15, 0, 0, 1011, 1012, 7, 6, 0, 0, 1012, 1013, 7, 12, 0, 0, 1013, 1014, 7, 5, 0, 0, 1014, 

+

311 1015, 7, 6, 0, 0, 1015, 200, 1, 0, 0, 0, 1016, 1017, 7, 8, 0, 0, 1017, 1018, 7, 14, 0, 0, 1018, 1019, 7, 6, 0, 0, 

+

312 1019, 1020, 7, 12, 0, 0, 1020, 202, 1, 0, 0, 0, 1021, 1022, 7, 8, 0, 0, 1022, 1023, 7, 19, 0, 0, 1023, 204, 1, 0, 0, 

+

313 0, 1024, 1025, 7, 8, 0, 0, 1025, 1026, 7, 9, 0, 0, 1026, 1027, 7, 2, 0, 0, 1027, 1028, 7, 12, 0, 0, 1028, 1029, 7, 

+

314 4, 0, 0, 1029, 1030, 7, 21, 0, 0, 1030, 1031, 7, 19, 0, 0, 1031, 1032, 7, 9, 0, 0, 1032, 1033, 7, 8, 0, 0, 1033, 

+

315 206, 1, 0, 0, 0, 1034, 1035, 7, 8, 0, 0, 1035, 1036, 7, 16, 0, 0, 1036, 1037, 7, 21, 0, 0, 1037, 1038, 7, 6, 0, 0, 

+

316 1038, 208, 1, 0, 0, 0, 1039, 1040, 7, 15, 0, 0, 1040, 1041, 7, 12, 0, 0, 1041, 1042, 7, 2, 0, 0, 1042, 1043, 7, 7, 

+

317 0, 0, 1043, 1044, 7, 7, 0, 0, 1044, 1045, 7, 6, 0, 0, 1045, 1046, 7, 5, 0, 0, 1046, 1047, 7, 8, 0, 0, 1047, 1048, 7, 

+

318 6, 0, 0, 1048, 1049, 7, 13, 0, 0, 1049, 210, 1, 0, 0, 0, 1050, 1051, 7, 15, 0, 0, 1051, 1052, 7, 12, 0, 0, 1052, 

+

319 1053, 7, 11, 0, 0, 1053, 1054, 7, 8, 0, 0, 1054, 1055, 7, 4, 0, 0, 1055, 212, 1, 0, 0, 0, 1056, 1057, 7, 15, 0, 0, 

+

320 1057, 1058, 7, 12, 0, 0, 1058, 1059, 7, 8, 0, 0, 1059, 1060, 7, 11, 0, 0, 1060, 1061, 7, 10, 0, 0, 1061, 214, 1, 0, 

+

321 0, 0, 1062, 1063, 7, 15, 0, 0, 1063, 1064, 7, 4, 0, 0, 1064, 1065, 7, 6, 0, 0, 1065, 216, 1, 0, 0, 0, 1066, 1067, 7, 

+

322 23, 0, 0, 1067, 1068, 7, 2, 0, 0, 1068, 1069, 7, 9, 0, 0, 1069, 1070, 7, 11, 0, 0, 1070, 1071, 7, 2, 0, 0, 1071, 

+

323 1072, 7, 3, 0, 0, 1072, 1073, 7, 10, 0, 0, 1073, 1074, 7, 6, 0, 0, 1074, 218, 1, 0, 0, 0, 1075, 1076, 7, 23, 0, 0, 

+

324 1076, 1077, 7, 11, 0, 0, 1077, 1078, 7, 6, 0, 0, 1078, 1079, 7, 24, 0, 0, 1079, 220, 1, 0, 0, 0, 1080, 1081, 7, 23, 

+

325 0, 0, 1081, 1082, 7, 21, 0, 0, 1082, 1083, 7, 20, 0, 0, 1083, 1084, 7, 18, 0, 0, 1084, 222, 1, 0, 0, 0, 1085, 1086, 

+

326 7, 23, 0, 0, 1086, 1087, 7, 17, 0, 0, 1087, 1088, 7, 19, 0, 0, 1088, 1089, 7, 13, 0, 0, 1089, 1090, 7, 6, 0, 0, 

+

327 1090, 224, 1, 0, 0, 0, 1091, 1092, 7, 23, 0, 0, 1092, 1093, 7, 21, 0, 0, 1093, 1094, 7, 9, 0, 0, 1094, 1095, 7, 19, 

+

328 0, 0, 1095, 1096, 7, 21, 0, 0, 1096, 226, 1, 0, 0, 0, 1097, 1098, 7, 23, 0, 0, 1098, 1099, 7, 15, 0, 0, 1099, 1100, 

+

329 7, 12, 0, 0, 1100, 1101, 7, 11, 0, 0, 1101, 1102, 7, 8, 0, 0, 1102, 228, 1, 0, 0, 0, 1103, 1104, 7, 24, 0, 0, 1104, 

+

330 1105, 7, 2, 0, 0, 1105, 1106, 7, 11, 0, 0, 1106, 1107, 7, 8, 0, 0, 1107, 230, 1, 0, 0, 0, 1108, 1109, 7, 24, 0, 0, 

+

331 1109, 1110, 7, 11, 0, 0, 1110, 1111, 7, 8, 0, 0, 1111, 1112, 7, 14, 0, 0, 1112, 232, 1, 0, 0, 0, 1113, 1114, 7, 24, 

+

332 0, 0, 1114, 1115, 7, 14, 0, 0, 1115, 1116, 7, 6, 0, 0, 1116, 1117, 7, 12, 0, 0, 1117, 234, 1, 0, 0, 0, 1118, 1119, 

+

333 7, 24, 0, 0, 1119, 1120, 7, 14, 0, 0, 1120, 1121, 7, 11, 0, 0, 1121, 1122, 7, 10, 0, 0, 1122, 1123, 7, 6, 0, 0, 

+

334 1123, 236, 1, 0, 0, 0, 1124, 1125, 7, 22, 0, 0, 1125, 1126, 7, 12, 0, 0, 1126, 1127, 7, 19, 0, 0, 1127, 1128, 7, 9, 

+

335 0, 0, 1128, 238, 1, 0, 0, 0, 1129, 1130, 7, 22, 0, 0, 1130, 1131, 7, 19, 0, 0, 1131, 1132, 7, 9, 0, 0, 1132, 240, 1, 

+

336 0, 0, 0, 1133, 1134, 5, 61, 0, 0, 1134, 242, 1, 0, 0, 0, 1135, 1136, 5, 47, 0, 0, 1136, 1137, 5, 61, 0, 0, 1137, 

+

337 244, 1, 0, 0, 0, 1138, 1139, 5, 60, 0, 0, 1139, 246, 1, 0, 0, 0, 1140, 1141, 5, 62, 0, 0, 1141, 248, 1, 0, 0, 0, 

+

338 1142, 1143, 5, 62, 0, 0, 1143, 1144, 5, 61, 0, 0, 1144, 250, 1, 0, 0, 0, 1145, 1146, 5, 63, 0, 0, 1146, 1147, 5, 61, 

+

339 0, 0, 1147, 252, 1, 0, 0, 0, 1148, 1149, 5, 63, 0, 0, 1149, 1150, 5, 47, 0, 0, 1150, 1151, 5, 61, 0, 0, 1151, 254, 

+

340 1, 0, 0, 0, 1152, 1153, 5, 63, 0, 0, 1153, 1154, 5, 60, 0, 0, 1154, 256, 1, 0, 0, 0, 1155, 1156, 5, 63, 0, 0, 1156, 

+

341 1157, 5, 60, 0, 0, 1157, 1158, 5, 61, 0, 0, 1158, 258, 1, 0, 0, 0, 1159, 1160, 5, 63, 0, 0, 1160, 1161, 5, 62, 0, 0, 

+

342 1161, 260, 1, 0, 0, 0, 1162, 1163, 5, 63, 0, 0, 1163, 1164, 5, 62, 0, 0, 1164, 1165, 5, 61, 0, 0, 1165, 262, 1, 0, 

+

343 0, 0, 1166, 1167, 5, 43, 0, 0, 1167, 264, 1, 0, 0, 0, 1168, 1169, 5, 45, 0, 0, 1169, 266, 1, 0, 0, 0, 1170, 1171, 5, 

+

344 42, 0, 0, 1171, 268, 1, 0, 0, 0, 1172, 1173, 5, 47, 0, 0, 1173, 270, 1, 0, 0, 0, 1174, 1175, 5, 42, 0, 0, 1175, 

+

345 1176, 5, 42, 0, 0, 1176, 272, 1, 0, 0, 0, 1177, 1178, 5, 38, 0, 0, 1178, 274, 1, 0, 0, 0, 1179, 1180, 5, 63, 0, 0, 

+

346 1180, 1181, 5, 63, 0, 0, 1181, 276, 1, 0, 0, 0, 1182, 1183, 5, 61, 0, 0, 1183, 1184, 5, 62, 0, 0, 1184, 278, 1, 0, 

+

347 0, 0, 1185, 1186, 5, 60, 0, 0, 1186, 1187, 5, 61, 0, 0, 1187, 280, 1, 0, 0, 0, 1188, 1189, 5, 58, 0, 0, 1189, 1190, 

+

348 5, 61, 0, 0, 1190, 282, 1, 0, 0, 0, 1191, 1192, 5, 60, 0, 0, 1192, 1193, 5, 62, 0, 0, 1193, 284, 1, 0, 0, 0, 1194, 

+

349 1195, 5, 40, 0, 0, 1195, 286, 1, 0, 0, 0, 1196, 1197, 5, 41, 0, 0, 1197, 288, 1, 0, 0, 0, 1198, 1199, 5, 91, 0, 0, 

+

350 1199, 290, 1, 0, 0, 0, 1200, 1201, 5, 93, 0, 0, 1201, 292, 1, 0, 0, 0, 1202, 1203, 5, 60, 0, 0, 1203, 1204, 5, 60, 

+

351 0, 0, 1204, 294, 1, 0, 0, 0, 1205, 1206, 5, 62, 0, 0, 1206, 1207, 5, 62, 0, 0, 1207, 296, 1, 0, 0, 0, 1208, 1209, 5, 

+

352 58, 0, 0, 1209, 298, 1, 0, 0, 0, 1210, 1211, 5, 59, 0, 0, 1211, 300, 1, 0, 0, 0, 1212, 1213, 5, 44, 0, 0, 1213, 302, 

+

353 1, 0, 0, 0, 1214, 1215, 5, 124, 0, 0, 1215, 304, 1, 0, 0, 0, 1216, 1217, 5, 46, 0, 0, 1217, 306, 1, 0, 0, 0, 1218, 

+

354 1219, 5, 63, 0, 0, 1219, 308, 1, 0, 0, 0, 1220, 1221, 5, 64, 0, 0, 1221, 310, 1, 0, 0, 0, 1222, 1223, 5, 94, 0, 0, 

+

355 1223, 312, 1, 0, 0, 0, 1224, 1225, 5, 39, 0, 0, 1225, 314, 1, 0, 0, 0, 1226, 1227, 5, 34, 0, 0, 1227, 316, 1, 0, 0, 

+

356 0, 1228, 1229, 7, 27, 0, 0, 1229, 318, 1, 0, 0, 0, 1230, 1231, 7, 28, 0, 0, 1231, 320, 1, 0, 0, 0, 1232, 1233, 7, 

+

357 29, 0, 0, 1233, 322, 1, 0, 0, 0, 1234, 1238, 7, 28, 0, 0, 1235, 1237, 7, 30, 0, 0, 1236, 1235, 1, 0, 0, 0, 1237, 

+

358 1240, 1, 0, 0, 0, 1238, 1236, 1, 0, 0, 0, 1238, 1239, 1, 0, 0, 0, 1239, 324, 1, 0, 0, 0, 1240, 1238, 1, 0, 0, 0, 

+

359 1241, 1246, 3, 321, 160, 0, 1242, 1245, 5, 95, 0, 0, 1243, 1245, 3, 321, 160, 0, 1244, 1242, 1, 0, 0, 0, 1244, 1243, 

+

360 1, 0, 0, 0, 1245, 1248, 1, 0, 0, 0, 1246, 1244, 1, 0, 0, 0, 1246, 1247, 1, 0, 0, 0, 1247, 326, 1, 0, 0, 0, 1248, 

+

361 1246, 1, 0, 0, 0, 1249, 1251, 7, 6, 0, 0, 1250, 1252, 7, 31, 0, 0, 1251, 1250, 1, 0, 0, 0, 1251, 1252, 1, 0, 0, 0, 

+

362 1252, 1253, 1, 0, 0, 0, 1253, 1254, 3, 323, 161, 0, 1254, 328, 1, 0, 0, 0, 1255, 1256, 3, 323, 161, 0, 1256, 1257, 

+

363 5, 46, 0, 0, 1257, 1259, 3, 323, 161, 0, 1258, 1260, 3, 327, 163, 0, 1259, 1258, 1, 0, 0, 0, 1259, 1260, 1, 0, 0, 0, 

+

364 1260, 330, 1, 0, 0, 0, 1261, 1262, 3, 323, 161, 0, 1262, 1263, 5, 35, 0, 0, 1263, 1266, 3, 325, 162, 0, 1264, 1265, 

+

365 5, 46, 0, 0, 1265, 1267, 3, 325, 162, 0, 1266, 1264, 1, 0, 0, 0, 1266, 1267, 1, 0, 0, 0, 1267, 1268, 1, 0, 0, 0, 

+

366 1268, 1270, 5, 35, 0, 0, 1269, 1271, 3, 327, 163, 0, 1270, 1269, 1, 0, 0, 0, 1270, 1271, 1, 0, 0, 0, 1271, 332, 1, 

+

367 0, 0, 0, 1272, 1276, 3, 323, 161, 0, 1273, 1276, 3, 329, 164, 0, 1274, 1276, 3, 331, 165, 0, 1275, 1272, 1, 0, 0, 0, 

+

368 1275, 1273, 1, 0, 0, 0, 1275, 1274, 1, 0, 0, 0, 1276, 334, 1, 0, 0, 0, 1277, 1279, 3, 323, 161, 0, 1278, 1277, 1, 0, 

+

369 0, 0, 1278, 1279, 1, 0, 0, 0, 1279, 1281, 1, 0, 0, 0, 1280, 1282, 7, 32, 0, 0, 1281, 1280, 1, 0, 0, 0, 1281, 1282, 

+

370 1, 0, 0, 0, 1282, 1283, 1, 0, 0, 0, 1283, 1284, 7, 3, 0, 0, 1284, 1286, 5, 34, 0, 0, 1285, 1287, 7, 33, 0, 0, 1286, 

+

371 1285, 1, 0, 0, 0, 1287, 1288, 1, 0, 0, 0, 1288, 1286, 1, 0, 0, 0, 1288, 1289, 1, 0, 0, 0, 1289, 1290, 1, 0, 0, 0, 

+

372 1290, 1291, 5, 34, 0, 0, 1291, 336, 1, 0, 0, 0, 1292, 1294, 3, 323, 161, 0, 1293, 1292, 1, 0, 0, 0, 1293, 1294, 1, 

+

373 0, 0, 0, 1294, 1296, 1, 0, 0, 0, 1295, 1297, 7, 32, 0, 0, 1296, 1295, 1, 0, 0, 0, 1296, 1297, 1, 0, 0, 0, 1297, 

+

374 1298, 1, 0, 0, 0, 1298, 1299, 7, 19, 0, 0, 1299, 1301, 5, 34, 0, 0, 1300, 1302, 7, 34, 0, 0, 1301, 1300, 1, 0, 0, 0, 

+

375 1302, 1303, 1, 0, 0, 0, 1303, 1301, 1, 0, 0, 0, 1303, 1304, 1, 0, 0, 0, 1304, 1305, 1, 0, 0, 0, 1305, 1306, 5, 34, 

+

376 0, 0, 1306, 338, 1, 0, 0, 0, 1307, 1309, 3, 323, 161, 0, 1308, 1307, 1, 0, 0, 0, 1308, 1309, 1, 0, 0, 0, 1309, 1310, 

+

377 1, 0, 0, 0, 1310, 1311, 7, 13, 0, 0, 1311, 1313, 5, 34, 0, 0, 1312, 1314, 7, 30, 0, 0, 1313, 1312, 1, 0, 0, 0, 1314, 

+

378 1315, 1, 0, 0, 0, 1315, 1313, 1, 0, 0, 0, 1315, 1316, 1, 0, 0, 0, 1316, 1317, 1, 0, 0, 0, 1317, 1318, 5, 34, 0, 0, 

+

379 1318, 340, 1, 0, 0, 0, 1319, 1321, 3, 323, 161, 0, 1320, 1319, 1, 0, 0, 0, 1320, 1321, 1, 0, 0, 0, 1321, 1323, 1, 0, 

+

380 0, 0, 1322, 1324, 7, 32, 0, 0, 1323, 1322, 1, 0, 0, 0, 1323, 1324, 1, 0, 0, 0, 1324, 1325, 1, 0, 0, 0, 1325, 1326, 

+

381 7, 22, 0, 0, 1326, 1328, 5, 34, 0, 0, 1327, 1329, 7, 35, 0, 0, 1328, 1327, 1, 0, 0, 0, 1329, 1330, 1, 0, 0, 0, 1330, 

+

382 1328, 1, 0, 0, 0, 1330, 1331, 1, 0, 0, 0, 1331, 1332, 1, 0, 0, 0, 1332, 1333, 5, 34, 0, 0, 1333, 342, 1, 0, 0, 0, 

+

383 1334, 1339, 3, 335, 167, 0, 1335, 1339, 3, 337, 168, 0, 1336, 1339, 3, 339, 169, 0, 1337, 1339, 3, 341, 170, 0, 

+

384 1338, 1334, 1, 0, 0, 0, 1338, 1335, 1, 0, 0, 0, 1338, 1336, 1, 0, 0, 0, 1338, 1337, 1, 0, 0, 0, 1339, 344, 1, 0, 0, 

+

385 0, 1340, 1341, 5, 39, 0, 0, 1341, 1342, 9, 0, 0, 0, 1342, 1343, 5, 39, 0, 0, 1343, 346, 1, 0, 0, 0, 1344, 1350, 5, 

+

386 34, 0, 0, 1345, 1349, 8, 36, 0, 0, 1346, 1347, 5, 34, 0, 0, 1347, 1349, 5, 34, 0, 0, 1348, 1345, 1, 0, 0, 0, 1348, 

+

387 1346, 1, 0, 0, 0, 1349, 1352, 1, 0, 0, 0, 1350, 1348, 1, 0, 0, 0, 1350, 1351, 1, 0, 0, 0, 1351, 1353, 1, 0, 0, 0, 

+

388 1352, 1350, 1, 0, 0, 0, 1353, 1354, 5, 34, 0, 0, 1354, 348, 1, 0, 0, 0, 1355, 1362, 7, 27, 0, 0, 1356, 1358, 5, 95, 

+

389 0, 0, 1357, 1356, 1, 0, 0, 0, 1357, 1358, 1, 0, 0, 0, 1358, 1359, 1, 0, 0, 0, 1359, 1361, 7, 29, 0, 0, 1360, 1357, 

+

390 1, 0, 0, 0, 1361, 1364, 1, 0, 0, 0, 1362, 1360, 1, 0, 0, 0, 1362, 1363, 1, 0, 0, 0, 1363, 350, 1, 0, 0, 0, 1364, 

+

391 1362, 1, 0, 0, 0, 1365, 1367, 5, 92, 0, 0, 1366, 1368, 9, 0, 0, 0, 1367, 1366, 1, 0, 0, 0, 1368, 1369, 1, 0, 0, 0, 

+

392 1369, 1370, 1, 0, 0, 0, 1369, 1367, 1, 0, 0, 0, 1370, 1371, 1, 0, 0, 0, 1371, 1372, 5, 92, 0, 0, 1372, 352, 1, 0, 0, 

+

393 0, 1373, 1376, 3, 349, 174, 0, 1374, 1376, 3, 351, 175, 0, 1375, 1373, 1, 0, 0, 0, 1375, 1374, 1, 0, 0, 0, 1376, 

+

394 354, 1, 0, 0, 0, 36, 0, 358, 365, 375, 386, 398, 1238, 1244, 1246, 1251, 1259, 1266, 1270, 1275, 1278, 1281, 1286, 

+

395 1288, 1293, 1296, 1301, 1303, 1308, 1313, 1315, 1320, 1323, 1328, 1330, 1338, 1348, 1350, 1357, 1362, 1369, 1375, 3, 

+

396 0, 2, 0, 0, 3, 0, 0, 4, 0 

+

397 ) 

+

398 

+

399 

+

400class VHDLLexer(Lexer): 

+

401 atn = ATNDeserializer().deserialize(serializedATN()) 

+

402 

+

403 decisionsToDFA = [DFA(ds, i) for i, ds in enumerate(atn.decisionToState)] 

+

404 

+

405 WHITESPACE_CHANNEL = 2 

+

406 COMMENT_CHANNEL = 3 

+

407 TOOLDIRECTIVE_CHANNEL = 4 

+

408 

+

409 LINEBREAK = 1 

+

410 WHITESPACE = 2 

+

411 COMMENT_LINE = 3 

+

412 COMMENT_BLOCK = 4 

+

413 TOOLDIRECTIVE = 5 

+

414 OP_ABS = 6 

+

415 KW_ACCESS = 7 

+

416 KW_AFTER = 8 

+

417 KW_ALIAS = 9 

+

418 KW_ALL = 10 

+

419 OP_AND = 11 

+

420 KW_ARCHITECTURE = 12 

+

421 KW_ARRAY = 13 

+

422 KW_ASSERT = 14 

+

423 KW_ATTRIBUTE = 15 

+

424 KW_PSL_ASSUME = 16 

+

425 KW_BEGIN = 17 

+

426 KW_BLOCK = 18 

+

427 KW_BODY = 19 

+

428 KW_BUFFER = 20 

+

429 KW_BUS = 21 

+

430 KW_CASE = 22 

+

431 KW_COMPONENT = 23 

+

432 KW_CONFIGURATION = 24 

+

433 KW_CONSTANT = 25 

+

434 KW_CONTEXT = 26 

+

435 KW_PSL_COVER = 27 

+

436 KW_DEFAULT = 28 

+

437 KW_DISCONNECT = 29 

+

438 KW_DOWNTO = 30 

+

439 KW_ELSE = 31 

+

440 KW_ELSIF = 32 

+

441 KW_END = 33 

+

442 KW_ENTITY = 34 

+

443 KW_EXIT = 35 

+

444 KW_FILE = 36 

+

445 KW_FOR = 37 

+

446 KW_FORCE = 38 

+

447 KW_FUNCTION = 39 

+

448 KW_PSL_FAIRNESS = 40 

+

449 KW_GENERATE = 41 

+

450 KW_GENERIC = 42 

+

451 KW_GUARDED = 43 

+

452 KW_GROUP = 44 

+

453 KW_IF = 45 

+

454 KW_IMPURE = 46 

+

455 KW_IN = 47 

+

456 KW_INERTIAL = 48 

+

457 KW_INOUT = 49 

+

458 KW_IS = 50 

+

459 KW_LABEL = 51 

+

460 KW_LIBRARY = 52 

+

461 KW_LINKAGE = 53 

+

462 KW_LOOP = 54 

+

463 KW_PSL_LITERAL = 55 

+

464 KW_MAP = 56 

+

465 OP_MOD = 57 

+

466 OP_NAND = 58 

+

467 KW_NEW = 59 

+

468 KW_NEXT = 60 

+

469 OP_NOR = 61 

+

470 OP_NOT = 62 

+

471 KW_NULL = 63 

+

472 KW_OF = 64 

+

473 KW_ON = 65 

+

474 KW_OPEN = 66 

+

475 OP_OR = 67 

+

476 KW_OTHERS = 68 

+

477 KW_OUT = 69 

+

478 KW_PACKAGE = 70 

+

479 KW_PARAMETER = 71 

+

480 KW_PORT = 72 

+

481 KW_POSTPONED = 73 

+

482 KW_PRIVATE = 74 

+

483 KW_PROCEDURE = 75 

+

484 KW_PROCESS = 76 

+

485 KW_PROTECTED = 77 

+

486 KW_PURE = 78 

+

487 KW_RANGE = 79 

+

488 KW_RECORD = 80 

+

489 KW_REGISTER = 81 

+

490 KW_REJECT = 82 

+

491 KW_RELEASE = 83 

+

492 OP_REM = 84 

+

493 KW_REPORT = 85 

+

494 KW_RETURN = 86 

+

495 OP_ROL = 87 

+

496 OP_ROR = 88 

+

497 KW_PSL_RESTRICT = 89 

+

498 KW_SELECT = 90 

+

499 KW_SEVERITY = 91 

+

500 KW_SHARED = 92 

+

501 KW_SIGNAL = 93 

+

502 OP_SLA = 94 

+

503 OP_SLL = 95 

+

504 OP_SRA = 96 

+

505 OP_SRL = 97 

+

506 KW_SUBTYPE = 98 

+

507 KW_PSL_STRONG = 99 

+

508 KW_PSL_SEQUENCE = 100 

+

509 KW_THEN = 101 

+

510 KW_TO = 102 

+

511 KW_TRANSPORT = 103 

+

512 KW_TYPE = 104 

+

513 KW_UNAFFECTED = 105 

+

514 KW_UNITS = 106 

+

515 KW_UNTIL = 107 

+

516 KW_USE = 108 

+

517 KW_VARIABLE = 109 

+

518 KW_VIEW = 110 

+

519 KW_PSL_VPKG = 111 

+

520 KW_PSL_VMODE = 112 

+

521 KW_PSL_VPROP = 113 

+

522 KW_PSL_VUNIT = 114 

+

523 KW_WAIT = 115 

+

524 KW_WITH = 116 

+

525 KW_WHEN = 117 

+

526 KW_WHILE = 118 

+

527 OP_XNOR = 119 

+

528 OP_XOR = 120 

+

529 OP_EQ = 121 

+

530 OP_NE = 122 

+

531 OP_LT = 123 

+

532 OP_GT = 124 

+

533 OP_GE = 125 

+

534 OP_IEQ = 126 

+

535 OP_INE = 127 

+

536 OP_ILT = 128 

+

537 OP_ILE = 129 

+

538 OP_IGT = 130 

+

539 OP_IGE = 131 

+

540 OP_PLUS = 132 

+

541 OP_MINUS = 133 

+

542 OP_MUL = 134 

+

543 OP_DIV = 135 

+

544 OP_POW = 136 

+

545 OP_CONCAT = 137 

+

546 OP_CONDITION = 138 

+

547 TOK_RARROW = 139 

+

548 TOK_SIG_ASSIGN = 140 

+

549 TOK_VAR_ASSIGN = 141 

+

550 TOK_BOX = 142 

+

551 TOK_LP = 143 

+

552 TOK_RP = 144 

+

553 TOK_LB = 145 

+

554 TOK_RB = 146 

+

555 TOK_DLA = 147 

+

556 TOK_DRA = 148 

+

557 TOK_COLON = 149 

+

558 TOK_SEMICOL = 150 

+

559 TOK_COMMA = 151 

+

560 TOK_BAR = 152 

+

561 TOK_DOT = 153 

+

562 TOK_QUESTION = 154 

+

563 TOK_AT = 155 

+

564 TOK_CIRCUMFLEX = 156 

+

565 TOK_TICK = 157 

+

566 TOK_DQUOTE = 158 

+

567 LIT_ABSTRACT = 159 

+

568 LIT_BIT_STRING = 160 

+

569 LIT_CHARACTER = 161 

+

570 LIT_STRING = 162 

+

571 LIT_IDENTIFIER = 163 

+

572 

+

573 channelNames = ("DEFAULT_TOKEN_CHANNEL", "HIDDEN", "WHITESPACE_CHANNEL", "COMMENT_CHANNEL", "TOOLDIRECTIVE_CHANNEL") 

+

574 

+

575 modeNames = ("DEFAULT_MODE",) 

+

576 

+

577 literalNames = ( 

+

578 "<INVALID>", "'abs'", "'access'", "'after'", "'alias'", "'all'", "'and'", "'architecture'", "'array'", "'assert'", 

+

579 "'attribute'", "'assume'", "'begin'", "'block'", "'body'", "'buffer'", "'bus'", "'case'", "'component'", 

+

580 "'configuration'", "'constant'", "'context'", "'cover'", "'default'", "'disconnect'", "'downto'", "'else'", 

+

581 "'elsif'", "'end'", "'entity'", "'exit'", "'file'", "'for'", "'force'", "'function'", "'fairness'", "'generate'", 

+

582 "'generic'", "'guarded'", "'group'", "'if'", "'impure'", "'in'", "'inertial'", "'inout'", "'is'", "'label'", 

+

583 "'library'", "'linkage'", "'loop'", "'literal'", "'map'", "'mod'", "'nand'", "'new'", "'next'", "'nor'", "'not'", 

+

584 "'null'", "'of'", "'on'", "'open'", "'or'", "'others'", "'out'", "'package'", "'parameter'", "'port'", 

+

585 "'postponed'", "'private'", "'procedure'", "'process'", "'protected'", "'pure'", "'range'", "'record'", 

+

586 "'register'", "'reject'", "'release'", "'rem'", "'report'", "'return'", "'rol'", "'ror'", "'restrict'", "'select'", 

+

587 "'severity'", "'shared'", "'signal'", "'sla'", "'sll'", "'sra'", "'srl'", "'subtype'", "'strong'", "'sequence'", 

+

588 "'then'", "'to'", "'transport'", "'type'", "'unaffected'", "'units'", "'until'", "'use'", "'variable'", "'view'", 

+

589 "'vpkg'", "'vmode'", "'vprop'", "'vunit'", "'wait'", "'with'", "'when'", "'while'", "'xnor'", "'xor'", "'='", 

+

590 "'/='", "'<'", "'>'", "'>='", "'?='", "'?/='", "'?<'", "'?<='", "'?>'", "'?>='", "'+'", "'-'", "'*'", "'/'", "'**'", 

+

591 "'&'", "'??'", "'=>'", "'<='", "':='", "'<>'", "'('", "')'", "'['", "']'", "'<<'", "'>>'", "':'", "';'", "','", 

+

592 "'|'", "'.'", "'?'", "'@'", "'^'", "'''", "'\"'" 

+

593 ) 

+

594 

+

595 symbolicNames = ( 

+

596 "<INVALID>", "LINEBREAK", "WHITESPACE", "COMMENT_LINE", "COMMENT_BLOCK", "TOOLDIRECTIVE", "OP_ABS", "KW_ACCESS", 

+

597 "KW_AFTER", "KW_ALIAS", "KW_ALL", "OP_AND", "KW_ARCHITECTURE", "KW_ARRAY", "KW_ASSERT", "KW_ATTRIBUTE", 

+

598 "KW_PSL_ASSUME", "KW_BEGIN", "KW_BLOCK", "KW_BODY", "KW_BUFFER", "KW_BUS", "KW_CASE", "KW_COMPONENT", 

+

599 "KW_CONFIGURATION", "KW_CONSTANT", "KW_CONTEXT", "KW_PSL_COVER", "KW_DEFAULT", "KW_DISCONNECT", "KW_DOWNTO", 

+

600 "KW_ELSE", "KW_ELSIF", "KW_END", "KW_ENTITY", "KW_EXIT", "KW_FILE", "KW_FOR", "KW_FORCE", "KW_FUNCTION", 

+

601 "KW_PSL_FAIRNESS", "KW_GENERATE", "KW_GENERIC", "KW_GUARDED", "KW_GROUP", "KW_IF", "KW_IMPURE", "KW_IN", 

+

602 "KW_INERTIAL", "KW_INOUT", "KW_IS", "KW_LABEL", "KW_LIBRARY", "KW_LINKAGE", "KW_LOOP", "KW_PSL_LITERAL", "KW_MAP", 

+

603 "OP_MOD", "OP_NAND", "KW_NEW", "KW_NEXT", "OP_NOR", "OP_NOT", "KW_NULL", "KW_OF", "KW_ON", "KW_OPEN", "OP_OR", 

+

604 "KW_OTHERS", "KW_OUT", "KW_PACKAGE", "KW_PARAMETER", "KW_PORT", "KW_POSTPONED", "KW_PRIVATE", "KW_PROCEDURE", 

+

605 "KW_PROCESS", "KW_PROTECTED", "KW_PURE", "KW_RANGE", "KW_RECORD", "KW_REGISTER", "KW_REJECT", "KW_RELEASE", 

+

606 "OP_REM", "KW_REPORT", "KW_RETURN", "OP_ROL", "OP_ROR", "KW_PSL_RESTRICT", "KW_SELECT", "KW_SEVERITY", "KW_SHARED", 

+

607 "KW_SIGNAL", "OP_SLA", "OP_SLL", "OP_SRA", "OP_SRL", "KW_SUBTYPE", "KW_PSL_STRONG", "KW_PSL_SEQUENCE", "KW_THEN", 

+

608 "KW_TO", "KW_TRANSPORT", "KW_TYPE", "KW_UNAFFECTED", "KW_UNITS", "KW_UNTIL", "KW_USE", "KW_VARIABLE", "KW_VIEW", 

+

609 "KW_PSL_VPKG", "KW_PSL_VMODE", "KW_PSL_VPROP", "KW_PSL_VUNIT", "KW_WAIT", "KW_WITH", "KW_WHEN", "KW_WHILE", 

+

610 "OP_XNOR", "OP_XOR", "OP_EQ", "OP_NE", "OP_LT", "OP_GT", "OP_GE", "OP_IEQ", "OP_INE", "OP_ILT", "OP_ILE", "OP_IGT", 

+

611 "OP_IGE", "OP_PLUS", "OP_MINUS", "OP_MUL", "OP_DIV", "OP_POW", "OP_CONCAT", "OP_CONDITION", "TOK_RARROW", 

+

612 "TOK_SIG_ASSIGN", "TOK_VAR_ASSIGN", "TOK_BOX", "TOK_LP", "TOK_RP", "TOK_LB", "TOK_RB", "TOK_DLA", "TOK_DRA", 

+

613 "TOK_COLON", "TOK_SEMICOL", "TOK_COMMA", "TOK_BAR", "TOK_DOT", "TOK_QUESTION", "TOK_AT", "TOK_CIRCUMFLEX", 

+

614 "TOK_TICK", "TOK_DQUOTE", "LIT_ABSTRACT", "LIT_BIT_STRING", "LIT_CHARACTER", "LIT_STRING", "LIT_IDENTIFIER" 

+

615 ) 

+

616 

+

617 ruleNames = ( 

+

618 "LINEBREAK", "WHITESPACE", "COMMENT_LINE", "COMMENT_BLOCK", "TOOLDIRECTIVE", "OP_ABS", "KW_ACCESS", "KW_AFTER", 

+

619 "KW_ALIAS", "KW_ALL", "OP_AND", "KW_ARCHITECTURE", "KW_ARRAY", "KW_ASSERT", "KW_ATTRIBUTE", "KW_PSL_ASSUME", 

+

620 "KW_BEGIN", "KW_BLOCK", "KW_BODY", "KW_BUFFER", "KW_BUS", "KW_CASE", "KW_COMPONENT", "KW_CONFIGURATION", 

+

621 "KW_CONSTANT", "KW_CONTEXT", "KW_PSL_COVER", "KW_DEFAULT", "KW_DISCONNECT", "KW_DOWNTO", "KW_ELSE", "KW_ELSIF", 

+

622 "KW_END", "KW_ENTITY", "KW_EXIT", "KW_FILE", "KW_FOR", "KW_FORCE", "KW_FUNCTION", "KW_PSL_FAIRNESS", "KW_GENERATE", 

+

623 "KW_GENERIC", "KW_GUARDED", "KW_GROUP", "KW_IF", "KW_IMPURE", "KW_IN", "KW_INERTIAL", "KW_INOUT", "KW_IS", 

+

624 "KW_LABEL", "KW_LIBRARY", "KW_LINKAGE", "KW_LOOP", "KW_PSL_LITERAL", "KW_MAP", "OP_MOD", "OP_NAND", "KW_NEW", 

+

625 "KW_NEXT", "OP_NOR", "OP_NOT", "KW_NULL", "KW_OF", "KW_ON", "KW_OPEN", "OP_OR", "KW_OTHERS", "KW_OUT", "KW_PACKAGE", 

+

626 "KW_PARAMETER", "KW_PORT", "KW_POSTPONED", "KW_PRIVATE", "KW_PROCEDURE", "KW_PROCESS", "KW_PROTECTED", "KW_PURE", 

+

627 "KW_RANGE", "KW_RECORD", "KW_REGISTER", "KW_REJECT", "KW_RELEASE", "OP_REM", "KW_REPORT", "KW_RETURN", "OP_ROL", 

+

628 "OP_ROR", "KW_PSL_RESTRICT", "KW_SELECT", "KW_SEVERITY", "KW_SHARED", "KW_SIGNAL", "OP_SLA", "OP_SLL", "OP_SRA", 

+

629 "OP_SRL", "KW_SUBTYPE", "KW_PSL_STRONG", "KW_PSL_SEQUENCE", "KW_THEN", "KW_TO", "KW_TRANSPORT", "KW_TYPE", 

+

630 "KW_UNAFFECTED", "KW_UNITS", "KW_UNTIL", "KW_USE", "KW_VARIABLE", "KW_VIEW", "KW_PSL_VPKG", "KW_PSL_VMODE", 

+

631 "KW_PSL_VPROP", "KW_PSL_VUNIT", "KW_WAIT", "KW_WITH", "KW_WHEN", "KW_WHILE", "OP_XNOR", "OP_XOR", "OP_EQ", "OP_NE", 

+

632 "OP_LT", "OP_GT", "OP_GE", "OP_IEQ", "OP_INE", "OP_ILT", "OP_ILE", "OP_IGT", "OP_IGE", "OP_PLUS", "OP_MINUS", 

+

633 "OP_MUL", "OP_DIV", "OP_POW", "OP_CONCAT", "OP_CONDITION", "TOK_RARROW", "TOK_SIG_ASSIGN", "TOK_VAR_ASSIGN", 

+

634 "TOK_BOX", "TOK_LP", "TOK_RP", "TOK_LB", "TOK_RB", "TOK_DLA", "TOK_DRA", "TOK_COLON", "TOK_SEMICOL", "TOK_COMMA", 

+

635 "TOK_BAR", "TOK_DOT", "TOK_QUESTION", "TOK_AT", "TOK_CIRCUMFLEX", "TOK_TICK", "TOK_DQUOTE", "Letter", "Digit", 

+

636 "ExtendedDigit", "Integer", "BasedInteger", "Exponent", "Real", "BaseLiteral", "LIT_ABSTRACT", "BinaryBitString", 

+

637 "OctalBitString", "DecimalBitString", "HexBitString", "LIT_BIT_STRING", "LIT_CHARACTER", "LIT_STRING", 

+

638 "BasicIdentifier", "ExtendedIdentifier", "LIT_IDENTIFIER" 

+

639 ) 

+

640 

+

641 grammarFileName = "VHDLLexer.g4" 

+

642 

+

643 def __init__(self, input=None, output: TextIO = stdout): 

+

644 super().__init__(input, output) 

+

645 self.checkVersion("4.12.0") 

+

646 self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache()) 

+

647 self._actions = None 

+

648 self._predicates = None 

+
+ + + diff --git a/coverage/d_2b67a29648fff107_VHDLParserVisitor_py.html b/coverage/d_2b67a29648fff107_VHDLParserVisitor_py.html new file mode 100644 index 000000000..728fd5be8 --- /dev/null +++ b/coverage/d_2b67a29648fff107_VHDLParserVisitor_py.html @@ -0,0 +1,1182 @@ + + + + + Coverage for pyVHDLParser/ANTLR4/VHDLParserVisitor.py: 0% + + + + + +
+
+

+ Coverage for pyVHDLParser/ANTLR4/VHDLParserVisitor.py: + 0% +

+ +

+ 538 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# Generated from .\VHDLParser.g4 by ANTLR 4.12.0 

+

2from antlr4 import ParseTreeVisitor 

+

3 

+

4from .VHDLParser import VHDLParser 

+

5 

+

6# This class defines a complete generic visitor for a parse tree produced by VHDLParser. 

+

7 

+

8class VHDLParserVisitor(ParseTreeVisitor): 

+

9 # Visit a parse tree produced by VHDLParser#rule_AbsolutePathname. 

+

10 def visitRule_AbsolutePathname(self, ctx: VHDLParser.Rule_AbsolutePathnameContext): 

+

11 return self.visitChildren(ctx) 

+

12 

+

13 # Visit a parse tree produced by VHDLParser#rule_AccessIncompleteTypeDefinition. 

+

14 def visitRule_AccessIncompleteTypeDefinition(self, ctx: VHDLParser.Rule_AccessIncompleteTypeDefinitionContext): 

+

15 return self.visitChildren(ctx) 

+

16 

+

17 # Visit a parse tree produced by VHDLParser#rule_AccessTypeDefinition. 

+

18 def visitRule_AccessTypeDefinition(self, ctx: VHDLParser.Rule_AccessTypeDefinitionContext): 

+

19 return self.visitChildren(ctx) 

+

20 

+

21 # Visit a parse tree produced by VHDLParser#rule_ActualDesignator. 

+

22 def visitRule_ActualDesignator(self, ctx: VHDLParser.Rule_ActualDesignatorContext): 

+

23 return self.visitChildren(ctx) 

+

24 

+

25 # Visit a parse tree produced by VHDLParser#rule_ActualPart. 

+

26 def visitRule_ActualPart(self, ctx: VHDLParser.Rule_ActualPartContext): 

+

27 return self.visitChildren(ctx) 

+

28 

+

29 # Visit a parse tree produced by VHDLParser#rule_Aggregate. 

+

30 def visitRule_Aggregate(self, ctx: VHDLParser.Rule_AggregateContext): 

+

31 return self.visitChildren(ctx) 

+

32 

+

33 # Visit a parse tree produced by VHDLParser#rule_AliasDeclaration. 

+

34 def visitRule_AliasDeclaration(self, ctx: VHDLParser.Rule_AliasDeclarationContext): 

+

35 return self.visitChildren(ctx) 

+

36 

+

37 # Visit a parse tree produced by VHDLParser#rule_AliasDesignator. 

+

38 def visitRule_AliasDesignator(self, ctx: VHDLParser.Rule_AliasDesignatorContext): 

+

39 return self.visitChildren(ctx) 

+

40 

+

41 # Visit a parse tree produced by VHDLParser#rule_AliasIndication. 

+

42 def visitRule_AliasIndication(self, ctx: VHDLParser.Rule_AliasIndicationContext): 

+

43 return self.visitChildren(ctx) 

+

44 

+

45 # Visit a parse tree produced by VHDLParser#rule_Allocator. 

+

46 def visitRule_Allocator(self, ctx: VHDLParser.Rule_AllocatorContext): 

+

47 return self.visitChildren(ctx) 

+

48 

+

49 # Visit a parse tree produced by VHDLParser#rule_Architecture. 

+

50 def visitRule_Architecture(self, ctx: VHDLParser.Rule_ArchitectureContext): 

+

51 return self.visitChildren(ctx) 

+

52 

+

53 # Visit a parse tree produced by VHDLParser#rule_ArchitectureStatement. 

+

54 def visitRule_ArchitectureStatement(self, ctx: VHDLParser.Rule_ArchitectureStatementContext): 

+

55 return self.visitChildren(ctx) 

+

56 

+

57 # Visit a parse tree produced by VHDLParser#rule_ArrayConstraint. 

+

58 def visitRule_ArrayConstraint(self, ctx: VHDLParser.Rule_ArrayConstraintContext): 

+

59 return self.visitChildren(ctx) 

+

60 

+

61 # Visit a parse tree produced by VHDLParser#rule_ArrayIncompleteTypeDefinition. 

+

62 def visitRule_ArrayIncompleteTypeDefinition(self, ctx: VHDLParser.Rule_ArrayIncompleteTypeDefinitionContext): 

+

63 return self.visitChildren(ctx) 

+

64 

+

65 # Visit a parse tree produced by VHDLParser#rule_ArrayIndexIncompleteType. 

+

66 def visitRule_ArrayIndexIncompleteType(self, ctx: VHDLParser.Rule_ArrayIndexIncompleteTypeContext): 

+

67 return self.visitChildren(ctx) 

+

68 

+

69 # Visit a parse tree produced by VHDLParser#rule_ArrayIndexIncompleteTypeList. 

+

70 def visitRule_ArrayIndexIncompleteTypeList(self, ctx: VHDLParser.Rule_ArrayIndexIncompleteTypeListContext): 

+

71 return self.visitChildren(ctx) 

+

72 

+

73 # Visit a parse tree produced by VHDLParser#rule_ArrayModeViewIndication. 

+

74 def visitRule_ArrayModeViewIndication(self, ctx: VHDLParser.Rule_ArrayModeViewIndicationContext): 

+

75 return self.visitChildren(ctx) 

+

76 

+

77 # Visit a parse tree produced by VHDLParser#rule_Assertion. 

+

78 def visitRule_Assertion(self, ctx: VHDLParser.Rule_AssertionContext): 

+

79 return self.visitChildren(ctx) 

+

80 

+

81 # Visit a parse tree produced by VHDLParser#rule_AssertionStatement. 

+

82 def visitRule_AssertionStatement(self, ctx: VHDLParser.Rule_AssertionStatementContext): 

+

83 return self.visitChildren(ctx) 

+

84 

+

85 # Visit a parse tree produced by VHDLParser#rule_AssociationElement. 

+

86 def visitRule_AssociationElement(self, ctx: VHDLParser.Rule_AssociationElementContext): 

+

87 return self.visitChildren(ctx) 

+

88 

+

89 # Visit a parse tree produced by VHDLParser#rule_AssociationList. 

+

90 def visitRule_AssociationList(self, ctx: VHDLParser.Rule_AssociationListContext): 

+

91 return self.visitChildren(ctx) 

+

92 

+

93 # Visit a parse tree produced by VHDLParser#rule_AttributeDeclaration. 

+

94 def visitRule_AttributeDeclaration(self, ctx: VHDLParser.Rule_AttributeDeclarationContext): 

+

95 return self.visitChildren(ctx) 

+

96 

+

97 # Visit a parse tree produced by VHDLParser#rule_AttributeDesignator. 

+

98 def visitRule_AttributeDesignator(self, ctx: VHDLParser.Rule_AttributeDesignatorContext): 

+

99 return self.visitChildren(ctx) 

+

100 

+

101 # Visit a parse tree produced by VHDLParser#rule_AttributeSpecification. 

+

102 def visitRule_AttributeSpecification(self, ctx: VHDLParser.Rule_AttributeSpecificationContext): 

+

103 return self.visitChildren(ctx) 

+

104 

+

105 # Visit a parse tree produced by VHDLParser#rule_BindingIndication. 

+

106 def visitRule_BindingIndication(self, ctx: VHDLParser.Rule_BindingIndicationContext): 

+

107 return self.visitChildren(ctx) 

+

108 

+

109 # Visit a parse tree produced by VHDLParser#rule_BlockConfiguration. 

+

110 def visitRule_BlockConfiguration(self, ctx: VHDLParser.Rule_BlockConfigurationContext): 

+

111 return self.visitChildren(ctx) 

+

112 

+

113 # Visit a parse tree produced by VHDLParser#rule_BlockDeclarativeItem. 

+

114 def visitRule_BlockDeclarativeItem(self, ctx: VHDLParser.Rule_BlockDeclarativeItemContext): 

+

115 return self.visitChildren(ctx) 

+

116 

+

117 # Visit a parse tree produced by VHDLParser#rule_BlockSpecification. 

+

118 def visitRule_BlockSpecification(self, ctx: VHDLParser.Rule_BlockSpecificationContext): 

+

119 return self.visitChildren(ctx) 

+

120 

+

121 # Visit a parse tree produced by VHDLParser#rule_BlockStatement. 

+

122 def visitRule_BlockStatement(self, ctx: VHDLParser.Rule_BlockStatementContext): 

+

123 return self.visitChildren(ctx) 

+

124 

+

125 # Visit a parse tree produced by VHDLParser#rule_CaseGenerateAlternative. 

+

126 def visitRule_CaseGenerateAlternative(self, ctx: VHDLParser.Rule_CaseGenerateAlternativeContext): 

+

127 return self.visitChildren(ctx) 

+

128 

+

129 # Visit a parse tree produced by VHDLParser#rule_CaseGenerateStatement. 

+

130 def visitRule_CaseGenerateStatement(self, ctx: VHDLParser.Rule_CaseGenerateStatementContext): 

+

131 return self.visitChildren(ctx) 

+

132 

+

133 # Visit a parse tree produced by VHDLParser#rule_CaseStatement. 

+

134 def visitRule_CaseStatement(self, ctx: VHDLParser.Rule_CaseStatementContext): 

+

135 return self.visitChildren(ctx) 

+

136 

+

137 # Visit a parse tree produced by VHDLParser#rule_CaseStatementAlternative. 

+

138 def visitRule_CaseStatementAlternative(self, ctx: VHDLParser.Rule_CaseStatementAlternativeContext): 

+

139 return self.visitChildren(ctx) 

+

140 

+

141 # Visit a parse tree produced by VHDLParser#rule_Choice. 

+

142 def visitRule_Choice(self, ctx: VHDLParser.Rule_ChoiceContext): 

+

143 return self.visitChildren(ctx) 

+

144 

+

145 # Visit a parse tree produced by VHDLParser#rule_Choices. 

+

146 def visitRule_Choices(self, ctx: VHDLParser.Rule_ChoicesContext): 

+

147 return self.visitChildren(ctx) 

+

148 

+

149 # Visit a parse tree produced by VHDLParser#rule_ComponentConfiguration. 

+

150 def visitRule_ComponentConfiguration(self, ctx: VHDLParser.Rule_ComponentConfigurationContext): 

+

151 return self.visitChildren(ctx) 

+

152 

+

153 # Visit a parse tree produced by VHDLParser#rule_ComponentDeclaration. 

+

154 def visitRule_ComponentDeclaration(self, ctx: VHDLParser.Rule_ComponentDeclarationContext): 

+

155 return self.visitChildren(ctx) 

+

156 

+

157 # Visit a parse tree produced by VHDLParser#rule_ComponentInstantiationStatement. 

+

158 def visitRule_ComponentInstantiationStatement(self, ctx: VHDLParser.Rule_ComponentInstantiationStatementContext): 

+

159 return self.visitChildren(ctx) 

+

160 

+

161 # Visit a parse tree produced by VHDLParser#rule_ComponentSpecification. 

+

162 def visitRule_ComponentSpecification(self, ctx: VHDLParser.Rule_ComponentSpecificationContext): 

+

163 return self.visitChildren(ctx) 

+

164 

+

165 # Visit a parse tree produced by VHDLParser#rule_CompositeTypeDefinition. 

+

166 def visitRule_CompositeTypeDefinition(self, ctx: VHDLParser.Rule_CompositeTypeDefinitionContext): 

+

167 return self.visitChildren(ctx) 

+

168 

+

169 # Visit a parse tree produced by VHDLParser#rule_CompoundConfigurationSpecification. 

+

170 def visitRule_CompoundConfigurationSpecification(self, 

+

171 ctx: VHDLParser.Rule_CompoundConfigurationSpecificationContext): 

+

172 return self.visitChildren(ctx) 

+

173 

+

174 # Visit a parse tree produced by VHDLParser#rule_ConcurrentAssertionStatement. 

+

175 def visitRule_ConcurrentAssertionStatement(self, ctx: VHDLParser.Rule_ConcurrentAssertionStatementContext): 

+

176 return self.visitChildren(ctx) 

+

177 

+

178 # Visit a parse tree produced by VHDLParser#rule_ConcurrentConditionalSignalAssignment. 

+

179 def visitRule_ConcurrentConditionalSignalAssignment(self, 

+

180 ctx: VHDLParser.Rule_ConcurrentConditionalSignalAssignmentContext): 

+

181 return self.visitChildren(ctx) 

+

182 

+

183 # Visit a parse tree produced by VHDLParser#rule_ConcurrentProcedureCallStatement. 

+

184 def visitRule_ConcurrentProcedureCallStatement(self, ctx: VHDLParser.Rule_ConcurrentProcedureCallStatementContext): 

+

185 return self.visitChildren(ctx) 

+

186 

+

187 # Visit a parse tree produced by VHDLParser#rule_ConcurrentSelectedSignalAssignment. 

+

188 def visitRule_ConcurrentSelectedSignalAssignment(self, 

+

189 ctx: VHDLParser.Rule_ConcurrentSelectedSignalAssignmentContext): 

+

190 return self.visitChildren(ctx) 

+

191 

+

192 # Visit a parse tree produced by VHDLParser#rule_ConcurrentSignalAssignmentStatement. 

+

193 def visitRule_ConcurrentSignalAssignmentStatement(self, 

+

194 ctx: VHDLParser.Rule_ConcurrentSignalAssignmentStatementContext): 

+

195 return self.visitChildren(ctx) 

+

196 

+

197 # Visit a parse tree produced by VHDLParser#rule_ConcurrentSimpleSignalAssignment. 

+

198 def visitRule_ConcurrentSimpleSignalAssignment(self, ctx: VHDLParser.Rule_ConcurrentSimpleSignalAssignmentContext): 

+

199 return self.visitChildren(ctx) 

+

200 

+

201 # Visit a parse tree produced by VHDLParser#rule_ConcurrentStatement. 

+

202 def visitRule_ConcurrentStatement(self, ctx: VHDLParser.Rule_ConcurrentStatementContext): 

+

203 return self.visitChildren(ctx) 

+

204 

+

205 # Visit a parse tree produced by VHDLParser#rule_ConditionClause. 

+

206 def visitRule_ConditionClause(self, ctx: VHDLParser.Rule_ConditionClauseContext): 

+

207 return self.visitChildren(ctx) 

+

208 

+

209 # Visit a parse tree produced by VHDLParser#rule_ConditionalExpression. 

+

210 def visitRule_ConditionalExpression(self, ctx: VHDLParser.Rule_ConditionalExpressionContext): 

+

211 return self.visitChildren(ctx) 

+

212 

+

213 # Visit a parse tree produced by VHDLParser#rule_ConditionalOrUnaffectedExpression. 

+

214 def visitRule_ConditionalOrUnaffectedExpression(self, ctx: VHDLParser.Rule_ConditionalOrUnaffectedExpressionContext): 

+

215 return self.visitChildren(ctx) 

+

216 

+

217 # Visit a parse tree produced by VHDLParser#rule_ConditionalSignalAssignment. 

+

218 def visitRule_ConditionalSignalAssignment(self, ctx: VHDLParser.Rule_ConditionalSignalAssignmentContext): 

+

219 return self.visitChildren(ctx) 

+

220 

+

221 # Visit a parse tree produced by VHDLParser#rule_ConditionalWaveforms. 

+

222 def visitRule_ConditionalWaveforms(self, ctx: VHDLParser.Rule_ConditionalWaveformsContext): 

+

223 return self.visitChildren(ctx) 

+

224 

+

225 # Visit a parse tree produced by VHDLParser#rule_ConfigurationDeclaration. 

+

226 def visitRule_ConfigurationDeclaration(self, ctx: VHDLParser.Rule_ConfigurationDeclarationContext): 

+

227 return self.visitChildren(ctx) 

+

228 

+

229 # Visit a parse tree produced by VHDLParser#rule_ConfigurationDeclarativeItem. 

+

230 def visitRule_ConfigurationDeclarativeItem(self, ctx: VHDLParser.Rule_ConfigurationDeclarativeItemContext): 

+

231 return self.visitChildren(ctx) 

+

232 

+

233 # Visit a parse tree produced by VHDLParser#rule_ConfigurationItem. 

+

234 def visitRule_ConfigurationItem(self, ctx: VHDLParser.Rule_ConfigurationItemContext): 

+

235 return self.visitChildren(ctx) 

+

236 

+

237 # Visit a parse tree produced by VHDLParser#rule_ConfigurationSpecification. 

+

238 def visitRule_ConfigurationSpecification(self, ctx: VHDLParser.Rule_ConfigurationSpecificationContext): 

+

239 return self.visitChildren(ctx) 

+

240 

+

241 # Visit a parse tree produced by VHDLParser#rule_ConstantDeclaration. 

+

242 def visitRule_ConstantDeclaration(self, ctx: VHDLParser.Rule_ConstantDeclarationContext): 

+

243 return self.visitChildren(ctx) 

+

244 

+

245 # Visit a parse tree produced by VHDLParser#rule_ConstrainedArrayDefinition. 

+

246 def visitRule_ConstrainedArrayDefinition(self, ctx: VHDLParser.Rule_ConstrainedArrayDefinitionContext): 

+

247 return self.visitChildren(ctx) 

+

248 

+

249 # Visit a parse tree produced by VHDLParser#rule_Constraint. 

+

250 def visitRule_Constraint(self, ctx: VHDLParser.Rule_ConstraintContext): 

+

251 return self.visitChildren(ctx) 

+

252 

+

253 # Visit a parse tree produced by VHDLParser#rule_ContextDeclaration. 

+

254 def visitRule_ContextDeclaration(self, ctx: VHDLParser.Rule_ContextDeclarationContext): 

+

255 return self.visitChildren(ctx) 

+

256 

+

257 # Visit a parse tree produced by VHDLParser#rule_ContextItem. 

+

258 def visitRule_ContextItem(self, ctx: VHDLParser.Rule_ContextItemContext): 

+

259 return self.visitChildren(ctx) 

+

260 

+

261 # Visit a parse tree produced by VHDLParser#rule_ContextReference. 

+

262 def visitRule_ContextReference(self, ctx: VHDLParser.Rule_ContextReferenceContext): 

+

263 return self.visitChildren(ctx) 

+

264 

+

265 # Visit a parse tree produced by VHDLParser#rule_DelayMechanism. 

+

266 def visitRule_DelayMechanism(self, ctx: VHDLParser.Rule_DelayMechanismContext): 

+

267 return self.visitChildren(ctx) 

+

268 

+

269 # Visit a parse tree produced by VHDLParser#rule_DesignFile. 

+

270 def visitRule_DesignFile(self, ctx: VHDLParser.Rule_DesignFileContext): 

+

271 return self.visitChildren(ctx) 

+

272 

+

273 # Visit a parse tree produced by VHDLParser#rule_DesignUnit. 

+

274 def visitRule_DesignUnit(self, ctx: VHDLParser.Rule_DesignUnitContext): 

+

275 return self.visitChildren(ctx) 

+

276 

+

277 # Visit a parse tree produced by VHDLParser#rule_Designator. 

+

278 def visitRule_Designator(self, ctx: VHDLParser.Rule_DesignatorContext): 

+

279 return self.visitChildren(ctx) 

+

280 

+

281 # Visit a parse tree produced by VHDLParser#rule_Direction. 

+

282 def visitRule_Direction(self, ctx: VHDLParser.Rule_DirectionContext): 

+

283 return self.visitChildren(ctx) 

+

284 

+

285 # Visit a parse tree produced by VHDLParser#rule_DisconnectionSpecification. 

+

286 def visitRule_DisconnectionSpecification(self, ctx: VHDLParser.Rule_DisconnectionSpecificationContext): 

+

287 return self.visitChildren(ctx) 

+

288 

+

289 # Visit a parse tree produced by VHDLParser#rule_DiscreteRange. 

+

290 def visitRule_DiscreteRange(self, ctx: VHDLParser.Rule_DiscreteRangeContext): 

+

291 return self.visitChildren(ctx) 

+

292 

+

293 # Visit a parse tree produced by VHDLParser#rule_DiscreteIncompleteTypeDefinition. 

+

294 def visitRule_DiscreteIncompleteTypeDefinition(self, ctx: VHDLParser.Rule_DiscreteIncompleteTypeDefinitionContext): 

+

295 return self.visitChildren(ctx) 

+

296 

+

297 # Visit a parse tree produced by VHDLParser#rule_ElementArrayModeViewIndication. 

+

298 def visitRule_ElementArrayModeViewIndication(self, ctx: VHDLParser.Rule_ElementArrayModeViewIndicationContext): 

+

299 return self.visitChildren(ctx) 

+

300 

+

301 # Visit a parse tree produced by VHDLParser#rule_ElementAssociation. 

+

302 def visitRule_ElementAssociation(self, ctx: VHDLParser.Rule_ElementAssociationContext): 

+

303 return self.visitChildren(ctx) 

+

304 

+

305 # Visit a parse tree produced by VHDLParser#rule_ElementConstraint. 

+

306 def visitRule_ElementConstraint(self, ctx: VHDLParser.Rule_ElementConstraintContext): 

+

307 return self.visitChildren(ctx) 

+

308 

+

309 # Visit a parse tree produced by VHDLParser#rule_ElementDeclaration. 

+

310 def visitRule_ElementDeclaration(self, ctx: VHDLParser.Rule_ElementDeclarationContext): 

+

311 return self.visitChildren(ctx) 

+

312 

+

313 # Visit a parse tree produced by VHDLParser#rule_ElementModeIndication. 

+

314 def visitRule_ElementModeIndication(self, ctx: VHDLParser.Rule_ElementModeIndicationContext): 

+

315 return self.visitChildren(ctx) 

+

316 

+

317 # Visit a parse tree produced by VHDLParser#rule_ElementModeViewIndication. 

+

318 def visitRule_ElementModeViewIndication(self, ctx: VHDLParser.Rule_ElementModeViewIndicationContext): 

+

319 return self.visitChildren(ctx) 

+

320 

+

321 # Visit a parse tree produced by VHDLParser#rule_ElementRecordModeViewIndication. 

+

322 def visitRule_ElementRecordModeViewIndication(self, ctx: VHDLParser.Rule_ElementRecordModeViewIndicationContext): 

+

323 return self.visitChildren(ctx) 

+

324 

+

325 # Visit a parse tree produced by VHDLParser#rule_ElementResolution. 

+

326 def visitRule_ElementResolution(self, ctx: VHDLParser.Rule_ElementResolutionContext): 

+

327 return self.visitChildren(ctx) 

+

328 

+

329 # Visit a parse tree produced by VHDLParser#rule_EntityAspect. 

+

330 def visitRule_EntityAspect(self, ctx: VHDLParser.Rule_EntityAspectContext): 

+

331 return self.visitChildren(ctx) 

+

332 

+

333 # Visit a parse tree produced by VHDLParser#rule_EntityClass. 

+

334 def visitRule_EntityClass(self, ctx: VHDLParser.Rule_EntityClassContext): 

+

335 return self.visitChildren(ctx) 

+

336 

+

337 # Visit a parse tree produced by VHDLParser#rule_EntityClassEntry. 

+

338 def visitRule_EntityClassEntry(self, ctx: VHDLParser.Rule_EntityClassEntryContext): 

+

339 return self.visitChildren(ctx) 

+

340 

+

341 # Visit a parse tree produced by VHDLParser#rule_EntityDeclaration. 

+

342 def visitRule_EntityDeclaration(self, ctx: VHDLParser.Rule_EntityDeclarationContext): 

+

343 return self.visitChildren(ctx) 

+

344 

+

345 # Visit a parse tree produced by VHDLParser#rule_EntityDeclarativeItem. 

+

346 def visitRule_EntityDeclarativeItem(self, ctx: VHDLParser.Rule_EntityDeclarativeItemContext): 

+

347 return self.visitChildren(ctx) 

+

348 

+

349 # Visit a parse tree produced by VHDLParser#rule_EntityDesignator. 

+

350 def visitRule_EntityDesignator(self, ctx: VHDLParser.Rule_EntityDesignatorContext): 

+

351 return self.visitChildren(ctx) 

+

352 

+

353 # Visit a parse tree produced by VHDLParser#rule_EntityNameList. 

+

354 def visitRule_EntityNameList(self, ctx: VHDLParser.Rule_EntityNameListContext): 

+

355 return self.visitChildren(ctx) 

+

356 

+

357 # Visit a parse tree produced by VHDLParser#rule_EntitySpecification. 

+

358 def visitRule_EntitySpecification(self, ctx: VHDLParser.Rule_EntitySpecificationContext): 

+

359 return self.visitChildren(ctx) 

+

360 

+

361 # Visit a parse tree produced by VHDLParser#rule_EntityStatement. 

+

362 def visitRule_EntityStatement(self, ctx: VHDLParser.Rule_EntityStatementContext): 

+

363 return self.visitChildren(ctx) 

+

364 

+

365 # Visit a parse tree produced by VHDLParser#rule_EntityTag. 

+

366 def visitRule_EntityTag(self, ctx: VHDLParser.Rule_EntityTagContext): 

+

367 return self.visitChildren(ctx) 

+

368 

+

369 # Visit a parse tree produced by VHDLParser#rule_EnumerationLiteral. 

+

370 def visitRule_EnumerationLiteral(self, ctx: VHDLParser.Rule_EnumerationLiteralContext): 

+

371 return self.visitChildren(ctx) 

+

372 

+

373 # Visit a parse tree produced by VHDLParser#rule_EnumerationTypeDefinition. 

+

374 def visitRule_EnumerationTypeDefinition(self, ctx: VHDLParser.Rule_EnumerationTypeDefinitionContext): 

+

375 return self.visitChildren(ctx) 

+

376 

+

377 # Visit a parse tree produced by VHDLParser#rule_ExitStatement. 

+

378 def visitRule_ExitStatement(self, ctx: VHDLParser.Rule_ExitStatementContext): 

+

379 return self.visitChildren(ctx) 

+

380 

+

381 # Visit a parse tree produced by VHDLParser#binaryOp. 

+

382 def visitBinaryOp(self, ctx: VHDLParser.BinaryOpContext): 

+

383 return self.visitChildren(ctx) 

+

384 

+

385 # Visit a parse tree produced by VHDLParser#primaryOp. 

+

386 def visitPrimaryOp(self, ctx: VHDLParser.PrimaryOpContext): 

+

387 return self.visitChildren(ctx) 

+

388 

+

389 # Visit a parse tree produced by VHDLParser#unaryOp. 

+

390 def visitUnaryOp(self, ctx: VHDLParser.UnaryOpContext): 

+

391 return self.visitChildren(ctx) 

+

392 

+

393 # Visit a parse tree produced by VHDLParser#rule_ExpressionOrUnaffected. 

+

394 def visitRule_ExpressionOrUnaffected(self, ctx: VHDLParser.Rule_ExpressionOrUnaffectedContext): 

+

395 return self.visitChildren(ctx) 

+

396 

+

397 # Visit a parse tree produced by VHDLParser#rule_ExternalName. 

+

398 def visitRule_ExternalName(self, ctx: VHDLParser.Rule_ExternalNameContext): 

+

399 return self.visitChildren(ctx) 

+

400 

+

401 # Visit a parse tree produced by VHDLParser#rule_ExternalConstantName. 

+

402 def visitRule_ExternalConstantName(self, ctx: VHDLParser.Rule_ExternalConstantNameContext): 

+

403 return self.visitChildren(ctx) 

+

404 

+

405 # Visit a parse tree produced by VHDLParser#rule_ExternalSignalName. 

+

406 def visitRule_ExternalSignalName(self, ctx: VHDLParser.Rule_ExternalSignalNameContext): 

+

407 return self.visitChildren(ctx) 

+

408 

+

409 # Visit a parse tree produced by VHDLParser#rule_ExternalVariableName. 

+

410 def visitRule_ExternalVariableName(self, ctx: VHDLParser.Rule_ExternalVariableNameContext): 

+

411 return self.visitChildren(ctx) 

+

412 

+

413 # Visit a parse tree produced by VHDLParser#rule_ExternalPathname. 

+

414 def visitRule_ExternalPathname(self, ctx: VHDLParser.Rule_ExternalPathnameContext): 

+

415 return self.visitChildren(ctx) 

+

416 

+

417 # Visit a parse tree produced by VHDLParser#rule_FileDeclaration. 

+

418 def visitRule_FileDeclaration(self, ctx: VHDLParser.Rule_FileDeclarationContext): 

+

419 return self.visitChildren(ctx) 

+

420 

+

421 # Visit a parse tree produced by VHDLParser#rule_FileIncompleteTypeDefinition. 

+

422 def visitRule_FileIncompleteTypeDefinition(self, ctx: VHDLParser.Rule_FileIncompleteTypeDefinitionContext): 

+

423 return self.visitChildren(ctx) 

+

424 

+

425 # Visit a parse tree produced by VHDLParser#rule_FileOpenInformation. 

+

426 def visitRule_FileOpenInformation(self, ctx: VHDLParser.Rule_FileOpenInformationContext): 

+

427 return self.visitChildren(ctx) 

+

428 

+

429 # Visit a parse tree produced by VHDLParser#rule_FileTypeDefinition. 

+

430 def visitRule_FileTypeDefinition(self, ctx: VHDLParser.Rule_FileTypeDefinitionContext): 

+

431 return self.visitChildren(ctx) 

+

432 

+

433 # Visit a parse tree produced by VHDLParser#rule_FloatingIncompleteTypeDefinition. 

+

434 def visitRule_FloatingIncompleteTypeDefinition(self, ctx: VHDLParser.Rule_FloatingIncompleteTypeDefinitionContext): 

+

435 return self.visitChildren(ctx) 

+

436 

+

437 # Visit a parse tree produced by VHDLParser#rule_FloatingTypeDefinition. 

+

438 def visitRule_FloatingTypeDefinition(self, ctx: VHDLParser.Rule_FloatingTypeDefinitionContext): 

+

439 return self.visitChildren(ctx) 

+

440 

+

441 # Visit a parse tree produced by VHDLParser#rule_ForGenerateStatement. 

+

442 def visitRule_ForGenerateStatement(self, ctx: VHDLParser.Rule_ForGenerateStatementContext): 

+

443 return self.visitChildren(ctx) 

+

444 

+

445 # Visit a parse tree produced by VHDLParser#rule_FormalDesignator. 

+

446 def visitRule_FormalDesignator(self, ctx: VHDLParser.Rule_FormalDesignatorContext): 

+

447 return self.visitChildren(ctx) 

+

448 

+

449 # Visit a parse tree produced by VHDLParser#rule_FormalParameterList. 

+

450 def visitRule_FormalParameterList(self, ctx: VHDLParser.Rule_FormalParameterListContext): 

+

451 return self.visitChildren(ctx) 

+

452 

+

453 # Visit a parse tree produced by VHDLParser#rule_FormalPart. 

+

454 def visitRule_FormalPart(self, ctx: VHDLParser.Rule_FormalPartContext): 

+

455 return self.visitChildren(ctx) 

+

456 

+

457 # Visit a parse tree produced by VHDLParser#rule_FullTypeDeclaration. 

+

458 def visitRule_FullTypeDeclaration(self, ctx: VHDLParser.Rule_FullTypeDeclarationContext): 

+

459 return self.visitChildren(ctx) 

+

460 

+

461 # Visit a parse tree produced by VHDLParser#rule_FunctionCall. 

+

462 def visitRule_FunctionCall(self, ctx: VHDLParser.Rule_FunctionCallContext): 

+

463 return self.visitChildren(ctx) 

+

464 

+

465 # Visit a parse tree produced by VHDLParser#rule_FunctionSpecification. 

+

466 def visitRule_FunctionSpecification(self, ctx: VHDLParser.Rule_FunctionSpecificationContext): 

+

467 return self.visitChildren(ctx) 

+

468 

+

469 # Visit a parse tree produced by VHDLParser#rule_GenerateSpecification. 

+

470 def visitRule_GenerateSpecification(self, ctx: VHDLParser.Rule_GenerateSpecificationContext): 

+

471 return self.visitChildren(ctx) 

+

472 

+

473 # Visit a parse tree produced by VHDLParser#rule_GenerateStatement. 

+

474 def visitRule_GenerateStatement(self, ctx: VHDLParser.Rule_GenerateStatementContext): 

+

475 return self.visitChildren(ctx) 

+

476 

+

477 # Visit a parse tree produced by VHDLParser#rule_GenerateStatementBody. 

+

478 def visitRule_GenerateStatementBody(self, ctx: VHDLParser.Rule_GenerateStatementBodyContext): 

+

479 return self.visitChildren(ctx) 

+

480 

+

481 # Visit a parse tree produced by VHDLParser#rule_GenericClause. 

+

482 def visitRule_GenericClause(self, ctx: VHDLParser.Rule_GenericClauseContext): 

+

483 return self.visitChildren(ctx) 

+

484 

+

485 # Visit a parse tree produced by VHDLParser#rule_GenericMapAspect. 

+

486 def visitRule_GenericMapAspect(self, ctx: VHDLParser.Rule_GenericMapAspectContext): 

+

487 return self.visitChildren(ctx) 

+

488 

+

489 # Visit a parse tree produced by VHDLParser#rule_GroupConstituent. 

+

490 def visitRule_GroupConstituent(self, ctx: VHDLParser.Rule_GroupConstituentContext): 

+

491 return self.visitChildren(ctx) 

+

492 

+

493 # Visit a parse tree produced by VHDLParser#rule_GroupDeclaration. 

+

494 def visitRule_GroupDeclaration(self, ctx: VHDLParser.Rule_GroupDeclarationContext): 

+

495 return self.visitChildren(ctx) 

+

496 

+

497 # Visit a parse tree produced by VHDLParser#rule_GroupTemplateDeclaration. 

+

498 def visitRule_GroupTemplateDeclaration(self, ctx: VHDLParser.Rule_GroupTemplateDeclarationContext): 

+

499 return self.visitChildren(ctx) 

+

500 

+

501 # Visit a parse tree produced by VHDLParser#rule_GuardedSignalSpecification. 

+

502 def visitRule_GuardedSignalSpecification(self, ctx: VHDLParser.Rule_GuardedSignalSpecificationContext): 

+

503 return self.visitChildren(ctx) 

+

504 

+

505 # Visit a parse tree produced by VHDLParser#rule_IdentifierList. 

+

506 def visitRule_IdentifierList(self, ctx: VHDLParser.Rule_IdentifierListContext): 

+

507 return self.visitChildren(ctx) 

+

508 

+

509 # Visit a parse tree produced by VHDLParser#rule_IfGenerateStatement. 

+

510 def visitRule_IfGenerateStatement(self, ctx: VHDLParser.Rule_IfGenerateStatementContext): 

+

511 return self.visitChildren(ctx) 

+

512 

+

513 # Visit a parse tree produced by VHDLParser#rule_IfStatement. 

+

514 def visitRule_IfStatement(self, ctx: VHDLParser.Rule_IfStatementContext): 

+

515 return self.visitChildren(ctx) 

+

516 

+

517 # Visit a parse tree produced by VHDLParser#rule_IncompleteSubtypeIndication. 

+

518 def visitRule_IncompleteSubtypeIndication(self, ctx: VHDLParser.Rule_IncompleteSubtypeIndicationContext): 

+

519 return self.visitChildren(ctx) 

+

520 

+

521 # Visit a parse tree produced by VHDLParser#rule_IncompleteTypeDeclaration. 

+

522 def visitRule_IncompleteTypeDeclaration(self, ctx: VHDLParser.Rule_IncompleteTypeDeclarationContext): 

+

523 return self.visitChildren(ctx) 

+

524 

+

525 # Visit a parse tree produced by VHDLParser#rule_IncompleteTypeDefinition. 

+

526 def visitRule_IncompleteTypeDefinition(self, ctx: VHDLParser.Rule_IncompleteTypeDefinitionContext): 

+

527 return self.visitChildren(ctx) 

+

528 

+

529 # Visit a parse tree produced by VHDLParser#rule_IncompleteTypeMark. 

+

530 def visitRule_IncompleteTypeMark(self, ctx: VHDLParser.Rule_IncompleteTypeMarkContext): 

+

531 return self.visitChildren(ctx) 

+

532 

+

533 # Visit a parse tree produced by VHDLParser#rule_IndexConstraint. 

+

534 def visitRule_IndexConstraint(self, ctx: VHDLParser.Rule_IndexConstraintContext): 

+

535 return self.visitChildren(ctx) 

+

536 

+

537 # Visit a parse tree produced by VHDLParser#rule_IndexSubtypeDefinition. 

+

538 def visitRule_IndexSubtypeDefinition(self, ctx: VHDLParser.Rule_IndexSubtypeDefinitionContext): 

+

539 return self.visitChildren(ctx) 

+

540 

+

541 # Visit a parse tree produced by VHDLParser#rule_InstantiatedUnit. 

+

542 def visitRule_InstantiatedUnit(self, ctx: VHDLParser.Rule_InstantiatedUnitContext): 

+

543 return self.visitChildren(ctx) 

+

544 

+

545 # Visit a parse tree produced by VHDLParser#rule_InstantiationList. 

+

546 def visitRule_InstantiationList(self, ctx: VHDLParser.Rule_InstantiationListContext): 

+

547 return self.visitChildren(ctx) 

+

548 

+

549 # Visit a parse tree produced by VHDLParser#rule_IntegerIncompleteTypeDefinition. 

+

550 def visitRule_IntegerIncompleteTypeDefinition(self, ctx: VHDLParser.Rule_IntegerIncompleteTypeDefinitionContext): 

+

551 return self.visitChildren(ctx) 

+

552 

+

553 # Visit a parse tree produced by VHDLParser#rule_IntegerTypeDefinition. 

+

554 def visitRule_IntegerTypeDefinition(self, ctx: VHDLParser.Rule_IntegerTypeDefinitionContext): 

+

555 return self.visitChildren(ctx) 

+

556 

+

557 # Visit a parse tree produced by VHDLParser#rule_InterfaceConstantDeclaration. 

+

558 def visitRule_InterfaceConstantDeclaration(self, ctx: VHDLParser.Rule_InterfaceConstantDeclarationContext): 

+

559 return self.visitChildren(ctx) 

+

560 

+

561 # Visit a parse tree produced by VHDLParser#rule_InterfaceDeclaration. 

+

562 def visitRule_InterfaceDeclaration(self, ctx: VHDLParser.Rule_InterfaceDeclarationContext): 

+

563 return self.visitChildren(ctx) 

+

564 

+

565 # Visit a parse tree produced by VHDLParser#rule_InterfaceElement. 

+

566 def visitRule_InterfaceElement(self, ctx: VHDLParser.Rule_InterfaceElementContext): 

+

567 return self.visitChildren(ctx) 

+

568 

+

569 # Visit a parse tree produced by VHDLParser#rule_InterfaceFileDeclaration. 

+

570 def visitRule_InterfaceFileDeclaration(self, ctx: VHDLParser.Rule_InterfaceFileDeclarationContext): 

+

571 return self.visitChildren(ctx) 

+

572 

+

573 # Visit a parse tree produced by VHDLParser#rule_InterfaceFunctionSpecification. 

+

574 def visitRule_InterfaceFunctionSpecification(self, ctx: VHDLParser.Rule_InterfaceFunctionSpecificationContext): 

+

575 return self.visitChildren(ctx) 

+

576 

+

577 # Visit a parse tree produced by VHDLParser#rule_InterfaceList. 

+

578 def visitRule_InterfaceList(self, ctx: VHDLParser.Rule_InterfaceListContext): 

+

579 return self.visitChildren(ctx) 

+

580 

+

581 # Visit a parse tree produced by VHDLParser#rule_InterfacePackageDeclaration. 

+

582 def visitRule_InterfacePackageDeclaration(self, ctx: VHDLParser.Rule_InterfacePackageDeclarationContext): 

+

583 return self.visitChildren(ctx) 

+

584 

+

585 # Visit a parse tree produced by VHDLParser#rule_InterfacePackageGenericMapAspect. 

+

586 def visitRule_InterfacePackageGenericMapAspect(self, ctx: VHDLParser.Rule_InterfacePackageGenericMapAspectContext): 

+

587 return self.visitChildren(ctx) 

+

588 

+

589 # Visit a parse tree produced by VHDLParser#rule_InterfaceProcedureSpecification. 

+

590 def visitRule_InterfaceProcedureSpecification(self, ctx: VHDLParser.Rule_InterfaceProcedureSpecificationContext): 

+

591 return self.visitChildren(ctx) 

+

592 

+

593 # Visit a parse tree produced by VHDLParser#rule_InterfaceSignalDeclaration. 

+

594 def visitRule_InterfaceSignalDeclaration(self, ctx: VHDLParser.Rule_InterfaceSignalDeclarationContext): 

+

595 return self.visitChildren(ctx) 

+

596 

+

597 # Visit a parse tree produced by VHDLParser#rule_InterfaceSubprogramDeclaration. 

+

598 def visitRule_InterfaceSubprogramDeclaration(self, ctx: VHDLParser.Rule_InterfaceSubprogramDeclarationContext): 

+

599 return self.visitChildren(ctx) 

+

600 

+

601 # Visit a parse tree produced by VHDLParser#rule_InterfaceSubprogramDefault. 

+

602 def visitRule_InterfaceSubprogramDefault(self, ctx: VHDLParser.Rule_InterfaceSubprogramDefaultContext): 

+

603 return self.visitChildren(ctx) 

+

604 

+

605 # Visit a parse tree produced by VHDLParser#rule_InterfaceSubprogramSpecification. 

+

606 def visitRule_InterfaceSubprogramSpecification(self, ctx: VHDLParser.Rule_InterfaceSubprogramSpecificationContext): 

+

607 return self.visitChildren(ctx) 

+

608 

+

609 # Visit a parse tree produced by VHDLParser#rule_InterfaceTypeDeclaration. 

+

610 def visitRule_InterfaceTypeDeclaration(self, ctx: VHDLParser.Rule_InterfaceTypeDeclarationContext): 

+

611 return self.visitChildren(ctx) 

+

612 

+

613 # Visit a parse tree produced by VHDLParser#rule_InterfaceTypeIndication. 

+

614 def visitRule_InterfaceTypeIndication(self, ctx: VHDLParser.Rule_InterfaceTypeIndicationContext): 

+

615 return self.visitChildren(ctx) 

+

616 

+

617 # Visit a parse tree produced by VHDLParser#rule_InterfaceVariableDeclaration. 

+

618 def visitRule_InterfaceVariableDeclaration(self, ctx: VHDLParser.Rule_InterfaceVariableDeclarationContext): 

+

619 return self.visitChildren(ctx) 

+

620 

+

621 # Visit a parse tree produced by VHDLParser#rule_IterationScheme. 

+

622 def visitRule_IterationScheme(self, ctx: VHDLParser.Rule_IterationSchemeContext): 

+

623 return self.visitChildren(ctx) 

+

624 

+

625 # Visit a parse tree produced by VHDLParser#rule_LibraryClause. 

+

626 def visitRule_LibraryClause(self, ctx: VHDLParser.Rule_LibraryClauseContext): 

+

627 return self.visitChildren(ctx) 

+

628 

+

629 # Visit a parse tree produced by VHDLParser#rule_LibraryUnit. 

+

630 def visitRule_LibraryUnit(self, ctx: VHDLParser.Rule_LibraryUnitContext): 

+

631 return self.visitChildren(ctx) 

+

632 

+

633 # Visit a parse tree produced by VHDLParser#rule_Literal. 

+

634 def visitRule_Literal(self, ctx: VHDLParser.Rule_LiteralContext): 

+

635 return self.visitChildren(ctx) 

+

636 

+

637 # Visit a parse tree produced by VHDLParser#rule_LoopStatement. 

+

638 def visitRule_LoopStatement(self, ctx: VHDLParser.Rule_LoopStatementContext): 

+

639 return self.visitChildren(ctx) 

+

640 

+

641 # Visit a parse tree produced by VHDLParser#rule_Mode. 

+

642 def visitRule_Mode(self, ctx: VHDLParser.Rule_ModeContext): 

+

643 return self.visitChildren(ctx) 

+

644 

+

645 # Visit a parse tree produced by VHDLParser#rule_ModeIndication. 

+

646 def visitRule_ModeIndication(self, ctx: VHDLParser.Rule_ModeIndicationContext): 

+

647 return self.visitChildren(ctx) 

+

648 

+

649 # Visit a parse tree produced by VHDLParser#rule_ModeViewDeclaration. 

+

650 def visitRule_ModeViewDeclaration(self, ctx: VHDLParser.Rule_ModeViewDeclarationContext): 

+

651 return self.visitChildren(ctx) 

+

652 

+

653 # Visit a parse tree produced by VHDLParser#rule_ModeViewElementDefinition. 

+

654 def visitRule_ModeViewElementDefinition(self, ctx: VHDLParser.Rule_ModeViewElementDefinitionContext): 

+

655 return self.visitChildren(ctx) 

+

656 

+

657 # Visit a parse tree produced by VHDLParser#rule_Char. 

+

658 def visitRule_Char(self, ctx: VHDLParser.Rule_CharContext): 

+

659 return self.visitChildren(ctx) 

+

660 

+

661 # Visit a parse tree produced by VHDLParser#rule_IndexedName. 

+

662 def visitRule_IndexedName(self, ctx: VHDLParser.Rule_IndexedNameContext): 

+

663 return self.visitChildren(ctx) 

+

664 

+

665 # Visit a parse tree produced by VHDLParser#rule_SimpleName. 

+

666 def visitRule_SimpleName(self, ctx: VHDLParser.Rule_SimpleNameContext): 

+

667 return self.visitChildren(ctx) 

+

668 

+

669 # Visit a parse tree produced by VHDLParser#rule_External. 

+

670 def visitRule_External(self, ctx: VHDLParser.Rule_ExternalContext): 

+

671 return self.visitChildren(ctx) 

+

672 

+

673 # Visit a parse tree produced by VHDLParser#rule_AttributeName. 

+

674 def visitRule_AttributeName(self, ctx: VHDLParser.Rule_AttributeNameContext): 

+

675 return self.visitChildren(ctx) 

+

676 

+

677 # Visit a parse tree produced by VHDLParser#rule_SelectedName. 

+

678 def visitRule_SelectedName(self, ctx: VHDLParser.Rule_SelectedNameContext): 

+

679 return self.visitChildren(ctx) 

+

680 

+

681 # Visit a parse tree produced by VHDLParser#rule_SliceName. 

+

682 def visitRule_SliceName(self, ctx: VHDLParser.Rule_SliceNameContext): 

+

683 return self.visitChildren(ctx) 

+

684 

+

685 # Visit a parse tree produced by VHDLParser#rule_Operator. 

+

686 def visitRule_Operator(self, ctx: VHDLParser.Rule_OperatorContext): 

+

687 return self.visitChildren(ctx) 

+

688 

+

689 # Visit a parse tree produced by VHDLParser#rule_NextStatement. 

+

690 def visitRule_NextStatement(self, ctx: VHDLParser.Rule_NextStatementContext): 

+

691 return self.visitChildren(ctx) 

+

692 

+

693 # Visit a parse tree produced by VHDLParser#rule_NullStatement. 

+

694 def visitRule_NullStatement(self, ctx: VHDLParser.Rule_NullStatementContext): 

+

695 return self.visitChildren(ctx) 

+

696 

+

697 # Visit a parse tree produced by VHDLParser#rule_NumericLiteral. 

+

698 def visitRule_NumericLiteral(self, ctx: VHDLParser.Rule_NumericLiteralContext): 

+

699 return self.visitChildren(ctx) 

+

700 

+

701 # Visit a parse tree produced by VHDLParser#rule_PackageBody. 

+

702 def visitRule_PackageBody(self, ctx: VHDLParser.Rule_PackageBodyContext): 

+

703 return self.visitChildren(ctx) 

+

704 

+

705 # Visit a parse tree produced by VHDLParser#rule_PackageBodyDeclarativeItem. 

+

706 def visitRule_PackageBodyDeclarativeItem(self, ctx: VHDLParser.Rule_PackageBodyDeclarativeItemContext): 

+

707 return self.visitChildren(ctx) 

+

708 

+

709 # Visit a parse tree produced by VHDLParser#rule_PackageDeclaration. 

+

710 def visitRule_PackageDeclaration(self, ctx: VHDLParser.Rule_PackageDeclarationContext): 

+

711 return self.visitChildren(ctx) 

+

712 

+

713 # Visit a parse tree produced by VHDLParser#rule_PackageDeclarativeItem. 

+

714 def visitRule_PackageDeclarativeItem(self, ctx: VHDLParser.Rule_PackageDeclarativeItemContext): 

+

715 return self.visitChildren(ctx) 

+

716 

+

717 # Visit a parse tree produced by VHDLParser#rule_PackageInstantiationDeclaration. 

+

718 def visitRule_PackageInstantiationDeclaration(self, ctx: VHDLParser.Rule_PackageInstantiationDeclarationContext): 

+

719 return self.visitChildren(ctx) 

+

720 

+

721 # Visit a parse tree produced by VHDLParser#rule_PackagePathname. 

+

722 def visitRule_PackagePathname(self, ctx: VHDLParser.Rule_PackagePathnameContext): 

+

723 return self.visitChildren(ctx) 

+

724 

+

725 # Visit a parse tree produced by VHDLParser#rule_ParameterMapAspect. 

+

726 def visitRule_ParameterMapAspect(self, ctx: VHDLParser.Rule_ParameterMapAspectContext): 

+

727 return self.visitChildren(ctx) 

+

728 

+

729 # Visit a parse tree produced by VHDLParser#rule_ParameterSpecification. 

+

730 def visitRule_ParameterSpecification(self, ctx: VHDLParser.Rule_ParameterSpecificationContext): 

+

731 return self.visitChildren(ctx) 

+

732 

+

733 # Visit a parse tree produced by VHDLParser#rule_PartialPathname. 

+

734 def visitRule_PartialPathname(self, ctx: VHDLParser.Rule_PartialPathnameContext): 

+

735 return self.visitChildren(ctx) 

+

736 

+

737 # Visit a parse tree produced by VHDLParser#rule_PathnameElement. 

+

738 def visitRule_PathnameElement(self, ctx: VHDLParser.Rule_PathnameElementContext): 

+

739 return self.visitChildren(ctx) 

+

740 

+

741 # Visit a parse tree produced by VHDLParser#rule_PhysicalIncompleteTypeDefinition. 

+

742 def visitRule_PhysicalIncompleteTypeDefinition(self, ctx: VHDLParser.Rule_PhysicalIncompleteTypeDefinitionContext): 

+

743 return self.visitChildren(ctx) 

+

744 

+

745 # Visit a parse tree produced by VHDLParser#rule_PhysicalLiteral. 

+

746 def visitRule_PhysicalLiteral(self, ctx: VHDLParser.Rule_PhysicalLiteralContext): 

+

747 return self.visitChildren(ctx) 

+

748 

+

749 # Visit a parse tree produced by VHDLParser#rule_PhysicalTypeDefinition. 

+

750 def visitRule_PhysicalTypeDefinition(self, ctx: VHDLParser.Rule_PhysicalTypeDefinitionContext): 

+

751 return self.visitChildren(ctx) 

+

752 

+

753 # Visit a parse tree produced by VHDLParser#rule_PlainReturnStatement. 

+

754 def visitRule_PlainReturnStatement(self, ctx: VHDLParser.Rule_PlainReturnStatementContext): 

+

755 return self.visitChildren(ctx) 

+

756 

+

757 # Visit a parse tree produced by VHDLParser#rule_PortClause. 

+

758 def visitRule_PortClause(self, ctx: VHDLParser.Rule_PortClauseContext): 

+

759 return self.visitChildren(ctx) 

+

760 

+

761 # Visit a parse tree produced by VHDLParser#rule_PortMapAspect. 

+

762 def visitRule_PortMapAspect(self, ctx: VHDLParser.Rule_PortMapAspectContext): 

+

763 return self.visitChildren(ctx) 

+

764 

+

765 # Visit a parse tree produced by VHDLParser#rule_Primary. 

+

766 def visitRule_Primary(self, ctx: VHDLParser.Rule_PrimaryContext): 

+

767 return self.visitChildren(ctx) 

+

768 

+

769 # Visit a parse tree produced by VHDLParser#rule_PrivateVariableDeclaration. 

+

770 def visitRule_PrivateVariableDeclaration(self, ctx: VHDLParser.Rule_PrivateVariableDeclarationContext): 

+

771 return self.visitChildren(ctx) 

+

772 

+

773 # Visit a parse tree produced by VHDLParser#rule_PrivateIncompleteTypeDefinition. 

+

774 def visitRule_PrivateIncompleteTypeDefinition(self, ctx: VHDLParser.Rule_PrivateIncompleteTypeDefinitionContext): 

+

775 return self.visitChildren(ctx) 

+

776 

+

777 # Visit a parse tree produced by VHDLParser#rule_ProcedureCall. 

+

778 def visitRule_ProcedureCall(self, ctx: VHDLParser.Rule_ProcedureCallContext): 

+

779 return self.visitChildren(ctx) 

+

780 

+

781 # Visit a parse tree produced by VHDLParser#rule_ProcedureCallStatement. 

+

782 def visitRule_ProcedureCallStatement(self, ctx: VHDLParser.Rule_ProcedureCallStatementContext): 

+

783 return self.visitChildren(ctx) 

+

784 

+

785 # Visit a parse tree produced by VHDLParser#rule_ProcedureSpecification. 

+

786 def visitRule_ProcedureSpecification(self, ctx: VHDLParser.Rule_ProcedureSpecificationContext): 

+

787 return self.visitChildren(ctx) 

+

788 

+

789 # Visit a parse tree produced by VHDLParser#rule_ProcessDeclarativeItem. 

+

790 def visitRule_ProcessDeclarativeItem(self, ctx: VHDLParser.Rule_ProcessDeclarativeItemContext): 

+

791 return self.visitChildren(ctx) 

+

792 

+

793 # Visit a parse tree produced by VHDLParser#rule_ProcessSensitivityList. 

+

794 def visitRule_ProcessSensitivityList(self, ctx: VHDLParser.Rule_ProcessSensitivityListContext): 

+

795 return self.visitChildren(ctx) 

+

796 

+

797 # Visit a parse tree produced by VHDLParser#rule_ProcessStatement. 

+

798 def visitRule_ProcessStatement(self, ctx: VHDLParser.Rule_ProcessStatementContext): 

+

799 return self.visitChildren(ctx) 

+

800 

+

801 # Visit a parse tree produced by VHDLParser#rule_PostponedProcessStatement. 

+

802 def visitRule_PostponedProcessStatement(self, ctx: VHDLParser.Rule_PostponedProcessStatementContext): 

+

803 return self.visitChildren(ctx) 

+

804 

+

805 # Visit a parse tree produced by VHDLParser#rule_ProtectedTypeBody. 

+

806 def visitRule_ProtectedTypeBody(self, ctx: VHDLParser.Rule_ProtectedTypeBodyContext): 

+

807 return self.visitChildren(ctx) 

+

808 

+

809 # Visit a parse tree produced by VHDLParser#rule_ProtectedTypeBodyDeclarativeItem. 

+

810 def visitRule_ProtectedTypeBodyDeclarativeItem(self, ctx: VHDLParser.Rule_ProtectedTypeBodyDeclarativeItemContext): 

+

811 return self.visitChildren(ctx) 

+

812 

+

813 # Visit a parse tree produced by VHDLParser#rule_ProtectedTypeDeclaration. 

+

814 def visitRule_ProtectedTypeDeclaration(self, ctx: VHDLParser.Rule_ProtectedTypeDeclarationContext): 

+

815 return self.visitChildren(ctx) 

+

816 

+

817 # Visit a parse tree produced by VHDLParser#rule_ProtectedTypeDeclarativeItem. 

+

818 def visitRule_ProtectedTypeDeclarativeItem(self, ctx: VHDLParser.Rule_ProtectedTypeDeclarativeItemContext): 

+

819 return self.visitChildren(ctx) 

+

820 

+

821 # Visit a parse tree produced by VHDLParser#rule_ProtectedTypeDefinition. 

+

822 def visitRule_ProtectedTypeDefinition(self, ctx: VHDLParser.Rule_ProtectedTypeDefinitionContext): 

+

823 return self.visitChildren(ctx) 

+

824 

+

825 # Visit a parse tree produced by VHDLParser#rule_ProtectedTypeInstantiationDefinition. 

+

826 def visitRule_ProtectedTypeInstantiationDefinition(self, 

+

827 ctx: VHDLParser.Rule_ProtectedTypeInstantiationDefinitionContext): 

+

828 return self.visitChildren(ctx) 

+

829 

+

830 # Visit a parse tree produced by VHDLParser#rule_QualifiedExpression. 

+

831 def visitRule_QualifiedExpression(self, ctx: VHDLParser.Rule_QualifiedExpressionContext): 

+

832 return self.visitChildren(ctx) 

+

833 

+

834 # Visit a parse tree produced by VHDLParser#rule_Range. 

+

835 def visitRule_Range(self, ctx: VHDLParser.Rule_RangeContext): 

+

836 return self.visitChildren(ctx) 

+

837 

+

838 # Visit a parse tree produced by VHDLParser#rule_RangeConstraint. 

+

839 def visitRule_RangeConstraint(self, ctx: VHDLParser.Rule_RangeConstraintContext): 

+

840 return self.visitChildren(ctx) 

+

841 

+

842 # Visit a parse tree produced by VHDLParser#rule_RecordConstraint. 

+

843 def visitRule_RecordConstraint(self, ctx: VHDLParser.Rule_RecordConstraintContext): 

+

844 return self.visitChildren(ctx) 

+

845 

+

846 # Visit a parse tree produced by VHDLParser#rule_RecordElementConstraint. 

+

847 def visitRule_RecordElementConstraint(self, ctx: VHDLParser.Rule_RecordElementConstraintContext): 

+

848 return self.visitChildren(ctx) 

+

849 

+

850 # Visit a parse tree produced by VHDLParser#rule_RecordElementList. 

+

851 def visitRule_RecordElementList(self, ctx: VHDLParser.Rule_RecordElementListContext): 

+

852 return self.visitChildren(ctx) 

+

853 

+

854 # Visit a parse tree produced by VHDLParser#rule_RecordElementResolution. 

+

855 def visitRule_RecordElementResolution(self, ctx: VHDLParser.Rule_RecordElementResolutionContext): 

+

856 return self.visitChildren(ctx) 

+

857 

+

858 # Visit a parse tree produced by VHDLParser#rule_RecordResolution. 

+

859 def visitRule_RecordResolution(self, ctx: VHDLParser.Rule_RecordResolutionContext): 

+

860 return self.visitChildren(ctx) 

+

861 

+

862 # Visit a parse tree produced by VHDLParser#rule_RecordTypeDefinition. 

+

863 def visitRule_RecordTypeDefinition(self, ctx: VHDLParser.Rule_RecordTypeDefinitionContext): 

+

864 return self.visitChildren(ctx) 

+

865 

+

866 # Visit a parse tree produced by VHDLParser#rule_RecordModeViewIndication. 

+

867 def visitRule_RecordModeViewIndication(self, ctx: VHDLParser.Rule_RecordModeViewIndicationContext): 

+

868 return self.visitChildren(ctx) 

+

869 

+

870 # Visit a parse tree produced by VHDLParser#rule_RelativePathname. 

+

871 def visitRule_RelativePathname(self, ctx: VHDLParser.Rule_RelativePathnameContext): 

+

872 return self.visitChildren(ctx) 

+

873 

+

874 # Visit a parse tree produced by VHDLParser#rule_ReportStatement. 

+

875 def visitRule_ReportStatement(self, ctx: VHDLParser.Rule_ReportStatementContext): 

+

876 return self.visitChildren(ctx) 

+

877 

+

878 # Visit a parse tree produced by VHDLParser#rule_ResolutionIndication. 

+

879 def visitRule_ResolutionIndication(self, ctx: VHDLParser.Rule_ResolutionIndicationContext): 

+

880 return self.visitChildren(ctx) 

+

881 

+

882 # Visit a parse tree produced by VHDLParser#rule_ReturnStatement. 

+

883 def visitRule_ReturnStatement(self, ctx: VHDLParser.Rule_ReturnStatementContext): 

+

884 return self.visitChildren(ctx) 

+

885 

+

886 # Visit a parse tree produced by VHDLParser#rule_ScalarIncompleteTypeDefinition. 

+

887 def visitRule_ScalarIncompleteTypeDefinition(self, ctx: VHDLParser.Rule_ScalarIncompleteTypeDefinitionContext): 

+

888 return self.visitChildren(ctx) 

+

889 

+

890 # Visit a parse tree produced by VHDLParser#rule_ScalarTypeDefinition. 

+

891 def visitRule_ScalarTypeDefinition(self, ctx: VHDLParser.Rule_ScalarTypeDefinitionContext): 

+

892 return self.visitChildren(ctx) 

+

893 

+

894 # Visit a parse tree produced by VHDLParser#rule_SecondaryUnitDeclaration. 

+

895 def visitRule_SecondaryUnitDeclaration(self, ctx: VHDLParser.Rule_SecondaryUnitDeclarationContext): 

+

896 return self.visitChildren(ctx) 

+

897 

+

898 # Visit a parse tree produced by VHDLParser#rule_SelectedExpressions. 

+

899 def visitRule_SelectedExpressions(self, ctx: VHDLParser.Rule_SelectedExpressionsContext): 

+

900 return self.visitChildren(ctx) 

+

901 

+

902 # Visit a parse tree produced by VHDLParser#rule_SelectedForceAssignment. 

+

903 def visitRule_SelectedForceAssignment(self, ctx: VHDLParser.Rule_SelectedForceAssignmentContext): 

+

904 return self.visitChildren(ctx) 

+

905 

+

906 # Visit a parse tree produced by VHDLParser#rule_SelectedName2. 

+

907 def visitRule_SelectedName2(self, ctx: VHDLParser.Rule_SelectedName2Context): 

+

908 return self.visitChildren(ctx) 

+

909 

+

910 # Visit a parse tree produced by VHDLParser#rule_SelectedSignalAssignment. 

+

911 def visitRule_SelectedSignalAssignment(self, ctx: VHDLParser.Rule_SelectedSignalAssignmentContext): 

+

912 return self.visitChildren(ctx) 

+

913 

+

914 # Visit a parse tree produced by VHDLParser#rule_SelectedVariableAssignment. 

+

915 def visitRule_SelectedVariableAssignment(self, ctx: VHDLParser.Rule_SelectedVariableAssignmentContext): 

+

916 return self.visitChildren(ctx) 

+

917 

+

918 # Visit a parse tree produced by VHDLParser#rule_SelectedWaveformAssignment. 

+

919 def visitRule_SelectedWaveformAssignment(self, ctx: VHDLParser.Rule_SelectedWaveformAssignmentContext): 

+

920 return self.visitChildren(ctx) 

+

921 

+

922 # Visit a parse tree produced by VHDLParser#rule_SelectedWaveforms. 

+

923 def visitRule_SelectedWaveforms(self, ctx: VHDLParser.Rule_SelectedWaveformsContext): 

+

924 return self.visitChildren(ctx) 

+

925 

+

926 # Visit a parse tree produced by VHDLParser#rule_SensitivityClause. 

+

927 def visitRule_SensitivityClause(self, ctx: VHDLParser.Rule_SensitivityClauseContext): 

+

928 return self.visitChildren(ctx) 

+

929 

+

930 # Visit a parse tree produced by VHDLParser#rule_SensitivityList. 

+

931 def visitRule_SensitivityList(self, ctx: VHDLParser.Rule_SensitivityListContext): 

+

932 return self.visitChildren(ctx) 

+

933 

+

934 # Visit a parse tree produced by VHDLParser#rule_SequentialBlockStatement. 

+

935 def visitRule_SequentialBlockStatement(self, ctx: VHDLParser.Rule_SequentialBlockStatementContext): 

+

936 return self.visitChildren(ctx) 

+

937 

+

938 # Visit a parse tree produced by VHDLParser#rule_SequentialStatement. 

+

939 def visitRule_SequentialStatement(self, ctx: VHDLParser.Rule_SequentialStatementContext): 

+

940 return self.visitChildren(ctx) 

+

941 

+

942 # Visit a parse tree produced by VHDLParser#rule_SignalAssignmentStatement. 

+

943 def visitRule_SignalAssignmentStatement(self, ctx: VHDLParser.Rule_SignalAssignmentStatementContext): 

+

944 return self.visitChildren(ctx) 

+

945 

+

946 # Visit a parse tree produced by VHDLParser#rule_SignalDeclaration. 

+

947 def visitRule_SignalDeclaration(self, ctx: VHDLParser.Rule_SignalDeclarationContext): 

+

948 return self.visitChildren(ctx) 

+

949 

+

950 # Visit a parse tree produced by VHDLParser#rule_SignalList. 

+

951 def visitRule_SignalList(self, ctx: VHDLParser.Rule_SignalListContext): 

+

952 return self.visitChildren(ctx) 

+

953 

+

954 # Visit a parse tree produced by VHDLParser#rule_Signature. 

+

955 def visitRule_Signature(self, ctx: VHDLParser.Rule_SignatureContext): 

+

956 return self.visitChildren(ctx) 

+

957 

+

958 # Visit a parse tree produced by VHDLParser#rule_SimpleConfigurationSpecification. 

+

959 def visitRule_SimpleConfigurationSpecification(self, ctx: VHDLParser.Rule_SimpleConfigurationSpecificationContext): 

+

960 return self.visitChildren(ctx) 

+

961 

+

962 # Visit a parse tree produced by VHDLParser#rule_SimpleForceAssignment. 

+

963 def visitRule_SimpleForceAssignment(self, ctx: VHDLParser.Rule_SimpleForceAssignmentContext): 

+

964 return self.visitChildren(ctx) 

+

965 

+

966 # Visit a parse tree produced by VHDLParser#rule_SimpleModeIndication. 

+

967 def visitRule_SimpleModeIndication(self, ctx: VHDLParser.Rule_SimpleModeIndicationContext): 

+

968 return self.visitChildren(ctx) 

+

969 

+

970 # Visit a parse tree produced by VHDLParser#rule_SimpleRange. 

+

971 def visitRule_SimpleRange(self, ctx: VHDLParser.Rule_SimpleRangeContext): 

+

972 return self.visitChildren(ctx) 

+

973 

+

974 # Visit a parse tree produced by VHDLParser#rule_SimpleReleaseAssignment. 

+

975 def visitRule_SimpleReleaseAssignment(self, ctx: VHDLParser.Rule_SimpleReleaseAssignmentContext): 

+

976 return self.visitChildren(ctx) 

+

977 

+

978 # Visit a parse tree produced by VHDLParser#rule_SimpleSignalAssignment. 

+

979 def visitRule_SimpleSignalAssignment(self, ctx: VHDLParser.Rule_SimpleSignalAssignmentContext): 

+

980 return self.visitChildren(ctx) 

+

981 

+

982 # Visit a parse tree produced by VHDLParser#rule_SimpleWaveformAssignment. 

+

983 def visitRule_SimpleWaveformAssignment(self, ctx: VHDLParser.Rule_SimpleWaveformAssignmentContext): 

+

984 return self.visitChildren(ctx) 

+

985 

+

986 # Visit a parse tree produced by VHDLParser#rule_SimpleVariableAssignment. 

+

987 def visitRule_SimpleVariableAssignment(self, ctx: VHDLParser.Rule_SimpleVariableAssignmentContext): 

+

988 return self.visitChildren(ctx) 

+

989 

+

990 # Visit a parse tree produced by VHDLParser#rule_SubprogramBody. 

+

991 def visitRule_SubprogramBody(self, ctx: VHDLParser.Rule_SubprogramBodyContext): 

+

992 return self.visitChildren(ctx) 

+

993 

+

994 # Visit a parse tree produced by VHDLParser#rule_SubprogramDeclaration. 

+

995 def visitRule_SubprogramDeclaration(self, ctx: VHDLParser.Rule_SubprogramDeclarationContext): 

+

996 return self.visitChildren(ctx) 

+

997 

+

998 # Visit a parse tree produced by VHDLParser#rule_SubprogramDeclarativeItem. 

+

999 def visitRule_SubprogramDeclarativeItem(self, ctx: VHDLParser.Rule_SubprogramDeclarativeItemContext): 

+

1000 return self.visitChildren(ctx) 

+

1001 

+

1002 # Visit a parse tree produced by VHDLParser#rule_SubprogramInstantiationDeclaration. 

+

1003 def visitRule_SubprogramInstantiationDeclaration(self, 

+

1004 ctx: VHDLParser.Rule_SubprogramInstantiationDeclarationContext): 

+

1005 return self.visitChildren(ctx) 

+

1006 

+

1007 # Visit a parse tree produced by VHDLParser#rule_SubprogramKind. 

+

1008 def visitRule_SubprogramKind(self, ctx: VHDLParser.Rule_SubprogramKindContext): 

+

1009 return self.visitChildren(ctx) 

+

1010 

+

1011 # Visit a parse tree produced by VHDLParser#rule_SubprogramSpecification. 

+

1012 def visitRule_SubprogramSpecification(self, ctx: VHDLParser.Rule_SubprogramSpecificationContext): 

+

1013 return self.visitChildren(ctx) 

+

1014 

+

1015 # Visit a parse tree produced by VHDLParser#rule_SubtypeDeclaration. 

+

1016 def visitRule_SubtypeDeclaration(self, ctx: VHDLParser.Rule_SubtypeDeclarationContext): 

+

1017 return self.visitChildren(ctx) 

+

1018 

+

1019 # Visit a parse tree produced by VHDLParser#rule_SubtypeIndication. 

+

1020 def visitRule_SubtypeIndication(self, ctx: VHDLParser.Rule_SubtypeIndicationContext): 

+

1021 return self.visitChildren(ctx) 

+

1022 

+

1023 # Visit a parse tree produced by VHDLParser#rule_Suffix. 

+

1024 def visitRule_Suffix(self, ctx: VHDLParser.Rule_SuffixContext): 

+

1025 return self.visitChildren(ctx) 

+

1026 

+

1027 # Visit a parse tree produced by VHDLParser#rule_Target. 

+

1028 def visitRule_Target(self, ctx: VHDLParser.Rule_TargetContext): 

+

1029 return self.visitChildren(ctx) 

+

1030 

+

1031 # Visit a parse tree produced by VHDLParser#rule_TimeoutClause. 

+

1032 def visitRule_TimeoutClause(self, ctx: VHDLParser.Rule_TimeoutClauseContext): 

+

1033 return self.visitChildren(ctx) 

+

1034 

+

1035 # Visit a parse tree produced by VHDLParser#rule_TypeConversion. 

+

1036 def visitRule_TypeConversion(self, ctx: VHDLParser.Rule_TypeConversionContext): 

+

1037 return self.visitChildren(ctx) 

+

1038 

+

1039 # Visit a parse tree produced by VHDLParser#rule_TypeDeclaration. 

+

1040 def visitRule_TypeDeclaration(self, ctx: VHDLParser.Rule_TypeDeclarationContext): 

+

1041 return self.visitChildren(ctx) 

+

1042 

+

1043 # Visit a parse tree produced by VHDLParser#rule_TypeDefinition. 

+

1044 def visitRule_TypeDefinition(self, ctx: VHDLParser.Rule_TypeDefinitionContext): 

+

1045 return self.visitChildren(ctx) 

+

1046 

+

1047 # Visit a parse tree produced by VHDLParser#rule_UnboundArrayDefinition. 

+

1048 def visitRule_UnboundArrayDefinition(self, ctx: VHDLParser.Rule_UnboundArrayDefinitionContext): 

+

1049 return self.visitChildren(ctx) 

+

1050 

+

1051 # Visit a parse tree produced by VHDLParser#rule_UnspecifiedTypeIndication. 

+

1052 def visitRule_UnspecifiedTypeIndication(self, ctx: VHDLParser.Rule_UnspecifiedTypeIndicationContext): 

+

1053 return self.visitChildren(ctx) 

+

1054 

+

1055 # Visit a parse tree produced by VHDLParser#rule_UseClause. 

+

1056 def visitRule_UseClause(self, ctx: VHDLParser.Rule_UseClauseContext): 

+

1057 return self.visitChildren(ctx) 

+

1058 

+

1059 # Visit a parse tree produced by VHDLParser#rule_ValueReturnStatement. 

+

1060 def visitRule_ValueReturnStatement(self, ctx: VHDLParser.Rule_ValueReturnStatementContext): 

+

1061 return self.visitChildren(ctx) 

+

1062 

+

1063 # Visit a parse tree produced by VHDLParser#rule_VariableAssignmentStatement. 

+

1064 def visitRule_VariableAssignmentStatement(self, ctx: VHDLParser.Rule_VariableAssignmentStatementContext): 

+

1065 return self.visitChildren(ctx) 

+

1066 

+

1067 # Visit a parse tree produced by VHDLParser#rule_VariableDeclaration. 

+

1068 def visitRule_VariableDeclaration(self, ctx: VHDLParser.Rule_VariableDeclarationContext): 

+

1069 return self.visitChildren(ctx) 

+

1070 

+

1071 # Visit a parse tree produced by VHDLParser#rule_WaitStatement. 

+

1072 def visitRule_WaitStatement(self, ctx: VHDLParser.Rule_WaitStatementContext): 

+

1073 return self.visitChildren(ctx) 

+

1074 

+

1075 # Visit a parse tree produced by VHDLParser#rule_Waveform. 

+

1076 def visitRule_Waveform(self, ctx: VHDLParser.Rule_WaveformContext): 

+

1077 return self.visitChildren(ctx) 

+

1078 

+

1079 # Visit a parse tree produced by VHDLParser#rule_WaveformElement. 

+

1080 def visitRule_WaveformElement(self, ctx: VHDLParser.Rule_WaveformElementContext): 

+

1081 return self.visitChildren(ctx) 

+

1082 

+

1083del VHDLParser 

+
+ + + diff --git a/coverage/d_2b67a29648fff107_VHDLParser_py.html b/coverage/d_2b67a29648fff107_VHDLParser_py.html new file mode 100644 index 000000000..b9c5d8ab4 --- /dev/null +++ b/coverage/d_2b67a29648fff107_VHDLParser_py.html @@ -0,0 +1,21209 @@ + + + + + Coverage for pyVHDLParser/ANTLR4/VHDLParser.py: 0% + + + + + +
+
+

+ Coverage for pyVHDLParser/ANTLR4/VHDLParser.py: + 0% +

+ +

+ 15602 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# Generated from .\VHDLParser.g4 by ANTLR 4.12.0 

+

2from sys import stdout 

+

3from typing import TextIO 

+

4 

+

5from antlr4 import Parser, ATNDeserializer, DFA, PredictionContextCache, TokenStream, ParserATNSimulator, \ 

+

6 ParserRuleContext, ParseTreeVisitor, RecognitionException, Token, NoViableAltException, ATN, RuleContext 

+

7 

+

8 

+

9def serializedATN(): 

+

10 return ( 

+

11 4, 1, 163, 3044, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 

+

12 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 

+

13 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 

+

14 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 

+

15 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 

+

16 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 

+

17 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 

+

18 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 

+

19 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 

+

20 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 

+

21 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 

+

22 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 

+

23 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 

+

24 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 

+

25 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 

+

26 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 

+

27 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 

+

28 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 

+

29 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 

+

30 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 

+

31 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 

+

32 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 

+

33 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 

+

34 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 

+

35 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 

+

36 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 

+

37 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 

+

38 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2, 

+

39 215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219, 7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222, 

+

40 7, 222, 2, 223, 7, 223, 2, 224, 7, 224, 2, 225, 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 2, 229, 7, 

+

41 229, 2, 230, 7, 230, 2, 231, 7, 231, 2, 232, 7, 232, 2, 233, 7, 233, 2, 234, 7, 234, 2, 235, 7, 235, 2, 236, 7, 236, 

+

42 2, 237, 7, 237, 2, 238, 7, 238, 2, 239, 7, 239, 2, 240, 7, 240, 2, 241, 7, 241, 2, 242, 7, 242, 2, 243, 7, 243, 2, 

+

43 244, 7, 244, 2, 245, 7, 245, 2, 246, 7, 246, 2, 247, 7, 247, 2, 248, 7, 248, 2, 249, 7, 249, 2, 250, 7, 250, 2, 251, 

+

44 7, 251, 2, 252, 7, 252, 2, 253, 7, 253, 2, 254, 7, 254, 2, 255, 7, 255, 2, 256, 7, 256, 2, 257, 7, 257, 1, 0, 1, 0, 

+

45 1, 0, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 3, 3, 3, 527, 8, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 533, 8, 3, 1, 4, 1, 

+

46 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 541, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 5, 5, 547, 8, 5, 10, 5, 12, 5, 550, 9, 5, 1, 5, 

+

47 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 558, 8, 6, 1, 6, 1, 6, 1, 6, 3, 6, 563, 8, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 

+

48 8, 1, 9, 1, 9, 1, 9, 3, 9, 574, 8, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 5, 10, 582, 8, 10, 10, 10, 12, 10, 

+

49 585, 9, 10, 1, 10, 1, 10, 5, 10, 589, 8, 10, 10, 10, 12, 10, 592, 9, 10, 1, 10, 1, 10, 3, 10, 596, 8, 10, 1, 10, 3, 

+

50 10, 599, 8, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 608, 8, 11, 1, 11, 1, 11, 1, 11, 3, 11, 613, 

+

51 8, 11, 1, 11, 1, 11, 1, 11, 3, 11, 618, 8, 11, 1, 11, 3, 11, 621, 8, 11, 1, 11, 1, 11, 1, 11, 3, 11, 626, 8, 11, 1, 

+

52 12, 1, 12, 3, 12, 630, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 636, 8, 12, 3, 12, 638, 8, 12, 1, 13, 1, 13, 1, 13, 

+

53 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 3, 14, 650, 8, 14, 1, 15, 1, 15, 1, 15, 5, 15, 655, 8, 15, 10, 15, 

+

54 12, 15, 658, 9, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 666, 8, 16, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 

+

55 672, 8, 17, 1, 17, 1, 17, 3, 17, 676, 8, 17, 1, 18, 1, 18, 3, 18, 680, 8, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 

+

56 19, 3, 19, 688, 8, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 5, 20, 695, 8, 20, 10, 20, 12, 20, 698, 9, 20, 1, 21, 1, 

+

57 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 

+

58 3, 24, 718, 8, 24, 1, 24, 3, 24, 721, 8, 24, 1, 24, 3, 24, 724, 8, 24, 1, 25, 1, 25, 1, 25, 5, 25, 729, 8, 25, 10, 

+

59 25, 12, 25, 732, 9, 25, 1, 25, 5, 25, 735, 8, 25, 10, 25, 12, 25, 738, 9, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 

+

60 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 

+

61 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 766, 8, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 774, 8, 27, 3, 27, 

+

62 776, 8, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 785, 8, 28, 1, 28, 3, 28, 788, 8, 28, 1, 28, 1, 

+

63 28, 1, 28, 1, 28, 3, 28, 794, 8, 28, 3, 28, 796, 8, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 802, 8, 28, 3, 28, 804, 

+

64 8, 28, 1, 28, 5, 28, 807, 8, 28, 10, 28, 12, 28, 810, 9, 28, 1, 28, 1, 28, 5, 28, 814, 8, 28, 10, 28, 12, 28, 817, 

+

65 9, 28, 1, 28, 1, 28, 1, 28, 3, 28, 822, 8, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 3, 29, 829, 8, 29, 1, 29, 1, 29, 

+

66 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 4, 30, 841, 8, 30, 11, 30, 12, 30, 842, 1, 30, 1, 30, 1, 30, 

+

67 3, 30, 848, 8, 30, 1, 30, 1, 30, 1, 31, 1, 31, 3, 31, 854, 8, 31, 1, 31, 1, 31, 1, 31, 1, 31, 4, 31, 860, 8, 31, 11, 

+

68 31, 12, 31, 861, 1, 31, 1, 31, 1, 31, 3, 31, 867, 8, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 5, 32, 875, 8, 

+

69 32, 10, 32, 12, 32, 878, 9, 32, 1, 33, 1, 33, 1, 33, 3, 33, 883, 8, 33, 1, 34, 1, 34, 1, 34, 5, 34, 888, 8, 34, 10, 

+

70 34, 12, 34, 891, 9, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 898, 8, 35, 1, 35, 3, 35, 901, 8, 35, 1, 35, 1, 

+

71 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 3, 36, 910, 8, 36, 1, 36, 3, 36, 913, 8, 36, 1, 36, 3, 36, 916, 8, 36, 1, 36, 

+

72 1, 36, 3, 36, 920, 8, 36, 1, 36, 3, 36, 923, 8, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 931, 8, 37, 1, 

+

73 37, 3, 37, 934, 8, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 3, 39, 945, 8, 39, 1, 40, 1, 

+

74 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 3, 41, 957, 8, 41, 1, 41, 3, 41, 960, 8, 41, 1, 41, 1, 

+

75 41, 1, 41, 1, 42, 1, 42, 1, 42, 3, 42, 968, 8, 42, 1, 42, 3, 42, 971, 8, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 3, 

+

76 43, 978, 8, 43, 1, 43, 3, 43, 981, 8, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 3, 44, 992, 

+

77 8, 44, 1, 44, 3, 44, 995, 8, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 3, 45, 1002, 8, 45, 1, 45, 3, 45, 1005, 8, 45, 

+

78 1, 45, 1, 45, 1, 45, 3, 45, 1010, 8, 45, 1, 46, 1, 46, 1, 46, 3, 46, 1015, 8, 46, 1, 46, 3, 46, 1018, 8, 46, 1, 46, 

+

79 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1028, 8, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1033, 8, 47, 1, 47, 

+

80 1, 47, 1, 47, 3, 47, 1038, 8, 47, 1, 47, 3, 47, 1041, 8, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1046, 8, 47, 1, 48, 1, 48, 

+

81 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1057, 8, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 3, 

+

82 50, 1065, 8, 50, 1, 50, 1, 50, 3, 50, 1069, 8, 50, 1, 51, 1, 51, 1, 51, 3, 51, 1074, 8, 51, 1, 51, 1, 51, 1, 51, 1, 

+

83 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 5, 52, 1087, 8, 52, 10, 52, 12, 52, 1090, 9, 52, 1, 52, 1, 52, 

+

84 3, 52, 1094, 8, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 5, 53, 1102, 8, 53, 10, 53, 12, 53, 1105, 9, 53, 1, 

+

85 53, 1, 53, 1, 53, 3, 53, 1110, 8, 53, 1, 53, 3, 53, 1113, 8, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 3, 54, 1120, 8, 

+

86 54, 1, 55, 1, 55, 3, 55, 1124, 8, 55, 1, 56, 1, 56, 3, 56, 1128, 8, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 

+

87 57, 1136, 8, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 3, 59, 1149, 8, 59, 1, 

+

88 60, 1, 60, 1, 60, 1, 60, 5, 60, 1155, 8, 60, 10, 60, 12, 60, 1158, 9, 60, 1, 60, 1, 60, 3, 60, 1162, 8, 60, 1, 60, 

+

89 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 3, 61, 1170, 8, 61, 1, 62, 1, 62, 1, 62, 1, 62, 5, 62, 1176, 8, 62, 10, 62, 12, 

+

90 62, 1179, 9, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 3, 63, 1186, 8, 63, 1, 63, 3, 63, 1189, 8, 63, 1, 64, 4, 64, 

+

91 1192, 8, 64, 11, 64, 12, 64, 1193, 1, 64, 1, 64, 1, 65, 5, 65, 1199, 8, 65, 10, 65, 12, 65, 1202, 9, 65, 1, 65, 1, 

+

92 65, 1, 66, 1, 66, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 3, 69, 1218, 8, 69, 1, 70, 

+

93 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 3, 72, 1232, 8, 72, 1, 72, 1, 72, 1, 

+

94 73, 1, 73, 3, 73, 1238, 8, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 3, 75, 1247, 8, 75, 1, 76, 1, 76, 3, 

+

95 76, 1251, 8, 76, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 3, 78, 1258, 8, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 3, 79, 

+

96 1265, 8, 79, 1, 79, 1, 79, 1, 79, 3, 79, 1270, 8, 79, 1, 80, 1, 80, 1, 81, 1, 81, 3, 81, 1276, 8, 81, 1, 82, 1, 82, 

+

97 1, 82, 1, 82, 3, 82, 1282, 8, 82, 1, 82, 3, 82, 1285, 8, 82, 1, 82, 5, 82, 1288, 8, 82, 10, 82, 12, 82, 1291, 9, 82, 

+

98 1, 82, 1, 82, 5, 82, 1295, 8, 82, 10, 82, 12, 82, 1298, 9, 82, 3, 82, 1300, 8, 82, 1, 82, 1, 82, 3, 82, 1304, 8, 82, 

+

99 1, 82, 3, 82, 1307, 8, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 

+

100 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 3, 83, 1331, 8, 83, 1, 84, 1, 84, 3, 84, 1335, 8, 

+

101 84, 1, 85, 1, 85, 1, 85, 5, 85, 1340, 8, 85, 10, 85, 12, 85, 1343, 9, 85, 1, 85, 1, 85, 3, 85, 1347, 8, 85, 1, 86, 

+

102 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 3, 87, 1357, 8, 87, 1, 88, 1, 88, 1, 89, 1, 89, 1, 90, 1, 90, 1, 

+

103 90, 1, 90, 5, 90, 1367, 8, 90, 10, 90, 12, 90, 1370, 9, 90, 1, 90, 1, 90, 1, 91, 1, 91, 3, 91, 1376, 8, 91, 1, 91, 

+

104 1, 91, 3, 91, 1380, 8, 91, 1, 91, 1, 91, 3, 91, 1384, 8, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 

+

105 3, 92, 1394, 8, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 

+

106 92, 1, 92, 1, 92, 1, 92, 1, 92, 5, 92, 1414, 8, 92, 10, 92, 12, 92, 1417, 9, 92, 1, 93, 1, 93, 3, 93, 1421, 8, 93, 

+

107 1, 94, 1, 94, 1, 94, 3, 94, 1426, 8, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 

+

108 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 3, 98, 1452, 8, 98, 

+

109 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 3, 99, 1459, 8, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 

+

110 3, 101, 1469, 8, 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 

+

111 103, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 5, 105, 1491, 8, 105, 10, 105, 12, 105, 1494, 

+

112 9, 105, 1, 105, 3, 105, 1497, 8, 105, 1, 105, 5, 105, 1500, 8, 105, 10, 105, 12, 105, 1503, 9, 105, 1, 105, 1, 105, 

+

113 1, 105, 3, 105, 1508, 8, 105, 1, 105, 1, 105, 1, 106, 1, 106, 3, 106, 1514, 8, 106, 1, 107, 1, 107, 1, 108, 1, 108, 

+

114 1, 108, 3, 108, 1521, 8, 108, 1, 108, 1, 108, 1, 108, 1, 108, 3, 108, 1527, 8, 108, 1, 109, 1, 109, 1, 109, 1, 109, 

+

115 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 3, 111, 1540, 8, 111, 1, 111, 1, 111, 1, 111, 3, 111, 1545, 

+

116 8, 111, 1, 111, 1, 111, 1, 111, 1, 111, 3, 111, 1551, 8, 111, 1, 111, 1, 111, 1, 111, 3, 111, 1556, 8, 111, 1, 111, 

+

117 1, 111, 1, 112, 1, 112, 1, 112, 3, 112, 1563, 8, 112, 1, 113, 1, 113, 1, 113, 3, 113, 1568, 8, 113, 1, 114, 5, 114, 

+

118 1571, 8, 114, 10, 114, 12, 114, 1574, 9, 114, 1, 114, 3, 114, 1577, 8, 114, 1, 114, 5, 114, 1580, 8, 114, 10, 114, 

+

119 12, 114, 1583, 9, 114, 1, 114, 1, 114, 3, 114, 1587, 8, 114, 1, 114, 3, 114, 1590, 8, 114, 1, 115, 1, 115, 1, 115, 

+

120 1, 115, 1, 115, 5, 115, 1597, 8, 115, 10, 115, 12, 115, 1600, 9, 115, 1, 115, 3, 115, 1603, 8, 115, 1, 115, 1, 115, 

+

121 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 3, 117, 1616, 8, 117, 1, 118, 1, 118, 1, 

+

122 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 5, 118, 1626, 8, 118, 10, 118, 12, 118, 1629, 9, 118, 1, 118, 1, 118, 

+

123 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 5, 119, 1641, 8, 119, 10, 119, 12, 119, 1644, 9, 

+

124 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 5, 121, 1656, 8, 121, 10, 121, 

+

125 12, 121, 1659, 9, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 3, 122, 1666, 8, 122, 1, 122, 1, 122, 1, 122, 1, 122, 

+

126 1, 122, 1, 122, 3, 122, 1674, 8, 122, 1, 122, 1, 122, 1, 122, 1, 122, 5, 122, 1680, 8, 122, 10, 122, 12, 122, 1683, 

+

127 9, 122, 1, 122, 1, 122, 1, 122, 3, 122, 1688, 8, 122, 1, 122, 1, 122, 3, 122, 1692, 8, 122, 1, 122, 1, 122, 1, 122, 

+

128 3, 122, 1697, 8, 122, 1, 122, 1, 122, 1, 123, 1, 123, 3, 123, 1703, 8, 123, 1, 123, 1, 123, 1, 123, 1, 123, 5, 123, 

+

129 1709, 8, 123, 10, 123, 12, 123, 1712, 9, 123, 1, 123, 1, 123, 1, 123, 1, 123, 5, 123, 1718, 8, 123, 10, 123, 12, 

+

130 123, 1721, 9, 123, 5, 123, 1723, 8, 123, 10, 123, 12, 123, 1726, 9, 123, 1, 123, 1, 123, 5, 123, 1730, 8, 123, 10, 

+

131 123, 12, 123, 1733, 9, 123, 3, 123, 1735, 8, 123, 1, 123, 1, 123, 1, 123, 3, 123, 1740, 8, 123, 1, 123, 1, 123, 1, 

+

132 124, 1, 124, 3, 124, 1746, 8, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 

+

133 1, 126, 1, 126, 1, 126, 3, 126, 1761, 8, 126, 1, 127, 1, 127, 3, 127, 1765, 8, 127, 1, 128, 1, 128, 1, 128, 1, 128, 

+

134 5, 128, 1771, 8, 128, 10, 128, 12, 128, 1774, 9, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 3, 

+

135 130, 1783, 8, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 3, 130, 1791, 8, 130, 1, 130, 1, 130, 3, 130, 

+

136 1795, 8, 130, 1, 131, 1, 131, 1, 131, 5, 131, 1800, 8, 131, 10, 131, 12, 131, 1803, 9, 131, 1, 131, 1, 131, 3, 131, 

+

137 1807, 8, 131, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 134, 3, 134, 1815, 8, 134, 1, 134, 1, 134, 1, 134, 3, 134, 

+

138 1820, 8, 134, 1, 134, 1, 134, 1, 134, 3, 134, 1825, 8, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 3, 135, 

+

139 1833, 8, 135, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 138, 3, 138, 1843, 8, 138, 1, 138, 1, 138, 

+

140 1, 138, 3, 138, 1848, 8, 138, 1, 138, 1, 138, 1, 138, 1, 138, 3, 138, 1854, 8, 138, 1, 138, 1, 138, 1, 138, 1, 139, 

+

141 1, 139, 1, 139, 5, 139, 1862, 8, 139, 10, 139, 12, 139, 1865, 9, 139, 1, 139, 3, 139, 1868, 8, 139, 1, 140, 1, 140, 

+

142 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 3, 141, 1883, 8, 141, 1, 

+

143 142, 1, 142, 1, 142, 3, 142, 1888, 8, 142, 1, 142, 1, 142, 1, 142, 1, 142, 3, 142, 1894, 8, 142, 1, 143, 3, 143, 

+

144 1897, 8, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 3, 144, 1906, 8, 144, 1, 145, 1, 145, 3, 145, 

+

145 1910, 8, 145, 1, 146, 1, 146, 3, 146, 1914, 8, 146, 1, 147, 1, 147, 1, 147, 1, 147, 3, 147, 1920, 8, 147, 1, 148, 1, 

+

146 148, 3, 148, 1924, 8, 148, 1, 149, 3, 149, 1927, 8, 149, 1, 149, 1, 149, 1, 149, 3, 149, 1932, 8, 149, 1, 149, 1, 

+

147 149, 1, 149, 3, 149, 1937, 8, 149, 1, 150, 1, 150, 1, 150, 1, 150, 3, 150, 1943, 8, 150, 1, 151, 1, 151, 1, 151, 1, 

+

148 151, 5, 151, 1949, 8, 151, 10, 151, 12, 151, 1952, 9, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 

+

149 1, 152, 1, 152, 3, 152, 1963, 8, 152, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 3, 153, 1970, 8, 153, 1, 154, 1, 154, 

+

150 3, 154, 1974, 8, 154, 1, 154, 3, 154, 1977, 8, 154, 1, 154, 1, 154, 5, 154, 1981, 8, 154, 10, 154, 12, 154, 1984, 9, 

+

151 154, 1, 154, 1, 154, 1, 154, 3, 154, 1989, 8, 154, 1, 154, 1, 154, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 3, 156, 

+

152 1998, 8, 156, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 5, 157, 2006, 8, 157, 10, 157, 12, 157, 2009, 9, 157, 

+

153 1, 157, 1, 157, 1, 157, 3, 157, 2014, 8, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 159, 1, 

+

154 159, 1, 159, 1, 159, 1, 159, 3, 159, 2028, 8, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 

+

155 5, 159, 2038, 8, 159, 10, 159, 12, 159, 2041, 9, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 

+

156 159, 1, 159, 3, 159, 2052, 8, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 3, 159, 2060, 8, 159, 5, 159, 

+

157 2062, 8, 159, 10, 159, 12, 159, 2065, 9, 159, 1, 160, 1, 160, 3, 160, 2069, 8, 160, 1, 160, 1, 160, 3, 160, 2073, 8, 

+

158 160, 1, 160, 1, 160, 3, 160, 2077, 8, 160, 1, 160, 1, 160, 1, 161, 1, 161, 3, 161, 2083, 8, 161, 1, 161, 1, 161, 1, 

+

159 161, 1, 162, 1, 162, 3, 162, 2090, 8, 162, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 5, 163, 2097, 8, 163, 10, 163, 

+

160 12, 163, 2100, 9, 163, 1, 163, 1, 163, 1, 163, 3, 163, 2105, 8, 163, 1, 163, 3, 163, 2108, 8, 163, 1, 163, 1, 163, 

+

161 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 

+

162 164, 1, 164, 1, 164, 3, 164, 2129, 8, 164, 1, 165, 1, 165, 1, 165, 1, 165, 3, 165, 2135, 8, 165, 1, 165, 5, 165, 

+

163 2138, 8, 165, 10, 165, 12, 165, 2141, 9, 165, 1, 165, 1, 165, 3, 165, 2145, 8, 165, 1, 165, 3, 165, 2148, 8, 165, 1, 

+

164 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 

+

165 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 3, 166, 2170, 8, 166, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 3, 

+

166 167, 2178, 8, 167, 1, 167, 1, 167, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 5, 168, 2187, 8, 168, 10, 168, 12, 168, 

+

167 2190, 9, 168, 1, 168, 1, 168, 1, 169, 1, 169, 3, 169, 2196, 8, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 

+

168 1, 170, 1, 170, 1, 171, 1, 171, 1, 171, 5, 171, 2209, 8, 171, 10, 171, 12, 171, 2212, 9, 171, 1, 171, 1, 171, 1, 

+

169 172, 1, 172, 1, 173, 1, 173, 1, 173, 1, 174, 3, 174, 2222, 8, 174, 1, 174, 1, 174, 1, 175, 1, 175, 1, 175, 1, 175, 

+

170 1, 175, 5, 175, 2231, 8, 175, 10, 175, 12, 175, 2234, 9, 175, 1, 175, 1, 175, 1, 175, 3, 175, 2239, 8, 175, 1, 176, 

+

171 1, 176, 3, 176, 2243, 8, 176, 1, 176, 1, 176, 1, 176, 3, 176, 2248, 8, 176, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 

+

172 1, 177, 1, 177, 5, 177, 2257, 8, 177, 10, 177, 12, 177, 2260, 9, 177, 1, 177, 3, 177, 2263, 8, 177, 1, 177, 1, 177, 

+

173 1, 177, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 

+

174 179, 1, 179, 1, 179, 1, 179, 3, 179, 2285, 8, 179, 1, 180, 1, 180, 1, 180, 1, 181, 1, 181, 1, 182, 1, 182, 3, 182, 

+

175 2294, 8, 182, 1, 182, 3, 182, 2297, 8, 182, 1, 183, 1, 183, 3, 183, 2301, 8, 183, 1, 183, 1, 183, 1, 183, 1, 184, 1, 

+

176 184, 1, 184, 3, 184, 2309, 8, 184, 1, 184, 1, 184, 1, 184, 1, 184, 3, 184, 2315, 8, 184, 1, 185, 1, 185, 1, 185, 1, 

+

177 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 3, 185, 

+

178 2334, 8, 185, 1, 186, 1, 186, 3, 186, 2338, 8, 186, 1, 187, 1, 187, 3, 187, 2342, 8, 187, 1, 187, 1, 187, 1, 187, 1, 

+

179 187, 1, 187, 3, 187, 2349, 8, 187, 1, 187, 3, 187, 2352, 8, 187, 1, 187, 5, 187, 2355, 8, 187, 10, 187, 12, 187, 

+

180 2358, 9, 187, 1, 187, 1, 187, 5, 187, 2362, 8, 187, 10, 187, 12, 187, 2365, 9, 187, 1, 187, 1, 187, 1, 187, 3, 187, 

+

181 2370, 8, 187, 1, 187, 1, 187, 1, 188, 1, 188, 3, 188, 2376, 8, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 

+

182 3, 188, 2384, 8, 188, 1, 188, 3, 188, 2387, 8, 188, 1, 188, 5, 188, 2390, 8, 188, 10, 188, 12, 188, 2393, 9, 188, 1, 

+

183 188, 1, 188, 5, 188, 2397, 8, 188, 10, 188, 12, 188, 2400, 9, 188, 1, 188, 1, 188, 3, 188, 2404, 8, 188, 1, 188, 1, 

+

184 188, 3, 188, 2408, 8, 188, 1, 188, 1, 188, 1, 189, 1, 189, 1, 189, 5, 189, 2415, 8, 189, 10, 189, 12, 189, 2418, 9, 

+

185 189, 1, 189, 1, 189, 1, 189, 1, 189, 3, 189, 2424, 8, 189, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 

+

186 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 3, 190, 2443, 8, 190, 1, 191, 1, 

+

187 191, 5, 191, 2447, 8, 191, 10, 191, 12, 191, 2450, 9, 191, 1, 191, 1, 191, 1, 191, 3, 191, 2455, 8, 191, 1, 192, 1, 

+

188 192, 1, 192, 1, 192, 1, 192, 1, 192, 3, 192, 2463, 8, 192, 1, 193, 1, 193, 3, 193, 2467, 8, 193, 1, 194, 1, 194, 1, 

+

189 194, 3, 194, 2472, 8, 194, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 3, 195, 2482, 8, 195, 1, 

+

190 196, 1, 196, 1, 196, 3, 196, 2487, 8, 196, 1, 197, 1, 197, 1, 197, 1, 198, 1, 198, 1, 198, 1, 198, 5, 198, 2496, 8, 

+

191 198, 10, 198, 12, 198, 2499, 9, 198, 1, 198, 1, 198, 1, 199, 1, 199, 1, 199, 1, 200, 1, 200, 1, 200, 5, 200, 2509, 

+

192 8, 200, 10, 200, 12, 200, 2512, 9, 200, 1, 201, 1, 201, 1, 201, 1, 202, 1, 202, 1, 202, 5, 202, 2520, 8, 202, 10, 

+

193 202, 12, 202, 2523, 9, 202, 1, 203, 1, 203, 5, 203, 2527, 8, 203, 10, 203, 12, 203, 2530, 9, 203, 1, 203, 1, 203, 1, 

+

194 203, 3, 203, 2535, 8, 203, 1, 204, 1, 204, 1, 204, 1, 204, 3, 204, 2541, 8, 204, 1, 205, 1, 205, 5, 205, 2545, 8, 

+

195 205, 10, 205, 12, 205, 2548, 9, 205, 1, 205, 1, 205, 1, 206, 1, 206, 3, 206, 2554, 8, 206, 1, 206, 1, 206, 1, 206, 

+

196 1, 206, 3, 206, 2560, 8, 206, 1, 206, 1, 206, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 3, 207, 2569, 8, 207, 1, 208, 

+

197 1, 208, 3, 208, 2573, 8, 208, 1, 209, 1, 209, 1, 210, 1, 210, 1, 210, 1, 210, 3, 210, 2581, 8, 210, 1, 211, 1, 211, 

+

198 1, 211, 3, 211, 2586, 8, 211, 1, 211, 1, 211, 1, 211, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 5, 212, 2596, 8, 212, 

+

199 10, 212, 12, 212, 2599, 9, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 213, 1, 213, 1, 213, 1, 213, 3, 213, 2609, 8, 

+

200 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 214, 1, 214, 1, 214, 4, 214, 2621, 8, 214, 11, 214, 

+

201 12, 214, 2622, 1, 214, 1, 214, 1, 214, 5, 214, 2628, 8, 214, 10, 214, 12, 214, 2631, 9, 214, 1, 214, 1, 214, 3, 214, 

+

202 2635, 8, 214, 1, 215, 1, 215, 3, 215, 2639, 8, 215, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 2645, 8, 216, 1, 216, 1, 

+

203 216, 1, 216, 1, 216, 1, 216, 1, 217, 1, 217, 1, 217, 1, 217, 3, 217, 2656, 8, 217, 1, 217, 1, 217, 1, 217, 1, 217, 

+

204 1, 217, 1, 217, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 5, 218, 2669, 8, 218, 10, 218, 12, 218, 2672, 9, 218, 1, 

+

205 218, 1, 218, 1, 218, 1, 218, 1, 219, 1, 219, 1, 219, 1, 220, 1, 220, 1, 220, 5, 220, 2684, 8, 220, 10, 220, 12, 220, 

+

206 2687, 9, 220, 1, 221, 1, 221, 3, 221, 2691, 8, 221, 1, 221, 1, 221, 3, 221, 2695, 8, 221, 1, 221, 5, 221, 2698, 8, 

+

207 221, 10, 221, 12, 221, 2701, 9, 221, 1, 221, 1, 221, 5, 221, 2705, 8, 221, 10, 221, 12, 221, 2708, 9, 221, 1, 221, 

+

208 1, 221, 3, 221, 2712, 8, 221, 1, 221, 3, 221, 2715, 8, 221, 1, 221, 1, 221, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 

+

209 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 3, 222, 2733, 8, 222, 1, 223, 1, 223, 3, 

+

210 223, 2737, 8, 223, 1, 223, 1, 223, 1, 223, 3, 223, 2742, 8, 223, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 3, 224, 

+

211 2749, 8, 224, 1, 224, 1, 224, 3, 224, 2753, 8, 224, 1, 224, 1, 224, 1, 225, 1, 225, 1, 225, 5, 225, 2760, 8, 225, 

+

212 10, 225, 12, 225, 2763, 9, 225, 1, 225, 1, 225, 3, 225, 2767, 8, 225, 1, 226, 1, 226, 1, 226, 1, 226, 5, 226, 2773, 

+

213 8, 226, 10, 226, 12, 226, 2776, 9, 226, 3, 226, 2778, 8, 226, 1, 226, 1, 226, 3, 226, 2782, 8, 226, 1, 226, 1, 226, 

+

214 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 3, 227, 2793, 8, 227, 1, 228, 1, 228, 1, 228, 1, 228, 1, 

+

215 228, 1, 228, 1, 228, 1, 229, 3, 229, 2803, 8, 229, 1, 229, 1, 229, 3, 229, 2807, 8, 229, 1, 229, 1, 229, 3, 229, 

+

216 2811, 8, 229, 1, 230, 1, 230, 1, 230, 1, 230, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 232, 1, 232, 1, 232, 3, 

+

217 232, 2825, 8, 232, 1, 233, 1, 233, 1, 233, 3, 233, 2830, 8, 233, 1, 233, 1, 233, 1, 233, 1, 234, 1, 234, 1, 234, 1, 

+

218 234, 1, 234, 1, 235, 1, 235, 1, 235, 5, 235, 2843, 8, 235, 10, 235, 12, 235, 2846, 9, 235, 1, 235, 1, 235, 5, 235, 

+

219 2850, 8, 235, 10, 235, 12, 235, 2853, 9, 235, 1, 235, 1, 235, 3, 235, 2857, 8, 235, 1, 235, 3, 235, 2860, 8, 235, 1, 

+

220 235, 1, 235, 1, 236, 1, 236, 1, 236, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 

+

221 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 3, 237, 2884, 8, 237, 1, 238, 1, 238, 1, 238, 1, 238, 1, 

+

222 238, 1, 238, 3, 238, 2892, 8, 238, 1, 238, 3, 238, 2895, 8, 238, 1, 238, 1, 238, 1, 239, 1, 239, 1, 240, 1, 240, 3, 

+

223 240, 2903, 8, 240, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 242, 3, 242, 2912, 8, 242, 1, 242, 1, 242, 3, 

+

224 242, 2916, 8, 242, 1, 243, 1, 243, 1, 244, 1, 244, 3, 244, 2922, 8, 244, 1, 245, 1, 245, 1, 245, 1, 246, 1, 246, 1, 

+

225 246, 1, 246, 1, 246, 1, 247, 1, 247, 3, 247, 2934, 8, 247, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 3, 248, 

+

226 2942, 8, 248, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 5, 249, 2949, 8, 249, 10, 249, 12, 249, 2952, 9, 249, 1, 249, 

+

227 1, 249, 1, 249, 1, 249, 1, 250, 1, 250, 1, 250, 1, 250, 1, 251, 1, 251, 1, 251, 1, 251, 5, 251, 2966, 8, 251, 10, 

+

228 251, 12, 251, 2969, 9, 251, 1, 251, 1, 251, 1, 252, 1, 252, 3, 252, 2975, 8, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 

+

229 253, 1, 253, 3, 253, 2983, 8, 253, 1, 253, 1, 253, 3, 253, 2987, 8, 253, 1, 254, 3, 254, 2990, 8, 254, 1, 254, 1, 

+

230 254, 1, 254, 1, 254, 1, 254, 3, 254, 2997, 8, 254, 1, 254, 1, 254, 3, 254, 3001, 8, 254, 1, 254, 1, 254, 1, 255, 1, 

+

231 255, 3, 255, 3007, 8, 255, 1, 255, 1, 255, 3, 255, 3011, 8, 255, 1, 255, 3, 255, 3014, 8, 255, 1, 255, 3, 255, 3017, 

+

232 8, 255, 1, 255, 1, 255, 1, 256, 1, 256, 1, 256, 5, 256, 3024, 8, 256, 10, 256, 12, 256, 3027, 9, 256, 1, 256, 3, 

+

233 256, 3030, 8, 256, 1, 257, 1, 257, 1, 257, 3, 257, 3035, 8, 257, 1, 257, 1, 257, 1, 257, 3, 257, 3040, 8, 257, 3, 

+

234 257, 3042, 8, 257, 1, 257, 0, 2, 184, 318, 258, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 

+

235 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 

+

236 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 

+

237 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 

+

238 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 

+

239 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276, 278, 

+

240 280, 282, 284, 286, 288, 290, 292, 294, 296, 298, 300, 302, 304, 306, 308, 310, 312, 314, 316, 318, 320, 322, 324, 

+

241 326, 328, 330, 332, 334, 336, 338, 340, 342, 344, 346, 348, 350, 352, 354, 356, 358, 360, 362, 364, 366, 368, 370, 

+

242 372, 374, 376, 378, 380, 382, 384, 386, 388, 390, 392, 394, 396, 398, 400, 402, 404, 406, 408, 410, 412, 414, 416, 

+

243 418, 420, 422, 424, 426, 428, 430, 432, 434, 436, 438, 440, 442, 444, 446, 448, 450, 452, 454, 456, 458, 460, 462, 

+

244 464, 466, 468, 470, 472, 474, 476, 478, 480, 482, 484, 486, 488, 490, 492, 494, 496, 498, 500, 502, 504, 506, 508, 

+

245 510, 512, 514, 0, 19, 1, 0, 161, 163, 4, 0, 79, 80, 93, 93, 98, 98, 163, 163, 1, 0, 162, 163, 2, 0, 30, 30, 102, 

+

246 102, 14, 0, 12, 12, 23, 25, 34, 34, 36, 36, 39, 39, 44, 44, 51, 51, 70, 70, 75, 75, 93, 93, 98, 98, 104, 104, 106, 

+

247 106, 109, 110, 2, 0, 161, 161, 163, 163, 7, 0, 6, 6, 11, 11, 58, 58, 61, 62, 67, 67, 119, 120, 132, 133, 3, 0, 57, 

+

248 57, 84, 84, 134, 135, 2, 0, 132, 133, 137, 137, 2, 0, 87, 88, 94, 97, 2, 0, 121, 131, 140, 140, 5, 0, 11, 11, 58, 

+

249 58, 61, 61, 67, 67, 119, 120, 2, 0, 46, 46, 78, 78, 2, 0, 28, 28, 142, 142, 5, 0, 20, 20, 47, 47, 49, 49, 53, 53, 

+

250 69, 69, 2, 0, 47, 47, 69, 69, 2, 0, 21, 21, 81, 81, 2, 0, 39, 39, 75, 75, 2, 0, 10, 10, 161, 163, 3344, 0, 516, 1, 

+

251 0, 0, 0, 2, 519, 1, 0, 0, 0, 4, 522, 1, 0, 0, 0, 6, 532, 1, 0, 0, 0, 8, 540, 1, 0, 0, 0, 10, 542, 1, 0, 0, 0, 12, 

+

252 553, 1, 0, 0, 0, 14, 566, 1, 0, 0, 0, 16, 568, 1, 0, 0, 0, 18, 570, 1, 0, 0, 0, 20, 575, 1, 0, 0, 0, 22, 625, 1, 0, 

+

253 0, 0, 24, 637, 1, 0, 0, 0, 26, 639, 1, 0, 0, 0, 28, 649, 1, 0, 0, 0, 30, 651, 1, 0, 0, 0, 32, 659, 1, 0, 0, 0, 34, 

+

254 667, 1, 0, 0, 0, 36, 679, 1, 0, 0, 0, 38, 687, 1, 0, 0, 0, 40, 691, 1, 0, 0, 0, 42, 699, 1, 0, 0, 0, 44, 705, 1, 0, 

+

255 0, 0, 46, 707, 1, 0, 0, 0, 48, 717, 1, 0, 0, 0, 50, 725, 1, 0, 0, 0, 52, 765, 1, 0, 0, 0, 54, 775, 1, 0, 0, 0, 56, 

+

256 777, 1, 0, 0, 0, 58, 825, 1, 0, 0, 0, 60, 834, 1, 0, 0, 0, 62, 853, 1, 0, 0, 0, 64, 870, 1, 0, 0, 0, 66, 882, 1, 0, 

+

257 0, 0, 68, 884, 1, 0, 0, 0, 70, 892, 1, 0, 0, 0, 72, 906, 1, 0, 0, 0, 74, 926, 1, 0, 0, 0, 76, 937, 1, 0, 0, 0, 78, 

+

258 944, 1, 0, 0, 0, 80, 946, 1, 0, 0, 0, 82, 956, 1, 0, 0, 0, 84, 964, 1, 0, 0, 0, 86, 977, 1, 0, 0, 0, 88, 985, 1, 0, 

+

259 0, 0, 90, 1001, 1, 0, 0, 0, 92, 1011, 1, 0, 0, 0, 94, 1045, 1, 0, 0, 0, 96, 1047, 1, 0, 0, 0, 98, 1050, 1, 0, 0, 0, 

+

260 100, 1058, 1, 0, 0, 0, 102, 1070, 1, 0, 0, 0, 104, 1078, 1, 0, 0, 0, 106, 1095, 1, 0, 0, 0, 108, 1119, 1, 0, 0, 0, 

+

261 110, 1123, 1, 0, 0, 0, 112, 1127, 1, 0, 0, 0, 114, 1129, 1, 0, 0, 0, 116, 1139, 1, 0, 0, 0, 118, 1148, 1, 0, 0, 0, 

+

262 120, 1150, 1, 0, 0, 0, 122, 1169, 1, 0, 0, 0, 124, 1171, 1, 0, 0, 0, 126, 1188, 1, 0, 0, 0, 128, 1191, 1, 0, 0, 0, 

+

263 130, 1200, 1, 0, 0, 0, 132, 1205, 1, 0, 0, 0, 134, 1207, 1, 0, 0, 0, 136, 1209, 1, 0, 0, 0, 138, 1217, 1, 0, 0, 0, 

+

264 140, 1219, 1, 0, 0, 0, 142, 1223, 1, 0, 0, 0, 144, 1231, 1, 0, 0, 0, 146, 1237, 1, 0, 0, 0, 148, 1239, 1, 0, 0, 0, 

+

265 150, 1246, 1, 0, 0, 0, 152, 1250, 1, 0, 0, 0, 154, 1252, 1, 0, 0, 0, 156, 1257, 1, 0, 0, 0, 158, 1269, 1, 0, 0, 0, 

+

266 160, 1271, 1, 0, 0, 0, 162, 1273, 1, 0, 0, 0, 164, 1277, 1, 0, 0, 0, 166, 1330, 1, 0, 0, 0, 168, 1332, 1, 0, 0, 0, 

+

267 170, 1346, 1, 0, 0, 0, 172, 1348, 1, 0, 0, 0, 174, 1356, 1, 0, 0, 0, 176, 1358, 1, 0, 0, 0, 178, 1360, 1, 0, 0, 0, 

+

268 180, 1362, 1, 0, 0, 0, 182, 1375, 1, 0, 0, 0, 184, 1393, 1, 0, 0, 0, 186, 1420, 1, 0, 0, 0, 188, 1425, 1, 0, 0, 0, 

+

269 190, 1427, 1, 0, 0, 0, 192, 1434, 1, 0, 0, 0, 194, 1441, 1, 0, 0, 0, 196, 1451, 1, 0, 0, 0, 198, 1453, 1, 0, 0, 0, 

+

270 200, 1462, 1, 0, 0, 0, 202, 1468, 1, 0, 0, 0, 204, 1473, 1, 0, 0, 0, 206, 1477, 1, 0, 0, 0, 208, 1482, 1, 0, 0, 0, 

+

271 210, 1484, 1, 0, 0, 0, 212, 1511, 1, 0, 0, 0, 214, 1515, 1, 0, 0, 0, 216, 1526, 1, 0, 0, 0, 218, 1528, 1, 0, 0, 0, 

+

272 220, 1534, 1, 0, 0, 0, 222, 1539, 1, 0, 0, 0, 224, 1562, 1, 0, 0, 0, 226, 1567, 1, 0, 0, 0, 228, 1576, 1, 0, 0, 0, 

+

273 230, 1591, 1, 0, 0, 0, 232, 1607, 1, 0, 0, 0, 234, 1615, 1, 0, 0, 0, 236, 1617, 1, 0, 0, 0, 238, 1633, 1, 0, 0, 0, 

+

274 240, 1648, 1, 0, 0, 0, 242, 1652, 1, 0, 0, 0, 244, 1660, 1, 0, 0, 0, 246, 1702, 1, 0, 0, 0, 248, 1745, 1, 0, 0, 0, 

+

275 250, 1747, 1, 0, 0, 0, 252, 1760, 1, 0, 0, 0, 254, 1764, 1, 0, 0, 0, 256, 1766, 1, 0, 0, 0, 258, 1777, 1, 0, 0, 0, 

+

276 260, 1794, 1, 0, 0, 0, 262, 1806, 1, 0, 0, 0, 264, 1808, 1, 0, 0, 0, 266, 1811, 1, 0, 0, 0, 268, 1814, 1, 0, 0, 0, 

+

277 270, 1832, 1, 0, 0, 0, 272, 1834, 1, 0, 0, 0, 274, 1836, 1, 0, 0, 0, 276, 1842, 1, 0, 0, 0, 278, 1858, 1, 0, 0, 0, 

+

278 280, 1869, 1, 0, 0, 0, 282, 1882, 1, 0, 0, 0, 284, 1884, 1, 0, 0, 0, 286, 1896, 1, 0, 0, 0, 288, 1902, 1, 0, 0, 0, 

+

279 290, 1909, 1, 0, 0, 0, 292, 1913, 1, 0, 0, 0, 294, 1915, 1, 0, 0, 0, 296, 1923, 1, 0, 0, 0, 298, 1926, 1, 0, 0, 0, 

+

280 300, 1942, 1, 0, 0, 0, 302, 1944, 1, 0, 0, 0, 304, 1962, 1, 0, 0, 0, 306, 1969, 1, 0, 0, 0, 308, 1973, 1, 0, 0, 0, 

+

281 310, 1992, 1, 0, 0, 0, 312, 1997, 1, 0, 0, 0, 314, 1999, 1, 0, 0, 0, 316, 2017, 1, 0, 0, 0, 318, 2027, 1, 0, 0, 0, 

+

282 320, 2068, 1, 0, 0, 0, 322, 2082, 1, 0, 0, 0, 324, 2089, 1, 0, 0, 0, 326, 2091, 1, 0, 0, 0, 328, 2128, 1, 0, 0, 0, 

+

283 330, 2130, 1, 0, 0, 0, 332, 2169, 1, 0, 0, 0, 334, 2171, 1, 0, 0, 0, 336, 2181, 1, 0, 0, 0, 338, 2195, 1, 0, 0, 0, 

+

284 340, 2201, 1, 0, 0, 0, 342, 2210, 1, 0, 0, 0, 344, 2215, 1, 0, 0, 0, 346, 2217, 1, 0, 0, 0, 348, 2221, 1, 0, 0, 0, 

+

285 350, 2225, 1, 0, 0, 0, 352, 2242, 1, 0, 0, 0, 354, 2251, 1, 0, 0, 0, 356, 2267, 1, 0, 0, 0, 358, 2284, 1, 0, 0, 0, 

+

286 360, 2286, 1, 0, 0, 0, 362, 2289, 1, 0, 0, 0, 364, 2291, 1, 0, 0, 0, 366, 2300, 1, 0, 0, 0, 368, 2305, 1, 0, 0, 0, 

+

287 370, 2333, 1, 0, 0, 0, 372, 2337, 1, 0, 0, 0, 374, 2341, 1, 0, 0, 0, 376, 2375, 1, 0, 0, 0, 378, 2411, 1, 0, 0, 0, 

+

288 380, 2442, 1, 0, 0, 0, 382, 2444, 1, 0, 0, 0, 384, 2462, 1, 0, 0, 0, 386, 2466, 1, 0, 0, 0, 388, 2468, 1, 0, 0, 0, 

+

289 390, 2473, 1, 0, 0, 0, 392, 2486, 1, 0, 0, 0, 394, 2488, 1, 0, 0, 0, 396, 2491, 1, 0, 0, 0, 398, 2502, 1, 0, 0, 0, 

+

290 400, 2505, 1, 0, 0, 0, 402, 2513, 1, 0, 0, 0, 404, 2516, 1, 0, 0, 0, 406, 2524, 1, 0, 0, 0, 408, 2536, 1, 0, 0, 0, 

+

291 410, 2546, 1, 0, 0, 0, 412, 2553, 1, 0, 0, 0, 414, 2568, 1, 0, 0, 0, 416, 2572, 1, 0, 0, 0, 418, 2574, 1, 0, 0, 0, 

+

292 420, 2580, 1, 0, 0, 0, 422, 2582, 1, 0, 0, 0, 424, 2597, 1, 0, 0, 0, 426, 2604, 1, 0, 0, 0, 428, 2634, 1, 0, 0, 0, 

+

293 430, 2638, 1, 0, 0, 0, 432, 2640, 1, 0, 0, 0, 434, 2651, 1, 0, 0, 0, 436, 2670, 1, 0, 0, 0, 438, 2677, 1, 0, 0, 0, 

+

294 440, 2680, 1, 0, 0, 0, 442, 2690, 1, 0, 0, 0, 444, 2732, 1, 0, 0, 0, 446, 2736, 1, 0, 0, 0, 448, 2743, 1, 0, 0, 0, 

+

295 450, 2766, 1, 0, 0, 0, 452, 2768, 1, 0, 0, 0, 454, 2785, 1, 0, 0, 0, 456, 2794, 1, 0, 0, 0, 458, 2802, 1, 0, 0, 0, 

+

296 460, 2812, 1, 0, 0, 0, 462, 2816, 1, 0, 0, 0, 464, 2824, 1, 0, 0, 0, 466, 2826, 1, 0, 0, 0, 468, 2834, 1, 0, 0, 0, 

+

297 470, 2839, 1, 0, 0, 0, 472, 2863, 1, 0, 0, 0, 474, 2883, 1, 0, 0, 0, 476, 2885, 1, 0, 0, 0, 478, 2898, 1, 0, 0, 0, 

+

298 480, 2902, 1, 0, 0, 0, 482, 2904, 1, 0, 0, 0, 484, 2911, 1, 0, 0, 0, 486, 2917, 1, 0, 0, 0, 488, 2921, 1, 0, 0, 0, 

+

299 490, 2923, 1, 0, 0, 0, 492, 2926, 1, 0, 0, 0, 494, 2933, 1, 0, 0, 0, 496, 2941, 1, 0, 0, 0, 498, 2943, 1, 0, 0, 0, 

+

300 500, 2957, 1, 0, 0, 0, 502, 2961, 1, 0, 0, 0, 504, 2974, 1, 0, 0, 0, 506, 2982, 1, 0, 0, 0, 508, 2989, 1, 0, 0, 0, 

+

301 510, 3006, 1, 0, 0, 0, 512, 3029, 1, 0, 0, 0, 514, 3041, 1, 0, 0, 0, 516, 517, 5, 153, 0, 0, 517, 518, 3, 342, 171, 

+

302 0, 518, 1, 1, 0, 0, 0, 519, 520, 5, 7, 0, 0, 520, 521, 3, 248, 124, 0, 521, 3, 1, 0, 0, 0, 522, 523, 5, 7, 0, 0, 

+

303 523, 524, 3, 484, 242, 0, 524, 5, 1, 0, 0, 0, 525, 527, 5, 48, 0, 0, 526, 525, 1, 0, 0, 0, 526, 527, 1, 0, 0, 0, 

+

304 527, 528, 1, 0, 0, 0, 528, 533, 3, 184, 92, 0, 529, 533, 3, 318, 159, 0, 530, 533, 3, 484, 242, 0, 531, 533, 5, 66, 

+

305 0, 0, 532, 526, 1, 0, 0, 0, 532, 529, 1, 0, 0, 0, 532, 530, 1, 0, 0, 0, 532, 531, 1, 0, 0, 0, 533, 7, 1, 0, 0, 0, 

+

306 534, 541, 3, 6, 3, 0, 535, 536, 3, 318, 159, 0, 536, 537, 5, 143, 0, 0, 537, 538, 3, 6, 3, 0, 538, 539, 5, 144, 0, 

+

307 0, 539, 541, 1, 0, 0, 0, 540, 534, 1, 0, 0, 0, 540, 535, 1, 0, 0, 0, 541, 9, 1, 0, 0, 0, 542, 543, 5, 143, 0, 0, 

+

308 543, 548, 3, 144, 72, 0, 544, 545, 5, 151, 0, 0, 545, 547, 3, 144, 72, 0, 546, 544, 1, 0, 0, 0, 547, 550, 1, 0, 0, 

+

309 0, 548, 546, 1, 0, 0, 0, 548, 549, 1, 0, 0, 0, 549, 551, 1, 0, 0, 0, 550, 548, 1, 0, 0, 0, 551, 552, 5, 144, 0, 0, 

+

310 552, 11, 1, 0, 0, 0, 553, 554, 5, 9, 0, 0, 554, 557, 3, 14, 7, 0, 555, 556, 5, 149, 0, 0, 556, 558, 3, 16, 8, 0, 

+

311 557, 555, 1, 0, 0, 0, 557, 558, 1, 0, 0, 0, 558, 559, 1, 0, 0, 0, 559, 560, 5, 50, 0, 0, 560, 562, 3, 318, 159, 0, 

+

312 561, 563, 3, 452, 226, 0, 562, 561, 1, 0, 0, 0, 562, 563, 1, 0, 0, 0, 563, 564, 1, 0, 0, 0, 564, 565, 5, 150, 0, 0, 

+

313 565, 13, 1, 0, 0, 0, 566, 567, 7, 0, 0, 0, 567, 15, 1, 0, 0, 0, 568, 569, 3, 484, 242, 0, 569, 17, 1, 0, 0, 0, 570, 

+

314 573, 5, 59, 0, 0, 571, 574, 3, 484, 242, 0, 572, 574, 3, 390, 195, 0, 573, 571, 1, 0, 0, 0, 573, 572, 1, 0, 0, 0, 

+

315 574, 19, 1, 0, 0, 0, 575, 576, 5, 12, 0, 0, 576, 577, 5, 163, 0, 0, 577, 578, 5, 64, 0, 0, 578, 579, 5, 163, 0, 0, 

+

316 579, 583, 5, 50, 0, 0, 580, 582, 3, 52, 26, 0, 581, 580, 1, 0, 0, 0, 582, 585, 1, 0, 0, 0, 583, 581, 1, 0, 0, 0, 

+

317 583, 584, 1, 0, 0, 0, 584, 586, 1, 0, 0, 0, 585, 583, 1, 0, 0, 0, 586, 590, 5, 17, 0, 0, 587, 589, 3, 94, 47, 0, 

+

318 588, 587, 1, 0, 0, 0, 589, 592, 1, 0, 0, 0, 590, 588, 1, 0, 0, 0, 590, 591, 1, 0, 0, 0, 591, 593, 1, 0, 0, 0, 592, 

+

319 590, 1, 0, 0, 0, 593, 595, 5, 33, 0, 0, 594, 596, 5, 12, 0, 0, 595, 594, 1, 0, 0, 0, 595, 596, 1, 0, 0, 0, 596, 598, 

+

320 1, 0, 0, 0, 597, 599, 5, 163, 0, 0, 598, 597, 1, 0, 0, 0, 598, 599, 1, 0, 0, 0, 599, 600, 1, 0, 0, 0, 600, 601, 5, 

+

321 150, 0, 0, 601, 21, 1, 0, 0, 0, 602, 626, 3, 56, 28, 0, 603, 626, 3, 374, 187, 0, 604, 626, 3, 376, 188, 0, 605, 

+

322 606, 5, 163, 0, 0, 606, 608, 5, 149, 0, 0, 607, 605, 1, 0, 0, 0, 607, 608, 1, 0, 0, 0, 608, 609, 1, 0, 0, 0, 609, 

+

323 626, 3, 86, 43, 0, 610, 611, 5, 163, 0, 0, 611, 613, 5, 149, 0, 0, 612, 610, 1, 0, 0, 0, 612, 613, 1, 0, 0, 0, 613, 

+

324 614, 1, 0, 0, 0, 614, 626, 3, 82, 41, 0, 615, 616, 5, 163, 0, 0, 616, 618, 5, 149, 0, 0, 617, 615, 1, 0, 0, 0, 617, 

+

325 618, 1, 0, 0, 0, 618, 620, 1, 0, 0, 0, 619, 621, 5, 73, 0, 0, 620, 619, 1, 0, 0, 0, 620, 621, 1, 0, 0, 0, 621, 622, 

+

326 1, 0, 0, 0, 622, 626, 3, 90, 45, 0, 623, 626, 3, 74, 37, 0, 624, 626, 3, 226, 113, 0, 625, 602, 1, 0, 0, 0, 625, 

+

327 603, 1, 0, 0, 0, 625, 604, 1, 0, 0, 0, 625, 607, 1, 0, 0, 0, 625, 612, 1, 0, 0, 0, 625, 617, 1, 0, 0, 0, 625, 623, 

+

328 1, 0, 0, 0, 625, 624, 1, 0, 0, 0, 626, 23, 1, 0, 0, 0, 627, 629, 3, 256, 128, 0, 628, 630, 3, 146, 73, 0, 629, 628, 

+

329 1, 0, 0, 0, 629, 630, 1, 0, 0, 0, 630, 638, 1, 0, 0, 0, 631, 632, 5, 143, 0, 0, 632, 633, 5, 66, 0, 0, 633, 635, 5, 

+

330 144, 0, 0, 634, 636, 3, 146, 73, 0, 635, 634, 1, 0, 0, 0, 635, 636, 1, 0, 0, 0, 636, 638, 1, 0, 0, 0, 637, 627, 1, 

+

331 0, 0, 0, 637, 631, 1, 0, 0, 0, 638, 25, 1, 0, 0, 0, 639, 640, 5, 13, 0, 0, 640, 641, 5, 143, 0, 0, 641, 642, 3, 30, 

+

332 15, 0, 642, 643, 5, 144, 0, 0, 643, 644, 5, 64, 0, 0, 644, 645, 3, 248, 124, 0, 645, 27, 1, 0, 0, 0, 646, 650, 3, 

+

333 258, 129, 0, 647, 650, 3, 256, 128, 0, 648, 650, 3, 500, 250, 0, 649, 646, 1, 0, 0, 0, 649, 647, 1, 0, 0, 0, 649, 

+

334 648, 1, 0, 0, 0, 650, 29, 1, 0, 0, 0, 651, 656, 3, 28, 14, 0, 652, 653, 5, 151, 0, 0, 653, 655, 3, 28, 14, 0, 654, 

+

335 652, 1, 0, 0, 0, 655, 658, 1, 0, 0, 0, 656, 654, 1, 0, 0, 0, 656, 657, 1, 0, 0, 0, 657, 31, 1, 0, 0, 0, 658, 656, 1, 

+

336 0, 0, 0, 659, 660, 5, 110, 0, 0, 660, 661, 5, 143, 0, 0, 661, 662, 3, 318, 159, 0, 662, 665, 5, 144, 0, 0, 663, 664, 

+

337 5, 64, 0, 0, 664, 666, 3, 484, 242, 0, 665, 663, 1, 0, 0, 0, 665, 666, 1, 0, 0, 0, 666, 33, 1, 0, 0, 0, 667, 668, 5, 

+

338 14, 0, 0, 668, 671, 3, 184, 92, 0, 669, 670, 5, 85, 0, 0, 670, 672, 3, 184, 92, 0, 671, 669, 1, 0, 0, 0, 671, 672, 

+

339 1, 0, 0, 0, 672, 675, 1, 0, 0, 0, 673, 674, 5, 91, 0, 0, 674, 676, 3, 184, 92, 0, 675, 673, 1, 0, 0, 0, 675, 676, 1, 

+

340 0, 0, 0, 676, 35, 1, 0, 0, 0, 677, 678, 5, 163, 0, 0, 678, 680, 5, 149, 0, 0, 679, 677, 1, 0, 0, 0, 679, 680, 1, 0, 

+

341 0, 0, 680, 681, 1, 0, 0, 0, 681, 682, 3, 34, 17, 0, 682, 683, 5, 150, 0, 0, 683, 37, 1, 0, 0, 0, 684, 685, 3, 216, 

+

342 108, 0, 685, 686, 5, 139, 0, 0, 686, 688, 1, 0, 0, 0, 687, 684, 1, 0, 0, 0, 687, 688, 1, 0, 0, 0, 688, 689, 1, 0, 0, 

+

343 0, 689, 690, 3, 8, 4, 0, 690, 39, 1, 0, 0, 0, 691, 696, 3, 38, 19, 0, 692, 693, 5, 151, 0, 0, 693, 695, 3, 38, 19, 

+

344 0, 694, 692, 1, 0, 0, 0, 695, 698, 1, 0, 0, 0, 696, 694, 1, 0, 0, 0, 696, 697, 1, 0, 0, 0, 697, 41, 1, 0, 0, 0, 698, 

+

345 696, 1, 0, 0, 0, 699, 700, 5, 15, 0, 0, 700, 701, 5, 163, 0, 0, 701, 702, 5, 149, 0, 0, 702, 703, 3, 318, 159, 0, 

+

346 703, 704, 5, 150, 0, 0, 704, 43, 1, 0, 0, 0, 705, 706, 7, 1, 0, 0, 706, 45, 1, 0, 0, 0, 707, 708, 5, 15, 0, 0, 708, 

+

347 709, 5, 163, 0, 0, 709, 710, 5, 64, 0, 0, 710, 711, 3, 172, 86, 0, 711, 712, 5, 50, 0, 0, 712, 713, 3, 98, 49, 0, 

+

348 713, 714, 5, 150, 0, 0, 714, 47, 1, 0, 0, 0, 715, 716, 5, 108, 0, 0, 716, 718, 3, 158, 79, 0, 717, 715, 1, 0, 0, 0, 

+

349 717, 718, 1, 0, 0, 0, 718, 720, 1, 0, 0, 0, 719, 721, 3, 232, 116, 0, 720, 719, 1, 0, 0, 0, 720, 721, 1, 0, 0, 0, 

+

350 721, 723, 1, 0, 0, 0, 722, 724, 3, 356, 178, 0, 723, 722, 1, 0, 0, 0, 723, 724, 1, 0, 0, 0, 724, 49, 1, 0, 0, 0, 

+

351 725, 726, 5, 37, 0, 0, 726, 730, 3, 54, 27, 0, 727, 729, 3, 502, 251, 0, 728, 727, 1, 0, 0, 0, 729, 732, 1, 0, 0, 0, 

+

352 730, 728, 1, 0, 0, 0, 730, 731, 1, 0, 0, 0, 731, 736, 1, 0, 0, 0, 732, 730, 1, 0, 0, 0, 733, 735, 3, 110, 55, 0, 

+

353 734, 733, 1, 0, 0, 0, 735, 738, 1, 0, 0, 0, 736, 734, 1, 0, 0, 0, 736, 737, 1, 0, 0, 0, 737, 739, 1, 0, 0, 0, 738, 

+

354 736, 1, 0, 0, 0, 739, 740, 5, 33, 0, 0, 740, 741, 5, 37, 0, 0, 741, 742, 5, 150, 0, 0, 742, 51, 1, 0, 0, 0, 743, 

+

355 766, 3, 472, 236, 0, 744, 766, 3, 470, 235, 0, 745, 766, 3, 476, 238, 0, 746, 766, 3, 330, 165, 0, 747, 766, 3, 326, 

+

356 163, 0, 748, 766, 3, 334, 167, 0, 749, 766, 3, 494, 247, 0, 750, 766, 3, 482, 241, 0, 751, 766, 3, 314, 157, 0, 752, 

+

357 766, 3, 114, 57, 0, 753, 766, 3, 448, 224, 0, 754, 766, 3, 508, 254, 0, 755, 766, 3, 198, 99, 0, 756, 766, 3, 12, 6, 

+

358 0, 757, 766, 3, 72, 36, 0, 758, 766, 3, 42, 21, 0, 759, 766, 3, 46, 23, 0, 760, 766, 3, 112, 56, 0, 761, 766, 3, 

+

359 136, 68, 0, 762, 766, 3, 502, 251, 0, 763, 766, 3, 238, 119, 0, 764, 766, 3, 236, 118, 0, 765, 743, 1, 0, 0, 0, 765, 

+

360 744, 1, 0, 0, 0, 765, 745, 1, 0, 0, 0, 765, 746, 1, 0, 0, 0, 765, 747, 1, 0, 0, 0, 765, 748, 1, 0, 0, 0, 765, 749, 

+

361 1, 0, 0, 0, 765, 750, 1, 0, 0, 0, 765, 751, 1, 0, 0, 0, 765, 752, 1, 0, 0, 0, 765, 753, 1, 0, 0, 0, 765, 754, 1, 0, 

+

362 0, 0, 765, 755, 1, 0, 0, 0, 765, 756, 1, 0, 0, 0, 765, 757, 1, 0, 0, 0, 765, 758, 1, 0, 0, 0, 765, 759, 1, 0, 0, 0, 

+

363 765, 760, 1, 0, 0, 0, 765, 761, 1, 0, 0, 0, 765, 762, 1, 0, 0, 0, 765, 763, 1, 0, 0, 0, 765, 764, 1, 0, 0, 0, 766, 

+

364 53, 1, 0, 0, 0, 767, 776, 3, 318, 159, 0, 768, 773, 5, 163, 0, 0, 769, 770, 5, 143, 0, 0, 770, 771, 3, 224, 112, 0, 

+

365 771, 772, 5, 144, 0, 0, 772, 774, 1, 0, 0, 0, 773, 769, 1, 0, 0, 0, 773, 774, 1, 0, 0, 0, 774, 776, 1, 0, 0, 0, 775, 

+

366 767, 1, 0, 0, 0, 775, 768, 1, 0, 0, 0, 776, 55, 1, 0, 0, 0, 777, 778, 5, 163, 0, 0, 778, 779, 5, 149, 0, 0, 779, 

+

367 784, 5, 18, 0, 0, 780, 781, 5, 143, 0, 0, 781, 782, 3, 184, 92, 0, 782, 783, 5, 144, 0, 0, 783, 785, 1, 0, 0, 0, 

+

368 784, 780, 1, 0, 0, 0, 784, 785, 1, 0, 0, 0, 785, 787, 1, 0, 0, 0, 786, 788, 5, 50, 0, 0, 787, 786, 1, 0, 0, 0, 787, 

+

369 788, 1, 0, 0, 0, 788, 795, 1, 0, 0, 0, 789, 793, 3, 230, 115, 0, 790, 791, 3, 232, 116, 0, 791, 792, 5, 150, 0, 0, 

+

370 792, 794, 1, 0, 0, 0, 793, 790, 1, 0, 0, 0, 793, 794, 1, 0, 0, 0, 794, 796, 1, 0, 0, 0, 795, 789, 1, 0, 0, 0, 795, 

+

371 796, 1, 0, 0, 0, 796, 803, 1, 0, 0, 0, 797, 801, 3, 354, 177, 0, 798, 799, 3, 356, 178, 0, 799, 800, 5, 150, 0, 0, 

+

372 800, 802, 1, 0, 0, 0, 801, 798, 1, 0, 0, 0, 801, 802, 1, 0, 0, 0, 802, 804, 1, 0, 0, 0, 803, 797, 1, 0, 0, 0, 803, 

+

373 804, 1, 0, 0, 0, 804, 808, 1, 0, 0, 0, 805, 807, 3, 52, 26, 0, 806, 805, 1, 0, 0, 0, 807, 810, 1, 0, 0, 0, 808, 806, 

+

374 1, 0, 0, 0, 808, 809, 1, 0, 0, 0, 809, 811, 1, 0, 0, 0, 810, 808, 1, 0, 0, 0, 811, 815, 5, 17, 0, 0, 812, 814, 3, 

+

375 94, 47, 0, 813, 812, 1, 0, 0, 0, 814, 817, 1, 0, 0, 0, 815, 813, 1, 0, 0, 0, 815, 816, 1, 0, 0, 0, 816, 818, 1, 0, 

+

376 0, 0, 817, 815, 1, 0, 0, 0, 818, 819, 5, 33, 0, 0, 819, 821, 5, 18, 0, 0, 820, 822, 5, 163, 0, 0, 821, 820, 1, 0, 0, 

+

377 0, 821, 822, 1, 0, 0, 0, 822, 823, 1, 0, 0, 0, 823, 824, 5, 150, 0, 0, 824, 57, 1, 0, 0, 0, 825, 828, 5, 117, 0, 0, 

+

378 826, 827, 5, 163, 0, 0, 827, 829, 5, 149, 0, 0, 828, 826, 1, 0, 0, 0, 828, 829, 1, 0, 0, 0, 829, 830, 1, 0, 0, 0, 

+

379 830, 831, 3, 68, 34, 0, 831, 832, 5, 139, 0, 0, 832, 833, 3, 228, 114, 0, 833, 59, 1, 0, 0, 0, 834, 835, 5, 163, 0, 

+

380 0, 835, 836, 5, 149, 0, 0, 836, 837, 5, 22, 0, 0, 837, 838, 3, 184, 92, 0, 838, 840, 5, 41, 0, 0, 839, 841, 3, 58, 

+

381 29, 0, 840, 839, 1, 0, 0, 0, 841, 842, 1, 0, 0, 0, 842, 840, 1, 0, 0, 0, 842, 843, 1, 0, 0, 0, 843, 844, 1, 0, 0, 0, 

+

382 844, 845, 5, 33, 0, 0, 845, 847, 5, 41, 0, 0, 846, 848, 5, 163, 0, 0, 847, 846, 1, 0, 0, 0, 847, 848, 1, 0, 0, 0, 

+

383 848, 849, 1, 0, 0, 0, 849, 850, 5, 150, 0, 0, 850, 61, 1, 0, 0, 0, 851, 852, 5, 163, 0, 0, 852, 854, 5, 149, 0, 0, 

+

384 853, 851, 1, 0, 0, 0, 853, 854, 1, 0, 0, 0, 854, 855, 1, 0, 0, 0, 855, 856, 5, 22, 0, 0, 856, 857, 3, 184, 92, 0, 

+

385 857, 859, 5, 50, 0, 0, 858, 860, 3, 64, 32, 0, 859, 858, 1, 0, 0, 0, 860, 861, 1, 0, 0, 0, 861, 859, 1, 0, 0, 0, 

+

386 861, 862, 1, 0, 0, 0, 862, 863, 1, 0, 0, 0, 863, 864, 5, 33, 0, 0, 864, 866, 5, 22, 0, 0, 865, 867, 5, 163, 0, 0, 

+

387 866, 865, 1, 0, 0, 0, 866, 867, 1, 0, 0, 0, 867, 868, 1, 0, 0, 0, 868, 869, 5, 150, 0, 0, 869, 63, 1, 0, 0, 0, 870, 

+

388 871, 5, 117, 0, 0, 871, 872, 3, 68, 34, 0, 872, 876, 5, 139, 0, 0, 873, 875, 3, 444, 222, 0, 874, 873, 1, 0, 0, 0, 

+

389 875, 878, 1, 0, 0, 0, 876, 874, 1, 0, 0, 0, 876, 877, 1, 0, 0, 0, 877, 65, 1, 0, 0, 0, 878, 876, 1, 0, 0, 0, 879, 

+

390 883, 3, 184, 92, 0, 880, 883, 3, 138, 69, 0, 881, 883, 5, 68, 0, 0, 882, 879, 1, 0, 0, 0, 882, 880, 1, 0, 0, 0, 882, 

+

391 881, 1, 0, 0, 0, 883, 67, 1, 0, 0, 0, 884, 889, 3, 66, 33, 0, 885, 886, 5, 152, 0, 0, 886, 888, 3, 66, 33, 0, 887, 

+

392 885, 1, 0, 0, 0, 888, 891, 1, 0, 0, 0, 889, 887, 1, 0, 0, 0, 889, 890, 1, 0, 0, 0, 890, 69, 1, 0, 0, 0, 891, 889, 1, 

+

393 0, 0, 0, 892, 893, 5, 37, 0, 0, 893, 897, 3, 76, 38, 0, 894, 895, 3, 48, 24, 0, 895, 896, 5, 150, 0, 0, 896, 898, 1, 

+

394 0, 0, 0, 897, 894, 1, 0, 0, 0, 897, 898, 1, 0, 0, 0, 898, 900, 1, 0, 0, 0, 899, 901, 3, 50, 25, 0, 900, 899, 1, 0, 

+

395 0, 0, 900, 901, 1, 0, 0, 0, 901, 902, 1, 0, 0, 0, 902, 903, 5, 33, 0, 0, 903, 904, 5, 37, 0, 0, 904, 905, 5, 150, 0, 

+

396 0, 905, 71, 1, 0, 0, 0, 906, 907, 5, 23, 0, 0, 907, 909, 5, 163, 0, 0, 908, 910, 5, 50, 0, 0, 909, 908, 1, 0, 0, 0, 

+

397 909, 910, 1, 0, 0, 0, 910, 912, 1, 0, 0, 0, 911, 913, 3, 230, 115, 0, 912, 911, 1, 0, 0, 0, 912, 913, 1, 0, 0, 0, 

+

398 913, 915, 1, 0, 0, 0, 914, 916, 3, 354, 177, 0, 915, 914, 1, 0, 0, 0, 915, 916, 1, 0, 0, 0, 916, 917, 1, 0, 0, 0, 

+

399 917, 919, 5, 33, 0, 0, 918, 920, 5, 23, 0, 0, 919, 918, 1, 0, 0, 0, 919, 920, 1, 0, 0, 0, 920, 922, 1, 0, 0, 0, 921, 

+

400 923, 5, 163, 0, 0, 922, 921, 1, 0, 0, 0, 922, 923, 1, 0, 0, 0, 923, 924, 1, 0, 0, 0, 924, 925, 5, 150, 0, 0, 925, 

+

401 73, 1, 0, 0, 0, 926, 927, 5, 163, 0, 0, 927, 928, 5, 149, 0, 0, 928, 930, 3, 260, 130, 0, 929, 931, 3, 232, 116, 0, 

+

402 930, 929, 1, 0, 0, 0, 930, 931, 1, 0, 0, 0, 931, 933, 1, 0, 0, 0, 932, 934, 3, 356, 178, 0, 933, 932, 1, 0, 0, 0, 

+

403 933, 934, 1, 0, 0, 0, 934, 935, 1, 0, 0, 0, 935, 936, 5, 150, 0, 0, 936, 75, 1, 0, 0, 0, 937, 938, 3, 262, 131, 0, 

+

404 938, 939, 5, 149, 0, 0, 939, 940, 3, 318, 159, 0, 940, 77, 1, 0, 0, 0, 941, 945, 3, 116, 58, 0, 942, 945, 3, 498, 

+

405 249, 0, 943, 945, 3, 406, 203, 0, 944, 941, 1, 0, 0, 0, 944, 942, 1, 0, 0, 0, 944, 943, 1, 0, 0, 0, 945, 79, 1, 0, 

+

406 0, 0, 946, 947, 5, 37, 0, 0, 947, 948, 3, 76, 38, 0, 948, 949, 3, 48, 24, 0, 949, 950, 5, 150, 0, 0, 950, 951, 5, 

+

407 33, 0, 0, 951, 952, 5, 37, 0, 0, 952, 953, 5, 150, 0, 0, 953, 81, 1, 0, 0, 0, 954, 955, 5, 163, 0, 0, 955, 957, 5, 

+

408 149, 0, 0, 956, 954, 1, 0, 0, 0, 956, 957, 1, 0, 0, 0, 957, 959, 1, 0, 0, 0, 958, 960, 5, 73, 0, 0, 959, 958, 1, 0, 

+

409 0, 0, 959, 960, 1, 0, 0, 0, 960, 961, 1, 0, 0, 0, 961, 962, 3, 34, 17, 0, 962, 963, 5, 150, 0, 0, 963, 83, 1, 0, 0, 

+

410 0, 964, 965, 3, 488, 244, 0, 965, 967, 5, 140, 0, 0, 966, 968, 5, 43, 0, 0, 967, 966, 1, 0, 0, 0, 967, 968, 1, 0, 0, 

+

411 0, 968, 970, 1, 0, 0, 0, 969, 971, 3, 126, 63, 0, 970, 969, 1, 0, 0, 0, 970, 971, 1, 0, 0, 0, 971, 972, 1, 0, 0, 0, 

+

412 972, 973, 3, 104, 52, 0, 973, 974, 5, 150, 0, 0, 974, 85, 1, 0, 0, 0, 975, 976, 5, 163, 0, 0, 976, 978, 5, 149, 0, 

+

413 0, 977, 975, 1, 0, 0, 0, 977, 978, 1, 0, 0, 0, 978, 980, 1, 0, 0, 0, 979, 981, 5, 73, 0, 0, 980, 979, 1, 0, 0, 0, 

+

414 980, 981, 1, 0, 0, 0, 981, 982, 1, 0, 0, 0, 982, 983, 3, 364, 182, 0, 983, 984, 5, 150, 0, 0, 984, 87, 1, 0, 0, 0, 

+

415 985, 986, 5, 116, 0, 0, 986, 987, 3, 184, 92, 0, 987, 988, 5, 90, 0, 0, 988, 989, 3, 488, 244, 0, 989, 991, 5, 140, 

+

416 0, 0, 990, 992, 5, 43, 0, 0, 991, 990, 1, 0, 0, 0, 991, 992, 1, 0, 0, 0, 992, 994, 1, 0, 0, 0, 993, 995, 3, 126, 63, 

+

417 0, 994, 993, 1, 0, 0, 0, 994, 995, 1, 0, 0, 0, 995, 996, 1, 0, 0, 0, 996, 997, 3, 436, 218, 0, 997, 998, 5, 150, 0, 

+

418 0, 998, 89, 1, 0, 0, 0, 999, 1000, 5, 163, 0, 0, 1000, 1002, 5, 149, 0, 0, 1001, 999, 1, 0, 0, 0, 1001, 1002, 1, 0, 

+

419 0, 0, 1002, 1004, 1, 0, 0, 0, 1003, 1005, 5, 73, 0, 0, 1004, 1003, 1, 0, 0, 0, 1004, 1005, 1, 0, 0, 0, 1005, 1009, 

+

420 1, 0, 0, 0, 1006, 1010, 3, 92, 46, 0, 1007, 1010, 3, 84, 42, 0, 1008, 1010, 3, 88, 44, 0, 1009, 1006, 1, 0, 0, 0, 

+

421 1009, 1007, 1, 0, 0, 0, 1009, 1008, 1, 0, 0, 0, 1010, 91, 1, 0, 0, 0, 1011, 1012, 3, 488, 244, 0, 1012, 1014, 5, 

+

422 140, 0, 0, 1013, 1015, 5, 43, 0, 0, 1014, 1013, 1, 0, 0, 0, 1014, 1015, 1, 0, 0, 0, 1015, 1017, 1, 0, 0, 0, 1016, 

+

423 1018, 3, 126, 63, 0, 1017, 1016, 1, 0, 0, 0, 1017, 1018, 1, 0, 0, 0, 1018, 1019, 1, 0, 0, 0, 1019, 1020, 3, 512, 

+

424 256, 0, 1020, 1021, 5, 150, 0, 0, 1021, 93, 1, 0, 0, 0, 1022, 1046, 3, 56, 28, 0, 1023, 1046, 3, 374, 187, 0, 1024, 

+

425 1046, 3, 376, 188, 0, 1025, 1026, 5, 163, 0, 0, 1026, 1028, 5, 149, 0, 0, 1027, 1025, 1, 0, 0, 0, 1027, 1028, 1, 0, 

+

426 0, 0, 1028, 1029, 1, 0, 0, 0, 1029, 1046, 3, 86, 43, 0, 1030, 1031, 5, 163, 0, 0, 1031, 1033, 5, 149, 0, 0, 1032, 

+

427 1030, 1, 0, 0, 0, 1032, 1033, 1, 0, 0, 0, 1033, 1034, 1, 0, 0, 0, 1034, 1046, 3, 82, 41, 0, 1035, 1036, 5, 163, 0, 

+

428 0, 1036, 1038, 5, 149, 0, 0, 1037, 1035, 1, 0, 0, 0, 1037, 1038, 1, 0, 0, 0, 1038, 1040, 1, 0, 0, 0, 1039, 1041, 5, 

+

429 73, 0, 0, 1040, 1039, 1, 0, 0, 0, 1040, 1041, 1, 0, 0, 0, 1041, 1042, 1, 0, 0, 0, 1042, 1046, 3, 90, 45, 0, 1043, 

+

430 1046, 3, 74, 37, 0, 1044, 1046, 3, 226, 113, 0, 1045, 1022, 1, 0, 0, 0, 1045, 1023, 1, 0, 0, 0, 1045, 1024, 1, 0, 0, 

+

431 0, 1045, 1027, 1, 0, 0, 0, 1045, 1032, 1, 0, 0, 0, 1045, 1037, 1, 0, 0, 0, 1045, 1043, 1, 0, 0, 0, 1045, 1044, 1, 0, 

+

432 0, 0, 1046, 95, 1, 0, 0, 0, 1047, 1048, 5, 107, 0, 0, 1048, 1049, 3, 184, 92, 0, 1049, 97, 1, 0, 0, 0, 1050, 1056, 

+

433 3, 184, 92, 0, 1051, 1052, 5, 117, 0, 0, 1052, 1053, 3, 184, 92, 0, 1053, 1054, 5, 31, 0, 0, 1054, 1055, 3, 184, 92, 

+

434 0, 1055, 1057, 1, 0, 0, 0, 1056, 1051, 1, 0, 0, 0, 1056, 1057, 1, 0, 0, 0, 1057, 99, 1, 0, 0, 0, 1058, 1064, 3, 186, 

+

435 93, 0, 1059, 1060, 5, 117, 0, 0, 1060, 1061, 3, 184, 92, 0, 1061, 1062, 5, 31, 0, 0, 1062, 1063, 3, 186, 93, 0, 

+

436 1063, 1065, 1, 0, 0, 0, 1064, 1059, 1, 0, 0, 0, 1064, 1065, 1, 0, 0, 0, 1065, 1068, 1, 0, 0, 0, 1066, 1067, 5, 117, 

+

437 0, 0, 1067, 1069, 3, 184, 92, 0, 1068, 1066, 1, 0, 0, 0, 1068, 1069, 1, 0, 0, 0, 1069, 101, 1, 0, 0, 0, 1070, 1071, 

+

438 3, 488, 244, 0, 1071, 1073, 5, 140, 0, 0, 1072, 1074, 3, 126, 63, 0, 1073, 1072, 1, 0, 0, 0, 1073, 1074, 1, 0, 0, 0, 

+

439 1074, 1075, 1, 0, 0, 0, 1075, 1076, 3, 104, 52, 0, 1076, 1077, 5, 150, 0, 0, 1077, 103, 1, 0, 0, 0, 1078, 1079, 3, 

+

440 512, 256, 0, 1079, 1080, 5, 117, 0, 0, 1080, 1088, 3, 184, 92, 0, 1081, 1082, 5, 31, 0, 0, 1082, 1083, 3, 512, 256, 

+

441 0, 1083, 1084, 5, 117, 0, 0, 1084, 1085, 3, 184, 92, 0, 1085, 1087, 1, 0, 0, 0, 1086, 1081, 1, 0, 0, 0, 1087, 1090, 

+

442 1, 0, 0, 0, 1088, 1086, 1, 0, 0, 0, 1088, 1089, 1, 0, 0, 0, 1089, 1093, 1, 0, 0, 0, 1090, 1088, 1, 0, 0, 0, 1091, 

+

443 1092, 5, 31, 0, 0, 1092, 1094, 3, 184, 92, 0, 1093, 1091, 1, 0, 0, 0, 1093, 1094, 1, 0, 0, 0, 1094, 105, 1, 0, 0, 0, 

+

444 1095, 1096, 5, 24, 0, 0, 1096, 1097, 5, 163, 0, 0, 1097, 1098, 5, 64, 0, 0, 1098, 1099, 3, 318, 159, 0, 1099, 1103, 

+

445 5, 50, 0, 0, 1100, 1102, 3, 108, 54, 0, 1101, 1100, 1, 0, 0, 0, 1102, 1105, 1, 0, 0, 0, 1103, 1101, 1, 0, 0, 0, 

+

446 1103, 1104, 1, 0, 0, 0, 1104, 1106, 1, 0, 0, 0, 1105, 1103, 1, 0, 0, 0, 1106, 1107, 3, 50, 25, 0, 1107, 1109, 5, 33, 

+

447 0, 0, 1108, 1110, 5, 24, 0, 0, 1109, 1108, 1, 0, 0, 0, 1109, 1110, 1, 0, 0, 0, 1110, 1112, 1, 0, 0, 0, 1111, 1113, 

+

448 5, 163, 0, 0, 1112, 1111, 1, 0, 0, 0, 1112, 1113, 1, 0, 0, 0, 1113, 1114, 1, 0, 0, 0, 1114, 1115, 5, 150, 0, 0, 

+

449 1115, 107, 1, 0, 0, 0, 1116, 1120, 3, 502, 251, 0, 1117, 1120, 3, 46, 23, 0, 1118, 1120, 3, 236, 118, 0, 1119, 1116, 

+

450 1, 0, 0, 0, 1119, 1117, 1, 0, 0, 0, 1119, 1118, 1, 0, 0, 0, 1120, 109, 1, 0, 0, 0, 1121, 1124, 3, 50, 25, 0, 1122, 

+

451 1124, 3, 70, 35, 0, 1123, 1121, 1, 0, 0, 0, 1123, 1122, 1, 0, 0, 0, 1124, 111, 1, 0, 0, 0, 1125, 1128, 3, 454, 227, 

+

452 0, 1126, 1128, 3, 80, 40, 0, 1127, 1125, 1, 0, 0, 0, 1127, 1126, 1, 0, 0, 0, 1128, 113, 1, 0, 0, 0, 1129, 1130, 5, 

+

453 25, 0, 0, 1130, 1131, 3, 242, 121, 0, 1131, 1132, 5, 149, 0, 0, 1132, 1135, 3, 484, 242, 0, 1133, 1134, 5, 141, 0, 

+

454 0, 1134, 1136, 3, 98, 49, 0, 1135, 1133, 1, 0, 0, 0, 1135, 1136, 1, 0, 0, 0, 1136, 1137, 1, 0, 0, 0, 1137, 1138, 5, 

+

455 150, 0, 0, 1138, 115, 1, 0, 0, 0, 1139, 1140, 5, 13, 0, 0, 1140, 1141, 3, 256, 128, 0, 1141, 1142, 5, 64, 0, 0, 

+

456 1142, 1143, 3, 484, 242, 0, 1143, 117, 1, 0, 0, 0, 1144, 1149, 3, 460, 230, 0, 1145, 1149, 3, 394, 197, 0, 1146, 

+

457 1149, 3, 24, 12, 0, 1147, 1149, 3, 396, 198, 0, 1148, 1144, 1, 0, 0, 0, 1148, 1145, 1, 0, 0, 0, 1148, 1146, 1, 0, 0, 

+

458 0, 1148, 1147, 1, 0, 0, 0, 1149, 119, 1, 0, 0, 0, 1150, 1151, 5, 26, 0, 0, 1151, 1152, 5, 163, 0, 0, 1152, 1156, 5, 

+

459 50, 0, 0, 1153, 1155, 3, 122, 61, 0, 1154, 1153, 1, 0, 0, 0, 1155, 1158, 1, 0, 0, 0, 1156, 1154, 1, 0, 0, 0, 1156, 

+

460 1157, 1, 0, 0, 0, 1157, 1159, 1, 0, 0, 0, 1158, 1156, 1, 0, 0, 0, 1159, 1161, 5, 33, 0, 0, 1160, 1162, 5, 26, 0, 0, 

+

461 1161, 1160, 1, 0, 0, 0, 1161, 1162, 1, 0, 0, 0, 1162, 1163, 1, 0, 0, 0, 1163, 1164, 5, 163, 0, 0, 1164, 1165, 5, 

+

462 150, 0, 0, 1165, 121, 1, 0, 0, 0, 1166, 1170, 3, 302, 151, 0, 1167, 1170, 3, 502, 251, 0, 1168, 1170, 3, 124, 62, 0, 

+

463 1169, 1166, 1, 0, 0, 0, 1169, 1167, 1, 0, 0, 0, 1169, 1168, 1, 0, 0, 0, 1170, 123, 1, 0, 0, 0, 1171, 1172, 5, 26, 0, 

+

464 0, 1172, 1177, 3, 428, 214, 0, 1173, 1174, 5, 149, 0, 0, 1174, 1176, 3, 428, 214, 0, 1175, 1173, 1, 0, 0, 0, 1176, 

+

465 1179, 1, 0, 0, 0, 1177, 1175, 1, 0, 0, 0, 1177, 1178, 1, 0, 0, 0, 1178, 1180, 1, 0, 0, 0, 1179, 1177, 1, 0, 0, 0, 

+

466 1180, 1181, 5, 150, 0, 0, 1181, 125, 1, 0, 0, 0, 1182, 1189, 5, 103, 0, 0, 1183, 1184, 5, 82, 0, 0, 1184, 1186, 3, 

+

467 184, 92, 0, 1185, 1183, 1, 0, 0, 0, 1185, 1186, 1, 0, 0, 0, 1186, 1187, 1, 0, 0, 0, 1187, 1189, 5, 48, 0, 0, 1188, 

+

468 1182, 1, 0, 0, 0, 1188, 1185, 1, 0, 0, 0, 1189, 127, 1, 0, 0, 0, 1190, 1192, 3, 130, 65, 0, 1191, 1190, 1, 0, 0, 0, 

+

469 1192, 1193, 1, 0, 0, 0, 1193, 1191, 1, 0, 0, 0, 1193, 1194, 1, 0, 0, 0, 1194, 1195, 1, 0, 0, 0, 1195, 1196, 5, 0, 0, 

+

470 1, 1196, 129, 1, 0, 0, 0, 1197, 1199, 3, 122, 61, 0, 1198, 1197, 1, 0, 0, 0, 1199, 1202, 1, 0, 0, 0, 1200, 1198, 1, 

+

471 0, 0, 0, 1200, 1201, 1, 0, 0, 0, 1201, 1203, 1, 0, 0, 0, 1202, 1200, 1, 0, 0, 0, 1203, 1204, 3, 304, 152, 0, 1204, 

+

472 131, 1, 0, 0, 0, 1205, 1206, 7, 2, 0, 0, 1206, 133, 1, 0, 0, 0, 1207, 1208, 7, 3, 0, 0, 1208, 135, 1, 0, 0, 0, 1209, 

+

473 1210, 5, 29, 0, 0, 1210, 1211, 3, 240, 120, 0, 1211, 1212, 5, 8, 0, 0, 1212, 1213, 3, 184, 92, 0, 1213, 1214, 5, 

+

474 150, 0, 0, 1214, 137, 1, 0, 0, 0, 1215, 1218, 3, 484, 242, 0, 1216, 1218, 3, 392, 196, 0, 1217, 1215, 1, 0, 0, 0, 

+

475 1217, 1216, 1, 0, 0, 0, 1218, 139, 1, 0, 0, 0, 1219, 1220, 5, 143, 0, 0, 1220, 1221, 5, 142, 0, 0, 1221, 1222, 5, 

+

476 144, 0, 0, 1222, 141, 1, 0, 0, 0, 1223, 1224, 5, 110, 0, 0, 1224, 1225, 5, 143, 0, 0, 1225, 1226, 3, 318, 159, 0, 

+

477 1226, 1227, 5, 144, 0, 0, 1227, 143, 1, 0, 0, 0, 1228, 1229, 3, 68, 34, 0, 1229, 1230, 5, 139, 0, 0, 1230, 1232, 1, 

+

478 0, 0, 0, 1231, 1228, 1, 0, 0, 0, 1231, 1232, 1, 0, 0, 0, 1232, 1233, 1, 0, 0, 0, 1233, 1234, 3, 184, 92, 0, 1234, 

+

479 145, 1, 0, 0, 0, 1235, 1238, 3, 24, 12, 0, 1236, 1238, 3, 396, 198, 0, 1237, 1235, 1, 0, 0, 0, 1237, 1236, 1, 0, 0, 

+

480 0, 1238, 147, 1, 0, 0, 0, 1239, 1240, 3, 242, 121, 0, 1240, 1241, 5, 149, 0, 0, 1241, 1242, 3, 484, 242, 0, 1242, 

+

481 1243, 5, 150, 0, 0, 1243, 149, 1, 0, 0, 0, 1244, 1247, 3, 310, 155, 0, 1245, 1247, 3, 152, 76, 0, 1246, 1244, 1, 0, 

+

482 0, 0, 1246, 1245, 1, 0, 0, 0, 1247, 151, 1, 0, 0, 0, 1248, 1251, 3, 142, 71, 0, 1249, 1251, 3, 154, 77, 0, 1250, 

+

483 1248, 1, 0, 0, 0, 1250, 1249, 1, 0, 0, 0, 1251, 153, 1, 0, 0, 0, 1252, 1253, 5, 110, 0, 0, 1253, 1254, 3, 318, 159, 

+

484 0, 1254, 155, 1, 0, 0, 0, 1255, 1258, 3, 414, 207, 0, 1256, 1258, 3, 404, 202, 0, 1257, 1255, 1, 0, 0, 0, 1257, 

+

485 1256, 1, 0, 0, 0, 1258, 157, 1, 0, 0, 0, 1259, 1260, 5, 34, 0, 0, 1260, 1264, 3, 318, 159, 0, 1261, 1262, 5, 143, 0, 

+

486 0, 1262, 1263, 5, 163, 0, 0, 1263, 1265, 5, 144, 0, 0, 1264, 1261, 1, 0, 0, 0, 1264, 1265, 1, 0, 0, 0, 1265, 1270, 

+

487 1, 0, 0, 0, 1266, 1267, 5, 24, 0, 0, 1267, 1270, 3, 318, 159, 0, 1268, 1270, 5, 66, 0, 0, 1269, 1259, 1, 0, 0, 0, 

+

488 1269, 1266, 1, 0, 0, 0, 1269, 1268, 1, 0, 0, 0, 1270, 159, 1, 0, 0, 0, 1271, 1272, 7, 4, 0, 0, 1272, 161, 1, 0, 0, 

+

489 0, 1273, 1275, 3, 160, 80, 0, 1274, 1276, 5, 142, 0, 0, 1275, 1274, 1, 0, 0, 0, 1275, 1276, 1, 0, 0, 0, 1276, 163, 

+

490 1, 0, 0, 0, 1277, 1278, 5, 34, 0, 0, 1278, 1279, 5, 163, 0, 0, 1279, 1281, 5, 50, 0, 0, 1280, 1282, 3, 230, 115, 0, 

+

491 1281, 1280, 1, 0, 0, 0, 1281, 1282, 1, 0, 0, 0, 1282, 1284, 1, 0, 0, 0, 1283, 1285, 3, 354, 177, 0, 1284, 1283, 1, 

+

492 0, 0, 0, 1284, 1285, 1, 0, 0, 0, 1285, 1289, 1, 0, 0, 0, 1286, 1288, 3, 166, 83, 0, 1287, 1286, 1, 0, 0, 0, 1288, 

+

493 1291, 1, 0, 0, 0, 1289, 1287, 1, 0, 0, 0, 1289, 1290, 1, 0, 0, 0, 1290, 1299, 1, 0, 0, 0, 1291, 1289, 1, 0, 0, 0, 

+

494 1292, 1296, 5, 17, 0, 0, 1293, 1295, 3, 174, 87, 0, 1294, 1293, 1, 0, 0, 0, 1295, 1298, 1, 0, 0, 0, 1296, 1294, 1, 

+

495 0, 0, 0, 1296, 1297, 1, 0, 0, 0, 1297, 1300, 1, 0, 0, 0, 1298, 1296, 1, 0, 0, 0, 1299, 1292, 1, 0, 0, 0, 1299, 1300, 

+

496 1, 0, 0, 0, 1300, 1301, 1, 0, 0, 0, 1301, 1303, 5, 33, 0, 0, 1302, 1304, 5, 34, 0, 0, 1303, 1302, 1, 0, 0, 0, 1303, 

+

497 1304, 1, 0, 0, 0, 1304, 1306, 1, 0, 0, 0, 1305, 1307, 5, 163, 0, 0, 1306, 1305, 1, 0, 0, 0, 1306, 1307, 1, 0, 0, 0, 

+

498 1307, 1308, 1, 0, 0, 0, 1308, 1309, 5, 150, 0, 0, 1309, 165, 1, 0, 0, 0, 1310, 1331, 3, 472, 236, 0, 1311, 1331, 3, 

+

499 470, 235, 0, 1312, 1331, 3, 476, 238, 0, 1313, 1331, 3, 330, 165, 0, 1314, 1331, 3, 326, 163, 0, 1315, 1331, 3, 334, 

+

500 167, 0, 1316, 1331, 3, 494, 247, 0, 1317, 1331, 3, 482, 241, 0, 1318, 1331, 3, 314, 157, 0, 1319, 1331, 3, 114, 57, 

+

501 0, 1320, 1331, 3, 448, 224, 0, 1321, 1331, 3, 508, 254, 0, 1322, 1331, 3, 198, 99, 0, 1323, 1331, 3, 12, 6, 0, 1324, 

+

502 1331, 3, 42, 21, 0, 1325, 1331, 3, 46, 23, 0, 1326, 1331, 3, 136, 68, 0, 1327, 1331, 3, 502, 251, 0, 1328, 1331, 3, 

+

503 238, 119, 0, 1329, 1331, 3, 236, 118, 0, 1330, 1310, 1, 0, 0, 0, 1330, 1311, 1, 0, 0, 0, 1330, 1312, 1, 0, 0, 0, 

+

504 1330, 1313, 1, 0, 0, 0, 1330, 1314, 1, 0, 0, 0, 1330, 1315, 1, 0, 0, 0, 1330, 1316, 1, 0, 0, 0, 1330, 1317, 1, 0, 0, 

+

505 0, 1330, 1318, 1, 0, 0, 0, 1330, 1319, 1, 0, 0, 0, 1330, 1320, 1, 0, 0, 0, 1330, 1321, 1, 0, 0, 0, 1330, 1322, 1, 0, 

+

506 0, 0, 1330, 1323, 1, 0, 0, 0, 1330, 1324, 1, 0, 0, 0, 1330, 1325, 1, 0, 0, 0, 1330, 1326, 1, 0, 0, 0, 1330, 1327, 1, 

+

507 0, 0, 0, 1330, 1328, 1, 0, 0, 0, 1330, 1329, 1, 0, 0, 0, 1331, 167, 1, 0, 0, 0, 1332, 1334, 3, 176, 88, 0, 1333, 

+

508 1335, 3, 452, 226, 0, 1334, 1333, 1, 0, 0, 0, 1334, 1335, 1, 0, 0, 0, 1335, 169, 1, 0, 0, 0, 1336, 1341, 3, 168, 84, 

+

509 0, 1337, 1338, 5, 151, 0, 0, 1338, 1340, 3, 168, 84, 0, 1339, 1337, 1, 0, 0, 0, 1340, 1343, 1, 0, 0, 0, 1341, 1339, 

+

510 1, 0, 0, 0, 1341, 1342, 1, 0, 0, 0, 1342, 1347, 1, 0, 0, 0, 1343, 1341, 1, 0, 0, 0, 1344, 1347, 5, 68, 0, 0, 1345, 

+

511 1347, 5, 10, 0, 0, 1346, 1336, 1, 0, 0, 0, 1346, 1344, 1, 0, 0, 0, 1346, 1345, 1, 0, 0, 0, 1347, 171, 1, 0, 0, 0, 

+

512 1348, 1349, 3, 170, 85, 0, 1349, 1350, 5, 149, 0, 0, 1350, 1351, 3, 160, 80, 0, 1351, 173, 1, 0, 0, 0, 1352, 1357, 

+

513 3, 82, 41, 0, 1353, 1357, 3, 86, 43, 0, 1354, 1357, 3, 374, 187, 0, 1355, 1357, 3, 376, 188, 0, 1356, 1352, 1, 0, 0, 

+

514 0, 1356, 1353, 1, 0, 0, 0, 1356, 1354, 1, 0, 0, 0, 1356, 1355, 1, 0, 0, 0, 1357, 175, 1, 0, 0, 0, 1358, 1359, 7, 0, 

+

515 0, 0, 1359, 177, 1, 0, 0, 0, 1360, 1361, 7, 5, 0, 0, 1361, 179, 1, 0, 0, 0, 1362, 1363, 5, 143, 0, 0, 1363, 1368, 3, 

+

516 178, 89, 0, 1364, 1365, 5, 151, 0, 0, 1365, 1367, 3, 178, 89, 0, 1366, 1364, 1, 0, 0, 0, 1367, 1370, 1, 0, 0, 0, 

+

517 1368, 1366, 1, 0, 0, 0, 1368, 1369, 1, 0, 0, 0, 1369, 1371, 1, 0, 0, 0, 1370, 1368, 1, 0, 0, 0, 1371, 1372, 5, 144, 

+

518 0, 0, 1372, 181, 1, 0, 0, 0, 1373, 1374, 5, 163, 0, 0, 1374, 1376, 5, 149, 0, 0, 1375, 1373, 1, 0, 0, 0, 1375, 1376, 

+

519 1, 0, 0, 0, 1376, 1377, 1, 0, 0, 0, 1377, 1379, 5, 35, 0, 0, 1378, 1380, 5, 163, 0, 0, 1379, 1378, 1, 0, 0, 0, 1379, 

+

520 1380, 1, 0, 0, 0, 1380, 1383, 1, 0, 0, 0, 1381, 1382, 5, 117, 0, 0, 1382, 1384, 3, 184, 92, 0, 1383, 1381, 1, 0, 0, 

+

521 0, 1383, 1384, 1, 0, 0, 0, 1384, 1385, 1, 0, 0, 0, 1385, 1386, 5, 150, 0, 0, 1386, 183, 1, 0, 0, 0, 1387, 1388, 6, 

+

522 92, -1, 0, 1388, 1394, 3, 358, 179, 0, 1389, 1390, 5, 138, 0, 0, 1390, 1394, 3, 184, 92, 8, 1391, 1392, 7, 6, 0, 0, 

+

523 1392, 1394, 3, 184, 92, 7, 1393, 1387, 1, 0, 0, 0, 1393, 1389, 1, 0, 0, 0, 1393, 1391, 1, 0, 0, 0, 1394, 1415, 1, 0, 

+

524 0, 0, 1395, 1396, 10, 6, 0, 0, 1396, 1397, 5, 136, 0, 0, 1397, 1414, 3, 184, 92, 6, 1398, 1399, 10, 5, 0, 0, 1399, 

+

525 1400, 7, 7, 0, 0, 1400, 1414, 3, 184, 92, 6, 1401, 1402, 10, 4, 0, 0, 1402, 1403, 7, 8, 0, 0, 1403, 1414, 3, 184, 

+

526 92, 5, 1404, 1405, 10, 3, 0, 0, 1405, 1406, 7, 9, 0, 0, 1406, 1414, 3, 184, 92, 4, 1407, 1408, 10, 2, 0, 0, 1408, 

+

527 1409, 7, 10, 0, 0, 1409, 1414, 3, 184, 92, 3, 1410, 1411, 10, 1, 0, 0, 1411, 1412, 7, 11, 0, 0, 1412, 1414, 3, 184, 

+

528 92, 2, 1413, 1395, 1, 0, 0, 0, 1413, 1398, 1, 0, 0, 0, 1413, 1401, 1, 0, 0, 0, 1413, 1404, 1, 0, 0, 0, 1413, 1407, 

+

529 1, 0, 0, 0, 1413, 1410, 1, 0, 0, 0, 1414, 1417, 1, 0, 0, 0, 1415, 1413, 1, 0, 0, 0, 1415, 1416, 1, 0, 0, 0, 1416, 

+

530 185, 1, 0, 0, 0, 1417, 1415, 1, 0, 0, 0, 1418, 1421, 3, 184, 92, 0, 1419, 1421, 5, 105, 0, 0, 1420, 1418, 1, 0, 0, 

+

531 0, 1420, 1419, 1, 0, 0, 0, 1421, 187, 1, 0, 0, 0, 1422, 1426, 3, 190, 95, 0, 1423, 1426, 3, 192, 96, 0, 1424, 1426, 

+

532 3, 194, 97, 0, 1425, 1422, 1, 0, 0, 0, 1425, 1423, 1, 0, 0, 0, 1425, 1424, 1, 0, 0, 0, 1426, 189, 1, 0, 0, 0, 1427, 

+

533 1428, 5, 147, 0, 0, 1428, 1429, 5, 25, 0, 0, 1429, 1430, 3, 196, 98, 0, 1430, 1431, 5, 149, 0, 0, 1431, 1432, 3, 

+

534 296, 148, 0, 1432, 1433, 5, 148, 0, 0, 1433, 191, 1, 0, 0, 0, 1434, 1435, 5, 147, 0, 0, 1435, 1436, 5, 93, 0, 0, 

+

535 1436, 1437, 3, 196, 98, 0, 1437, 1438, 5, 149, 0, 0, 1438, 1439, 3, 296, 148, 0, 1439, 1440, 5, 148, 0, 0, 1440, 

+

536 193, 1, 0, 0, 0, 1441, 1442, 5, 147, 0, 0, 1442, 1443, 5, 109, 0, 0, 1443, 1444, 3, 196, 98, 0, 1444, 1445, 5, 149, 

+

537 0, 0, 1445, 1446, 3, 296, 148, 0, 1446, 1447, 5, 148, 0, 0, 1447, 195, 1, 0, 0, 0, 1448, 1452, 3, 336, 168, 0, 1449, 

+

538 1452, 3, 0, 0, 0, 1450, 1452, 3, 410, 205, 0, 1451, 1448, 1, 0, 0, 0, 1451, 1449, 1, 0, 0, 0, 1451, 1450, 1, 0, 0, 

+

539 0, 1452, 197, 1, 0, 0, 0, 1453, 1454, 5, 36, 0, 0, 1454, 1455, 3, 242, 121, 0, 1455, 1456, 5, 149, 0, 0, 1456, 1458, 

+

540 3, 484, 242, 0, 1457, 1459, 3, 202, 101, 0, 1458, 1457, 1, 0, 0, 0, 1458, 1459, 1, 0, 0, 0, 1459, 1460, 1, 0, 0, 0, 

+

541 1460, 1461, 5, 150, 0, 0, 1461, 199, 1, 0, 0, 0, 1462, 1463, 5, 36, 0, 0, 1463, 1464, 5, 64, 0, 0, 1464, 1465, 3, 

+

542 254, 127, 0, 1465, 201, 1, 0, 0, 0, 1466, 1467, 5, 66, 0, 0, 1467, 1469, 3, 184, 92, 0, 1468, 1466, 1, 0, 0, 0, 

+

543 1468, 1469, 1, 0, 0, 0, 1469, 1470, 1, 0, 0, 0, 1470, 1471, 5, 50, 0, 0, 1471, 1472, 3, 184, 92, 0, 1472, 203, 1, 0, 

+

544 0, 0, 1473, 1474, 5, 36, 0, 0, 1474, 1475, 5, 64, 0, 0, 1475, 1476, 3, 318, 159, 0, 1476, 205, 1, 0, 0, 0, 1477, 

+

545 1478, 5, 79, 0, 0, 1478, 1479, 5, 142, 0, 0, 1479, 1480, 5, 153, 0, 0, 1480, 1481, 5, 142, 0, 0, 1481, 207, 1, 0, 0, 

+

546 0, 1482, 1483, 3, 394, 197, 0, 1483, 209, 1, 0, 0, 0, 1484, 1485, 5, 163, 0, 0, 1485, 1486, 5, 149, 0, 0, 1486, 

+

547 1487, 5, 37, 0, 0, 1487, 1488, 3, 340, 170, 0, 1488, 1496, 5, 41, 0, 0, 1489, 1491, 3, 52, 26, 0, 1490, 1489, 1, 0, 

+

548 0, 0, 1491, 1494, 1, 0, 0, 0, 1492, 1490, 1, 0, 0, 0, 1492, 1493, 1, 0, 0, 0, 1493, 1495, 1, 0, 0, 0, 1494, 1492, 1, 

+

549 0, 0, 0, 1495, 1497, 5, 17, 0, 0, 1496, 1492, 1, 0, 0, 0, 1496, 1497, 1, 0, 0, 0, 1497, 1501, 1, 0, 0, 0, 1498, 

+

550 1500, 3, 94, 47, 0, 1499, 1498, 1, 0, 0, 0, 1500, 1503, 1, 0, 0, 0, 1501, 1499, 1, 0, 0, 0, 1501, 1502, 1, 0, 0, 0, 

+

551 1502, 1504, 1, 0, 0, 0, 1503, 1501, 1, 0, 0, 0, 1504, 1505, 5, 33, 0, 0, 1505, 1507, 5, 41, 0, 0, 1506, 1508, 5, 

+

552 163, 0, 0, 1507, 1506, 1, 0, 0, 0, 1507, 1508, 1, 0, 0, 0, 1508, 1509, 1, 0, 0, 0, 1509, 1510, 5, 150, 0, 0, 1510, 

+

553 211, 1, 0, 0, 0, 1511, 1513, 3, 318, 159, 0, 1512, 1514, 3, 452, 226, 0, 1513, 1512, 1, 0, 0, 0, 1513, 1514, 1, 0, 

+

554 0, 0, 1514, 213, 1, 0, 0, 0, 1515, 1516, 3, 278, 139, 0, 1516, 215, 1, 0, 0, 0, 1517, 1527, 3, 212, 106, 0, 1518, 

+

555 1521, 3, 318, 159, 0, 1519, 1521, 3, 318, 159, 0, 1520, 1518, 1, 0, 0, 0, 1520, 1519, 1, 0, 0, 0, 1521, 1522, 1, 0, 

+

556 0, 0, 1522, 1523, 5, 143, 0, 0, 1523, 1524, 3, 212, 106, 0, 1524, 1525, 5, 144, 0, 0, 1525, 1527, 1, 0, 0, 0, 1526, 

+

557 1517, 1, 0, 0, 0, 1526, 1520, 1, 0, 0, 0, 1527, 217, 1, 0, 0, 0, 1528, 1529, 5, 104, 0, 0, 1529, 1530, 5, 163, 0, 0, 

+

558 1530, 1531, 5, 50, 0, 0, 1531, 1532, 3, 496, 248, 0, 1532, 1533, 5, 150, 0, 0, 1533, 219, 1, 0, 0, 0, 1534, 1535, 3, 

+

559 318, 159, 0, 1535, 1536, 3, 232, 116, 0, 1536, 1537, 3, 338, 169, 0, 1537, 221, 1, 0, 0, 0, 1538, 1540, 7, 12, 0, 0, 

+

560 1539, 1538, 1, 0, 0, 0, 1539, 1540, 1, 0, 0, 0, 1540, 1541, 1, 0, 0, 0, 1541, 1542, 5, 39, 0, 0, 1542, 1550, 3, 132, 

+

561 66, 0, 1543, 1545, 5, 71, 0, 0, 1544, 1543, 1, 0, 0, 0, 1544, 1545, 1, 0, 0, 0, 1545, 1546, 1, 0, 0, 0, 1546, 1547, 

+

562 5, 143, 0, 0, 1547, 1548, 3, 214, 107, 0, 1548, 1549, 5, 144, 0, 0, 1549, 1551, 1, 0, 0, 0, 1550, 1544, 1, 0, 0, 0, 

+

563 1550, 1551, 1, 0, 0, 0, 1551, 1552, 1, 0, 0, 0, 1552, 1555, 5, 86, 0, 0, 1553, 1554, 5, 163, 0, 0, 1554, 1556, 5, 

+

564 64, 0, 0, 1555, 1553, 1, 0, 0, 0, 1555, 1556, 1, 0, 0, 0, 1556, 1557, 1, 0, 0, 0, 1557, 1558, 3, 318, 159, 0, 1558, 

+

565 223, 1, 0, 0, 0, 1559, 1563, 3, 138, 69, 0, 1560, 1563, 3, 184, 92, 0, 1561, 1563, 5, 163, 0, 0, 1562, 1559, 1, 0, 

+

566 0, 0, 1562, 1560, 1, 0, 0, 0, 1562, 1561, 1, 0, 0, 0, 1563, 225, 1, 0, 0, 0, 1564, 1568, 3, 210, 105, 0, 1565, 1568, 

+

567 3, 244, 122, 0, 1566, 1568, 3, 60, 30, 0, 1567, 1564, 1, 0, 0, 0, 1567, 1565, 1, 0, 0, 0, 1567, 1566, 1, 0, 0, 0, 

+

568 1568, 227, 1, 0, 0, 0, 1569, 1571, 3, 52, 26, 0, 1570, 1569, 1, 0, 0, 0, 1571, 1574, 1, 0, 0, 0, 1572, 1570, 1, 0, 

+

569 0, 0, 1572, 1573, 1, 0, 0, 0, 1573, 1575, 1, 0, 0, 0, 1574, 1572, 1, 0, 0, 0, 1575, 1577, 5, 17, 0, 0, 1576, 1572, 

+

570 1, 0, 0, 0, 1576, 1577, 1, 0, 0, 0, 1577, 1581, 1, 0, 0, 0, 1578, 1580, 3, 94, 47, 0, 1579, 1578, 1, 0, 0, 0, 1580, 

+

571 1583, 1, 0, 0, 0, 1581, 1579, 1, 0, 0, 0, 1581, 1582, 1, 0, 0, 0, 1582, 1589, 1, 0, 0, 0, 1583, 1581, 1, 0, 0, 0, 

+

572 1584, 1586, 5, 33, 0, 0, 1585, 1587, 5, 163, 0, 0, 1586, 1585, 1, 0, 0, 0, 1586, 1587, 1, 0, 0, 0, 1587, 1588, 1, 0, 

+

573 0, 0, 1588, 1590, 5, 150, 0, 0, 1589, 1584, 1, 0, 0, 0, 1589, 1590, 1, 0, 0, 0, 1590, 229, 1, 0, 0, 0, 1591, 1592, 

+

574 5, 42, 0, 0, 1592, 1593, 5, 143, 0, 0, 1593, 1598, 3, 272, 136, 0, 1594, 1595, 5, 150, 0, 0, 1595, 1597, 3, 272, 

+

575 136, 0, 1596, 1594, 1, 0, 0, 0, 1597, 1600, 1, 0, 0, 0, 1598, 1596, 1, 0, 0, 0, 1598, 1599, 1, 0, 0, 0, 1599, 1602, 

+

576 1, 0, 0, 0, 1600, 1598, 1, 0, 0, 0, 1601, 1603, 5, 150, 0, 0, 1602, 1601, 1, 0, 0, 0, 1602, 1603, 1, 0, 0, 0, 1603, 

+

577 1604, 1, 0, 0, 0, 1604, 1605, 5, 144, 0, 0, 1605, 1606, 5, 150, 0, 0, 1606, 231, 1, 0, 0, 0, 1607, 1608, 5, 42, 0, 

+

578 0, 1608, 1609, 5, 56, 0, 0, 1609, 1610, 5, 143, 0, 0, 1610, 1611, 3, 40, 20, 0, 1611, 1612, 5, 144, 0, 0, 1612, 233, 

+

579 1, 0, 0, 0, 1613, 1616, 3, 318, 159, 0, 1614, 1616, 5, 161, 0, 0, 1615, 1613, 1, 0, 0, 0, 1615, 1614, 1, 0, 0, 0, 

+

580 1616, 235, 1, 0, 0, 0, 1617, 1618, 5, 44, 0, 0, 1618, 1619, 5, 163, 0, 0, 1619, 1620, 5, 149, 0, 0, 1620, 1621, 3, 

+

581 318, 159, 0, 1621, 1622, 5, 143, 0, 0, 1622, 1627, 3, 234, 117, 0, 1623, 1624, 5, 151, 0, 0, 1624, 1626, 3, 234, 

+

582 117, 0, 1625, 1623, 1, 0, 0, 0, 1626, 1629, 1, 0, 0, 0, 1627, 1625, 1, 0, 0, 0, 1627, 1628, 1, 0, 0, 0, 1628, 1630, 

+

583 1, 0, 0, 0, 1629, 1627, 1, 0, 0, 0, 1630, 1631, 5, 144, 0, 0, 1631, 1632, 5, 150, 0, 0, 1632, 237, 1, 0, 0, 0, 1633, 

+

584 1634, 5, 44, 0, 0, 1634, 1635, 5, 163, 0, 0, 1635, 1636, 5, 50, 0, 0, 1636, 1637, 5, 143, 0, 0, 1637, 1642, 3, 162, 

+

585 81, 0, 1638, 1639, 5, 151, 0, 0, 1639, 1641, 3, 162, 81, 0, 1640, 1638, 1, 0, 0, 0, 1641, 1644, 1, 0, 0, 0, 1642, 

+

586 1640, 1, 0, 0, 0, 1642, 1643, 1, 0, 0, 0, 1643, 1645, 1, 0, 0, 0, 1644, 1642, 1, 0, 0, 0, 1645, 1646, 5, 144, 0, 0, 

+

587 1646, 1647, 5, 150, 0, 0, 1647, 239, 1, 0, 0, 0, 1648, 1649, 3, 450, 225, 0, 1649, 1650, 5, 149, 0, 0, 1650, 1651, 

+

588 3, 318, 159, 0, 1651, 241, 1, 0, 0, 0, 1652, 1657, 5, 163, 0, 0, 1653, 1654, 5, 151, 0, 0, 1654, 1656, 5, 163, 0, 0, 

+

589 1655, 1653, 1, 0, 0, 0, 1656, 1659, 1, 0, 0, 0, 1657, 1655, 1, 0, 0, 0, 1657, 1658, 1, 0, 0, 0, 1658, 243, 1, 0, 0, 

+

590 0, 1659, 1657, 1, 0, 0, 0, 1660, 1661, 5, 163, 0, 0, 1661, 1662, 5, 149, 0, 0, 1662, 1665, 5, 45, 0, 0, 1663, 1664, 

+

591 5, 163, 0, 0, 1664, 1666, 5, 149, 0, 0, 1665, 1663, 1, 0, 0, 0, 1665, 1666, 1, 0, 0, 0, 1666, 1667, 1, 0, 0, 0, 

+

592 1667, 1668, 3, 184, 92, 0, 1668, 1669, 5, 41, 0, 0, 1669, 1681, 3, 228, 114, 0, 1670, 1673, 5, 32, 0, 0, 1671, 1672, 

+

593 5, 163, 0, 0, 1672, 1674, 5, 149, 0, 0, 1673, 1671, 1, 0, 0, 0, 1673, 1674, 1, 0, 0, 0, 1674, 1675, 1, 0, 0, 0, 

+

594 1675, 1676, 3, 184, 92, 0, 1676, 1677, 5, 41, 0, 0, 1677, 1678, 3, 228, 114, 0, 1678, 1680, 1, 0, 0, 0, 1679, 1670, 

+

595 1, 0, 0, 0, 1680, 1683, 1, 0, 0, 0, 1681, 1679, 1, 0, 0, 0, 1681, 1682, 1, 0, 0, 0, 1682, 1691, 1, 0, 0, 0, 1683, 

+

596 1681, 1, 0, 0, 0, 1684, 1687, 5, 31, 0, 0, 1685, 1686, 5, 163, 0, 0, 1686, 1688, 5, 149, 0, 0, 1687, 1685, 1, 0, 0, 

+

597 0, 1687, 1688, 1, 0, 0, 0, 1688, 1689, 1, 0, 0, 0, 1689, 1690, 5, 41, 0, 0, 1690, 1692, 3, 228, 114, 0, 1691, 1684, 

+

598 1, 0, 0, 0, 1691, 1692, 1, 0, 0, 0, 1692, 1693, 1, 0, 0, 0, 1693, 1694, 5, 33, 0, 0, 1694, 1696, 5, 41, 0, 0, 1695, 

+

599 1697, 5, 163, 0, 0, 1696, 1695, 1, 0, 0, 0, 1696, 1697, 1, 0, 0, 0, 1697, 1698, 1, 0, 0, 0, 1698, 1699, 5, 150, 0, 

+

600 0, 1699, 245, 1, 0, 0, 0, 1700, 1701, 5, 163, 0, 0, 1701, 1703, 5, 149, 0, 0, 1702, 1700, 1, 0, 0, 0, 1702, 1703, 1, 

+

601 0, 0, 0, 1703, 1704, 1, 0, 0, 0, 1704, 1705, 5, 45, 0, 0, 1705, 1706, 3, 184, 92, 0, 1706, 1710, 5, 101, 0, 0, 1707, 

+

602 1709, 3, 444, 222, 0, 1708, 1707, 1, 0, 0, 0, 1709, 1712, 1, 0, 0, 0, 1710, 1708, 1, 0, 0, 0, 1710, 1711, 1, 0, 0, 

+

603 0, 1711, 1724, 1, 0, 0, 0, 1712, 1710, 1, 0, 0, 0, 1713, 1714, 5, 32, 0, 0, 1714, 1715, 3, 184, 92, 0, 1715, 1719, 

+

604 5, 101, 0, 0, 1716, 1718, 3, 444, 222, 0, 1717, 1716, 1, 0, 0, 0, 1718, 1721, 1, 0, 0, 0, 1719, 1717, 1, 0, 0, 0, 

+

605 1719, 1720, 1, 0, 0, 0, 1720, 1723, 1, 0, 0, 0, 1721, 1719, 1, 0, 0, 0, 1722, 1713, 1, 0, 0, 0, 1723, 1726, 1, 0, 0, 

+

606 0, 1724, 1722, 1, 0, 0, 0, 1724, 1725, 1, 0, 0, 0, 1725, 1734, 1, 0, 0, 0, 1726, 1724, 1, 0, 0, 0, 1727, 1731, 5, 

+

607 31, 0, 0, 1728, 1730, 3, 444, 222, 0, 1729, 1728, 1, 0, 0, 0, 1730, 1733, 1, 0, 0, 0, 1731, 1729, 1, 0, 0, 0, 1731, 

+

608 1732, 1, 0, 0, 0, 1732, 1735, 1, 0, 0, 0, 1733, 1731, 1, 0, 0, 0, 1734, 1727, 1, 0, 0, 0, 1734, 1735, 1, 0, 0, 0, 

+

609 1735, 1736, 1, 0, 0, 0, 1736, 1737, 5, 33, 0, 0, 1737, 1739, 5, 45, 0, 0, 1738, 1740, 5, 163, 0, 0, 1739, 1738, 1, 

+

610 0, 0, 0, 1739, 1740, 1, 0, 0, 0, 1740, 1741, 1, 0, 0, 0, 1741, 1742, 5, 150, 0, 0, 1742, 247, 1, 0, 0, 0, 1743, 

+

611 1746, 3, 484, 242, 0, 1744, 1746, 3, 500, 250, 0, 1745, 1743, 1, 0, 0, 0, 1745, 1744, 1, 0, 0, 0, 1746, 249, 1, 0, 

+

612 0, 0, 1747, 1748, 5, 104, 0, 0, 1748, 1749, 5, 163, 0, 0, 1749, 1750, 5, 150, 0, 0, 1750, 251, 1, 0, 0, 0, 1751, 

+

613 1761, 3, 362, 181, 0, 1752, 1761, 3, 418, 209, 0, 1753, 1761, 3, 140, 70, 0, 1754, 1761, 3, 264, 132, 0, 1755, 1761, 

+

614 3, 346, 173, 0, 1756, 1761, 3, 206, 103, 0, 1757, 1761, 3, 26, 13, 0, 1758, 1761, 3, 2, 1, 0, 1759, 1761, 3, 200, 

+

615 100, 0, 1760, 1751, 1, 0, 0, 0, 1760, 1752, 1, 0, 0, 0, 1760, 1753, 1, 0, 0, 0, 1760, 1754, 1, 0, 0, 0, 1760, 1755, 

+

616 1, 0, 0, 0, 1760, 1756, 1, 0, 0, 0, 1760, 1757, 1, 0, 0, 0, 1760, 1758, 1, 0, 0, 0, 1760, 1759, 1, 0, 0, 0, 1761, 

+

617 253, 1, 0, 0, 0, 1762, 1765, 3, 318, 159, 0, 1763, 1765, 3, 500, 250, 0, 1764, 1762, 1, 0, 0, 0, 1764, 1763, 1, 0, 

+

618 0, 0, 1765, 255, 1, 0, 0, 0, 1766, 1767, 5, 143, 0, 0, 1767, 1772, 3, 138, 69, 0, 1768, 1769, 5, 151, 0, 0, 1769, 

+

619 1771, 3, 138, 69, 0, 1770, 1768, 1, 0, 0, 0, 1771, 1774, 1, 0, 0, 0, 1772, 1770, 1, 0, 0, 0, 1772, 1773, 1, 0, 0, 0, 

+

620 1773, 1775, 1, 0, 0, 0, 1774, 1772, 1, 0, 0, 0, 1775, 1776, 5, 144, 0, 0, 1776, 257, 1, 0, 0, 0, 1777, 1778, 3, 318, 

+

621 159, 0, 1778, 1779, 5, 79, 0, 0, 1779, 1780, 5, 142, 0, 0, 1780, 259, 1, 0, 0, 0, 1781, 1783, 5, 23, 0, 0, 1782, 

+

622 1781, 1, 0, 0, 0, 1782, 1783, 1, 0, 0, 0, 1783, 1784, 1, 0, 0, 0, 1784, 1795, 3, 318, 159, 0, 1785, 1786, 5, 34, 0, 

+

623 0, 1786, 1790, 3, 318, 159, 0, 1787, 1788, 5, 143, 0, 0, 1788, 1789, 5, 163, 0, 0, 1789, 1791, 5, 144, 0, 0, 1790, 

+

624 1787, 1, 0, 0, 0, 1790, 1791, 1, 0, 0, 0, 1791, 1795, 1, 0, 0, 0, 1792, 1793, 5, 24, 0, 0, 1793, 1795, 3, 318, 159, 

+

625 0, 1794, 1782, 1, 0, 0, 0, 1794, 1785, 1, 0, 0, 0, 1794, 1792, 1, 0, 0, 0, 1795, 261, 1, 0, 0, 0, 1796, 1801, 5, 

+

626 163, 0, 0, 1797, 1798, 5, 151, 0, 0, 1798, 1800, 5, 163, 0, 0, 1799, 1797, 1, 0, 0, 0, 1800, 1803, 1, 0, 0, 0, 1801, 

+

627 1799, 1, 0, 0, 0, 1801, 1802, 1, 0, 0, 0, 1802, 1807, 1, 0, 0, 0, 1803, 1801, 1, 0, 0, 0, 1804, 1807, 5, 68, 0, 0, 

+

628 1805, 1807, 5, 10, 0, 0, 1806, 1796, 1, 0, 0, 0, 1806, 1804, 1, 0, 0, 0, 1806, 1805, 1, 0, 0, 0, 1807, 263, 1, 0, 0, 

+

629 0, 1808, 1809, 5, 79, 0, 0, 1809, 1810, 5, 142, 0, 0, 1810, 265, 1, 0, 0, 0, 1811, 1812, 3, 394, 197, 0, 1812, 267, 

+

630 1, 0, 0, 0, 1813, 1815, 5, 25, 0, 0, 1814, 1813, 1, 0, 0, 0, 1814, 1815, 1, 0, 0, 0, 1815, 1816, 1, 0, 0, 0, 1816, 

+

631 1817, 3, 242, 121, 0, 1817, 1819, 5, 149, 0, 0, 1818, 1820, 5, 47, 0, 0, 1819, 1818, 1, 0, 0, 0, 1819, 1820, 1, 0, 

+

632 0, 0, 1820, 1821, 1, 0, 0, 0, 1821, 1824, 3, 484, 242, 0, 1822, 1823, 5, 141, 0, 0, 1823, 1825, 3, 184, 92, 0, 1824, 

+

633 1822, 1, 0, 0, 0, 1824, 1825, 1, 0, 0, 0, 1825, 269, 1, 0, 0, 0, 1826, 1833, 3, 268, 134, 0, 1827, 1833, 3, 298, 

+

634 149, 0, 1828, 1833, 3, 274, 137, 0, 1829, 1833, 3, 294, 147, 0, 1830, 1833, 3, 288, 144, 0, 1831, 1833, 3, 280, 140, 

+

635 0, 1832, 1826, 1, 0, 0, 0, 1832, 1827, 1, 0, 0, 0, 1832, 1828, 1, 0, 0, 0, 1832, 1829, 1, 0, 0, 0, 1832, 1830, 1, 0, 

+

636 0, 0, 1832, 1831, 1, 0, 0, 0, 1833, 271, 1, 0, 0, 0, 1834, 1835, 3, 270, 135, 0, 1835, 273, 1, 0, 0, 0, 1836, 1837, 

+

637 5, 36, 0, 0, 1837, 1838, 3, 242, 121, 0, 1838, 1839, 5, 149, 0, 0, 1839, 1840, 3, 484, 242, 0, 1840, 275, 1, 0, 0, 

+

638 0, 1841, 1843, 7, 12, 0, 0, 1842, 1841, 1, 0, 0, 0, 1842, 1843, 1, 0, 0, 0, 1843, 1844, 1, 0, 0, 0, 1844, 1845, 5, 

+

639 39, 0, 0, 1845, 1853, 3, 132, 66, 0, 1846, 1848, 5, 71, 0, 0, 1847, 1846, 1, 0, 0, 0, 1847, 1848, 1, 0, 0, 0, 1848, 

+

640 1849, 1, 0, 0, 0, 1849, 1850, 5, 143, 0, 0, 1850, 1851, 3, 214, 107, 0, 1851, 1852, 5, 144, 0, 0, 1852, 1854, 1, 0, 

+

641 0, 0, 1853, 1847, 1, 0, 0, 0, 1853, 1854, 1, 0, 0, 0, 1854, 1855, 1, 0, 0, 0, 1855, 1856, 5, 86, 0, 0, 1856, 1857, 

+

642 3, 318, 159, 0, 1857, 277, 1, 0, 0, 0, 1858, 1863, 3, 272, 136, 0, 1859, 1860, 5, 150, 0, 0, 1860, 1862, 3, 272, 

+

643 136, 0, 1861, 1859, 1, 0, 0, 0, 1862, 1865, 1, 0, 0, 0, 1863, 1861, 1, 0, 0, 0, 1863, 1864, 1, 0, 0, 0, 1864, 1867, 

+

644 1, 0, 0, 0, 1865, 1863, 1, 0, 0, 0, 1866, 1868, 5, 150, 0, 0, 1867, 1866, 1, 0, 0, 0, 1867, 1868, 1, 0, 0, 0, 1868, 

+

645 279, 1, 0, 0, 0, 1869, 1870, 5, 70, 0, 0, 1870, 1871, 5, 163, 0, 0, 1871, 1872, 5, 50, 0, 0, 1872, 1873, 5, 59, 0, 

+

646 0, 1873, 1874, 3, 318, 159, 0, 1874, 1875, 3, 282, 141, 0, 1875, 281, 1, 0, 0, 0, 1876, 1883, 3, 232, 116, 0, 1877, 

+

647 1878, 5, 42, 0, 0, 1878, 1879, 5, 56, 0, 0, 1879, 1880, 5, 143, 0, 0, 1880, 1881, 7, 13, 0, 0, 1881, 1883, 5, 144, 

+

648 0, 0, 1882, 1876, 1, 0, 0, 0, 1882, 1877, 1, 0, 0, 0, 1883, 283, 1, 0, 0, 0, 1884, 1885, 5, 75, 0, 0, 1885, 1893, 5, 

+

649 163, 0, 0, 1886, 1888, 5, 71, 0, 0, 1887, 1886, 1, 0, 0, 0, 1887, 1888, 1, 0, 0, 0, 1888, 1889, 1, 0, 0, 0, 1889, 

+

650 1890, 5, 143, 0, 0, 1890, 1891, 3, 214, 107, 0, 1891, 1892, 5, 144, 0, 0, 1892, 1894, 1, 0, 0, 0, 1893, 1887, 1, 0, 

+

651 0, 0, 1893, 1894, 1, 0, 0, 0, 1894, 285, 1, 0, 0, 0, 1895, 1897, 5, 93, 0, 0, 1896, 1895, 1, 0, 0, 0, 1896, 1897, 1, 

+

652 0, 0, 0, 1897, 1898, 1, 0, 0, 0, 1898, 1899, 3, 242, 121, 0, 1899, 1900, 5, 149, 0, 0, 1900, 1901, 3, 312, 156, 0, 

+

653 1901, 287, 1, 0, 0, 0, 1902, 1905, 3, 292, 146, 0, 1903, 1904, 5, 50, 0, 0, 1904, 1906, 3, 290, 145, 0, 1905, 1903, 

+

654 1, 0, 0, 0, 1905, 1906, 1, 0, 0, 0, 1906, 289, 1, 0, 0, 0, 1907, 1910, 3, 318, 159, 0, 1908, 1910, 5, 142, 0, 0, 

+

655 1909, 1907, 1, 0, 0, 0, 1909, 1908, 1, 0, 0, 0, 1910, 291, 1, 0, 0, 0, 1911, 1914, 3, 276, 138, 0, 1912, 1914, 3, 

+

656 284, 142, 0, 1913, 1911, 1, 0, 0, 0, 1913, 1912, 1, 0, 0, 0, 1914, 293, 1, 0, 0, 0, 1915, 1916, 5, 104, 0, 0, 1916, 

+

657 1919, 5, 163, 0, 0, 1917, 1918, 5, 50, 0, 0, 1918, 1920, 3, 252, 126, 0, 1919, 1917, 1, 0, 0, 0, 1919, 1920, 1, 0, 

+

658 0, 0, 1920, 295, 1, 0, 0, 0, 1921, 1924, 3, 484, 242, 0, 1922, 1924, 3, 500, 250, 0, 1923, 1921, 1, 0, 0, 0, 1923, 

+

659 1922, 1, 0, 0, 0, 1924, 297, 1, 0, 0, 0, 1925, 1927, 5, 109, 0, 0, 1926, 1925, 1, 0, 0, 0, 1926, 1927, 1, 0, 0, 0, 

+

660 1927, 1928, 1, 0, 0, 0, 1928, 1929, 3, 242, 121, 0, 1929, 1931, 5, 149, 0, 0, 1930, 1932, 3, 310, 155, 0, 1931, 

+

661 1930, 1, 0, 0, 0, 1931, 1932, 1, 0, 0, 0, 1932, 1933, 1, 0, 0, 0, 1933, 1936, 3, 296, 148, 0, 1934, 1935, 5, 141, 0, 

+

662 0, 1935, 1937, 3, 98, 49, 0, 1936, 1934, 1, 0, 0, 0, 1936, 1937, 1, 0, 0, 0, 1937, 299, 1, 0, 0, 0, 1938, 1939, 5, 

+

663 118, 0, 0, 1939, 1943, 3, 184, 92, 0, 1940, 1941, 5, 37, 0, 0, 1941, 1943, 3, 340, 170, 0, 1942, 1938, 1, 0, 0, 0, 

+

664 1942, 1940, 1, 0, 0, 0, 1943, 301, 1, 0, 0, 0, 1944, 1945, 5, 52, 0, 0, 1945, 1950, 5, 163, 0, 0, 1946, 1947, 5, 

+

665 151, 0, 0, 1947, 1949, 5, 163, 0, 0, 1948, 1946, 1, 0, 0, 0, 1949, 1952, 1, 0, 0, 0, 1950, 1948, 1, 0, 0, 0, 1950, 

+

666 1951, 1, 0, 0, 0, 1951, 1953, 1, 0, 0, 0, 1952, 1950, 1, 0, 0, 0, 1953, 1954, 5, 150, 0, 0, 1954, 303, 1, 0, 0, 0, 

+

667 1955, 1963, 3, 164, 82, 0, 1956, 1963, 3, 106, 53, 0, 1957, 1963, 3, 330, 165, 0, 1958, 1963, 3, 334, 167, 0, 1959, 

+

668 1963, 3, 120, 60, 0, 1960, 1963, 3, 20, 10, 0, 1961, 1963, 3, 326, 163, 0, 1962, 1955, 1, 0, 0, 0, 1962, 1956, 1, 0, 

+

669 0, 0, 1962, 1957, 1, 0, 0, 0, 1962, 1958, 1, 0, 0, 0, 1962, 1959, 1, 0, 0, 0, 1962, 1960, 1, 0, 0, 0, 1962, 1961, 1, 

+

670 0, 0, 0, 1963, 305, 1, 0, 0, 0, 1964, 1970, 3, 324, 162, 0, 1965, 1970, 3, 178, 89, 0, 1966, 1970, 5, 162, 0, 0, 

+

671 1967, 1970, 5, 160, 0, 0, 1968, 1970, 5, 63, 0, 0, 1969, 1964, 1, 0, 0, 0, 1969, 1965, 1, 0, 0, 0, 1969, 1966, 1, 0, 

+

672 0, 0, 1969, 1967, 1, 0, 0, 0, 1969, 1968, 1, 0, 0, 0, 1970, 307, 1, 0, 0, 0, 1971, 1972, 5, 163, 0, 0, 1972, 1974, 

+

673 5, 149, 0, 0, 1973, 1971, 1, 0, 0, 0, 1973, 1974, 1, 0, 0, 0, 1974, 1976, 1, 0, 0, 0, 1975, 1977, 3, 300, 150, 0, 

+

674 1976, 1975, 1, 0, 0, 0, 1976, 1977, 1, 0, 0, 0, 1977, 1978, 1, 0, 0, 0, 1978, 1982, 5, 54, 0, 0, 1979, 1981, 3, 444, 

+

675 222, 0, 1980, 1979, 1, 0, 0, 0, 1981, 1984, 1, 0, 0, 0, 1982, 1980, 1, 0, 0, 0, 1982, 1983, 1, 0, 0, 0, 1983, 1985, 

+

676 1, 0, 0, 0, 1984, 1982, 1, 0, 0, 0, 1985, 1986, 5, 33, 0, 0, 1986, 1988, 5, 54, 0, 0, 1987, 1989, 5, 163, 0, 0, 

+

677 1988, 1987, 1, 0, 0, 0, 1988, 1989, 1, 0, 0, 0, 1989, 1990, 1, 0, 0, 0, 1990, 1991, 5, 150, 0, 0, 1991, 309, 1, 0, 

+

678 0, 0, 1992, 1993, 7, 14, 0, 0, 1993, 311, 1, 0, 0, 0, 1994, 1998, 3, 458, 229, 0, 1995, 1998, 3, 32, 16, 0, 1996, 

+

679 1998, 3, 408, 204, 0, 1997, 1994, 1, 0, 0, 0, 1997, 1995, 1, 0, 0, 0, 1997, 1996, 1, 0, 0, 0, 1998, 313, 1, 0, 0, 0, 

+

680 1999, 2000, 5, 110, 0, 0, 2000, 2001, 5, 163, 0, 0, 2001, 2002, 5, 64, 0, 0, 2002, 2003, 3, 484, 242, 0, 2003, 2007, 

+

681 5, 50, 0, 0, 2004, 2006, 3, 316, 158, 0, 2005, 2004, 1, 0, 0, 0, 2006, 2009, 1, 0, 0, 0, 2007, 2005, 1, 0, 0, 0, 

+

682 2007, 2008, 1, 0, 0, 0, 2008, 2010, 1, 0, 0, 0, 2009, 2007, 1, 0, 0, 0, 2010, 2011, 5, 33, 0, 0, 2011, 2013, 5, 110, 

+

683 0, 0, 2012, 2014, 5, 163, 0, 0, 2013, 2012, 1, 0, 0, 0, 2013, 2014, 1, 0, 0, 0, 2014, 2015, 1, 0, 0, 0, 2015, 2016, 

+

684 5, 150, 0, 0, 2016, 315, 1, 0, 0, 0, 2017, 2018, 3, 400, 200, 0, 2018, 2019, 5, 149, 0, 0, 2019, 2020, 3, 150, 75, 

+

685 0, 2020, 2021, 5, 150, 0, 0, 2021, 317, 1, 0, 0, 0, 2022, 2023, 6, 159, -1, 0, 2023, 2028, 5, 163, 0, 0, 2024, 2028, 

+

686 5, 162, 0, 0, 2025, 2028, 5, 161, 0, 0, 2026, 2028, 3, 188, 94, 0, 2027, 2022, 1, 0, 0, 0, 2027, 2024, 1, 0, 0, 0, 

+

687 2027, 2025, 1, 0, 0, 0, 2027, 2026, 1, 0, 0, 0, 2028, 2063, 1, 0, 0, 0, 2029, 2030, 10, 5, 0, 0, 2030, 2031, 5, 153, 

+

688 0, 0, 2031, 2062, 3, 486, 243, 0, 2032, 2033, 10, 4, 0, 0, 2033, 2034, 5, 143, 0, 0, 2034, 2039, 3, 184, 92, 0, 

+

689 2035, 2036, 5, 151, 0, 0, 2036, 2038, 3, 184, 92, 0, 2037, 2035, 1, 0, 0, 0, 2038, 2041, 1, 0, 0, 0, 2039, 2037, 1, 

+

690 0, 0, 0, 2039, 2040, 1, 0, 0, 0, 2040, 2042, 1, 0, 0, 0, 2041, 2039, 1, 0, 0, 0, 2042, 2043, 5, 144, 0, 0, 2043, 

+

691 2062, 1, 0, 0, 0, 2044, 2045, 10, 3, 0, 0, 2045, 2046, 5, 143, 0, 0, 2046, 2047, 3, 138, 69, 0, 2047, 2048, 5, 144, 

+

692 0, 0, 2048, 2062, 1, 0, 0, 0, 2049, 2051, 10, 2, 0, 0, 2050, 2052, 3, 452, 226, 0, 2051, 2050, 1, 0, 0, 0, 2051, 

+

693 2052, 1, 0, 0, 0, 2052, 2053, 1, 0, 0, 0, 2053, 2054, 5, 157, 0, 0, 2054, 2059, 3, 44, 22, 0, 2055, 2056, 5, 143, 0, 

+

694 0, 2056, 2057, 3, 184, 92, 0, 2057, 2058, 5, 144, 0, 0, 2058, 2060, 1, 0, 0, 0, 2059, 2055, 1, 0, 0, 0, 2059, 2060, 

+

695 1, 0, 0, 0, 2060, 2062, 1, 0, 0, 0, 2061, 2029, 1, 0, 0, 0, 2061, 2032, 1, 0, 0, 0, 2061, 2044, 1, 0, 0, 0, 2061, 

+

696 2049, 1, 0, 0, 0, 2062, 2065, 1, 0, 0, 0, 2063, 2061, 1, 0, 0, 0, 2063, 2064, 1, 0, 0, 0, 2064, 319, 1, 0, 0, 0, 

+

697 2065, 2063, 1, 0, 0, 0, 2066, 2067, 5, 163, 0, 0, 2067, 2069, 5, 149, 0, 0, 2068, 2066, 1, 0, 0, 0, 2068, 2069, 1, 

+

698 0, 0, 0, 2069, 2070, 1, 0, 0, 0, 2070, 2072, 5, 60, 0, 0, 2071, 2073, 5, 163, 0, 0, 2072, 2071, 1, 0, 0, 0, 2072, 

+

699 2073, 1, 0, 0, 0, 2073, 2076, 1, 0, 0, 0, 2074, 2075, 5, 117, 0, 0, 2075, 2077, 3, 184, 92, 0, 2076, 2074, 1, 0, 0, 

+

700 0, 2076, 2077, 1, 0, 0, 0, 2077, 2078, 1, 0, 0, 0, 2078, 2079, 5, 150, 0, 0, 2079, 321, 1, 0, 0, 0, 2080, 2081, 5, 

+

701 163, 0, 0, 2081, 2083, 5, 149, 0, 0, 2082, 2080, 1, 0, 0, 0, 2082, 2083, 1, 0, 0, 0, 2083, 2084, 1, 0, 0, 0, 2084, 

+

702 2085, 5, 63, 0, 0, 2085, 2086, 5, 150, 0, 0, 2086, 323, 1, 0, 0, 0, 2087, 2090, 5, 159, 0, 0, 2088, 2090, 3, 348, 

+

703 174, 0, 2089, 2087, 1, 0, 0, 0, 2089, 2088, 1, 0, 0, 0, 2090, 325, 1, 0, 0, 0, 2091, 2092, 5, 70, 0, 0, 2092, 2093, 

+

704 5, 19, 0, 0, 2093, 2094, 5, 163, 0, 0, 2094, 2098, 5, 50, 0, 0, 2095, 2097, 3, 328, 164, 0, 2096, 2095, 1, 0, 0, 0, 

+

705 2097, 2100, 1, 0, 0, 0, 2098, 2096, 1, 0, 0, 0, 2098, 2099, 1, 0, 0, 0, 2099, 2101, 1, 0, 0, 0, 2100, 2098, 1, 0, 0, 

+

706 0, 2101, 2104, 5, 33, 0, 0, 2102, 2103, 5, 70, 0, 0, 2103, 2105, 5, 19, 0, 0, 2104, 2102, 1, 0, 0, 0, 2104, 2105, 1, 

+

707 0, 0, 0, 2105, 2107, 1, 0, 0, 0, 2106, 2108, 5, 163, 0, 0, 2107, 2106, 1, 0, 0, 0, 2107, 2108, 1, 0, 0, 0, 2108, 

+

708 2109, 1, 0, 0, 0, 2109, 2110, 5, 150, 0, 0, 2110, 327, 1, 0, 0, 0, 2111, 2129, 3, 472, 236, 0, 2112, 2129, 3, 470, 

+

709 235, 0, 2113, 2129, 3, 476, 238, 0, 2114, 2129, 3, 330, 165, 0, 2115, 2129, 3, 326, 163, 0, 2116, 2129, 3, 334, 167, 

+

710 0, 2117, 2129, 3, 494, 247, 0, 2118, 2129, 3, 482, 241, 0, 2119, 2129, 3, 114, 57, 0, 2120, 2129, 3, 508, 254, 0, 

+

711 2121, 2129, 3, 198, 99, 0, 2122, 2129, 3, 12, 6, 0, 2123, 2129, 3, 42, 21, 0, 2124, 2129, 3, 46, 23, 0, 2125, 2129, 

+

712 3, 502, 251, 0, 2126, 2129, 3, 238, 119, 0, 2127, 2129, 3, 236, 118, 0, 2128, 2111, 1, 0, 0, 0, 2128, 2112, 1, 0, 0, 

+

713 0, 2128, 2113, 1, 0, 0, 0, 2128, 2114, 1, 0, 0, 0, 2128, 2115, 1, 0, 0, 0, 2128, 2116, 1, 0, 0, 0, 2128, 2117, 1, 0, 

+

714 0, 0, 2128, 2118, 1, 0, 0, 0, 2128, 2119, 1, 0, 0, 0, 2128, 2120, 1, 0, 0, 0, 2128, 2121, 1, 0, 0, 0, 2128, 2122, 1, 

+

715 0, 0, 0, 2128, 2123, 1, 0, 0, 0, 2128, 2124, 1, 0, 0, 0, 2128, 2125, 1, 0, 0, 0, 2128, 2126, 1, 0, 0, 0, 2128, 2127, 

+

716 1, 0, 0, 0, 2129, 329, 1, 0, 0, 0, 2130, 2131, 5, 70, 0, 0, 2131, 2132, 5, 163, 0, 0, 2132, 2134, 5, 50, 0, 0, 2133, 

+

717 2135, 3, 230, 115, 0, 2134, 2133, 1, 0, 0, 0, 2134, 2135, 1, 0, 0, 0, 2135, 2139, 1, 0, 0, 0, 2136, 2138, 3, 332, 

+

718 166, 0, 2137, 2136, 1, 0, 0, 0, 2138, 2141, 1, 0, 0, 0, 2139, 2137, 1, 0, 0, 0, 2139, 2140, 1, 0, 0, 0, 2140, 2142, 

+

719 1, 0, 0, 0, 2141, 2139, 1, 0, 0, 0, 2142, 2144, 5, 33, 0, 0, 2143, 2145, 5, 70, 0, 0, 2144, 2143, 1, 0, 0, 0, 2144, 

+

720 2145, 1, 0, 0, 0, 2145, 2147, 1, 0, 0, 0, 2146, 2148, 5, 163, 0, 0, 2147, 2146, 1, 0, 0, 0, 2147, 2148, 1, 0, 0, 0, 

+

721 2148, 2149, 1, 0, 0, 0, 2149, 2150, 5, 150, 0, 0, 2150, 331, 1, 0, 0, 0, 2151, 2170, 3, 472, 236, 0, 2152, 2170, 3, 

+

722 476, 238, 0, 2153, 2170, 3, 330, 165, 0, 2154, 2170, 3, 334, 167, 0, 2155, 2170, 3, 494, 247, 0, 2156, 2170, 3, 482, 

+

723 241, 0, 2157, 2170, 3, 114, 57, 0, 2158, 2170, 3, 448, 224, 0, 2159, 2170, 3, 508, 254, 0, 2160, 2170, 3, 198, 99, 

+

724 0, 2161, 2170, 3, 12, 6, 0, 2162, 2170, 3, 72, 36, 0, 2163, 2170, 3, 42, 21, 0, 2164, 2170, 3, 46, 23, 0, 2165, 

+

725 2170, 3, 136, 68, 0, 2166, 2170, 3, 502, 251, 0, 2167, 2170, 3, 238, 119, 0, 2168, 2170, 3, 236, 118, 0, 2169, 2151, 

+

726 1, 0, 0, 0, 2169, 2152, 1, 0, 0, 0, 2169, 2153, 1, 0, 0, 0, 2169, 2154, 1, 0, 0, 0, 2169, 2155, 1, 0, 0, 0, 2169, 

+

727 2156, 1, 0, 0, 0, 2169, 2157, 1, 0, 0, 0, 2169, 2158, 1, 0, 0, 0, 2169, 2159, 1, 0, 0, 0, 2169, 2160, 1, 0, 0, 0, 

+

728 2169, 2161, 1, 0, 0, 0, 2169, 2162, 1, 0, 0, 0, 2169, 2163, 1, 0, 0, 0, 2169, 2164, 1, 0, 0, 0, 2169, 2165, 1, 0, 0, 

+

729 0, 2169, 2166, 1, 0, 0, 0, 2169, 2167, 1, 0, 0, 0, 2169, 2168, 1, 0, 0, 0, 2170, 333, 1, 0, 0, 0, 2171, 2172, 5, 70, 

+

730 0, 0, 2172, 2173, 5, 163, 0, 0, 2173, 2174, 5, 50, 0, 0, 2174, 2175, 5, 59, 0, 0, 2175, 2177, 3, 318, 159, 0, 2176, 

+

731 2178, 3, 232, 116, 0, 2177, 2176, 1, 0, 0, 0, 2177, 2178, 1, 0, 0, 0, 2178, 2179, 1, 0, 0, 0, 2179, 2180, 5, 150, 0, 

+

732 0, 2180, 335, 1, 0, 0, 0, 2181, 2182, 5, 155, 0, 0, 2182, 2183, 5, 163, 0, 0, 2183, 2188, 5, 153, 0, 0, 2184, 2185, 

+

733 5, 163, 0, 0, 2185, 2187, 5, 153, 0, 0, 2186, 2184, 1, 0, 0, 0, 2187, 2190, 1, 0, 0, 0, 2188, 2186, 1, 0, 0, 0, 

+

734 2188, 2189, 1, 0, 0, 0, 2189, 2191, 1, 0, 0, 0, 2190, 2188, 1, 0, 0, 0, 2191, 2192, 5, 163, 0, 0, 2192, 337, 1, 0, 

+

735 0, 0, 2193, 2194, 5, 71, 0, 0, 2194, 2196, 5, 56, 0, 0, 2195, 2193, 1, 0, 0, 0, 2195, 2196, 1, 0, 0, 0, 2196, 2197, 

+

736 1, 0, 0, 0, 2197, 2198, 5, 143, 0, 0, 2198, 2199, 3, 40, 20, 0, 2199, 2200, 5, 144, 0, 0, 2200, 339, 1, 0, 0, 0, 

+

737 2201, 2202, 5, 163, 0, 0, 2202, 2203, 5, 47, 0, 0, 2203, 2204, 3, 138, 69, 0, 2204, 341, 1, 0, 0, 0, 2205, 2206, 3, 

+

738 344, 172, 0, 2206, 2207, 5, 153, 0, 0, 2207, 2209, 1, 0, 0, 0, 2208, 2205, 1, 0, 0, 0, 2209, 2212, 1, 0, 0, 0, 2210, 

+

739 2208, 1, 0, 0, 0, 2210, 2211, 1, 0, 0, 0, 2211, 2213, 1, 0, 0, 0, 2212, 2210, 1, 0, 0, 0, 2213, 2214, 5, 163, 0, 0, 

+

740 2214, 343, 1, 0, 0, 0, 2215, 2216, 5, 163, 0, 0, 2216, 345, 1, 0, 0, 0, 2217, 2218, 5, 106, 0, 0, 2218, 2219, 5, 

+

741 142, 0, 0, 2219, 347, 1, 0, 0, 0, 2220, 2222, 5, 159, 0, 0, 2221, 2220, 1, 0, 0, 0, 2221, 2222, 1, 0, 0, 0, 2222, 

+

742 2223, 1, 0, 0, 0, 2223, 2224, 3, 318, 159, 0, 2224, 349, 1, 0, 0, 0, 2225, 2226, 3, 394, 197, 0, 2226, 2227, 5, 106, 

+

743 0, 0, 2227, 2228, 5, 163, 0, 0, 2228, 2232, 5, 150, 0, 0, 2229, 2231, 3, 422, 211, 0, 2230, 2229, 1, 0, 0, 0, 2231, 

+

744 2234, 1, 0, 0, 0, 2232, 2230, 1, 0, 0, 0, 2232, 2233, 1, 0, 0, 0, 2233, 2235, 1, 0, 0, 0, 2234, 2232, 1, 0, 0, 0, 

+

745 2235, 2236, 5, 33, 0, 0, 2236, 2238, 5, 106, 0, 0, 2237, 2239, 5, 163, 0, 0, 2238, 2237, 1, 0, 0, 0, 2238, 2239, 1, 

+

746 0, 0, 0, 2239, 351, 1, 0, 0, 0, 2240, 2241, 5, 163, 0, 0, 2241, 2243, 5, 149, 0, 0, 2242, 2240, 1, 0, 0, 0, 2242, 

+

747 2243, 1, 0, 0, 0, 2243, 2244, 1, 0, 0, 0, 2244, 2247, 5, 86, 0, 0, 2245, 2246, 5, 117, 0, 0, 2246, 2248, 3, 184, 92, 

+

748 0, 2247, 2245, 1, 0, 0, 0, 2247, 2248, 1, 0, 0, 0, 2248, 2249, 1, 0, 0, 0, 2249, 2250, 5, 150, 0, 0, 2250, 353, 1, 

+

749 0, 0, 0, 2251, 2252, 5, 72, 0, 0, 2252, 2253, 5, 143, 0, 0, 2253, 2258, 3, 286, 143, 0, 2254, 2255, 5, 150, 0, 0, 

+

750 2255, 2257, 3, 286, 143, 0, 2256, 2254, 1, 0, 0, 0, 2257, 2260, 1, 0, 0, 0, 2258, 2256, 1, 0, 0, 0, 2258, 2259, 1, 

+

751 0, 0, 0, 2259, 2262, 1, 0, 0, 0, 2260, 2258, 1, 0, 0, 0, 2261, 2263, 5, 150, 0, 0, 2262, 2261, 1, 0, 0, 0, 2262, 

+

752 2263, 1, 0, 0, 0, 2263, 2264, 1, 0, 0, 0, 2264, 2265, 5, 144, 0, 0, 2265, 2266, 5, 150, 0, 0, 2266, 355, 1, 0, 0, 0, 

+

753 2267, 2268, 5, 72, 0, 0, 2268, 2269, 5, 56, 0, 0, 2269, 2270, 5, 143, 0, 0, 2270, 2271, 3, 40, 20, 0, 2271, 2272, 5, 

+

754 144, 0, 0, 2272, 357, 1, 0, 0, 0, 2273, 2285, 3, 318, 159, 0, 2274, 2285, 3, 306, 153, 0, 2275, 2285, 3, 10, 5, 0, 

+

755 2276, 2285, 3, 220, 110, 0, 2277, 2285, 3, 390, 195, 0, 2278, 2285, 3, 492, 246, 0, 2279, 2285, 3, 18, 9, 0, 2280, 

+

756 2281, 5, 143, 0, 0, 2281, 2282, 3, 184, 92, 0, 2282, 2283, 5, 144, 0, 0, 2283, 2285, 1, 0, 0, 0, 2284, 2273, 1, 0, 

+

757 0, 0, 2284, 2274, 1, 0, 0, 0, 2284, 2275, 1, 0, 0, 0, 2284, 2276, 1, 0, 0, 0, 2284, 2277, 1, 0, 0, 0, 2284, 2278, 1, 

+

758 0, 0, 0, 2284, 2279, 1, 0, 0, 0, 2284, 2280, 1, 0, 0, 0, 2285, 359, 1, 0, 0, 0, 2286, 2287, 5, 74, 0, 0, 2287, 2288, 

+

759 3, 508, 254, 0, 2288, 361, 1, 0, 0, 0, 2289, 2290, 5, 74, 0, 0, 2290, 363, 1, 0, 0, 0, 2291, 2293, 3, 318, 159, 0, 

+

760 2292, 2294, 3, 232, 116, 0, 2293, 2292, 1, 0, 0, 0, 2293, 2294, 1, 0, 0, 0, 2294, 2296, 1, 0, 0, 0, 2295, 2297, 3, 

+

761 338, 169, 0, 2296, 2295, 1, 0, 0, 0, 2296, 2297, 1, 0, 0, 0, 2297, 365, 1, 0, 0, 0, 2298, 2299, 5, 163, 0, 0, 2299, 

+

762 2301, 5, 149, 0, 0, 2300, 2298, 1, 0, 0, 0, 2300, 2301, 1, 0, 0, 0, 2301, 2302, 1, 0, 0, 0, 2302, 2303, 3, 364, 182, 

+

763 0, 2303, 2304, 5, 150, 0, 0, 2304, 367, 1, 0, 0, 0, 2305, 2306, 5, 75, 0, 0, 2306, 2314, 5, 163, 0, 0, 2307, 2309, 

+

764 5, 71, 0, 0, 2308, 2307, 1, 0, 0, 0, 2308, 2309, 1, 0, 0, 0, 2309, 2310, 1, 0, 0, 0, 2310, 2311, 5, 143, 0, 0, 2311, 

+

765 2312, 3, 214, 107, 0, 2312, 2313, 5, 144, 0, 0, 2313, 2315, 1, 0, 0, 0, 2314, 2308, 1, 0, 0, 0, 2314, 2315, 1, 0, 0, 

+

766 0, 2315, 369, 1, 0, 0, 0, 2316, 2334, 3, 472, 236, 0, 2317, 2334, 3, 470, 235, 0, 2318, 2334, 3, 476, 238, 0, 2319, 

+

767 2334, 3, 330, 165, 0, 2320, 2334, 3, 326, 163, 0, 2321, 2334, 3, 334, 167, 0, 2322, 2334, 3, 494, 247, 0, 2323, 

+

768 2334, 3, 482, 241, 0, 2324, 2334, 3, 114, 57, 0, 2325, 2334, 3, 508, 254, 0, 2326, 2334, 3, 198, 99, 0, 2327, 2334, 

+

769 3, 12, 6, 0, 2328, 2334, 3, 42, 21, 0, 2329, 2334, 3, 46, 23, 0, 2330, 2334, 3, 502, 251, 0, 2331, 2334, 3, 238, 

+

770 119, 0, 2332, 2334, 3, 236, 118, 0, 2333, 2316, 1, 0, 0, 0, 2333, 2317, 1, 0, 0, 0, 2333, 2318, 1, 0, 0, 0, 2333, 

+

771 2319, 1, 0, 0, 0, 2333, 2320, 1, 0, 0, 0, 2333, 2321, 1, 0, 0, 0, 2333, 2322, 1, 0, 0, 0, 2333, 2323, 1, 0, 0, 0, 

+

772 2333, 2324, 1, 0, 0, 0, 2333, 2325, 1, 0, 0, 0, 2333, 2326, 1, 0, 0, 0, 2333, 2327, 1, 0, 0, 0, 2333, 2328, 1, 0, 0, 

+

773 0, 2333, 2329, 1, 0, 0, 0, 2333, 2330, 1, 0, 0, 0, 2333, 2331, 1, 0, 0, 0, 2333, 2332, 1, 0, 0, 0, 2334, 371, 1, 0, 

+

774 0, 0, 2335, 2338, 3, 440, 220, 0, 2336, 2338, 5, 10, 0, 0, 2337, 2335, 1, 0, 0, 0, 2337, 2336, 1, 0, 0, 0, 2338, 

+

775 373, 1, 0, 0, 0, 2339, 2340, 5, 163, 0, 0, 2340, 2342, 5, 149, 0, 0, 2341, 2339, 1, 0, 0, 0, 2341, 2342, 1, 0, 0, 0, 

+

776 2342, 2343, 1, 0, 0, 0, 2343, 2348, 5, 76, 0, 0, 2344, 2345, 5, 143, 0, 0, 2345, 2346, 3, 372, 186, 0, 2346, 2347, 

+

777 5, 144, 0, 0, 2347, 2349, 1, 0, 0, 0, 2348, 2344, 1, 0, 0, 0, 2348, 2349, 1, 0, 0, 0, 2349, 2351, 1, 0, 0, 0, 2350, 

+

778 2352, 5, 50, 0, 0, 2351, 2350, 1, 0, 0, 0, 2351, 2352, 1, 0, 0, 0, 2352, 2356, 1, 0, 0, 0, 2353, 2355, 3, 370, 185, 

+

779 0, 2354, 2353, 1, 0, 0, 0, 2355, 2358, 1, 0, 0, 0, 2356, 2354, 1, 0, 0, 0, 2356, 2357, 1, 0, 0, 0, 2357, 2359, 1, 0, 

+

780 0, 0, 2358, 2356, 1, 0, 0, 0, 2359, 2363, 5, 17, 0, 0, 2360, 2362, 3, 444, 222, 0, 2361, 2360, 1, 0, 0, 0, 2362, 

+

781 2365, 1, 0, 0, 0, 2363, 2361, 1, 0, 0, 0, 2363, 2364, 1, 0, 0, 0, 2364, 2366, 1, 0, 0, 0, 2365, 2363, 1, 0, 0, 0, 

+

782 2366, 2367, 5, 33, 0, 0, 2367, 2369, 5, 76, 0, 0, 2368, 2370, 5, 163, 0, 0, 2369, 2368, 1, 0, 0, 0, 2369, 2370, 1, 

+

783 0, 0, 0, 2370, 2371, 1, 0, 0, 0, 2371, 2372, 5, 150, 0, 0, 2372, 375, 1, 0, 0, 0, 2373, 2374, 5, 163, 0, 0, 2374, 

+

784 2376, 5, 149, 0, 0, 2375, 2373, 1, 0, 0, 0, 2375, 2376, 1, 0, 0, 0, 2376, 2377, 1, 0, 0, 0, 2377, 2378, 5, 73, 0, 0, 

+

785 2378, 2383, 5, 76, 0, 0, 2379, 2380, 5, 143, 0, 0, 2380, 2381, 3, 440, 220, 0, 2381, 2382, 5, 144, 0, 0, 2382, 2384, 

+

786 1, 0, 0, 0, 2383, 2379, 1, 0, 0, 0, 2383, 2384, 1, 0, 0, 0, 2384, 2386, 1, 0, 0, 0, 2385, 2387, 5, 50, 0, 0, 2386, 

+

787 2385, 1, 0, 0, 0, 2386, 2387, 1, 0, 0, 0, 2387, 2391, 1, 0, 0, 0, 2388, 2390, 3, 370, 185, 0, 2389, 2388, 1, 0, 0, 

+

788 0, 2390, 2393, 1, 0, 0, 0, 2391, 2389, 1, 0, 0, 0, 2391, 2392, 1, 0, 0, 0, 2392, 2394, 1, 0, 0, 0, 2393, 2391, 1, 0, 

+

789 0, 0, 2394, 2398, 5, 17, 0, 0, 2395, 2397, 3, 444, 222, 0, 2396, 2395, 1, 0, 0, 0, 2397, 2400, 1, 0, 0, 0, 2398, 

+

790 2396, 1, 0, 0, 0, 2398, 2399, 1, 0, 0, 0, 2399, 2401, 1, 0, 0, 0, 2400, 2398, 1, 0, 0, 0, 2401, 2403, 5, 33, 0, 0, 

+

791 2402, 2404, 5, 73, 0, 0, 2403, 2402, 1, 0, 0, 0, 2403, 2404, 1, 0, 0, 0, 2404, 2405, 1, 0, 0, 0, 2405, 2407, 5, 76, 

+

792 0, 0, 2406, 2408, 5, 163, 0, 0, 2407, 2406, 1, 0, 0, 0, 2407, 2408, 1, 0, 0, 0, 2408, 2409, 1, 0, 0, 0, 2409, 2410, 

+

793 5, 150, 0, 0, 2410, 377, 1, 0, 0, 0, 2411, 2412, 5, 77, 0, 0, 2412, 2416, 5, 19, 0, 0, 2413, 2415, 3, 380, 190, 0, 

+

794 2414, 2413, 1, 0, 0, 0, 2415, 2418, 1, 0, 0, 0, 2416, 2414, 1, 0, 0, 0, 2416, 2417, 1, 0, 0, 0, 2417, 2419, 1, 0, 0, 

+

795 0, 2418, 2416, 1, 0, 0, 0, 2419, 2420, 5, 33, 0, 0, 2420, 2421, 5, 77, 0, 0, 2421, 2423, 5, 19, 0, 0, 2422, 2424, 5, 

+

796 163, 0, 0, 2423, 2422, 1, 0, 0, 0, 2423, 2424, 1, 0, 0, 0, 2424, 379, 1, 0, 0, 0, 2425, 2443, 3, 472, 236, 0, 2426, 

+

797 2443, 3, 470, 235, 0, 2427, 2443, 3, 476, 238, 0, 2428, 2443, 3, 330, 165, 0, 2429, 2443, 3, 326, 163, 0, 2430, 

+

798 2443, 3, 334, 167, 0, 2431, 2443, 3, 494, 247, 0, 2432, 2443, 3, 482, 241, 0, 2433, 2443, 3, 114, 57, 0, 2434, 2443, 

+

799 3, 508, 254, 0, 2435, 2443, 3, 198, 99, 0, 2436, 2443, 3, 12, 6, 0, 2437, 2443, 3, 42, 21, 0, 2438, 2443, 3, 46, 23, 

+

800 0, 2439, 2443, 3, 502, 251, 0, 2440, 2443, 3, 238, 119, 0, 2441, 2443, 3, 236, 118, 0, 2442, 2425, 1, 0, 0, 0, 2442, 

+

801 2426, 1, 0, 0, 0, 2442, 2427, 1, 0, 0, 0, 2442, 2428, 1, 0, 0, 0, 2442, 2429, 1, 0, 0, 0, 2442, 2430, 1, 0, 0, 0, 

+

802 2442, 2431, 1, 0, 0, 0, 2442, 2432, 1, 0, 0, 0, 2442, 2433, 1, 0, 0, 0, 2442, 2434, 1, 0, 0, 0, 2442, 2435, 1, 0, 0, 

+

803 0, 2442, 2436, 1, 0, 0, 0, 2442, 2437, 1, 0, 0, 0, 2442, 2438, 1, 0, 0, 0, 2442, 2439, 1, 0, 0, 0, 2442, 2440, 1, 0, 

+

804 0, 0, 2442, 2441, 1, 0, 0, 0, 2443, 381, 1, 0, 0, 0, 2444, 2448, 5, 77, 0, 0, 2445, 2447, 3, 384, 192, 0, 2446, 

+

805 2445, 1, 0, 0, 0, 2447, 2450, 1, 0, 0, 0, 2448, 2446, 1, 0, 0, 0, 2448, 2449, 1, 0, 0, 0, 2449, 2451, 1, 0, 0, 0, 

+

806 2450, 2448, 1, 0, 0, 0, 2451, 2452, 5, 33, 0, 0, 2452, 2454, 5, 77, 0, 0, 2453, 2455, 5, 163, 0, 0, 2454, 2453, 1, 

+

807 0, 0, 0, 2454, 2455, 1, 0, 0, 0, 2455, 383, 1, 0, 0, 0, 2456, 2463, 3, 472, 236, 0, 2457, 2463, 3, 476, 238, 0, 

+

808 2458, 2463, 3, 360, 180, 0, 2459, 2463, 3, 12, 6, 0, 2460, 2463, 3, 46, 23, 0, 2461, 2463, 3, 502, 251, 0, 2462, 

+

809 2456, 1, 0, 0, 0, 2462, 2457, 1, 0, 0, 0, 2462, 2458, 1, 0, 0, 0, 2462, 2459, 1, 0, 0, 0, 2462, 2460, 1, 0, 0, 0, 

+

810 2462, 2461, 1, 0, 0, 0, 2463, 385, 1, 0, 0, 0, 2464, 2467, 3, 382, 191, 0, 2465, 2467, 3, 378, 189, 0, 2466, 2464, 

+

811 1, 0, 0, 0, 2466, 2465, 1, 0, 0, 0, 2467, 387, 1, 0, 0, 0, 2468, 2469, 5, 59, 0, 0, 2469, 2471, 3, 318, 159, 0, 

+

812 2470, 2472, 3, 232, 116, 0, 2471, 2470, 1, 0, 0, 0, 2471, 2472, 1, 0, 0, 0, 2472, 389, 1, 0, 0, 0, 2473, 2474, 3, 

+

813 318, 159, 0, 2474, 2481, 5, 157, 0, 0, 2475, 2482, 1, 0, 0, 0, 2476, 2477, 5, 143, 0, 0, 2477, 2478, 3, 184, 92, 0, 

+

814 2478, 2479, 5, 144, 0, 0, 2479, 2482, 1, 0, 0, 0, 2480, 2482, 3, 10, 5, 0, 2481, 2475, 1, 0, 0, 0, 2481, 2476, 1, 0, 

+

815 0, 0, 2481, 2480, 1, 0, 0, 0, 2482, 391, 1, 0, 0, 0, 2483, 2487, 3, 318, 159, 0, 2484, 2487, 3, 460, 230, 0, 2485, 

+

816 2487, 3, 184, 92, 0, 2486, 2483, 1, 0, 0, 0, 2486, 2484, 1, 0, 0, 0, 2486, 2485, 1, 0, 0, 0, 2487, 393, 1, 0, 0, 0, 

+

817 2488, 2489, 5, 79, 0, 0, 2489, 2490, 3, 392, 196, 0, 2490, 395, 1, 0, 0, 0, 2491, 2492, 5, 143, 0, 0, 2492, 2497, 3, 

+

818 398, 199, 0, 2493, 2494, 5, 151, 0, 0, 2494, 2496, 3, 398, 199, 0, 2495, 2493, 1, 0, 0, 0, 2496, 2499, 1, 0, 0, 0, 

+

819 2497, 2495, 1, 0, 0, 0, 2497, 2498, 1, 0, 0, 0, 2498, 2500, 1, 0, 0, 0, 2499, 2497, 1, 0, 0, 0, 2500, 2501, 5, 144, 

+

820 0, 0, 2501, 397, 1, 0, 0, 0, 2502, 2503, 5, 163, 0, 0, 2503, 2504, 3, 146, 73, 0, 2504, 399, 1, 0, 0, 0, 2505, 2510, 

+

821 5, 163, 0, 0, 2506, 2507, 5, 151, 0, 0, 2507, 2509, 5, 163, 0, 0, 2508, 2506, 1, 0, 0, 0, 2509, 2512, 1, 0, 0, 0, 

+

822 2510, 2508, 1, 0, 0, 0, 2510, 2511, 1, 0, 0, 0, 2511, 401, 1, 0, 0, 0, 2512, 2510, 1, 0, 0, 0, 2513, 2514, 5, 163, 

+

823 0, 0, 2514, 2515, 3, 414, 207, 0, 2515, 403, 1, 0, 0, 0, 2516, 2521, 3, 402, 201, 0, 2517, 2518, 5, 151, 0, 0, 2518, 

+

824 2520, 3, 402, 201, 0, 2519, 2517, 1, 0, 0, 0, 2520, 2523, 1, 0, 0, 0, 2521, 2519, 1, 0, 0, 0, 2521, 2522, 1, 0, 0, 

+

825 0, 2522, 405, 1, 0, 0, 0, 2523, 2521, 1, 0, 0, 0, 2524, 2528, 5, 80, 0, 0, 2525, 2527, 3, 148, 74, 0, 2526, 2525, 1, 

+

826 0, 0, 0, 2527, 2530, 1, 0, 0, 0, 2528, 2526, 1, 0, 0, 0, 2528, 2529, 1, 0, 0, 0, 2529, 2531, 1, 0, 0, 0, 2530, 2528, 

+

827 1, 0, 0, 0, 2531, 2532, 5, 33, 0, 0, 2532, 2534, 5, 80, 0, 0, 2533, 2535, 5, 163, 0, 0, 2534, 2533, 1, 0, 0, 0, 

+

828 2534, 2535, 1, 0, 0, 0, 2535, 407, 1, 0, 0, 0, 2536, 2537, 5, 110, 0, 0, 2537, 2540, 3, 318, 159, 0, 2538, 2539, 5, 

+

829 64, 0, 0, 2539, 2541, 3, 484, 242, 0, 2540, 2538, 1, 0, 0, 0, 2540, 2541, 1, 0, 0, 0, 2541, 409, 1, 0, 0, 0, 2542, 

+

830 2543, 5, 156, 0, 0, 2543, 2545, 5, 153, 0, 0, 2544, 2542, 1, 0, 0, 0, 2545, 2548, 1, 0, 0, 0, 2546, 2544, 1, 0, 0, 

+

831 0, 2546, 2547, 1, 0, 0, 0, 2547, 2549, 1, 0, 0, 0, 2548, 2546, 1, 0, 0, 0, 2549, 2550, 3, 342, 171, 0, 2550, 411, 1, 

+

832 0, 0, 0, 2551, 2552, 5, 163, 0, 0, 2552, 2554, 5, 149, 0, 0, 2553, 2551, 1, 0, 0, 0, 2553, 2554, 1, 0, 0, 0, 2554, 

+

833 2555, 1, 0, 0, 0, 2555, 2556, 5, 85, 0, 0, 2556, 2559, 3, 184, 92, 0, 2557, 2558, 5, 91, 0, 0, 2558, 2560, 3, 184, 

+

834 92, 0, 2559, 2557, 1, 0, 0, 0, 2559, 2560, 1, 0, 0, 0, 2560, 2561, 1, 0, 0, 0, 2561, 2562, 5, 150, 0, 0, 2562, 413, 

+

835 1, 0, 0, 0, 2563, 2569, 3, 318, 159, 0, 2564, 2565, 5, 143, 0, 0, 2565, 2566, 3, 156, 78, 0, 2566, 2567, 5, 144, 0, 

+

836 0, 2567, 2569, 1, 0, 0, 0, 2568, 2563, 1, 0, 0, 0, 2568, 2564, 1, 0, 0, 0, 2569, 415, 1, 0, 0, 0, 2570, 2573, 3, 

+

837 352, 176, 0, 2571, 2573, 3, 504, 252, 0, 2572, 2570, 1, 0, 0, 0, 2572, 2571, 1, 0, 0, 0, 2573, 417, 1, 0, 0, 0, 

+

838 2574, 2575, 5, 142, 0, 0, 2575, 419, 1, 0, 0, 0, 2576, 2581, 3, 180, 90, 0, 2577, 2581, 3, 266, 133, 0, 2578, 2581, 

+

839 3, 208, 104, 0, 2579, 2581, 3, 350, 175, 0, 2580, 2576, 1, 0, 0, 0, 2580, 2577, 1, 0, 0, 0, 2580, 2578, 1, 0, 0, 0, 

+

840 2580, 2579, 1, 0, 0, 0, 2581, 421, 1, 0, 0, 0, 2582, 2583, 5, 163, 0, 0, 2583, 2585, 5, 121, 0, 0, 2584, 2586, 5, 

+

841 159, 0, 0, 2585, 2584, 1, 0, 0, 0, 2585, 2586, 1, 0, 0, 0, 2586, 2587, 1, 0, 0, 0, 2587, 2588, 5, 163, 0, 0, 2588, 

+

842 2589, 5, 150, 0, 0, 2589, 423, 1, 0, 0, 0, 2590, 2591, 3, 184, 92, 0, 2591, 2592, 5, 117, 0, 0, 2592, 2593, 3, 68, 

+

843 34, 0, 2593, 2594, 5, 151, 0, 0, 2594, 2596, 1, 0, 0, 0, 2595, 2590, 1, 0, 0, 0, 2596, 2599, 1, 0, 0, 0, 2597, 2595, 

+

844 1, 0, 0, 0, 2597, 2598, 1, 0, 0, 0, 2598, 2600, 1, 0, 0, 0, 2599, 2597, 1, 0, 0, 0, 2600, 2601, 3, 184, 92, 0, 2601, 

+

845 2602, 5, 117, 0, 0, 2602, 2603, 3, 68, 34, 0, 2603, 425, 1, 0, 0, 0, 2604, 2605, 5, 116, 0, 0, 2605, 2606, 3, 184, 

+

846 92, 0, 2606, 2608, 5, 90, 0, 0, 2607, 2609, 5, 154, 0, 0, 2608, 2607, 1, 0, 0, 0, 2608, 2609, 1, 0, 0, 0, 2609, 

+

847 2610, 1, 0, 0, 0, 2610, 2611, 3, 488, 244, 0, 2611, 2612, 5, 140, 0, 0, 2612, 2613, 5, 38, 0, 0, 2613, 2614, 7, 15, 

+

848 0, 0, 2614, 2615, 3, 424, 212, 0, 2615, 2616, 5, 150, 0, 0, 2616, 427, 1, 0, 0, 0, 2617, 2620, 5, 163, 0, 0, 2618, 

+

849 2619, 5, 153, 0, 0, 2619, 2621, 5, 163, 0, 0, 2620, 2618, 1, 0, 0, 0, 2621, 2622, 1, 0, 0, 0, 2622, 2620, 1, 0, 0, 

+

850 0, 2622, 2623, 1, 0, 0, 0, 2623, 2635, 1, 0, 0, 0, 2624, 2629, 5, 163, 0, 0, 2625, 2626, 5, 153, 0, 0, 2626, 2628, 

+

851 5, 163, 0, 0, 2627, 2625, 1, 0, 0, 0, 2628, 2631, 1, 0, 0, 0, 2629, 2627, 1, 0, 0, 0, 2629, 2630, 1, 0, 0, 0, 2630, 

+

852 2632, 1, 0, 0, 0, 2631, 2629, 1, 0, 0, 0, 2632, 2633, 5, 153, 0, 0, 2633, 2635, 5, 10, 0, 0, 2634, 2617, 1, 0, 0, 0, 

+

853 2634, 2624, 1, 0, 0, 0, 2635, 429, 1, 0, 0, 0, 2636, 2639, 3, 434, 217, 0, 2637, 2639, 3, 426, 213, 0, 2638, 2636, 

+

854 1, 0, 0, 0, 2638, 2637, 1, 0, 0, 0, 2639, 431, 1, 0, 0, 0, 2640, 2641, 5, 116, 0, 0, 2641, 2642, 3, 184, 92, 0, 

+

855 2642, 2644, 5, 90, 0, 0, 2643, 2645, 5, 154, 0, 0, 2644, 2643, 1, 0, 0, 0, 2644, 2645, 1, 0, 0, 0, 2645, 2646, 1, 0, 

+

856 0, 0, 2646, 2647, 3, 488, 244, 0, 2647, 2648, 5, 141, 0, 0, 2648, 2649, 3, 424, 212, 0, 2649, 2650, 5, 150, 0, 0, 

+

857 2650, 433, 1, 0, 0, 0, 2651, 2652, 5, 116, 0, 0, 2652, 2653, 3, 184, 92, 0, 2653, 2655, 5, 90, 0, 0, 2654, 2656, 5, 

+

858 154, 0, 0, 2655, 2654, 1, 0, 0, 0, 2655, 2656, 1, 0, 0, 0, 2656, 2657, 1, 0, 0, 0, 2657, 2658, 3, 488, 244, 0, 2658, 

+

859 2659, 5, 140, 0, 0, 2659, 2660, 3, 126, 63, 0, 2660, 2661, 3, 436, 218, 0, 2661, 2662, 5, 150, 0, 0, 2662, 435, 1, 

+

860 0, 0, 0, 2663, 2664, 3, 512, 256, 0, 2664, 2665, 5, 117, 0, 0, 2665, 2666, 3, 68, 34, 0, 2666, 2667, 5, 151, 0, 0, 

+

861 2667, 2669, 1, 0, 0, 0, 2668, 2663, 1, 0, 0, 0, 2669, 2672, 1, 0, 0, 0, 2670, 2668, 1, 0, 0, 0, 2670, 2671, 1, 0, 0, 

+

862 0, 2671, 2673, 1, 0, 0, 0, 2672, 2670, 1, 0, 0, 0, 2673, 2674, 3, 512, 256, 0, 2674, 2675, 5, 117, 0, 0, 2675, 2676, 

+

863 3, 68, 34, 0, 2676, 437, 1, 0, 0, 0, 2677, 2678, 5, 65, 0, 0, 2678, 2679, 3, 440, 220, 0, 2679, 439, 1, 0, 0, 0, 

+

864 2680, 2685, 3, 318, 159, 0, 2681, 2682, 5, 151, 0, 0, 2682, 2684, 3, 318, 159, 0, 2683, 2681, 1, 0, 0, 0, 2684, 

+

865 2687, 1, 0, 0, 0, 2685, 2683, 1, 0, 0, 0, 2685, 2686, 1, 0, 0, 0, 2686, 441, 1, 0, 0, 0, 2687, 2685, 1, 0, 0, 0, 

+

866 2688, 2689, 5, 163, 0, 0, 2689, 2691, 5, 149, 0, 0, 2690, 2688, 1, 0, 0, 0, 2690, 2691, 1, 0, 0, 0, 2691, 2692, 1, 

+

867 0, 0, 0, 2692, 2694, 5, 18, 0, 0, 2693, 2695, 5, 50, 0, 0, 2694, 2693, 1, 0, 0, 0, 2694, 2695, 1, 0, 0, 0, 2695, 

+

868 2699, 1, 0, 0, 0, 2696, 2698, 3, 370, 185, 0, 2697, 2696, 1, 0, 0, 0, 2698, 2701, 1, 0, 0, 0, 2699, 2697, 1, 0, 0, 

+

869 0, 2699, 2700, 1, 0, 0, 0, 2700, 2702, 1, 0, 0, 0, 2701, 2699, 1, 0, 0, 0, 2702, 2706, 5, 17, 0, 0, 2703, 2705, 3, 

+

870 444, 222, 0, 2704, 2703, 1, 0, 0, 0, 2705, 2708, 1, 0, 0, 0, 2706, 2704, 1, 0, 0, 0, 2706, 2707, 1, 0, 0, 0, 2707, 

+

871 2709, 1, 0, 0, 0, 2708, 2706, 1, 0, 0, 0, 2709, 2711, 5, 33, 0, 0, 2710, 2712, 5, 18, 0, 0, 2711, 2710, 1, 0, 0, 0, 

+

872 2711, 2712, 1, 0, 0, 0, 2712, 2714, 1, 0, 0, 0, 2713, 2715, 5, 163, 0, 0, 2714, 2713, 1, 0, 0, 0, 2714, 2715, 1, 0, 

+

873 0, 0, 2715, 2716, 1, 0, 0, 0, 2716, 2717, 5, 150, 0, 0, 2717, 443, 1, 0, 0, 0, 2718, 2733, 3, 510, 255, 0, 2719, 

+

874 2733, 3, 36, 18, 0, 2720, 2733, 3, 412, 206, 0, 2721, 2733, 3, 446, 223, 0, 2722, 2733, 3, 506, 253, 0, 2723, 2733, 

+

875 3, 366, 183, 0, 2724, 2733, 3, 246, 123, 0, 2725, 2733, 3, 62, 31, 0, 2726, 2733, 3, 308, 154, 0, 2727, 2733, 3, 

+

876 320, 160, 0, 2728, 2733, 3, 182, 91, 0, 2729, 2733, 3, 416, 208, 0, 2730, 2733, 3, 322, 161, 0, 2731, 2733, 3, 442, 

+

877 221, 0, 2732, 2718, 1, 0, 0, 0, 2732, 2719, 1, 0, 0, 0, 2732, 2720, 1, 0, 0, 0, 2732, 2721, 1, 0, 0, 0, 2732, 2722, 

+

878 1, 0, 0, 0, 2732, 2723, 1, 0, 0, 0, 2732, 2724, 1, 0, 0, 0, 2732, 2725, 1, 0, 0, 0, 2732, 2726, 1, 0, 0, 0, 2732, 

+

879 2727, 1, 0, 0, 0, 2732, 2728, 1, 0, 0, 0, 2732, 2729, 1, 0, 0, 0, 2732, 2730, 1, 0, 0, 0, 2732, 2731, 1, 0, 0, 0, 

+

880 2733, 445, 1, 0, 0, 0, 2734, 2735, 5, 163, 0, 0, 2735, 2737, 5, 149, 0, 0, 2736, 2734, 1, 0, 0, 0, 2736, 2737, 1, 0, 

+

881 0, 0, 2737, 2741, 1, 0, 0, 0, 2738, 2742, 3, 464, 232, 0, 2739, 2742, 3, 102, 51, 0, 2740, 2742, 3, 430, 215, 0, 

+

882 2741, 2738, 1, 0, 0, 0, 2741, 2739, 1, 0, 0, 0, 2741, 2740, 1, 0, 0, 0, 2742, 447, 1, 0, 0, 0, 2743, 2744, 5, 93, 0, 

+

883 0, 2744, 2745, 3, 242, 121, 0, 2745, 2746, 5, 149, 0, 0, 2746, 2748, 3, 484, 242, 0, 2747, 2749, 7, 16, 0, 0, 2748, 

+

884 2747, 1, 0, 0, 0, 2748, 2749, 1, 0, 0, 0, 2749, 2752, 1, 0, 0, 0, 2750, 2751, 5, 141, 0, 0, 2751, 2753, 3, 184, 92, 

+

885 0, 2752, 2750, 1, 0, 0, 0, 2752, 2753, 1, 0, 0, 0, 2753, 2754, 1, 0, 0, 0, 2754, 2755, 5, 150, 0, 0, 2755, 449, 1, 

+

886 0, 0, 0, 2756, 2761, 3, 318, 159, 0, 2757, 2758, 5, 151, 0, 0, 2758, 2760, 3, 318, 159, 0, 2759, 2757, 1, 0, 0, 0, 

+

887 2760, 2763, 1, 0, 0, 0, 2761, 2759, 1, 0, 0, 0, 2761, 2762, 1, 0, 0, 0, 2762, 2767, 1, 0, 0, 0, 2763, 2761, 1, 0, 0, 

+

888 0, 2764, 2767, 5, 68, 0, 0, 2765, 2767, 5, 10, 0, 0, 2766, 2756, 1, 0, 0, 0, 2766, 2764, 1, 0, 0, 0, 2766, 2765, 1, 

+

889 0, 0, 0, 2767, 451, 1, 0, 0, 0, 2768, 2777, 5, 145, 0, 0, 2769, 2774, 3, 318, 159, 0, 2770, 2771, 5, 151, 0, 0, 

+

890 2771, 2773, 3, 318, 159, 0, 2772, 2770, 1, 0, 0, 0, 2773, 2776, 1, 0, 0, 0, 2774, 2772, 1, 0, 0, 0, 2774, 2775, 1, 

+

891 0, 0, 0, 2775, 2778, 1, 0, 0, 0, 2776, 2774, 1, 0, 0, 0, 2777, 2769, 1, 0, 0, 0, 2777, 2778, 1, 0, 0, 0, 2778, 2781, 

+

892 1, 0, 0, 0, 2779, 2780, 5, 86, 0, 0, 2780, 2782, 3, 318, 159, 0, 2781, 2779, 1, 0, 0, 0, 2781, 2782, 1, 0, 0, 0, 

+

893 2782, 2783, 1, 0, 0, 0, 2783, 2784, 5, 146, 0, 0, 2784, 453, 1, 0, 0, 0, 2785, 2786, 5, 37, 0, 0, 2786, 2787, 3, 76, 

+

894 38, 0, 2787, 2788, 3, 48, 24, 0, 2788, 2792, 5, 150, 0, 0, 2789, 2790, 5, 33, 0, 0, 2790, 2791, 5, 37, 0, 0, 2791, 

+

895 2793, 5, 150, 0, 0, 2792, 2789, 1, 0, 0, 0, 2792, 2793, 1, 0, 0, 0, 2793, 455, 1, 0, 0, 0, 2794, 2795, 3, 488, 244, 

+

896 0, 2795, 2796, 5, 140, 0, 0, 2796, 2797, 5, 38, 0, 0, 2797, 2798, 7, 15, 0, 0, 2798, 2799, 3, 100, 50, 0, 2799, 

+

897 2800, 5, 150, 0, 0, 2800, 457, 1, 0, 0, 0, 2801, 2803, 3, 310, 155, 0, 2802, 2801, 1, 0, 0, 0, 2802, 2803, 1, 0, 0, 

+

898 0, 2803, 2804, 1, 0, 0, 0, 2804, 2806, 3, 296, 148, 0, 2805, 2807, 5, 21, 0, 0, 2806, 2805, 1, 0, 0, 0, 2806, 2807, 

+

899 1, 0, 0, 0, 2807, 2810, 1, 0, 0, 0, 2808, 2809, 5, 141, 0, 0, 2809, 2811, 3, 98, 49, 0, 2810, 2808, 1, 0, 0, 0, 

+

900 2810, 2811, 1, 0, 0, 0, 2811, 459, 1, 0, 0, 0, 2812, 2813, 3, 184, 92, 0, 2813, 2814, 3, 134, 67, 0, 2814, 2815, 3, 

+

901 184, 92, 0, 2815, 461, 1, 0, 0, 0, 2816, 2817, 3, 488, 244, 0, 2817, 2818, 5, 140, 0, 0, 2818, 2819, 7, 15, 0, 0, 

+

902 2819, 2820, 5, 150, 0, 0, 2820, 463, 1, 0, 0, 0, 2821, 2825, 3, 466, 233, 0, 2822, 2825, 3, 456, 228, 0, 2823, 2825, 

+

903 3, 462, 231, 0, 2824, 2821, 1, 0, 0, 0, 2824, 2822, 1, 0, 0, 0, 2824, 2823, 1, 0, 0, 0, 2825, 465, 1, 0, 0, 0, 2826, 

+

904 2827, 3, 488, 244, 0, 2827, 2829, 5, 140, 0, 0, 2828, 2830, 3, 126, 63, 0, 2829, 2828, 1, 0, 0, 0, 2829, 2830, 1, 0, 

+

905 0, 0, 2830, 2831, 1, 0, 0, 0, 2831, 2832, 3, 512, 256, 0, 2832, 2833, 5, 150, 0, 0, 2833, 467, 1, 0, 0, 0, 2834, 

+

906 2835, 3, 488, 244, 0, 2835, 2836, 5, 141, 0, 0, 2836, 2837, 3, 100, 50, 0, 2837, 2838, 5, 150, 0, 0, 2838, 469, 1, 

+

907 0, 0, 0, 2839, 2840, 3, 480, 240, 0, 2840, 2844, 5, 50, 0, 0, 2841, 2843, 3, 474, 237, 0, 2842, 2841, 1, 0, 0, 0, 

+

908 2843, 2846, 1, 0, 0, 0, 2844, 2842, 1, 0, 0, 0, 2844, 2845, 1, 0, 0, 0, 2845, 2847, 1, 0, 0, 0, 2846, 2844, 1, 0, 0, 

+

909 0, 2847, 2851, 5, 17, 0, 0, 2848, 2850, 3, 444, 222, 0, 2849, 2848, 1, 0, 0, 0, 2850, 2853, 1, 0, 0, 0, 2851, 2849, 

+

910 1, 0, 0, 0, 2851, 2852, 1, 0, 0, 0, 2852, 2854, 1, 0, 0, 0, 2853, 2851, 1, 0, 0, 0, 2854, 2856, 5, 33, 0, 0, 2855, 

+

911 2857, 3, 478, 239, 0, 2856, 2855, 1, 0, 0, 0, 2856, 2857, 1, 0, 0, 0, 2857, 2859, 1, 0, 0, 0, 2858, 2860, 3, 132, 

+

912 66, 0, 2859, 2858, 1, 0, 0, 0, 2859, 2860, 1, 0, 0, 0, 2860, 2861, 1, 0, 0, 0, 2861, 2862, 5, 150, 0, 0, 2862, 471, 

+

913 1, 0, 0, 0, 2863, 2864, 3, 480, 240, 0, 2864, 2865, 5, 150, 0, 0, 2865, 473, 1, 0, 0, 0, 2866, 2884, 3, 472, 236, 0, 

+

914 2867, 2884, 3, 470, 235, 0, 2868, 2884, 3, 476, 238, 0, 2869, 2884, 3, 330, 165, 0, 2870, 2884, 3, 326, 163, 0, 

+

915 2871, 2884, 3, 334, 167, 0, 2872, 2884, 3, 494, 247, 0, 2873, 2884, 3, 482, 241, 0, 2874, 2884, 3, 114, 57, 0, 2875, 

+

916 2884, 3, 508, 254, 0, 2876, 2884, 3, 198, 99, 0, 2877, 2884, 3, 12, 6, 0, 2878, 2884, 3, 42, 21, 0, 2879, 2884, 3, 

+

917 46, 23, 0, 2880, 2884, 3, 502, 251, 0, 2881, 2884, 3, 238, 119, 0, 2882, 2884, 3, 236, 118, 0, 2883, 2866, 1, 0, 0, 

+

918 0, 2883, 2867, 1, 0, 0, 0, 2883, 2868, 1, 0, 0, 0, 2883, 2869, 1, 0, 0, 0, 2883, 2870, 1, 0, 0, 0, 2883, 2871, 1, 0, 

+

919 0, 0, 2883, 2872, 1, 0, 0, 0, 2883, 2873, 1, 0, 0, 0, 2883, 2874, 1, 0, 0, 0, 2883, 2875, 1, 0, 0, 0, 2883, 2876, 1, 

+

920 0, 0, 0, 2883, 2877, 1, 0, 0, 0, 2883, 2878, 1, 0, 0, 0, 2883, 2879, 1, 0, 0, 0, 2883, 2880, 1, 0, 0, 0, 2883, 2881, 

+

921 1, 0, 0, 0, 2883, 2882, 1, 0, 0, 0, 2884, 475, 1, 0, 0, 0, 2885, 2886, 3, 478, 239, 0, 2886, 2887, 5, 163, 0, 0, 

+

922 2887, 2888, 5, 50, 0, 0, 2888, 2889, 5, 59, 0, 0, 2889, 2891, 3, 318, 159, 0, 2890, 2892, 3, 452, 226, 0, 2891, 

+

923 2890, 1, 0, 0, 0, 2891, 2892, 1, 0, 0, 0, 2892, 2894, 1, 0, 0, 0, 2893, 2895, 3, 232, 116, 0, 2894, 2893, 1, 0, 0, 

+

924 0, 2894, 2895, 1, 0, 0, 0, 2895, 2896, 1, 0, 0, 0, 2896, 2897, 5, 150, 0, 0, 2897, 477, 1, 0, 0, 0, 2898, 2899, 7, 

+

925 17, 0, 0, 2899, 479, 1, 0, 0, 0, 2900, 2903, 3, 368, 184, 0, 2901, 2903, 3, 222, 111, 0, 2902, 2900, 1, 0, 0, 0, 

+

926 2902, 2901, 1, 0, 0, 0, 2903, 481, 1, 0, 0, 0, 2904, 2905, 5, 98, 0, 0, 2905, 2906, 5, 163, 0, 0, 2906, 2907, 5, 50, 

+

927 0, 0, 2907, 2908, 3, 484, 242, 0, 2908, 2909, 5, 150, 0, 0, 2909, 483, 1, 0, 0, 0, 2910, 2912, 3, 414, 207, 0, 2911, 

+

928 2910, 1, 0, 0, 0, 2911, 2912, 1, 0, 0, 0, 2912, 2913, 1, 0, 0, 0, 2913, 2915, 3, 318, 159, 0, 2914, 2916, 3, 118, 

+

929 59, 0, 2915, 2914, 1, 0, 0, 0, 2915, 2916, 1, 0, 0, 0, 2916, 485, 1, 0, 0, 0, 2917, 2918, 7, 18, 0, 0, 2918, 487, 1, 

+

930 0, 0, 0, 2919, 2922, 3, 318, 159, 0, 2920, 2922, 3, 10, 5, 0, 2921, 2919, 1, 0, 0, 0, 2921, 2920, 1, 0, 0, 0, 2922, 

+

931 489, 1, 0, 0, 0, 2923, 2924, 5, 37, 0, 0, 2924, 2925, 3, 184, 92, 0, 2925, 491, 1, 0, 0, 0, 2926, 2927, 3, 318, 159, 

+

932 0, 2927, 2928, 5, 143, 0, 0, 2928, 2929, 3, 184, 92, 0, 2929, 2930, 5, 144, 0, 0, 2930, 493, 1, 0, 0, 0, 2931, 2934, 

+

933 3, 218, 109, 0, 2932, 2934, 3, 250, 125, 0, 2933, 2931, 1, 0, 0, 0, 2933, 2932, 1, 0, 0, 0, 2934, 495, 1, 0, 0, 0, 

+

934 2935, 2942, 3, 420, 210, 0, 2936, 2942, 3, 78, 39, 0, 2937, 2942, 3, 4, 2, 0, 2938, 2942, 3, 204, 102, 0, 2939, 

+

935 2942, 3, 386, 193, 0, 2940, 2942, 3, 388, 194, 0, 2941, 2935, 1, 0, 0, 0, 2941, 2936, 1, 0, 0, 0, 2941, 2937, 1, 0, 

+

936 0, 0, 2941, 2938, 1, 0, 0, 0, 2941, 2939, 1, 0, 0, 0, 2941, 2940, 1, 0, 0, 0, 2942, 497, 1, 0, 0, 0, 2943, 2944, 5, 

+

937 13, 0, 0, 2944, 2945, 5, 143, 0, 0, 2945, 2950, 3, 258, 129, 0, 2946, 2947, 5, 151, 0, 0, 2947, 2949, 3, 258, 129, 

+

938 0, 2948, 2946, 1, 0, 0, 0, 2949, 2952, 1, 0, 0, 0, 2950, 2948, 1, 0, 0, 0, 2950, 2951, 1, 0, 0, 0, 2951, 2953, 1, 0, 

+

939 0, 0, 2952, 2950, 1, 0, 0, 0, 2953, 2954, 5, 144, 0, 0, 2954, 2955, 5, 64, 0, 0, 2955, 2956, 3, 484, 242, 0, 2956, 

+

940 499, 1, 0, 0, 0, 2957, 2958, 5, 104, 0, 0, 2958, 2959, 5, 50, 0, 0, 2959, 2960, 3, 252, 126, 0, 2960, 501, 1, 0, 0, 

+

941 0, 2961, 2962, 5, 108, 0, 0, 2962, 2967, 3, 428, 214, 0, 2963, 2964, 5, 151, 0, 0, 2964, 2966, 3, 428, 214, 0, 2965, 

+

942 2963, 1, 0, 0, 0, 2966, 2969, 1, 0, 0, 0, 2967, 2965, 1, 0, 0, 0, 2967, 2968, 1, 0, 0, 0, 2968, 2970, 1, 0, 0, 0, 

+

943 2969, 2967, 1, 0, 0, 0, 2970, 2971, 5, 150, 0, 0, 2971, 503, 1, 0, 0, 0, 2972, 2973, 5, 163, 0, 0, 2973, 2975, 5, 

+

944 149, 0, 0, 2974, 2972, 1, 0, 0, 0, 2974, 2975, 1, 0, 0, 0, 2975, 2976, 1, 0, 0, 0, 2976, 2977, 5, 86, 0, 0, 2977, 

+

945 2978, 3, 100, 50, 0, 2978, 2979, 5, 150, 0, 0, 2979, 505, 1, 0, 0, 0, 2980, 2981, 5, 163, 0, 0, 2981, 2983, 5, 149, 

+

946 0, 0, 2982, 2980, 1, 0, 0, 0, 2982, 2983, 1, 0, 0, 0, 2983, 2986, 1, 0, 0, 0, 2984, 2987, 3, 468, 234, 0, 2985, 

+

947 2987, 3, 432, 216, 0, 2986, 2984, 1, 0, 0, 0, 2986, 2985, 1, 0, 0, 0, 2987, 507, 1, 0, 0, 0, 2988, 2990, 5, 92, 0, 

+

948 0, 2989, 2988, 1, 0, 0, 0, 2989, 2990, 1, 0, 0, 0, 2990, 2991, 1, 0, 0, 0, 2991, 2992, 5, 109, 0, 0, 2992, 2993, 3, 

+

949 242, 121, 0, 2993, 2994, 5, 149, 0, 0, 2994, 2996, 3, 484, 242, 0, 2995, 2997, 3, 232, 116, 0, 2996, 2995, 1, 0, 0, 

+

950 0, 2996, 2997, 1, 0, 0, 0, 2997, 3000, 1, 0, 0, 0, 2998, 2999, 5, 141, 0, 0, 2999, 3001, 3, 184, 92, 0, 3000, 2998, 

+

951 1, 0, 0, 0, 3000, 3001, 1, 0, 0, 0, 3001, 3002, 1, 0, 0, 0, 3002, 3003, 5, 150, 0, 0, 3003, 509, 1, 0, 0, 0, 3004, 

+

952 3005, 5, 163, 0, 0, 3005, 3007, 5, 149, 0, 0, 3006, 3004, 1, 0, 0, 0, 3006, 3007, 1, 0, 0, 0, 3007, 3008, 1, 0, 0, 

+

953 0, 3008, 3010, 5, 115, 0, 0, 3009, 3011, 3, 438, 219, 0, 3010, 3009, 1, 0, 0, 0, 3010, 3011, 1, 0, 0, 0, 3011, 3013, 

+

954 1, 0, 0, 0, 3012, 3014, 3, 96, 48, 0, 3013, 3012, 1, 0, 0, 0, 3013, 3014, 1, 0, 0, 0, 3014, 3016, 1, 0, 0, 0, 3015, 

+

955 3017, 3, 490, 245, 0, 3016, 3015, 1, 0, 0, 0, 3016, 3017, 1, 0, 0, 0, 3017, 3018, 1, 0, 0, 0, 3018, 3019, 5, 150, 0, 

+

956 0, 3019, 511, 1, 0, 0, 0, 3020, 3025, 3, 514, 257, 0, 3021, 3022, 5, 151, 0, 0, 3022, 3024, 3, 514, 257, 0, 3023, 

+

957 3021, 1, 0, 0, 0, 3024, 3027, 1, 0, 0, 0, 3025, 3023, 1, 0, 0, 0, 3025, 3026, 1, 0, 0, 0, 3026, 3030, 1, 0, 0, 0, 

+

958 3027, 3025, 1, 0, 0, 0, 3028, 3030, 5, 105, 0, 0, 3029, 3020, 1, 0, 0, 0, 3029, 3028, 1, 0, 0, 0, 3030, 513, 1, 0, 

+

959 0, 0, 3031, 3034, 3, 184, 92, 0, 3032, 3033, 5, 8, 0, 0, 3033, 3035, 3, 184, 92, 0, 3034, 3032, 1, 0, 0, 0, 3034, 

+

960 3035, 1, 0, 0, 0, 3035, 3042, 1, 0, 0, 0, 3036, 3039, 5, 63, 0, 0, 3037, 3038, 5, 8, 0, 0, 3038, 3040, 3, 184, 92, 

+

961 0, 3039, 3037, 1, 0, 0, 0, 3039, 3040, 1, 0, 0, 0, 3040, 3042, 1, 0, 0, 0, 3041, 3031, 1, 0, 0, 0, 3041, 3036, 1, 0, 

+

962 0, 0, 3042, 515, 1, 0, 0, 0, 351, 526, 532, 540, 548, 557, 562, 573, 583, 590, 595, 598, 607, 612, 617, 620, 625, 

+

963 629, 635, 637, 649, 656, 665, 671, 675, 679, 687, 696, 717, 720, 723, 730, 736, 765, 773, 775, 784, 787, 793, 795, 

+

964 801, 803, 808, 815, 821, 828, 842, 847, 853, 861, 866, 876, 882, 889, 897, 900, 909, 912, 915, 919, 922, 930, 933, 

+

965 944, 956, 959, 967, 970, 977, 980, 991, 994, 1001, 1004, 1009, 1014, 1017, 1027, 1032, 1037, 1040, 1045, 1056, 1064, 

+

966 1068, 1073, 1088, 1093, 1103, 1109, 1112, 1119, 1123, 1127, 1135, 1148, 1156, 1161, 1169, 1177, 1185, 1188, 1193, 

+

967 1200, 1217, 1231, 1237, 1246, 1250, 1257, 1264, 1269, 1275, 1281, 1284, 1289, 1296, 1299, 1303, 1306, 1330, 1334, 

+

968 1341, 1346, 1356, 1368, 1375, 1379, 1383, 1393, 1413, 1415, 1420, 1425, 1451, 1458, 1468, 1492, 1496, 1501, 1507, 

+

969 1513, 1520, 1526, 1539, 1544, 1550, 1555, 1562, 1567, 1572, 1576, 1581, 1586, 1589, 1598, 1602, 1615, 1627, 1642, 

+

970 1657, 1665, 1673, 1681, 1687, 1691, 1696, 1702, 1710, 1719, 1724, 1731, 1734, 1739, 1745, 1760, 1764, 1772, 1782, 

+

971 1790, 1794, 1801, 1806, 1814, 1819, 1824, 1832, 1842, 1847, 1853, 1863, 1867, 1882, 1887, 1893, 1896, 1905, 1909, 

+

972 1913, 1919, 1923, 1926, 1931, 1936, 1942, 1950, 1962, 1969, 1973, 1976, 1982, 1988, 1997, 2007, 2013, 2027, 2039, 

+

973 2051, 2059, 2061, 2063, 2068, 2072, 2076, 2082, 2089, 2098, 2104, 2107, 2128, 2134, 2139, 2144, 2147, 2169, 2177, 

+

974 2188, 2195, 2210, 2221, 2232, 2238, 2242, 2247, 2258, 2262, 2284, 2293, 2296, 2300, 2308, 2314, 2333, 2337, 2341, 

+

975 2348, 2351, 2356, 2363, 2369, 2375, 2383, 2386, 2391, 2398, 2403, 2407, 2416, 2423, 2442, 2448, 2454, 2462, 2466, 

+

976 2471, 2481, 2486, 2497, 2510, 2521, 2528, 2534, 2540, 2546, 2553, 2559, 2568, 2572, 2580, 2585, 2597, 2608, 2622, 

+

977 2629, 2634, 2638, 2644, 2655, 2670, 2685, 2690, 2694, 2699, 2706, 2711, 2714, 2732, 2736, 2741, 2748, 2752, 2761, 

+

978 2766, 2774, 2777, 2781, 2792, 2802, 2806, 2810, 2824, 2829, 2844, 2851, 2856, 2859, 2883, 2891, 2894, 2902, 2911, 

+

979 2915, 2921, 2933, 2941, 2950, 2967, 2974, 2982, 2986, 2989, 2996, 3000, 3006, 3010, 3013, 3016, 3025, 3029, 3034, 

+

980 3039, 3041 

+

981 ) 

+

982 

+

983 

+

984class VHDLParser(Parser): 

+

985 grammarFileName = "VHDLParser.g4" 

+

986 

+

987 atn = ATNDeserializer().deserialize(serializedATN()) 

+

988 

+

989 decisionsToDFA = [DFA(ds, i) for i, ds in enumerate(atn.decisionToState)] 

+

990 

+

991 sharedContextCache = PredictionContextCache() 

+

992 

+

993 literalNames = ( 

+

994 "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", "'abs'", "'access'", "'after'", 

+

995 "'alias'", "'all'", "'and'", "'architecture'", "'array'", "'assert'", "'attribute'", "'assume'", "'begin'", 

+

996 "'block'", "'body'", "'buffer'", "'bus'", "'case'", "'component'", "'configuration'", "'constant'", "'context'", 

+

997 "'cover'", "'default'", "'disconnect'", "'downto'", "'else'", "'elsif'", "'end'", "'entity'", "'exit'", "'file'", 

+

998 "'for'", "'force'", "'function'", "'fairness'", "'generate'", "'generic'", "'guarded'", "'group'", "'if'", 

+

999 "'impure'", "'in'", "'inertial'", "'inout'", "'is'", "'label'", "'library'", "'linkage'", "'loop'", "'literal'", 

+

1000 "'map'", "'mod'", "'nand'", "'new'", "'next'", "'nor'", "'not'", "'null'", "'of'", "'on'", "'open'", "'or'", 

+

1001 "'others'", "'out'", "'package'", "'parameter'", "'port'", "'postponed'", "'private'", "'procedure'", "'process'", 

+

1002 "'protected'", "'pure'", "'range'", "'record'", "'register'", "'reject'", "'release'", "'rem'", "'report'", 

+

1003 "'return'", "'rol'", "'ror'", "'restrict'", "'select'", "'severity'", "'shared'", "'signal'", "'sla'", "'sll'", 

+

1004 "'sra'", "'srl'", "'subtype'", "'strong'", "'sequence'", "'then'", "'to'", "'transport'", "'type'", "'unaffected'", 

+

1005 "'units'", "'until'", "'use'", "'variable'", "'view'", "'vpkg'", "'vmode'", "'vprop'", "'vunit'", "'wait'", 

+

1006 "'with'", "'when'", "'while'", "'xnor'", "'xor'", "'='", "'/='", "'<'", "'>'", "'>='", "'?='", "'?/='", "'?<'", 

+

1007 "'?<='", "'?>'", "'?>='", "'+'", "'-'", "'*'", "'/'", "'**'", "'&'", "'??'", "'=>'", "'<='", "':='", "'<>'", "'('", 

+

1008 "')'", "'['", "']'", "'<<'", "'>>'", "':'", "';'", "','", "'|'", "'.'", "'?'", "'@'", "'^'", "'''", "'\"'" 

+

1009 ) 

+

1010 

+

1011 symbolicNames = ( 

+

1012 "<INVALID>", "LINEBREAK", "WHITESPACE", "COMMENT_LINE", "COMMENT_BLOCK", "TOOLDIRECTIVE", "OP_ABS", "KW_ACCESS", 

+

1013 "KW_AFTER", "KW_ALIAS", "KW_ALL", "OP_AND", "KW_ARCHITECTURE", "KW_ARRAY", "KW_ASSERT", "KW_ATTRIBUTE", 

+

1014 "KW_PSL_ASSUME", "KW_BEGIN", "KW_BLOCK", "KW_BODY", "KW_BUFFER", "KW_BUS", "KW_CASE", "KW_COMPONENT", 

+

1015 "KW_CONFIGURATION", "KW_CONSTANT", "KW_CONTEXT", "KW_PSL_COVER", "KW_DEFAULT", "KW_DISCONNECT", "KW_DOWNTO", 

+

1016 "KW_ELSE", "KW_ELSIF", "KW_END", "KW_ENTITY", "KW_EXIT", "KW_FILE", "KW_FOR", "KW_FORCE", "KW_FUNCTION", 

+

1017 "KW_PSL_FAIRNESS", "KW_GENERATE", "KW_GENERIC", "KW_GUARDED", "KW_GROUP", "KW_IF", "KW_IMPURE", "KW_IN", 

+

1018 "KW_INERTIAL", "KW_INOUT", "KW_IS", "KW_LABEL", "KW_LIBRARY", "KW_LINKAGE", "KW_LOOP", "KW_PSL_LITERAL", "KW_MAP", 

+

1019 "OP_MOD", "OP_NAND", "KW_NEW", "KW_NEXT", "OP_NOR", "OP_NOT", "KW_NULL", "KW_OF", "KW_ON", "KW_OPEN", "OP_OR", 

+

1020 "KW_OTHERS", "KW_OUT", "KW_PACKAGE", "KW_PARAMETER", "KW_PORT", "KW_POSTPONED", "KW_PRIVATE", "KW_PROCEDURE", 

+

1021 "KW_PROCESS", "KW_PROTECTED", "KW_PURE", "KW_RANGE", "KW_RECORD", "KW_REGISTER", "KW_REJECT", "KW_RELEASE", 

+

1022 "OP_REM", "KW_REPORT", "KW_RETURN", "OP_ROL", "OP_ROR", "KW_PSL_RESTRICT", "KW_SELECT", "KW_SEVERITY", "KW_SHARED", 

+

1023 "KW_SIGNAL", "OP_SLA", "OP_SLL", "OP_SRA", "OP_SRL", "KW_SUBTYPE", "KW_PSL_STRONG", "KW_PSL_SEQUENCE", "KW_THEN", 

+

1024 "KW_TO", "KW_TRANSPORT", "KW_TYPE", "KW_UNAFFECTED", "KW_UNITS", "KW_UNTIL", "KW_USE", "KW_VARIABLE", "KW_VIEW", 

+

1025 "KW_PSL_VPKG", "KW_PSL_VMODE", "KW_PSL_VPROP", "KW_PSL_VUNIT", "KW_WAIT", "KW_WITH", "KW_WHEN", "KW_WHILE", 

+

1026 "OP_XNOR", "OP_XOR", "OP_EQ", "OP_NE", "OP_LT", "OP_GT", "OP_GE", "OP_IEQ", "OP_INE", "OP_ILT", "OP_ILE", "OP_IGT", 

+

1027 "OP_IGE", "OP_PLUS", "OP_MINUS", "OP_MUL", "OP_DIV", "OP_POW", "OP_CONCAT", "OP_CONDITION", "TOK_RARROW", 

+

1028 "TOK_SIG_ASSIGN", "TOK_VAR_ASSIGN", "TOK_BOX", "TOK_LP", "TOK_RP", "TOK_LB", "TOK_RB", "TOK_DLA", "TOK_DRA", 

+

1029 "TOK_COLON", "TOK_SEMICOL", "TOK_COMMA", "TOK_BAR", "TOK_DOT", "TOK_QUESTION", "TOK_AT", "TOK_CIRCUMFLEX", 

+

1030 "TOK_TICK", "TOK_DQUOTE", "LIT_ABSTRACT", "LIT_BIT_STRING", "LIT_CHARACTER", "LIT_STRING", "LIT_IDENTIFIER" 

+

1031 ) 

+

1032 

+

1033 RULE_rule_AbsolutePathname = 0 

+

1034 RULE_rule_AccessIncompleteTypeDefinition = 1 

+

1035 RULE_rule_AccessTypeDefinition = 2 

+

1036 RULE_rule_ActualDesignator = 3 

+

1037 RULE_rule_ActualPart = 4 

+

1038 RULE_rule_Aggregate = 5 

+

1039 RULE_rule_AliasDeclaration = 6 

+

1040 RULE_rule_AliasDesignator = 7 

+

1041 RULE_rule_AliasIndication = 8 

+

1042 RULE_rule_Allocator = 9 

+

1043 RULE_rule_Architecture = 10 

+

1044 RULE_rule_ArchitectureStatement = 11 

+

1045 RULE_rule_ArrayConstraint = 12 

+

1046 RULE_rule_ArrayIncompleteTypeDefinition = 13 

+

1047 RULE_rule_ArrayIndexIncompleteType = 14 

+

1048 RULE_rule_ArrayIndexIncompleteTypeList = 15 

+

1049 RULE_rule_ArrayModeViewIndication = 16 

+

1050 RULE_rule_Assertion = 17 

+

1051 RULE_rule_AssertionStatement = 18 

+

1052 RULE_rule_AssociationElement = 19 

+

1053 RULE_rule_AssociationList = 20 

+

1054 RULE_rule_AttributeDeclaration = 21 

+

1055 RULE_rule_AttributeDesignator = 22 

+

1056 RULE_rule_AttributeSpecification = 23 

+

1057 RULE_rule_BindingIndication = 24 

+

1058 RULE_rule_BlockConfiguration = 25 

+

1059 RULE_rule_BlockDeclarativeItem = 26 

+

1060 RULE_rule_BlockSpecification = 27 

+

1061 RULE_rule_BlockStatement = 28 

+

1062 RULE_rule_CaseGenerateAlternative = 29 

+

1063 RULE_rule_CaseGenerateStatement = 30 

+

1064 RULE_rule_CaseStatement = 31 

+

1065 RULE_rule_CaseStatementAlternative = 32 

+

1066 RULE_rule_Choice = 33 

+

1067 RULE_rule_Choices = 34 

+

1068 RULE_rule_ComponentConfiguration = 35 

+

1069 RULE_rule_ComponentDeclaration = 36 

+

1070 RULE_rule_ComponentInstantiationStatement = 37 

+

1071 RULE_rule_ComponentSpecification = 38 

+

1072 RULE_rule_CompositeTypeDefinition = 39 

+

1073 RULE_rule_CompoundConfigurationSpecification = 40 

+

1074 RULE_rule_ConcurrentAssertionStatement = 41 

+

1075 RULE_rule_ConcurrentConditionalSignalAssignment = 42 

+

1076 RULE_rule_ConcurrentProcedureCallStatement = 43 

+

1077 RULE_rule_ConcurrentSelectedSignalAssignment = 44 

+

1078 RULE_rule_ConcurrentSignalAssignmentStatement = 45 

+

1079 RULE_rule_ConcurrentSimpleSignalAssignment = 46 

+

1080 RULE_rule_ConcurrentStatement = 47 

+

1081 RULE_rule_ConditionClause = 48 

+

1082 RULE_rule_ConditionalExpression = 49 

+

1083 RULE_rule_ConditionalOrUnaffectedExpression = 50 

+

1084 RULE_rule_ConditionalSignalAssignment = 51 

+

1085 RULE_rule_ConditionalWaveforms = 52 

+

1086 RULE_rule_ConfigurationDeclaration = 53 

+

1087 RULE_rule_ConfigurationDeclarativeItem = 54 

+

1088 RULE_rule_ConfigurationItem = 55 

+

1089 RULE_rule_ConfigurationSpecification = 56 

+

1090 RULE_rule_ConstantDeclaration = 57 

+

1091 RULE_rule_ConstrainedArrayDefinition = 58 

+

1092 RULE_rule_Constraint = 59 

+

1093 RULE_rule_ContextDeclaration = 60 

+

1094 RULE_rule_ContextItem = 61 

+

1095 RULE_rule_ContextReference = 62 

+

1096 RULE_rule_DelayMechanism = 63 

+

1097 RULE_rule_DesignFile = 64 

+

1098 RULE_rule_DesignUnit = 65 

+

1099 RULE_rule_Designator = 66 

+

1100 RULE_rule_Direction = 67 

+

1101 RULE_rule_DisconnectionSpecification = 68 

+

1102 RULE_rule_DiscreteRange = 69 

+

1103 RULE_rule_DiscreteIncompleteTypeDefinition = 70 

+

1104 RULE_rule_ElementArrayModeViewIndication = 71 

+

1105 RULE_rule_ElementAssociation = 72 

+

1106 RULE_rule_ElementConstraint = 73 

+

1107 RULE_rule_ElementDeclaration = 74 

+

1108 RULE_rule_ElementModeIndication = 75 

+

1109 RULE_rule_ElementModeViewIndication = 76 

+

1110 RULE_rule_ElementRecordModeViewIndication = 77 

+

1111 RULE_rule_ElementResolution = 78 

+

1112 RULE_rule_EntityAspect = 79 

+

1113 RULE_rule_EntityClass = 80 

+

1114 RULE_rule_EntityClassEntry = 81 

+

1115 RULE_rule_EntityDeclaration = 82 

+

1116 RULE_rule_EntityDeclarativeItem = 83 

+

1117 RULE_rule_EntityDesignator = 84 

+

1118 RULE_rule_EntityNameList = 85 

+

1119 RULE_rule_EntitySpecification = 86 

+

1120 RULE_rule_EntityStatement = 87 

+

1121 RULE_rule_EntityTag = 88 

+

1122 RULE_rule_EnumerationLiteral = 89 

+

1123 RULE_rule_EnumerationTypeDefinition = 90 

+

1124 RULE_rule_ExitStatement = 91 

+

1125 RULE_rule_Expression = 92 

+

1126 RULE_rule_ExpressionOrUnaffected = 93 

+

1127 RULE_rule_ExternalName = 94 

+

1128 RULE_rule_ExternalConstantName = 95 

+

1129 RULE_rule_ExternalSignalName = 96 

+

1130 RULE_rule_ExternalVariableName = 97 

+

1131 RULE_rule_ExternalPathname = 98 

+

1132 RULE_rule_FileDeclaration = 99 

+

1133 RULE_rule_FileIncompleteTypeDefinition = 100 

+

1134 RULE_rule_FileOpenInformation = 101 

+

1135 RULE_rule_FileTypeDefinition = 102 

+

1136 RULE_rule_FloatingIncompleteTypeDefinition = 103 

+

1137 RULE_rule_FloatingTypeDefinition = 104 

+

1138 RULE_rule_ForGenerateStatement = 105 

+

1139 RULE_rule_FormalDesignator = 106 

+

1140 RULE_rule_FormalParameterList = 107 

+

1141 RULE_rule_FormalPart = 108 

+

1142 RULE_rule_FullTypeDeclaration = 109 

+

1143 RULE_rule_FunctionCall = 110 

+

1144 RULE_rule_FunctionSpecification = 111 

+

1145 RULE_rule_GenerateSpecification = 112 

+

1146 RULE_rule_GenerateStatement = 113 

+

1147 RULE_rule_GenerateStatementBody = 114 

+

1148 RULE_rule_GenericClause = 115 

+

1149 RULE_rule_GenericMapAspect = 116 

+

1150 RULE_rule_GroupConstituent = 117 

+

1151 RULE_rule_GroupDeclaration = 118 

+

1152 RULE_rule_GroupTemplateDeclaration = 119 

+

1153 RULE_rule_GuardedSignalSpecification = 120 

+

1154 RULE_rule_IdentifierList = 121 

+

1155 RULE_rule_IfGenerateStatement = 122 

+

1156 RULE_rule_IfStatement = 123 

+

1157 RULE_rule_IncompleteSubtypeIndication = 124 

+

1158 RULE_rule_IncompleteTypeDeclaration = 125 

+

1159 RULE_rule_IncompleteTypeDefinition = 126 

+

1160 RULE_rule_IncompleteTypeMark = 127 

+

1161 RULE_rule_IndexConstraint = 128 

+

1162 RULE_rule_IndexSubtypeDefinition = 129 

+

1163 RULE_rule_InstantiatedUnit = 130 

+

1164 RULE_rule_InstantiationList = 131 

+

1165 RULE_rule_IntegerIncompleteTypeDefinition = 132 

+

1166 RULE_rule_IntegerTypeDefinition = 133 

+

1167 RULE_rule_InterfaceConstantDeclaration = 134 

+

1168 RULE_rule_InterfaceDeclaration = 135 

+

1169 RULE_rule_InterfaceElement = 136 

+

1170 RULE_rule_InterfaceFileDeclaration = 137 

+

1171 RULE_rule_InterfaceFunctionSpecification = 138 

+

1172 RULE_rule_InterfaceList = 139 

+

1173 RULE_rule_InterfacePackageDeclaration = 140 

+

1174 RULE_rule_InterfacePackageGenericMapAspect = 141 

+

1175 RULE_rule_InterfaceProcedureSpecification = 142 

+

1176 RULE_rule_InterfaceSignalDeclaration = 143 

+

1177 RULE_rule_InterfaceSubprogramDeclaration = 144 

+

1178 RULE_rule_InterfaceSubprogramDefault = 145 

+

1179 RULE_rule_InterfaceSubprogramSpecification = 146 

+

1180 RULE_rule_InterfaceTypeDeclaration = 147 

+

1181 RULE_rule_InterfaceTypeIndication = 148 

+

1182 RULE_rule_InterfaceVariableDeclaration = 149 

+

1183 RULE_rule_IterationScheme = 150 

+

1184 RULE_rule_LibraryClause = 151 

+

1185 RULE_rule_LibraryUnit = 152 

+

1186 RULE_rule_Literal = 153 

+

1187 RULE_rule_LoopStatement = 154 

+

1188 RULE_rule_Mode = 155 

+

1189 RULE_rule_ModeIndication = 156 

+

1190 RULE_rule_ModeViewDeclaration = 157 

+

1191 RULE_rule_ModeViewElementDefinition = 158 

+

1192 RULE_rule_Name = 159 

+

1193 RULE_rule_NextStatement = 160 

+

1194 RULE_rule_NullStatement = 161 

+

1195 RULE_rule_NumericLiteral = 162 

+

1196 RULE_rule_PackageBody = 163 

+

1197 RULE_rule_PackageBodyDeclarativeItem = 164 

+

1198 RULE_rule_PackageDeclaration = 165 

+

1199 RULE_rule_PackageDeclarativeItem = 166 

+

1200 RULE_rule_PackageInstantiationDeclaration = 167 

+

1201 RULE_rule_PackagePathname = 168 

+

1202 RULE_rule_ParameterMapAspect = 169 

+

1203 RULE_rule_ParameterSpecification = 170 

+

1204 RULE_rule_PartialPathname = 171 

+

1205 RULE_rule_PathnameElement = 172 

+

1206 RULE_rule_PhysicalIncompleteTypeDefinition = 173 

+

1207 RULE_rule_PhysicalLiteral = 174 

+

1208 RULE_rule_PhysicalTypeDefinition = 175 

+

1209 RULE_rule_PlainReturnStatement = 176 

+

1210 RULE_rule_PortClause = 177 

+

1211 RULE_rule_PortMapAspect = 178 

+

1212 RULE_rule_Primary = 179 

+

1213 RULE_rule_PrivateVariableDeclaration = 180 

+

1214 RULE_rule_PrivateIncompleteTypeDefinition = 181 

+

1215 RULE_rule_ProcedureCall = 182 

+

1216 RULE_rule_ProcedureCallStatement = 183 

+

1217 RULE_rule_ProcedureSpecification = 184 

+

1218 RULE_rule_ProcessDeclarativeItem = 185 

+

1219 RULE_rule_ProcessSensitivityList = 186 

+

1220 RULE_rule_ProcessStatement = 187 

+

1221 RULE_rule_PostponedProcessStatement = 188 

+

1222 RULE_rule_ProtectedTypeBody = 189 

+

1223 RULE_rule_ProtectedTypeBodyDeclarativeItem = 190 

+

1224 RULE_rule_ProtectedTypeDeclaration = 191 

+

1225 RULE_rule_ProtectedTypeDeclarativeItem = 192 

+

1226 RULE_rule_ProtectedTypeDefinition = 193 

+

1227 RULE_rule_ProtectedTypeInstantiationDefinition = 194 

+

1228 RULE_rule_QualifiedExpression = 195 

+

1229 RULE_rule_Range = 196 

+

1230 RULE_rule_RangeConstraint = 197 

+

1231 RULE_rule_RecordConstraint = 198 

+

1232 RULE_rule_RecordElementConstraint = 199 

+

1233 RULE_rule_RecordElementList = 200 

+

1234 RULE_rule_RecordElementResolution = 201 

+

1235 RULE_rule_RecordResolution = 202 

+

1236 RULE_rule_RecordTypeDefinition = 203 

+

1237 RULE_rule_RecordModeViewIndication = 204 

+

1238 RULE_rule_RelativePathname = 205 

+

1239 RULE_rule_ReportStatement = 206 

+

1240 RULE_rule_ResolutionIndication = 207 

+

1241 RULE_rule_ReturnStatement = 208 

+

1242 RULE_rule_ScalarIncompleteTypeDefinition = 209 

+

1243 RULE_rule_ScalarTypeDefinition = 210 

+

1244 RULE_rule_SecondaryUnitDeclaration = 211 

+

1245 RULE_rule_SelectedExpressions = 212 

+

1246 RULE_rule_SelectedForceAssignment = 213 

+

1247 RULE_rule_SelectedName2 = 214 

+

1248 RULE_rule_SelectedSignalAssignment = 215 

+

1249 RULE_rule_SelectedVariableAssignment = 216 

+

1250 RULE_rule_SelectedWaveformAssignment = 217 

+

1251 RULE_rule_SelectedWaveforms = 218 

+

1252 RULE_rule_SensitivityClause = 219 

+

1253 RULE_rule_SensitivityList = 220 

+

1254 RULE_rule_SequentialBlockStatement = 221 

+

1255 RULE_rule_SequentialStatement = 222 

+

1256 RULE_rule_SignalAssignmentStatement = 223 

+

1257 RULE_rule_SignalDeclaration = 224 

+

1258 RULE_rule_SignalList = 225 

+

1259 RULE_rule_Signature = 226 

+

1260 RULE_rule_SimpleConfigurationSpecification = 227 

+

1261 RULE_rule_SimpleForceAssignment = 228 

+

1262 RULE_rule_SimpleModeIndication = 229 

+

1263 RULE_rule_SimpleRange = 230 

+

1264 RULE_rule_SimpleReleaseAssignment = 231 

+

1265 RULE_rule_SimpleSignalAssignment = 232 

+

1266 RULE_rule_SimpleWaveformAssignment = 233 

+

1267 RULE_rule_SimpleVariableAssignment = 234 

+

1268 RULE_rule_SubprogramBody = 235 

+

1269 RULE_rule_SubprogramDeclaration = 236 

+

1270 RULE_rule_SubprogramDeclarativeItem = 237 

+

1271 RULE_rule_SubprogramInstantiationDeclaration = 238 

+

1272 RULE_rule_SubprogramKind = 239 

+

1273 RULE_rule_SubprogramSpecification = 240 

+

1274 RULE_rule_SubtypeDeclaration = 241 

+

1275 RULE_rule_SubtypeIndication = 242 

+

1276 RULE_rule_Suffix = 243 

+

1277 RULE_rule_Target = 244 

+

1278 RULE_rule_TimeoutClause = 245 

+

1279 RULE_rule_TypeConversion = 246 

+

1280 RULE_rule_TypeDeclaration = 247 

+

1281 RULE_rule_TypeDefinition = 248 

+

1282 RULE_rule_UnboundArrayDefinition = 249 

+

1283 RULE_rule_UnspecifiedTypeIndication = 250 

+

1284 RULE_rule_UseClause = 251 

+

1285 RULE_rule_ValueReturnStatement = 252 

+

1286 RULE_rule_VariableAssignmentStatement = 253 

+

1287 RULE_rule_VariableDeclaration = 254 

+

1288 RULE_rule_WaitStatement = 255 

+

1289 RULE_rule_Waveform = 256 

+

1290 RULE_rule_WaveformElement = 257 

+

1291 

+

1292 ruleNames = ( 

+

1293 "rule_AbsolutePathname", "rule_AccessIncompleteTypeDefinition", "rule_AccessTypeDefinition", 

+

1294 "rule_ActualDesignator", "rule_ActualPart", "rule_Aggregate", "rule_AliasDeclaration", "rule_AliasDesignator", 

+

1295 "rule_AliasIndication", "rule_Allocator", "rule_Architecture", "rule_ArchitectureStatement", "rule_ArrayConstraint", 

+

1296 "rule_ArrayIncompleteTypeDefinition", "rule_ArrayIndexIncompleteType", "rule_ArrayIndexIncompleteTypeList", 

+

1297 "rule_ArrayModeViewIndication", "rule_Assertion", "rule_AssertionStatement", "rule_AssociationElement", 

+

1298 "rule_AssociationList", "rule_AttributeDeclaration", "rule_AttributeDesignator", "rule_AttributeSpecification", 

+

1299 "rule_BindingIndication", "rule_BlockConfiguration", "rule_BlockDeclarativeItem", "rule_BlockSpecification", 

+

1300 "rule_BlockStatement", "rule_CaseGenerateAlternative", "rule_CaseGenerateStatement", "rule_CaseStatement", 

+

1301 "rule_CaseStatementAlternative", "rule_Choice", "rule_Choices", "rule_ComponentConfiguration", 

+

1302 "rule_ComponentDeclaration", "rule_ComponentInstantiationStatement", "rule_ComponentSpecification", 

+

1303 "rule_CompositeTypeDefinition", "rule_CompoundConfigurationSpecification", "rule_ConcurrentAssertionStatement", 

+

1304 "rule_ConcurrentConditionalSignalAssignment", "rule_ConcurrentProcedureCallStatement", 

+

1305 "rule_ConcurrentSelectedSignalAssignment", "rule_ConcurrentSignalAssignmentStatement", 

+

1306 "rule_ConcurrentSimpleSignalAssignment", "rule_ConcurrentStatement", "rule_ConditionClause", 

+

1307 "rule_ConditionalExpression", "rule_ConditionalOrUnaffectedExpression", "rule_ConditionalSignalAssignment", 

+

1308 "rule_ConditionalWaveforms", "rule_ConfigurationDeclaration", "rule_ConfigurationDeclarativeItem", 

+

1309 "rule_ConfigurationItem", "rule_ConfigurationSpecification", "rule_ConstantDeclaration", 

+

1310 "rule_ConstrainedArrayDefinition", "rule_Constraint", "rule_ContextDeclaration", "rule_ContextItem", 

+

1311 "rule_ContextReference", "rule_DelayMechanism", "rule_DesignFile", "rule_DesignUnit", "rule_Designator", 

+

1312 "rule_Direction", "rule_DisconnectionSpecification", "rule_DiscreteRange", "rule_DiscreteIncompleteTypeDefinition", 

+

1313 "rule_ElementArrayModeViewIndication", "rule_ElementAssociation", "rule_ElementConstraint", 

+

1314 "rule_ElementDeclaration", "rule_ElementModeIndication", "rule_ElementModeViewIndication", 

+

1315 "rule_ElementRecordModeViewIndication", "rule_ElementResolution", "rule_EntityAspect", "rule_EntityClass", 

+

1316 "rule_EntityClassEntry", "rule_EntityDeclaration", "rule_EntityDeclarativeItem", "rule_EntityDesignator", 

+

1317 "rule_EntityNameList", "rule_EntitySpecification", "rule_EntityStatement", "rule_EntityTag", 

+

1318 "rule_EnumerationLiteral", "rule_EnumerationTypeDefinition", "rule_ExitStatement", "rule_Expression", 

+

1319 "rule_ExpressionOrUnaffected", "rule_ExternalName", "rule_ExternalConstantName", "rule_ExternalSignalName", 

+

1320 "rule_ExternalVariableName", "rule_ExternalPathname", "rule_FileDeclaration", "rule_FileIncompleteTypeDefinition", 

+

1321 "rule_FileOpenInformation", "rule_FileTypeDefinition", "rule_FloatingIncompleteTypeDefinition", 

+

1322 "rule_FloatingTypeDefinition", "rule_ForGenerateStatement", "rule_FormalDesignator", "rule_FormalParameterList", 

+

1323 "rule_FormalPart", "rule_FullTypeDeclaration", "rule_FunctionCall", "rule_FunctionSpecification", 

+

1324 "rule_GenerateSpecification", "rule_GenerateStatement", "rule_GenerateStatementBody", "rule_GenericClause", 

+

1325 "rule_GenericMapAspect", "rule_GroupConstituent", "rule_GroupDeclaration", "rule_GroupTemplateDeclaration", 

+

1326 "rule_GuardedSignalSpecification", "rule_IdentifierList", "rule_IfGenerateStatement", "rule_IfStatement", 

+

1327 "rule_IncompleteSubtypeIndication", "rule_IncompleteTypeDeclaration", "rule_IncompleteTypeDefinition", 

+

1328 "rule_IncompleteTypeMark", "rule_IndexConstraint", "rule_IndexSubtypeDefinition", "rule_InstantiatedUnit", 

+

1329 "rule_InstantiationList", "rule_IntegerIncompleteTypeDefinition", "rule_IntegerTypeDefinition", 

+

1330 "rule_InterfaceConstantDeclaration", "rule_InterfaceDeclaration", "rule_InterfaceElement", 

+

1331 "rule_InterfaceFileDeclaration", "rule_InterfaceFunctionSpecification", "rule_InterfaceList", 

+

1332 "rule_InterfacePackageDeclaration", "rule_InterfacePackageGenericMapAspect", "rule_InterfaceProcedureSpecification", 

+

1333 "rule_InterfaceSignalDeclaration", "rule_InterfaceSubprogramDeclaration", "rule_InterfaceSubprogramDefault", 

+

1334 "rule_InterfaceSubprogramSpecification", "rule_InterfaceTypeDeclaration", "rule_InterfaceTypeIndication", 

+

1335 "rule_InterfaceVariableDeclaration", "rule_IterationScheme", "rule_LibraryClause", "rule_LibraryUnit", 

+

1336 "rule_Literal", "rule_LoopStatement", "rule_Mode", "rule_ModeIndication", "rule_ModeViewDeclaration", 

+

1337 "rule_ModeViewElementDefinition", "rule_Name", "rule_NextStatement", "rule_NullStatement", "rule_NumericLiteral", 

+

1338 "rule_PackageBody", "rule_PackageBodyDeclarativeItem", "rule_PackageDeclaration", "rule_PackageDeclarativeItem", 

+

1339 "rule_PackageInstantiationDeclaration", "rule_PackagePathname", "rule_ParameterMapAspect", 

+

1340 "rule_ParameterSpecification", "rule_PartialPathname", "rule_PathnameElement", 

+

1341 "rule_PhysicalIncompleteTypeDefinition", "rule_PhysicalLiteral", "rule_PhysicalTypeDefinition", 

+

1342 "rule_PlainReturnStatement", "rule_PortClause", "rule_PortMapAspect", "rule_Primary", 

+

1343 "rule_PrivateVariableDeclaration", "rule_PrivateIncompleteTypeDefinition", "rule_ProcedureCall", 

+

1344 "rule_ProcedureCallStatement", "rule_ProcedureSpecification", "rule_ProcessDeclarativeItem", 

+

1345 "rule_ProcessSensitivityList", "rule_ProcessStatement", "rule_PostponedProcessStatement", "rule_ProtectedTypeBody", 

+

1346 "rule_ProtectedTypeBodyDeclarativeItem", "rule_ProtectedTypeDeclaration", "rule_ProtectedTypeDeclarativeItem", 

+

1347 "rule_ProtectedTypeDefinition", "rule_ProtectedTypeInstantiationDefinition", "rule_QualifiedExpression", 

+

1348 "rule_Range", "rule_RangeConstraint", "rule_RecordConstraint", "rule_RecordElementConstraint", 

+

1349 "rule_RecordElementList", "rule_RecordElementResolution", "rule_RecordResolution", "rule_RecordTypeDefinition", 

+

1350 "rule_RecordModeViewIndication", "rule_RelativePathname", "rule_ReportStatement", "rule_ResolutionIndication", 

+

1351 "rule_ReturnStatement", "rule_ScalarIncompleteTypeDefinition", "rule_ScalarTypeDefinition", 

+

1352 "rule_SecondaryUnitDeclaration", "rule_SelectedExpressions", "rule_SelectedForceAssignment", "rule_SelectedName2", 

+

1353 "rule_SelectedSignalAssignment", "rule_SelectedVariableAssignment", "rule_SelectedWaveformAssignment", 

+

1354 "rule_SelectedWaveforms", "rule_SensitivityClause", "rule_SensitivityList", "rule_SequentialBlockStatement", 

+

1355 "rule_SequentialStatement", "rule_SignalAssignmentStatement", "rule_SignalDeclaration", "rule_SignalList", 

+

1356 "rule_Signature", "rule_SimpleConfigurationSpecification", "rule_SimpleForceAssignment", 

+

1357 "rule_SimpleModeIndication", "rule_SimpleRange", "rule_SimpleReleaseAssignment", "rule_SimpleSignalAssignment", 

+

1358 "rule_SimpleWaveformAssignment", "rule_SimpleVariableAssignment", "rule_SubprogramBody", 

+

1359 "rule_SubprogramDeclaration", "rule_SubprogramDeclarativeItem", "rule_SubprogramInstantiationDeclaration", 

+

1360 "rule_SubprogramKind", "rule_SubprogramSpecification", "rule_SubtypeDeclaration", "rule_SubtypeIndication", 

+

1361 "rule_Suffix", "rule_Target", "rule_TimeoutClause", "rule_TypeConversion", "rule_TypeDeclaration", 

+

1362 "rule_TypeDefinition", "rule_UnboundArrayDefinition", "rule_UnspecifiedTypeIndication", "rule_UseClause", 

+

1363 "rule_ValueReturnStatement", "rule_VariableAssignmentStatement", "rule_VariableDeclaration", "rule_WaitStatement", 

+

1364 "rule_Waveform", "rule_WaveformElement" 

+

1365 ) 

+

1366 

+

1367 EOF = Token.EOF 

+

1368 LINEBREAK = 1 

+

1369 WHITESPACE = 2 

+

1370 COMMENT_LINE = 3 

+

1371 COMMENT_BLOCK = 4 

+

1372 TOOLDIRECTIVE = 5 

+

1373 OP_ABS = 6 

+

1374 KW_ACCESS = 7 

+

1375 KW_AFTER = 8 

+

1376 KW_ALIAS = 9 

+

1377 KW_ALL = 10 

+

1378 OP_AND = 11 

+

1379 KW_ARCHITECTURE = 12 

+

1380 KW_ARRAY = 13 

+

1381 KW_ASSERT = 14 

+

1382 KW_ATTRIBUTE = 15 

+

1383 KW_PSL_ASSUME = 16 

+

1384 KW_BEGIN = 17 

+

1385 KW_BLOCK = 18 

+

1386 KW_BODY = 19 

+

1387 KW_BUFFER = 20 

+

1388 KW_BUS = 21 

+

1389 KW_CASE = 22 

+

1390 KW_COMPONENT = 23 

+

1391 KW_CONFIGURATION = 24 

+

1392 KW_CONSTANT = 25 

+

1393 KW_CONTEXT = 26 

+

1394 KW_PSL_COVER = 27 

+

1395 KW_DEFAULT = 28 

+

1396 KW_DISCONNECT = 29 

+

1397 KW_DOWNTO = 30 

+

1398 KW_ELSE = 31 

+

1399 KW_ELSIF = 32 

+

1400 KW_END = 33 

+

1401 KW_ENTITY = 34 

+

1402 KW_EXIT = 35 

+

1403 KW_FILE = 36 

+

1404 KW_FOR = 37 

+

1405 KW_FORCE = 38 

+

1406 KW_FUNCTION = 39 

+

1407 KW_PSL_FAIRNESS = 40 

+

1408 KW_GENERATE = 41 

+

1409 KW_GENERIC = 42 

+

1410 KW_GUARDED = 43 

+

1411 KW_GROUP = 44 

+

1412 KW_IF = 45 

+

1413 KW_IMPURE = 46 

+

1414 KW_IN = 47 

+

1415 KW_INERTIAL = 48 

+

1416 KW_INOUT = 49 

+

1417 KW_IS = 50 

+

1418 KW_LABEL = 51 

+

1419 KW_LIBRARY = 52 

+

1420 KW_LINKAGE = 53 

+

1421 KW_LOOP = 54 

+

1422 KW_PSL_LITERAL = 55 

+

1423 KW_MAP = 56 

+

1424 OP_MOD = 57 

+

1425 OP_NAND = 58 

+

1426 KW_NEW = 59 

+

1427 KW_NEXT = 60 

+

1428 OP_NOR = 61 

+

1429 OP_NOT = 62 

+

1430 KW_NULL = 63 

+

1431 KW_OF = 64 

+

1432 KW_ON = 65 

+

1433 KW_OPEN = 66 

+

1434 OP_OR = 67 

+

1435 KW_OTHERS = 68 

+

1436 KW_OUT = 69 

+

1437 KW_PACKAGE = 70 

+

1438 KW_PARAMETER = 71 

+

1439 KW_PORT = 72 

+

1440 KW_POSTPONED = 73 

+

1441 KW_PRIVATE = 74 

+

1442 KW_PROCEDURE = 75 

+

1443 KW_PROCESS = 76 

+

1444 KW_PROTECTED = 77 

+

1445 KW_PURE = 78 

+

1446 KW_RANGE = 79 

+

1447 KW_RECORD = 80 

+

1448 KW_REGISTER = 81 

+

1449 KW_REJECT = 82 

+

1450 KW_RELEASE = 83 

+

1451 OP_REM = 84 

+

1452 KW_REPORT = 85 

+

1453 KW_RETURN = 86 

+

1454 OP_ROL = 87 

+

1455 OP_ROR = 88 

+

1456 KW_PSL_RESTRICT = 89 

+

1457 KW_SELECT = 90 

+

1458 KW_SEVERITY = 91 

+

1459 KW_SHARED = 92 

+

1460 KW_SIGNAL = 93 

+

1461 OP_SLA = 94 

+

1462 OP_SLL = 95 

+

1463 OP_SRA = 96 

+

1464 OP_SRL = 97 

+

1465 KW_SUBTYPE = 98 

+

1466 KW_PSL_STRONG = 99 

+

1467 KW_PSL_SEQUENCE = 100 

+

1468 KW_THEN = 101 

+

1469 KW_TO = 102 

+

1470 KW_TRANSPORT = 103 

+

1471 KW_TYPE = 104 

+

1472 KW_UNAFFECTED = 105 

+

1473 KW_UNITS = 106 

+

1474 KW_UNTIL = 107 

+

1475 KW_USE = 108 

+

1476 KW_VARIABLE = 109 

+

1477 KW_VIEW = 110 

+

1478 KW_PSL_VPKG = 111 

+

1479 KW_PSL_VMODE = 112 

+

1480 KW_PSL_VPROP = 113 

+

1481 KW_PSL_VUNIT = 114 

+

1482 KW_WAIT = 115 

+

1483 KW_WITH = 116 

+

1484 KW_WHEN = 117 

+

1485 KW_WHILE = 118 

+

1486 OP_XNOR = 119 

+

1487 OP_XOR = 120 

+

1488 OP_EQ = 121 

+

1489 OP_NE = 122 

+

1490 OP_LT = 123 

+

1491 OP_GT = 124 

+

1492 OP_GE = 125 

+

1493 OP_IEQ = 126 

+

1494 OP_INE = 127 

+

1495 OP_ILT = 128 

+

1496 OP_ILE = 129 

+

1497 OP_IGT = 130 

+

1498 OP_IGE = 131 

+

1499 OP_PLUS = 132 

+

1500 OP_MINUS = 133 

+

1501 OP_MUL = 134 

+

1502 OP_DIV = 135 

+

1503 OP_POW = 136 

+

1504 OP_CONCAT = 137 

+

1505 OP_CONDITION = 138 

+

1506 TOK_RARROW = 139 

+

1507 TOK_SIG_ASSIGN = 140 

+

1508 TOK_VAR_ASSIGN = 141 

+

1509 TOK_BOX = 142 

+

1510 TOK_LP = 143 

+

1511 TOK_RP = 144 

+

1512 TOK_LB = 145 

+

1513 TOK_RB = 146 

+

1514 TOK_DLA = 147 

+

1515 TOK_DRA = 148 

+

1516 TOK_COLON = 149 

+

1517 TOK_SEMICOL = 150 

+

1518 TOK_COMMA = 151 

+

1519 TOK_BAR = 152 

+

1520 TOK_DOT = 153 

+

1521 TOK_QUESTION = 154 

+

1522 TOK_AT = 155 

+

1523 TOK_CIRCUMFLEX = 156 

+

1524 TOK_TICK = 157 

+

1525 TOK_DQUOTE = 158 

+

1526 LIT_ABSTRACT = 159 

+

1527 LIT_BIT_STRING = 160 

+

1528 LIT_CHARACTER = 161 

+

1529 LIT_STRING = 162 

+

1530 LIT_IDENTIFIER = 163 

+

1531 

+

1532 def __init__(self, input: TokenStream, output: TextIO = stdout): 

+

1533 super().__init__(input, output) 

+

1534 self.checkVersion("4.12.0") 

+

1535 self._interp = ParserATNSimulator(self, self.atn, self.decisionsToDFA, self.sharedContextCache) 

+

1536 self._predicates = None 

+

1537 

+

1538 class Rule_AbsolutePathnameContext(ParserRuleContext): 

+

1539 __slots__ = 'parser' 

+

1540 

+

1541 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

1542 super().__init__(parent, invokingState) 

+

1543 self.parser = parser 

+

1544 

+

1545 def TOK_DOT(self): 

+

1546 return self.getToken(VHDLParser.TOK_DOT, 0) 

+

1547 

+

1548 def rule_PartialPathname(self): 

+

1549 return self.getTypedRuleContext(VHDLParser.Rule_PartialPathnameContext, 0) 

+

1550 

+

1551 def getRuleIndex(self): 

+

1552 return VHDLParser.RULE_rule_AbsolutePathname 

+

1553 

+

1554 def accept(self, visitor: ParseTreeVisitor): 

+

1555 if hasattr(visitor, "visitRule_AbsolutePathname"): 

+

1556 return visitor.visitRule_AbsolutePathname(self) 

+

1557 else: 

+

1558 return visitor.visitChildren(self) 

+

1559 

+

1560 def rule_AbsolutePathname(self): 

+

1561 

+

1562 localctx = VHDLParser.Rule_AbsolutePathnameContext(self, self._ctx, self.state) 

+

1563 self.enterRule(localctx, 0, self.RULE_rule_AbsolutePathname) 

+

1564 try: 

+

1565 self.enterOuterAlt(localctx, 1) 

+

1566 self.state = 516 

+

1567 self.match(VHDLParser.TOK_DOT) 

+

1568 self.state = 517 

+

1569 self.rule_PartialPathname() 

+

1570 except RecognitionException as re: 

+

1571 localctx.exception = re 

+

1572 self._errHandler.reportError(self, re) 

+

1573 self._errHandler.recover(self, re) 

+

1574 finally: 

+

1575 self.exitRule() 

+

1576 return localctx 

+

1577 

+

1578 class Rule_AccessIncompleteTypeDefinitionContext(ParserRuleContext): 

+

1579 __slots__ = 'parser' 

+

1580 

+

1581 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

1582 super().__init__(parent, invokingState) 

+

1583 self.parser = parser 

+

1584 

+

1585 def KW_ACCESS(self): 

+

1586 return self.getToken(VHDLParser.KW_ACCESS, 0) 

+

1587 

+

1588 def rule_IncompleteSubtypeIndication(self): 

+

1589 return self.getTypedRuleContext(VHDLParser.Rule_IncompleteSubtypeIndicationContext, 0) 

+

1590 

+

1591 def getRuleIndex(self): 

+

1592 return VHDLParser.RULE_rule_AccessIncompleteTypeDefinition 

+

1593 

+

1594 def accept(self, visitor: ParseTreeVisitor): 

+

1595 if hasattr(visitor, "visitRule_AccessIncompleteTypeDefinition"): 

+

1596 return visitor.visitRule_AccessIncompleteTypeDefinition(self) 

+

1597 else: 

+

1598 return visitor.visitChildren(self) 

+

1599 

+

1600 def rule_AccessIncompleteTypeDefinition(self): 

+

1601 

+

1602 localctx = VHDLParser.Rule_AccessIncompleteTypeDefinitionContext(self, self._ctx, self.state) 

+

1603 self.enterRule(localctx, 2, self.RULE_rule_AccessIncompleteTypeDefinition) 

+

1604 try: 

+

1605 self.enterOuterAlt(localctx, 1) 

+

1606 self.state = 519 

+

1607 self.match(VHDLParser.KW_ACCESS) 

+

1608 self.state = 520 

+

1609 self.rule_IncompleteSubtypeIndication() 

+

1610 except RecognitionException as re: 

+

1611 localctx.exception = re 

+

1612 self._errHandler.reportError(self, re) 

+

1613 self._errHandler.recover(self, re) 

+

1614 finally: 

+

1615 self.exitRule() 

+

1616 return localctx 

+

1617 

+

1618 class Rule_AccessTypeDefinitionContext(ParserRuleContext): 

+

1619 __slots__ = 'parser' 

+

1620 

+

1621 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

1622 super().__init__(parent, invokingState) 

+

1623 self.parser = parser 

+

1624 self.subtypeIndication = None # Rule_SubtypeIndicationContext 

+

1625 

+

1626 def KW_ACCESS(self): 

+

1627 return self.getToken(VHDLParser.KW_ACCESS, 0) 

+

1628 

+

1629 def rule_SubtypeIndication(self): 

+

1630 return self.getTypedRuleContext(VHDLParser.Rule_SubtypeIndicationContext, 0) 

+

1631 

+

1632 def getRuleIndex(self): 

+

1633 return VHDLParser.RULE_rule_AccessTypeDefinition 

+

1634 

+

1635 def accept(self, visitor: ParseTreeVisitor): 

+

1636 if hasattr(visitor, "visitRule_AccessTypeDefinition"): 

+

1637 return visitor.visitRule_AccessTypeDefinition(self) 

+

1638 else: 

+

1639 return visitor.visitChildren(self) 

+

1640 

+

1641 def rule_AccessTypeDefinition(self): 

+

1642 

+

1643 localctx = VHDLParser.Rule_AccessTypeDefinitionContext(self, self._ctx, self.state) 

+

1644 self.enterRule(localctx, 4, self.RULE_rule_AccessTypeDefinition) 

+

1645 try: 

+

1646 self.enterOuterAlt(localctx, 1) 

+

1647 self.state = 522 

+

1648 self.match(VHDLParser.KW_ACCESS) 

+

1649 self.state = 523 

+

1650 localctx.subtypeIndication = self.rule_SubtypeIndication() 

+

1651 except RecognitionException as re: 

+

1652 localctx.exception = re 

+

1653 self._errHandler.reportError(self, re) 

+

1654 self._errHandler.recover(self, re) 

+

1655 finally: 

+

1656 self.exitRule() 

+

1657 return localctx 

+

1658 

+

1659 class Rule_ActualDesignatorContext(ParserRuleContext): 

+

1660 __slots__ = 'parser' 

+

1661 

+

1662 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

1663 super().__init__(parent, invokingState) 

+

1664 self.parser = parser 

+

1665 self.inertial = None # Token 

+

1666 self.expression = None # Rule_ExpressionContext 

+

1667 self.name = None # Rule_NameContext 

+

1668 self.subtypeIndication = None # Rule_SubtypeIndicationContext 

+

1669 self.open_ = None # Token 

+

1670 

+

1671 def rule_Expression(self): 

+

1672 return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0) 

+

1673 

+

1674 def KW_INERTIAL(self): 

+

1675 return self.getToken(VHDLParser.KW_INERTIAL, 0) 

+

1676 

+

1677 def rule_Name(self): 

+

1678 return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0) 

+

1679 

+

1680 def rule_SubtypeIndication(self): 

+

1681 return self.getTypedRuleContext(VHDLParser.Rule_SubtypeIndicationContext, 0) 

+

1682 

+

1683 def KW_OPEN(self): 

+

1684 return self.getToken(VHDLParser.KW_OPEN, 0) 

+

1685 

+

1686 def getRuleIndex(self): 

+

1687 return VHDLParser.RULE_rule_ActualDesignator 

+

1688 

+

1689 def accept(self, visitor: ParseTreeVisitor): 

+

1690 if hasattr(visitor, "visitRule_ActualDesignator"): 

+

1691 return visitor.visitRule_ActualDesignator(self) 

+

1692 else: 

+

1693 return visitor.visitChildren(self) 

+

1694 

+

1695 def rule_ActualDesignator(self): 

+

1696 

+

1697 localctx = VHDLParser.Rule_ActualDesignatorContext(self, self._ctx, self.state) 

+

1698 self.enterRule(localctx, 6, self.RULE_rule_ActualDesignator) 

+

1699 self._la = 0 # Token type 

+

1700 try: 

+

1701 self.state = 532 

+

1702 self._errHandler.sync(self) 

+

1703 la_ = self._interp.adaptivePredict(self._input, 1, self._ctx) 

+

1704 if la_ == 1: 

+

1705 self.enterOuterAlt(localctx, 1) 

+

1706 self.state = 526 

+

1707 self._errHandler.sync(self) 

+

1708 _la = self._input.LA(1) 

+

1709 if _la == 48: 

+

1710 self.state = 525 

+

1711 localctx.inertial = self.match(VHDLParser.KW_INERTIAL) 

+

1712 

+

1713 self.state = 528 

+

1714 localctx.expression = self.rule_Expression(0) 

+

1715 pass 

+

1716 

+

1717 elif la_ == 2: 

+

1718 self.enterOuterAlt(localctx, 2) 

+

1719 self.state = 529 

+

1720 localctx.name = self.rule_Name(0) 

+

1721 pass 

+

1722 

+

1723 elif la_ == 3: 

+

1724 self.enterOuterAlt(localctx, 3) 

+

1725 self.state = 530 

+

1726 localctx.subtypeIndication = self.rule_SubtypeIndication() 

+

1727 pass 

+

1728 

+

1729 elif la_ == 4: 

+

1730 self.enterOuterAlt(localctx, 4) 

+

1731 self.state = 531 

+

1732 localctx.open_ = self.match(VHDLParser.KW_OPEN) 

+

1733 pass 

+

1734 

+

1735 

+

1736 except RecognitionException as re: 

+

1737 localctx.exception = re 

+

1738 self._errHandler.reportError(self, re) 

+

1739 self._errHandler.recover(self, re) 

+

1740 finally: 

+

1741 self.exitRule() 

+

1742 return localctx 

+

1743 

+

1744 class Rule_ActualPartContext(ParserRuleContext): 

+

1745 __slots__ = 'parser' 

+

1746 

+

1747 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

1748 super().__init__(parent, invokingState) 

+

1749 self.parser = parser 

+

1750 self.actualDesignator = None # Rule_ActualDesignatorContext 

+

1751 self.conversion = None # Rule_NameContext 

+

1752 

+

1753 def rule_ActualDesignator(self): 

+

1754 return self.getTypedRuleContext(VHDLParser.Rule_ActualDesignatorContext, 0) 

+

1755 

+

1756 def TOK_LP(self): 

+

1757 return self.getToken(VHDLParser.TOK_LP, 0) 

+

1758 

+

1759 def TOK_RP(self): 

+

1760 return self.getToken(VHDLParser.TOK_RP, 0) 

+

1761 

+

1762 def rule_Name(self): 

+

1763 return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0) 

+

1764 

+

1765 def getRuleIndex(self): 

+

1766 return VHDLParser.RULE_rule_ActualPart 

+

1767 

+

1768 def accept(self, visitor: ParseTreeVisitor): 

+

1769 if hasattr(visitor, "visitRule_ActualPart"): 

+

1770 return visitor.visitRule_ActualPart(self) 

+

1771 else: 

+

1772 return visitor.visitChildren(self) 

+

1773 

+

1774 def rule_ActualPart(self): 

+

1775 

+

1776 localctx = VHDLParser.Rule_ActualPartContext(self, self._ctx, self.state) 

+

1777 self.enterRule(localctx, 8, self.RULE_rule_ActualPart) 

+

1778 try: 

+

1779 self.state = 540 

+

1780 self._errHandler.sync(self) 

+

1781 la_ = self._interp.adaptivePredict(self._input, 2, self._ctx) 

+

1782 if la_ == 1: 

+

1783 self.enterOuterAlt(localctx, 1) 

+

1784 self.state = 534 

+

1785 localctx.actualDesignator = self.rule_ActualDesignator() 

+

1786 pass 

+

1787 

+

1788 elif la_ == 2: 

+

1789 self.enterOuterAlt(localctx, 2) 

+

1790 self.state = 535 

+

1791 localctx.conversion = self.rule_Name(0) 

+

1792 self.state = 536 

+

1793 self.match(VHDLParser.TOK_LP) 

+

1794 self.state = 537 

+

1795 localctx.actualDesignator = self.rule_ActualDesignator() 

+

1796 self.state = 538 

+

1797 self.match(VHDLParser.TOK_RP) 

+

1798 pass 

+

1799 

+

1800 

+

1801 except RecognitionException as re: 

+

1802 localctx.exception = re 

+

1803 self._errHandler.reportError(self, re) 

+

1804 self._errHandler.recover(self, re) 

+

1805 finally: 

+

1806 self.exitRule() 

+

1807 return localctx 

+

1808 

+

1809 class Rule_AggregateContext(ParserRuleContext): 

+

1810 __slots__ = 'parser' 

+

1811 

+

1812 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

1813 super().__init__(parent, invokingState) 

+

1814 self.parser = parser 

+

1815 self._rule_ElementAssociation = None # Rule_ElementAssociationContext 

+

1816 self.element = list() # of Rule_ElementAssociationContexts 

+

1817 

+

1818 def TOK_LP(self): 

+

1819 return self.getToken(VHDLParser.TOK_LP, 0) 

+

1820 

+

1821 def TOK_RP(self): 

+

1822 return self.getToken(VHDLParser.TOK_RP, 0) 

+

1823 

+

1824 def rule_ElementAssociation(self, i: int = None): 

+

1825 if i is None: 

+

1826 return self.getTypedRuleContexts(VHDLParser.Rule_ElementAssociationContext) 

+

1827 else: 

+

1828 return self.getTypedRuleContext(VHDLParser.Rule_ElementAssociationContext, i) 

+

1829 

+

1830 def TOK_COMMA(self, i: int = None): 

+

1831 if i is None: 

+

1832 return self.getTokens(VHDLParser.TOK_COMMA) 

+

1833 else: 

+

1834 return self.getToken(VHDLParser.TOK_COMMA, i) 

+

1835 

+

1836 def getRuleIndex(self): 

+

1837 return VHDLParser.RULE_rule_Aggregate 

+

1838 

+

1839 def accept(self, visitor: ParseTreeVisitor): 

+

1840 if hasattr(visitor, "visitRule_Aggregate"): 

+

1841 return visitor.visitRule_Aggregate(self) 

+

1842 else: 

+

1843 return visitor.visitChildren(self) 

+

1844 

+

1845 def rule_Aggregate(self): 

+

1846 

+

1847 localctx = VHDLParser.Rule_AggregateContext(self, self._ctx, self.state) 

+

1848 self.enterRule(localctx, 10, self.RULE_rule_Aggregate) 

+

1849 self._la = 0 # Token type 

+

1850 try: 

+

1851 self.enterOuterAlt(localctx, 1) 

+

1852 self.state = 542 

+

1853 self.match(VHDLParser.TOK_LP) 

+

1854 self.state = 543 

+

1855 localctx._rule_ElementAssociation = self.rule_ElementAssociation() 

+

1856 localctx.element.append(localctx._rule_ElementAssociation) 

+

1857 self.state = 548 

+

1858 self._errHandler.sync(self) 

+

1859 _la = self._input.LA(1) 

+

1860 while _la == 151: 

+

1861 self.state = 544 

+

1862 self.match(VHDLParser.TOK_COMMA) 

+

1863 self.state = 545 

+

1864 localctx._rule_ElementAssociation = self.rule_ElementAssociation() 

+

1865 localctx.element.append(localctx._rule_ElementAssociation) 

+

1866 self.state = 550 

+

1867 self._errHandler.sync(self) 

+

1868 _la = self._input.LA(1) 

+

1869 

+

1870 self.state = 551 

+

1871 self.match(VHDLParser.TOK_RP) 

+

1872 except RecognitionException as re: 

+

1873 localctx.exception = re 

+

1874 self._errHandler.reportError(self, re) 

+

1875 self._errHandler.recover(self, re) 

+

1876 finally: 

+

1877 self.exitRule() 

+

1878 return localctx 

+

1879 

+

1880 class Rule_AliasDeclarationContext(ParserRuleContext): 

+

1881 __slots__ = 'parser' 

+

1882 

+

1883 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

1884 super().__init__(parent, invokingState) 

+

1885 self.parser = parser 

+

1886 self.aliasDesignator = None # Rule_AliasDesignatorContext 

+

1887 self.aliasIndication = None # Rule_AliasIndicationContext 

+

1888 self.aliasTarget = None # Rule_NameContext 

+

1889 self.signature = None # Rule_SignatureContext 

+

1890 

+

1891 def KW_ALIAS(self): 

+

1892 return self.getToken(VHDLParser.KW_ALIAS, 0) 

+

1893 

+

1894 def KW_IS(self): 

+

1895 return self.getToken(VHDLParser.KW_IS, 0) 

+

1896 

+

1897 def TOK_SEMICOL(self): 

+

1898 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

1899 

+

1900 def rule_AliasDesignator(self): 

+

1901 return self.getTypedRuleContext(VHDLParser.Rule_AliasDesignatorContext, 0) 

+

1902 

+

1903 def rule_Name(self): 

+

1904 return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0) 

+

1905 

+

1906 def TOK_COLON(self): 

+

1907 return self.getToken(VHDLParser.TOK_COLON, 0) 

+

1908 

+

1909 def rule_AliasIndication(self): 

+

1910 return self.getTypedRuleContext(VHDLParser.Rule_AliasIndicationContext, 0) 

+

1911 

+

1912 def rule_Signature(self): 

+

1913 return self.getTypedRuleContext(VHDLParser.Rule_SignatureContext, 0) 

+

1914 

+

1915 def getRuleIndex(self): 

+

1916 return VHDLParser.RULE_rule_AliasDeclaration 

+

1917 

+

1918 def accept(self, visitor: ParseTreeVisitor): 

+

1919 if hasattr(visitor, "visitRule_AliasDeclaration"): 

+

1920 return visitor.visitRule_AliasDeclaration(self) 

+

1921 else: 

+

1922 return visitor.visitChildren(self) 

+

1923 

+

1924 def rule_AliasDeclaration(self): 

+

1925 

+

1926 localctx = VHDLParser.Rule_AliasDeclarationContext(self, self._ctx, self.state) 

+

1927 self.enterRule(localctx, 12, self.RULE_rule_AliasDeclaration) 

+

1928 self._la = 0 # Token type 

+

1929 try: 

+

1930 self.enterOuterAlt(localctx, 1) 

+

1931 self.state = 553 

+

1932 self.match(VHDLParser.KW_ALIAS) 

+

1933 self.state = 554 

+

1934 localctx.aliasDesignator = self.rule_AliasDesignator() 

+

1935 self.state = 557 

+

1936 self._errHandler.sync(self) 

+

1937 _la = self._input.LA(1) 

+

1938 if _la == 149: 

+

1939 self.state = 555 

+

1940 self.match(VHDLParser.TOK_COLON) 

+

1941 self.state = 556 

+

1942 localctx.aliasIndication = self.rule_AliasIndication() 

+

1943 

+

1944 self.state = 559 

+

1945 self.match(VHDLParser.KW_IS) 

+

1946 self.state = 560 

+

1947 localctx.aliasTarget = self.rule_Name(0) 

+

1948 self.state = 562 

+

1949 self._errHandler.sync(self) 

+

1950 _la = self._input.LA(1) 

+

1951 if _la == 145: 

+

1952 self.state = 561 

+

1953 localctx.signature = self.rule_Signature() 

+

1954 

+

1955 self.state = 564 

+

1956 self.match(VHDLParser.TOK_SEMICOL) 

+

1957 except RecognitionException as re: 

+

1958 localctx.exception = re 

+

1959 self._errHandler.reportError(self, re) 

+

1960 self._errHandler.recover(self, re) 

+

1961 finally: 

+

1962 self.exitRule() 

+

1963 return localctx 

+

1964 

+

1965 class Rule_AliasDesignatorContext(ParserRuleContext): 

+

1966 __slots__ = 'parser' 

+

1967 

+

1968 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

1969 super().__init__(parent, invokingState) 

+

1970 self.parser = parser 

+

1971 

+

1972 def LIT_IDENTIFIER(self): 

+

1973 return self.getToken(VHDLParser.LIT_IDENTIFIER, 0) 

+

1974 

+

1975 def LIT_CHARACTER(self): 

+

1976 return self.getToken(VHDLParser.LIT_CHARACTER, 0) 

+

1977 

+

1978 def LIT_STRING(self): 

+

1979 return self.getToken(VHDLParser.LIT_STRING, 0) 

+

1980 

+

1981 def getRuleIndex(self): 

+

1982 return VHDLParser.RULE_rule_AliasDesignator 

+

1983 

+

1984 def accept(self, visitor: ParseTreeVisitor): 

+

1985 if hasattr(visitor, "visitRule_AliasDesignator"): 

+

1986 return visitor.visitRule_AliasDesignator(self) 

+

1987 else: 

+

1988 return visitor.visitChildren(self) 

+

1989 

+

1990 def rule_AliasDesignator(self): 

+

1991 

+

1992 localctx = VHDLParser.Rule_AliasDesignatorContext(self, self._ctx, self.state) 

+

1993 self.enterRule(localctx, 14, self.RULE_rule_AliasDesignator) 

+

1994 self._la = 0 # Token type 

+

1995 try: 

+

1996 self.enterOuterAlt(localctx, 1) 

+

1997 self.state = 566 

+

1998 _la = self._input.LA(1) 

+

1999 if not (((((_la - 161)) & ~0x3f) == 0 and ((1 << (_la - 161)) & 7) != 0)): 

+

2000 self._errHandler.recoverInline(self) 

+

2001 else: 

+

2002 self._errHandler.reportMatch(self) 

+

2003 self.consume() 

+

2004 except RecognitionException as re: 

+

2005 localctx.exception = re 

+

2006 self._errHandler.reportError(self, re) 

+

2007 self._errHandler.recover(self, re) 

+

2008 finally: 

+

2009 self.exitRule() 

+

2010 return localctx 

+

2011 

+

2012 class Rule_AliasIndicationContext(ParserRuleContext): 

+

2013 __slots__ = 'parser' 

+

2014 

+

2015 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

2016 super().__init__(parent, invokingState) 

+

2017 self.parser = parser 

+

2018 self.subtypeIndication = None # Rule_SubtypeIndicationContext 

+

2019 

+

2020 def rule_SubtypeIndication(self): 

+

2021 return self.getTypedRuleContext(VHDLParser.Rule_SubtypeIndicationContext, 0) 

+

2022 

+

2023 def getRuleIndex(self): 

+

2024 return VHDLParser.RULE_rule_AliasIndication 

+

2025 

+

2026 def accept(self, visitor: ParseTreeVisitor): 

+

2027 if hasattr(visitor, "visitRule_AliasIndication"): 

+

2028 return visitor.visitRule_AliasIndication(self) 

+

2029 else: 

+

2030 return visitor.visitChildren(self) 

+

2031 

+

2032 def rule_AliasIndication(self): 

+

2033 

+

2034 localctx = VHDLParser.Rule_AliasIndicationContext(self, self._ctx, self.state) 

+

2035 self.enterRule(localctx, 16, self.RULE_rule_AliasIndication) 

+

2036 try: 

+

2037 self.enterOuterAlt(localctx, 1) 

+

2038 self.state = 568 

+

2039 localctx.subtypeIndication = self.rule_SubtypeIndication() 

+

2040 except RecognitionException as re: 

+

2041 localctx.exception = re 

+

2042 self._errHandler.reportError(self, re) 

+

2043 self._errHandler.recover(self, re) 

+

2044 finally: 

+

2045 self.exitRule() 

+

2046 return localctx 

+

2047 

+

2048 class Rule_AllocatorContext(ParserRuleContext): 

+

2049 __slots__ = 'parser' 

+

2050 

+

2051 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

2052 super().__init__(parent, invokingState) 

+

2053 self.parser = parser 

+

2054 self.subtypeIndication = None # Rule_SubtypeIndicationContext 

+

2055 self.qualifiedExpression = None # Rule_QualifiedExpressionContext 

+

2056 

+

2057 def KW_NEW(self): 

+

2058 return self.getToken(VHDLParser.KW_NEW, 0) 

+

2059 

+

2060 def rule_SubtypeIndication(self): 

+

2061 return self.getTypedRuleContext(VHDLParser.Rule_SubtypeIndicationContext, 0) 

+

2062 

+

2063 def rule_QualifiedExpression(self): 

+

2064 return self.getTypedRuleContext(VHDLParser.Rule_QualifiedExpressionContext, 0) 

+

2065 

+

2066 def getRuleIndex(self): 

+

2067 return VHDLParser.RULE_rule_Allocator 

+

2068 

+

2069 def accept(self, visitor: ParseTreeVisitor): 

+

2070 if hasattr(visitor, "visitRule_Allocator"): 

+

2071 return visitor.visitRule_Allocator(self) 

+

2072 else: 

+

2073 return visitor.visitChildren(self) 

+

2074 

+

2075 def rule_Allocator(self): 

+

2076 

+

2077 localctx = VHDLParser.Rule_AllocatorContext(self, self._ctx, self.state) 

+

2078 self.enterRule(localctx, 18, self.RULE_rule_Allocator) 

+

2079 try: 

+

2080 self.enterOuterAlt(localctx, 1) 

+

2081 self.state = 570 

+

2082 self.match(VHDLParser.KW_NEW) 

+

2083 self.state = 573 

+

2084 self._errHandler.sync(self) 

+

2085 la_ = self._interp.adaptivePredict(self._input, 6, self._ctx) 

+

2086 if la_ == 1: 

+

2087 self.state = 571 

+

2088 localctx.subtypeIndication = self.rule_SubtypeIndication() 

+

2089 pass 

+

2090 

+

2091 elif la_ == 2: 

+

2092 self.state = 572 

+

2093 localctx.qualifiedExpression = self.rule_QualifiedExpression() 

+

2094 pass 

+

2095 

+

2096 

+

2097 except RecognitionException as re: 

+

2098 localctx.exception = re 

+

2099 self._errHandler.reportError(self, re) 

+

2100 self._errHandler.recover(self, re) 

+

2101 finally: 

+

2102 self.exitRule() 

+

2103 return localctx 

+

2104 

+

2105 class Rule_ArchitectureContext(ParserRuleContext): 

+

2106 __slots__ = 'parser' 

+

2107 

+

2108 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

2109 super().__init__(parent, invokingState) 

+

2110 self.parser = parser 

+

2111 self.name = None # Token 

+

2112 self.entityName = None # Token 

+

2113 self._rule_BlockDeclarativeItem = None # Rule_BlockDeclarativeItemContext 

+

2114 self.declarativeItems = list() # of Rule_BlockDeclarativeItemContexts 

+

2115 self._rule_ConcurrentStatement = None # Rule_ConcurrentStatementContext 

+

2116 self.statements = list() # of Rule_ConcurrentStatementContexts 

+

2117 self.name2 = None # Token 

+

2118 

+

2119 def KW_ARCHITECTURE(self, i: int = None): 

+

2120 if i is None: 

+

2121 return self.getTokens(VHDLParser.KW_ARCHITECTURE) 

+

2122 else: 

+

2123 return self.getToken(VHDLParser.KW_ARCHITECTURE, i) 

+

2124 

+

2125 def KW_OF(self): 

+

2126 return self.getToken(VHDLParser.KW_OF, 0) 

+

2127 

+

2128 def KW_IS(self): 

+

2129 return self.getToken(VHDLParser.KW_IS, 0) 

+

2130 

+

2131 def KW_BEGIN(self): 

+

2132 return self.getToken(VHDLParser.KW_BEGIN, 0) 

+

2133 

+

2134 def KW_END(self): 

+

2135 return self.getToken(VHDLParser.KW_END, 0) 

+

2136 

+

2137 def TOK_SEMICOL(self): 

+

2138 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

2139 

+

2140 def LIT_IDENTIFIER(self, i: int = None): 

+

2141 if i is None: 

+

2142 return self.getTokens(VHDLParser.LIT_IDENTIFIER) 

+

2143 else: 

+

2144 return self.getToken(VHDLParser.LIT_IDENTIFIER, i) 

+

2145 

+

2146 def rule_BlockDeclarativeItem(self, i: int = None): 

+

2147 if i is None: 

+

2148 return self.getTypedRuleContexts(VHDLParser.Rule_BlockDeclarativeItemContext) 

+

2149 else: 

+

2150 return self.getTypedRuleContext(VHDLParser.Rule_BlockDeclarativeItemContext, i) 

+

2151 

+

2152 def rule_ConcurrentStatement(self, i: int = None): 

+

2153 if i is None: 

+

2154 return self.getTypedRuleContexts(VHDLParser.Rule_ConcurrentStatementContext) 

+

2155 else: 

+

2156 return self.getTypedRuleContext(VHDLParser.Rule_ConcurrentStatementContext, i) 

+

2157 

+

2158 def getRuleIndex(self): 

+

2159 return VHDLParser.RULE_rule_Architecture 

+

2160 

+

2161 def accept(self, visitor: ParseTreeVisitor): 

+

2162 if hasattr(visitor, "visitRule_Architecture"): 

+

2163 return visitor.visitRule_Architecture(self) 

+

2164 else: 

+

2165 return visitor.visitChildren(self) 

+

2166 

+

2167 def rule_Architecture(self): 

+

2168 

+

2169 localctx = VHDLParser.Rule_ArchitectureContext(self, self._ctx, self.state) 

+

2170 self.enterRule(localctx, 20, self.RULE_rule_Architecture) 

+

2171 self._la = 0 # Token type 

+

2172 try: 

+

2173 self.enterOuterAlt(localctx, 1) 

+

2174 self.state = 575 

+

2175 self.match(VHDLParser.KW_ARCHITECTURE) 

+

2176 self.state = 576 

+

2177 localctx.name = self.match(VHDLParser.LIT_IDENTIFIER) 

+

2178 self.state = 577 

+

2179 self.match(VHDLParser.KW_OF) 

+

2180 self.state = 578 

+

2181 localctx.entityName = self.match(VHDLParser.LIT_IDENTIFIER) 

+

2182 self.state = 579 

+

2183 self.match(VHDLParser.KW_IS) 

+

2184 self.state = 583 

+

2185 self._errHandler.sync(self) 

+

2186 _la = self._input.LA(1) 

+

2187 while (((_la) & ~0x3f) == 0 and ((1 << _la) & 88717423313408) != 0) or ( 

+

2188 (((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & 1941606236449) != 0): 

+

2189 self.state = 580 

+

2190 localctx._rule_BlockDeclarativeItem = self.rule_BlockDeclarativeItem() 

+

2191 localctx.declarativeItems.append(localctx._rule_BlockDeclarativeItem) 

+

2192 self.state = 585 

+

2193 self._errHandler.sync(self) 

+

2194 _la = self._input.LA(1) 

+

2195 

+

2196 self.state = 586 

+

2197 self.match(VHDLParser.KW_BEGIN) 

+

2198 self.state = 590 

+

2199 self._errHandler.sync(self) 

+

2200 _la = self._input.LA(1) 

+

2201 while ((((_la - 14)) & ~0x3f) == 0 and ((1 << (_la - 14)) & 5188146770730811393) != 0) or ( 

+

2202 (((_la - 116)) & ~0x3f) == 0 and ((1 << (_la - 116)) & 246292886323201) != 0): 

+

2203 self.state = 587 

+

2204 localctx._rule_ConcurrentStatement = self.rule_ConcurrentStatement() 

+

2205 localctx.statements.append(localctx._rule_ConcurrentStatement) 

+

2206 self.state = 592 

+

2207 self._errHandler.sync(self) 

+

2208 _la = self._input.LA(1) 

+

2209 

+

2210 self.state = 593 

+

2211 self.match(VHDLParser.KW_END) 

+

2212 self.state = 595 

+

2213 self._errHandler.sync(self) 

+

2214 _la = self._input.LA(1) 

+

2215 if _la == 12: 

+

2216 self.state = 594 

+

2217 self.match(VHDLParser.KW_ARCHITECTURE) 

+

2218 

+

2219 self.state = 598 

+

2220 self._errHandler.sync(self) 

+

2221 _la = self._input.LA(1) 

+

2222 if _la == 163: 

+

2223 self.state = 597 

+

2224 localctx.name2 = self.match(VHDLParser.LIT_IDENTIFIER) 

+

2225 

+

2226 self.state = 600 

+

2227 self.match(VHDLParser.TOK_SEMICOL) 

+

2228 except RecognitionException as re: 

+

2229 localctx.exception = re 

+

2230 self._errHandler.reportError(self, re) 

+

2231 self._errHandler.recover(self, re) 

+

2232 finally: 

+

2233 self.exitRule() 

+

2234 return localctx 

+

2235 

+

2236 class Rule_ArchitectureStatementContext(ParserRuleContext): 

+

2237 __slots__ = 'parser' 

+

2238 

+

2239 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

2240 super().__init__(parent, invokingState) 

+

2241 self.parser = parser 

+

2242 self.blockStatement = None # Rule_BlockStatementContext 

+

2243 self.processStatement = None # Rule_ProcessStatementContext 

+

2244 self.postponedProcessStatement = None # Rule_PostponedProcessStatementContext 

+

2245 self.label = None # Token 

+

2246 self.procedureCallStatement = None # Rule_ConcurrentProcedureCallStatementContext 

+

2247 self.assertionStatement = None # Rule_ConcurrentAssertionStatementContext 

+

2248 self.postponed = None # Token 

+

2249 self.signalAssignmentStatement = None # Rule_ConcurrentSignalAssignmentStatementContext 

+

2250 self.instantiationStatement = None # Rule_ComponentInstantiationStatementContext 

+

2251 self.generateStatement = None # Rule_GenerateStatementContext 

+

2252 

+

2253 def rule_BlockStatement(self): 

+

2254 return self.getTypedRuleContext(VHDLParser.Rule_BlockStatementContext, 0) 

+

2255 

+

2256 def rule_ProcessStatement(self): 

+

2257 return self.getTypedRuleContext(VHDLParser.Rule_ProcessStatementContext, 0) 

+

2258 

+

2259 def rule_PostponedProcessStatement(self): 

+

2260 return self.getTypedRuleContext(VHDLParser.Rule_PostponedProcessStatementContext, 0) 

+

2261 

+

2262 def rule_ConcurrentProcedureCallStatement(self): 

+

2263 return self.getTypedRuleContext(VHDLParser.Rule_ConcurrentProcedureCallStatementContext, 0) 

+

2264 

+

2265 def TOK_COLON(self): 

+

2266 return self.getToken(VHDLParser.TOK_COLON, 0) 

+

2267 

+

2268 def LIT_IDENTIFIER(self): 

+

2269 return self.getToken(VHDLParser.LIT_IDENTIFIER, 0) 

+

2270 

+

2271 def rule_ConcurrentAssertionStatement(self): 

+

2272 return self.getTypedRuleContext(VHDLParser.Rule_ConcurrentAssertionStatementContext, 0) 

+

2273 

+

2274 def rule_ConcurrentSignalAssignmentStatement(self): 

+

2275 return self.getTypedRuleContext(VHDLParser.Rule_ConcurrentSignalAssignmentStatementContext, 0) 

+

2276 

+

2277 def KW_POSTPONED(self): 

+

2278 return self.getToken(VHDLParser.KW_POSTPONED, 0) 

+

2279 

+

2280 def rule_ComponentInstantiationStatement(self): 

+

2281 return self.getTypedRuleContext(VHDLParser.Rule_ComponentInstantiationStatementContext, 0) 

+

2282 

+

2283 def rule_GenerateStatement(self): 

+

2284 return self.getTypedRuleContext(VHDLParser.Rule_GenerateStatementContext, 0) 

+

2285 

+

2286 def getRuleIndex(self): 

+

2287 return VHDLParser.RULE_rule_ArchitectureStatement 

+

2288 

+

2289 def accept(self, visitor: ParseTreeVisitor): 

+

2290 if hasattr(visitor, "visitRule_ArchitectureStatement"): 

+

2291 return visitor.visitRule_ArchitectureStatement(self) 

+

2292 else: 

+

2293 return visitor.visitChildren(self) 

+

2294 

+

2295 def rule_ArchitectureStatement(self): 

+

2296 

+

2297 localctx = VHDLParser.Rule_ArchitectureStatementContext(self, self._ctx, self.state) 

+

2298 self.enterRule(localctx, 22, self.RULE_rule_ArchitectureStatement) 

+

2299 try: 

+

2300 self.state = 625 

+

2301 self._errHandler.sync(self) 

+

2302 la_ = self._interp.adaptivePredict(self._input, 15, self._ctx) 

+

2303 if la_ == 1: 

+

2304 self.enterOuterAlt(localctx, 1) 

+

2305 self.state = 602 

+

2306 localctx.blockStatement = self.rule_BlockStatement() 

+

2307 pass 

+

2308 

+

2309 elif la_ == 2: 

+

2310 self.enterOuterAlt(localctx, 2) 

+

2311 self.state = 603 

+

2312 localctx.processStatement = self.rule_ProcessStatement() 

+

2313 pass 

+

2314 

+

2315 elif la_ == 3: 

+

2316 self.enterOuterAlt(localctx, 3) 

+

2317 self.state = 604 

+

2318 localctx.postponedProcessStatement = self.rule_PostponedProcessStatement() 

+

2319 pass 

+

2320 

+

2321 elif la_ == 4: 

+

2322 self.enterOuterAlt(localctx, 4) 

+

2323 self.state = 607 

+

2324 self._errHandler.sync(self) 

+

2325 la_ = self._interp.adaptivePredict(self._input, 11, self._ctx) 

+

2326 if la_ == 1: 

+

2327 self.state = 605 

+

2328 localctx.label = self.match(VHDLParser.LIT_IDENTIFIER) 

+

2329 self.state = 606 

+

2330 self.match(VHDLParser.TOK_COLON) 

+

2331 

+

2332 self.state = 609 

+

2333 localctx.procedureCallStatement = self.rule_ConcurrentProcedureCallStatement() 

+

2334 pass 

+

2335 

+

2336 elif la_ == 5: 

+

2337 self.enterOuterAlt(localctx, 5) 

+

2338 self.state = 612 

+

2339 self._errHandler.sync(self) 

+

2340 la_ = self._interp.adaptivePredict(self._input, 12, self._ctx) 

+

2341 if la_ == 1: 

+

2342 self.state = 610 

+

2343 localctx.label = self.match(VHDLParser.LIT_IDENTIFIER) 

+

2344 self.state = 611 

+

2345 self.match(VHDLParser.TOK_COLON) 

+

2346 

+

2347 self.state = 614 

+

2348 localctx.assertionStatement = self.rule_ConcurrentAssertionStatement() 

+

2349 pass 

+

2350 

+

2351 elif la_ == 6: 

+

2352 self.enterOuterAlt(localctx, 6) 

+

2353 self.state = 617 

+

2354 self._errHandler.sync(self) 

+

2355 la_ = self._interp.adaptivePredict(self._input, 13, self._ctx) 

+

2356 if la_ == 1: 

+

2357 self.state = 615 

+

2358 localctx.label = self.match(VHDLParser.LIT_IDENTIFIER) 

+

2359 self.state = 616 

+

2360 self.match(VHDLParser.TOK_COLON) 

+

2361 

+

2362 self.state = 620 

+

2363 self._errHandler.sync(self) 

+

2364 la_ = self._interp.adaptivePredict(self._input, 14, self._ctx) 

+

2365 if la_ == 1: 

+

2366 self.state = 619 

+

2367 localctx.postponed = self.match(VHDLParser.KW_POSTPONED) 

+

2368 

+

2369 self.state = 622 

+

2370 localctx.signalAssignmentStatement = self.rule_ConcurrentSignalAssignmentStatement() 

+

2371 pass 

+

2372 

+

2373 elif la_ == 7: 

+

2374 self.enterOuterAlt(localctx, 7) 

+

2375 self.state = 623 

+

2376 localctx.instantiationStatement = self.rule_ComponentInstantiationStatement() 

+

2377 pass 

+

2378 

+

2379 elif la_ == 8: 

+

2380 self.enterOuterAlt(localctx, 8) 

+

2381 self.state = 624 

+

2382 localctx.generateStatement = self.rule_GenerateStatement() 

+

2383 pass 

+

2384 

+

2385 

+

2386 except RecognitionException as re: 

+

2387 localctx.exception = re 

+

2388 self._errHandler.reportError(self, re) 

+

2389 self._errHandler.recover(self, re) 

+

2390 finally: 

+

2391 self.exitRule() 

+

2392 return localctx 

+

2393 

+

2394 class Rule_ArrayConstraintContext(ParserRuleContext): 

+

2395 __slots__ = 'parser' 

+

2396 

+

2397 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

2398 super().__init__(parent, invokingState) 

+

2399 self.parser = parser 

+

2400 

+

2401 def rule_IndexConstraint(self): 

+

2402 return self.getTypedRuleContext(VHDLParser.Rule_IndexConstraintContext, 0) 

+

2403 

+

2404 def rule_ElementConstraint(self): 

+

2405 return self.getTypedRuleContext(VHDLParser.Rule_ElementConstraintContext, 0) 

+

2406 

+

2407 def TOK_LP(self): 

+

2408 return self.getToken(VHDLParser.TOK_LP, 0) 

+

2409 

+

2410 def KW_OPEN(self): 

+

2411 return self.getToken(VHDLParser.KW_OPEN, 0) 

+

2412 

+

2413 def TOK_RP(self): 

+

2414 return self.getToken(VHDLParser.TOK_RP, 0) 

+

2415 

+

2416 def getRuleIndex(self): 

+

2417 return VHDLParser.RULE_rule_ArrayConstraint 

+

2418 

+

2419 def accept(self, visitor: ParseTreeVisitor): 

+

2420 if hasattr(visitor, "visitRule_ArrayConstraint"): 

+

2421 return visitor.visitRule_ArrayConstraint(self) 

+

2422 else: 

+

2423 return visitor.visitChildren(self) 

+

2424 

+

2425 def rule_ArrayConstraint(self): 

+

2426 

+

2427 localctx = VHDLParser.Rule_ArrayConstraintContext(self, self._ctx, self.state) 

+

2428 self.enterRule(localctx, 24, self.RULE_rule_ArrayConstraint) 

+

2429 try: 

+

2430 self.state = 637 

+

2431 self._errHandler.sync(self) 

+

2432 la_ = self._interp.adaptivePredict(self._input, 18, self._ctx) 

+

2433 if la_ == 1: 

+

2434 self.enterOuterAlt(localctx, 1) 

+

2435 self.state = 627 

+

2436 self.rule_IndexConstraint() 

+

2437 self.state = 629 

+

2438 self._errHandler.sync(self) 

+

2439 la_ = self._interp.adaptivePredict(self._input, 16, self._ctx) 

+

2440 if la_ == 1: 

+

2441 self.state = 628 

+

2442 self.rule_ElementConstraint() 

+

2443 

+

2444 pass 

+

2445 

+

2446 elif la_ == 2: 

+

2447 self.enterOuterAlt(localctx, 2) 

+

2448 self.state = 631 

+

2449 self.match(VHDLParser.TOK_LP) 

+

2450 self.state = 632 

+

2451 self.match(VHDLParser.KW_OPEN) 

+

2452 self.state = 633 

+

2453 self.match(VHDLParser.TOK_RP) 

+

2454 self.state = 635 

+

2455 self._errHandler.sync(self) 

+

2456 la_ = self._interp.adaptivePredict(self._input, 17, self._ctx) 

+

2457 if la_ == 1: 

+

2458 self.state = 634 

+

2459 self.rule_ElementConstraint() 

+

2460 

+

2461 pass 

+

2462 

+

2463 

+

2464 except RecognitionException as re: 

+

2465 localctx.exception = re 

+

2466 self._errHandler.reportError(self, re) 

+

2467 self._errHandler.recover(self, re) 

+

2468 finally: 

+

2469 self.exitRule() 

+

2470 return localctx 

+

2471 

+

2472 class Rule_ArrayIncompleteTypeDefinitionContext(ParserRuleContext): 

+

2473 __slots__ = 'parser' 

+

2474 

+

2475 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

2476 super().__init__(parent, invokingState) 

+

2477 self.parser = parser 

+

2478 

+

2479 def KW_ARRAY(self): 

+

2480 return self.getToken(VHDLParser.KW_ARRAY, 0) 

+

2481 

+

2482 def TOK_LP(self): 

+

2483 return self.getToken(VHDLParser.TOK_LP, 0) 

+

2484 

+

2485 def rule_ArrayIndexIncompleteTypeList(self): 

+

2486 return self.getTypedRuleContext(VHDLParser.Rule_ArrayIndexIncompleteTypeListContext, 0) 

+

2487 

+

2488 def TOK_RP(self): 

+

2489 return self.getToken(VHDLParser.TOK_RP, 0) 

+

2490 

+

2491 def KW_OF(self): 

+

2492 return self.getToken(VHDLParser.KW_OF, 0) 

+

2493 

+

2494 def rule_IncompleteSubtypeIndication(self): 

+

2495 return self.getTypedRuleContext(VHDLParser.Rule_IncompleteSubtypeIndicationContext, 0) 

+

2496 

+

2497 def getRuleIndex(self): 

+

2498 return VHDLParser.RULE_rule_ArrayIncompleteTypeDefinition 

+

2499 

+

2500 def accept(self, visitor: ParseTreeVisitor): 

+

2501 if hasattr(visitor, "visitRule_ArrayIncompleteTypeDefinition"): 

+

2502 return visitor.visitRule_ArrayIncompleteTypeDefinition(self) 

+

2503 else: 

+

2504 return visitor.visitChildren(self) 

+

2505 

+

2506 def rule_ArrayIncompleteTypeDefinition(self): 

+

2507 

+

2508 localctx = VHDLParser.Rule_ArrayIncompleteTypeDefinitionContext(self, self._ctx, self.state) 

+

2509 self.enterRule(localctx, 26, self.RULE_rule_ArrayIncompleteTypeDefinition) 

+

2510 try: 

+

2511 self.enterOuterAlt(localctx, 1) 

+

2512 self.state = 639 

+

2513 self.match(VHDLParser.KW_ARRAY) 

+

2514 self.state = 640 

+

2515 self.match(VHDLParser.TOK_LP) 

+

2516 self.state = 641 

+

2517 self.rule_ArrayIndexIncompleteTypeList() 

+

2518 self.state = 642 

+

2519 self.match(VHDLParser.TOK_RP) 

+

2520 self.state = 643 

+

2521 self.match(VHDLParser.KW_OF) 

+

2522 self.state = 644 

+

2523 self.rule_IncompleteSubtypeIndication() 

+

2524 except RecognitionException as re: 

+

2525 localctx.exception = re 

+

2526 self._errHandler.reportError(self, re) 

+

2527 self._errHandler.recover(self, re) 

+

2528 finally: 

+

2529 self.exitRule() 

+

2530 return localctx 

+

2531 

+

2532 class Rule_ArrayIndexIncompleteTypeContext(ParserRuleContext): 

+

2533 __slots__ = 'parser' 

+

2534 

+

2535 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

2536 super().__init__(parent, invokingState) 

+

2537 self.parser = parser 

+

2538 

+

2539 def rule_IndexSubtypeDefinition(self): 

+

2540 return self.getTypedRuleContext(VHDLParser.Rule_IndexSubtypeDefinitionContext, 0) 

+

2541 

+

2542 def rule_IndexConstraint(self): 

+

2543 return self.getTypedRuleContext(VHDLParser.Rule_IndexConstraintContext, 0) 

+

2544 

+

2545 def rule_UnspecifiedTypeIndication(self): 

+

2546 return self.getTypedRuleContext(VHDLParser.Rule_UnspecifiedTypeIndicationContext, 0) 

+

2547 

+

2548 def getRuleIndex(self): 

+

2549 return VHDLParser.RULE_rule_ArrayIndexIncompleteType 

+

2550 

+

2551 def accept(self, visitor: ParseTreeVisitor): 

+

2552 if hasattr(visitor, "visitRule_ArrayIndexIncompleteType"): 

+

2553 return visitor.visitRule_ArrayIndexIncompleteType(self) 

+

2554 else: 

+

2555 return visitor.visitChildren(self) 

+

2556 

+

2557 def rule_ArrayIndexIncompleteType(self): 

+

2558 

+

2559 localctx = VHDLParser.Rule_ArrayIndexIncompleteTypeContext(self, self._ctx, self.state) 

+

2560 self.enterRule(localctx, 28, self.RULE_rule_ArrayIndexIncompleteType) 

+

2561 try: 

+

2562 self.state = 649 

+

2563 self._errHandler.sync(self) 

+

2564 token = self._input.LA(1) 

+

2565 if token in [147, 161, 162, 163]: 

+

2566 self.enterOuterAlt(localctx, 1) 

+

2567 self.state = 646 

+

2568 self.rule_IndexSubtypeDefinition() 

+

2569 pass 

+

2570 elif token in [143]: 

+

2571 self.enterOuterAlt(localctx, 2) 

+

2572 self.state = 647 

+

2573 self.rule_IndexConstraint() 

+

2574 pass 

+

2575 elif token in [104]: 

+

2576 self.enterOuterAlt(localctx, 3) 

+

2577 self.state = 648 

+

2578 self.rule_UnspecifiedTypeIndication() 

+

2579 pass 

+

2580 else: 

+

2581 raise NoViableAltException(self) 

+

2582 

+

2583 except RecognitionException as re: 

+

2584 localctx.exception = re 

+

2585 self._errHandler.reportError(self, re) 

+

2586 self._errHandler.recover(self, re) 

+

2587 finally: 

+

2588 self.exitRule() 

+

2589 return localctx 

+

2590 

+

2591 class Rule_ArrayIndexIncompleteTypeListContext(ParserRuleContext): 

+

2592 __slots__ = 'parser' 

+

2593 

+

2594 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

2595 super().__init__(parent, invokingState) 

+

2596 self.parser = parser 

+

2597 

+

2598 def rule_ArrayIndexIncompleteType(self, i: int = None): 

+

2599 if i is None: 

+

2600 return self.getTypedRuleContexts(VHDLParser.Rule_ArrayIndexIncompleteTypeContext) 

+

2601 else: 

+

2602 return self.getTypedRuleContext(VHDLParser.Rule_ArrayIndexIncompleteTypeContext, i) 

+

2603 

+

2604 def TOK_COMMA(self, i: int = None): 

+

2605 if i is None: 

+

2606 return self.getTokens(VHDLParser.TOK_COMMA) 

+

2607 else: 

+

2608 return self.getToken(VHDLParser.TOK_COMMA, i) 

+

2609 

+

2610 def getRuleIndex(self): 

+

2611 return VHDLParser.RULE_rule_ArrayIndexIncompleteTypeList 

+

2612 

+

2613 def accept(self, visitor: ParseTreeVisitor): 

+

2614 if hasattr(visitor, "visitRule_ArrayIndexIncompleteTypeList"): 

+

2615 return visitor.visitRule_ArrayIndexIncompleteTypeList(self) 

+

2616 else: 

+

2617 return visitor.visitChildren(self) 

+

2618 

+

2619 def rule_ArrayIndexIncompleteTypeList(self): 

+

2620 

+

2621 localctx = VHDLParser.Rule_ArrayIndexIncompleteTypeListContext(self, self._ctx, self.state) 

+

2622 self.enterRule(localctx, 30, self.RULE_rule_ArrayIndexIncompleteTypeList) 

+

2623 self._la = 0 # Token type 

+

2624 try: 

+

2625 self.enterOuterAlt(localctx, 1) 

+

2626 self.state = 651 

+

2627 self.rule_ArrayIndexIncompleteType() 

+

2628 self.state = 656 

+

2629 self._errHandler.sync(self) 

+

2630 _la = self._input.LA(1) 

+

2631 while _la == 151: 

+

2632 self.state = 652 

+

2633 self.match(VHDLParser.TOK_COMMA) 

+

2634 self.state = 653 

+

2635 self.rule_ArrayIndexIncompleteType() 

+

2636 self.state = 658 

+

2637 self._errHandler.sync(self) 

+

2638 _la = self._input.LA(1) 

+

2639 

+

2640 except RecognitionException as re: 

+

2641 localctx.exception = re 

+

2642 self._errHandler.reportError(self, re) 

+

2643 self._errHandler.recover(self, re) 

+

2644 finally: 

+

2645 self.exitRule() 

+

2646 return localctx 

+

2647 

+

2648 class Rule_ArrayModeViewIndicationContext(ParserRuleContext): 

+

2649 __slots__ = 'parser' 

+

2650 

+

2651 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

2652 super().__init__(parent, invokingState) 

+

2653 self.parser = parser 

+

2654 

+

2655 def KW_VIEW(self): 

+

2656 return self.getToken(VHDLParser.KW_VIEW, 0) 

+

2657 

+

2658 def TOK_LP(self): 

+

2659 return self.getToken(VHDLParser.TOK_LP, 0) 

+

2660 

+

2661 def rule_Name(self): 

+

2662 return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0) 

+

2663 

+

2664 def TOK_RP(self): 

+

2665 return self.getToken(VHDLParser.TOK_RP, 0) 

+

2666 

+

2667 def KW_OF(self): 

+

2668 return self.getToken(VHDLParser.KW_OF, 0) 

+

2669 

+

2670 def rule_SubtypeIndication(self): 

+

2671 return self.getTypedRuleContext(VHDLParser.Rule_SubtypeIndicationContext, 0) 

+

2672 

+

2673 def getRuleIndex(self): 

+

2674 return VHDLParser.RULE_rule_ArrayModeViewIndication 

+

2675 

+

2676 def accept(self, visitor: ParseTreeVisitor): 

+

2677 if hasattr(visitor, "visitRule_ArrayModeViewIndication"): 

+

2678 return visitor.visitRule_ArrayModeViewIndication(self) 

+

2679 else: 

+

2680 return visitor.visitChildren(self) 

+

2681 

+

2682 def rule_ArrayModeViewIndication(self): 

+

2683 

+

2684 localctx = VHDLParser.Rule_ArrayModeViewIndicationContext(self, self._ctx, self.state) 

+

2685 self.enterRule(localctx, 32, self.RULE_rule_ArrayModeViewIndication) 

+

2686 self._la = 0 # Token type 

+

2687 try: 

+

2688 self.enterOuterAlt(localctx, 1) 

+

2689 self.state = 659 

+

2690 self.match(VHDLParser.KW_VIEW) 

+

2691 self.state = 660 

+

2692 self.match(VHDLParser.TOK_LP) 

+

2693 self.state = 661 

+

2694 self.rule_Name(0) 

+

2695 self.state = 662 

+

2696 self.match(VHDLParser.TOK_RP) 

+

2697 self.state = 665 

+

2698 self._errHandler.sync(self) 

+

2699 _la = self._input.LA(1) 

+

2700 if _la == 64: 

+

2701 self.state = 663 

+

2702 self.match(VHDLParser.KW_OF) 

+

2703 self.state = 664 

+

2704 self.rule_SubtypeIndication() 

+

2705 

+

2706 

+

2707 except RecognitionException as re: 

+

2708 localctx.exception = re 

+

2709 self._errHandler.reportError(self, re) 

+

2710 self._errHandler.recover(self, re) 

+

2711 finally: 

+

2712 self.exitRule() 

+

2713 return localctx 

+

2714 

+

2715 class Rule_AssertionContext(ParserRuleContext): 

+

2716 __slots__ = 'parser' 

+

2717 

+

2718 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

2719 super().__init__(parent, invokingState) 

+

2720 self.parser = parser 

+

2721 self.assertCondition = None # Rule_ExpressionContext 

+

2722 self.reportExpression = None # Rule_ExpressionContext 

+

2723 self.severityExpression = None # Rule_ExpressionContext 

+

2724 

+

2725 def KW_ASSERT(self): 

+

2726 return self.getToken(VHDLParser.KW_ASSERT, 0) 

+

2727 

+

2728 def rule_Expression(self, i: int = None): 

+

2729 if i is None: 

+

2730 return self.getTypedRuleContexts(VHDLParser.Rule_ExpressionContext) 

+

2731 else: 

+

2732 return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, i) 

+

2733 

+

2734 def KW_REPORT(self): 

+

2735 return self.getToken(VHDLParser.KW_REPORT, 0) 

+

2736 

+

2737 def KW_SEVERITY(self): 

+

2738 return self.getToken(VHDLParser.KW_SEVERITY, 0) 

+

2739 

+

2740 def getRuleIndex(self): 

+

2741 return VHDLParser.RULE_rule_Assertion 

+

2742 

+

2743 def accept(self, visitor: ParseTreeVisitor): 

+

2744 if hasattr(visitor, "visitRule_Assertion"): 

+

2745 return visitor.visitRule_Assertion(self) 

+

2746 else: 

+

2747 return visitor.visitChildren(self) 

+

2748 

+

2749 def rule_Assertion(self): 

+

2750 

+

2751 localctx = VHDLParser.Rule_AssertionContext(self, self._ctx, self.state) 

+

2752 self.enterRule(localctx, 34, self.RULE_rule_Assertion) 

+

2753 self._la = 0 # Token type 

+

2754 try: 

+

2755 self.enterOuterAlt(localctx, 1) 

+

2756 self.state = 667 

+

2757 self.match(VHDLParser.KW_ASSERT) 

+

2758 self.state = 668 

+

2759 localctx.assertCondition = self.rule_Expression(0) 

+

2760 self.state = 671 

+

2761 self._errHandler.sync(self) 

+

2762 _la = self._input.LA(1) 

+

2763 if _la == 85: 

+

2764 self.state = 669 

+

2765 self.match(VHDLParser.KW_REPORT) 

+

2766 self.state = 670 

+

2767 localctx.reportExpression = self.rule_Expression(0) 

+

2768 

+

2769 self.state = 675 

+

2770 self._errHandler.sync(self) 

+

2771 _la = self._input.LA(1) 

+

2772 if _la == 91: 

+

2773 self.state = 673 

+

2774 self.match(VHDLParser.KW_SEVERITY) 

+

2775 self.state = 674 

+

2776 localctx.severityExpression = self.rule_Expression(0) 

+

2777 

+

2778 

+

2779 except RecognitionException as re: 

+

2780 localctx.exception = re 

+

2781 self._errHandler.reportError(self, re) 

+

2782 self._errHandler.recover(self, re) 

+

2783 finally: 

+

2784 self.exitRule() 

+

2785 return localctx 

+

2786 

+

2787 class Rule_AssertionStatementContext(ParserRuleContext): 

+

2788 __slots__ = 'parser' 

+

2789 

+

2790 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

2791 super().__init__(parent, invokingState) 

+

2792 self.parser = parser 

+

2793 self.label = None # Token 

+

2794 self.assertion = None # Rule_AssertionContext 

+

2795 

+

2796 def TOK_SEMICOL(self): 

+

2797 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

2798 

+

2799 def rule_Assertion(self): 

+

2800 return self.getTypedRuleContext(VHDLParser.Rule_AssertionContext, 0) 

+

2801 

+

2802 def TOK_COLON(self): 

+

2803 return self.getToken(VHDLParser.TOK_COLON, 0) 

+

2804 

+

2805 def LIT_IDENTIFIER(self): 

+

2806 return self.getToken(VHDLParser.LIT_IDENTIFIER, 0) 

+

2807 

+

2808 def getRuleIndex(self): 

+

2809 return VHDLParser.RULE_rule_AssertionStatement 

+

2810 

+

2811 def accept(self, visitor: ParseTreeVisitor): 

+

2812 if hasattr(visitor, "visitRule_AssertionStatement"): 

+

2813 return visitor.visitRule_AssertionStatement(self) 

+

2814 else: 

+

2815 return visitor.visitChildren(self) 

+

2816 

+

2817 def rule_AssertionStatement(self): 

+

2818 

+

2819 localctx = VHDLParser.Rule_AssertionStatementContext(self, self._ctx, self.state) 

+

2820 self.enterRule(localctx, 36, self.RULE_rule_AssertionStatement) 

+

2821 self._la = 0 # Token type 

+

2822 try: 

+

2823 self.enterOuterAlt(localctx, 1) 

+

2824 self.state = 679 

+

2825 self._errHandler.sync(self) 

+

2826 _la = self._input.LA(1) 

+

2827 if _la == 163: 

+

2828 self.state = 677 

+

2829 localctx.label = self.match(VHDLParser.LIT_IDENTIFIER) 

+

2830 self.state = 678 

+

2831 self.match(VHDLParser.TOK_COLON) 

+

2832 

+

2833 self.state = 681 

+

2834 localctx.assertion = self.rule_Assertion() 

+

2835 self.state = 682 

+

2836 self.match(VHDLParser.TOK_SEMICOL) 

+

2837 except RecognitionException as re: 

+

2838 localctx.exception = re 

+

2839 self._errHandler.reportError(self, re) 

+

2840 self._errHandler.recover(self, re) 

+

2841 finally: 

+

2842 self.exitRule() 

+

2843 return localctx 

+

2844 

+

2845 class Rule_AssociationElementContext(ParserRuleContext): 

+

2846 __slots__ = 'parser' 

+

2847 

+

2848 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

2849 super().__init__(parent, invokingState) 

+

2850 self.parser = parser 

+

2851 self.formal = None # Rule_FormalPartContext 

+

2852 self.actual = None # Rule_ActualPartContext 

+

2853 

+

2854 def rule_ActualPart(self): 

+

2855 return self.getTypedRuleContext(VHDLParser.Rule_ActualPartContext, 0) 

+

2856 

+

2857 def TOK_RARROW(self): 

+

2858 return self.getToken(VHDLParser.TOK_RARROW, 0) 

+

2859 

+

2860 def rule_FormalPart(self): 

+

2861 return self.getTypedRuleContext(VHDLParser.Rule_FormalPartContext, 0) 

+

2862 

+

2863 def getRuleIndex(self): 

+

2864 return VHDLParser.RULE_rule_AssociationElement 

+

2865 

+

2866 def accept(self, visitor: ParseTreeVisitor): 

+

2867 if hasattr(visitor, "visitRule_AssociationElement"): 

+

2868 return visitor.visitRule_AssociationElement(self) 

+

2869 else: 

+

2870 return visitor.visitChildren(self) 

+

2871 

+

2872 def rule_AssociationElement(self): 

+

2873 

+

2874 localctx = VHDLParser.Rule_AssociationElementContext(self, self._ctx, self.state) 

+

2875 self.enterRule(localctx, 38, self.RULE_rule_AssociationElement) 

+

2876 try: 

+

2877 self.enterOuterAlt(localctx, 1) 

+

2878 self.state = 687 

+

2879 self._errHandler.sync(self) 

+

2880 la_ = self._interp.adaptivePredict(self._input, 25, self._ctx) 

+

2881 if la_ == 1: 

+

2882 self.state = 684 

+

2883 localctx.formal = self.rule_FormalPart() 

+

2884 self.state = 685 

+

2885 self.match(VHDLParser.TOK_RARROW) 

+

2886 

+

2887 self.state = 689 

+

2888 localctx.actual = self.rule_ActualPart() 

+

2889 except RecognitionException as re: 

+

2890 localctx.exception = re 

+

2891 self._errHandler.reportError(self, re) 

+

2892 self._errHandler.recover(self, re) 

+

2893 finally: 

+

2894 self.exitRule() 

+

2895 return localctx 

+

2896 

+

2897 class Rule_AssociationListContext(ParserRuleContext): 

+

2898 __slots__ = 'parser' 

+

2899 

+

2900 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

2901 super().__init__(parent, invokingState) 

+

2902 self.parser = parser 

+

2903 self._rule_AssociationElement = None # Rule_AssociationElementContext 

+

2904 self.element = list() # of Rule_AssociationElementContexts 

+

2905 

+

2906 def rule_AssociationElement(self, i: int = None): 

+

2907 if i is None: 

+

2908 return self.getTypedRuleContexts(VHDLParser.Rule_AssociationElementContext) 

+

2909 else: 

+

2910 return self.getTypedRuleContext(VHDLParser.Rule_AssociationElementContext, i) 

+

2911 

+

2912 def TOK_COMMA(self, i: int = None): 

+

2913 if i is None: 

+

2914 return self.getTokens(VHDLParser.TOK_COMMA) 

+

2915 else: 

+

2916 return self.getToken(VHDLParser.TOK_COMMA, i) 

+

2917 

+

2918 def getRuleIndex(self): 

+

2919 return VHDLParser.RULE_rule_AssociationList 

+

2920 

+

2921 def accept(self, visitor: ParseTreeVisitor): 

+

2922 if hasattr(visitor, "visitRule_AssociationList"): 

+

2923 return visitor.visitRule_AssociationList(self) 

+

2924 else: 

+

2925 return visitor.visitChildren(self) 

+

2926 

+

2927 def rule_AssociationList(self): 

+

2928 

+

2929 localctx = VHDLParser.Rule_AssociationListContext(self, self._ctx, self.state) 

+

2930 self.enterRule(localctx, 40, self.RULE_rule_AssociationList) 

+

2931 self._la = 0 # Token type 

+

2932 try: 

+

2933 self.enterOuterAlt(localctx, 1) 

+

2934 self.state = 691 

+

2935 localctx._rule_AssociationElement = self.rule_AssociationElement() 

+

2936 localctx.element.append(localctx._rule_AssociationElement) 

+

2937 self.state = 696 

+

2938 self._errHandler.sync(self) 

+

2939 _la = self._input.LA(1) 

+

2940 while _la == 151: 

+

2941 self.state = 692 

+

2942 self.match(VHDLParser.TOK_COMMA) 

+

2943 self.state = 693 

+

2944 localctx._rule_AssociationElement = self.rule_AssociationElement() 

+

2945 localctx.element.append(localctx._rule_AssociationElement) 

+

2946 self.state = 698 

+

2947 self._errHandler.sync(self) 

+

2948 _la = self._input.LA(1) 

+

2949 

+

2950 except RecognitionException as re: 

+

2951 localctx.exception = re 

+

2952 self._errHandler.reportError(self, re) 

+

2953 self._errHandler.recover(self, re) 

+

2954 finally: 

+

2955 self.exitRule() 

+

2956 return localctx 

+

2957 

+

2958 class Rule_AttributeDeclarationContext(ParserRuleContext): 

+

2959 __slots__ = 'parser' 

+

2960 

+

2961 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

2962 super().__init__(parent, invokingState) 

+

2963 self.parser = parser 

+

2964 self.label = None # Token 

+

2965 self.name = None # Rule_NameContext 

+

2966 

+

2967 def KW_ATTRIBUTE(self): 

+

2968 return self.getToken(VHDLParser.KW_ATTRIBUTE, 0) 

+

2969 

+

2970 def TOK_COLON(self): 

+

2971 return self.getToken(VHDLParser.TOK_COLON, 0) 

+

2972 

+

2973 def TOK_SEMICOL(self): 

+

2974 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

2975 

+

2976 def LIT_IDENTIFIER(self): 

+

2977 return self.getToken(VHDLParser.LIT_IDENTIFIER, 0) 

+

2978 

+

2979 def rule_Name(self): 

+

2980 return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0) 

+

2981 

+

2982 def getRuleIndex(self): 

+

2983 return VHDLParser.RULE_rule_AttributeDeclaration 

+

2984 

+

2985 def accept(self, visitor: ParseTreeVisitor): 

+

2986 if hasattr(visitor, "visitRule_AttributeDeclaration"): 

+

2987 return visitor.visitRule_AttributeDeclaration(self) 

+

2988 else: 

+

2989 return visitor.visitChildren(self) 

+

2990 

+

2991 def rule_AttributeDeclaration(self): 

+

2992 

+

2993 localctx = VHDLParser.Rule_AttributeDeclarationContext(self, self._ctx, self.state) 

+

2994 self.enterRule(localctx, 42, self.RULE_rule_AttributeDeclaration) 

+

2995 try: 

+

2996 self.enterOuterAlt(localctx, 1) 

+

2997 self.state = 699 

+

2998 self.match(VHDLParser.KW_ATTRIBUTE) 

+

2999 self.state = 700 

+

3000 localctx.label = self.match(VHDLParser.LIT_IDENTIFIER) 

+

3001 self.state = 701 

+

3002 self.match(VHDLParser.TOK_COLON) 

+

3003 self.state = 702 

+

3004 localctx.name = self.rule_Name(0) 

+

3005 self.state = 703 

+

3006 self.match(VHDLParser.TOK_SEMICOL) 

+

3007 except RecognitionException as re: 

+

3008 localctx.exception = re 

+

3009 self._errHandler.reportError(self, re) 

+

3010 self._errHandler.recover(self, re) 

+

3011 finally: 

+

3012 self.exitRule() 

+

3013 return localctx 

+

3014 

+

3015 class Rule_AttributeDesignatorContext(ParserRuleContext): 

+

3016 __slots__ = 'parser' 

+

3017 

+

3018 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

3019 super().__init__(parent, invokingState) 

+

3020 self.parser = parser 

+

3021 

+

3022 def KW_RANGE(self): 

+

3023 return self.getToken(VHDLParser.KW_RANGE, 0) 

+

3024 

+

3025 def KW_RECORD(self): 

+

3026 return self.getToken(VHDLParser.KW_RECORD, 0) 

+

3027 

+

3028 def KW_SIGNAL(self): 

+

3029 return self.getToken(VHDLParser.KW_SIGNAL, 0) 

+

3030 

+

3031 def KW_SUBTYPE(self): 

+

3032 return self.getToken(VHDLParser.KW_SUBTYPE, 0) 

+

3033 

+

3034 def LIT_IDENTIFIER(self): 

+

3035 return self.getToken(VHDLParser.LIT_IDENTIFIER, 0) 

+

3036 

+

3037 def getRuleIndex(self): 

+

3038 return VHDLParser.RULE_rule_AttributeDesignator 

+

3039 

+

3040 def accept(self, visitor: ParseTreeVisitor): 

+

3041 if hasattr(visitor, "visitRule_AttributeDesignator"): 

+

3042 return visitor.visitRule_AttributeDesignator(self) 

+

3043 else: 

+

3044 return visitor.visitChildren(self) 

+

3045 

+

3046 def rule_AttributeDesignator(self): 

+

3047 

+

3048 localctx = VHDLParser.Rule_AttributeDesignatorContext(self, self._ctx, self.state) 

+

3049 self.enterRule(localctx, 44, self.RULE_rule_AttributeDesignator) 

+

3050 self._la = 0 # Token type 

+

3051 try: 

+

3052 self.enterOuterAlt(localctx, 1) 

+

3053 self.state = 705 

+

3054 _la = self._input.LA(1) 

+

3055 if not (((((_la - 79)) & ~0x3f) == 0 and ((1 << (_la - 79)) & 540675) != 0) or _la == 163): 

+

3056 self._errHandler.recoverInline(self) 

+

3057 else: 

+

3058 self._errHandler.reportMatch(self) 

+

3059 self.consume() 

+

3060 except RecognitionException as re: 

+

3061 localctx.exception = re 

+

3062 self._errHandler.reportError(self, re) 

+

3063 self._errHandler.recover(self, re) 

+

3064 finally: 

+

3065 self.exitRule() 

+

3066 return localctx 

+

3067 

+

3068 class Rule_AttributeSpecificationContext(ParserRuleContext): 

+

3069 __slots__ = 'parser' 

+

3070 

+

3071 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

3072 super().__init__(parent, invokingState) 

+

3073 self.parser = parser 

+

3074 self.designator = None # Token 

+

3075 self.entitySpecification = None # Rule_EntitySpecificationContext 

+

3076 self.expression = None # Rule_ConditionalExpressionContext 

+

3077 

+

3078 def KW_ATTRIBUTE(self): 

+

3079 return self.getToken(VHDLParser.KW_ATTRIBUTE, 0) 

+

3080 

+

3081 def KW_OF(self): 

+

3082 return self.getToken(VHDLParser.KW_OF, 0) 

+

3083 

+

3084 def KW_IS(self): 

+

3085 return self.getToken(VHDLParser.KW_IS, 0) 

+

3086 

+

3087 def TOK_SEMICOL(self): 

+

3088 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

3089 

+

3090 def LIT_IDENTIFIER(self): 

+

3091 return self.getToken(VHDLParser.LIT_IDENTIFIER, 0) 

+

3092 

+

3093 def rule_EntitySpecification(self): 

+

3094 return self.getTypedRuleContext(VHDLParser.Rule_EntitySpecificationContext, 0) 

+

3095 

+

3096 def rule_ConditionalExpression(self): 

+

3097 return self.getTypedRuleContext(VHDLParser.Rule_ConditionalExpressionContext, 0) 

+

3098 

+

3099 def getRuleIndex(self): 

+

3100 return VHDLParser.RULE_rule_AttributeSpecification 

+

3101 

+

3102 def accept(self, visitor: ParseTreeVisitor): 

+

3103 if hasattr(visitor, "visitRule_AttributeSpecification"): 

+

3104 return visitor.visitRule_AttributeSpecification(self) 

+

3105 else: 

+

3106 return visitor.visitChildren(self) 

+

3107 

+

3108 def rule_AttributeSpecification(self): 

+

3109 

+

3110 localctx = VHDLParser.Rule_AttributeSpecificationContext(self, self._ctx, self.state) 

+

3111 self.enterRule(localctx, 46, self.RULE_rule_AttributeSpecification) 

+

3112 try: 

+

3113 self.enterOuterAlt(localctx, 1) 

+

3114 self.state = 707 

+

3115 self.match(VHDLParser.KW_ATTRIBUTE) 

+

3116 self.state = 708 

+

3117 localctx.designator = self.match(VHDLParser.LIT_IDENTIFIER) 

+

3118 self.state = 709 

+

3119 self.match(VHDLParser.KW_OF) 

+

3120 self.state = 710 

+

3121 localctx.entitySpecification = self.rule_EntitySpecification() 

+

3122 self.state = 711 

+

3123 self.match(VHDLParser.KW_IS) 

+

3124 self.state = 712 

+

3125 localctx.expression = self.rule_ConditionalExpression() 

+

3126 self.state = 713 

+

3127 self.match(VHDLParser.TOK_SEMICOL) 

+

3128 except RecognitionException as re: 

+

3129 localctx.exception = re 

+

3130 self._errHandler.reportError(self, re) 

+

3131 self._errHandler.recover(self, re) 

+

3132 finally: 

+

3133 self.exitRule() 

+

3134 return localctx 

+

3135 

+

3136 class Rule_BindingIndicationContext(ParserRuleContext): 

+

3137 __slots__ = 'parser' 

+

3138 

+

3139 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

3140 super().__init__(parent, invokingState) 

+

3141 self.parser = parser 

+

3142 self.entityAspect = None # Rule_EntityAspectContext 

+

3143 self.genericMapAspect = None # Rule_GenericMapAspectContext 

+

3144 self.portMapAspect = None # Rule_PortMapAspectContext 

+

3145 

+

3146 def KW_USE(self): 

+

3147 return self.getToken(VHDLParser.KW_USE, 0) 

+

3148 

+

3149 def rule_EntityAspect(self): 

+

3150 return self.getTypedRuleContext(VHDLParser.Rule_EntityAspectContext, 0) 

+

3151 

+

3152 def rule_GenericMapAspect(self): 

+

3153 return self.getTypedRuleContext(VHDLParser.Rule_GenericMapAspectContext, 0) 

+

3154 

+

3155 def rule_PortMapAspect(self): 

+

3156 return self.getTypedRuleContext(VHDLParser.Rule_PortMapAspectContext, 0) 

+

3157 

+

3158 def getRuleIndex(self): 

+

3159 return VHDLParser.RULE_rule_BindingIndication 

+

3160 

+

3161 def accept(self, visitor: ParseTreeVisitor): 

+

3162 if hasattr(visitor, "visitRule_BindingIndication"): 

+

3163 return visitor.visitRule_BindingIndication(self) 

+

3164 else: 

+

3165 return visitor.visitChildren(self) 

+

3166 

+

3167 def rule_BindingIndication(self): 

+

3168 

+

3169 localctx = VHDLParser.Rule_BindingIndicationContext(self, self._ctx, self.state) 

+

3170 self.enterRule(localctx, 48, self.RULE_rule_BindingIndication) 

+

3171 self._la = 0 # Token type 

+

3172 try: 

+

3173 self.enterOuterAlt(localctx, 1) 

+

3174 self.state = 717 

+

3175 self._errHandler.sync(self) 

+

3176 _la = self._input.LA(1) 

+

3177 if _la == 108: 

+

3178 self.state = 715 

+

3179 self.match(VHDLParser.KW_USE) 

+

3180 self.state = 716 

+

3181 localctx.entityAspect = self.rule_EntityAspect() 

+

3182 

+

3183 self.state = 720 

+

3184 self._errHandler.sync(self) 

+

3185 _la = self._input.LA(1) 

+

3186 if _la == 42: 

+

3187 self.state = 719 

+

3188 localctx.genericMapAspect = self.rule_GenericMapAspect() 

+

3189 

+

3190 self.state = 723 

+

3191 self._errHandler.sync(self) 

+

3192 _la = self._input.LA(1) 

+

3193 if _la == 72: 

+

3194 self.state = 722 

+

3195 localctx.portMapAspect = self.rule_PortMapAspect() 

+

3196 

+

3197 

+

3198 except RecognitionException as re: 

+

3199 localctx.exception = re 

+

3200 self._errHandler.reportError(self, re) 

+

3201 self._errHandler.recover(self, re) 

+

3202 finally: 

+

3203 self.exitRule() 

+

3204 return localctx 

+

3205 

+

3206 class Rule_BlockConfigurationContext(ParserRuleContext): 

+

3207 __slots__ = 'parser' 

+

3208 

+

3209 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

3210 super().__init__(parent, invokingState) 

+

3211 self.parser = parser 

+

3212 self.blockSpecification = None # Rule_BlockSpecificationContext 

+

3213 self._rule_UseClause = None # Rule_UseClauseContext 

+

3214 self.useClauses = list() # of Rule_UseClauseContexts 

+

3215 self._rule_ConfigurationItem = None # Rule_ConfigurationItemContext 

+

3216 self.configurationItems = list() # of Rule_ConfigurationItemContexts 

+

3217 

+

3218 def KW_FOR(self, i: int = None): 

+

3219 if i is None: 

+

3220 return self.getTokens(VHDLParser.KW_FOR) 

+

3221 else: 

+

3222 return self.getToken(VHDLParser.KW_FOR, i) 

+

3223 

+

3224 def KW_END(self): 

+

3225 return self.getToken(VHDLParser.KW_END, 0) 

+

3226 

+

3227 def TOK_SEMICOL(self): 

+

3228 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

3229 

+

3230 def rule_BlockSpecification(self): 

+

3231 return self.getTypedRuleContext(VHDLParser.Rule_BlockSpecificationContext, 0) 

+

3232 

+

3233 def rule_UseClause(self, i: int = None): 

+

3234 if i is None: 

+

3235 return self.getTypedRuleContexts(VHDLParser.Rule_UseClauseContext) 

+

3236 else: 

+

3237 return self.getTypedRuleContext(VHDLParser.Rule_UseClauseContext, i) 

+

3238 

+

3239 def rule_ConfigurationItem(self, i: int = None): 

+

3240 if i is None: 

+

3241 return self.getTypedRuleContexts(VHDLParser.Rule_ConfigurationItemContext) 

+

3242 else: 

+

3243 return self.getTypedRuleContext(VHDLParser.Rule_ConfigurationItemContext, i) 

+

3244 

+

3245 def getRuleIndex(self): 

+

3246 return VHDLParser.RULE_rule_BlockConfiguration 

+

3247 

+

3248 def accept(self, visitor: ParseTreeVisitor): 

+

3249 if hasattr(visitor, "visitRule_BlockConfiguration"): 

+

3250 return visitor.visitRule_BlockConfiguration(self) 

+

3251 else: 

+

3252 return visitor.visitChildren(self) 

+

3253 

+

3254 def rule_BlockConfiguration(self): 

+

3255 

+

3256 localctx = VHDLParser.Rule_BlockConfigurationContext(self, self._ctx, self.state) 

+

3257 self.enterRule(localctx, 50, self.RULE_rule_BlockConfiguration) 

+

3258 self._la = 0 # Token type 

+

3259 try: 

+

3260 self.enterOuterAlt(localctx, 1) 

+

3261 self.state = 725 

+

3262 self.match(VHDLParser.KW_FOR) 

+

3263 self.state = 726 

+

3264 localctx.blockSpecification = self.rule_BlockSpecification() 

+

3265 self.state = 730 

+

3266 self._errHandler.sync(self) 

+

3267 _la = self._input.LA(1) 

+

3268 while _la == 108: 

+

3269 self.state = 727 

+

3270 localctx._rule_UseClause = self.rule_UseClause() 

+

3271 localctx.useClauses.append(localctx._rule_UseClause) 

+

3272 self.state = 732 

+

3273 self._errHandler.sync(self) 

+

3274 _la = self._input.LA(1) 

+

3275 

+

3276 self.state = 736 

+

3277 self._errHandler.sync(self) 

+

3278 _la = self._input.LA(1) 

+

3279 while _la == 37: 

+

3280 self.state = 733 

+

3281 localctx._rule_ConfigurationItem = self.rule_ConfigurationItem() 

+

3282 localctx.configurationItems.append(localctx._rule_ConfigurationItem) 

+

3283 self.state = 738 

+

3284 self._errHandler.sync(self) 

+

3285 _la = self._input.LA(1) 

+

3286 

+

3287 self.state = 739 

+

3288 self.match(VHDLParser.KW_END) 

+

3289 self.state = 740 

+

3290 self.match(VHDLParser.KW_FOR) 

+

3291 self.state = 741 

+

3292 self.match(VHDLParser.TOK_SEMICOL) 

+

3293 except RecognitionException as re: 

+

3294 localctx.exception = re 

+

3295 self._errHandler.reportError(self, re) 

+

3296 self._errHandler.recover(self, re) 

+

3297 finally: 

+

3298 self.exitRule() 

+

3299 return localctx 

+

3300 

+

3301 class Rule_BlockDeclarativeItemContext(ParserRuleContext): 

+

3302 __slots__ = 'parser' 

+

3303 

+

3304 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

3305 super().__init__(parent, invokingState) 

+

3306 self.parser = parser 

+

3307 

+

3308 def rule_SubprogramDeclaration(self): 

+

3309 return self.getTypedRuleContext(VHDLParser.Rule_SubprogramDeclarationContext, 0) 

+

3310 

+

3311 def rule_SubprogramBody(self): 

+

3312 return self.getTypedRuleContext(VHDLParser.Rule_SubprogramBodyContext, 0) 

+

3313 

+

3314 def rule_SubprogramInstantiationDeclaration(self): 

+

3315 return self.getTypedRuleContext(VHDLParser.Rule_SubprogramInstantiationDeclarationContext, 0) 

+

3316 

+

3317 def rule_PackageDeclaration(self): 

+

3318 return self.getTypedRuleContext(VHDLParser.Rule_PackageDeclarationContext, 0) 

+

3319 

+

3320 def rule_PackageBody(self): 

+

3321 return self.getTypedRuleContext(VHDLParser.Rule_PackageBodyContext, 0) 

+

3322 

+

3323 def rule_PackageInstantiationDeclaration(self): 

+

3324 return self.getTypedRuleContext(VHDLParser.Rule_PackageInstantiationDeclarationContext, 0) 

+

3325 

+

3326 def rule_TypeDeclaration(self): 

+

3327 return self.getTypedRuleContext(VHDLParser.Rule_TypeDeclarationContext, 0) 

+

3328 

+

3329 def rule_SubtypeDeclaration(self): 

+

3330 return self.getTypedRuleContext(VHDLParser.Rule_SubtypeDeclarationContext, 0) 

+

3331 

+

3332 def rule_ModeViewDeclaration(self): 

+

3333 return self.getTypedRuleContext(VHDLParser.Rule_ModeViewDeclarationContext, 0) 

+

3334 

+

3335 def rule_ConstantDeclaration(self): 

+

3336 return self.getTypedRuleContext(VHDLParser.Rule_ConstantDeclarationContext, 0) 

+

3337 

+

3338 def rule_SignalDeclaration(self): 

+

3339 return self.getTypedRuleContext(VHDLParser.Rule_SignalDeclarationContext, 0) 

+

3340 

+

3341 def rule_VariableDeclaration(self): 

+

3342 return self.getTypedRuleContext(VHDLParser.Rule_VariableDeclarationContext, 0) 

+

3343 

+

3344 def rule_FileDeclaration(self): 

+

3345 return self.getTypedRuleContext(VHDLParser.Rule_FileDeclarationContext, 0) 

+

3346 

+

3347 def rule_AliasDeclaration(self): 

+

3348 return self.getTypedRuleContext(VHDLParser.Rule_AliasDeclarationContext, 0) 

+

3349 

+

3350 def rule_ComponentDeclaration(self): 

+

3351 return self.getTypedRuleContext(VHDLParser.Rule_ComponentDeclarationContext, 0) 

+

3352 

+

3353 def rule_AttributeDeclaration(self): 

+

3354 return self.getTypedRuleContext(VHDLParser.Rule_AttributeDeclarationContext, 0) 

+

3355 

+

3356 def rule_AttributeSpecification(self): 

+

3357 return self.getTypedRuleContext(VHDLParser.Rule_AttributeSpecificationContext, 0) 

+

3358 

+

3359 def rule_ConfigurationSpecification(self): 

+

3360 return self.getTypedRuleContext(VHDLParser.Rule_ConfigurationSpecificationContext, 0) 

+

3361 

+

3362 def rule_DisconnectionSpecification(self): 

+

3363 return self.getTypedRuleContext(VHDLParser.Rule_DisconnectionSpecificationContext, 0) 

+

3364 

+

3365 def rule_UseClause(self): 

+

3366 return self.getTypedRuleContext(VHDLParser.Rule_UseClauseContext, 0) 

+

3367 

+

3368 def rule_GroupTemplateDeclaration(self): 

+

3369 return self.getTypedRuleContext(VHDLParser.Rule_GroupTemplateDeclarationContext, 0) 

+

3370 

+

3371 def rule_GroupDeclaration(self): 

+

3372 return self.getTypedRuleContext(VHDLParser.Rule_GroupDeclarationContext, 0) 

+

3373 

+

3374 def getRuleIndex(self): 

+

3375 return VHDLParser.RULE_rule_BlockDeclarativeItem 

+

3376 

+

3377 def accept(self, visitor: ParseTreeVisitor): 

+

3378 if hasattr(visitor, "visitRule_BlockDeclarativeItem"): 

+

3379 return visitor.visitRule_BlockDeclarativeItem(self) 

+

3380 else: 

+

3381 return visitor.visitChildren(self) 

+

3382 

+

3383 def rule_BlockDeclarativeItem(self): 

+

3384 

+

3385 localctx = VHDLParser.Rule_BlockDeclarativeItemContext(self, self._ctx, self.state) 

+

3386 self.enterRule(localctx, 52, self.RULE_rule_BlockDeclarativeItem) 

+

3387 try: 

+

3388 self.state = 765 

+

3389 self._errHandler.sync(self) 

+

3390 la_ = self._interp.adaptivePredict(self._input, 32, self._ctx) 

+

3391 if la_ == 1: 

+

3392 self.enterOuterAlt(localctx, 1) 

+

3393 self.state = 743 

+

3394 self.rule_SubprogramDeclaration() 

+

3395 pass 

+

3396 

+

3397 elif la_ == 2: 

+

3398 self.enterOuterAlt(localctx, 2) 

+

3399 self.state = 744 

+

3400 self.rule_SubprogramBody() 

+

3401 pass 

+

3402 

+

3403 elif la_ == 3: 

+

3404 self.enterOuterAlt(localctx, 3) 

+

3405 self.state = 745 

+

3406 self.rule_SubprogramInstantiationDeclaration() 

+

3407 pass 

+

3408 

+

3409 elif la_ == 4: 

+

3410 self.enterOuterAlt(localctx, 4) 

+

3411 self.state = 746 

+

3412 self.rule_PackageDeclaration() 

+

3413 pass 

+

3414 

+

3415 elif la_ == 5: 

+

3416 self.enterOuterAlt(localctx, 5) 

+

3417 self.state = 747 

+

3418 self.rule_PackageBody() 

+

3419 pass 

+

3420 

+

3421 elif la_ == 6: 

+

3422 self.enterOuterAlt(localctx, 6) 

+

3423 self.state = 748 

+

3424 self.rule_PackageInstantiationDeclaration() 

+

3425 pass 

+

3426 

+

3427 elif la_ == 7: 

+

3428 self.enterOuterAlt(localctx, 7) 

+

3429 self.state = 749 

+

3430 self.rule_TypeDeclaration() 

+

3431 pass 

+

3432 

+

3433 elif la_ == 8: 

+

3434 self.enterOuterAlt(localctx, 8) 

+

3435 self.state = 750 

+

3436 self.rule_SubtypeDeclaration() 

+

3437 pass 

+

3438 

+

3439 elif la_ == 9: 

+

3440 self.enterOuterAlt(localctx, 9) 

+

3441 self.state = 751 

+

3442 self.rule_ModeViewDeclaration() 

+

3443 pass 

+

3444 

+

3445 elif la_ == 10: 

+

3446 self.enterOuterAlt(localctx, 10) 

+

3447 self.state = 752 

+

3448 self.rule_ConstantDeclaration() 

+

3449 pass 

+

3450 

+

3451 elif la_ == 11: 

+

3452 self.enterOuterAlt(localctx, 11) 

+

3453 self.state = 753 

+

3454 self.rule_SignalDeclaration() 

+

3455 pass 

+

3456 

+

3457 elif la_ == 12: 

+

3458 self.enterOuterAlt(localctx, 12) 

+

3459 self.state = 754 

+

3460 self.rule_VariableDeclaration() 

+

3461 pass 

+

3462 

+

3463 elif la_ == 13: 

+

3464 self.enterOuterAlt(localctx, 13) 

+

3465 self.state = 755 

+

3466 self.rule_FileDeclaration() 

+

3467 pass 

+

3468 

+

3469 elif la_ == 14: 

+

3470 self.enterOuterAlt(localctx, 14) 

+

3471 self.state = 756 

+

3472 self.rule_AliasDeclaration() 

+

3473 pass 

+

3474 

+

3475 elif la_ == 15: 

+

3476 self.enterOuterAlt(localctx, 15) 

+

3477 self.state = 757 

+

3478 self.rule_ComponentDeclaration() 

+

3479 pass 

+

3480 

+

3481 elif la_ == 16: 

+

3482 self.enterOuterAlt(localctx, 16) 

+

3483 self.state = 758 

+

3484 self.rule_AttributeDeclaration() 

+

3485 pass 

+

3486 

+

3487 elif la_ == 17: 

+

3488 self.enterOuterAlt(localctx, 17) 

+

3489 self.state = 759 

+

3490 self.rule_AttributeSpecification() 

+

3491 pass 

+

3492 

+

3493 elif la_ == 18: 

+

3494 self.enterOuterAlt(localctx, 18) 

+

3495 self.state = 760 

+

3496 self.rule_ConfigurationSpecification() 

+

3497 pass 

+

3498 

+

3499 elif la_ == 19: 

+

3500 self.enterOuterAlt(localctx, 19) 

+

3501 self.state = 761 

+

3502 self.rule_DisconnectionSpecification() 

+

3503 pass 

+

3504 

+

3505 elif la_ == 20: 

+

3506 self.enterOuterAlt(localctx, 20) 

+

3507 self.state = 762 

+

3508 self.rule_UseClause() 

+

3509 pass 

+

3510 

+

3511 elif la_ == 21: 

+

3512 self.enterOuterAlt(localctx, 21) 

+

3513 self.state = 763 

+

3514 self.rule_GroupTemplateDeclaration() 

+

3515 pass 

+

3516 

+

3517 elif la_ == 22: 

+

3518 self.enterOuterAlt(localctx, 22) 

+

3519 self.state = 764 

+

3520 self.rule_GroupDeclaration() 

+

3521 pass 

+

3522 

+

3523 

+

3524 except RecognitionException as re: 

+

3525 localctx.exception = re 

+

3526 self._errHandler.reportError(self, re) 

+

3527 self._errHandler.recover(self, re) 

+

3528 finally: 

+

3529 self.exitRule() 

+

3530 return localctx 

+

3531 

+

3532 class Rule_BlockSpecificationContext(ParserRuleContext): 

+

3533 __slots__ = 'parser' 

+

3534 

+

3535 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

3536 super().__init__(parent, invokingState) 

+

3537 self.parser = parser 

+

3538 self.name = None # Rule_NameContext 

+

3539 self.label = None # Token 

+

3540 

+

3541 def rule_Name(self): 

+

3542 return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0) 

+

3543 

+

3544 def LIT_IDENTIFIER(self): 

+

3545 return self.getToken(VHDLParser.LIT_IDENTIFIER, 0) 

+

3546 

+

3547 def TOK_LP(self): 

+

3548 return self.getToken(VHDLParser.TOK_LP, 0) 

+

3549 

+

3550 def rule_GenerateSpecification(self): 

+

3551 return self.getTypedRuleContext(VHDLParser.Rule_GenerateSpecificationContext, 0) 

+

3552 

+

3553 def TOK_RP(self): 

+

3554 return self.getToken(VHDLParser.TOK_RP, 0) 

+

3555 

+

3556 def getRuleIndex(self): 

+

3557 return VHDLParser.RULE_rule_BlockSpecification 

+

3558 

+

3559 def accept(self, visitor: ParseTreeVisitor): 

+

3560 if hasattr(visitor, "visitRule_BlockSpecification"): 

+

3561 return visitor.visitRule_BlockSpecification(self) 

+

3562 else: 

+

3563 return visitor.visitChildren(self) 

+

3564 

+

3565 def rule_BlockSpecification(self): 

+

3566 

+

3567 localctx = VHDLParser.Rule_BlockSpecificationContext(self, self._ctx, self.state) 

+

3568 self.enterRule(localctx, 54, self.RULE_rule_BlockSpecification) 

+

3569 self._la = 0 # Token type 

+

3570 try: 

+

3571 self.state = 775 

+

3572 self._errHandler.sync(self) 

+

3573 la_ = self._interp.adaptivePredict(self._input, 34, self._ctx) 

+

3574 if la_ == 1: 

+

3575 self.enterOuterAlt(localctx, 1) 

+

3576 self.state = 767 

+

3577 localctx.name = self.rule_Name(0) 

+

3578 pass 

+

3579 

+

3580 elif la_ == 2: 

+

3581 self.enterOuterAlt(localctx, 2) 

+

3582 self.state = 768 

+

3583 localctx.label = self.match(VHDLParser.LIT_IDENTIFIER) 

+

3584 self.state = 773 

+

3585 self._errHandler.sync(self) 

+

3586 _la = self._input.LA(1) 

+

3587 if _la == 143: 

+

3588 self.state = 769 

+

3589 self.match(VHDLParser.TOK_LP) 

+

3590 self.state = 770 

+

3591 self.rule_GenerateSpecification() 

+

3592 self.state = 771 

+

3593 self.match(VHDLParser.TOK_RP) 

+

3594 

+

3595 pass 

+

3596 

+

3597 

+

3598 except RecognitionException as re: 

+

3599 localctx.exception = re 

+

3600 self._errHandler.reportError(self, re) 

+

3601 self._errHandler.recover(self, re) 

+

3602 finally: 

+

3603 self.exitRule() 

+

3604 return localctx 

+

3605 

+

3606 class Rule_BlockStatementContext(ParserRuleContext): 

+

3607 __slots__ = 'parser' 

+

3608 

+

3609 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

3610 super().__init__(parent, invokingState) 

+

3611 self.parser = parser 

+

3612 self.label = None # Token 

+

3613 self.guardExpression = None # Rule_ExpressionContext 

+

3614 self.genericClause = None # Rule_GenericClauseContext 

+

3615 self.genericMapAspect = None # Rule_GenericMapAspectContext 

+

3616 self.portClause = None # Rule_PortClauseContext 

+

3617 self.portMapAspect = None # Rule_PortMapAspectContext 

+

3618 self._rule_BlockDeclarativeItem = None # Rule_BlockDeclarativeItemContext 

+

3619 self.blockDeclarativeItem = list() # of Rule_BlockDeclarativeItemContexts 

+

3620 self._rule_ConcurrentStatement = None # Rule_ConcurrentStatementContext 

+

3621 self.blockStatements = list() # of Rule_ConcurrentStatementContexts 

+

3622 self.label2 = None # Token 

+

3623 

+

3624 def TOK_COLON(self): 

+

3625 return self.getToken(VHDLParser.TOK_COLON, 0) 

+

3626 

+

3627 def KW_BLOCK(self, i: int = None): 

+

3628 if i is None: 

+

3629 return self.getTokens(VHDLParser.KW_BLOCK) 

+

3630 else: 

+

3631 return self.getToken(VHDLParser.KW_BLOCK, i) 

+

3632 

+

3633 def KW_BEGIN(self): 

+

3634 return self.getToken(VHDLParser.KW_BEGIN, 0) 

+

3635 

+

3636 def KW_END(self): 

+

3637 return self.getToken(VHDLParser.KW_END, 0) 

+

3638 

+

3639 def TOK_SEMICOL(self, i: int = None): 

+

3640 if i is None: 

+

3641 return self.getTokens(VHDLParser.TOK_SEMICOL) 

+

3642 else: 

+

3643 return self.getToken(VHDLParser.TOK_SEMICOL, i) 

+

3644 

+

3645 def LIT_IDENTIFIER(self, i: int = None): 

+

3646 if i is None: 

+

3647 return self.getTokens(VHDLParser.LIT_IDENTIFIER) 

+

3648 else: 

+

3649 return self.getToken(VHDLParser.LIT_IDENTIFIER, i) 

+

3650 

+

3651 def TOK_LP(self): 

+

3652 return self.getToken(VHDLParser.TOK_LP, 0) 

+

3653 

+

3654 def TOK_RP(self): 

+

3655 return self.getToken(VHDLParser.TOK_RP, 0) 

+

3656 

+

3657 def KW_IS(self): 

+

3658 return self.getToken(VHDLParser.KW_IS, 0) 

+

3659 

+

3660 def rule_Expression(self): 

+

3661 return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0) 

+

3662 

+

3663 def rule_GenericClause(self): 

+

3664 return self.getTypedRuleContext(VHDLParser.Rule_GenericClauseContext, 0) 

+

3665 

+

3666 def rule_PortClause(self): 

+

3667 return self.getTypedRuleContext(VHDLParser.Rule_PortClauseContext, 0) 

+

3668 

+

3669 def rule_BlockDeclarativeItem(self, i: int = None): 

+

3670 if i is None: 

+

3671 return self.getTypedRuleContexts(VHDLParser.Rule_BlockDeclarativeItemContext) 

+

3672 else: 

+

3673 return self.getTypedRuleContext(VHDLParser.Rule_BlockDeclarativeItemContext, i) 

+

3674 

+

3675 def rule_ConcurrentStatement(self, i: int = None): 

+

3676 if i is None: 

+

3677 return self.getTypedRuleContexts(VHDLParser.Rule_ConcurrentStatementContext) 

+

3678 else: 

+

3679 return self.getTypedRuleContext(VHDLParser.Rule_ConcurrentStatementContext, i) 

+

3680 

+

3681 def rule_GenericMapAspect(self): 

+

3682 return self.getTypedRuleContext(VHDLParser.Rule_GenericMapAspectContext, 0) 

+

3683 

+

3684 def rule_PortMapAspect(self): 

+

3685 return self.getTypedRuleContext(VHDLParser.Rule_PortMapAspectContext, 0) 

+

3686 

+

3687 def getRuleIndex(self): 

+

3688 return VHDLParser.RULE_rule_BlockStatement 

+

3689 

+

3690 def accept(self, visitor: ParseTreeVisitor): 

+

3691 if hasattr(visitor, "visitRule_BlockStatement"): 

+

3692 return visitor.visitRule_BlockStatement(self) 

+

3693 else: 

+

3694 return visitor.visitChildren(self) 

+

3695 

+

3696 def rule_BlockStatement(self): 

+

3697 

+

3698 localctx = VHDLParser.Rule_BlockStatementContext(self, self._ctx, self.state) 

+

3699 self.enterRule(localctx, 56, self.RULE_rule_BlockStatement) 

+

3700 self._la = 0 # Token type 

+

3701 try: 

+

3702 self.enterOuterAlt(localctx, 1) 

+

3703 self.state = 777 

+

3704 localctx.label = self.match(VHDLParser.LIT_IDENTIFIER) 

+

3705 self.state = 778 

+

3706 self.match(VHDLParser.TOK_COLON) 

+

3707 self.state = 779 

+

3708 self.match(VHDLParser.KW_BLOCK) 

+

3709 self.state = 784 

+

3710 self._errHandler.sync(self) 

+

3711 _la = self._input.LA(1) 

+

3712 if _la == 143: 

+

3713 self.state = 780 

+

3714 self.match(VHDLParser.TOK_LP) 

+

3715 self.state = 781 

+

3716 localctx.guardExpression = self.rule_Expression(0) 

+

3717 self.state = 782 

+

3718 self.match(VHDLParser.TOK_RP) 

+

3719 

+

3720 self.state = 787 

+

3721 self._errHandler.sync(self) 

+

3722 _la = self._input.LA(1) 

+

3723 if _la == 50: 

+

3724 self.state = 786 

+

3725 self.match(VHDLParser.KW_IS) 

+

3726 

+

3727 self.state = 795 

+

3728 self._errHandler.sync(self) 

+

3729 _la = self._input.LA(1) 

+

3730 if _la == 42: 

+

3731 self.state = 789 

+

3732 localctx.genericClause = self.rule_GenericClause() 

+

3733 self.state = 793 

+

3734 self._errHandler.sync(self) 

+

3735 _la = self._input.LA(1) 

+

3736 if _la == 42: 

+

3737 self.state = 790 

+

3738 localctx.genericMapAspect = self.rule_GenericMapAspect() 

+

3739 self.state = 791 

+

3740 self.match(VHDLParser.TOK_SEMICOL) 

+

3741 

+

3742 self.state = 803 

+

3743 self._errHandler.sync(self) 

+

3744 _la = self._input.LA(1) 

+

3745 if _la == 72: 

+

3746 self.state = 797 

+

3747 localctx.portClause = self.rule_PortClause() 

+

3748 self.state = 801 

+

3749 self._errHandler.sync(self) 

+

3750 _la = self._input.LA(1) 

+

3751 if _la == 72: 

+

3752 self.state = 798 

+

3753 localctx.portMapAspect = self.rule_PortMapAspect() 

+

3754 self.state = 799 

+

3755 self.match(VHDLParser.TOK_SEMICOL) 

+

3756 

+

3757 self.state = 808 

+

3758 self._errHandler.sync(self) 

+

3759 _la = self._input.LA(1) 

+

3760 while (((_la) & ~0x3f) == 0 and ((1 << _la) & 88717423313408) != 0) or ( 

+

3761 (((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & 1941606236449) != 0): 

+

3762 self.state = 805 

+

3763 localctx._rule_BlockDeclarativeItem = self.rule_BlockDeclarativeItem() 

+

3764 localctx.blockDeclarativeItem.append(localctx._rule_BlockDeclarativeItem) 

+

3765 self.state = 810 

+

3766 self._errHandler.sync(self) 

+

3767 _la = self._input.LA(1) 

+

3768 

+

3769 self.state = 811 

+

3770 self.match(VHDLParser.KW_BEGIN) 

+

3771 self.state = 815 

+

3772 self._errHandler.sync(self) 

+

3773 _la = self._input.LA(1) 

+

3774 while ((((_la - 14)) & ~0x3f) == 0 and ((1 << (_la - 14)) & 5188146770730811393) != 0) or ( 

+

3775 (((_la - 116)) & ~0x3f) == 0 and ((1 << (_la - 116)) & 246292886323201) != 0): 

+

3776 self.state = 812 

+

3777 localctx._rule_ConcurrentStatement = self.rule_ConcurrentStatement() 

+

3778 localctx.blockStatements.append(localctx._rule_ConcurrentStatement) 

+

3779 self.state = 817 

+

3780 self._errHandler.sync(self) 

+

3781 _la = self._input.LA(1) 

+

3782 

+

3783 self.state = 818 

+

3784 self.match(VHDLParser.KW_END) 

+

3785 self.state = 819 

+

3786 self.match(VHDLParser.KW_BLOCK) 

+

3787 self.state = 821 

+

3788 self._errHandler.sync(self) 

+

3789 _la = self._input.LA(1) 

+

3790 if _la == 163: 

+

3791 self.state = 820 

+

3792 localctx.label2 = self.match(VHDLParser.LIT_IDENTIFIER) 

+

3793 

+

3794 self.state = 823 

+

3795 self.match(VHDLParser.TOK_SEMICOL) 

+

3796 except RecognitionException as re: 

+

3797 localctx.exception = re 

+

3798 self._errHandler.reportError(self, re) 

+

3799 self._errHandler.recover(self, re) 

+

3800 finally: 

+

3801 self.exitRule() 

+

3802 return localctx 

+

3803 

+

3804 class Rule_CaseGenerateAlternativeContext(ParserRuleContext): 

+

3805 __slots__ = 'parser' 

+

3806 

+

3807 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

3808 super().__init__(parent, invokingState) 

+

3809 self.parser = parser 

+

3810 self.alternativeLabel = None # Token 

+

3811 

+

3812 def KW_WHEN(self): 

+

3813 return self.getToken(VHDLParser.KW_WHEN, 0) 

+

3814 

+

3815 def rule_Choices(self): 

+

3816 return self.getTypedRuleContext(VHDLParser.Rule_ChoicesContext, 0) 

+

3817 

+

3818 def TOK_RARROW(self): 

+

3819 return self.getToken(VHDLParser.TOK_RARROW, 0) 

+

3820 

+

3821 def rule_GenerateStatementBody(self): 

+

3822 return self.getTypedRuleContext(VHDLParser.Rule_GenerateStatementBodyContext, 0) 

+

3823 

+

3824 def TOK_COLON(self): 

+

3825 return self.getToken(VHDLParser.TOK_COLON, 0) 

+

3826 

+

3827 def LIT_IDENTIFIER(self): 

+

3828 return self.getToken(VHDLParser.LIT_IDENTIFIER, 0) 

+

3829 

+

3830 def getRuleIndex(self): 

+

3831 return VHDLParser.RULE_rule_CaseGenerateAlternative 

+

3832 

+

3833 def accept(self, visitor: ParseTreeVisitor): 

+

3834 if hasattr(visitor, "visitRule_CaseGenerateAlternative"): 

+

3835 return visitor.visitRule_CaseGenerateAlternative(self) 

+

3836 else: 

+

3837 return visitor.visitChildren(self) 

+

3838 

+

3839 def rule_CaseGenerateAlternative(self): 

+

3840 

+

3841 localctx = VHDLParser.Rule_CaseGenerateAlternativeContext(self, self._ctx, self.state) 

+

3842 self.enterRule(localctx, 58, self.RULE_rule_CaseGenerateAlternative) 

+

3843 try: 

+

3844 self.enterOuterAlt(localctx, 1) 

+

3845 self.state = 825 

+

3846 self.match(VHDLParser.KW_WHEN) 

+

3847 self.state = 828 

+

3848 self._errHandler.sync(self) 

+

3849 la_ = self._interp.adaptivePredict(self._input, 44, self._ctx) 

+

3850 if la_ == 1: 

+

3851 self.state = 826 

+

3852 localctx.alternativeLabel = self.match(VHDLParser.LIT_IDENTIFIER) 

+

3853 self.state = 827 

+

3854 self.match(VHDLParser.TOK_COLON) 

+

3855 

+

3856 self.state = 830 

+

3857 self.rule_Choices() 

+

3858 self.state = 831 

+

3859 self.match(VHDLParser.TOK_RARROW) 

+

3860 self.state = 832 

+

3861 self.rule_GenerateStatementBody() 

+

3862 except RecognitionException as re: 

+

3863 localctx.exception = re 

+

3864 self._errHandler.reportError(self, re) 

+

3865 self._errHandler.recover(self, re) 

+

3866 finally: 

+

3867 self.exitRule() 

+

3868 return localctx 

+

3869 

+

3870 class Rule_CaseGenerateStatementContext(ParserRuleContext): 

+

3871 __slots__ = 'parser' 

+

3872 

+

3873 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

3874 super().__init__(parent, invokingState) 

+

3875 self.parser = parser 

+

3876 self.label = None # Token 

+

3877 self.expression = None # Rule_ExpressionContext 

+

3878 self._rule_CaseGenerateAlternative = None # Rule_CaseGenerateAlternativeContext 

+

3879 self.alternatives = list() # of Rule_CaseGenerateAlternativeContexts 

+

3880 self.label2 = None # Token 

+

3881 

+

3882 def TOK_COLON(self): 

+

3883 return self.getToken(VHDLParser.TOK_COLON, 0) 

+

3884 

+

3885 def KW_CASE(self): 

+

3886 return self.getToken(VHDLParser.KW_CASE, 0) 

+

3887 

+

3888 def KW_GENERATE(self, i: int = None): 

+

3889 if i is None: 

+

3890 return self.getTokens(VHDLParser.KW_GENERATE) 

+

3891 else: 

+

3892 return self.getToken(VHDLParser.KW_GENERATE, i) 

+

3893 

+

3894 def KW_END(self): 

+

3895 return self.getToken(VHDLParser.KW_END, 0) 

+

3896 

+

3897 def TOK_SEMICOL(self): 

+

3898 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

3899 

+

3900 def LIT_IDENTIFIER(self, i: int = None): 

+

3901 if i is None: 

+

3902 return self.getTokens(VHDLParser.LIT_IDENTIFIER) 

+

3903 else: 

+

3904 return self.getToken(VHDLParser.LIT_IDENTIFIER, i) 

+

3905 

+

3906 def rule_Expression(self): 

+

3907 return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0) 

+

3908 

+

3909 def rule_CaseGenerateAlternative(self, i: int = None): 

+

3910 if i is None: 

+

3911 return self.getTypedRuleContexts(VHDLParser.Rule_CaseGenerateAlternativeContext) 

+

3912 else: 

+

3913 return self.getTypedRuleContext(VHDLParser.Rule_CaseGenerateAlternativeContext, i) 

+

3914 

+

3915 def getRuleIndex(self): 

+

3916 return VHDLParser.RULE_rule_CaseGenerateStatement 

+

3917 

+

3918 def accept(self, visitor: ParseTreeVisitor): 

+

3919 if hasattr(visitor, "visitRule_CaseGenerateStatement"): 

+

3920 return visitor.visitRule_CaseGenerateStatement(self) 

+

3921 else: 

+

3922 return visitor.visitChildren(self) 

+

3923 

+

3924 def rule_CaseGenerateStatement(self): 

+

3925 

+

3926 localctx = VHDLParser.Rule_CaseGenerateStatementContext(self, self._ctx, self.state) 

+

3927 self.enterRule(localctx, 60, self.RULE_rule_CaseGenerateStatement) 

+

3928 self._la = 0 # Token type 

+

3929 try: 

+

3930 self.enterOuterAlt(localctx, 1) 

+

3931 self.state = 834 

+

3932 localctx.label = self.match(VHDLParser.LIT_IDENTIFIER) 

+

3933 self.state = 835 

+

3934 self.match(VHDLParser.TOK_COLON) 

+

3935 self.state = 836 

+

3936 self.match(VHDLParser.KW_CASE) 

+

3937 self.state = 837 

+

3938 localctx.expression = self.rule_Expression(0) 

+

3939 self.state = 838 

+

3940 self.match(VHDLParser.KW_GENERATE) 

+

3941 self.state = 840 

+

3942 self._errHandler.sync(self) 

+

3943 _la = self._input.LA(1) 

+

3944 while True: 

+

3945 self.state = 839 

+

3946 localctx._rule_CaseGenerateAlternative = self.rule_CaseGenerateAlternative() 

+

3947 localctx.alternatives.append(localctx._rule_CaseGenerateAlternative) 

+

3948 self.state = 842 

+

3949 self._errHandler.sync(self) 

+

3950 _la = self._input.LA(1) 

+

3951 if not (_la == 117): 

+

3952 break 

+

3953 

+

3954 self.state = 844 

+

3955 self.match(VHDLParser.KW_END) 

+

3956 self.state = 845 

+

3957 self.match(VHDLParser.KW_GENERATE) 

+

3958 self.state = 847 

+

3959 self._errHandler.sync(self) 

+

3960 _la = self._input.LA(1) 

+

3961 if _la == 163: 

+

3962 self.state = 846 

+

3963 localctx.label2 = self.match(VHDLParser.LIT_IDENTIFIER) 

+

3964 

+

3965 self.state = 849 

+

3966 self.match(VHDLParser.TOK_SEMICOL) 

+

3967 except RecognitionException as re: 

+

3968 localctx.exception = re 

+

3969 self._errHandler.reportError(self, re) 

+

3970 self._errHandler.recover(self, re) 

+

3971 finally: 

+

3972 self.exitRule() 

+

3973 return localctx 

+

3974 

+

3975 class Rule_CaseStatementContext(ParserRuleContext): 

+

3976 __slots__ = 'parser' 

+

3977 

+

3978 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

3979 super().__init__(parent, invokingState) 

+

3980 self.parser = parser 

+

3981 self.label = None # Token 

+

3982 self.expression = None # Rule_ExpressionContext 

+

3983 self._rule_CaseStatementAlternative = None # Rule_CaseStatementAlternativeContext 

+

3984 self.alternatives = list() # of Rule_CaseStatementAlternativeContexts 

+

3985 self.label2 = None # Token 

+

3986 

+

3987 def KW_CASE(self, i: int = None): 

+

3988 if i is None: 

+

3989 return self.getTokens(VHDLParser.KW_CASE) 

+

3990 else: 

+

3991 return self.getToken(VHDLParser.KW_CASE, i) 

+

3992 

+

3993 def KW_IS(self): 

+

3994 return self.getToken(VHDLParser.KW_IS, 0) 

+

3995 

+

3996 def KW_END(self): 

+

3997 return self.getToken(VHDLParser.KW_END, 0) 

+

3998 

+

3999 def TOK_SEMICOL(self): 

+

4000 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

4001 

+

4002 def rule_Expression(self): 

+

4003 return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0) 

+

4004 

+

4005 def TOK_COLON(self): 

+

4006 return self.getToken(VHDLParser.TOK_COLON, 0) 

+

4007 

+

4008 def LIT_IDENTIFIER(self, i: int = None): 

+

4009 if i is None: 

+

4010 return self.getTokens(VHDLParser.LIT_IDENTIFIER) 

+

4011 else: 

+

4012 return self.getToken(VHDLParser.LIT_IDENTIFIER, i) 

+

4013 

+

4014 def rule_CaseStatementAlternative(self, i: int = None): 

+

4015 if i is None: 

+

4016 return self.getTypedRuleContexts(VHDLParser.Rule_CaseStatementAlternativeContext) 

+

4017 else: 

+

4018 return self.getTypedRuleContext(VHDLParser.Rule_CaseStatementAlternativeContext, i) 

+

4019 

+

4020 def getRuleIndex(self): 

+

4021 return VHDLParser.RULE_rule_CaseStatement 

+

4022 

+

4023 def accept(self, visitor: ParseTreeVisitor): 

+

4024 if hasattr(visitor, "visitRule_CaseStatement"): 

+

4025 return visitor.visitRule_CaseStatement(self) 

+

4026 else: 

+

4027 return visitor.visitChildren(self) 

+

4028 

+

4029 def rule_CaseStatement(self): 

+

4030 

+

4031 localctx = VHDLParser.Rule_CaseStatementContext(self, self._ctx, self.state) 

+

4032 self.enterRule(localctx, 62, self.RULE_rule_CaseStatement) 

+

4033 self._la = 0 # Token type 

+

4034 try: 

+

4035 self.enterOuterAlt(localctx, 1) 

+

4036 self.state = 853 

+

4037 self._errHandler.sync(self) 

+

4038 _la = self._input.LA(1) 

+

4039 if _la == 163: 

+

4040 self.state = 851 

+

4041 localctx.label = self.match(VHDLParser.LIT_IDENTIFIER) 

+

4042 self.state = 852 

+

4043 self.match(VHDLParser.TOK_COLON) 

+

4044 

+

4045 self.state = 855 

+

4046 self.match(VHDLParser.KW_CASE) 

+

4047 self.state = 856 

+

4048 localctx.expression = self.rule_Expression(0) 

+

4049 self.state = 857 

+

4050 self.match(VHDLParser.KW_IS) 

+

4051 self.state = 859 

+

4052 self._errHandler.sync(self) 

+

4053 _la = self._input.LA(1) 

+

4054 while True: 

+

4055 self.state = 858 

+

4056 localctx._rule_CaseStatementAlternative = self.rule_CaseStatementAlternative() 

+

4057 localctx.alternatives.append(localctx._rule_CaseStatementAlternative) 

+

4058 self.state = 861 

+

4059 self._errHandler.sync(self) 

+

4060 _la = self._input.LA(1) 

+

4061 if not (_la == 117): 

+

4062 break 

+

4063 

+

4064 self.state = 863 

+

4065 self.match(VHDLParser.KW_END) 

+

4066 self.state = 864 

+

4067 self.match(VHDLParser.KW_CASE) 

+

4068 self.state = 866 

+

4069 self._errHandler.sync(self) 

+

4070 _la = self._input.LA(1) 

+

4071 if _la == 163: 

+

4072 self.state = 865 

+

4073 localctx.label2 = self.match(VHDLParser.LIT_IDENTIFIER) 

+

4074 

+

4075 self.state = 868 

+

4076 self.match(VHDLParser.TOK_SEMICOL) 

+

4077 except RecognitionException as re: 

+

4078 localctx.exception = re 

+

4079 self._errHandler.reportError(self, re) 

+

4080 self._errHandler.recover(self, re) 

+

4081 finally: 

+

4082 self.exitRule() 

+

4083 return localctx 

+

4084 

+

4085 class Rule_CaseStatementAlternativeContext(ParserRuleContext): 

+

4086 __slots__ = 'parser' 

+

4087 

+

4088 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

4089 super().__init__(parent, invokingState) 

+

4090 self.parser = parser 

+

4091 self._rule_SequentialStatement = None # Rule_SequentialStatementContext 

+

4092 self.statements = list() # of Rule_SequentialStatementContexts 

+

4093 

+

4094 def KW_WHEN(self): 

+

4095 return self.getToken(VHDLParser.KW_WHEN, 0) 

+

4096 

+

4097 def rule_Choices(self): 

+

4098 return self.getTypedRuleContext(VHDLParser.Rule_ChoicesContext, 0) 

+

4099 

+

4100 def TOK_RARROW(self): 

+

4101 return self.getToken(VHDLParser.TOK_RARROW, 0) 

+

4102 

+

4103 def rule_SequentialStatement(self, i: int = None): 

+

4104 if i is None: 

+

4105 return self.getTypedRuleContexts(VHDLParser.Rule_SequentialStatementContext) 

+

4106 else: 

+

4107 return self.getTypedRuleContext(VHDLParser.Rule_SequentialStatementContext, i) 

+

4108 

+

4109 def getRuleIndex(self): 

+

4110 return VHDLParser.RULE_rule_CaseStatementAlternative 

+

4111 

+

4112 def accept(self, visitor: ParseTreeVisitor): 

+

4113 if hasattr(visitor, "visitRule_CaseStatementAlternative"): 

+

4114 return visitor.visitRule_CaseStatementAlternative(self) 

+

4115 else: 

+

4116 return visitor.visitChildren(self) 

+

4117 

+

4118 def rule_CaseStatementAlternative(self): 

+

4119 

+

4120 localctx = VHDLParser.Rule_CaseStatementAlternativeContext(self, self._ctx, self.state) 

+

4121 self.enterRule(localctx, 64, self.RULE_rule_CaseStatementAlternative) 

+

4122 self._la = 0 # Token type 

+

4123 try: 

+

4124 self.enterOuterAlt(localctx, 1) 

+

4125 self.state = 870 

+

4126 self.match(VHDLParser.KW_WHEN) 

+

4127 self.state = 871 

+

4128 self.rule_Choices() 

+

4129 self.state = 872 

+

4130 self.match(VHDLParser.TOK_RARROW) 

+

4131 self.state = 876 

+

4132 self._errHandler.sync(self) 

+

4133 _la = self._input.LA(1) 

+

4134 while (((_la) & ~0x3f) == 0 and ((1 << _la) & -8052400777563193344) != 0) or ( 

+

4135 (((_la - 85)) & ~0x3f) == 0 and ((1 << (_la - 85)) & 4899916406390259715) != 0) or ( 

+

4136 (((_la - 161)) & ~0x3f) == 0 and ((1 << (_la - 161)) & 7) != 0): 

+

4137 self.state = 873 

+

4138 localctx._rule_SequentialStatement = self.rule_SequentialStatement() 

+

4139 localctx.statements.append(localctx._rule_SequentialStatement) 

+

4140 self.state = 878 

+

4141 self._errHandler.sync(self) 

+

4142 _la = self._input.LA(1) 

+

4143 

+

4144 except RecognitionException as re: 

+

4145 localctx.exception = re 

+

4146 self._errHandler.reportError(self, re) 

+

4147 self._errHandler.recover(self, re) 

+

4148 finally: 

+

4149 self.exitRule() 

+

4150 return localctx 

+

4151 

+

4152 class Rule_ChoiceContext(ParserRuleContext): 

+

4153 __slots__ = 'parser' 

+

4154 

+

4155 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

4156 super().__init__(parent, invokingState) 

+

4157 self.parser = parser 

+

4158 

+

4159 def rule_Expression(self): 

+

4160 return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0) 

+

4161 

+

4162 def rule_DiscreteRange(self): 

+

4163 return self.getTypedRuleContext(VHDLParser.Rule_DiscreteRangeContext, 0) 

+

4164 

+

4165 def KW_OTHERS(self): 

+

4166 return self.getToken(VHDLParser.KW_OTHERS, 0) 

+

4167 

+

4168 def getRuleIndex(self): 

+

4169 return VHDLParser.RULE_rule_Choice 

+

4170 

+

4171 def accept(self, visitor: ParseTreeVisitor): 

+

4172 if hasattr(visitor, "visitRule_Choice"): 

+

4173 return visitor.visitRule_Choice(self) 

+

4174 else: 

+

4175 return visitor.visitChildren(self) 

+

4176 

+

4177 def rule_Choice(self): 

+

4178 

+

4179 localctx = VHDLParser.Rule_ChoiceContext(self, self._ctx, self.state) 

+

4180 self.enterRule(localctx, 66, self.RULE_rule_Choice) 

+

4181 try: 

+

4182 self.state = 882 

+

4183 self._errHandler.sync(self) 

+

4184 la_ = self._interp.adaptivePredict(self._input, 51, self._ctx) 

+

4185 if la_ == 1: 

+

4186 self.enterOuterAlt(localctx, 1) 

+

4187 self.state = 879 

+

4188 self.rule_Expression(0) 

+

4189 pass 

+

4190 

+

4191 elif la_ == 2: 

+

4192 self.enterOuterAlt(localctx, 2) 

+

4193 self.state = 880 

+

4194 self.rule_DiscreteRange() 

+

4195 pass 

+

4196 

+

4197 elif la_ == 3: 

+

4198 self.enterOuterAlt(localctx, 3) 

+

4199 self.state = 881 

+

4200 self.match(VHDLParser.KW_OTHERS) 

+

4201 pass 

+

4202 

+

4203 

+

4204 except RecognitionException as re: 

+

4205 localctx.exception = re 

+

4206 self._errHandler.reportError(self, re) 

+

4207 self._errHandler.recover(self, re) 

+

4208 finally: 

+

4209 self.exitRule() 

+

4210 return localctx 

+

4211 

+

4212 class Rule_ChoicesContext(ParserRuleContext): 

+

4213 __slots__ = 'parser' 

+

4214 

+

4215 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

4216 super().__init__(parent, invokingState) 

+

4217 self.parser = parser 

+

4218 self._rule_Choice = None # Rule_ChoiceContext 

+

4219 self.choices = list() # of Rule_ChoiceContexts 

+

4220 

+

4221 def rule_Choice(self, i: int = None): 

+

4222 if i is None: 

+

4223 return self.getTypedRuleContexts(VHDLParser.Rule_ChoiceContext) 

+

4224 else: 

+

4225 return self.getTypedRuleContext(VHDLParser.Rule_ChoiceContext, i) 

+

4226 

+

4227 def TOK_BAR(self, i: int = None): 

+

4228 if i is None: 

+

4229 return self.getTokens(VHDLParser.TOK_BAR) 

+

4230 else: 

+

4231 return self.getToken(VHDLParser.TOK_BAR, i) 

+

4232 

+

4233 def getRuleIndex(self): 

+

4234 return VHDLParser.RULE_rule_Choices 

+

4235 

+

4236 def accept(self, visitor: ParseTreeVisitor): 

+

4237 if hasattr(visitor, "visitRule_Choices"): 

+

4238 return visitor.visitRule_Choices(self) 

+

4239 else: 

+

4240 return visitor.visitChildren(self) 

+

4241 

+

4242 def rule_Choices(self): 

+

4243 

+

4244 localctx = VHDLParser.Rule_ChoicesContext(self, self._ctx, self.state) 

+

4245 self.enterRule(localctx, 68, self.RULE_rule_Choices) 

+

4246 self._la = 0 # Token type 

+

4247 try: 

+

4248 self.enterOuterAlt(localctx, 1) 

+

4249 self.state = 884 

+

4250 localctx._rule_Choice = self.rule_Choice() 

+

4251 localctx.choices.append(localctx._rule_Choice) 

+

4252 self.state = 889 

+

4253 self._errHandler.sync(self) 

+

4254 _la = self._input.LA(1) 

+

4255 while _la == 152: 

+

4256 self.state = 885 

+

4257 self.match(VHDLParser.TOK_BAR) 

+

4258 self.state = 886 

+

4259 localctx._rule_Choice = self.rule_Choice() 

+

4260 localctx.choices.append(localctx._rule_Choice) 

+

4261 self.state = 891 

+

4262 self._errHandler.sync(self) 

+

4263 _la = self._input.LA(1) 

+

4264 

+

4265 except RecognitionException as re: 

+

4266 localctx.exception = re 

+

4267 self._errHandler.reportError(self, re) 

+

4268 self._errHandler.recover(self, re) 

+

4269 finally: 

+

4270 self.exitRule() 

+

4271 return localctx 

+

4272 

+

4273 class Rule_ComponentConfigurationContext(ParserRuleContext): 

+

4274 __slots__ = 'parser' 

+

4275 

+

4276 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

4277 super().__init__(parent, invokingState) 

+

4278 self.parser = parser 

+

4279 self.componentSpecification = None # Rule_ComponentSpecificationContext 

+

4280 self.bindingIndication = None # Rule_BindingIndicationContext 

+

4281 self.blockConfiguration = None # Rule_BlockConfigurationContext 

+

4282 

+

4283 def KW_FOR(self, i: int = None): 

+

4284 if i is None: 

+

4285 return self.getTokens(VHDLParser.KW_FOR) 

+

4286 else: 

+

4287 return self.getToken(VHDLParser.KW_FOR, i) 

+

4288 

+

4289 def KW_END(self): 

+

4290 return self.getToken(VHDLParser.KW_END, 0) 

+

4291 

+

4292 def TOK_SEMICOL(self, i: int = None): 

+

4293 if i is None: 

+

4294 return self.getTokens(VHDLParser.TOK_SEMICOL) 

+

4295 else: 

+

4296 return self.getToken(VHDLParser.TOK_SEMICOL, i) 

+

4297 

+

4298 def rule_ComponentSpecification(self): 

+

4299 return self.getTypedRuleContext(VHDLParser.Rule_ComponentSpecificationContext, 0) 

+

4300 

+

4301 def rule_BindingIndication(self): 

+

4302 return self.getTypedRuleContext(VHDLParser.Rule_BindingIndicationContext, 0) 

+

4303 

+

4304 def rule_BlockConfiguration(self): 

+

4305 return self.getTypedRuleContext(VHDLParser.Rule_BlockConfigurationContext, 0) 

+

4306 

+

4307 def getRuleIndex(self): 

+

4308 return VHDLParser.RULE_rule_ComponentConfiguration 

+

4309 

+

4310 def accept(self, visitor: ParseTreeVisitor): 

+

4311 if hasattr(visitor, "visitRule_ComponentConfiguration"): 

+

4312 return visitor.visitRule_ComponentConfiguration(self) 

+

4313 else: 

+

4314 return visitor.visitChildren(self) 

+

4315 

+

4316 def rule_ComponentConfiguration(self): 

+

4317 

+

4318 localctx = VHDLParser.Rule_ComponentConfigurationContext(self, self._ctx, self.state) 

+

4319 self.enterRule(localctx, 70, self.RULE_rule_ComponentConfiguration) 

+

4320 self._la = 0 # Token type 

+

4321 try: 

+

4322 self.enterOuterAlt(localctx, 1) 

+

4323 self.state = 892 

+

4324 self.match(VHDLParser.KW_FOR) 

+

4325 self.state = 893 

+

4326 localctx.componentSpecification = self.rule_ComponentSpecification() 

+

4327 self.state = 897 

+

4328 self._errHandler.sync(self) 

+

4329 _la = self._input.LA(1) 

+

4330 if _la == 42 or _la == 72 or _la == 108 or _la == 150: 

+

4331 self.state = 894 

+

4332 localctx.bindingIndication = self.rule_BindingIndication() 

+

4333 self.state = 895 

+

4334 self.match(VHDLParser.TOK_SEMICOL) 

+

4335 

+

4336 self.state = 900 

+

4337 self._errHandler.sync(self) 

+

4338 _la = self._input.LA(1) 

+

4339 if _la == 37: 

+

4340 self.state = 899 

+

4341 localctx.blockConfiguration = self.rule_BlockConfiguration() 

+

4342 

+

4343 self.state = 902 

+

4344 self.match(VHDLParser.KW_END) 

+

4345 self.state = 903 

+

4346 self.match(VHDLParser.KW_FOR) 

+

4347 self.state = 904 

+

4348 self.match(VHDLParser.TOK_SEMICOL) 

+

4349 except RecognitionException as re: 

+

4350 localctx.exception = re 

+

4351 self._errHandler.reportError(self, re) 

+

4352 self._errHandler.recover(self, re) 

+

4353 finally: 

+

4354 self.exitRule() 

+

4355 return localctx 

+

4356 

+

4357 class Rule_ComponentDeclarationContext(ParserRuleContext): 

+

4358 __slots__ = 'parser' 

+

4359 

+

4360 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

4361 super().__init__(parent, invokingState) 

+

4362 self.parser = parser 

+

4363 self.name = None # Token 

+

4364 self.genericClause = None # Rule_GenericClauseContext 

+

4365 self.portClause = None # Rule_PortClauseContext 

+

4366 self.name2 = None # Token 

+

4367 

+

4368 def KW_COMPONENT(self, i: int = None): 

+

4369 if i is None: 

+

4370 return self.getTokens(VHDLParser.KW_COMPONENT) 

+

4371 else: 

+

4372 return self.getToken(VHDLParser.KW_COMPONENT, i) 

+

4373 

+

4374 def KW_END(self): 

+

4375 return self.getToken(VHDLParser.KW_END, 0) 

+

4376 

+

4377 def TOK_SEMICOL(self): 

+

4378 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

4379 

+

4380 def LIT_IDENTIFIER(self, i: int = None): 

+

4381 if i is None: 

+

4382 return self.getTokens(VHDLParser.LIT_IDENTIFIER) 

+

4383 else: 

+

4384 return self.getToken(VHDLParser.LIT_IDENTIFIER, i) 

+

4385 

+

4386 def KW_IS(self): 

+

4387 return self.getToken(VHDLParser.KW_IS, 0) 

+

4388 

+

4389 def rule_GenericClause(self): 

+

4390 return self.getTypedRuleContext(VHDLParser.Rule_GenericClauseContext, 0) 

+

4391 

+

4392 def rule_PortClause(self): 

+

4393 return self.getTypedRuleContext(VHDLParser.Rule_PortClauseContext, 0) 

+

4394 

+

4395 def getRuleIndex(self): 

+

4396 return VHDLParser.RULE_rule_ComponentDeclaration 

+

4397 

+

4398 def accept(self, visitor: ParseTreeVisitor): 

+

4399 if hasattr(visitor, "visitRule_ComponentDeclaration"): 

+

4400 return visitor.visitRule_ComponentDeclaration(self) 

+

4401 else: 

+

4402 return visitor.visitChildren(self) 

+

4403 

+

4404 def rule_ComponentDeclaration(self): 

+

4405 

+

4406 localctx = VHDLParser.Rule_ComponentDeclarationContext(self, self._ctx, self.state) 

+

4407 self.enterRule(localctx, 72, self.RULE_rule_ComponentDeclaration) 

+

4408 self._la = 0 # Token type 

+

4409 try: 

+

4410 self.enterOuterAlt(localctx, 1) 

+

4411 self.state = 906 

+

4412 self.match(VHDLParser.KW_COMPONENT) 

+

4413 self.state = 907 

+

4414 localctx.name = self.match(VHDLParser.LIT_IDENTIFIER) 

+

4415 self.state = 909 

+

4416 self._errHandler.sync(self) 

+

4417 _la = self._input.LA(1) 

+

4418 if _la == 50: 

+

4419 self.state = 908 

+

4420 self.match(VHDLParser.KW_IS) 

+

4421 

+

4422 self.state = 912 

+

4423 self._errHandler.sync(self) 

+

4424 _la = self._input.LA(1) 

+

4425 if _la == 42: 

+

4426 self.state = 911 

+

4427 localctx.genericClause = self.rule_GenericClause() 

+

4428 

+

4429 self.state = 915 

+

4430 self._errHandler.sync(self) 

+

4431 _la = self._input.LA(1) 

+

4432 if _la == 72: 

+

4433 self.state = 914 

+

4434 localctx.portClause = self.rule_PortClause() 

+

4435 

+

4436 self.state = 917 

+

4437 self.match(VHDLParser.KW_END) 

+

4438 self.state = 919 

+

4439 self._errHandler.sync(self) 

+

4440 _la = self._input.LA(1) 

+

4441 if _la == 23: 

+

4442 self.state = 918 

+

4443 self.match(VHDLParser.KW_COMPONENT) 

+

4444 

+

4445 self.state = 922 

+

4446 self._errHandler.sync(self) 

+

4447 _la = self._input.LA(1) 

+

4448 if _la == 163: 

+

4449 self.state = 921 

+

4450 localctx.name2 = self.match(VHDLParser.LIT_IDENTIFIER) 

+

4451 

+

4452 self.state = 924 

+

4453 self.match(VHDLParser.TOK_SEMICOL) 

+

4454 except RecognitionException as re: 

+

4455 localctx.exception = re 

+

4456 self._errHandler.reportError(self, re) 

+

4457 self._errHandler.recover(self, re) 

+

4458 finally: 

+

4459 self.exitRule() 

+

4460 return localctx 

+

4461 

+

4462 class Rule_ComponentInstantiationStatementContext(ParserRuleContext): 

+

4463 __slots__ = 'parser' 

+

4464 

+

4465 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

4466 super().__init__(parent, invokingState) 

+

4467 self.parser = parser 

+

4468 self.label = None # Token 

+

4469 self.instantiatedUnit = None # Rule_InstantiatedUnitContext 

+

4470 self.genericMapAspect = None # Rule_GenericMapAspectContext 

+

4471 self.portMapAspect = None # Rule_PortMapAspectContext 

+

4472 

+

4473 def TOK_COLON(self): 

+

4474 return self.getToken(VHDLParser.TOK_COLON, 0) 

+

4475 

+

4476 def TOK_SEMICOL(self): 

+

4477 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

4478 

+

4479 def LIT_IDENTIFIER(self): 

+

4480 return self.getToken(VHDLParser.LIT_IDENTIFIER, 0) 

+

4481 

+

4482 def rule_InstantiatedUnit(self): 

+

4483 return self.getTypedRuleContext(VHDLParser.Rule_InstantiatedUnitContext, 0) 

+

4484 

+

4485 def rule_GenericMapAspect(self): 

+

4486 return self.getTypedRuleContext(VHDLParser.Rule_GenericMapAspectContext, 0) 

+

4487 

+

4488 def rule_PortMapAspect(self): 

+

4489 return self.getTypedRuleContext(VHDLParser.Rule_PortMapAspectContext, 0) 

+

4490 

+

4491 def getRuleIndex(self): 

+

4492 return VHDLParser.RULE_rule_ComponentInstantiationStatement 

+

4493 

+

4494 def accept(self, visitor: ParseTreeVisitor): 

+

4495 if hasattr(visitor, "visitRule_ComponentInstantiationStatement"): 

+

4496 return visitor.visitRule_ComponentInstantiationStatement(self) 

+

4497 else: 

+

4498 return visitor.visitChildren(self) 

+

4499 

+

4500 def rule_ComponentInstantiationStatement(self): 

+

4501 

+

4502 localctx = VHDLParser.Rule_ComponentInstantiationStatementContext(self, self._ctx, self.state) 

+

4503 self.enterRule(localctx, 74, self.RULE_rule_ComponentInstantiationStatement) 

+

4504 self._la = 0 # Token type 

+

4505 try: 

+

4506 self.enterOuterAlt(localctx, 1) 

+

4507 self.state = 926 

+

4508 localctx.label = self.match(VHDLParser.LIT_IDENTIFIER) 

+

4509 self.state = 927 

+

4510 self.match(VHDLParser.TOK_COLON) 

+

4511 self.state = 928 

+

4512 localctx.instantiatedUnit = self.rule_InstantiatedUnit() 

+

4513 self.state = 930 

+

4514 self._errHandler.sync(self) 

+

4515 _la = self._input.LA(1) 

+

4516 if _la == 42: 

+

4517 self.state = 929 

+

4518 localctx.genericMapAspect = self.rule_GenericMapAspect() 

+

4519 

+

4520 self.state = 933 

+

4521 self._errHandler.sync(self) 

+

4522 _la = self._input.LA(1) 

+

4523 if _la == 72: 

+

4524 self.state = 932 

+

4525 localctx.portMapAspect = self.rule_PortMapAspect() 

+

4526 

+

4527 self.state = 935 

+

4528 self.match(VHDLParser.TOK_SEMICOL) 

+

4529 except RecognitionException as re: 

+

4530 localctx.exception = re 

+

4531 self._errHandler.reportError(self, re) 

+

4532 self._errHandler.recover(self, re) 

+

4533 finally: 

+

4534 self.exitRule() 

+

4535 return localctx 

+

4536 

+

4537 class Rule_ComponentSpecificationContext(ParserRuleContext): 

+

4538 __slots__ = 'parser' 

+

4539 

+

4540 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

4541 super().__init__(parent, invokingState) 

+

4542 self.parser = parser 

+

4543 self.instantiationList = None # Rule_InstantiationListContext 

+

4544 

+

4545 def TOK_COLON(self): 

+

4546 return self.getToken(VHDLParser.TOK_COLON, 0) 

+

4547 

+

4548 def rule_Name(self): 

+

4549 return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0) 

+

4550 

+

4551 def rule_InstantiationList(self): 

+

4552 return self.getTypedRuleContext(VHDLParser.Rule_InstantiationListContext, 0) 

+

4553 

+

4554 def getRuleIndex(self): 

+

4555 return VHDLParser.RULE_rule_ComponentSpecification 

+

4556 

+

4557 def accept(self, visitor: ParseTreeVisitor): 

+

4558 if hasattr(visitor, "visitRule_ComponentSpecification"): 

+

4559 return visitor.visitRule_ComponentSpecification(self) 

+

4560 else: 

+

4561 return visitor.visitChildren(self) 

+

4562 

+

4563 def rule_ComponentSpecification(self): 

+

4564 

+

4565 localctx = VHDLParser.Rule_ComponentSpecificationContext(self, self._ctx, self.state) 

+

4566 self.enterRule(localctx, 76, self.RULE_rule_ComponentSpecification) 

+

4567 try: 

+

4568 self.enterOuterAlt(localctx, 1) 

+

4569 self.state = 937 

+

4570 localctx.instantiationList = self.rule_InstantiationList() 

+

4571 self.state = 938 

+

4572 self.match(VHDLParser.TOK_COLON) 

+

4573 self.state = 939 

+

4574 self.rule_Name(0) 

+

4575 except RecognitionException as re: 

+

4576 localctx.exception = re 

+

4577 self._errHandler.reportError(self, re) 

+

4578 self._errHandler.recover(self, re) 

+

4579 finally: 

+

4580 self.exitRule() 

+

4581 return localctx 

+

4582 

+

4583 class Rule_CompositeTypeDefinitionContext(ParserRuleContext): 

+

4584 __slots__ = 'parser' 

+

4585 

+

4586 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

4587 super().__init__(parent, invokingState) 

+

4588 self.parser = parser 

+

4589 self.constrainedArrayDefinition = None # Rule_ConstrainedArrayDefinitionContext 

+

4590 self.unboundedArrayDefinition = None # Rule_UnboundArrayDefinitionContext 

+

4591 self.recordTypeDefinition = None # Rule_RecordTypeDefinitionContext 

+

4592 

+

4593 def rule_ConstrainedArrayDefinition(self): 

+

4594 return self.getTypedRuleContext(VHDLParser.Rule_ConstrainedArrayDefinitionContext, 0) 

+

4595 

+

4596 def rule_UnboundArrayDefinition(self): 

+

4597 return self.getTypedRuleContext(VHDLParser.Rule_UnboundArrayDefinitionContext, 0) 

+

4598 

+

4599 def rule_RecordTypeDefinition(self): 

+

4600 return self.getTypedRuleContext(VHDLParser.Rule_RecordTypeDefinitionContext, 0) 

+

4601 

+

4602 def getRuleIndex(self): 

+

4603 return VHDLParser.RULE_rule_CompositeTypeDefinition 

+

4604 

+

4605 def accept(self, visitor: ParseTreeVisitor): 

+

4606 if hasattr(visitor, "visitRule_CompositeTypeDefinition"): 

+

4607 return visitor.visitRule_CompositeTypeDefinition(self) 

+

4608 else: 

+

4609 return visitor.visitChildren(self) 

+

4610 

+

4611 def rule_CompositeTypeDefinition(self): 

+

4612 

+

4613 localctx = VHDLParser.Rule_CompositeTypeDefinitionContext(self, self._ctx, self.state) 

+

4614 self.enterRule(localctx, 78, self.RULE_rule_CompositeTypeDefinition) 

+

4615 try: 

+

4616 self.state = 944 

+

4617 self._errHandler.sync(self) 

+

4618 la_ = self._interp.adaptivePredict(self._input, 62, self._ctx) 

+

4619 if la_ == 1: 

+

4620 self.enterOuterAlt(localctx, 1) 

+

4621 self.state = 941 

+

4622 localctx.constrainedArrayDefinition = self.rule_ConstrainedArrayDefinition() 

+

4623 pass 

+

4624 

+

4625 elif la_ == 2: 

+

4626 self.enterOuterAlt(localctx, 2) 

+

4627 self.state = 942 

+

4628 localctx.unboundedArrayDefinition = self.rule_UnboundArrayDefinition() 

+

4629 pass 

+

4630 

+

4631 elif la_ == 3: 

+

4632 self.enterOuterAlt(localctx, 3) 

+

4633 self.state = 943 

+

4634 localctx.recordTypeDefinition = self.rule_RecordTypeDefinition() 

+

4635 pass 

+

4636 

+

4637 

+

4638 except RecognitionException as re: 

+

4639 localctx.exception = re 

+

4640 self._errHandler.reportError(self, re) 

+

4641 self._errHandler.recover(self, re) 

+

4642 finally: 

+

4643 self.exitRule() 

+

4644 return localctx 

+

4645 

+

4646 class Rule_CompoundConfigurationSpecificationContext(ParserRuleContext): 

+

4647 __slots__ = 'parser' 

+

4648 

+

4649 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

4650 super().__init__(parent, invokingState) 

+

4651 self.parser = parser 

+

4652 

+

4653 def KW_FOR(self, i: int = None): 

+

4654 if i is None: 

+

4655 return self.getTokens(VHDLParser.KW_FOR) 

+

4656 else: 

+

4657 return self.getToken(VHDLParser.KW_FOR, i) 

+

4658 

+

4659 def rule_ComponentSpecification(self): 

+

4660 return self.getTypedRuleContext(VHDLParser.Rule_ComponentSpecificationContext, 0) 

+

4661 

+

4662 def rule_BindingIndication(self): 

+

4663 return self.getTypedRuleContext(VHDLParser.Rule_BindingIndicationContext, 0) 

+

4664 

+

4665 def TOK_SEMICOL(self, i: int = None): 

+

4666 if i is None: 

+

4667 return self.getTokens(VHDLParser.TOK_SEMICOL) 

+

4668 else: 

+

4669 return self.getToken(VHDLParser.TOK_SEMICOL, i) 

+

4670 

+

4671 def KW_END(self): 

+

4672 return self.getToken(VHDLParser.KW_END, 0) 

+

4673 

+

4674 def getRuleIndex(self): 

+

4675 return VHDLParser.RULE_rule_CompoundConfigurationSpecification 

+

4676 

+

4677 def accept(self, visitor: ParseTreeVisitor): 

+

4678 if hasattr(visitor, "visitRule_CompoundConfigurationSpecification"): 

+

4679 return visitor.visitRule_CompoundConfigurationSpecification(self) 

+

4680 else: 

+

4681 return visitor.visitChildren(self) 

+

4682 

+

4683 def rule_CompoundConfigurationSpecification(self): 

+

4684 

+

4685 localctx = VHDLParser.Rule_CompoundConfigurationSpecificationContext(self, self._ctx, self.state) 

+

4686 self.enterRule(localctx, 80, self.RULE_rule_CompoundConfigurationSpecification) 

+

4687 try: 

+

4688 self.enterOuterAlt(localctx, 1) 

+

4689 self.state = 946 

+

4690 self.match(VHDLParser.KW_FOR) 

+

4691 self.state = 947 

+

4692 self.rule_ComponentSpecification() 

+

4693 self.state = 948 

+

4694 self.rule_BindingIndication() 

+

4695 self.state = 949 

+

4696 self.match(VHDLParser.TOK_SEMICOL) 

+

4697 self.state = 950 

+

4698 self.match(VHDLParser.KW_END) 

+

4699 self.state = 951 

+

4700 self.match(VHDLParser.KW_FOR) 

+

4701 self.state = 952 

+

4702 self.match(VHDLParser.TOK_SEMICOL) 

+

4703 except RecognitionException as re: 

+

4704 localctx.exception = re 

+

4705 self._errHandler.reportError(self, re) 

+

4706 self._errHandler.recover(self, re) 

+

4707 finally: 

+

4708 self.exitRule() 

+

4709 return localctx 

+

4710 

+

4711 class Rule_ConcurrentAssertionStatementContext(ParserRuleContext): 

+

4712 __slots__ = 'parser' 

+

4713 

+

4714 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

4715 super().__init__(parent, invokingState) 

+

4716 self.parser = parser 

+

4717 self.label = None # Token 

+

4718 self.postponed = None # Token 

+

4719 

+

4720 def rule_Assertion(self): 

+

4721 return self.getTypedRuleContext(VHDLParser.Rule_AssertionContext, 0) 

+

4722 

+

4723 def TOK_SEMICOL(self): 

+

4724 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

4725 

+

4726 def TOK_COLON(self): 

+

4727 return self.getToken(VHDLParser.TOK_COLON, 0) 

+

4728 

+

4729 def LIT_IDENTIFIER(self): 

+

4730 return self.getToken(VHDLParser.LIT_IDENTIFIER, 0) 

+

4731 

+

4732 def KW_POSTPONED(self): 

+

4733 return self.getToken(VHDLParser.KW_POSTPONED, 0) 

+

4734 

+

4735 def getRuleIndex(self): 

+

4736 return VHDLParser.RULE_rule_ConcurrentAssertionStatement 

+

4737 

+

4738 def accept(self, visitor: ParseTreeVisitor): 

+

4739 if hasattr(visitor, "visitRule_ConcurrentAssertionStatement"): 

+

4740 return visitor.visitRule_ConcurrentAssertionStatement(self) 

+

4741 else: 

+

4742 return visitor.visitChildren(self) 

+

4743 

+

4744 def rule_ConcurrentAssertionStatement(self): 

+

4745 

+

4746 localctx = VHDLParser.Rule_ConcurrentAssertionStatementContext(self, self._ctx, self.state) 

+

4747 self.enterRule(localctx, 82, self.RULE_rule_ConcurrentAssertionStatement) 

+

4748 self._la = 0 # Token type 

+

4749 try: 

+

4750 self.enterOuterAlt(localctx, 1) 

+

4751 self.state = 956 

+

4752 self._errHandler.sync(self) 

+

4753 _la = self._input.LA(1) 

+

4754 if _la == 163: 

+

4755 self.state = 954 

+

4756 localctx.label = self.match(VHDLParser.LIT_IDENTIFIER) 

+

4757 self.state = 955 

+

4758 self.match(VHDLParser.TOK_COLON) 

+

4759 

+

4760 self.state = 959 

+

4761 self._errHandler.sync(self) 

+

4762 _la = self._input.LA(1) 

+

4763 if _la == 73: 

+

4764 self.state = 958 

+

4765 localctx.postponed = self.match(VHDLParser.KW_POSTPONED) 

+

4766 

+

4767 self.state = 961 

+

4768 self.rule_Assertion() 

+

4769 self.state = 962 

+

4770 self.match(VHDLParser.TOK_SEMICOL) 

+

4771 except RecognitionException as re: 

+

4772 localctx.exception = re 

+

4773 self._errHandler.reportError(self, re) 

+

4774 self._errHandler.recover(self, re) 

+

4775 finally: 

+

4776 self.exitRule() 

+

4777 return localctx 

+

4778 

+

4779 class Rule_ConcurrentConditionalSignalAssignmentContext(ParserRuleContext): 

+

4780 __slots__ = 'parser' 

+

4781 

+

4782 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

4783 super().__init__(parent, invokingState) 

+

4784 self.parser = parser 

+

4785 self.guarded = None # Token 

+

4786 self.delayMechanism = None # Rule_DelayMechanismContext 

+

4787 self.conditionalWaveforms = None # Rule_ConditionalWaveformsContext 

+

4788 

+

4789 def rule_Target(self): 

+

4790 return self.getTypedRuleContext(VHDLParser.Rule_TargetContext, 0) 

+

4791 

+

4792 def TOK_SIG_ASSIGN(self): 

+

4793 return self.getToken(VHDLParser.TOK_SIG_ASSIGN, 0) 

+

4794 

+

4795 def TOK_SEMICOL(self): 

+

4796 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

4797 

+

4798 def rule_ConditionalWaveforms(self): 

+

4799 return self.getTypedRuleContext(VHDLParser.Rule_ConditionalWaveformsContext, 0) 

+

4800 

+

4801 def KW_GUARDED(self): 

+

4802 return self.getToken(VHDLParser.KW_GUARDED, 0) 

+

4803 

+

4804 def rule_DelayMechanism(self): 

+

4805 return self.getTypedRuleContext(VHDLParser.Rule_DelayMechanismContext, 0) 

+

4806 

+

4807 def getRuleIndex(self): 

+

4808 return VHDLParser.RULE_rule_ConcurrentConditionalSignalAssignment 

+

4809 

+

4810 def accept(self, visitor: ParseTreeVisitor): 

+

4811 if hasattr(visitor, "visitRule_ConcurrentConditionalSignalAssignment"): 

+

4812 return visitor.visitRule_ConcurrentConditionalSignalAssignment(self) 

+

4813 else: 

+

4814 return visitor.visitChildren(self) 

+

4815 

+

4816 def rule_ConcurrentConditionalSignalAssignment(self): 

+

4817 

+

4818 localctx = VHDLParser.Rule_ConcurrentConditionalSignalAssignmentContext(self, self._ctx, self.state) 

+

4819 self.enterRule(localctx, 84, self.RULE_rule_ConcurrentConditionalSignalAssignment) 

+

4820 self._la = 0 # Token type 

+

4821 try: 

+

4822 self.enterOuterAlt(localctx, 1) 

+

4823 self.state = 964 

+

4824 self.rule_Target() 

+

4825 self.state = 965 

+

4826 self.match(VHDLParser.TOK_SIG_ASSIGN) 

+

4827 self.state = 967 

+

4828 self._errHandler.sync(self) 

+

4829 _la = self._input.LA(1) 

+

4830 if _la == 43: 

+

4831 self.state = 966 

+

4832 localctx.guarded = self.match(VHDLParser.KW_GUARDED) 

+

4833 

+

4834 self.state = 970 

+

4835 self._errHandler.sync(self) 

+

4836 _la = self._input.LA(1) 

+

4837 if (((_la - 48)) & ~0x3f) == 0 and ((1 << (_la - 48)) & 36028814198833153) != 0: 

+

4838 self.state = 969 

+

4839 localctx.delayMechanism = self.rule_DelayMechanism() 

+

4840 

+

4841 self.state = 972 

+

4842 localctx.conditionalWaveforms = self.rule_ConditionalWaveforms() 

+

4843 self.state = 973 

+

4844 self.match(VHDLParser.TOK_SEMICOL) 

+

4845 except RecognitionException as re: 

+

4846 localctx.exception = re 

+

4847 self._errHandler.reportError(self, re) 

+

4848 self._errHandler.recover(self, re) 

+

4849 finally: 

+

4850 self.exitRule() 

+

4851 return localctx 

+

4852 

+

4853 class Rule_ConcurrentProcedureCallStatementContext(ParserRuleContext): 

+

4854 __slots__ = 'parser' 

+

4855 

+

4856 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

4857 super().__init__(parent, invokingState) 

+

4858 self.parser = parser 

+

4859 self.label = None # Token 

+

4860 self.postponed = None # Token 

+

4861 self.procedureCall = None # Rule_ProcedureCallContext 

+

4862 

+

4863 def TOK_SEMICOL(self): 

+

4864 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

4865 

+

4866 def rule_ProcedureCall(self): 

+

4867 return self.getTypedRuleContext(VHDLParser.Rule_ProcedureCallContext, 0) 

+

4868 

+

4869 def TOK_COLON(self): 

+

4870 return self.getToken(VHDLParser.TOK_COLON, 0) 

+

4871 

+

4872 def LIT_IDENTIFIER(self): 

+

4873 return self.getToken(VHDLParser.LIT_IDENTIFIER, 0) 

+

4874 

+

4875 def KW_POSTPONED(self): 

+

4876 return self.getToken(VHDLParser.KW_POSTPONED, 0) 

+

4877 

+

4878 def getRuleIndex(self): 

+

4879 return VHDLParser.RULE_rule_ConcurrentProcedureCallStatement 

+

4880 

+

4881 def accept(self, visitor: ParseTreeVisitor): 

+

4882 if hasattr(visitor, "visitRule_ConcurrentProcedureCallStatement"): 

+

4883 return visitor.visitRule_ConcurrentProcedureCallStatement(self) 

+

4884 else: 

+

4885 return visitor.visitChildren(self) 

+

4886 

+

4887 def rule_ConcurrentProcedureCallStatement(self): 

+

4888 

+

4889 localctx = VHDLParser.Rule_ConcurrentProcedureCallStatementContext(self, self._ctx, self.state) 

+

4890 self.enterRule(localctx, 86, self.RULE_rule_ConcurrentProcedureCallStatement) 

+

4891 self._la = 0 # Token type 

+

4892 try: 

+

4893 self.enterOuterAlt(localctx, 1) 

+

4894 self.state = 977 

+

4895 self._errHandler.sync(self) 

+

4896 la_ = self._interp.adaptivePredict(self._input, 67, self._ctx) 

+

4897 if la_ == 1: 

+

4898 self.state = 975 

+

4899 localctx.label = self.match(VHDLParser.LIT_IDENTIFIER) 

+

4900 self.state = 976 

+

4901 self.match(VHDLParser.TOK_COLON) 

+

4902 

+

4903 self.state = 980 

+

4904 self._errHandler.sync(self) 

+

4905 _la = self._input.LA(1) 

+

4906 if _la == 73: 

+

4907 self.state = 979 

+

4908 localctx.postponed = self.match(VHDLParser.KW_POSTPONED) 

+

4909 

+

4910 self.state = 982 

+

4911 localctx.procedureCall = self.rule_ProcedureCall() 

+

4912 self.state = 983 

+

4913 self.match(VHDLParser.TOK_SEMICOL) 

+

4914 except RecognitionException as re: 

+

4915 localctx.exception = re 

+

4916 self._errHandler.reportError(self, re) 

+

4917 self._errHandler.recover(self, re) 

+

4918 finally: 

+

4919 self.exitRule() 

+

4920 return localctx 

+

4921 

+

4922 class Rule_ConcurrentSelectedSignalAssignmentContext(ParserRuleContext): 

+

4923 __slots__ = 'parser' 

+

4924 

+

4925 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

4926 super().__init__(parent, invokingState) 

+

4927 self.parser = parser 

+

4928 self.expression = None # Rule_ExpressionContext 

+

4929 self.target = None # Rule_TargetContext 

+

4930 self.guarded = None # Token 

+

4931 self.delayMechanism = None # Rule_DelayMechanismContext 

+

4932 self.selectedWaveforms = None # Rule_SelectedWaveformsContext 

+

4933 

+

4934 def KW_WITH(self): 

+

4935 return self.getToken(VHDLParser.KW_WITH, 0) 

+

4936 

+

4937 def KW_SELECT(self): 

+

4938 return self.getToken(VHDLParser.KW_SELECT, 0) 

+

4939 

+

4940 def TOK_SIG_ASSIGN(self): 

+

4941 return self.getToken(VHDLParser.TOK_SIG_ASSIGN, 0) 

+

4942 

+

4943 def TOK_SEMICOL(self): 

+

4944 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

4945 

+

4946 def rule_Expression(self): 

+

4947 return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0) 

+

4948 

+

4949 def rule_Target(self): 

+

4950 return self.getTypedRuleContext(VHDLParser.Rule_TargetContext, 0) 

+

4951 

+

4952 def rule_SelectedWaveforms(self): 

+

4953 return self.getTypedRuleContext(VHDLParser.Rule_SelectedWaveformsContext, 0) 

+

4954 

+

4955 def KW_GUARDED(self): 

+

4956 return self.getToken(VHDLParser.KW_GUARDED, 0) 

+

4957 

+

4958 def rule_DelayMechanism(self): 

+

4959 return self.getTypedRuleContext(VHDLParser.Rule_DelayMechanismContext, 0) 

+

4960 

+

4961 def getRuleIndex(self): 

+

4962 return VHDLParser.RULE_rule_ConcurrentSelectedSignalAssignment 

+

4963 

+

4964 def accept(self, visitor: ParseTreeVisitor): 

+

4965 if hasattr(visitor, "visitRule_ConcurrentSelectedSignalAssignment"): 

+

4966 return visitor.visitRule_ConcurrentSelectedSignalAssignment(self) 

+

4967 else: 

+

4968 return visitor.visitChildren(self) 

+

4969 

+

4970 def rule_ConcurrentSelectedSignalAssignment(self): 

+

4971 

+

4972 localctx = VHDLParser.Rule_ConcurrentSelectedSignalAssignmentContext(self, self._ctx, self.state) 

+

4973 self.enterRule(localctx, 88, self.RULE_rule_ConcurrentSelectedSignalAssignment) 

+

4974 self._la = 0 # Token type 

+

4975 try: 

+

4976 self.enterOuterAlt(localctx, 1) 

+

4977 self.state = 985 

+

4978 self.match(VHDLParser.KW_WITH) 

+

4979 self.state = 986 

+

4980 localctx.expression = self.rule_Expression(0) 

+

4981 self.state = 987 

+

4982 self.match(VHDLParser.KW_SELECT) 

+

4983 self.state = 988 

+

4984 localctx.target = self.rule_Target() 

+

4985 self.state = 989 

+

4986 self.match(VHDLParser.TOK_SIG_ASSIGN) 

+

4987 self.state = 991 

+

4988 self._errHandler.sync(self) 

+

4989 _la = self._input.LA(1) 

+

4990 if _la == 43: 

+

4991 self.state = 990 

+

4992 localctx.guarded = self.match(VHDLParser.KW_GUARDED) 

+

4993 

+

4994 self.state = 994 

+

4995 self._errHandler.sync(self) 

+

4996 _la = self._input.LA(1) 

+

4997 if (((_la - 48)) & ~0x3f) == 0 and ((1 << (_la - 48)) & 36028814198833153) != 0: 

+

4998 self.state = 993 

+

4999 localctx.delayMechanism = self.rule_DelayMechanism() 

+

5000 

+

5001 self.state = 996 

+

5002 localctx.selectedWaveforms = self.rule_SelectedWaveforms() 

+

5003 self.state = 997 

+

5004 self.match(VHDLParser.TOK_SEMICOL) 

+

5005 except RecognitionException as re: 

+

5006 localctx.exception = re 

+

5007 self._errHandler.reportError(self, re) 

+

5008 self._errHandler.recover(self, re) 

+

5009 finally: 

+

5010 self.exitRule() 

+

5011 return localctx 

+

5012 

+

5013 class Rule_ConcurrentSignalAssignmentStatementContext(ParserRuleContext): 

+

5014 __slots__ = 'parser' 

+

5015 

+

5016 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

5017 super().__init__(parent, invokingState) 

+

5018 self.parser = parser 

+

5019 self.label = None # Token 

+

5020 self.postponed = None # Token 

+

5021 

+

5022 def rule_ConcurrentSimpleSignalAssignment(self): 

+

5023 return self.getTypedRuleContext(VHDLParser.Rule_ConcurrentSimpleSignalAssignmentContext, 0) 

+

5024 

+

5025 def rule_ConcurrentConditionalSignalAssignment(self): 

+

5026 return self.getTypedRuleContext(VHDLParser.Rule_ConcurrentConditionalSignalAssignmentContext, 0) 

+

5027 

+

5028 def rule_ConcurrentSelectedSignalAssignment(self): 

+

5029 return self.getTypedRuleContext(VHDLParser.Rule_ConcurrentSelectedSignalAssignmentContext, 0) 

+

5030 

+

5031 def TOK_COLON(self): 

+

5032 return self.getToken(VHDLParser.TOK_COLON, 0) 

+

5033 

+

5034 def LIT_IDENTIFIER(self): 

+

5035 return self.getToken(VHDLParser.LIT_IDENTIFIER, 0) 

+

5036 

+

5037 def KW_POSTPONED(self): 

+

5038 return self.getToken(VHDLParser.KW_POSTPONED, 0) 

+

5039 

+

5040 def getRuleIndex(self): 

+

5041 return VHDLParser.RULE_rule_ConcurrentSignalAssignmentStatement 

+

5042 

+

5043 def accept(self, visitor: ParseTreeVisitor): 

+

5044 if hasattr(visitor, "visitRule_ConcurrentSignalAssignmentStatement"): 

+

5045 return visitor.visitRule_ConcurrentSignalAssignmentStatement(self) 

+

5046 else: 

+

5047 return visitor.visitChildren(self) 

+

5048 

+

5049 def rule_ConcurrentSignalAssignmentStatement(self): 

+

5050 

+

5051 localctx = VHDLParser.Rule_ConcurrentSignalAssignmentStatementContext(self, self._ctx, self.state) 

+

5052 self.enterRule(localctx, 90, self.RULE_rule_ConcurrentSignalAssignmentStatement) 

+

5053 self._la = 0 # Token type 

+

5054 try: 

+

5055 self.enterOuterAlt(localctx, 1) 

+

5056 self.state = 1001 

+

5057 self._errHandler.sync(self) 

+

5058 la_ = self._interp.adaptivePredict(self._input, 71, self._ctx) 

+

5059 if la_ == 1: 

+

5060 self.state = 999 

+

5061 localctx.label = self.match(VHDLParser.LIT_IDENTIFIER) 

+

5062 self.state = 1000 

+

5063 self.match(VHDLParser.TOK_COLON) 

+

5064 

+

5065 self.state = 1004 

+

5066 self._errHandler.sync(self) 

+

5067 _la = self._input.LA(1) 

+

5068 if _la == 73: 

+

5069 self.state = 1003 

+

5070 localctx.postponed = self.match(VHDLParser.KW_POSTPONED) 

+

5071 

+

5072 self.state = 1009 

+

5073 self._errHandler.sync(self) 

+

5074 la_ = self._interp.adaptivePredict(self._input, 73, self._ctx) 

+

5075 if la_ == 1: 

+

5076 self.state = 1006 

+

5077 self.rule_ConcurrentSimpleSignalAssignment() 

+

5078 pass 

+

5079 

+

5080 elif la_ == 2: 

+

5081 self.state = 1007 

+

5082 self.rule_ConcurrentConditionalSignalAssignment() 

+

5083 pass 

+

5084 

+

5085 elif la_ == 3: 

+

5086 self.state = 1008 

+

5087 self.rule_ConcurrentSelectedSignalAssignment() 

+

5088 pass 

+

5089 

+

5090 

+

5091 except RecognitionException as re: 

+

5092 localctx.exception = re 

+

5093 self._errHandler.reportError(self, re) 

+

5094 self._errHandler.recover(self, re) 

+

5095 finally: 

+

5096 self.exitRule() 

+

5097 return localctx 

+

5098 

+

5099 class Rule_ConcurrentSimpleSignalAssignmentContext(ParserRuleContext): 

+

5100 __slots__ = 'parser' 

+

5101 

+

5102 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

5103 super().__init__(parent, invokingState) 

+

5104 self.parser = parser 

+

5105 self.target = None # Rule_TargetContext 

+

5106 self.guarded = None # Token 

+

5107 self.delayMechanism = None # Rule_DelayMechanismContext 

+

5108 self.waveform = None # Rule_WaveformContext 

+

5109 

+

5110 def TOK_SIG_ASSIGN(self): 

+

5111 return self.getToken(VHDLParser.TOK_SIG_ASSIGN, 0) 

+

5112 

+

5113 def TOK_SEMICOL(self): 

+

5114 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

5115 

+

5116 def rule_Target(self): 

+

5117 return self.getTypedRuleContext(VHDLParser.Rule_TargetContext, 0) 

+

5118 

+

5119 def rule_Waveform(self): 

+

5120 return self.getTypedRuleContext(VHDLParser.Rule_WaveformContext, 0) 

+

5121 

+

5122 def KW_GUARDED(self): 

+

5123 return self.getToken(VHDLParser.KW_GUARDED, 0) 

+

5124 

+

5125 def rule_DelayMechanism(self): 

+

5126 return self.getTypedRuleContext(VHDLParser.Rule_DelayMechanismContext, 0) 

+

5127 

+

5128 def getRuleIndex(self): 

+

5129 return VHDLParser.RULE_rule_ConcurrentSimpleSignalAssignment 

+

5130 

+

5131 def accept(self, visitor: ParseTreeVisitor): 

+

5132 if hasattr(visitor, "visitRule_ConcurrentSimpleSignalAssignment"): 

+

5133 return visitor.visitRule_ConcurrentSimpleSignalAssignment(self) 

+

5134 else: 

+

5135 return visitor.visitChildren(self) 

+

5136 

+

5137 def rule_ConcurrentSimpleSignalAssignment(self): 

+

5138 

+

5139 localctx = VHDLParser.Rule_ConcurrentSimpleSignalAssignmentContext(self, self._ctx, self.state) 

+

5140 self.enterRule(localctx, 92, self.RULE_rule_ConcurrentSimpleSignalAssignment) 

+

5141 self._la = 0 # Token type 

+

5142 try: 

+

5143 self.enterOuterAlt(localctx, 1) 

+

5144 self.state = 1011 

+

5145 localctx.target = self.rule_Target() 

+

5146 self.state = 1012 

+

5147 self.match(VHDLParser.TOK_SIG_ASSIGN) 

+

5148 self.state = 1014 

+

5149 self._errHandler.sync(self) 

+

5150 _la = self._input.LA(1) 

+

5151 if _la == 43: 

+

5152 self.state = 1013 

+

5153 localctx.guarded = self.match(VHDLParser.KW_GUARDED) 

+

5154 

+

5155 self.state = 1017 

+

5156 self._errHandler.sync(self) 

+

5157 _la = self._input.LA(1) 

+

5158 if (((_la - 48)) & ~0x3f) == 0 and ((1 << (_la - 48)) & 36028814198833153) != 0: 

+

5159 self.state = 1016 

+

5160 localctx.delayMechanism = self.rule_DelayMechanism() 

+

5161 

+

5162 self.state = 1019 

+

5163 localctx.waveform = self.rule_Waveform() 

+

5164 self.state = 1020 

+

5165 self.match(VHDLParser.TOK_SEMICOL) 

+

5166 except RecognitionException as re: 

+

5167 localctx.exception = re 

+

5168 self._errHandler.reportError(self, re) 

+

5169 self._errHandler.recover(self, re) 

+

5170 finally: 

+

5171 self.exitRule() 

+

5172 return localctx 

+

5173 

+

5174 class Rule_ConcurrentStatementContext(ParserRuleContext): 

+

5175 __slots__ = 'parser' 

+

5176 

+

5177 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

5178 super().__init__(parent, invokingState) 

+

5179 self.parser = parser 

+

5180 self.blockStatement = None # Rule_BlockStatementContext 

+

5181 self.processStatement = None # Rule_ProcessStatementContext 

+

5182 self.postponedProcessStatement = None # Rule_PostponedProcessStatementContext 

+

5183 self.label = None # Token 

+

5184 self.procedureCallStatement = None # Rule_ConcurrentProcedureCallStatementContext 

+

5185 self.assertionStatement = None # Rule_ConcurrentAssertionStatementContext 

+

5186 self.postponed = None # Token 

+

5187 self.signalAssignmentStatement = None # Rule_ConcurrentSignalAssignmentStatementContext 

+

5188 self.instantiationStatement = None # Rule_ComponentInstantiationStatementContext 

+

5189 self.generateStatement = None # Rule_GenerateStatementContext 

+

5190 

+

5191 def rule_BlockStatement(self): 

+

5192 return self.getTypedRuleContext(VHDLParser.Rule_BlockStatementContext, 0) 

+

5193 

+

5194 def rule_ProcessStatement(self): 

+

5195 return self.getTypedRuleContext(VHDLParser.Rule_ProcessStatementContext, 0) 

+

5196 

+

5197 def rule_PostponedProcessStatement(self): 

+

5198 return self.getTypedRuleContext(VHDLParser.Rule_PostponedProcessStatementContext, 0) 

+

5199 

+

5200 def rule_ConcurrentProcedureCallStatement(self): 

+

5201 return self.getTypedRuleContext(VHDLParser.Rule_ConcurrentProcedureCallStatementContext, 0) 

+

5202 

+

5203 def TOK_COLON(self): 

+

5204 return self.getToken(VHDLParser.TOK_COLON, 0) 

+

5205 

+

5206 def LIT_IDENTIFIER(self): 

+

5207 return self.getToken(VHDLParser.LIT_IDENTIFIER, 0) 

+

5208 

+

5209 def rule_ConcurrentAssertionStatement(self): 

+

5210 return self.getTypedRuleContext(VHDLParser.Rule_ConcurrentAssertionStatementContext, 0) 

+

5211 

+

5212 def rule_ConcurrentSignalAssignmentStatement(self): 

+

5213 return self.getTypedRuleContext(VHDLParser.Rule_ConcurrentSignalAssignmentStatementContext, 0) 

+

5214 

+

5215 def KW_POSTPONED(self): 

+

5216 return self.getToken(VHDLParser.KW_POSTPONED, 0) 

+

5217 

+

5218 def rule_ComponentInstantiationStatement(self): 

+

5219 return self.getTypedRuleContext(VHDLParser.Rule_ComponentInstantiationStatementContext, 0) 

+

5220 

+

5221 def rule_GenerateStatement(self): 

+

5222 return self.getTypedRuleContext(VHDLParser.Rule_GenerateStatementContext, 0) 

+

5223 

+

5224 def getRuleIndex(self): 

+

5225 return VHDLParser.RULE_rule_ConcurrentStatement 

+

5226 

+

5227 def accept(self, visitor: ParseTreeVisitor): 

+

5228 if hasattr(visitor, "visitRule_ConcurrentStatement"): 

+

5229 return visitor.visitRule_ConcurrentStatement(self) 

+

5230 else: 

+

5231 return visitor.visitChildren(self) 

+

5232 

+

5233 def rule_ConcurrentStatement(self): 

+

5234 

+

5235 localctx = VHDLParser.Rule_ConcurrentStatementContext(self, self._ctx, self.state) 

+

5236 self.enterRule(localctx, 94, self.RULE_rule_ConcurrentStatement) 

+

5237 try: 

+

5238 self.state = 1045 

+

5239 self._errHandler.sync(self) 

+

5240 la_ = self._interp.adaptivePredict(self._input, 80, self._ctx) 

+

5241 if la_ == 1: 

+

5242 self.enterOuterAlt(localctx, 1) 

+

5243 self.state = 1022 

+

5244 localctx.blockStatement = self.rule_BlockStatement() 

+

5245 pass 

+

5246 

+

5247 elif la_ == 2: 

+

5248 self.enterOuterAlt(localctx, 2) 

+

5249 self.state = 1023 

+

5250 localctx.processStatement = self.rule_ProcessStatement() 

+

5251 pass 

+

5252 

+

5253 elif la_ == 3: 

+

5254 self.enterOuterAlt(localctx, 3) 

+

5255 self.state = 1024 

+

5256 localctx.postponedProcessStatement = self.rule_PostponedProcessStatement() 

+

5257 pass 

+

5258 

+

5259 elif la_ == 4: 

+

5260 self.enterOuterAlt(localctx, 4) 

+

5261 self.state = 1027 

+

5262 self._errHandler.sync(self) 

+

5263 la_ = self._interp.adaptivePredict(self._input, 76, self._ctx) 

+

5264 if la_ == 1: 

+

5265 self.state = 1025 

+

5266 localctx.label = self.match(VHDLParser.LIT_IDENTIFIER) 

+

5267 self.state = 1026 

+

5268 self.match(VHDLParser.TOK_COLON) 

+

5269 

+

5270 self.state = 1029 

+

5271 localctx.procedureCallStatement = self.rule_ConcurrentProcedureCallStatement() 

+

5272 pass 

+

5273 

+

5274 elif la_ == 5: 

+

5275 self.enterOuterAlt(localctx, 5) 

+

5276 self.state = 1032 

+

5277 self._errHandler.sync(self) 

+

5278 la_ = self._interp.adaptivePredict(self._input, 77, self._ctx) 

+

5279 if la_ == 1: 

+

5280 self.state = 1030 

+

5281 localctx.label = self.match(VHDLParser.LIT_IDENTIFIER) 

+

5282 self.state = 1031 

+

5283 self.match(VHDLParser.TOK_COLON) 

+

5284 

+

5285 self.state = 1034 

+

5286 localctx.assertionStatement = self.rule_ConcurrentAssertionStatement() 

+

5287 pass 

+

5288 

+

5289 elif la_ == 6: 

+

5290 self.enterOuterAlt(localctx, 6) 

+

5291 self.state = 1037 

+

5292 self._errHandler.sync(self) 

+

5293 la_ = self._interp.adaptivePredict(self._input, 78, self._ctx) 

+

5294 if la_ == 1: 

+

5295 self.state = 1035 

+

5296 localctx.label = self.match(VHDLParser.LIT_IDENTIFIER) 

+

5297 self.state = 1036 

+

5298 self.match(VHDLParser.TOK_COLON) 

+

5299 

+

5300 self.state = 1040 

+

5301 self._errHandler.sync(self) 

+

5302 la_ = self._interp.adaptivePredict(self._input, 79, self._ctx) 

+

5303 if la_ == 1: 

+

5304 self.state = 1039 

+

5305 localctx.postponed = self.match(VHDLParser.KW_POSTPONED) 

+

5306 

+

5307 self.state = 1042 

+

5308 localctx.signalAssignmentStatement = self.rule_ConcurrentSignalAssignmentStatement() 

+

5309 pass 

+

5310 

+

5311 elif la_ == 7: 

+

5312 self.enterOuterAlt(localctx, 7) 

+

5313 self.state = 1043 

+

5314 localctx.instantiationStatement = self.rule_ComponentInstantiationStatement() 

+

5315 pass 

+

5316 

+

5317 elif la_ == 8: 

+

5318 self.enterOuterAlt(localctx, 8) 

+

5319 self.state = 1044 

+

5320 localctx.generateStatement = self.rule_GenerateStatement() 

+

5321 pass 

+

5322 

+

5323 

+

5324 except RecognitionException as re: 

+

5325 localctx.exception = re 

+

5326 self._errHandler.reportError(self, re) 

+

5327 self._errHandler.recover(self, re) 

+

5328 finally: 

+

5329 self.exitRule() 

+

5330 return localctx 

+

5331 

+

5332 class Rule_ConditionClauseContext(ParserRuleContext): 

+

5333 __slots__ = 'parser' 

+

5334 

+

5335 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

5336 super().__init__(parent, invokingState) 

+

5337 self.parser = parser 

+

5338 self.condition = None # Rule_ExpressionContext 

+

5339 

+

5340 def KW_UNTIL(self): 

+

5341 return self.getToken(VHDLParser.KW_UNTIL, 0) 

+

5342 

+

5343 def rule_Expression(self): 

+

5344 return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0) 

+

5345 

+

5346 def getRuleIndex(self): 

+

5347 return VHDLParser.RULE_rule_ConditionClause 

+

5348 

+

5349 def accept(self, visitor: ParseTreeVisitor): 

+

5350 if hasattr(visitor, "visitRule_ConditionClause"): 

+

5351 return visitor.visitRule_ConditionClause(self) 

+

5352 else: 

+

5353 return visitor.visitChildren(self) 

+

5354 

+

5355 def rule_ConditionClause(self): 

+

5356 

+

5357 localctx = VHDLParser.Rule_ConditionClauseContext(self, self._ctx, self.state) 

+

5358 self.enterRule(localctx, 96, self.RULE_rule_ConditionClause) 

+

5359 try: 

+

5360 self.enterOuterAlt(localctx, 1) 

+

5361 self.state = 1047 

+

5362 self.match(VHDLParser.KW_UNTIL) 

+

5363 self.state = 1048 

+

5364 localctx.condition = self.rule_Expression(0) 

+

5365 except RecognitionException as re: 

+

5366 localctx.exception = re 

+

5367 self._errHandler.reportError(self, re) 

+

5368 self._errHandler.recover(self, re) 

+

5369 finally: 

+

5370 self.exitRule() 

+

5371 return localctx 

+

5372 

+

5373 class Rule_ConditionalExpressionContext(ParserRuleContext): 

+

5374 __slots__ = 'parser' 

+

5375 

+

5376 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

5377 super().__init__(parent, invokingState) 

+

5378 self.parser = parser 

+

5379 self.left = None # Rule_ExpressionContext 

+

5380 self.condition = None # Rule_ExpressionContext 

+

5381 self.right = None # Rule_ExpressionContext 

+

5382 

+

5383 def rule_Expression(self, i: int = None): 

+

5384 if i is None: 

+

5385 return self.getTypedRuleContexts(VHDLParser.Rule_ExpressionContext) 

+

5386 else: 

+

5387 return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, i) 

+

5388 

+

5389 def KW_WHEN(self): 

+

5390 return self.getToken(VHDLParser.KW_WHEN, 0) 

+

5391 

+

5392 def KW_ELSE(self): 

+

5393 return self.getToken(VHDLParser.KW_ELSE, 0) 

+

5394 

+

5395 def getRuleIndex(self): 

+

5396 return VHDLParser.RULE_rule_ConditionalExpression 

+

5397 

+

5398 def accept(self, visitor: ParseTreeVisitor): 

+

5399 if hasattr(visitor, "visitRule_ConditionalExpression"): 

+

5400 return visitor.visitRule_ConditionalExpression(self) 

+

5401 else: 

+

5402 return visitor.visitChildren(self) 

+

5403 

+

5404 def rule_ConditionalExpression(self): 

+

5405 

+

5406 localctx = VHDLParser.Rule_ConditionalExpressionContext(self, self._ctx, self.state) 

+

5407 self.enterRule(localctx, 98, self.RULE_rule_ConditionalExpression) 

+

5408 self._la = 0 # Token type 

+

5409 try: 

+

5410 self.enterOuterAlt(localctx, 1) 

+

5411 self.state = 1050 

+

5412 localctx.left = self.rule_Expression(0) 

+

5413 self.state = 1056 

+

5414 self._errHandler.sync(self) 

+

5415 _la = self._input.LA(1) 

+

5416 if _la == 117: 

+

5417 self.state = 1051 

+

5418 self.match(VHDLParser.KW_WHEN) 

+

5419 self.state = 1052 

+

5420 localctx.condition = self.rule_Expression(0) 

+

5421 self.state = 1053 

+

5422 self.match(VHDLParser.KW_ELSE) 

+

5423 self.state = 1054 

+

5424 localctx.right = self.rule_Expression(0) 

+

5425 

+

5426 

+

5427 except RecognitionException as re: 

+

5428 localctx.exception = re 

+

5429 self._errHandler.reportError(self, re) 

+

5430 self._errHandler.recover(self, re) 

+

5431 finally: 

+

5432 self.exitRule() 

+

5433 return localctx 

+

5434 

+

5435 class Rule_ConditionalOrUnaffectedExpressionContext(ParserRuleContext): 

+

5436 __slots__ = 'parser' 

+

5437 

+

5438 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

5439 super().__init__(parent, invokingState) 

+

5440 self.parser = parser 

+

5441 self.left = None # Rule_ExpressionOrUnaffectedContext 

+

5442 self.condition = None # Rule_ExpressionContext 

+

5443 self.right = None # Rule_ExpressionOrUnaffectedContext 

+

5444 self.finalCondition = None # Rule_ExpressionContext 

+

5445 

+

5446 def rule_ExpressionOrUnaffected(self, i: int = None): 

+

5447 if i is None: 

+

5448 return self.getTypedRuleContexts(VHDLParser.Rule_ExpressionOrUnaffectedContext) 

+

5449 else: 

+

5450 return self.getTypedRuleContext(VHDLParser.Rule_ExpressionOrUnaffectedContext, i) 

+

5451 

+

5452 def KW_WHEN(self, i: int = None): 

+

5453 if i is None: 

+

5454 return self.getTokens(VHDLParser.KW_WHEN) 

+

5455 else: 

+

5456 return self.getToken(VHDLParser.KW_WHEN, i) 

+

5457 

+

5458 def KW_ELSE(self): 

+

5459 return self.getToken(VHDLParser.KW_ELSE, 0) 

+

5460 

+

5461 def rule_Expression(self, i: int = None): 

+

5462 if i is None: 

+

5463 return self.getTypedRuleContexts(VHDLParser.Rule_ExpressionContext) 

+

5464 else: 

+

5465 return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, i) 

+

5466 

+

5467 def getRuleIndex(self): 

+

5468 return VHDLParser.RULE_rule_ConditionalOrUnaffectedExpression 

+

5469 

+

5470 def accept(self, visitor: ParseTreeVisitor): 

+

5471 if hasattr(visitor, "visitRule_ConditionalOrUnaffectedExpression"): 

+

5472 return visitor.visitRule_ConditionalOrUnaffectedExpression(self) 

+

5473 else: 

+

5474 return visitor.visitChildren(self) 

+

5475 

+

5476 def rule_ConditionalOrUnaffectedExpression(self): 

+

5477 

+

5478 localctx = VHDLParser.Rule_ConditionalOrUnaffectedExpressionContext(self, self._ctx, self.state) 

+

5479 self.enterRule(localctx, 100, self.RULE_rule_ConditionalOrUnaffectedExpression) 

+

5480 self._la = 0 # Token type 

+

5481 try: 

+

5482 self.enterOuterAlt(localctx, 1) 

+

5483 self.state = 1058 

+

5484 localctx.left = self.rule_ExpressionOrUnaffected() 

+

5485 self.state = 1064 

+

5486 self._errHandler.sync(self) 

+

5487 la_ = self._interp.adaptivePredict(self._input, 82, self._ctx) 

+

5488 if la_ == 1: 

+

5489 self.state = 1059 

+

5490 self.match(VHDLParser.KW_WHEN) 

+

5491 self.state = 1060 

+

5492 localctx.condition = self.rule_Expression(0) 

+

5493 self.state = 1061 

+

5494 self.match(VHDLParser.KW_ELSE) 

+

5495 self.state = 1062 

+

5496 localctx.right = self.rule_ExpressionOrUnaffected() 

+

5497 

+

5498 self.state = 1068 

+

5499 self._errHandler.sync(self) 

+

5500 _la = self._input.LA(1) 

+

5501 if _la == 117: 

+

5502 self.state = 1066 

+

5503 self.match(VHDLParser.KW_WHEN) 

+

5504 self.state = 1067 

+

5505 localctx.finalCondition = self.rule_Expression(0) 

+

5506 

+

5507 

+

5508 except RecognitionException as re: 

+

5509 localctx.exception = re 

+

5510 self._errHandler.reportError(self, re) 

+

5511 self._errHandler.recover(self, re) 

+

5512 finally: 

+

5513 self.exitRule() 

+

5514 return localctx 

+

5515 

+

5516 class Rule_ConditionalSignalAssignmentContext(ParserRuleContext): 

+

5517 __slots__ = 'parser' 

+

5518 

+

5519 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

5520 super().__init__(parent, invokingState) 

+

5521 self.parser = parser 

+

5522 self.target = None # Rule_TargetContext 

+

5523 self.delayMechanism = None # Rule_DelayMechanismContext 

+

5524 self.conditionalWaveforms = None # Rule_ConditionalWaveformsContext 

+

5525 

+

5526 def TOK_SIG_ASSIGN(self): 

+

5527 return self.getToken(VHDLParser.TOK_SIG_ASSIGN, 0) 

+

5528 

+

5529 def TOK_SEMICOL(self): 

+

5530 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

5531 

+

5532 def rule_Target(self): 

+

5533 return self.getTypedRuleContext(VHDLParser.Rule_TargetContext, 0) 

+

5534 

+

5535 def rule_ConditionalWaveforms(self): 

+

5536 return self.getTypedRuleContext(VHDLParser.Rule_ConditionalWaveformsContext, 0) 

+

5537 

+

5538 def rule_DelayMechanism(self): 

+

5539 return self.getTypedRuleContext(VHDLParser.Rule_DelayMechanismContext, 0) 

+

5540 

+

5541 def getRuleIndex(self): 

+

5542 return VHDLParser.RULE_rule_ConditionalSignalAssignment 

+

5543 

+

5544 def accept(self, visitor: ParseTreeVisitor): 

+

5545 if hasattr(visitor, "visitRule_ConditionalSignalAssignment"): 

+

5546 return visitor.visitRule_ConditionalSignalAssignment(self) 

+

5547 else: 

+

5548 return visitor.visitChildren(self) 

+

5549 

+

5550 def rule_ConditionalSignalAssignment(self): 

+

5551 

+

5552 localctx = VHDLParser.Rule_ConditionalSignalAssignmentContext(self, self._ctx, self.state) 

+

5553 self.enterRule(localctx, 102, self.RULE_rule_ConditionalSignalAssignment) 

+

5554 self._la = 0 # Token type 

+

5555 try: 

+

5556 self.enterOuterAlt(localctx, 1) 

+

5557 self.state = 1070 

+

5558 localctx.target = self.rule_Target() 

+

5559 self.state = 1071 

+

5560 self.match(VHDLParser.TOK_SIG_ASSIGN) 

+

5561 self.state = 1073 

+

5562 self._errHandler.sync(self) 

+

5563 _la = self._input.LA(1) 

+

5564 if (((_la - 48)) & ~0x3f) == 0 and ((1 << (_la - 48)) & 36028814198833153) != 0: 

+

5565 self.state = 1072 

+

5566 localctx.delayMechanism = self.rule_DelayMechanism() 

+

5567 

+

5568 self.state = 1075 

+

5569 localctx.conditionalWaveforms = self.rule_ConditionalWaveforms() 

+

5570 self.state = 1076 

+

5571 self.match(VHDLParser.TOK_SEMICOL) 

+

5572 except RecognitionException as re: 

+

5573 localctx.exception = re 

+

5574 self._errHandler.reportError(self, re) 

+

5575 self._errHandler.recover(self, re) 

+

5576 finally: 

+

5577 self.exitRule() 

+

5578 return localctx 

+

5579 

+

5580 class Rule_ConditionalWaveformsContext(ParserRuleContext): 

+

5581 __slots__ = 'parser' 

+

5582 

+

5583 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

5584 super().__init__(parent, invokingState) 

+

5585 self.parser = parser 

+

5586 self.waveform = None # Rule_WaveformContext 

+

5587 self.condition = None # Rule_ExpressionContext 

+

5588 self._rule_Waveform = None # Rule_WaveformContext 

+

5589 self.waveforms = list() # of Rule_WaveformContexts 

+

5590 self._rule_Expression = None # Rule_ExpressionContext 

+

5591 self.conditions = list() # of Rule_ExpressionContexts 

+

5592 self.lastCondition = None # Rule_ExpressionContext 

+

5593 

+

5594 def KW_WHEN(self, i: int = None): 

+

5595 if i is None: 

+

5596 return self.getTokens(VHDLParser.KW_WHEN) 

+

5597 else: 

+

5598 return self.getToken(VHDLParser.KW_WHEN, i) 

+

5599 

+

5600 def rule_Waveform(self, i: int = None): 

+

5601 if i is None: 

+

5602 return self.getTypedRuleContexts(VHDLParser.Rule_WaveformContext) 

+

5603 else: 

+

5604 return self.getTypedRuleContext(VHDLParser.Rule_WaveformContext, i) 

+

5605 

+

5606 def rule_Expression(self, i: int = None): 

+

5607 if i is None: 

+

5608 return self.getTypedRuleContexts(VHDLParser.Rule_ExpressionContext) 

+

5609 else: 

+

5610 return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, i) 

+

5611 

+

5612 def KW_ELSE(self, i: int = None): 

+

5613 if i is None: 

+

5614 return self.getTokens(VHDLParser.KW_ELSE) 

+

5615 else: 

+

5616 return self.getToken(VHDLParser.KW_ELSE, i) 

+

5617 

+

5618 def getRuleIndex(self): 

+

5619 return VHDLParser.RULE_rule_ConditionalWaveforms 

+

5620 

+

5621 def accept(self, visitor: ParseTreeVisitor): 

+

5622 if hasattr(visitor, "visitRule_ConditionalWaveforms"): 

+

5623 return visitor.visitRule_ConditionalWaveforms(self) 

+

5624 else: 

+

5625 return visitor.visitChildren(self) 

+

5626 

+

5627 def rule_ConditionalWaveforms(self): 

+

5628 

+

5629 localctx = VHDLParser.Rule_ConditionalWaveformsContext(self, self._ctx, self.state) 

+

5630 self.enterRule(localctx, 104, self.RULE_rule_ConditionalWaveforms) 

+

5631 self._la = 0 # Token type 

+

5632 try: 

+

5633 self.enterOuterAlt(localctx, 1) 

+

5634 self.state = 1078 

+

5635 localctx.waveform = self.rule_Waveform() 

+

5636 self.state = 1079 

+

5637 self.match(VHDLParser.KW_WHEN) 

+

5638 self.state = 1080 

+

5639 localctx.condition = self.rule_Expression(0) 

+

5640 self.state = 1088 

+

5641 self._errHandler.sync(self) 

+

5642 _alt = self._interp.adaptivePredict(self._input, 85, self._ctx) 

+

5643 while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: 

+

5644 if _alt == 1: 

+

5645 self.state = 1081 

+

5646 self.match(VHDLParser.KW_ELSE) 

+

5647 self.state = 1082 

+

5648 localctx._rule_Waveform = self.rule_Waveform() 

+

5649 localctx.waveforms.append(localctx._rule_Waveform) 

+

5650 self.state = 1083 

+

5651 self.match(VHDLParser.KW_WHEN) 

+

5652 self.state = 1084 

+

5653 localctx._rule_Expression = self.rule_Expression(0) 

+

5654 localctx.conditions.append(localctx._rule_Expression) 

+

5655 self.state = 1090 

+

5656 self._errHandler.sync(self) 

+

5657 _alt = self._interp.adaptivePredict(self._input, 85, self._ctx) 

+

5658 

+

5659 self.state = 1093 

+

5660 self._errHandler.sync(self) 

+

5661 _la = self._input.LA(1) 

+

5662 if _la == 31: 

+

5663 self.state = 1091 

+

5664 self.match(VHDLParser.KW_ELSE) 

+

5665 self.state = 1092 

+

5666 localctx.lastCondition = self.rule_Expression(0) 

+

5667 

+

5668 

+

5669 except RecognitionException as re: 

+

5670 localctx.exception = re 

+

5671 self._errHandler.reportError(self, re) 

+

5672 self._errHandler.recover(self, re) 

+

5673 finally: 

+

5674 self.exitRule() 

+

5675 return localctx 

+

5676 

+

5677 class Rule_ConfigurationDeclarationContext(ParserRuleContext): 

+

5678 __slots__ = 'parser' 

+

5679 

+

5680 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

5681 super().__init__(parent, invokingState) 

+

5682 self.parser = parser 

+

5683 self.name = None # Token 

+

5684 self.entityName = None # Rule_NameContext 

+

5685 self._rule_ConfigurationDeclarativeItem = None # Rule_ConfigurationDeclarativeItemContext 

+

5686 self.configurationDeclarativeItem = list() # of Rule_ConfigurationDeclarativeItemContexts 

+

5687 self.blockConfiguration = None # Rule_BlockConfigurationContext 

+

5688 self.name2 = None # Token 

+

5689 

+

5690 def KW_CONFIGURATION(self, i: int = None): 

+

5691 if i is None: 

+

5692 return self.getTokens(VHDLParser.KW_CONFIGURATION) 

+

5693 else: 

+

5694 return self.getToken(VHDLParser.KW_CONFIGURATION, i) 

+

5695 

+

5696 def KW_OF(self): 

+

5697 return self.getToken(VHDLParser.KW_OF, 0) 

+

5698 

+

5699 def KW_IS(self): 

+

5700 return self.getToken(VHDLParser.KW_IS, 0) 

+

5701 

+

5702 def KW_END(self): 

+

5703 return self.getToken(VHDLParser.KW_END, 0) 

+

5704 

+

5705 def TOK_SEMICOL(self): 

+

5706 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

5707 

+

5708 def LIT_IDENTIFIER(self, i: int = None): 

+

5709 if i is None: 

+

5710 return self.getTokens(VHDLParser.LIT_IDENTIFIER) 

+

5711 else: 

+

5712 return self.getToken(VHDLParser.LIT_IDENTIFIER, i) 

+

5713 

+

5714 def rule_Name(self): 

+

5715 return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0) 

+

5716 

+

5717 def rule_BlockConfiguration(self): 

+

5718 return self.getTypedRuleContext(VHDLParser.Rule_BlockConfigurationContext, 0) 

+

5719 

+

5720 def rule_ConfigurationDeclarativeItem(self, i: int = None): 

+

5721 if i is None: 

+

5722 return self.getTypedRuleContexts(VHDLParser.Rule_ConfigurationDeclarativeItemContext) 

+

5723 else: 

+

5724 return self.getTypedRuleContext(VHDLParser.Rule_ConfigurationDeclarativeItemContext, i) 

+

5725 

+

5726 def getRuleIndex(self): 

+

5727 return VHDLParser.RULE_rule_ConfigurationDeclaration 

+

5728 

+

5729 def accept(self, visitor: ParseTreeVisitor): 

+

5730 if hasattr(visitor, "visitRule_ConfigurationDeclaration"): 

+

5731 return visitor.visitRule_ConfigurationDeclaration(self) 

+

5732 else: 

+

5733 return visitor.visitChildren(self) 

+

5734 

+

5735 def rule_ConfigurationDeclaration(self): 

+

5736 

+

5737 localctx = VHDLParser.Rule_ConfigurationDeclarationContext(self, self._ctx, self.state) 

+

5738 self.enterRule(localctx, 106, self.RULE_rule_ConfigurationDeclaration) 

+

5739 self._la = 0 # Token type 

+

5740 try: 

+

5741 self.enterOuterAlt(localctx, 1) 

+

5742 self.state = 1095 

+

5743 self.match(VHDLParser.KW_CONFIGURATION) 

+

5744 self.state = 1096 

+

5745 localctx.name = self.match(VHDLParser.LIT_IDENTIFIER) 

+

5746 self.state = 1097 

+

5747 self.match(VHDLParser.KW_OF) 

+

5748 self.state = 1098 

+

5749 localctx.entityName = self.rule_Name(0) 

+

5750 self.state = 1099 

+

5751 self.match(VHDLParser.KW_IS) 

+

5752 self.state = 1103 

+

5753 self._errHandler.sync(self) 

+

5754 _la = self._input.LA(1) 

+

5755 while _la == 15 or _la == 44 or _la == 108: 

+

5756 self.state = 1100 

+

5757 localctx._rule_ConfigurationDeclarativeItem = self.rule_ConfigurationDeclarativeItem() 

+

5758 localctx.configurationDeclarativeItem.append(localctx._rule_ConfigurationDeclarativeItem) 

+

5759 self.state = 1105 

+

5760 self._errHandler.sync(self) 

+

5761 _la = self._input.LA(1) 

+

5762 

+

5763 self.state = 1106 

+

5764 localctx.blockConfiguration = self.rule_BlockConfiguration() 

+

5765 self.state = 1107 

+

5766 self.match(VHDLParser.KW_END) 

+

5767 self.state = 1109 

+

5768 self._errHandler.sync(self) 

+

5769 _la = self._input.LA(1) 

+

5770 if _la == 24: 

+

5771 self.state = 1108 

+

5772 self.match(VHDLParser.KW_CONFIGURATION) 

+

5773 

+

5774 self.state = 1112 

+

5775 self._errHandler.sync(self) 

+

5776 _la = self._input.LA(1) 

+

5777 if _la == 163: 

+

5778 self.state = 1111 

+

5779 localctx.name2 = self.match(VHDLParser.LIT_IDENTIFIER) 

+

5780 

+

5781 self.state = 1114 

+

5782 self.match(VHDLParser.TOK_SEMICOL) 

+

5783 except RecognitionException as re: 

+

5784 localctx.exception = re 

+

5785 self._errHandler.reportError(self, re) 

+

5786 self._errHandler.recover(self, re) 

+

5787 finally: 

+

5788 self.exitRule() 

+

5789 return localctx 

+

5790 

+

5791 class Rule_ConfigurationDeclarativeItemContext(ParserRuleContext): 

+

5792 __slots__ = 'parser' 

+

5793 

+

5794 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

5795 super().__init__(parent, invokingState) 

+

5796 self.parser = parser 

+

5797 

+

5798 def rule_UseClause(self): 

+

5799 return self.getTypedRuleContext(VHDLParser.Rule_UseClauseContext, 0) 

+

5800 

+

5801 def rule_AttributeSpecification(self): 

+

5802 return self.getTypedRuleContext(VHDLParser.Rule_AttributeSpecificationContext, 0) 

+

5803 

+

5804 def rule_GroupDeclaration(self): 

+

5805 return self.getTypedRuleContext(VHDLParser.Rule_GroupDeclarationContext, 0) 

+

5806 

+

5807 def getRuleIndex(self): 

+

5808 return VHDLParser.RULE_rule_ConfigurationDeclarativeItem 

+

5809 

+

5810 def accept(self, visitor: ParseTreeVisitor): 

+

5811 if hasattr(visitor, "visitRule_ConfigurationDeclarativeItem"): 

+

5812 return visitor.visitRule_ConfigurationDeclarativeItem(self) 

+

5813 else: 

+

5814 return visitor.visitChildren(self) 

+

5815 

+

5816 def rule_ConfigurationDeclarativeItem(self): 

+

5817 

+

5818 localctx = VHDLParser.Rule_ConfigurationDeclarativeItemContext(self, self._ctx, self.state) 

+

5819 self.enterRule(localctx, 108, self.RULE_rule_ConfigurationDeclarativeItem) 

+

5820 try: 

+

5821 self.state = 1119 

+

5822 self._errHandler.sync(self) 

+

5823 token = self._input.LA(1) 

+

5824 if token in [108]: 

+

5825 self.enterOuterAlt(localctx, 1) 

+

5826 self.state = 1116 

+

5827 self.rule_UseClause() 

+

5828 pass 

+

5829 elif token in [15]: 

+

5830 self.enterOuterAlt(localctx, 2) 

+

5831 self.state = 1117 

+

5832 self.rule_AttributeSpecification() 

+

5833 pass 

+

5834 elif token in [44]: 

+

5835 self.enterOuterAlt(localctx, 3) 

+

5836 self.state = 1118 

+

5837 self.rule_GroupDeclaration() 

+

5838 pass 

+

5839 else: 

+

5840 raise NoViableAltException(self) 

+

5841 

+

5842 except RecognitionException as re: 

+

5843 localctx.exception = re 

+

5844 self._errHandler.reportError(self, re) 

+

5845 self._errHandler.recover(self, re) 

+

5846 finally: 

+

5847 self.exitRule() 

+

5848 return localctx 

+

5849 

+

5850 class Rule_ConfigurationItemContext(ParserRuleContext): 

+

5851 __slots__ = 'parser' 

+

5852 

+

5853 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

5854 super().__init__(parent, invokingState) 

+

5855 self.parser = parser 

+

5856 

+

5857 def rule_BlockConfiguration(self): 

+

5858 return self.getTypedRuleContext(VHDLParser.Rule_BlockConfigurationContext, 0) 

+

5859 

+

5860 def rule_ComponentConfiguration(self): 

+

5861 return self.getTypedRuleContext(VHDLParser.Rule_ComponentConfigurationContext, 0) 

+

5862 

+

5863 def getRuleIndex(self): 

+

5864 return VHDLParser.RULE_rule_ConfigurationItem 

+

5865 

+

5866 def accept(self, visitor: ParseTreeVisitor): 

+

5867 if hasattr(visitor, "visitRule_ConfigurationItem"): 

+

5868 return visitor.visitRule_ConfigurationItem(self) 

+

5869 else: 

+

5870 return visitor.visitChildren(self) 

+

5871 

+

5872 def rule_ConfigurationItem(self): 

+

5873 

+

5874 localctx = VHDLParser.Rule_ConfigurationItemContext(self, self._ctx, self.state) 

+

5875 self.enterRule(localctx, 110, self.RULE_rule_ConfigurationItem) 

+

5876 try: 

+

5877 self.state = 1123 

+

5878 self._errHandler.sync(self) 

+

5879 la_ = self._interp.adaptivePredict(self._input, 91, self._ctx) 

+

5880 if la_ == 1: 

+

5881 self.enterOuterAlt(localctx, 1) 

+

5882 self.state = 1121 

+

5883 self.rule_BlockConfiguration() 

+

5884 pass 

+

5885 

+

5886 elif la_ == 2: 

+

5887 self.enterOuterAlt(localctx, 2) 

+

5888 self.state = 1122 

+

5889 self.rule_ComponentConfiguration() 

+

5890 pass 

+

5891 

+

5892 

+

5893 except RecognitionException as re: 

+

5894 localctx.exception = re 

+

5895 self._errHandler.reportError(self, re) 

+

5896 self._errHandler.recover(self, re) 

+

5897 finally: 

+

5898 self.exitRule() 

+

5899 return localctx 

+

5900 

+

5901 class Rule_ConfigurationSpecificationContext(ParserRuleContext): 

+

5902 __slots__ = 'parser' 

+

5903 

+

5904 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

5905 super().__init__(parent, invokingState) 

+

5906 self.parser = parser 

+

5907 

+

5908 def rule_SimpleConfigurationSpecification(self): 

+

5909 return self.getTypedRuleContext(VHDLParser.Rule_SimpleConfigurationSpecificationContext, 0) 

+

5910 

+

5911 def rule_CompoundConfigurationSpecification(self): 

+

5912 return self.getTypedRuleContext(VHDLParser.Rule_CompoundConfigurationSpecificationContext, 0) 

+

5913 

+

5914 def getRuleIndex(self): 

+

5915 return VHDLParser.RULE_rule_ConfigurationSpecification 

+

5916 

+

5917 def accept(self, visitor: ParseTreeVisitor): 

+

5918 if hasattr(visitor, "visitRule_ConfigurationSpecification"): 

+

5919 return visitor.visitRule_ConfigurationSpecification(self) 

+

5920 else: 

+

5921 return visitor.visitChildren(self) 

+

5922 

+

5923 def rule_ConfigurationSpecification(self): 

+

5924 

+

5925 localctx = VHDLParser.Rule_ConfigurationSpecificationContext(self, self._ctx, self.state) 

+

5926 self.enterRule(localctx, 112, self.RULE_rule_ConfigurationSpecification) 

+

5927 try: 

+

5928 self.state = 1127 

+

5929 self._errHandler.sync(self) 

+

5930 la_ = self._interp.adaptivePredict(self._input, 92, self._ctx) 

+

5931 if la_ == 1: 

+

5932 self.enterOuterAlt(localctx, 1) 

+

5933 self.state = 1125 

+

5934 self.rule_SimpleConfigurationSpecification() 

+

5935 pass 

+

5936 

+

5937 elif la_ == 2: 

+

5938 self.enterOuterAlt(localctx, 2) 

+

5939 self.state = 1126 

+

5940 self.rule_CompoundConfigurationSpecification() 

+

5941 pass 

+

5942 

+

5943 

+

5944 except RecognitionException as re: 

+

5945 localctx.exception = re 

+

5946 self._errHandler.reportError(self, re) 

+

5947 self._errHandler.recover(self, re) 

+

5948 finally: 

+

5949 self.exitRule() 

+

5950 return localctx 

+

5951 

+

5952 class Rule_ConstantDeclarationContext(ParserRuleContext): 

+

5953 __slots__ = 'parser' 

+

5954 

+

5955 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

5956 super().__init__(parent, invokingState) 

+

5957 self.parser = parser 

+

5958 self.name = None # Rule_IdentifierListContext 

+

5959 self.subtypeIndication = None # Rule_SubtypeIndicationContext 

+

5960 self.expression = None # Rule_ConditionalExpressionContext 

+

5961 

+

5962 def KW_CONSTANT(self): 

+

5963 return self.getToken(VHDLParser.KW_CONSTANT, 0) 

+

5964 

+

5965 def TOK_COLON(self): 

+

5966 return self.getToken(VHDLParser.TOK_COLON, 0) 

+

5967 

+

5968 def TOK_SEMICOL(self): 

+

5969 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

5970 

+

5971 def rule_IdentifierList(self): 

+

5972 return self.getTypedRuleContext(VHDLParser.Rule_IdentifierListContext, 0) 

+

5973 

+

5974 def rule_SubtypeIndication(self): 

+

5975 return self.getTypedRuleContext(VHDLParser.Rule_SubtypeIndicationContext, 0) 

+

5976 

+

5977 def TOK_VAR_ASSIGN(self): 

+

5978 return self.getToken(VHDLParser.TOK_VAR_ASSIGN, 0) 

+

5979 

+

5980 def rule_ConditionalExpression(self): 

+

5981 return self.getTypedRuleContext(VHDLParser.Rule_ConditionalExpressionContext, 0) 

+

5982 

+

5983 def getRuleIndex(self): 

+

5984 return VHDLParser.RULE_rule_ConstantDeclaration 

+

5985 

+

5986 def accept(self, visitor: ParseTreeVisitor): 

+

5987 if hasattr(visitor, "visitRule_ConstantDeclaration"): 

+

5988 return visitor.visitRule_ConstantDeclaration(self) 

+

5989 else: 

+

5990 return visitor.visitChildren(self) 

+

5991 

+

5992 def rule_ConstantDeclaration(self): 

+

5993 

+

5994 localctx = VHDLParser.Rule_ConstantDeclarationContext(self, self._ctx, self.state) 

+

5995 self.enterRule(localctx, 114, self.RULE_rule_ConstantDeclaration) 

+

5996 self._la = 0 # Token type 

+

5997 try: 

+

5998 self.enterOuterAlt(localctx, 1) 

+

5999 self.state = 1129 

+

6000 self.match(VHDLParser.KW_CONSTANT) 

+

6001 self.state = 1130 

+

6002 localctx.name = self.rule_IdentifierList() 

+

6003 self.state = 1131 

+

6004 self.match(VHDLParser.TOK_COLON) 

+

6005 self.state = 1132 

+

6006 localctx.subtypeIndication = self.rule_SubtypeIndication() 

+

6007 self.state = 1135 

+

6008 self._errHandler.sync(self) 

+

6009 _la = self._input.LA(1) 

+

6010 if _la == 141: 

+

6011 self.state = 1133 

+

6012 self.match(VHDLParser.TOK_VAR_ASSIGN) 

+

6013 self.state = 1134 

+

6014 localctx.expression = self.rule_ConditionalExpression() 

+

6015 

+

6016 self.state = 1137 

+

6017 self.match(VHDLParser.TOK_SEMICOL) 

+

6018 except RecognitionException as re: 

+

6019 localctx.exception = re 

+

6020 self._errHandler.reportError(self, re) 

+

6021 self._errHandler.recover(self, re) 

+

6022 finally: 

+

6023 self.exitRule() 

+

6024 return localctx 

+

6025 

+

6026 class Rule_ConstrainedArrayDefinitionContext(ParserRuleContext): 

+

6027 __slots__ = 'parser' 

+

6028 

+

6029 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

6030 super().__init__(parent, invokingState) 

+

6031 self.parser = parser 

+

6032 self.subtypeIndication = None # Rule_SubtypeIndicationContext 

+

6033 

+

6034 def KW_ARRAY(self): 

+

6035 return self.getToken(VHDLParser.KW_ARRAY, 0) 

+

6036 

+

6037 def rule_IndexConstraint(self): 

+

6038 return self.getTypedRuleContext(VHDLParser.Rule_IndexConstraintContext, 0) 

+

6039 

+

6040 def KW_OF(self): 

+

6041 return self.getToken(VHDLParser.KW_OF, 0) 

+

6042 

+

6043 def rule_SubtypeIndication(self): 

+

6044 return self.getTypedRuleContext(VHDLParser.Rule_SubtypeIndicationContext, 0) 

+

6045 

+

6046 def getRuleIndex(self): 

+

6047 return VHDLParser.RULE_rule_ConstrainedArrayDefinition 

+

6048 

+

6049 def accept(self, visitor: ParseTreeVisitor): 

+

6050 if hasattr(visitor, "visitRule_ConstrainedArrayDefinition"): 

+

6051 return visitor.visitRule_ConstrainedArrayDefinition(self) 

+

6052 else: 

+

6053 return visitor.visitChildren(self) 

+

6054 

+

6055 def rule_ConstrainedArrayDefinition(self): 

+

6056 

+

6057 localctx = VHDLParser.Rule_ConstrainedArrayDefinitionContext(self, self._ctx, self.state) 

+

6058 self.enterRule(localctx, 116, self.RULE_rule_ConstrainedArrayDefinition) 

+

6059 try: 

+

6060 self.enterOuterAlt(localctx, 1) 

+

6061 self.state = 1139 

+

6062 self.match(VHDLParser.KW_ARRAY) 

+

6063 self.state = 1140 

+

6064 self.rule_IndexConstraint() 

+

6065 self.state = 1141 

+

6066 self.match(VHDLParser.KW_OF) 

+

6067 self.state = 1142 

+

6068 localctx.subtypeIndication = self.rule_SubtypeIndication() 

+

6069 except RecognitionException as re: 

+

6070 localctx.exception = re 

+

6071 self._errHandler.reportError(self, re) 

+

6072 self._errHandler.recover(self, re) 

+

6073 finally: 

+

6074 self.exitRule() 

+

6075 return localctx 

+

6076 

+

6077 class Rule_ConstraintContext(ParserRuleContext): 

+

6078 __slots__ = 'parser' 

+

6079 

+

6080 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

6081 super().__init__(parent, invokingState) 

+

6082 self.parser = parser 

+

6083 

+

6084 def rule_SimpleRange(self): 

+

6085 return self.getTypedRuleContext(VHDLParser.Rule_SimpleRangeContext, 0) 

+

6086 

+

6087 def rule_RangeConstraint(self): 

+

6088 return self.getTypedRuleContext(VHDLParser.Rule_RangeConstraintContext, 0) 

+

6089 

+

6090 def rule_ArrayConstraint(self): 

+

6091 return self.getTypedRuleContext(VHDLParser.Rule_ArrayConstraintContext, 0) 

+

6092 

+

6093 def rule_RecordConstraint(self): 

+

6094 return self.getTypedRuleContext(VHDLParser.Rule_RecordConstraintContext, 0) 

+

6095 

+

6096 def getRuleIndex(self): 

+

6097 return VHDLParser.RULE_rule_Constraint 

+

6098 

+

6099 def accept(self, visitor: ParseTreeVisitor): 

+

6100 if hasattr(visitor, "visitRule_Constraint"): 

+

6101 return visitor.visitRule_Constraint(self) 

+

6102 else: 

+

6103 return visitor.visitChildren(self) 

+

6104 

+

6105 def rule_Constraint(self): 

+

6106 

+

6107 localctx = VHDLParser.Rule_ConstraintContext(self, self._ctx, self.state) 

+

6108 self.enterRule(localctx, 118, self.RULE_rule_Constraint) 

+

6109 try: 

+

6110 self.state = 1148 

+

6111 self._errHandler.sync(self) 

+

6112 la_ = self._interp.adaptivePredict(self._input, 94, self._ctx) 

+

6113 if la_ == 1: 

+

6114 self.enterOuterAlt(localctx, 1) 

+

6115 self.state = 1144 

+

6116 self.rule_SimpleRange() 

+

6117 pass 

+

6118 

+

6119 elif la_ == 2: 

+

6120 self.enterOuterAlt(localctx, 2) 

+

6121 self.state = 1145 

+

6122 self.rule_RangeConstraint() 

+

6123 pass 

+

6124 

+

6125 elif la_ == 3: 

+

6126 self.enterOuterAlt(localctx, 3) 

+

6127 self.state = 1146 

+

6128 self.rule_ArrayConstraint() 

+

6129 pass 

+

6130 

+

6131 elif la_ == 4: 

+

6132 self.enterOuterAlt(localctx, 4) 

+

6133 self.state = 1147 

+

6134 self.rule_RecordConstraint() 

+

6135 pass 

+

6136 

+

6137 

+

6138 except RecognitionException as re: 

+

6139 localctx.exception = re 

+

6140 self._errHandler.reportError(self, re) 

+

6141 self._errHandler.recover(self, re) 

+

6142 finally: 

+

6143 self.exitRule() 

+

6144 return localctx 

+

6145 

+

6146 class Rule_ContextDeclarationContext(ParserRuleContext): 

+

6147 __slots__ = 'parser' 

+

6148 

+

6149 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

6150 super().__init__(parent, invokingState) 

+

6151 self.parser = parser 

+

6152 self.name = None # Token 

+

6153 self._rule_ContextItem = None # Rule_ContextItemContext 

+

6154 self.contextItems = list() # of Rule_ContextItemContexts 

+

6155 self.name2 = None # Token 

+

6156 

+

6157 def KW_CONTEXT(self, i: int = None): 

+

6158 if i is None: 

+

6159 return self.getTokens(VHDLParser.KW_CONTEXT) 

+

6160 else: 

+

6161 return self.getToken(VHDLParser.KW_CONTEXT, i) 

+

6162 

+

6163 def KW_IS(self): 

+

6164 return self.getToken(VHDLParser.KW_IS, 0) 

+

6165 

+

6166 def KW_END(self): 

+

6167 return self.getToken(VHDLParser.KW_END, 0) 

+

6168 

+

6169 def TOK_SEMICOL(self): 

+

6170 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

6171 

+

6172 def LIT_IDENTIFIER(self, i: int = None): 

+

6173 if i is None: 

+

6174 return self.getTokens(VHDLParser.LIT_IDENTIFIER) 

+

6175 else: 

+

6176 return self.getToken(VHDLParser.LIT_IDENTIFIER, i) 

+

6177 

+

6178 def rule_ContextItem(self, i: int = None): 

+

6179 if i is None: 

+

6180 return self.getTypedRuleContexts(VHDLParser.Rule_ContextItemContext) 

+

6181 else: 

+

6182 return self.getTypedRuleContext(VHDLParser.Rule_ContextItemContext, i) 

+

6183 

+

6184 def getRuleIndex(self): 

+

6185 return VHDLParser.RULE_rule_ContextDeclaration 

+

6186 

+

6187 def accept(self, visitor: ParseTreeVisitor): 

+

6188 if hasattr(visitor, "visitRule_ContextDeclaration"): 

+

6189 return visitor.visitRule_ContextDeclaration(self) 

+

6190 else: 

+

6191 return visitor.visitChildren(self) 

+

6192 

+

6193 def rule_ContextDeclaration(self): 

+

6194 

+

6195 localctx = VHDLParser.Rule_ContextDeclarationContext(self, self._ctx, self.state) 

+

6196 self.enterRule(localctx, 120, self.RULE_rule_ContextDeclaration) 

+

6197 self._la = 0 # Token type 

+

6198 try: 

+

6199 self.enterOuterAlt(localctx, 1) 

+

6200 self.state = 1150 

+

6201 self.match(VHDLParser.KW_CONTEXT) 

+

6202 self.state = 1151 

+

6203 localctx.name = self.match(VHDLParser.LIT_IDENTIFIER) 

+

6204 self.state = 1152 

+

6205 self.match(VHDLParser.KW_IS) 

+

6206 self.state = 1156 

+

6207 self._errHandler.sync(self) 

+

6208 _la = self._input.LA(1) 

+

6209 while _la == 26 or _la == 52 or _la == 108: 

+

6210 self.state = 1153 

+

6211 localctx._rule_ContextItem = self.rule_ContextItem() 

+

6212 localctx.contextItems.append(localctx._rule_ContextItem) 

+

6213 self.state = 1158 

+

6214 self._errHandler.sync(self) 

+

6215 _la = self._input.LA(1) 

+

6216 

+

6217 self.state = 1159 

+

6218 self.match(VHDLParser.KW_END) 

+

6219 self.state = 1161 

+

6220 self._errHandler.sync(self) 

+

6221 _la = self._input.LA(1) 

+

6222 if _la == 26: 

+

6223 self.state = 1160 

+

6224 self.match(VHDLParser.KW_CONTEXT) 

+

6225 

+

6226 self.state = 1163 

+

6227 localctx.name2 = self.match(VHDLParser.LIT_IDENTIFIER) 

+

6228 self.state = 1164 

+

6229 self.match(VHDLParser.TOK_SEMICOL) 

+

6230 except RecognitionException as re: 

+

6231 localctx.exception = re 

+

6232 self._errHandler.reportError(self, re) 

+

6233 self._errHandler.recover(self, re) 

+

6234 finally: 

+

6235 self.exitRule() 

+

6236 return localctx 

+

6237 

+

6238 class Rule_ContextItemContext(ParserRuleContext): 

+

6239 __slots__ = 'parser' 

+

6240 

+

6241 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

6242 super().__init__(parent, invokingState) 

+

6243 self.parser = parser 

+

6244 self.libraryClause = None # Rule_LibraryClauseContext 

+

6245 self.useClause = None # Rule_UseClauseContext 

+

6246 self.contextReference = None # Rule_ContextReferenceContext 

+

6247 

+

6248 def rule_LibraryClause(self): 

+

6249 return self.getTypedRuleContext(VHDLParser.Rule_LibraryClauseContext, 0) 

+

6250 

+

6251 def rule_UseClause(self): 

+

6252 return self.getTypedRuleContext(VHDLParser.Rule_UseClauseContext, 0) 

+

6253 

+

6254 def rule_ContextReference(self): 

+

6255 return self.getTypedRuleContext(VHDLParser.Rule_ContextReferenceContext, 0) 

+

6256 

+

6257 def getRuleIndex(self): 

+

6258 return VHDLParser.RULE_rule_ContextItem 

+

6259 

+

6260 def accept(self, visitor: ParseTreeVisitor): 

+

6261 if hasattr(visitor, "visitRule_ContextItem"): 

+

6262 return visitor.visitRule_ContextItem(self) 

+

6263 else: 

+

6264 return visitor.visitChildren(self) 

+

6265 

+

6266 def rule_ContextItem(self): 

+

6267 

+

6268 localctx = VHDLParser.Rule_ContextItemContext(self, self._ctx, self.state) 

+

6269 self.enterRule(localctx, 122, self.RULE_rule_ContextItem) 

+

6270 try: 

+

6271 self.state = 1169 

+

6272 self._errHandler.sync(self) 

+

6273 token = self._input.LA(1) 

+

6274 if token in [52]: 

+

6275 self.enterOuterAlt(localctx, 1) 

+

6276 self.state = 1166 

+

6277 localctx.libraryClause = self.rule_LibraryClause() 

+

6278 pass 

+

6279 elif token in [108]: 

+

6280 self.enterOuterAlt(localctx, 2) 

+

6281 self.state = 1167 

+

6282 localctx.useClause = self.rule_UseClause() 

+

6283 pass 

+

6284 elif token in [26]: 

+

6285 self.enterOuterAlt(localctx, 3) 

+

6286 self.state = 1168 

+

6287 localctx.contextReference = self.rule_ContextReference() 

+

6288 pass 

+

6289 else: 

+

6290 raise NoViableAltException(self) 

+

6291 

+

6292 except RecognitionException as re: 

+

6293 localctx.exception = re 

+

6294 self._errHandler.reportError(self, re) 

+

6295 self._errHandler.recover(self, re) 

+

6296 finally: 

+

6297 self.exitRule() 

+

6298 return localctx 

+

6299 

+

6300 class Rule_ContextReferenceContext(ParserRuleContext): 

+

6301 __slots__ = 'parser' 

+

6302 

+

6303 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

6304 super().__init__(parent, invokingState) 

+

6305 self.parser = parser 

+

6306 self._rule_SelectedName2 = None # Rule_SelectedName2Context 

+

6307 self.names = list() # of Rule_SelectedName2Contexts 

+

6308 

+

6309 def KW_CONTEXT(self): 

+

6310 return self.getToken(VHDLParser.KW_CONTEXT, 0) 

+

6311 

+

6312 def TOK_SEMICOL(self): 

+

6313 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

6314 

+

6315 def rule_SelectedName2(self, i: int = None): 

+

6316 if i is None: 

+

6317 return self.getTypedRuleContexts(VHDLParser.Rule_SelectedName2Context) 

+

6318 else: 

+

6319 return self.getTypedRuleContext(VHDLParser.Rule_SelectedName2Context, i) 

+

6320 

+

6321 def TOK_COLON(self, i: int = None): 

+

6322 if i is None: 

+

6323 return self.getTokens(VHDLParser.TOK_COLON) 

+

6324 else: 

+

6325 return self.getToken(VHDLParser.TOK_COLON, i) 

+

6326 

+

6327 def getRuleIndex(self): 

+

6328 return VHDLParser.RULE_rule_ContextReference 

+

6329 

+

6330 def accept(self, visitor: ParseTreeVisitor): 

+

6331 if hasattr(visitor, "visitRule_ContextReference"): 

+

6332 return visitor.visitRule_ContextReference(self) 

+

6333 else: 

+

6334 return visitor.visitChildren(self) 

+

6335 

+

6336 def rule_ContextReference(self): 

+

6337 

+

6338 localctx = VHDLParser.Rule_ContextReferenceContext(self, self._ctx, self.state) 

+

6339 self.enterRule(localctx, 124, self.RULE_rule_ContextReference) 

+

6340 self._la = 0 # Token type 

+

6341 try: 

+

6342 self.enterOuterAlt(localctx, 1) 

+

6343 self.state = 1171 

+

6344 self.match(VHDLParser.KW_CONTEXT) 

+

6345 self.state = 1172 

+

6346 localctx._rule_SelectedName2 = self.rule_SelectedName2() 

+

6347 localctx.names.append(localctx._rule_SelectedName2) 

+

6348 self.state = 1177 

+

6349 self._errHandler.sync(self) 

+

6350 _la = self._input.LA(1) 

+

6351 while _la == 149: 

+

6352 self.state = 1173 

+

6353 self.match(VHDLParser.TOK_COLON) 

+

6354 self.state = 1174 

+

6355 localctx._rule_SelectedName2 = self.rule_SelectedName2() 

+

6356 localctx.names.append(localctx._rule_SelectedName2) 

+

6357 self.state = 1179 

+

6358 self._errHandler.sync(self) 

+

6359 _la = self._input.LA(1) 

+

6360 

+

6361 self.state = 1180 

+

6362 self.match(VHDLParser.TOK_SEMICOL) 

+

6363 except RecognitionException as re: 

+

6364 localctx.exception = re 

+

6365 self._errHandler.reportError(self, re) 

+

6366 self._errHandler.recover(self, re) 

+

6367 finally: 

+

6368 self.exitRule() 

+

6369 return localctx 

+

6370 

+

6371 class Rule_DelayMechanismContext(ParserRuleContext): 

+

6372 __slots__ = 'parser' 

+

6373 

+

6374 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

6375 super().__init__(parent, invokingState) 

+

6376 self.parser = parser 

+

6377 self.expression = None # Rule_ExpressionContext 

+

6378 

+

6379 def KW_TRANSPORT(self): 

+

6380 return self.getToken(VHDLParser.KW_TRANSPORT, 0) 

+

6381 

+

6382 def KW_INERTIAL(self): 

+

6383 return self.getToken(VHDLParser.KW_INERTIAL, 0) 

+

6384 

+

6385 def KW_REJECT(self): 

+

6386 return self.getToken(VHDLParser.KW_REJECT, 0) 

+

6387 

+

6388 def rule_Expression(self): 

+

6389 return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0) 

+

6390 

+

6391 def getRuleIndex(self): 

+

6392 return VHDLParser.RULE_rule_DelayMechanism 

+

6393 

+

6394 def accept(self, visitor: ParseTreeVisitor): 

+

6395 if hasattr(visitor, "visitRule_DelayMechanism"): 

+

6396 return visitor.visitRule_DelayMechanism(self) 

+

6397 else: 

+

6398 return visitor.visitChildren(self) 

+

6399 

+

6400 def rule_DelayMechanism(self): 

+

6401 

+

6402 localctx = VHDLParser.Rule_DelayMechanismContext(self, self._ctx, self.state) 

+

6403 self.enterRule(localctx, 126, self.RULE_rule_DelayMechanism) 

+

6404 self._la = 0 # Token type 

+

6405 try: 

+

6406 self.state = 1188 

+

6407 self._errHandler.sync(self) 

+

6408 token = self._input.LA(1) 

+

6409 if token in [103]: 

+

6410 self.enterOuterAlt(localctx, 1) 

+

6411 self.state = 1182 

+

6412 self.match(VHDLParser.KW_TRANSPORT) 

+

6413 pass 

+

6414 elif token in [48, 82]: 

+

6415 self.enterOuterAlt(localctx, 2) 

+

6416 self.state = 1185 

+

6417 self._errHandler.sync(self) 

+

6418 _la = self._input.LA(1) 

+

6419 if _la == 82: 

+

6420 self.state = 1183 

+

6421 self.match(VHDLParser.KW_REJECT) 

+

6422 self.state = 1184 

+

6423 localctx.expression = self.rule_Expression(0) 

+

6424 

+

6425 self.state = 1187 

+

6426 self.match(VHDLParser.KW_INERTIAL) 

+

6427 pass 

+

6428 else: 

+

6429 raise NoViableAltException(self) 

+

6430 

+

6431 except RecognitionException as re: 

+

6432 localctx.exception = re 

+

6433 self._errHandler.reportError(self, re) 

+

6434 self._errHandler.recover(self, re) 

+

6435 finally: 

+

6436 self.exitRule() 

+

6437 return localctx 

+

6438 

+

6439 class Rule_DesignFileContext(ParserRuleContext): 

+

6440 __slots__ = 'parser' 

+

6441 

+

6442 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

6443 super().__init__(parent, invokingState) 

+

6444 self.parser = parser 

+

6445 self._rule_DesignUnit = None # Rule_DesignUnitContext 

+

6446 self.designUnits = list() # of Rule_DesignUnitContexts 

+

6447 

+

6448 def EOF(self): 

+

6449 return self.getToken(VHDLParser.EOF, 0) 

+

6450 

+

6451 def rule_DesignUnit(self, i: int = None): 

+

6452 if i is None: 

+

6453 return self.getTypedRuleContexts(VHDLParser.Rule_DesignUnitContext) 

+

6454 else: 

+

6455 return self.getTypedRuleContext(VHDLParser.Rule_DesignUnitContext, i) 

+

6456 

+

6457 def getRuleIndex(self): 

+

6458 return VHDLParser.RULE_rule_DesignFile 

+

6459 

+

6460 def accept(self, visitor: ParseTreeVisitor): 

+

6461 if hasattr(visitor, "visitRule_DesignFile"): 

+

6462 return visitor.visitRule_DesignFile(self) 

+

6463 else: 

+

6464 return visitor.visitChildren(self) 

+

6465 

+

6466 def rule_DesignFile(self): 

+

6467 

+

6468 localctx = VHDLParser.Rule_DesignFileContext(self, self._ctx, self.state) 

+

6469 self.enterRule(localctx, 128, self.RULE_rule_DesignFile) 

+

6470 self._la = 0 # Token type 

+

6471 try: 

+

6472 self.enterOuterAlt(localctx, 1) 

+

6473 self.state = 1191 

+

6474 self._errHandler.sync(self) 

+

6475 _la = self._input.LA(1) 

+

6476 while True: 

+

6477 self.state = 1190 

+

6478 localctx._rule_DesignUnit = self.rule_DesignUnit() 

+

6479 localctx.designUnits.append(localctx._rule_DesignUnit) 

+

6480 self.state = 1193 

+

6481 self._errHandler.sync(self) 

+

6482 _la = self._input.LA(1) 

+

6483 if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 4503616891129856) != 0) or _la == 70 or _la == 108): 

+

6484 break 

+

6485 

+

6486 self.state = 1195 

+

6487 self.match(VHDLParser.EOF) 

+

6488 except RecognitionException as re: 

+

6489 localctx.exception = re 

+

6490 self._errHandler.reportError(self, re) 

+

6491 self._errHandler.recover(self, re) 

+

6492 finally: 

+

6493 self.exitRule() 

+

6494 return localctx 

+

6495 

+

6496 class Rule_DesignUnitContext(ParserRuleContext): 

+

6497 __slots__ = 'parser' 

+

6498 

+

6499 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

6500 super().__init__(parent, invokingState) 

+

6501 self.parser = parser 

+

6502 self._rule_ContextItem = None # Rule_ContextItemContext 

+

6503 self.contextItems = list() # of Rule_ContextItemContexts 

+

6504 self.libraryUnit = None # Rule_LibraryUnitContext 

+

6505 

+

6506 def rule_LibraryUnit(self): 

+

6507 return self.getTypedRuleContext(VHDLParser.Rule_LibraryUnitContext, 0) 

+

6508 

+

6509 def rule_ContextItem(self, i: int = None): 

+

6510 if i is None: 

+

6511 return self.getTypedRuleContexts(VHDLParser.Rule_ContextItemContext) 

+

6512 else: 

+

6513 return self.getTypedRuleContext(VHDLParser.Rule_ContextItemContext, i) 

+

6514 

+

6515 def getRuleIndex(self): 

+

6516 return VHDLParser.RULE_rule_DesignUnit 

+

6517 

+

6518 def accept(self, visitor: ParseTreeVisitor): 

+

6519 if hasattr(visitor, "visitRule_DesignUnit"): 

+

6520 return visitor.visitRule_DesignUnit(self) 

+

6521 else: 

+

6522 return visitor.visitChildren(self) 

+

6523 

+

6524 def rule_DesignUnit(self): 

+

6525 

+

6526 localctx = VHDLParser.Rule_DesignUnitContext(self, self._ctx, self.state) 

+

6527 self.enterRule(localctx, 130, self.RULE_rule_DesignUnit) 

+

6528 try: 

+

6529 self.enterOuterAlt(localctx, 1) 

+

6530 self.state = 1200 

+

6531 self._errHandler.sync(self) 

+

6532 _alt = self._interp.adaptivePredict(self._input, 102, self._ctx) 

+

6533 while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: 

+

6534 if _alt == 1: 

+

6535 self.state = 1197 

+

6536 localctx._rule_ContextItem = self.rule_ContextItem() 

+

6537 localctx.contextItems.append(localctx._rule_ContextItem) 

+

6538 self.state = 1202 

+

6539 self._errHandler.sync(self) 

+

6540 _alt = self._interp.adaptivePredict(self._input, 102, self._ctx) 

+

6541 

+

6542 self.state = 1203 

+

6543 localctx.libraryUnit = self.rule_LibraryUnit() 

+

6544 except RecognitionException as re: 

+

6545 localctx.exception = re 

+

6546 self._errHandler.reportError(self, re) 

+

6547 self._errHandler.recover(self, re) 

+

6548 finally: 

+

6549 self.exitRule() 

+

6550 return localctx 

+

6551 

+

6552 class Rule_DesignatorContext(ParserRuleContext): 

+

6553 __slots__ = 'parser' 

+

6554 

+

6555 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

6556 super().__init__(parent, invokingState) 

+

6557 self.parser = parser 

+

6558 

+

6559 def LIT_IDENTIFIER(self): 

+

6560 return self.getToken(VHDLParser.LIT_IDENTIFIER, 0) 

+

6561 

+

6562 def LIT_STRING(self): 

+

6563 return self.getToken(VHDLParser.LIT_STRING, 0) 

+

6564 

+

6565 def getRuleIndex(self): 

+

6566 return VHDLParser.RULE_rule_Designator 

+

6567 

+

6568 def accept(self, visitor: ParseTreeVisitor): 

+

6569 if hasattr(visitor, "visitRule_Designator"): 

+

6570 return visitor.visitRule_Designator(self) 

+

6571 else: 

+

6572 return visitor.visitChildren(self) 

+

6573 

+

6574 def rule_Designator(self): 

+

6575 

+

6576 localctx = VHDLParser.Rule_DesignatorContext(self, self._ctx, self.state) 

+

6577 self.enterRule(localctx, 132, self.RULE_rule_Designator) 

+

6578 self._la = 0 # Token type 

+

6579 try: 

+

6580 self.enterOuterAlt(localctx, 1) 

+

6581 self.state = 1205 

+

6582 _la = self._input.LA(1) 

+

6583 if not (_la == 162 or _la == 163): 

+

6584 self._errHandler.recoverInline(self) 

+

6585 else: 

+

6586 self._errHandler.reportMatch(self) 

+

6587 self.consume() 

+

6588 except RecognitionException as re: 

+

6589 localctx.exception = re 

+

6590 self._errHandler.reportError(self, re) 

+

6591 self._errHandler.recover(self, re) 

+

6592 finally: 

+

6593 self.exitRule() 

+

6594 return localctx 

+

6595 

+

6596 class Rule_DirectionContext(ParserRuleContext): 

+

6597 __slots__ = 'parser' 

+

6598 

+

6599 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

6600 super().__init__(parent, invokingState) 

+

6601 self.parser = parser 

+

6602 self.direction = None # Token 

+

6603 

+

6604 def KW_TO(self): 

+

6605 return self.getToken(VHDLParser.KW_TO, 0) 

+

6606 

+

6607 def KW_DOWNTO(self): 

+

6608 return self.getToken(VHDLParser.KW_DOWNTO, 0) 

+

6609 

+

6610 def getRuleIndex(self): 

+

6611 return VHDLParser.RULE_rule_Direction 

+

6612 

+

6613 def accept(self, visitor: ParseTreeVisitor): 

+

6614 if hasattr(visitor, "visitRule_Direction"): 

+

6615 return visitor.visitRule_Direction(self) 

+

6616 else: 

+

6617 return visitor.visitChildren(self) 

+

6618 

+

6619 def rule_Direction(self): 

+

6620 

+

6621 localctx = VHDLParser.Rule_DirectionContext(self, self._ctx, self.state) 

+

6622 self.enterRule(localctx, 134, self.RULE_rule_Direction) 

+

6623 self._la = 0 # Token type 

+

6624 try: 

+

6625 self.enterOuterAlt(localctx, 1) 

+

6626 self.state = 1207 

+

6627 localctx.direction = self._input.LT(1) 

+

6628 _la = self._input.LA(1) 

+

6629 if not (_la == 30 or _la == 102): 

+

6630 localctx.direction = self._errHandler.recoverInline(self) 

+

6631 else: 

+

6632 self._errHandler.reportMatch(self) 

+

6633 self.consume() 

+

6634 except RecognitionException as re: 

+

6635 localctx.exception = re 

+

6636 self._errHandler.reportError(self, re) 

+

6637 self._errHandler.recover(self, re) 

+

6638 finally: 

+

6639 self.exitRule() 

+

6640 return localctx 

+

6641 

+

6642 class Rule_DisconnectionSpecificationContext(ParserRuleContext): 

+

6643 __slots__ = 'parser' 

+

6644 

+

6645 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

6646 super().__init__(parent, invokingState) 

+

6647 self.parser = parser 

+

6648 self.guardedSignalSpecification = None # Rule_GuardedSignalSpecificationContext 

+

6649 self.expression = None # Rule_ExpressionContext 

+

6650 

+

6651 def KW_DISCONNECT(self): 

+

6652 return self.getToken(VHDLParser.KW_DISCONNECT, 0) 

+

6653 

+

6654 def KW_AFTER(self): 

+

6655 return self.getToken(VHDLParser.KW_AFTER, 0) 

+

6656 

+

6657 def TOK_SEMICOL(self): 

+

6658 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

6659 

+

6660 def rule_GuardedSignalSpecification(self): 

+

6661 return self.getTypedRuleContext(VHDLParser.Rule_GuardedSignalSpecificationContext, 0) 

+

6662 

+

6663 def rule_Expression(self): 

+

6664 return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0) 

+

6665 

+

6666 def getRuleIndex(self): 

+

6667 return VHDLParser.RULE_rule_DisconnectionSpecification 

+

6668 

+

6669 def accept(self, visitor: ParseTreeVisitor): 

+

6670 if hasattr(visitor, "visitRule_DisconnectionSpecification"): 

+

6671 return visitor.visitRule_DisconnectionSpecification(self) 

+

6672 else: 

+

6673 return visitor.visitChildren(self) 

+

6674 

+

6675 def rule_DisconnectionSpecification(self): 

+

6676 

+

6677 localctx = VHDLParser.Rule_DisconnectionSpecificationContext(self, self._ctx, self.state) 

+

6678 self.enterRule(localctx, 136, self.RULE_rule_DisconnectionSpecification) 

+

6679 try: 

+

6680 self.enterOuterAlt(localctx, 1) 

+

6681 self.state = 1209 

+

6682 self.match(VHDLParser.KW_DISCONNECT) 

+

6683 self.state = 1210 

+

6684 localctx.guardedSignalSpecification = self.rule_GuardedSignalSpecification() 

+

6685 self.state = 1211 

+

6686 self.match(VHDLParser.KW_AFTER) 

+

6687 self.state = 1212 

+

6688 localctx.expression = self.rule_Expression(0) 

+

6689 self.state = 1213 

+

6690 self.match(VHDLParser.TOK_SEMICOL) 

+

6691 except RecognitionException as re: 

+

6692 localctx.exception = re 

+

6693 self._errHandler.reportError(self, re) 

+

6694 self._errHandler.recover(self, re) 

+

6695 finally: 

+

6696 self.exitRule() 

+

6697 return localctx 

+

6698 

+

6699 class Rule_DiscreteRangeContext(ParserRuleContext): 

+

6700 __slots__ = 'parser' 

+

6701 

+

6702 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

6703 super().__init__(parent, invokingState) 

+

6704 self.parser = parser 

+

6705 self.subtypeIndication = None # Rule_SubtypeIndicationContext 

+

6706 self.range_ = None # Rule_RangeContext 

+

6707 

+

6708 def rule_SubtypeIndication(self): 

+

6709 return self.getTypedRuleContext(VHDLParser.Rule_SubtypeIndicationContext, 0) 

+

6710 

+

6711 def rule_Range(self): 

+

6712 return self.getTypedRuleContext(VHDLParser.Rule_RangeContext, 0) 

+

6713 

+

6714 def getRuleIndex(self): 

+

6715 return VHDLParser.RULE_rule_DiscreteRange 

+

6716 

+

6717 def accept(self, visitor: ParseTreeVisitor): 

+

6718 if hasattr(visitor, "visitRule_DiscreteRange"): 

+

6719 return visitor.visitRule_DiscreteRange(self) 

+

6720 else: 

+

6721 return visitor.visitChildren(self) 

+

6722 

+

6723 def rule_DiscreteRange(self): 

+

6724 

+

6725 localctx = VHDLParser.Rule_DiscreteRangeContext(self, self._ctx, self.state) 

+

6726 self.enterRule(localctx, 138, self.RULE_rule_DiscreteRange) 

+

6727 try: 

+

6728 self.state = 1217 

+

6729 self._errHandler.sync(self) 

+

6730 la_ = self._interp.adaptivePredict(self._input, 103, self._ctx) 

+

6731 if la_ == 1: 

+

6732 self.enterOuterAlt(localctx, 1) 

+

6733 self.state = 1215 

+

6734 localctx.subtypeIndication = self.rule_SubtypeIndication() 

+

6735 pass 

+

6736 

+

6737 elif la_ == 2: 

+

6738 self.enterOuterAlt(localctx, 2) 

+

6739 self.state = 1216 

+

6740 localctx.range_ = self.rule_Range() 

+

6741 pass 

+

6742 

+

6743 

+

6744 except RecognitionException as re: 

+

6745 localctx.exception = re 

+

6746 self._errHandler.reportError(self, re) 

+

6747 self._errHandler.recover(self, re) 

+

6748 finally: 

+

6749 self.exitRule() 

+

6750 return localctx 

+

6751 

+

6752 class Rule_DiscreteIncompleteTypeDefinitionContext(ParserRuleContext): 

+

6753 __slots__ = 'parser' 

+

6754 

+

6755 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

6756 super().__init__(parent, invokingState) 

+

6757 self.parser = parser 

+

6758 

+

6759 def TOK_LP(self): 

+

6760 return self.getToken(VHDLParser.TOK_LP, 0) 

+

6761 

+

6762 def TOK_BOX(self): 

+

6763 return self.getToken(VHDLParser.TOK_BOX, 0) 

+

6764 

+

6765 def TOK_RP(self): 

+

6766 return self.getToken(VHDLParser.TOK_RP, 0) 

+

6767 

+

6768 def getRuleIndex(self): 

+

6769 return VHDLParser.RULE_rule_DiscreteIncompleteTypeDefinition 

+

6770 

+

6771 def accept(self, visitor: ParseTreeVisitor): 

+

6772 if hasattr(visitor, "visitRule_DiscreteIncompleteTypeDefinition"): 

+

6773 return visitor.visitRule_DiscreteIncompleteTypeDefinition(self) 

+

6774 else: 

+

6775 return visitor.visitChildren(self) 

+

6776 

+

6777 def rule_DiscreteIncompleteTypeDefinition(self): 

+

6778 

+

6779 localctx = VHDLParser.Rule_DiscreteIncompleteTypeDefinitionContext(self, self._ctx, self.state) 

+

6780 self.enterRule(localctx, 140, self.RULE_rule_DiscreteIncompleteTypeDefinition) 

+

6781 try: 

+

6782 self.enterOuterAlt(localctx, 1) 

+

6783 self.state = 1219 

+

6784 self.match(VHDLParser.TOK_LP) 

+

6785 self.state = 1220 

+

6786 self.match(VHDLParser.TOK_BOX) 

+

6787 self.state = 1221 

+

6788 self.match(VHDLParser.TOK_RP) 

+

6789 except RecognitionException as re: 

+

6790 localctx.exception = re 

+

6791 self._errHandler.reportError(self, re) 

+

6792 self._errHandler.recover(self, re) 

+

6793 finally: 

+

6794 self.exitRule() 

+

6795 return localctx 

+

6796 

+

6797 class Rule_ElementArrayModeViewIndicationContext(ParserRuleContext): 

+

6798 __slots__ = 'parser' 

+

6799 

+

6800 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

6801 super().__init__(parent, invokingState) 

+

6802 self.parser = parser 

+

6803 self.name = None # Rule_NameContext 

+

6804 

+

6805 def KW_VIEW(self): 

+

6806 return self.getToken(VHDLParser.KW_VIEW, 0) 

+

6807 

+

6808 def TOK_LP(self): 

+

6809 return self.getToken(VHDLParser.TOK_LP, 0) 

+

6810 

+

6811 def TOK_RP(self): 

+

6812 return self.getToken(VHDLParser.TOK_RP, 0) 

+

6813 

+

6814 def rule_Name(self): 

+

6815 return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0) 

+

6816 

+

6817 def getRuleIndex(self): 

+

6818 return VHDLParser.RULE_rule_ElementArrayModeViewIndication 

+

6819 

+

6820 def accept(self, visitor: ParseTreeVisitor): 

+

6821 if hasattr(visitor, "visitRule_ElementArrayModeViewIndication"): 

+

6822 return visitor.visitRule_ElementArrayModeViewIndication(self) 

+

6823 else: 

+

6824 return visitor.visitChildren(self) 

+

6825 

+

6826 def rule_ElementArrayModeViewIndication(self): 

+

6827 

+

6828 localctx = VHDLParser.Rule_ElementArrayModeViewIndicationContext(self, self._ctx, self.state) 

+

6829 self.enterRule(localctx, 142, self.RULE_rule_ElementArrayModeViewIndication) 

+

6830 try: 

+

6831 self.enterOuterAlt(localctx, 1) 

+

6832 self.state = 1223 

+

6833 self.match(VHDLParser.KW_VIEW) 

+

6834 self.state = 1224 

+

6835 self.match(VHDLParser.TOK_LP) 

+

6836 self.state = 1225 

+

6837 localctx.name = self.rule_Name(0) 

+

6838 self.state = 1226 

+

6839 self.match(VHDLParser.TOK_RP) 

+

6840 except RecognitionException as re: 

+

6841 localctx.exception = re 

+

6842 self._errHandler.reportError(self, re) 

+

6843 self._errHandler.recover(self, re) 

+

6844 finally: 

+

6845 self.exitRule() 

+

6846 return localctx 

+

6847 

+

6848 class Rule_ElementAssociationContext(ParserRuleContext): 

+

6849 __slots__ = 'parser' 

+

6850 

+

6851 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

6852 super().__init__(parent, invokingState) 

+

6853 self.parser = parser 

+

6854 self.choices = None # Rule_ChoicesContext 

+

6855 self.expression = None # Rule_ExpressionContext 

+

6856 

+

6857 def rule_Expression(self): 

+

6858 return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0) 

+

6859 

+

6860 def TOK_RARROW(self): 

+

6861 return self.getToken(VHDLParser.TOK_RARROW, 0) 

+

6862 

+

6863 def rule_Choices(self): 

+

6864 return self.getTypedRuleContext(VHDLParser.Rule_ChoicesContext, 0) 

+

6865 

+

6866 def getRuleIndex(self): 

+

6867 return VHDLParser.RULE_rule_ElementAssociation 

+

6868 

+

6869 def accept(self, visitor: ParseTreeVisitor): 

+

6870 if hasattr(visitor, "visitRule_ElementAssociation"): 

+

6871 return visitor.visitRule_ElementAssociation(self) 

+

6872 else: 

+

6873 return visitor.visitChildren(self) 

+

6874 

+

6875 def rule_ElementAssociation(self): 

+

6876 

+

6877 localctx = VHDLParser.Rule_ElementAssociationContext(self, self._ctx, self.state) 

+

6878 self.enterRule(localctx, 144, self.RULE_rule_ElementAssociation) 

+

6879 try: 

+

6880 self.enterOuterAlt(localctx, 1) 

+

6881 self.state = 1231 

+

6882 self._errHandler.sync(self) 

+

6883 la_ = self._interp.adaptivePredict(self._input, 104, self._ctx) 

+

6884 if la_ == 1: 

+

6885 self.state = 1228 

+

6886 localctx.choices = self.rule_Choices() 

+

6887 self.state = 1229 

+

6888 self.match(VHDLParser.TOK_RARROW) 

+

6889 

+

6890 self.state = 1233 

+

6891 localctx.expression = self.rule_Expression(0) 

+

6892 except RecognitionException as re: 

+

6893 localctx.exception = re 

+

6894 self._errHandler.reportError(self, re) 

+

6895 self._errHandler.recover(self, re) 

+

6896 finally: 

+

6897 self.exitRule() 

+

6898 return localctx 

+

6899 

+

6900 class Rule_ElementConstraintContext(ParserRuleContext): 

+

6901 __slots__ = 'parser' 

+

6902 

+

6903 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

6904 super().__init__(parent, invokingState) 

+

6905 self.parser = parser 

+

6906 self.arrayConstraint = None # Rule_ArrayConstraintContext 

+

6907 self.recordConstraint = None # Rule_RecordConstraintContext 

+

6908 

+

6909 def rule_ArrayConstraint(self): 

+

6910 return self.getTypedRuleContext(VHDLParser.Rule_ArrayConstraintContext, 0) 

+

6911 

+

6912 def rule_RecordConstraint(self): 

+

6913 return self.getTypedRuleContext(VHDLParser.Rule_RecordConstraintContext, 0) 

+

6914 

+

6915 def getRuleIndex(self): 

+

6916 return VHDLParser.RULE_rule_ElementConstraint 

+

6917 

+

6918 def accept(self, visitor: ParseTreeVisitor): 

+

6919 if hasattr(visitor, "visitRule_ElementConstraint"): 

+

6920 return visitor.visitRule_ElementConstraint(self) 

+

6921 else: 

+

6922 return visitor.visitChildren(self) 

+

6923 

+

6924 def rule_ElementConstraint(self): 

+

6925 

+

6926 localctx = VHDLParser.Rule_ElementConstraintContext(self, self._ctx, self.state) 

+

6927 self.enterRule(localctx, 146, self.RULE_rule_ElementConstraint) 

+

6928 try: 

+

6929 self.state = 1237 

+

6930 self._errHandler.sync(self) 

+

6931 la_ = self._interp.adaptivePredict(self._input, 105, self._ctx) 

+

6932 if la_ == 1: 

+

6933 self.enterOuterAlt(localctx, 1) 

+

6934 self.state = 1235 

+

6935 localctx.arrayConstraint = self.rule_ArrayConstraint() 

+

6936 pass 

+

6937 

+

6938 elif la_ == 2: 

+

6939 self.enterOuterAlt(localctx, 2) 

+

6940 self.state = 1236 

+

6941 localctx.recordConstraint = self.rule_RecordConstraint() 

+

6942 pass 

+

6943 

+

6944 

+

6945 except RecognitionException as re: 

+

6946 localctx.exception = re 

+

6947 self._errHandler.reportError(self, re) 

+

6948 self._errHandler.recover(self, re) 

+

6949 finally: 

+

6950 self.exitRule() 

+

6951 return localctx 

+

6952 

+

6953 class Rule_ElementDeclarationContext(ParserRuleContext): 

+

6954 __slots__ = 'parser' 

+

6955 

+

6956 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

6957 super().__init__(parent, invokingState) 

+

6958 self.parser = parser 

+

6959 self.identifierList = None # Rule_IdentifierListContext 

+

6960 self.subtypeIndication = None # Rule_SubtypeIndicationContext 

+

6961 

+

6962 def TOK_COLON(self): 

+

6963 return self.getToken(VHDLParser.TOK_COLON, 0) 

+

6964 

+

6965 def TOK_SEMICOL(self): 

+

6966 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

6967 

+

6968 def rule_IdentifierList(self): 

+

6969 return self.getTypedRuleContext(VHDLParser.Rule_IdentifierListContext, 0) 

+

6970 

+

6971 def rule_SubtypeIndication(self): 

+

6972 return self.getTypedRuleContext(VHDLParser.Rule_SubtypeIndicationContext, 0) 

+

6973 

+

6974 def getRuleIndex(self): 

+

6975 return VHDLParser.RULE_rule_ElementDeclaration 

+

6976 

+

6977 def accept(self, visitor: ParseTreeVisitor): 

+

6978 if hasattr(visitor, "visitRule_ElementDeclaration"): 

+

6979 return visitor.visitRule_ElementDeclaration(self) 

+

6980 else: 

+

6981 return visitor.visitChildren(self) 

+

6982 

+

6983 def rule_ElementDeclaration(self): 

+

6984 

+

6985 localctx = VHDLParser.Rule_ElementDeclarationContext(self, self._ctx, self.state) 

+

6986 self.enterRule(localctx, 148, self.RULE_rule_ElementDeclaration) 

+

6987 try: 

+

6988 self.enterOuterAlt(localctx, 1) 

+

6989 self.state = 1239 

+

6990 localctx.identifierList = self.rule_IdentifierList() 

+

6991 self.state = 1240 

+

6992 self.match(VHDLParser.TOK_COLON) 

+

6993 self.state = 1241 

+

6994 localctx.subtypeIndication = self.rule_SubtypeIndication() 

+

6995 self.state = 1242 

+

6996 self.match(VHDLParser.TOK_SEMICOL) 

+

6997 except RecognitionException as re: 

+

6998 localctx.exception = re 

+

6999 self._errHandler.reportError(self, re) 

+

7000 self._errHandler.recover(self, re) 

+

7001 finally: 

+

7002 self.exitRule() 

+

7003 return localctx 

+

7004 

+

7005 class Rule_ElementModeIndicationContext(ParserRuleContext): 

+

7006 __slots__ = 'parser' 

+

7007 

+

7008 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

7009 super().__init__(parent, invokingState) 

+

7010 self.parser = parser 

+

7011 

+

7012 def rule_Mode(self): 

+

7013 return self.getTypedRuleContext(VHDLParser.Rule_ModeContext, 0) 

+

7014 

+

7015 def rule_ElementModeViewIndication(self): 

+

7016 return self.getTypedRuleContext(VHDLParser.Rule_ElementModeViewIndicationContext, 0) 

+

7017 

+

7018 def getRuleIndex(self): 

+

7019 return VHDLParser.RULE_rule_ElementModeIndication 

+

7020 

+

7021 def accept(self, visitor: ParseTreeVisitor): 

+

7022 if hasattr(visitor, "visitRule_ElementModeIndication"): 

+

7023 return visitor.visitRule_ElementModeIndication(self) 

+

7024 else: 

+

7025 return visitor.visitChildren(self) 

+

7026 

+

7027 def rule_ElementModeIndication(self): 

+

7028 

+

7029 localctx = VHDLParser.Rule_ElementModeIndicationContext(self, self._ctx, self.state) 

+

7030 self.enterRule(localctx, 150, self.RULE_rule_ElementModeIndication) 

+

7031 try: 

+

7032 self.state = 1246 

+

7033 self._errHandler.sync(self) 

+

7034 token = self._input.LA(1) 

+

7035 if token in [20, 47, 49, 53, 69]: 

+

7036 self.enterOuterAlt(localctx, 1) 

+

7037 self.state = 1244 

+

7038 self.rule_Mode() 

+

7039 pass 

+

7040 elif token in [110]: 

+

7041 self.enterOuterAlt(localctx, 2) 

+

7042 self.state = 1245 

+

7043 self.rule_ElementModeViewIndication() 

+

7044 pass 

+

7045 else: 

+

7046 raise NoViableAltException(self) 

+

7047 

+

7048 except RecognitionException as re: 

+

7049 localctx.exception = re 

+

7050 self._errHandler.reportError(self, re) 

+

7051 self._errHandler.recover(self, re) 

+

7052 finally: 

+

7053 self.exitRule() 

+

7054 return localctx 

+

7055 

+

7056 class Rule_ElementModeViewIndicationContext(ParserRuleContext): 

+

7057 __slots__ = 'parser' 

+

7058 

+

7059 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

7060 super().__init__(parent, invokingState) 

+

7061 self.parser = parser 

+

7062 

+

7063 def rule_ElementArrayModeViewIndication(self): 

+

7064 return self.getTypedRuleContext(VHDLParser.Rule_ElementArrayModeViewIndicationContext, 0) 

+

7065 

+

7066 def rule_ElementRecordModeViewIndication(self): 

+

7067 return self.getTypedRuleContext(VHDLParser.Rule_ElementRecordModeViewIndicationContext, 0) 

+

7068 

+

7069 def getRuleIndex(self): 

+

7070 return VHDLParser.RULE_rule_ElementModeViewIndication 

+

7071 

+

7072 def accept(self, visitor: ParseTreeVisitor): 

+

7073 if hasattr(visitor, "visitRule_ElementModeViewIndication"): 

+

7074 return visitor.visitRule_ElementModeViewIndication(self) 

+

7075 else: 

+

7076 return visitor.visitChildren(self) 

+

7077 

+

7078 def rule_ElementModeViewIndication(self): 

+

7079 

+

7080 localctx = VHDLParser.Rule_ElementModeViewIndicationContext(self, self._ctx, self.state) 

+

7081 self.enterRule(localctx, 152, self.RULE_rule_ElementModeViewIndication) 

+

7082 try: 

+

7083 self.state = 1250 

+

7084 self._errHandler.sync(self) 

+

7085 la_ = self._interp.adaptivePredict(self._input, 107, self._ctx) 

+

7086 if la_ == 1: 

+

7087 self.enterOuterAlt(localctx, 1) 

+

7088 self.state = 1248 

+

7089 self.rule_ElementArrayModeViewIndication() 

+

7090 pass 

+

7091 

+

7092 elif la_ == 2: 

+

7093 self.enterOuterAlt(localctx, 2) 

+

7094 self.state = 1249 

+

7095 self.rule_ElementRecordModeViewIndication() 

+

7096 pass 

+

7097 

+

7098 

+

7099 except RecognitionException as re: 

+

7100 localctx.exception = re 

+

7101 self._errHandler.reportError(self, re) 

+

7102 self._errHandler.recover(self, re) 

+

7103 finally: 

+

7104 self.exitRule() 

+

7105 return localctx 

+

7106 

+

7107 class Rule_ElementRecordModeViewIndicationContext(ParserRuleContext): 

+

7108 __slots__ = 'parser' 

+

7109 

+

7110 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

7111 super().__init__(parent, invokingState) 

+

7112 self.parser = parser 

+

7113 self.name = None # Rule_NameContext 

+

7114 

+

7115 def KW_VIEW(self): 

+

7116 return self.getToken(VHDLParser.KW_VIEW, 0) 

+

7117 

+

7118 def rule_Name(self): 

+

7119 return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0) 

+

7120 

+

7121 def getRuleIndex(self): 

+

7122 return VHDLParser.RULE_rule_ElementRecordModeViewIndication 

+

7123 

+

7124 def accept(self, visitor: ParseTreeVisitor): 

+

7125 if hasattr(visitor, "visitRule_ElementRecordModeViewIndication"): 

+

7126 return visitor.visitRule_ElementRecordModeViewIndication(self) 

+

7127 else: 

+

7128 return visitor.visitChildren(self) 

+

7129 

+

7130 def rule_ElementRecordModeViewIndication(self): 

+

7131 

+

7132 localctx = VHDLParser.Rule_ElementRecordModeViewIndicationContext(self, self._ctx, self.state) 

+

7133 self.enterRule(localctx, 154, self.RULE_rule_ElementRecordModeViewIndication) 

+

7134 try: 

+

7135 self.enterOuterAlt(localctx, 1) 

+

7136 self.state = 1252 

+

7137 self.match(VHDLParser.KW_VIEW) 

+

7138 self.state = 1253 

+

7139 localctx.name = self.rule_Name(0) 

+

7140 except RecognitionException as re: 

+

7141 localctx.exception = re 

+

7142 self._errHandler.reportError(self, re) 

+

7143 self._errHandler.recover(self, re) 

+

7144 finally: 

+

7145 self.exitRule() 

+

7146 return localctx 

+

7147 

+

7148 class Rule_ElementResolutionContext(ParserRuleContext): 

+

7149 __slots__ = 'parser' 

+

7150 

+

7151 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

7152 super().__init__(parent, invokingState) 

+

7153 self.parser = parser 

+

7154 

+

7155 def rule_ResolutionIndication(self): 

+

7156 return self.getTypedRuleContext(VHDLParser.Rule_ResolutionIndicationContext, 0) 

+

7157 

+

7158 def rule_RecordResolution(self): 

+

7159 return self.getTypedRuleContext(VHDLParser.Rule_RecordResolutionContext, 0) 

+

7160 

+

7161 def getRuleIndex(self): 

+

7162 return VHDLParser.RULE_rule_ElementResolution 

+

7163 

+

7164 def accept(self, visitor: ParseTreeVisitor): 

+

7165 if hasattr(visitor, "visitRule_ElementResolution"): 

+

7166 return visitor.visitRule_ElementResolution(self) 

+

7167 else: 

+

7168 return visitor.visitChildren(self) 

+

7169 

+

7170 def rule_ElementResolution(self): 

+

7171 

+

7172 localctx = VHDLParser.Rule_ElementResolutionContext(self, self._ctx, self.state) 

+

7173 self.enterRule(localctx, 156, self.RULE_rule_ElementResolution) 

+

7174 try: 

+

7175 self.state = 1257 

+

7176 self._errHandler.sync(self) 

+

7177 la_ = self._interp.adaptivePredict(self._input, 108, self._ctx) 

+

7178 if la_ == 1: 

+

7179 self.enterOuterAlt(localctx, 1) 

+

7180 self.state = 1255 

+

7181 self.rule_ResolutionIndication() 

+

7182 pass 

+

7183 

+

7184 elif la_ == 2: 

+

7185 self.enterOuterAlt(localctx, 2) 

+

7186 self.state = 1256 

+

7187 self.rule_RecordResolution() 

+

7188 pass 

+

7189 

+

7190 

+

7191 except RecognitionException as re: 

+

7192 localctx.exception = re 

+

7193 self._errHandler.reportError(self, re) 

+

7194 self._errHandler.recover(self, re) 

+

7195 finally: 

+

7196 self.exitRule() 

+

7197 return localctx 

+

7198 

+

7199 class Rule_EntityAspectContext(ParserRuleContext): 

+

7200 __slots__ = 'parser' 

+

7201 

+

7202 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

7203 super().__init__(parent, invokingState) 

+

7204 self.parser = parser 

+

7205 self.entityName = None # Rule_NameContext 

+

7206 self.architectureName = None # Token 

+

7207 self.configurationName = None # Rule_NameContext 

+

7208 

+

7209 def KW_ENTITY(self): 

+

7210 return self.getToken(VHDLParser.KW_ENTITY, 0) 

+

7211 

+

7212 def rule_Name(self): 

+

7213 return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0) 

+

7214 

+

7215 def TOK_LP(self): 

+

7216 return self.getToken(VHDLParser.TOK_LP, 0) 

+

7217 

+

7218 def TOK_RP(self): 

+

7219 return self.getToken(VHDLParser.TOK_RP, 0) 

+

7220 

+

7221 def LIT_IDENTIFIER(self): 

+

7222 return self.getToken(VHDLParser.LIT_IDENTIFIER, 0) 

+

7223 

+

7224 def KW_CONFIGURATION(self): 

+

7225 return self.getToken(VHDLParser.KW_CONFIGURATION, 0) 

+

7226 

+

7227 def KW_OPEN(self): 

+

7228 return self.getToken(VHDLParser.KW_OPEN, 0) 

+

7229 

+

7230 def getRuleIndex(self): 

+

7231 return VHDLParser.RULE_rule_EntityAspect 

+

7232 

+

7233 def accept(self, visitor: ParseTreeVisitor): 

+

7234 if hasattr(visitor, "visitRule_EntityAspect"): 

+

7235 return visitor.visitRule_EntityAspect(self) 

+

7236 else: 

+

7237 return visitor.visitChildren(self) 

+

7238 

+

7239 def rule_EntityAspect(self): 

+

7240 

+

7241 localctx = VHDLParser.Rule_EntityAspectContext(self, self._ctx, self.state) 

+

7242 self.enterRule(localctx, 158, self.RULE_rule_EntityAspect) 

+

7243 self._la = 0 # Token type 

+

7244 try: 

+

7245 self.state = 1269 

+

7246 self._errHandler.sync(self) 

+

7247 token = self._input.LA(1) 

+

7248 if token in [34]: 

+

7249 self.enterOuterAlt(localctx, 1) 

+

7250 self.state = 1259 

+

7251 self.match(VHDLParser.KW_ENTITY) 

+

7252 self.state = 1260 

+

7253 localctx.entityName = self.rule_Name(0) 

+

7254 self.state = 1264 

+

7255 self._errHandler.sync(self) 

+

7256 _la = self._input.LA(1) 

+

7257 if _la == 143: 

+

7258 self.state = 1261 

+

7259 self.match(VHDLParser.TOK_LP) 

+

7260 self.state = 1262 

+

7261 localctx.architectureName = self.match(VHDLParser.LIT_IDENTIFIER) 

+

7262 self.state = 1263 

+

7263 self.match(VHDLParser.TOK_RP) 

+

7264 

+

7265 pass 

+

7266 elif token in [24]: 

+

7267 self.enterOuterAlt(localctx, 2) 

+

7268 self.state = 1266 

+

7269 self.match(VHDLParser.KW_CONFIGURATION) 

+

7270 self.state = 1267 

+

7271 localctx.configurationName = self.rule_Name(0) 

+

7272 pass 

+

7273 elif token in [66]: 

+

7274 self.enterOuterAlt(localctx, 3) 

+

7275 self.state = 1268 

+

7276 self.match(VHDLParser.KW_OPEN) 

+

7277 pass 

+

7278 else: 

+

7279 raise NoViableAltException(self) 

+

7280 

+

7281 except RecognitionException as re: 

+

7282 localctx.exception = re 

+

7283 self._errHandler.reportError(self, re) 

+

7284 self._errHandler.recover(self, re) 

+

7285 finally: 

+

7286 self.exitRule() 

+

7287 return localctx 

+

7288 

+

7289 class Rule_EntityClassContext(ParserRuleContext): 

+

7290 __slots__ = 'parser' 

+

7291 

+

7292 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

7293 super().__init__(parent, invokingState) 

+

7294 self.parser = parser 

+

7295 

+

7296 def KW_ENTITY(self): 

+

7297 return self.getToken(VHDLParser.KW_ENTITY, 0) 

+

7298 

+

7299 def KW_ARCHITECTURE(self): 

+

7300 return self.getToken(VHDLParser.KW_ARCHITECTURE, 0) 

+

7301 

+

7302 def KW_CONFIGURATION(self): 

+

7303 return self.getToken(VHDLParser.KW_CONFIGURATION, 0) 

+

7304 

+

7305 def KW_PROCEDURE(self): 

+

7306 return self.getToken(VHDLParser.KW_PROCEDURE, 0) 

+

7307 

+

7308 def KW_FUNCTION(self): 

+

7309 return self.getToken(VHDLParser.KW_FUNCTION, 0) 

+

7310 

+

7311 def KW_PACKAGE(self): 

+

7312 return self.getToken(VHDLParser.KW_PACKAGE, 0) 

+

7313 

+

7314 def KW_TYPE(self): 

+

7315 return self.getToken(VHDLParser.KW_TYPE, 0) 

+

7316 

+

7317 def KW_SUBTYPE(self): 

+

7318 return self.getToken(VHDLParser.KW_SUBTYPE, 0) 

+

7319 

+

7320 def KW_CONSTANT(self): 

+

7321 return self.getToken(VHDLParser.KW_CONSTANT, 0) 

+

7322 

+

7323 def KW_SIGNAL(self): 

+

7324 return self.getToken(VHDLParser.KW_SIGNAL, 0) 

+

7325 

+

7326 def KW_VARIABLE(self): 

+

7327 return self.getToken(VHDLParser.KW_VARIABLE, 0) 

+

7328 

+

7329 def KW_COMPONENT(self): 

+

7330 return self.getToken(VHDLParser.KW_COMPONENT, 0) 

+

7331 

+

7332 def KW_LABEL(self): 

+

7333 return self.getToken(VHDLParser.KW_LABEL, 0) 

+

7334 

+

7335 def KW_UNITS(self): 

+

7336 return self.getToken(VHDLParser.KW_UNITS, 0) 

+

7337 

+

7338 def KW_GROUP(self): 

+

7339 return self.getToken(VHDLParser.KW_GROUP, 0) 

+

7340 

+

7341 def KW_FILE(self): 

+

7342 return self.getToken(VHDLParser.KW_FILE, 0) 

+

7343 

+

7344 def KW_VIEW(self): 

+

7345 return self.getToken(VHDLParser.KW_VIEW, 0) 

+

7346 

+

7347 def getRuleIndex(self): 

+

7348 return VHDLParser.RULE_rule_EntityClass 

+

7349 

+

7350 def accept(self, visitor: ParseTreeVisitor): 

+

7351 if hasattr(visitor, "visitRule_EntityClass"): 

+

7352 return visitor.visitRule_EntityClass(self) 

+

7353 else: 

+

7354 return visitor.visitChildren(self) 

+

7355 

+

7356 def rule_EntityClass(self): 

+

7357 

+

7358 localctx = VHDLParser.Rule_EntityClassContext(self, self._ctx, self.state) 

+

7359 self.enterRule(localctx, 160, self.RULE_rule_EntityClass) 

+

7360 self._la = 0 # Token type 

+

7361 try: 

+

7362 self.enterOuterAlt(localctx, 1) 

+

7363 self.state = 1271 

+

7364 _la = self._input.LA(1) 

+

7365 if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 2270027713613824) != 0) or ( 

+

7366 (((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & 1735443611681) != 0)): 

+

7367 self._errHandler.recoverInline(self) 

+

7368 else: 

+

7369 self._errHandler.reportMatch(self) 

+

7370 self.consume() 

+

7371 except RecognitionException as re: 

+

7372 localctx.exception = re 

+

7373 self._errHandler.reportError(self, re) 

+

7374 self._errHandler.recover(self, re) 

+

7375 finally: 

+

7376 self.exitRule() 

+

7377 return localctx 

+

7378 

+

7379 class Rule_EntityClassEntryContext(ParserRuleContext): 

+

7380 __slots__ = 'parser' 

+

7381 

+

7382 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

7383 super().__init__(parent, invokingState) 

+

7384 self.parser = parser 

+

7385 

+

7386 def rule_EntityClass(self): 

+

7387 return self.getTypedRuleContext(VHDLParser.Rule_EntityClassContext, 0) 

+

7388 

+

7389 def TOK_BOX(self): 

+

7390 return self.getToken(VHDLParser.TOK_BOX, 0) 

+

7391 

+

7392 def getRuleIndex(self): 

+

7393 return VHDLParser.RULE_rule_EntityClassEntry 

+

7394 

+

7395 def accept(self, visitor: ParseTreeVisitor): 

+

7396 if hasattr(visitor, "visitRule_EntityClassEntry"): 

+

7397 return visitor.visitRule_EntityClassEntry(self) 

+

7398 else: 

+

7399 return visitor.visitChildren(self) 

+

7400 

+

7401 def rule_EntityClassEntry(self): 

+

7402 

+

7403 localctx = VHDLParser.Rule_EntityClassEntryContext(self, self._ctx, self.state) 

+

7404 self.enterRule(localctx, 162, self.RULE_rule_EntityClassEntry) 

+

7405 self._la = 0 # Token type 

+

7406 try: 

+

7407 self.enterOuterAlt(localctx, 1) 

+

7408 self.state = 1273 

+

7409 self.rule_EntityClass() 

+

7410 self.state = 1275 

+

7411 self._errHandler.sync(self) 

+

7412 _la = self._input.LA(1) 

+

7413 if _la == 142: 

+

7414 self.state = 1274 

+

7415 self.match(VHDLParser.TOK_BOX) 

+

7416 

+

7417 

+

7418 except RecognitionException as re: 

+

7419 localctx.exception = re 

+

7420 self._errHandler.reportError(self, re) 

+

7421 self._errHandler.recover(self, re) 

+

7422 finally: 

+

7423 self.exitRule() 

+

7424 return localctx 

+

7425 

+

7426 class Rule_EntityDeclarationContext(ParserRuleContext): 

+

7427 __slots__ = 'parser' 

+

7428 

+

7429 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

7430 super().__init__(parent, invokingState) 

+

7431 self.parser = parser 

+

7432 self.name = None # Token 

+

7433 self.genericClause = None # Rule_GenericClauseContext 

+

7434 self.portClause = None # Rule_PortClauseContext 

+

7435 self.declarations = None # Rule_EntityDeclarativeItemContext 

+

7436 self.statements = None # Rule_EntityStatementContext 

+

7437 self.name2 = None # Token 

+

7438 

+

7439 def KW_ENTITY(self, i: int = None): 

+

7440 if i is None: 

+

7441 return self.getTokens(VHDLParser.KW_ENTITY) 

+

7442 else: 

+

7443 return self.getToken(VHDLParser.KW_ENTITY, i) 

+

7444 

+

7445 def KW_IS(self): 

+

7446 return self.getToken(VHDLParser.KW_IS, 0) 

+

7447 

+

7448 def KW_END(self): 

+

7449 return self.getToken(VHDLParser.KW_END, 0) 

+

7450 

+

7451 def TOK_SEMICOL(self): 

+

7452 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

7453 

+

7454 def LIT_IDENTIFIER(self, i: int = None): 

+

7455 if i is None: 

+

7456 return self.getTokens(VHDLParser.LIT_IDENTIFIER) 

+

7457 else: 

+

7458 return self.getToken(VHDLParser.LIT_IDENTIFIER, i) 

+

7459 

+

7460 def KW_BEGIN(self): 

+

7461 return self.getToken(VHDLParser.KW_BEGIN, 0) 

+

7462 

+

7463 def rule_GenericClause(self): 

+

7464 return self.getTypedRuleContext(VHDLParser.Rule_GenericClauseContext, 0) 

+

7465 

+

7466 def rule_PortClause(self): 

+

7467 return self.getTypedRuleContext(VHDLParser.Rule_PortClauseContext, 0) 

+

7468 

+

7469 def rule_EntityDeclarativeItem(self, i: int = None): 

+

7470 if i is None: 

+

7471 return self.getTypedRuleContexts(VHDLParser.Rule_EntityDeclarativeItemContext) 

+

7472 else: 

+

7473 return self.getTypedRuleContext(VHDLParser.Rule_EntityDeclarativeItemContext, i) 

+

7474 

+

7475 def rule_EntityStatement(self, i: int = None): 

+

7476 if i is None: 

+

7477 return self.getTypedRuleContexts(VHDLParser.Rule_EntityStatementContext) 

+

7478 else: 

+

7479 return self.getTypedRuleContext(VHDLParser.Rule_EntityStatementContext, i) 

+

7480 

+

7481 def getRuleIndex(self): 

+

7482 return VHDLParser.RULE_rule_EntityDeclaration 

+

7483 

+

7484 def accept(self, visitor: ParseTreeVisitor): 

+

7485 if hasattr(visitor, "visitRule_EntityDeclaration"): 

+

7486 return visitor.visitRule_EntityDeclaration(self) 

+

7487 else: 

+

7488 return visitor.visitChildren(self) 

+

7489 

+

7490 def rule_EntityDeclaration(self): 

+

7491 

+

7492 localctx = VHDLParser.Rule_EntityDeclarationContext(self, self._ctx, self.state) 

+

7493 self.enterRule(localctx, 164, self.RULE_rule_EntityDeclaration) 

+

7494 self._la = 0 # Token type 

+

7495 try: 

+

7496 self.enterOuterAlt(localctx, 1) 

+

7497 self.state = 1277 

+

7498 self.match(VHDLParser.KW_ENTITY) 

+

7499 self.state = 1278 

+

7500 localctx.name = self.match(VHDLParser.LIT_IDENTIFIER) 

+

7501 self.state = 1279 

+

7502 self.match(VHDLParser.KW_IS) 

+

7503 self.state = 1281 

+

7504 self._errHandler.sync(self) 

+

7505 _la = self._input.LA(1) 

+

7506 if _la == 42: 

+

7507 self.state = 1280 

+

7508 localctx.genericClause = self.rule_GenericClause() 

+

7509 

+

7510 self.state = 1284 

+

7511 self._errHandler.sync(self) 

+

7512 _la = self._input.LA(1) 

+

7513 if _la == 72: 

+

7514 self.state = 1283 

+

7515 localctx.portClause = self.rule_PortClause() 

+

7516 

+

7517 self.state = 1289 

+

7518 self._errHandler.sync(self) 

+

7519 _la = self._input.LA(1) 

+

7520 while (((_la) & ~0x3f) == 0 and ((1 << _la) & 88579975971328) != 0) or ( 

+

7521 (((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & 1941606236449) != 0): 

+

7522 self.state = 1286 

+

7523 localctx.declarations = self.rule_EntityDeclarativeItem() 

+

7524 self.state = 1291 

+

7525 self._errHandler.sync(self) 

+

7526 _la = self._input.LA(1) 

+

7527 

+

7528 self.state = 1299 

+

7529 self._errHandler.sync(self) 

+

7530 _la = self._input.LA(1) 

+

7531 if _la == 17: 

+

7532 self.state = 1292 

+

7533 self.match(VHDLParser.KW_BEGIN) 

+

7534 self.state = 1296 

+

7535 self._errHandler.sync(self) 

+

7536 _la = self._input.LA(1) 

+

7537 while ((((_la - 14)) & ~0x3f) == 0 and ((1 << (_la - 14)) & 5188146770730811393) != 0) or ( 

+

7538 (((_la - 147)) & ~0x3f) == 0 and ((1 << (_la - 147)) & 114689) != 0): 

+

7539 self.state = 1293 

+

7540 localctx.statements = self.rule_EntityStatement() 

+

7541 self.state = 1298 

+

7542 self._errHandler.sync(self) 

+

7543 _la = self._input.LA(1) 

+

7544 

+

7545 self.state = 1301 

+

7546 self.match(VHDLParser.KW_END) 

+

7547 self.state = 1303 

+

7548 self._errHandler.sync(self) 

+

7549 _la = self._input.LA(1) 

+

7550 if _la == 34: 

+

7551 self.state = 1302 

+

7552 self.match(VHDLParser.KW_ENTITY) 

+

7553 

+

7554 self.state = 1306 

+

7555 self._errHandler.sync(self) 

+

7556 _la = self._input.LA(1) 

+

7557 if _la == 163: 

+

7558 self.state = 1305 

+

7559 localctx.name2 = self.match(VHDLParser.LIT_IDENTIFIER) 

+

7560 

+

7561 self.state = 1308 

+

7562 self.match(VHDLParser.TOK_SEMICOL) 

+

7563 except RecognitionException as re: 

+

7564 localctx.exception = re 

+

7565 self._errHandler.reportError(self, re) 

+

7566 self._errHandler.recover(self, re) 

+

7567 finally: 

+

7568 self.exitRule() 

+

7569 return localctx 

+

7570 

+

7571 class Rule_EntityDeclarativeItemContext(ParserRuleContext): 

+

7572 __slots__ = 'parser' 

+

7573 

+

7574 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

7575 super().__init__(parent, invokingState) 

+

7576 self.parser = parser 

+

7577 

+

7578 def rule_SubprogramDeclaration(self): 

+

7579 return self.getTypedRuleContext(VHDLParser.Rule_SubprogramDeclarationContext, 0) 

+

7580 

+

7581 def rule_SubprogramBody(self): 

+

7582 return self.getTypedRuleContext(VHDLParser.Rule_SubprogramBodyContext, 0) 

+

7583 

+

7584 def rule_SubprogramInstantiationDeclaration(self): 

+

7585 return self.getTypedRuleContext(VHDLParser.Rule_SubprogramInstantiationDeclarationContext, 0) 

+

7586 

+

7587 def rule_PackageDeclaration(self): 

+

7588 return self.getTypedRuleContext(VHDLParser.Rule_PackageDeclarationContext, 0) 

+

7589 

+

7590 def rule_PackageBody(self): 

+

7591 return self.getTypedRuleContext(VHDLParser.Rule_PackageBodyContext, 0) 

+

7592 

+

7593 def rule_PackageInstantiationDeclaration(self): 

+

7594 return self.getTypedRuleContext(VHDLParser.Rule_PackageInstantiationDeclarationContext, 0) 

+

7595 

+

7596 def rule_TypeDeclaration(self): 

+

7597 return self.getTypedRuleContext(VHDLParser.Rule_TypeDeclarationContext, 0) 

+

7598 

+

7599 def rule_SubtypeDeclaration(self): 

+

7600 return self.getTypedRuleContext(VHDLParser.Rule_SubtypeDeclarationContext, 0) 

+

7601 

+

7602 def rule_ModeViewDeclaration(self): 

+

7603 return self.getTypedRuleContext(VHDLParser.Rule_ModeViewDeclarationContext, 0) 

+

7604 

+

7605 def rule_ConstantDeclaration(self): 

+

7606 return self.getTypedRuleContext(VHDLParser.Rule_ConstantDeclarationContext, 0) 

+

7607 

+

7608 def rule_SignalDeclaration(self): 

+

7609 return self.getTypedRuleContext(VHDLParser.Rule_SignalDeclarationContext, 0) 

+

7610 

+

7611 def rule_VariableDeclaration(self): 

+

7612 return self.getTypedRuleContext(VHDLParser.Rule_VariableDeclarationContext, 0) 

+

7613 

+

7614 def rule_FileDeclaration(self): 

+

7615 return self.getTypedRuleContext(VHDLParser.Rule_FileDeclarationContext, 0) 

+

7616 

+

7617 def rule_AliasDeclaration(self): 

+

7618 return self.getTypedRuleContext(VHDLParser.Rule_AliasDeclarationContext, 0) 

+

7619 

+

7620 def rule_AttributeDeclaration(self): 

+

7621 return self.getTypedRuleContext(VHDLParser.Rule_AttributeDeclarationContext, 0) 

+

7622 

+

7623 def rule_AttributeSpecification(self): 

+

7624 return self.getTypedRuleContext(VHDLParser.Rule_AttributeSpecificationContext, 0) 

+

7625 

+

7626 def rule_DisconnectionSpecification(self): 

+

7627 return self.getTypedRuleContext(VHDLParser.Rule_DisconnectionSpecificationContext, 0) 

+

7628 

+

7629 def rule_UseClause(self): 

+

7630 return self.getTypedRuleContext(VHDLParser.Rule_UseClauseContext, 0) 

+

7631 

+

7632 def rule_GroupTemplateDeclaration(self): 

+

7633 return self.getTypedRuleContext(VHDLParser.Rule_GroupTemplateDeclarationContext, 0) 

+

7634 

+

7635 def rule_GroupDeclaration(self): 

+

7636 return self.getTypedRuleContext(VHDLParser.Rule_GroupDeclarationContext, 0) 

+

7637 

+

7638 def getRuleIndex(self): 

+

7639 return VHDLParser.RULE_rule_EntityDeclarativeItem 

+

7640 

+

7641 def accept(self, visitor: ParseTreeVisitor): 

+

7642 if hasattr(visitor, "visitRule_EntityDeclarativeItem"): 

+

7643 return visitor.visitRule_EntityDeclarativeItem(self) 

+

7644 else: 

+

7645 return visitor.visitChildren(self) 

+

7646 

+

7647 def rule_EntityDeclarativeItem(self): 

+

7648 

+

7649 localctx = VHDLParser.Rule_EntityDeclarativeItemContext(self, self._ctx, self.state) 

+

7650 self.enterRule(localctx, 166, self.RULE_rule_EntityDeclarativeItem) 

+

7651 try: 

+

7652 self.state = 1330 

+

7653 self._errHandler.sync(self) 

+

7654 la_ = self._interp.adaptivePredict(self._input, 119, self._ctx) 

+

7655 if la_ == 1: 

+

7656 self.enterOuterAlt(localctx, 1) 

+

7657 self.state = 1310 

+

7658 self.rule_SubprogramDeclaration() 

+

7659 pass 

+

7660 

+

7661 elif la_ == 2: 

+

7662 self.enterOuterAlt(localctx, 2) 

+

7663 self.state = 1311 

+

7664 self.rule_SubprogramBody() 

+

7665 pass 

+

7666 

+

7667 elif la_ == 3: 

+

7668 self.enterOuterAlt(localctx, 3) 

+

7669 self.state = 1312 

+

7670 self.rule_SubprogramInstantiationDeclaration() 

+

7671 pass 

+

7672 

+

7673 elif la_ == 4: 

+

7674 self.enterOuterAlt(localctx, 4) 

+

7675 self.state = 1313 

+

7676 self.rule_PackageDeclaration() 

+

7677 pass 

+

7678 

+

7679 elif la_ == 5: 

+

7680 self.enterOuterAlt(localctx, 5) 

+

7681 self.state = 1314 

+

7682 self.rule_PackageBody() 

+

7683 pass 

+

7684 

+

7685 elif la_ == 6: 

+

7686 self.enterOuterAlt(localctx, 6) 

+

7687 self.state = 1315 

+

7688 self.rule_PackageInstantiationDeclaration() 

+

7689 pass 

+

7690 

+

7691 elif la_ == 7: 

+

7692 self.enterOuterAlt(localctx, 7) 

+

7693 self.state = 1316 

+

7694 self.rule_TypeDeclaration() 

+

7695 pass 

+

7696 

+

7697 elif la_ == 8: 

+

7698 self.enterOuterAlt(localctx, 8) 

+

7699 self.state = 1317 

+

7700 self.rule_SubtypeDeclaration() 

+

7701 pass 

+

7702 

+

7703 elif la_ == 9: 

+

7704 self.enterOuterAlt(localctx, 9) 

+

7705 self.state = 1318 

+

7706 self.rule_ModeViewDeclaration() 

+

7707 pass 

+

7708 

+

7709 elif la_ == 10: 

+

7710 self.enterOuterAlt(localctx, 10) 

+

7711 self.state = 1319 

+

7712 self.rule_ConstantDeclaration() 

+

7713 pass 

+

7714 

+

7715 elif la_ == 11: 

+

7716 self.enterOuterAlt(localctx, 11) 

+

7717 self.state = 1320 

+

7718 self.rule_SignalDeclaration() 

+

7719 pass 

+

7720 

+

7721 elif la_ == 12: 

+

7722 self.enterOuterAlt(localctx, 12) 

+

7723 self.state = 1321 

+

7724 self.rule_VariableDeclaration() 

+

7725 pass 

+

7726 

+

7727 elif la_ == 13: 

+

7728 self.enterOuterAlt(localctx, 13) 

+

7729 self.state = 1322 

+

7730 self.rule_FileDeclaration() 

+

7731 pass 

+

7732 

+

7733 elif la_ == 14: 

+

7734 self.enterOuterAlt(localctx, 14) 

+

7735 self.state = 1323 

+

7736 self.rule_AliasDeclaration() 

+

7737 pass 

+

7738 

+

7739 elif la_ == 15: 

+

7740 self.enterOuterAlt(localctx, 15) 

+

7741 self.state = 1324 

+

7742 self.rule_AttributeDeclaration() 

+

7743 pass 

+

7744 

+

7745 elif la_ == 16: 

+

7746 self.enterOuterAlt(localctx, 16) 

+

7747 self.state = 1325 

+

7748 self.rule_AttributeSpecification() 

+

7749 pass 

+

7750 

+

7751 elif la_ == 17: 

+

7752 self.enterOuterAlt(localctx, 17) 

+

7753 self.state = 1326 

+

7754 self.rule_DisconnectionSpecification() 

+

7755 pass 

+

7756 

+

7757 elif la_ == 18: 

+

7758 self.enterOuterAlt(localctx, 18) 

+

7759 self.state = 1327 

+

7760 self.rule_UseClause() 

+

7761 pass 

+

7762 

+

7763 elif la_ == 19: 

+

7764 self.enterOuterAlt(localctx, 19) 

+

7765 self.state = 1328 

+

7766 self.rule_GroupTemplateDeclaration() 

+

7767 pass 

+

7768 

+

7769 elif la_ == 20: 

+

7770 self.enterOuterAlt(localctx, 20) 

+

7771 self.state = 1329 

+

7772 self.rule_GroupDeclaration() 

+

7773 pass 

+

7774 

+

7775 

+

7776 except RecognitionException as re: 

+

7777 localctx.exception = re 

+

7778 self._errHandler.reportError(self, re) 

+

7779 self._errHandler.recover(self, re) 

+

7780 finally: 

+

7781 self.exitRule() 

+

7782 return localctx 

+

7783 

+

7784 class Rule_EntityDesignatorContext(ParserRuleContext): 

+

7785 __slots__ = 'parser' 

+

7786 

+

7787 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

7788 super().__init__(parent, invokingState) 

+

7789 self.parser = parser 

+

7790 self.entityTag = None # Rule_EntityTagContext 

+

7791 self.signature = None # Rule_SignatureContext 

+

7792 

+

7793 def rule_EntityTag(self): 

+

7794 return self.getTypedRuleContext(VHDLParser.Rule_EntityTagContext, 0) 

+

7795 

+

7796 def rule_Signature(self): 

+

7797 return self.getTypedRuleContext(VHDLParser.Rule_SignatureContext, 0) 

+

7798 

+

7799 def getRuleIndex(self): 

+

7800 return VHDLParser.RULE_rule_EntityDesignator 

+

7801 

+

7802 def accept(self, visitor: ParseTreeVisitor): 

+

7803 if hasattr(visitor, "visitRule_EntityDesignator"): 

+

7804 return visitor.visitRule_EntityDesignator(self) 

+

7805 else: 

+

7806 return visitor.visitChildren(self) 

+

7807 

+

7808 def rule_EntityDesignator(self): 

+

7809 

+

7810 localctx = VHDLParser.Rule_EntityDesignatorContext(self, self._ctx, self.state) 

+

7811 self.enterRule(localctx, 168, self.RULE_rule_EntityDesignator) 

+

7812 self._la = 0 # Token type 

+

7813 try: 

+

7814 self.enterOuterAlt(localctx, 1) 

+

7815 self.state = 1332 

+

7816 localctx.entityTag = self.rule_EntityTag() 

+

7817 self.state = 1334 

+

7818 self._errHandler.sync(self) 

+

7819 _la = self._input.LA(1) 

+

7820 if _la == 145: 

+

7821 self.state = 1333 

+

7822 localctx.signature = self.rule_Signature() 

+

7823 

+

7824 

+

7825 except RecognitionException as re: 

+

7826 localctx.exception = re 

+

7827 self._errHandler.reportError(self, re) 

+

7828 self._errHandler.recover(self, re) 

+

7829 finally: 

+

7830 self.exitRule() 

+

7831 return localctx 

+

7832 

+

7833 class Rule_EntityNameListContext(ParserRuleContext): 

+

7834 __slots__ = 'parser' 

+

7835 

+

7836 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

7837 super().__init__(parent, invokingState) 

+

7838 self.parser = parser 

+

7839 self._rule_EntityDesignator = None # Rule_EntityDesignatorContext 

+

7840 self.entityDesignators = list() # of Rule_EntityDesignatorContexts 

+

7841 

+

7842 def rule_EntityDesignator(self, i: int = None): 

+

7843 if i is None: 

+

7844 return self.getTypedRuleContexts(VHDLParser.Rule_EntityDesignatorContext) 

+

7845 else: 

+

7846 return self.getTypedRuleContext(VHDLParser.Rule_EntityDesignatorContext, i) 

+

7847 

+

7848 def TOK_COMMA(self, i: int = None): 

+

7849 if i is None: 

+

7850 return self.getTokens(VHDLParser.TOK_COMMA) 

+

7851 else: 

+

7852 return self.getToken(VHDLParser.TOK_COMMA, i) 

+

7853 

+

7854 def KW_OTHERS(self): 

+

7855 return self.getToken(VHDLParser.KW_OTHERS, 0) 

+

7856 

+

7857 def KW_ALL(self): 

+

7858 return self.getToken(VHDLParser.KW_ALL, 0) 

+

7859 

+

7860 def getRuleIndex(self): 

+

7861 return VHDLParser.RULE_rule_EntityNameList 

+

7862 

+

7863 def accept(self, visitor: ParseTreeVisitor): 

+

7864 if hasattr(visitor, "visitRule_EntityNameList"): 

+

7865 return visitor.visitRule_EntityNameList(self) 

+

7866 else: 

+

7867 return visitor.visitChildren(self) 

+

7868 

+

7869 def rule_EntityNameList(self): 

+

7870 

+

7871 localctx = VHDLParser.Rule_EntityNameListContext(self, self._ctx, self.state) 

+

7872 self.enterRule(localctx, 170, self.RULE_rule_EntityNameList) 

+

7873 self._la = 0 # Token type 

+

7874 try: 

+

7875 self.state = 1346 

+

7876 self._errHandler.sync(self) 

+

7877 token = self._input.LA(1) 

+

7878 if token in [161, 162, 163]: 

+

7879 self.enterOuterAlt(localctx, 1) 

+

7880 self.state = 1336 

+

7881 localctx._rule_EntityDesignator = self.rule_EntityDesignator() 

+

7882 localctx.entityDesignators.append(localctx._rule_EntityDesignator) 

+

7883 self.state = 1341 

+

7884 self._errHandler.sync(self) 

+

7885 _la = self._input.LA(1) 

+

7886 while _la == 151: 

+

7887 self.state = 1337 

+

7888 self.match(VHDLParser.TOK_COMMA) 

+

7889 self.state = 1338 

+

7890 localctx._rule_EntityDesignator = self.rule_EntityDesignator() 

+

7891 localctx.entityDesignators.append(localctx._rule_EntityDesignator) 

+

7892 self.state = 1343 

+

7893 self._errHandler.sync(self) 

+

7894 _la = self._input.LA(1) 

+

7895 

+

7896 pass 

+

7897 elif token in [68]: 

+

7898 self.enterOuterAlt(localctx, 2) 

+

7899 self.state = 1344 

+

7900 self.match(VHDLParser.KW_OTHERS) 

+

7901 pass 

+

7902 elif token in [10]: 

+

7903 self.enterOuterAlt(localctx, 3) 

+

7904 self.state = 1345 

+

7905 self.match(VHDLParser.KW_ALL) 

+

7906 pass 

+

7907 else: 

+

7908 raise NoViableAltException(self) 

+

7909 

+

7910 except RecognitionException as re: 

+

7911 localctx.exception = re 

+

7912 self._errHandler.reportError(self, re) 

+

7913 self._errHandler.recover(self, re) 

+

7914 finally: 

+

7915 self.exitRule() 

+

7916 return localctx 

+

7917 

+

7918 class Rule_EntitySpecificationContext(ParserRuleContext): 

+

7919 __slots__ = 'parser' 

+

7920 

+

7921 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

7922 super().__init__(parent, invokingState) 

+

7923 self.parser = parser 

+

7924 self.entityNameList = None # Rule_EntityNameListContext 

+

7925 self.entityClass = None # Rule_EntityClassContext 

+

7926 

+

7927 def TOK_COLON(self): 

+

7928 return self.getToken(VHDLParser.TOK_COLON, 0) 

+

7929 

+

7930 def rule_EntityNameList(self): 

+

7931 return self.getTypedRuleContext(VHDLParser.Rule_EntityNameListContext, 0) 

+

7932 

+

7933 def rule_EntityClass(self): 

+

7934 return self.getTypedRuleContext(VHDLParser.Rule_EntityClassContext, 0) 

+

7935 

+

7936 def getRuleIndex(self): 

+

7937 return VHDLParser.RULE_rule_EntitySpecification 

+

7938 

+

7939 def accept(self, visitor: ParseTreeVisitor): 

+

7940 if hasattr(visitor, "visitRule_EntitySpecification"): 

+

7941 return visitor.visitRule_EntitySpecification(self) 

+

7942 else: 

+

7943 return visitor.visitChildren(self) 

+

7944 

+

7945 def rule_EntitySpecification(self): 

+

7946 

+

7947 localctx = VHDLParser.Rule_EntitySpecificationContext(self, self._ctx, self.state) 

+

7948 self.enterRule(localctx, 172, self.RULE_rule_EntitySpecification) 

+

7949 try: 

+

7950 self.enterOuterAlt(localctx, 1) 

+

7951 self.state = 1348 

+

7952 localctx.entityNameList = self.rule_EntityNameList() 

+

7953 self.state = 1349 

+

7954 self.match(VHDLParser.TOK_COLON) 

+

7955 self.state = 1350 

+

7956 localctx.entityClass = self.rule_EntityClass() 

+

7957 except RecognitionException as re: 

+

7958 localctx.exception = re 

+

7959 self._errHandler.reportError(self, re) 

+

7960 self._errHandler.recover(self, re) 

+

7961 finally: 

+

7962 self.exitRule() 

+

7963 return localctx 

+

7964 

+

7965 class Rule_EntityStatementContext(ParserRuleContext): 

+

7966 __slots__ = 'parser' 

+

7967 

+

7968 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

7969 super().__init__(parent, invokingState) 

+

7970 self.parser = parser 

+

7971 

+

7972 def rule_ConcurrentAssertionStatement(self): 

+

7973 return self.getTypedRuleContext(VHDLParser.Rule_ConcurrentAssertionStatementContext, 0) 

+

7974 

+

7975 def rule_ConcurrentProcedureCallStatement(self): 

+

7976 return self.getTypedRuleContext(VHDLParser.Rule_ConcurrentProcedureCallStatementContext, 0) 

+

7977 

+

7978 def rule_ProcessStatement(self): 

+

7979 return self.getTypedRuleContext(VHDLParser.Rule_ProcessStatementContext, 0) 

+

7980 

+

7981 def rule_PostponedProcessStatement(self): 

+

7982 return self.getTypedRuleContext(VHDLParser.Rule_PostponedProcessStatementContext, 0) 

+

7983 

+

7984 def getRuleIndex(self): 

+

7985 return VHDLParser.RULE_rule_EntityStatement 

+

7986 

+

7987 def accept(self, visitor: ParseTreeVisitor): 

+

7988 if hasattr(visitor, "visitRule_EntityStatement"): 

+

7989 return visitor.visitRule_EntityStatement(self) 

+

7990 else: 

+

7991 return visitor.visitChildren(self) 

+

7992 

+

7993 def rule_EntityStatement(self): 

+

7994 

+

7995 localctx = VHDLParser.Rule_EntityStatementContext(self, self._ctx, self.state) 

+

7996 self.enterRule(localctx, 174, self.RULE_rule_EntityStatement) 

+

7997 try: 

+

7998 self.state = 1356 

+

7999 self._errHandler.sync(self) 

+

8000 la_ = self._interp.adaptivePredict(self._input, 123, self._ctx) 

+

8001 if la_ == 1: 

+

8002 self.enterOuterAlt(localctx, 1) 

+

8003 self.state = 1352 

+

8004 self.rule_ConcurrentAssertionStatement() 

+

8005 pass 

+

8006 

+

8007 elif la_ == 2: 

+

8008 self.enterOuterAlt(localctx, 2) 

+

8009 self.state = 1353 

+

8010 self.rule_ConcurrentProcedureCallStatement() 

+

8011 pass 

+

8012 

+

8013 elif la_ == 3: 

+

8014 self.enterOuterAlt(localctx, 3) 

+

8015 self.state = 1354 

+

8016 self.rule_ProcessStatement() 

+

8017 pass 

+

8018 

+

8019 elif la_ == 4: 

+

8020 self.enterOuterAlt(localctx, 4) 

+

8021 self.state = 1355 

+

8022 self.rule_PostponedProcessStatement() 

+

8023 pass 

+

8024 

+

8025 

+

8026 except RecognitionException as re: 

+

8027 localctx.exception = re 

+

8028 self._errHandler.reportError(self, re) 

+

8029 self._errHandler.recover(self, re) 

+

8030 finally: 

+

8031 self.exitRule() 

+

8032 return localctx 

+

8033 

+

8034 class Rule_EntityTagContext(ParserRuleContext): 

+

8035 __slots__ = 'parser' 

+

8036 

+

8037 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

8038 super().__init__(parent, invokingState) 

+

8039 self.parser = parser 

+

8040 

+

8041 def LIT_IDENTIFIER(self): 

+

8042 return self.getToken(VHDLParser.LIT_IDENTIFIER, 0) 

+

8043 

+

8044 def LIT_CHARACTER(self): 

+

8045 return self.getToken(VHDLParser.LIT_CHARACTER, 0) 

+

8046 

+

8047 def LIT_STRING(self): 

+

8048 return self.getToken(VHDLParser.LIT_STRING, 0) 

+

8049 

+

8050 def getRuleIndex(self): 

+

8051 return VHDLParser.RULE_rule_EntityTag 

+

8052 

+

8053 def accept(self, visitor: ParseTreeVisitor): 

+

8054 if hasattr(visitor, "visitRule_EntityTag"): 

+

8055 return visitor.visitRule_EntityTag(self) 

+

8056 else: 

+

8057 return visitor.visitChildren(self) 

+

8058 

+

8059 def rule_EntityTag(self): 

+

8060 

+

8061 localctx = VHDLParser.Rule_EntityTagContext(self, self._ctx, self.state) 

+

8062 self.enterRule(localctx, 176, self.RULE_rule_EntityTag) 

+

8063 self._la = 0 # Token type 

+

8064 try: 

+

8065 self.enterOuterAlt(localctx, 1) 

+

8066 self.state = 1358 

+

8067 _la = self._input.LA(1) 

+

8068 if not (((((_la - 161)) & ~0x3f) == 0 and ((1 << (_la - 161)) & 7) != 0)): 

+

8069 self._errHandler.recoverInline(self) 

+

8070 else: 

+

8071 self._errHandler.reportMatch(self) 

+

8072 self.consume() 

+

8073 except RecognitionException as re: 

+

8074 localctx.exception = re 

+

8075 self._errHandler.reportError(self, re) 

+

8076 self._errHandler.recover(self, re) 

+

8077 finally: 

+

8078 self.exitRule() 

+

8079 return localctx 

+

8080 

+

8081 class Rule_EnumerationLiteralContext(ParserRuleContext): 

+

8082 __slots__ = 'parser' 

+

8083 

+

8084 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

8085 super().__init__(parent, invokingState) 

+

8086 self.parser = parser 

+

8087 

+

8088 def LIT_IDENTIFIER(self): 

+

8089 return self.getToken(VHDLParser.LIT_IDENTIFIER, 0) 

+

8090 

+

8091 def LIT_CHARACTER(self): 

+

8092 return self.getToken(VHDLParser.LIT_CHARACTER, 0) 

+

8093 

+

8094 def getRuleIndex(self): 

+

8095 return VHDLParser.RULE_rule_EnumerationLiteral 

+

8096 

+

8097 def accept(self, visitor: ParseTreeVisitor): 

+

8098 if hasattr(visitor, "visitRule_EnumerationLiteral"): 

+

8099 return visitor.visitRule_EnumerationLiteral(self) 

+

8100 else: 

+

8101 return visitor.visitChildren(self) 

+

8102 

+

8103 def rule_EnumerationLiteral(self): 

+

8104 

+

8105 localctx = VHDLParser.Rule_EnumerationLiteralContext(self, self._ctx, self.state) 

+

8106 self.enterRule(localctx, 178, self.RULE_rule_EnumerationLiteral) 

+

8107 self._la = 0 # Token type 

+

8108 try: 

+

8109 self.enterOuterAlt(localctx, 1) 

+

8110 self.state = 1360 

+

8111 _la = self._input.LA(1) 

+

8112 if not (_la == 161 or _la == 163): 

+

8113 self._errHandler.recoverInline(self) 

+

8114 else: 

+

8115 self._errHandler.reportMatch(self) 

+

8116 self.consume() 

+

8117 except RecognitionException as re: 

+

8118 localctx.exception = re 

+

8119 self._errHandler.reportError(self, re) 

+

8120 self._errHandler.recover(self, re) 

+

8121 finally: 

+

8122 self.exitRule() 

+

8123 return localctx 

+

8124 

+

8125 class Rule_EnumerationTypeDefinitionContext(ParserRuleContext): 

+

8126 __slots__ = 'parser' 

+

8127 

+

8128 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

8129 super().__init__(parent, invokingState) 

+

8130 self.parser = parser 

+

8131 self._rule_EnumerationLiteral = None # Rule_EnumerationLiteralContext 

+

8132 self.enumerationLiterals = list() # of Rule_EnumerationLiteralContexts 

+

8133 

+

8134 def TOK_LP(self): 

+

8135 return self.getToken(VHDLParser.TOK_LP, 0) 

+

8136 

+

8137 def TOK_RP(self): 

+

8138 return self.getToken(VHDLParser.TOK_RP, 0) 

+

8139 

+

8140 def rule_EnumerationLiteral(self, i: int = None): 

+

8141 if i is None: 

+

8142 return self.getTypedRuleContexts(VHDLParser.Rule_EnumerationLiteralContext) 

+

8143 else: 

+

8144 return self.getTypedRuleContext(VHDLParser.Rule_EnumerationLiteralContext, i) 

+

8145 

+

8146 def TOK_COMMA(self, i: int = None): 

+

8147 if i is None: 

+

8148 return self.getTokens(VHDLParser.TOK_COMMA) 

+

8149 else: 

+

8150 return self.getToken(VHDLParser.TOK_COMMA, i) 

+

8151 

+

8152 def getRuleIndex(self): 

+

8153 return VHDLParser.RULE_rule_EnumerationTypeDefinition 

+

8154 

+

8155 def accept(self, visitor: ParseTreeVisitor): 

+

8156 if hasattr(visitor, "visitRule_EnumerationTypeDefinition"): 

+

8157 return visitor.visitRule_EnumerationTypeDefinition(self) 

+

8158 else: 

+

8159 return visitor.visitChildren(self) 

+

8160 

+

8161 def rule_EnumerationTypeDefinition(self): 

+

8162 

+

8163 localctx = VHDLParser.Rule_EnumerationTypeDefinitionContext(self, self._ctx, self.state) 

+

8164 self.enterRule(localctx, 180, self.RULE_rule_EnumerationTypeDefinition) 

+

8165 self._la = 0 # Token type 

+

8166 try: 

+

8167 self.enterOuterAlt(localctx, 1) 

+

8168 self.state = 1362 

+

8169 self.match(VHDLParser.TOK_LP) 

+

8170 self.state = 1363 

+

8171 localctx._rule_EnumerationLiteral = self.rule_EnumerationLiteral() 

+

8172 localctx.enumerationLiterals.append(localctx._rule_EnumerationLiteral) 

+

8173 self.state = 1368 

+

8174 self._errHandler.sync(self) 

+

8175 _la = self._input.LA(1) 

+

8176 while _la == 151: 

+

8177 self.state = 1364 

+

8178 self.match(VHDLParser.TOK_COMMA) 

+

8179 self.state = 1365 

+

8180 localctx._rule_EnumerationLiteral = self.rule_EnumerationLiteral() 

+

8181 localctx.enumerationLiterals.append(localctx._rule_EnumerationLiteral) 

+

8182 self.state = 1370 

+

8183 self._errHandler.sync(self) 

+

8184 _la = self._input.LA(1) 

+

8185 

+

8186 self.state = 1371 

+

8187 self.match(VHDLParser.TOK_RP) 

+

8188 except RecognitionException as re: 

+

8189 localctx.exception = re 

+

8190 self._errHandler.reportError(self, re) 

+

8191 self._errHandler.recover(self, re) 

+

8192 finally: 

+

8193 self.exitRule() 

+

8194 return localctx 

+

8195 

+

8196 class Rule_ExitStatementContext(ParserRuleContext): 

+

8197 __slots__ = 'parser' 

+

8198 

+

8199 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

8200 super().__init__(parent, invokingState) 

+

8201 self.parser = parser 

+

8202 self.label = None # Token 

+

8203 self.referencedLabel = None # Token 

+

8204 self.condition = None # Rule_ExpressionContext 

+

8205 

+

8206 def KW_EXIT(self): 

+

8207 return self.getToken(VHDLParser.KW_EXIT, 0) 

+

8208 

+

8209 def TOK_SEMICOL(self): 

+

8210 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

8211 

+

8212 def TOK_COLON(self): 

+

8213 return self.getToken(VHDLParser.TOK_COLON, 0) 

+

8214 

+

8215 def KW_WHEN(self): 

+

8216 return self.getToken(VHDLParser.KW_WHEN, 0) 

+

8217 

+

8218 def LIT_IDENTIFIER(self, i: int = None): 

+

8219 if i is None: 

+

8220 return self.getTokens(VHDLParser.LIT_IDENTIFIER) 

+

8221 else: 

+

8222 return self.getToken(VHDLParser.LIT_IDENTIFIER, i) 

+

8223 

+

8224 def rule_Expression(self): 

+

8225 return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0) 

+

8226 

+

8227 def getRuleIndex(self): 

+

8228 return VHDLParser.RULE_rule_ExitStatement 

+

8229 

+

8230 def accept(self, visitor: ParseTreeVisitor): 

+

8231 if hasattr(visitor, "visitRule_ExitStatement"): 

+

8232 return visitor.visitRule_ExitStatement(self) 

+

8233 else: 

+

8234 return visitor.visitChildren(self) 

+

8235 

+

8236 def rule_ExitStatement(self): 

+

8237 

+

8238 localctx = VHDLParser.Rule_ExitStatementContext(self, self._ctx, self.state) 

+

8239 self.enterRule(localctx, 182, self.RULE_rule_ExitStatement) 

+

8240 self._la = 0 # Token type 

+

8241 try: 

+

8242 self.enterOuterAlt(localctx, 1) 

+

8243 self.state = 1375 

+

8244 self._errHandler.sync(self) 

+

8245 _la = self._input.LA(1) 

+

8246 if _la == 163: 

+

8247 self.state = 1373 

+

8248 localctx.label = self.match(VHDLParser.LIT_IDENTIFIER) 

+

8249 self.state = 1374 

+

8250 self.match(VHDLParser.TOK_COLON) 

+

8251 

+

8252 self.state = 1377 

+

8253 self.match(VHDLParser.KW_EXIT) 

+

8254 self.state = 1379 

+

8255 self._errHandler.sync(self) 

+

8256 _la = self._input.LA(1) 

+

8257 if _la == 163: 

+

8258 self.state = 1378 

+

8259 localctx.referencedLabel = self.match(VHDLParser.LIT_IDENTIFIER) 

+

8260 

+

8261 self.state = 1383 

+

8262 self._errHandler.sync(self) 

+

8263 _la = self._input.LA(1) 

+

8264 if _la == 117: 

+

8265 self.state = 1381 

+

8266 self.match(VHDLParser.KW_WHEN) 

+

8267 self.state = 1382 

+

8268 localctx.condition = self.rule_Expression(0) 

+

8269 

+

8270 self.state = 1385 

+

8271 self.match(VHDLParser.TOK_SEMICOL) 

+

8272 except RecognitionException as re: 

+

8273 localctx.exception = re 

+

8274 self._errHandler.reportError(self, re) 

+

8275 self._errHandler.recover(self, re) 

+

8276 finally: 

+

8277 self.exitRule() 

+

8278 return localctx 

+

8279 

+

8280 class Rule_ExpressionContext(ParserRuleContext): 

+

8281 __slots__ = 'parser' 

+

8282 

+

8283 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

8284 super().__init__(parent, invokingState) 

+

8285 self.parser = parser 

+

8286 

+

8287 def getRuleIndex(self): 

+

8288 return VHDLParser.RULE_rule_Expression 

+

8289 

+

8290 def copyFrom(self, ctx: ParserRuleContext): 

+

8291 super().copyFrom(ctx) 

+

8292 

+

8293 class BinaryOpContext(Rule_ExpressionContext): 

+

8294 

+

8295 def __init__(self, parser, ctx: ParserRuleContext): # actually a VHDLParser.Rule_ExpressionContext 

+

8296 super().__init__(parser) 

+

8297 self.left = None # Rule_ExpressionContext 

+

8298 self.operator = None # Token 

+

8299 self.right = None # Rule_ExpressionContext 

+

8300 self.copyFrom(ctx) 

+

8301 

+

8302 def rule_Expression(self, i: int = None): 

+

8303 if i is None: 

+

8304 return self.getTypedRuleContexts(VHDLParser.Rule_ExpressionContext) 

+

8305 else: 

+

8306 return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, i) 

+

8307 

+

8308 def OP_POW(self): 

+

8309 return self.getToken(VHDLParser.OP_POW, 0) 

+

8310 

+

8311 def OP_MUL(self): 

+

8312 return self.getToken(VHDLParser.OP_MUL, 0) 

+

8313 

+

8314 def OP_DIV(self): 

+

8315 return self.getToken(VHDLParser.OP_DIV, 0) 

+

8316 

+

8317 def OP_MOD(self): 

+

8318 return self.getToken(VHDLParser.OP_MOD, 0) 

+

8319 

+

8320 def OP_REM(self): 

+

8321 return self.getToken(VHDLParser.OP_REM, 0) 

+

8322 

+

8323 def OP_PLUS(self): 

+

8324 return self.getToken(VHDLParser.OP_PLUS, 0) 

+

8325 

+

8326 def OP_MINUS(self): 

+

8327 return self.getToken(VHDLParser.OP_MINUS, 0) 

+

8328 

+

8329 def OP_CONCAT(self): 

+

8330 return self.getToken(VHDLParser.OP_CONCAT, 0) 

+

8331 

+

8332 def OP_SLL(self): 

+

8333 return self.getToken(VHDLParser.OP_SLL, 0) 

+

8334 

+

8335 def OP_SRL(self): 

+

8336 return self.getToken(VHDLParser.OP_SRL, 0) 

+

8337 

+

8338 def OP_SLA(self): 

+

8339 return self.getToken(VHDLParser.OP_SLA, 0) 

+

8340 

+

8341 def OP_SRA(self): 

+

8342 return self.getToken(VHDLParser.OP_SRA, 0) 

+

8343 

+

8344 def OP_ROL(self): 

+

8345 return self.getToken(VHDLParser.OP_ROL, 0) 

+

8346 

+

8347 def OP_ROR(self): 

+

8348 return self.getToken(VHDLParser.OP_ROR, 0) 

+

8349 

+

8350 def OP_EQ(self): 

+

8351 return self.getToken(VHDLParser.OP_EQ, 0) 

+

8352 

+

8353 def OP_NE(self): 

+

8354 return self.getToken(VHDLParser.OP_NE, 0) 

+

8355 

+

8356 def OP_LT(self): 

+

8357 return self.getToken(VHDLParser.OP_LT, 0) 

+

8358 

+

8359 def TOK_SIG_ASSIGN(self): 

+

8360 return self.getToken(VHDLParser.TOK_SIG_ASSIGN, 0) 

+

8361 

+

8362 def OP_GT(self): 

+

8363 return self.getToken(VHDLParser.OP_GT, 0) 

+

8364 

+

8365 def OP_GE(self): 

+

8366 return self.getToken(VHDLParser.OP_GE, 0) 

+

8367 

+

8368 def OP_IEQ(self): 

+

8369 return self.getToken(VHDLParser.OP_IEQ, 0) 

+

8370 

+

8371 def OP_INE(self): 

+

8372 return self.getToken(VHDLParser.OP_INE, 0) 

+

8373 

+

8374 def OP_ILT(self): 

+

8375 return self.getToken(VHDLParser.OP_ILT, 0) 

+

8376 

+

8377 def OP_ILE(self): 

+

8378 return self.getToken(VHDLParser.OP_ILE, 0) 

+

8379 

+

8380 def OP_IGT(self): 

+

8381 return self.getToken(VHDLParser.OP_IGT, 0) 

+

8382 

+

8383 def OP_IGE(self): 

+

8384 return self.getToken(VHDLParser.OP_IGE, 0) 

+

8385 

+

8386 def OP_AND(self): 

+

8387 return self.getToken(VHDLParser.OP_AND, 0) 

+

8388 

+

8389 def OP_OR(self): 

+

8390 return self.getToken(VHDLParser.OP_OR, 0) 

+

8391 

+

8392 def OP_NAND(self): 

+

8393 return self.getToken(VHDLParser.OP_NAND, 0) 

+

8394 

+

8395 def OP_NOR(self): 

+

8396 return self.getToken(VHDLParser.OP_NOR, 0) 

+

8397 

+

8398 def OP_XOR(self): 

+

8399 return self.getToken(VHDLParser.OP_XOR, 0) 

+

8400 

+

8401 def OP_XNOR(self): 

+

8402 return self.getToken(VHDLParser.OP_XNOR, 0) 

+

8403 

+

8404 def accept(self, visitor: ParseTreeVisitor): 

+

8405 if hasattr(visitor, "visitBinaryOp"): 

+

8406 return visitor.visitBinaryOp(self) 

+

8407 else: 

+

8408 return visitor.visitChildren(self) 

+

8409 

+

8410 class PrimaryOpContext(Rule_ExpressionContext): 

+

8411 

+

8412 def __init__(self, parser, ctx: ParserRuleContext): # actually a VHDLParser.Rule_ExpressionContext 

+

8413 super().__init__(parser) 

+

8414 self.copyFrom(ctx) 

+

8415 

+

8416 def rule_Primary(self): 

+

8417 return self.getTypedRuleContext(VHDLParser.Rule_PrimaryContext, 0) 

+

8418 

+

8419 def accept(self, visitor: ParseTreeVisitor): 

+

8420 if hasattr(visitor, "visitPrimaryOp"): 

+

8421 return visitor.visitPrimaryOp(self) 

+

8422 else: 

+

8423 return visitor.visitChildren(self) 

+

8424 

+

8425 class UnaryOpContext(Rule_ExpressionContext): 

+

8426 

+

8427 def __init__(self, parser, ctx: ParserRuleContext): # actually a VHDLParser.Rule_ExpressionContext 

+

8428 super().__init__(parser) 

+

8429 self.operator = None # Token 

+

8430 self.right = None # Rule_ExpressionContext 

+

8431 self.copyFrom(ctx) 

+

8432 

+

8433 def OP_CONDITION(self): 

+

8434 return self.getToken(VHDLParser.OP_CONDITION, 0) 

+

8435 

+

8436 def rule_Expression(self): 

+

8437 return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0) 

+

8438 

+

8439 def OP_ABS(self): 

+

8440 return self.getToken(VHDLParser.OP_ABS, 0) 

+

8441 

+

8442 def OP_NOT(self): 

+

8443 return self.getToken(VHDLParser.OP_NOT, 0) 

+

8444 

+

8445 def OP_AND(self): 

+

8446 return self.getToken(VHDLParser.OP_AND, 0) 

+

8447 

+

8448 def OP_OR(self): 

+

8449 return self.getToken(VHDLParser.OP_OR, 0) 

+

8450 

+

8451 def OP_NAND(self): 

+

8452 return self.getToken(VHDLParser.OP_NAND, 0) 

+

8453 

+

8454 def OP_NOR(self): 

+

8455 return self.getToken(VHDLParser.OP_NOR, 0) 

+

8456 

+

8457 def OP_XOR(self): 

+

8458 return self.getToken(VHDLParser.OP_XOR, 0) 

+

8459 

+

8460 def OP_XNOR(self): 

+

8461 return self.getToken(VHDLParser.OP_XNOR, 0) 

+

8462 

+

8463 def OP_PLUS(self): 

+

8464 return self.getToken(VHDLParser.OP_PLUS, 0) 

+

8465 

+

8466 def OP_MINUS(self): 

+

8467 return self.getToken(VHDLParser.OP_MINUS, 0) 

+

8468 

+

8469 def accept(self, visitor: ParseTreeVisitor): 

+

8470 if hasattr(visitor, "visitUnaryOp"): 

+

8471 return visitor.visitUnaryOp(self) 

+

8472 else: 

+

8473 return visitor.visitChildren(self) 

+

8474 

+

8475 def rule_Expression(self, _p: int = 0): 

+

8476 _parentctx = self._ctx 

+

8477 _parentState = self.state 

+

8478 localctx = VHDLParser.Rule_ExpressionContext(self, self._ctx, _parentState) 

+

8479 _prevctx = localctx 

+

8480 _startState = 184 

+

8481 self.enterRecursionRule(localctx, 184, self.RULE_rule_Expression, _p) 

+

8482 self._la = 0 # Token type 

+

8483 try: 

+

8484 self.enterOuterAlt(localctx, 1) 

+

8485 self.state = 1393 

+

8486 self._errHandler.sync(self) 

+

8487 token = self._input.LA(1) 

+

8488 if token in [59, 63, 143, 147, 159, 160, 161, 162, 163]: 

+

8489 localctx = VHDLParser.PrimaryOpContext(self, localctx) 

+

8490 self._ctx = localctx 

+

8491 _prevctx = localctx 

+

8492 

+

8493 self.state = 1388 

+

8494 self.rule_Primary() 

+

8495 pass 

+

8496 elif token in [138]: 

+

8497 localctx = VHDLParser.UnaryOpContext(self, localctx) 

+

8498 self._ctx = localctx 

+

8499 _prevctx = localctx 

+

8500 self.state = 1389 

+

8501 localctx.operator = self.match(VHDLParser.OP_CONDITION) 

+

8502 self.state = 1390 

+

8503 localctx.right = self.rule_Expression(8) 

+

8504 pass 

+

8505 elif token in [6, 11, 58, 61, 62, 67, 119, 120, 132, 133]: 

+

8506 localctx = VHDLParser.UnaryOpContext(self, localctx) 

+

8507 self._ctx = localctx 

+

8508 _prevctx = localctx 

+

8509 self.state = 1391 

+

8510 localctx.operator = self._input.LT(1) 

+

8511 _la = self._input.LA(1) 

+

8512 if not (((((_la - 6)) & ~0x3f) == 0 and ((1 << (_la - 6)) & 2418432999897956385) != 0) or ( 

+

8513 (((_la - 119)) & ~0x3f) == 0 and ((1 << (_la - 119)) & 24579) != 0)): 

+

8514 localctx.operator = self._errHandler.recoverInline(self) 

+

8515 else: 

+

8516 self._errHandler.reportMatch(self) 

+

8517 self.consume() 

+

8518 self.state = 1392 

+

8519 localctx.right = self.rule_Expression(7) 

+

8520 pass 

+

8521 else: 

+

8522 raise NoViableAltException(self) 

+

8523 

+

8524 self._ctx.stop = self._input.LT(-1) 

+

8525 self.state = 1415 

+

8526 self._errHandler.sync(self) 

+

8527 _alt = self._interp.adaptivePredict(self._input, 130, self._ctx) 

+

8528 while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: 

+

8529 if _alt == 1: 

+

8530 if self._parseListeners is not None: 

+

8531 self.triggerExitRuleEvent() 

+

8532 _prevctx = localctx 

+

8533 self.state = 1413 

+

8534 self._errHandler.sync(self) 

+

8535 la_ = self._interp.adaptivePredict(self._input, 129, self._ctx) 

+

8536 if la_ == 1: 

+

8537 localctx = VHDLParser.BinaryOpContext(self, 

+

8538 VHDLParser.Rule_ExpressionContext(self, _parentctx, _parentState)) 

+

8539 localctx.left = _prevctx 

+

8540 self.pushNewRecursionContext(localctx, _startState, self.RULE_rule_Expression) 

+

8541 self.state = 1395 

+

8542 if not self.precpred(self._ctx, 6): 

+

8543 from antlr4.error.Errors import FailedPredicateException 

+

8544 raise FailedPredicateException(self, "self.precpred(self._ctx, 6)") 

+

8545 self.state = 1396 

+

8546 localctx.operator = self.match(VHDLParser.OP_POW) 

+

8547 self.state = 1397 

+

8548 localctx.right = self.rule_Expression(6) 

+

8549 pass 

+

8550 

+

8551 elif la_ == 2: 

+

8552 localctx = VHDLParser.BinaryOpContext(self, 

+

8553 VHDLParser.Rule_ExpressionContext(self, _parentctx, _parentState)) 

+

8554 localctx.left = _prevctx 

+

8555 self.pushNewRecursionContext(localctx, _startState, self.RULE_rule_Expression) 

+

8556 self.state = 1398 

+

8557 if not self.precpred(self._ctx, 5): 

+

8558 from antlr4.error.Errors import FailedPredicateException 

+

8559 raise FailedPredicateException(self, "self.precpred(self._ctx, 5)") 

+

8560 self.state = 1399 

+

8561 localctx.operator = self._input.LT(1) 

+

8562 _la = self._input.LA(1) 

+

8563 if not (_la == 57 or ((((_la - 84)) & ~0x3f) == 0 and ((1 << (_la - 84)) & 3377699720527873) != 0)): 

+

8564 localctx.operator = self._errHandler.recoverInline(self) 

+

8565 else: 

+

8566 self._errHandler.reportMatch(self) 

+

8567 self.consume() 

+

8568 self.state = 1400 

+

8569 localctx.right = self.rule_Expression(6) 

+

8570 pass 

+

8571 

+

8572 elif la_ == 3: 

+

8573 localctx = VHDLParser.BinaryOpContext(self, 

+

8574 VHDLParser.Rule_ExpressionContext(self, _parentctx, _parentState)) 

+

8575 localctx.left = _prevctx 

+

8576 self.pushNewRecursionContext(localctx, _startState, self.RULE_rule_Expression) 

+

8577 self.state = 1401 

+

8578 if not self.precpred(self._ctx, 4): 

+

8579 from antlr4.error.Errors import FailedPredicateException 

+

8580 raise FailedPredicateException(self, "self.precpred(self._ctx, 4)") 

+

8581 self.state = 1402 

+

8582 localctx.operator = self._input.LT(1) 

+

8583 _la = self._input.LA(1) 

+

8584 if not (((((_la - 132)) & ~0x3f) == 0 and ((1 << (_la - 132)) & 35) != 0)): 

+

8585 localctx.operator = self._errHandler.recoverInline(self) 

+

8586 else: 

+

8587 self._errHandler.reportMatch(self) 

+

8588 self.consume() 

+

8589 self.state = 1403 

+

8590 localctx.right = self.rule_Expression(5) 

+

8591 pass 

+

8592 

+

8593 elif la_ == 4: 

+

8594 localctx = VHDLParser.BinaryOpContext(self, 

+

8595 VHDLParser.Rule_ExpressionContext(self, _parentctx, _parentState)) 

+

8596 localctx.left = _prevctx 

+

8597 self.pushNewRecursionContext(localctx, _startState, self.RULE_rule_Expression) 

+

8598 self.state = 1404 

+

8599 if not self.precpred(self._ctx, 3): 

+

8600 from antlr4.error.Errors import FailedPredicateException 

+

8601 raise FailedPredicateException(self, "self.precpred(self._ctx, 3)") 

+

8602 self.state = 1405 

+

8603 localctx.operator = self._input.LT(1) 

+

8604 _la = self._input.LA(1) 

+

8605 if not (((((_la - 87)) & ~0x3f) == 0 and ((1 << (_la - 87)) & 1923) != 0)): 

+

8606 localctx.operator = self._errHandler.recoverInline(self) 

+

8607 else: 

+

8608 self._errHandler.reportMatch(self) 

+

8609 self.consume() 

+

8610 self.state = 1406 

+

8611 localctx.right = self.rule_Expression(4) 

+

8612 pass 

+

8613 

+

8614 elif la_ == 5: 

+

8615 localctx = VHDLParser.BinaryOpContext(self, 

+

8616 VHDLParser.Rule_ExpressionContext(self, _parentctx, _parentState)) 

+

8617 localctx.left = _prevctx 

+

8618 self.pushNewRecursionContext(localctx, _startState, self.RULE_rule_Expression) 

+

8619 self.state = 1407 

+

8620 if not self.precpred(self._ctx, 2): 

+

8621 from antlr4.error.Errors import FailedPredicateException 

+

8622 raise FailedPredicateException(self, "self.precpred(self._ctx, 2)") 

+

8623 self.state = 1408 

+

8624 localctx.operator = self._input.LT(1) 

+

8625 _la = self._input.LA(1) 

+

8626 if not (((((_la - 121)) & ~0x3f) == 0 and ((1 << (_la - 121)) & 526335) != 0)): 

+

8627 localctx.operator = self._errHandler.recoverInline(self) 

+

8628 else: 

+

8629 self._errHandler.reportMatch(self) 

+

8630 self.consume() 

+

8631 self.state = 1409 

+

8632 localctx.right = self.rule_Expression(3) 

+

8633 pass 

+

8634 

+

8635 elif la_ == 6: 

+

8636 localctx = VHDLParser.BinaryOpContext(self, 

+

8637 VHDLParser.Rule_ExpressionContext(self, _parentctx, _parentState)) 

+

8638 localctx.left = _prevctx 

+

8639 self.pushNewRecursionContext(localctx, _startState, self.RULE_rule_Expression) 

+

8640 self.state = 1410 

+

8641 if not self.precpred(self._ctx, 1): 

+

8642 from antlr4.error.Errors import FailedPredicateException 

+

8643 raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") 

+

8644 self.state = 1411 

+

8645 localctx.operator = self._input.LT(1) 

+

8646 _la = self._input.LA(1) 

+

8647 if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 2594073385365407744) != 0) or ( 

+

8648 (((_la - 67)) & ~0x3f) == 0 and ((1 << (_la - 67)) & 13510798882111489) != 0)): 

+

8649 localctx.operator = self._errHandler.recoverInline(self) 

+

8650 else: 

+

8651 self._errHandler.reportMatch(self) 

+

8652 self.consume() 

+

8653 self.state = 1412 

+

8654 localctx.right = self.rule_Expression(2) 

+

8655 pass 

+

8656 

+

8657 self.state = 1417 

+

8658 self._errHandler.sync(self) 

+

8659 _alt = self._interp.adaptivePredict(self._input, 130, self._ctx) 

+

8660 

+

8661 except RecognitionException as re: 

+

8662 localctx.exception = re 

+

8663 self._errHandler.reportError(self, re) 

+

8664 self._errHandler.recover(self, re) 

+

8665 finally: 

+

8666 self.unrollRecursionContexts(_parentctx) 

+

8667 return localctx 

+

8668 

+

8669 class Rule_ExpressionOrUnaffectedContext(ParserRuleContext): 

+

8670 __slots__ = 'parser' 

+

8671 

+

8672 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

8673 super().__init__(parent, invokingState) 

+

8674 self.parser = parser 

+

8675 

+

8676 def rule_Expression(self): 

+

8677 return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0) 

+

8678 

+

8679 def KW_UNAFFECTED(self): 

+

8680 return self.getToken(VHDLParser.KW_UNAFFECTED, 0) 

+

8681 

+

8682 def getRuleIndex(self): 

+

8683 return VHDLParser.RULE_rule_ExpressionOrUnaffected 

+

8684 

+

8685 def accept(self, visitor: ParseTreeVisitor): 

+

8686 if hasattr(visitor, "visitRule_ExpressionOrUnaffected"): 

+

8687 return visitor.visitRule_ExpressionOrUnaffected(self) 

+

8688 else: 

+

8689 return visitor.visitChildren(self) 

+

8690 

+

8691 def rule_ExpressionOrUnaffected(self): 

+

8692 

+

8693 localctx = VHDLParser.Rule_ExpressionOrUnaffectedContext(self, self._ctx, self.state) 

+

8694 self.enterRule(localctx, 186, self.RULE_rule_ExpressionOrUnaffected) 

+

8695 try: 

+

8696 self.state = 1420 

+

8697 self._errHandler.sync(self) 

+

8698 token = self._input.LA(1) 

+

8699 if token in [6, 11, 58, 59, 61, 62, 63, 67, 119, 120, 132, 133, 138, 143, 147, 159, 160, 161, 162, 163]: 

+

8700 self.enterOuterAlt(localctx, 1) 

+

8701 self.state = 1418 

+

8702 self.rule_Expression(0) 

+

8703 pass 

+

8704 elif token in [105]: 

+

8705 self.enterOuterAlt(localctx, 2) 

+

8706 self.state = 1419 

+

8707 self.match(VHDLParser.KW_UNAFFECTED) 

+

8708 pass 

+

8709 else: 

+

8710 raise NoViableAltException(self) 

+

8711 

+

8712 except RecognitionException as re: 

+

8713 localctx.exception = re 

+

8714 self._errHandler.reportError(self, re) 

+

8715 self._errHandler.recover(self, re) 

+

8716 finally: 

+

8717 self.exitRule() 

+

8718 return localctx 

+

8719 

+

8720 class Rule_ExternalNameContext(ParserRuleContext): 

+

8721 __slots__ = 'parser' 

+

8722 

+

8723 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

8724 super().__init__(parent, invokingState) 

+

8725 self.parser = parser 

+

8726 

+

8727 def rule_ExternalConstantName(self): 

+

8728 return self.getTypedRuleContext(VHDLParser.Rule_ExternalConstantNameContext, 0) 

+

8729 

+

8730 def rule_ExternalSignalName(self): 

+

8731 return self.getTypedRuleContext(VHDLParser.Rule_ExternalSignalNameContext, 0) 

+

8732 

+

8733 def rule_ExternalVariableName(self): 

+

8734 return self.getTypedRuleContext(VHDLParser.Rule_ExternalVariableNameContext, 0) 

+

8735 

+

8736 def getRuleIndex(self): 

+

8737 return VHDLParser.RULE_rule_ExternalName 

+

8738 

+

8739 def accept(self, visitor: ParseTreeVisitor): 

+

8740 if hasattr(visitor, "visitRule_ExternalName"): 

+

8741 return visitor.visitRule_ExternalName(self) 

+

8742 else: 

+

8743 return visitor.visitChildren(self) 

+

8744 

+

8745 def rule_ExternalName(self): 

+

8746 

+

8747 localctx = VHDLParser.Rule_ExternalNameContext(self, self._ctx, self.state) 

+

8748 self.enterRule(localctx, 188, self.RULE_rule_ExternalName) 

+

8749 try: 

+

8750 self.state = 1425 

+

8751 self._errHandler.sync(self) 

+

8752 la_ = self._interp.adaptivePredict(self._input, 132, self._ctx) 

+

8753 if la_ == 1: 

+

8754 self.enterOuterAlt(localctx, 1) 

+

8755 self.state = 1422 

+

8756 self.rule_ExternalConstantName() 

+

8757 pass 

+

8758 

+

8759 elif la_ == 2: 

+

8760 self.enterOuterAlt(localctx, 2) 

+

8761 self.state = 1423 

+

8762 self.rule_ExternalSignalName() 

+

8763 pass 

+

8764 

+

8765 elif la_ == 3: 

+

8766 self.enterOuterAlt(localctx, 3) 

+

8767 self.state = 1424 

+

8768 self.rule_ExternalVariableName() 

+

8769 pass 

+

8770 

+

8771 

+

8772 except RecognitionException as re: 

+

8773 localctx.exception = re 

+

8774 self._errHandler.reportError(self, re) 

+

8775 self._errHandler.recover(self, re) 

+

8776 finally: 

+

8777 self.exitRule() 

+

8778 return localctx 

+

8779 

+

8780 class Rule_ExternalConstantNameContext(ParserRuleContext): 

+

8781 __slots__ = 'parser' 

+

8782 

+

8783 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

8784 super().__init__(parent, invokingState) 

+

8785 self.parser = parser 

+

8786 

+

8787 def TOK_DLA(self): 

+

8788 return self.getToken(VHDLParser.TOK_DLA, 0) 

+

8789 

+

8790 def KW_CONSTANT(self): 

+

8791 return self.getToken(VHDLParser.KW_CONSTANT, 0) 

+

8792 

+

8793 def rule_ExternalPathname(self): 

+

8794 return self.getTypedRuleContext(VHDLParser.Rule_ExternalPathnameContext, 0) 

+

8795 

+

8796 def TOK_COLON(self): 

+

8797 return self.getToken(VHDLParser.TOK_COLON, 0) 

+

8798 

+

8799 def rule_InterfaceTypeIndication(self): 

+

8800 return self.getTypedRuleContext(VHDLParser.Rule_InterfaceTypeIndicationContext, 0) 

+

8801 

+

8802 def TOK_DRA(self): 

+

8803 return self.getToken(VHDLParser.TOK_DRA, 0) 

+

8804 

+

8805 def getRuleIndex(self): 

+

8806 return VHDLParser.RULE_rule_ExternalConstantName 

+

8807 

+

8808 def accept(self, visitor: ParseTreeVisitor): 

+

8809 if hasattr(visitor, "visitRule_ExternalConstantName"): 

+

8810 return visitor.visitRule_ExternalConstantName(self) 

+

8811 else: 

+

8812 return visitor.visitChildren(self) 

+

8813 

+

8814 def rule_ExternalConstantName(self): 

+

8815 

+

8816 localctx = VHDLParser.Rule_ExternalConstantNameContext(self, self._ctx, self.state) 

+

8817 self.enterRule(localctx, 190, self.RULE_rule_ExternalConstantName) 

+

8818 try: 

+

8819 self.enterOuterAlt(localctx, 1) 

+

8820 self.state = 1427 

+

8821 self.match(VHDLParser.TOK_DLA) 

+

8822 self.state = 1428 

+

8823 self.match(VHDLParser.KW_CONSTANT) 

+

8824 self.state = 1429 

+

8825 self.rule_ExternalPathname() 

+

8826 self.state = 1430 

+

8827 self.match(VHDLParser.TOK_COLON) 

+

8828 self.state = 1431 

+

8829 self.rule_InterfaceTypeIndication() 

+

8830 self.state = 1432 

+

8831 self.match(VHDLParser.TOK_DRA) 

+

8832 except RecognitionException as re: 

+

8833 localctx.exception = re 

+

8834 self._errHandler.reportError(self, re) 

+

8835 self._errHandler.recover(self, re) 

+

8836 finally: 

+

8837 self.exitRule() 

+

8838 return localctx 

+

8839 

+

8840 class Rule_ExternalSignalNameContext(ParserRuleContext): 

+

8841 __slots__ = 'parser' 

+

8842 

+

8843 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

8844 super().__init__(parent, invokingState) 

+

8845 self.parser = parser 

+

8846 

+

8847 def TOK_DLA(self): 

+

8848 return self.getToken(VHDLParser.TOK_DLA, 0) 

+

8849 

+

8850 def KW_SIGNAL(self): 

+

8851 return self.getToken(VHDLParser.KW_SIGNAL, 0) 

+

8852 

+

8853 def rule_ExternalPathname(self): 

+

8854 return self.getTypedRuleContext(VHDLParser.Rule_ExternalPathnameContext, 0) 

+

8855 

+

8856 def TOK_COLON(self): 

+

8857 return self.getToken(VHDLParser.TOK_COLON, 0) 

+

8858 

+

8859 def rule_InterfaceTypeIndication(self): 

+

8860 return self.getTypedRuleContext(VHDLParser.Rule_InterfaceTypeIndicationContext, 0) 

+

8861 

+

8862 def TOK_DRA(self): 

+

8863 return self.getToken(VHDLParser.TOK_DRA, 0) 

+

8864 

+

8865 def getRuleIndex(self): 

+

8866 return VHDLParser.RULE_rule_ExternalSignalName 

+

8867 

+

8868 def accept(self, visitor: ParseTreeVisitor): 

+

8869 if hasattr(visitor, "visitRule_ExternalSignalName"): 

+

8870 return visitor.visitRule_ExternalSignalName(self) 

+

8871 else: 

+

8872 return visitor.visitChildren(self) 

+

8873 

+

8874 def rule_ExternalSignalName(self): 

+

8875 

+

8876 localctx = VHDLParser.Rule_ExternalSignalNameContext(self, self._ctx, self.state) 

+

8877 self.enterRule(localctx, 192, self.RULE_rule_ExternalSignalName) 

+

8878 try: 

+

8879 self.enterOuterAlt(localctx, 1) 

+

8880 self.state = 1434 

+

8881 self.match(VHDLParser.TOK_DLA) 

+

8882 self.state = 1435 

+

8883 self.match(VHDLParser.KW_SIGNAL) 

+

8884 self.state = 1436 

+

8885 self.rule_ExternalPathname() 

+

8886 self.state = 1437 

+

8887 self.match(VHDLParser.TOK_COLON) 

+

8888 self.state = 1438 

+

8889 self.rule_InterfaceTypeIndication() 

+

8890 self.state = 1439 

+

8891 self.match(VHDLParser.TOK_DRA) 

+

8892 except RecognitionException as re: 

+

8893 localctx.exception = re 

+

8894 self._errHandler.reportError(self, re) 

+

8895 self._errHandler.recover(self, re) 

+

8896 finally: 

+

8897 self.exitRule() 

+

8898 return localctx 

+

8899 

+

8900 class Rule_ExternalVariableNameContext(ParserRuleContext): 

+

8901 __slots__ = 'parser' 

+

8902 

+

8903 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

8904 super().__init__(parent, invokingState) 

+

8905 self.parser = parser 

+

8906 

+

8907 def TOK_DLA(self): 

+

8908 return self.getToken(VHDLParser.TOK_DLA, 0) 

+

8909 

+

8910 def KW_VARIABLE(self): 

+

8911 return self.getToken(VHDLParser.KW_VARIABLE, 0) 

+

8912 

+

8913 def rule_ExternalPathname(self): 

+

8914 return self.getTypedRuleContext(VHDLParser.Rule_ExternalPathnameContext, 0) 

+

8915 

+

8916 def TOK_COLON(self): 

+

8917 return self.getToken(VHDLParser.TOK_COLON, 0) 

+

8918 

+

8919 def rule_InterfaceTypeIndication(self): 

+

8920 return self.getTypedRuleContext(VHDLParser.Rule_InterfaceTypeIndicationContext, 0) 

+

8921 

+

8922 def TOK_DRA(self): 

+

8923 return self.getToken(VHDLParser.TOK_DRA, 0) 

+

8924 

+

8925 def getRuleIndex(self): 

+

8926 return VHDLParser.RULE_rule_ExternalVariableName 

+

8927 

+

8928 def accept(self, visitor: ParseTreeVisitor): 

+

8929 if hasattr(visitor, "visitRule_ExternalVariableName"): 

+

8930 return visitor.visitRule_ExternalVariableName(self) 

+

8931 else: 

+

8932 return visitor.visitChildren(self) 

+

8933 

+

8934 def rule_ExternalVariableName(self): 

+

8935 

+

8936 localctx = VHDLParser.Rule_ExternalVariableNameContext(self, self._ctx, self.state) 

+

8937 self.enterRule(localctx, 194, self.RULE_rule_ExternalVariableName) 

+

8938 try: 

+

8939 self.enterOuterAlt(localctx, 1) 

+

8940 self.state = 1441 

+

8941 self.match(VHDLParser.TOK_DLA) 

+

8942 self.state = 1442 

+

8943 self.match(VHDLParser.KW_VARIABLE) 

+

8944 self.state = 1443 

+

8945 self.rule_ExternalPathname() 

+

8946 self.state = 1444 

+

8947 self.match(VHDLParser.TOK_COLON) 

+

8948 self.state = 1445 

+

8949 self.rule_InterfaceTypeIndication() 

+

8950 self.state = 1446 

+

8951 self.match(VHDLParser.TOK_DRA) 

+

8952 except RecognitionException as re: 

+

8953 localctx.exception = re 

+

8954 self._errHandler.reportError(self, re) 

+

8955 self._errHandler.recover(self, re) 

+

8956 finally: 

+

8957 self.exitRule() 

+

8958 return localctx 

+

8959 

+

8960 class Rule_ExternalPathnameContext(ParserRuleContext): 

+

8961 __slots__ = 'parser' 

+

8962 

+

8963 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

8964 super().__init__(parent, invokingState) 

+

8965 self.parser = parser 

+

8966 

+

8967 def rule_PackagePathname(self): 

+

8968 return self.getTypedRuleContext(VHDLParser.Rule_PackagePathnameContext, 0) 

+

8969 

+

8970 def rule_AbsolutePathname(self): 

+

8971 return self.getTypedRuleContext(VHDLParser.Rule_AbsolutePathnameContext, 0) 

+

8972 

+

8973 def rule_RelativePathname(self): 

+

8974 return self.getTypedRuleContext(VHDLParser.Rule_RelativePathnameContext, 0) 

+

8975 

+

8976 def getRuleIndex(self): 

+

8977 return VHDLParser.RULE_rule_ExternalPathname 

+

8978 

+

8979 def accept(self, visitor: ParseTreeVisitor): 

+

8980 if hasattr(visitor, "visitRule_ExternalPathname"): 

+

8981 return visitor.visitRule_ExternalPathname(self) 

+

8982 else: 

+

8983 return visitor.visitChildren(self) 

+

8984 

+

8985 def rule_ExternalPathname(self): 

+

8986 

+

8987 localctx = VHDLParser.Rule_ExternalPathnameContext(self, self._ctx, self.state) 

+

8988 self.enterRule(localctx, 196, self.RULE_rule_ExternalPathname) 

+

8989 try: 

+

8990 self.state = 1451 

+

8991 self._errHandler.sync(self) 

+

8992 token = self._input.LA(1) 

+

8993 if token in [155]: 

+

8994 self.enterOuterAlt(localctx, 1) 

+

8995 self.state = 1448 

+

8996 self.rule_PackagePathname() 

+

8997 pass 

+

8998 elif token in [153]: 

+

8999 self.enterOuterAlt(localctx, 2) 

+

9000 self.state = 1449 

+

9001 self.rule_AbsolutePathname() 

+

9002 pass 

+

9003 elif token in [156, 163]: 

+

9004 self.enterOuterAlt(localctx, 3) 

+

9005 self.state = 1450 

+

9006 self.rule_RelativePathname() 

+

9007 pass 

+

9008 else: 

+

9009 raise NoViableAltException(self) 

+

9010 

+

9011 except RecognitionException as re: 

+

9012 localctx.exception = re 

+

9013 self._errHandler.reportError(self, re) 

+

9014 self._errHandler.recover(self, re) 

+

9015 finally: 

+

9016 self.exitRule() 

+

9017 return localctx 

+

9018 

+

9019 class Rule_FileDeclarationContext(ParserRuleContext): 

+

9020 __slots__ = 'parser' 

+

9021 

+

9022 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

9023 super().__init__(parent, invokingState) 

+

9024 self.parser = parser 

+

9025 self.identifierList = None # Rule_IdentifierListContext 

+

9026 self.subtypeIndication = None # Rule_SubtypeIndicationContext 

+

9027 

+

9028 def KW_FILE(self): 

+

9029 return self.getToken(VHDLParser.KW_FILE, 0) 

+

9030 

+

9031 def TOK_COLON(self): 

+

9032 return self.getToken(VHDLParser.TOK_COLON, 0) 

+

9033 

+

9034 def TOK_SEMICOL(self): 

+

9035 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

9036 

+

9037 def rule_IdentifierList(self): 

+

9038 return self.getTypedRuleContext(VHDLParser.Rule_IdentifierListContext, 0) 

+

9039 

+

9040 def rule_SubtypeIndication(self): 

+

9041 return self.getTypedRuleContext(VHDLParser.Rule_SubtypeIndicationContext, 0) 

+

9042 

+

9043 def rule_FileOpenInformation(self): 

+

9044 return self.getTypedRuleContext(VHDLParser.Rule_FileOpenInformationContext, 0) 

+

9045 

+

9046 def getRuleIndex(self): 

+

9047 return VHDLParser.RULE_rule_FileDeclaration 

+

9048 

+

9049 def accept(self, visitor: ParseTreeVisitor): 

+

9050 if hasattr(visitor, "visitRule_FileDeclaration"): 

+

9051 return visitor.visitRule_FileDeclaration(self) 

+

9052 else: 

+

9053 return visitor.visitChildren(self) 

+

9054 

+

9055 def rule_FileDeclaration(self): 

+

9056 

+

9057 localctx = VHDLParser.Rule_FileDeclarationContext(self, self._ctx, self.state) 

+

9058 self.enterRule(localctx, 198, self.RULE_rule_FileDeclaration) 

+

9059 self._la = 0 # Token type 

+

9060 try: 

+

9061 self.enterOuterAlt(localctx, 1) 

+

9062 self.state = 1453 

+

9063 self.match(VHDLParser.KW_FILE) 

+

9064 self.state = 1454 

+

9065 localctx.identifierList = self.rule_IdentifierList() 

+

9066 self.state = 1455 

+

9067 self.match(VHDLParser.TOK_COLON) 

+

9068 self.state = 1456 

+

9069 localctx.subtypeIndication = self.rule_SubtypeIndication() 

+

9070 self.state = 1458 

+

9071 self._errHandler.sync(self) 

+

9072 _la = self._input.LA(1) 

+

9073 if _la == 50 or _la == 66: 

+

9074 self.state = 1457 

+

9075 self.rule_FileOpenInformation() 

+

9076 

+

9077 self.state = 1460 

+

9078 self.match(VHDLParser.TOK_SEMICOL) 

+

9079 except RecognitionException as re: 

+

9080 localctx.exception = re 

+

9081 self._errHandler.reportError(self, re) 

+

9082 self._errHandler.recover(self, re) 

+

9083 finally: 

+

9084 self.exitRule() 

+

9085 return localctx 

+

9086 

+

9087 class Rule_FileIncompleteTypeDefinitionContext(ParserRuleContext): 

+

9088 __slots__ = 'parser' 

+

9089 

+

9090 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

9091 super().__init__(parent, invokingState) 

+

9092 self.parser = parser 

+

9093 

+

9094 def KW_FILE(self): 

+

9095 return self.getToken(VHDLParser.KW_FILE, 0) 

+

9096 

+

9097 def KW_OF(self): 

+

9098 return self.getToken(VHDLParser.KW_OF, 0) 

+

9099 

+

9100 def rule_IncompleteTypeMark(self): 

+

9101 return self.getTypedRuleContext(VHDLParser.Rule_IncompleteTypeMarkContext, 0) 

+

9102 

+

9103 def getRuleIndex(self): 

+

9104 return VHDLParser.RULE_rule_FileIncompleteTypeDefinition 

+

9105 

+

9106 def accept(self, visitor: ParseTreeVisitor): 

+

9107 if hasattr(visitor, "visitRule_FileIncompleteTypeDefinition"): 

+

9108 return visitor.visitRule_FileIncompleteTypeDefinition(self) 

+

9109 else: 

+

9110 return visitor.visitChildren(self) 

+

9111 

+

9112 def rule_FileIncompleteTypeDefinition(self): 

+

9113 

+

9114 localctx = VHDLParser.Rule_FileIncompleteTypeDefinitionContext(self, self._ctx, self.state) 

+

9115 self.enterRule(localctx, 200, self.RULE_rule_FileIncompleteTypeDefinition) 

+

9116 try: 

+

9117 self.enterOuterAlt(localctx, 1) 

+

9118 self.state = 1462 

+

9119 self.match(VHDLParser.KW_FILE) 

+

9120 self.state = 1463 

+

9121 self.match(VHDLParser.KW_OF) 

+

9122 self.state = 1464 

+

9123 self.rule_IncompleteTypeMark() 

+

9124 except RecognitionException as re: 

+

9125 localctx.exception = re 

+

9126 self._errHandler.reportError(self, re) 

+

9127 self._errHandler.recover(self, re) 

+

9128 finally: 

+

9129 self.exitRule() 

+

9130 return localctx 

+

9131 

+

9132 class Rule_FileOpenInformationContext(ParserRuleContext): 

+

9133 __slots__ = 'parser' 

+

9134 

+

9135 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

9136 super().__init__(parent, invokingState) 

+

9137 self.parser = parser 

+

9138 self.openKindExpression = None # Rule_ExpressionContext 

+

9139 self.fileNameExpression = None # Rule_ExpressionContext 

+

9140 

+

9141 def KW_IS(self): 

+

9142 return self.getToken(VHDLParser.KW_IS, 0) 

+

9143 

+

9144 def rule_Expression(self, i: int = None): 

+

9145 if i is None: 

+

9146 return self.getTypedRuleContexts(VHDLParser.Rule_ExpressionContext) 

+

9147 else: 

+

9148 return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, i) 

+

9149 

+

9150 def KW_OPEN(self): 

+

9151 return self.getToken(VHDLParser.KW_OPEN, 0) 

+

9152 

+

9153 def getRuleIndex(self): 

+

9154 return VHDLParser.RULE_rule_FileOpenInformation 

+

9155 

+

9156 def accept(self, visitor: ParseTreeVisitor): 

+

9157 if hasattr(visitor, "visitRule_FileOpenInformation"): 

+

9158 return visitor.visitRule_FileOpenInformation(self) 

+

9159 else: 

+

9160 return visitor.visitChildren(self) 

+

9161 

+

9162 def rule_FileOpenInformation(self): 

+

9163 

+

9164 localctx = VHDLParser.Rule_FileOpenInformationContext(self, self._ctx, self.state) 

+

9165 self.enterRule(localctx, 202, self.RULE_rule_FileOpenInformation) 

+

9166 self._la = 0 # Token type 

+

9167 try: 

+

9168 self.enterOuterAlt(localctx, 1) 

+

9169 self.state = 1468 

+

9170 self._errHandler.sync(self) 

+

9171 _la = self._input.LA(1) 

+

9172 if _la == 66: 

+

9173 self.state = 1466 

+

9174 self.match(VHDLParser.KW_OPEN) 

+

9175 self.state = 1467 

+

9176 localctx.openKindExpression = self.rule_Expression(0) 

+

9177 

+

9178 self.state = 1470 

+

9179 self.match(VHDLParser.KW_IS) 

+

9180 self.state = 1471 

+

9181 localctx.fileNameExpression = self.rule_Expression(0) 

+

9182 except RecognitionException as re: 

+

9183 localctx.exception = re 

+

9184 self._errHandler.reportError(self, re) 

+

9185 self._errHandler.recover(self, re) 

+

9186 finally: 

+

9187 self.exitRule() 

+

9188 return localctx 

+

9189 

+

9190 class Rule_FileTypeDefinitionContext(ParserRuleContext): 

+

9191 __slots__ = 'parser' 

+

9192 

+

9193 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

9194 super().__init__(parent, invokingState) 

+

9195 self.parser = parser 

+

9196 

+

9197 def KW_FILE(self): 

+

9198 return self.getToken(VHDLParser.KW_FILE, 0) 

+

9199 

+

9200 def KW_OF(self): 

+

9201 return self.getToken(VHDLParser.KW_OF, 0) 

+

9202 

+

9203 def rule_Name(self): 

+

9204 return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0) 

+

9205 

+

9206 def getRuleIndex(self): 

+

9207 return VHDLParser.RULE_rule_FileTypeDefinition 

+

9208 

+

9209 def accept(self, visitor: ParseTreeVisitor): 

+

9210 if hasattr(visitor, "visitRule_FileTypeDefinition"): 

+

9211 return visitor.visitRule_FileTypeDefinition(self) 

+

9212 else: 

+

9213 return visitor.visitChildren(self) 

+

9214 

+

9215 def rule_FileTypeDefinition(self): 

+

9216 

+

9217 localctx = VHDLParser.Rule_FileTypeDefinitionContext(self, self._ctx, self.state) 

+

9218 self.enterRule(localctx, 204, self.RULE_rule_FileTypeDefinition) 

+

9219 try: 

+

9220 self.enterOuterAlt(localctx, 1) 

+

9221 self.state = 1473 

+

9222 self.match(VHDLParser.KW_FILE) 

+

9223 self.state = 1474 

+

9224 self.match(VHDLParser.KW_OF) 

+

9225 self.state = 1475 

+

9226 self.rule_Name(0) 

+

9227 except RecognitionException as re: 

+

9228 localctx.exception = re 

+

9229 self._errHandler.reportError(self, re) 

+

9230 self._errHandler.recover(self, re) 

+

9231 finally: 

+

9232 self.exitRule() 

+

9233 return localctx 

+

9234 

+

9235 class Rule_FloatingIncompleteTypeDefinitionContext(ParserRuleContext): 

+

9236 __slots__ = 'parser' 

+

9237 

+

9238 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

9239 super().__init__(parent, invokingState) 

+

9240 self.parser = parser 

+

9241 

+

9242 def KW_RANGE(self): 

+

9243 return self.getToken(VHDLParser.KW_RANGE, 0) 

+

9244 

+

9245 def TOK_BOX(self, i: int = None): 

+

9246 if i is None: 

+

9247 return self.getTokens(VHDLParser.TOK_BOX) 

+

9248 else: 

+

9249 return self.getToken(VHDLParser.TOK_BOX, i) 

+

9250 

+

9251 def TOK_DOT(self): 

+

9252 return self.getToken(VHDLParser.TOK_DOT, 0) 

+

9253 

+

9254 def getRuleIndex(self): 

+

9255 return VHDLParser.RULE_rule_FloatingIncompleteTypeDefinition 

+

9256 

+

9257 def accept(self, visitor: ParseTreeVisitor): 

+

9258 if hasattr(visitor, "visitRule_FloatingIncompleteTypeDefinition"): 

+

9259 return visitor.visitRule_FloatingIncompleteTypeDefinition(self) 

+

9260 else: 

+

9261 return visitor.visitChildren(self) 

+

9262 

+

9263 def rule_FloatingIncompleteTypeDefinition(self): 

+

9264 

+

9265 localctx = VHDLParser.Rule_FloatingIncompleteTypeDefinitionContext(self, self._ctx, self.state) 

+

9266 self.enterRule(localctx, 206, self.RULE_rule_FloatingIncompleteTypeDefinition) 

+

9267 try: 

+

9268 self.enterOuterAlt(localctx, 1) 

+

9269 self.state = 1477 

+

9270 self.match(VHDLParser.KW_RANGE) 

+

9271 self.state = 1478 

+

9272 self.match(VHDLParser.TOK_BOX) 

+

9273 self.state = 1479 

+

9274 self.match(VHDLParser.TOK_DOT) 

+

9275 self.state = 1480 

+

9276 self.match(VHDLParser.TOK_BOX) 

+

9277 except RecognitionException as re: 

+

9278 localctx.exception = re 

+

9279 self._errHandler.reportError(self, re) 

+

9280 self._errHandler.recover(self, re) 

+

9281 finally: 

+

9282 self.exitRule() 

+

9283 return localctx 

+

9284 

+

9285 class Rule_FloatingTypeDefinitionContext(ParserRuleContext): 

+

9286 __slots__ = 'parser' 

+

9287 

+

9288 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

9289 super().__init__(parent, invokingState) 

+

9290 self.parser = parser 

+

9291 

+

9292 def rule_RangeConstraint(self): 

+

9293 return self.getTypedRuleContext(VHDLParser.Rule_RangeConstraintContext, 0) 

+

9294 

+

9295 def getRuleIndex(self): 

+

9296 return VHDLParser.RULE_rule_FloatingTypeDefinition 

+

9297 

+

9298 def accept(self, visitor: ParseTreeVisitor): 

+

9299 if hasattr(visitor, "visitRule_FloatingTypeDefinition"): 

+

9300 return visitor.visitRule_FloatingTypeDefinition(self) 

+

9301 else: 

+

9302 return visitor.visitChildren(self) 

+

9303 

+

9304 def rule_FloatingTypeDefinition(self): 

+

9305 

+

9306 localctx = VHDLParser.Rule_FloatingTypeDefinitionContext(self, self._ctx, self.state) 

+

9307 self.enterRule(localctx, 208, self.RULE_rule_FloatingTypeDefinition) 

+

9308 try: 

+

9309 self.enterOuterAlt(localctx, 1) 

+

9310 self.state = 1482 

+

9311 self.rule_RangeConstraint() 

+

9312 except RecognitionException as re: 

+

9313 localctx.exception = re 

+

9314 self._errHandler.reportError(self, re) 

+

9315 self._errHandler.recover(self, re) 

+

9316 finally: 

+

9317 self.exitRule() 

+

9318 return localctx 

+

9319 

+

9320 class Rule_ForGenerateStatementContext(ParserRuleContext): 

+

9321 __slots__ = 'parser' 

+

9322 

+

9323 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

9324 super().__init__(parent, invokingState) 

+

9325 self.parser = parser 

+

9326 self.label = None # Token 

+

9327 self._rule_BlockDeclarativeItem = None # Rule_BlockDeclarativeItemContext 

+

9328 self.declaredItems = list() # of Rule_BlockDeclarativeItemContexts 

+

9329 self._rule_ConcurrentStatement = None # Rule_ConcurrentStatementContext 

+

9330 self.statements = list() # of Rule_ConcurrentStatementContexts 

+

9331 self.label2 = None # Token 

+

9332 

+

9333 def TOK_COLON(self): 

+

9334 return self.getToken(VHDLParser.TOK_COLON, 0) 

+

9335 

+

9336 def KW_FOR(self): 

+

9337 return self.getToken(VHDLParser.KW_FOR, 0) 

+

9338 

+

9339 def rule_ParameterSpecification(self): 

+

9340 return self.getTypedRuleContext(VHDLParser.Rule_ParameterSpecificationContext, 0) 

+

9341 

+

9342 def KW_GENERATE(self, i: int = None): 

+

9343 if i is None: 

+

9344 return self.getTokens(VHDLParser.KW_GENERATE) 

+

9345 else: 

+

9346 return self.getToken(VHDLParser.KW_GENERATE, i) 

+

9347 

+

9348 def KW_END(self): 

+

9349 return self.getToken(VHDLParser.KW_END, 0) 

+

9350 

+

9351 def TOK_SEMICOL(self): 

+

9352 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

9353 

+

9354 def LIT_IDENTIFIER(self, i: int = None): 

+

9355 if i is None: 

+

9356 return self.getTokens(VHDLParser.LIT_IDENTIFIER) 

+

9357 else: 

+

9358 return self.getToken(VHDLParser.LIT_IDENTIFIER, i) 

+

9359 

+

9360 def KW_BEGIN(self): 

+

9361 return self.getToken(VHDLParser.KW_BEGIN, 0) 

+

9362 

+

9363 def rule_ConcurrentStatement(self, i: int = None): 

+

9364 if i is None: 

+

9365 return self.getTypedRuleContexts(VHDLParser.Rule_ConcurrentStatementContext) 

+

9366 else: 

+

9367 return self.getTypedRuleContext(VHDLParser.Rule_ConcurrentStatementContext, i) 

+

9368 

+

9369 def rule_BlockDeclarativeItem(self, i: int = None): 

+

9370 if i is None: 

+

9371 return self.getTypedRuleContexts(VHDLParser.Rule_BlockDeclarativeItemContext) 

+

9372 else: 

+

9373 return self.getTypedRuleContext(VHDLParser.Rule_BlockDeclarativeItemContext, i) 

+

9374 

+

9375 def getRuleIndex(self): 

+

9376 return VHDLParser.RULE_rule_ForGenerateStatement 

+

9377 

+

9378 def accept(self, visitor: ParseTreeVisitor): 

+

9379 if hasattr(visitor, "visitRule_ForGenerateStatement"): 

+

9380 return visitor.visitRule_ForGenerateStatement(self) 

+

9381 else: 

+

9382 return visitor.visitChildren(self) 

+

9383 

+

9384 def rule_ForGenerateStatement(self): 

+

9385 

+

9386 localctx = VHDLParser.Rule_ForGenerateStatementContext(self, self._ctx, self.state) 

+

9387 self.enterRule(localctx, 210, self.RULE_rule_ForGenerateStatement) 

+

9388 self._la = 0 # Token type 

+

9389 try: 

+

9390 self.enterOuterAlt(localctx, 1) 

+

9391 self.state = 1484 

+

9392 localctx.label = self.match(VHDLParser.LIT_IDENTIFIER) 

+

9393 self.state = 1485 

+

9394 self.match(VHDLParser.TOK_COLON) 

+

9395 self.state = 1486 

+

9396 self.match(VHDLParser.KW_FOR) 

+

9397 self.state = 1487 

+

9398 self.rule_ParameterSpecification() 

+

9399 self.state = 1488 

+

9400 self.match(VHDLParser.KW_GENERATE) 

+

9401 self.state = 1496 

+

9402 self._errHandler.sync(self) 

+

9403 _la = self._input.LA(1) 

+

9404 if (((_la) & ~0x3f) == 0 and ((1 << _la) & 88717423444480) != 0) or ( 

+

9405 (((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & 1941606236449) != 0): 

+

9406 self.state = 1492 

+

9407 self._errHandler.sync(self) 

+

9408 _la = self._input.LA(1) 

+

9409 while (((_la) & ~0x3f) == 0 and ((1 << _la) & 88717423313408) != 0) or ( 

+

9410 (((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & 1941606236449) != 0): 

+

9411 self.state = 1489 

+

9412 localctx._rule_BlockDeclarativeItem = self.rule_BlockDeclarativeItem() 

+

9413 localctx.declaredItems.append(localctx._rule_BlockDeclarativeItem) 

+

9414 self.state = 1494 

+

9415 self._errHandler.sync(self) 

+

9416 _la = self._input.LA(1) 

+

9417 

+

9418 self.state = 1495 

+

9419 self.match(VHDLParser.KW_BEGIN) 

+

9420 

+

9421 self.state = 1501 

+

9422 self._errHandler.sync(self) 

+

9423 _la = self._input.LA(1) 

+

9424 while ((((_la - 14)) & ~0x3f) == 0 and ((1 << (_la - 14)) & 5188146770730811393) != 0) or ( 

+

9425 (((_la - 116)) & ~0x3f) == 0 and ((1 << (_la - 116)) & 246292886323201) != 0): 

+

9426 self.state = 1498 

+

9427 localctx._rule_ConcurrentStatement = self.rule_ConcurrentStatement() 

+

9428 localctx.statements.append(localctx._rule_ConcurrentStatement) 

+

9429 self.state = 1503 

+

9430 self._errHandler.sync(self) 

+

9431 _la = self._input.LA(1) 

+

9432 

+

9433 self.state = 1504 

+

9434 self.match(VHDLParser.KW_END) 

+

9435 self.state = 1505 

+

9436 self.match(VHDLParser.KW_GENERATE) 

+

9437 self.state = 1507 

+

9438 self._errHandler.sync(self) 

+

9439 _la = self._input.LA(1) 

+

9440 if _la == 163: 

+

9441 self.state = 1506 

+

9442 localctx.label2 = self.match(VHDLParser.LIT_IDENTIFIER) 

+

9443 

+

9444 self.state = 1509 

+

9445 self.match(VHDLParser.TOK_SEMICOL) 

+

9446 except RecognitionException as re: 

+

9447 localctx.exception = re 

+

9448 self._errHandler.reportError(self, re) 

+

9449 self._errHandler.recover(self, re) 

+

9450 finally: 

+

9451 self.exitRule() 

+

9452 return localctx 

+

9453 

+

9454 class Rule_FormalDesignatorContext(ParserRuleContext): 

+

9455 __slots__ = 'parser' 

+

9456 

+

9457 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

9458 super().__init__(parent, invokingState) 

+

9459 self.parser = parser 

+

9460 self.signature = None # Rule_SignatureContext 

+

9461 

+

9462 def rule_Name(self): 

+

9463 return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0) 

+

9464 

+

9465 def rule_Signature(self): 

+

9466 return self.getTypedRuleContext(VHDLParser.Rule_SignatureContext, 0) 

+

9467 

+

9468 def getRuleIndex(self): 

+

9469 return VHDLParser.RULE_rule_FormalDesignator 

+

9470 

+

9471 def accept(self, visitor: ParseTreeVisitor): 

+

9472 if hasattr(visitor, "visitRule_FormalDesignator"): 

+

9473 return visitor.visitRule_FormalDesignator(self) 

+

9474 else: 

+

9475 return visitor.visitChildren(self) 

+

9476 

+

9477 def rule_FormalDesignator(self): 

+

9478 

+

9479 localctx = VHDLParser.Rule_FormalDesignatorContext(self, self._ctx, self.state) 

+

9480 self.enterRule(localctx, 212, self.RULE_rule_FormalDesignator) 

+

9481 self._la = 0 # Token type 

+

9482 try: 

+

9483 self.enterOuterAlt(localctx, 1) 

+

9484 self.state = 1511 

+

9485 self.rule_Name(0) 

+

9486 self.state = 1513 

+

9487 self._errHandler.sync(self) 

+

9488 _la = self._input.LA(1) 

+

9489 if _la == 145: 

+

9490 self.state = 1512 

+

9491 localctx.signature = self.rule_Signature() 

+

9492 

+

9493 

+

9494 except RecognitionException as re: 

+

9495 localctx.exception = re 

+

9496 self._errHandler.reportError(self, re) 

+

9497 self._errHandler.recover(self, re) 

+

9498 finally: 

+

9499 self.exitRule() 

+

9500 return localctx 

+

9501 

+

9502 class Rule_FormalParameterListContext(ParserRuleContext): 

+

9503 __slots__ = 'parser' 

+

9504 

+

9505 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

9506 super().__init__(parent, invokingState) 

+

9507 self.parser = parser 

+

9508 

+

9509 def rule_InterfaceList(self): 

+

9510 return self.getTypedRuleContext(VHDLParser.Rule_InterfaceListContext, 0) 

+

9511 

+

9512 def getRuleIndex(self): 

+

9513 return VHDLParser.RULE_rule_FormalParameterList 

+

9514 

+

9515 def accept(self, visitor: ParseTreeVisitor): 

+

9516 if hasattr(visitor, "visitRule_FormalParameterList"): 

+

9517 return visitor.visitRule_FormalParameterList(self) 

+

9518 else: 

+

9519 return visitor.visitChildren(self) 

+

9520 

+

9521 def rule_FormalParameterList(self): 

+

9522 

+

9523 localctx = VHDLParser.Rule_FormalParameterListContext(self, self._ctx, self.state) 

+

9524 self.enterRule(localctx, 214, self.RULE_rule_FormalParameterList) 

+

9525 try: 

+

9526 self.enterOuterAlt(localctx, 1) 

+

9527 self.state = 1515 

+

9528 self.rule_InterfaceList() 

+

9529 except RecognitionException as re: 

+

9530 localctx.exception = re 

+

9531 self._errHandler.reportError(self, re) 

+

9532 self._errHandler.recover(self, re) 

+

9533 finally: 

+

9534 self.exitRule() 

+

9535 return localctx 

+

9536 

+

9537 class Rule_FormalPartContext(ParserRuleContext): 

+

9538 __slots__ = 'parser' 

+

9539 

+

9540 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

9541 super().__init__(parent, invokingState) 

+

9542 self.parser = parser 

+

9543 

+

9544 def rule_FormalDesignator(self): 

+

9545 return self.getTypedRuleContext(VHDLParser.Rule_FormalDesignatorContext, 0) 

+

9546 

+

9547 def TOK_LP(self): 

+

9548 return self.getToken(VHDLParser.TOK_LP, 0) 

+

9549 

+

9550 def TOK_RP(self): 

+

9551 return self.getToken(VHDLParser.TOK_RP, 0) 

+

9552 

+

9553 def rule_Name(self): 

+

9554 return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0) 

+

9555 

+

9556 def getRuleIndex(self): 

+

9557 return VHDLParser.RULE_rule_FormalPart 

+

9558 

+

9559 def accept(self, visitor: ParseTreeVisitor): 

+

9560 if hasattr(visitor, "visitRule_FormalPart"): 

+

9561 return visitor.visitRule_FormalPart(self) 

+

9562 else: 

+

9563 return visitor.visitChildren(self) 

+

9564 

+

9565 def rule_FormalPart(self): 

+

9566 

+

9567 localctx = VHDLParser.Rule_FormalPartContext(self, self._ctx, self.state) 

+

9568 self.enterRule(localctx, 216, self.RULE_rule_FormalPart) 

+

9569 try: 

+

9570 self.state = 1526 

+

9571 self._errHandler.sync(self) 

+

9572 la_ = self._interp.adaptivePredict(self._input, 142, self._ctx) 

+

9573 if la_ == 1: 

+

9574 self.enterOuterAlt(localctx, 1) 

+

9575 self.state = 1517 

+

9576 self.rule_FormalDesignator() 

+

9577 pass 

+

9578 

+

9579 elif la_ == 2: 

+

9580 self.enterOuterAlt(localctx, 2) 

+

9581 self.state = 1520 

+

9582 self._errHandler.sync(self) 

+

9583 la_ = self._interp.adaptivePredict(self._input, 141, self._ctx) 

+

9584 if la_ == 1: 

+

9585 self.state = 1518 

+

9586 self.rule_Name(0) 

+

9587 pass 

+

9588 

+

9589 elif la_ == 2: 

+

9590 self.state = 1519 

+

9591 self.rule_Name(0) 

+

9592 pass 

+

9593 

+

9594 self.state = 1522 

+

9595 self.match(VHDLParser.TOK_LP) 

+

9596 self.state = 1523 

+

9597 self.rule_FormalDesignator() 

+

9598 self.state = 1524 

+

9599 self.match(VHDLParser.TOK_RP) 

+

9600 pass 

+

9601 

+

9602 

+

9603 except RecognitionException as re: 

+

9604 localctx.exception = re 

+

9605 self._errHandler.reportError(self, re) 

+

9606 self._errHandler.recover(self, re) 

+

9607 finally: 

+

9608 self.exitRule() 

+

9609 return localctx 

+

9610 

+

9611 class Rule_FullTypeDeclarationContext(ParserRuleContext): 

+

9612 __slots__ = 'parser' 

+

9613 

+

9614 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

9615 super().__init__(parent, invokingState) 

+

9616 self.parser = parser 

+

9617 self.name = None # Token 

+

9618 

+

9619 def KW_TYPE(self): 

+

9620 return self.getToken(VHDLParser.KW_TYPE, 0) 

+

9621 

+

9622 def KW_IS(self): 

+

9623 return self.getToken(VHDLParser.KW_IS, 0) 

+

9624 

+

9625 def rule_TypeDefinition(self): 

+

9626 return self.getTypedRuleContext(VHDLParser.Rule_TypeDefinitionContext, 0) 

+

9627 

+

9628 def TOK_SEMICOL(self): 

+

9629 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

9630 

+

9631 def LIT_IDENTIFIER(self): 

+

9632 return self.getToken(VHDLParser.LIT_IDENTIFIER, 0) 

+

9633 

+

9634 def getRuleIndex(self): 

+

9635 return VHDLParser.RULE_rule_FullTypeDeclaration 

+

9636 

+

9637 def accept(self, visitor: ParseTreeVisitor): 

+

9638 if hasattr(visitor, "visitRule_FullTypeDeclaration"): 

+

9639 return visitor.visitRule_FullTypeDeclaration(self) 

+

9640 else: 

+

9641 return visitor.visitChildren(self) 

+

9642 

+

9643 def rule_FullTypeDeclaration(self): 

+

9644 

+

9645 localctx = VHDLParser.Rule_FullTypeDeclarationContext(self, self._ctx, self.state) 

+

9646 self.enterRule(localctx, 218, self.RULE_rule_FullTypeDeclaration) 

+

9647 try: 

+

9648 self.enterOuterAlt(localctx, 1) 

+

9649 self.state = 1528 

+

9650 self.match(VHDLParser.KW_TYPE) 

+

9651 self.state = 1529 

+

9652 localctx.name = self.match(VHDLParser.LIT_IDENTIFIER) 

+

9653 self.state = 1530 

+

9654 self.match(VHDLParser.KW_IS) 

+

9655 self.state = 1531 

+

9656 self.rule_TypeDefinition() 

+

9657 self.state = 1532 

+

9658 self.match(VHDLParser.TOK_SEMICOL) 

+

9659 except RecognitionException as re: 

+

9660 localctx.exception = re 

+

9661 self._errHandler.reportError(self, re) 

+

9662 self._errHandler.recover(self, re) 

+

9663 finally: 

+

9664 self.exitRule() 

+

9665 return localctx 

+

9666 

+

9667 class Rule_FunctionCallContext(ParserRuleContext): 

+

9668 __slots__ = 'parser' 

+

9669 

+

9670 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

9671 super().__init__(parent, invokingState) 

+

9672 self.parser = parser 

+

9673 self.name = None # Rule_NameContext 

+

9674 self.genericMapAspect = None # Rule_GenericMapAspectContext 

+

9675 self.parameterMapAspect = None # Rule_ParameterMapAspectContext 

+

9676 

+

9677 def rule_Name(self): 

+

9678 return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0) 

+

9679 

+

9680 def rule_GenericMapAspect(self): 

+

9681 return self.getTypedRuleContext(VHDLParser.Rule_GenericMapAspectContext, 0) 

+

9682 

+

9683 def rule_ParameterMapAspect(self): 

+

9684 return self.getTypedRuleContext(VHDLParser.Rule_ParameterMapAspectContext, 0) 

+

9685 

+

9686 def getRuleIndex(self): 

+

9687 return VHDLParser.RULE_rule_FunctionCall 

+

9688 

+

9689 def accept(self, visitor: ParseTreeVisitor): 

+

9690 if hasattr(visitor, "visitRule_FunctionCall"): 

+

9691 return visitor.visitRule_FunctionCall(self) 

+

9692 else: 

+

9693 return visitor.visitChildren(self) 

+

9694 

+

9695 def rule_FunctionCall(self): 

+

9696 

+

9697 localctx = VHDLParser.Rule_FunctionCallContext(self, self._ctx, self.state) 

+

9698 self.enterRule(localctx, 220, self.RULE_rule_FunctionCall) 

+

9699 try: 

+

9700 self.enterOuterAlt(localctx, 1) 

+

9701 self.state = 1534 

+

9702 localctx.name = self.rule_Name(0) 

+

9703 self.state = 1535 

+

9704 localctx.genericMapAspect = self.rule_GenericMapAspect() 

+

9705 self.state = 1536 

+

9706 localctx.parameterMapAspect = self.rule_ParameterMapAspect() 

+

9707 except RecognitionException as re: 

+

9708 localctx.exception = re 

+

9709 self._errHandler.reportError(self, re) 

+

9710 self._errHandler.recover(self, re) 

+

9711 finally: 

+

9712 self.exitRule() 

+

9713 return localctx 

+

9714 

+

9715 class Rule_FunctionSpecificationContext(ParserRuleContext): 

+

9716 __slots__ = 'parser' 

+

9717 

+

9718 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

9719 super().__init__(parent, invokingState) 

+

9720 self.parser = parser 

+

9721 self.returnIdentifier = None # Token 

+

9722 

+

9723 def KW_FUNCTION(self): 

+

9724 return self.getToken(VHDLParser.KW_FUNCTION, 0) 

+

9725 

+

9726 def rule_Designator(self): 

+

9727 return self.getTypedRuleContext(VHDLParser.Rule_DesignatorContext, 0) 

+

9728 

+

9729 def KW_RETURN(self): 

+

9730 return self.getToken(VHDLParser.KW_RETURN, 0) 

+

9731 

+

9732 def rule_Name(self): 

+

9733 return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0) 

+

9734 

+

9735 def TOK_LP(self): 

+

9736 return self.getToken(VHDLParser.TOK_LP, 0) 

+

9737 

+

9738 def rule_FormalParameterList(self): 

+

9739 return self.getTypedRuleContext(VHDLParser.Rule_FormalParameterListContext, 0) 

+

9740 

+

9741 def TOK_RP(self): 

+

9742 return self.getToken(VHDLParser.TOK_RP, 0) 

+

9743 

+

9744 def KW_OF(self): 

+

9745 return self.getToken(VHDLParser.KW_OF, 0) 

+

9746 

+

9747 def KW_PURE(self): 

+

9748 return self.getToken(VHDLParser.KW_PURE, 0) 

+

9749 

+

9750 def KW_IMPURE(self): 

+

9751 return self.getToken(VHDLParser.KW_IMPURE, 0) 

+

9752 

+

9753 def LIT_IDENTIFIER(self): 

+

9754 return self.getToken(VHDLParser.LIT_IDENTIFIER, 0) 

+

9755 

+

9756 def KW_PARAMETER(self): 

+

9757 return self.getToken(VHDLParser.KW_PARAMETER, 0) 

+

9758 

+

9759 def getRuleIndex(self): 

+

9760 return VHDLParser.RULE_rule_FunctionSpecification 

+

9761 

+

9762 def accept(self, visitor: ParseTreeVisitor): 

+

9763 if hasattr(visitor, "visitRule_FunctionSpecification"): 

+

9764 return visitor.visitRule_FunctionSpecification(self) 

+

9765 else: 

+

9766 return visitor.visitChildren(self) 

+

9767 

+

9768 def rule_FunctionSpecification(self): 

+

9769 

+

9770 localctx = VHDLParser.Rule_FunctionSpecificationContext(self, self._ctx, self.state) 

+

9771 self.enterRule(localctx, 222, self.RULE_rule_FunctionSpecification) 

+

9772 self._la = 0 # Token type 

+

9773 try: 

+

9774 self.enterOuterAlt(localctx, 1) 

+

9775 self.state = 1539 

+

9776 self._errHandler.sync(self) 

+

9777 _la = self._input.LA(1) 

+

9778 if _la == 46 or _la == 78: 

+

9779 self.state = 1538 

+

9780 _la = self._input.LA(1) 

+

9781 if not (_la == 46 or _la == 78): 

+

9782 self._errHandler.recoverInline(self) 

+

9783 else: 

+

9784 self._errHandler.reportMatch(self) 

+

9785 self.consume() 

+

9786 

+

9787 self.state = 1541 

+

9788 self.match(VHDLParser.KW_FUNCTION) 

+

9789 self.state = 1542 

+

9790 self.rule_Designator() 

+

9791 self.state = 1550 

+

9792 self._errHandler.sync(self) 

+

9793 _la = self._input.LA(1) 

+

9794 if _la == 71 or _la == 143: 

+

9795 self.state = 1544 

+

9796 self._errHandler.sync(self) 

+

9797 _la = self._input.LA(1) 

+

9798 if _la == 71: 

+

9799 self.state = 1543 

+

9800 self.match(VHDLParser.KW_PARAMETER) 

+

9801 

+

9802 self.state = 1546 

+

9803 self.match(VHDLParser.TOK_LP) 

+

9804 self.state = 1547 

+

9805 self.rule_FormalParameterList() 

+

9806 self.state = 1548 

+

9807 self.match(VHDLParser.TOK_RP) 

+

9808 

+

9809 self.state = 1552 

+

9810 self.match(VHDLParser.KW_RETURN) 

+

9811 self.state = 1555 

+

9812 self._errHandler.sync(self) 

+

9813 la_ = self._interp.adaptivePredict(self._input, 146, self._ctx) 

+

9814 if la_ == 1: 

+

9815 self.state = 1553 

+

9816 localctx.returnIdentifier = self.match(VHDLParser.LIT_IDENTIFIER) 

+

9817 self.state = 1554 

+

9818 self.match(VHDLParser.KW_OF) 

+

9819 

+

9820 self.state = 1557 

+

9821 self.rule_Name(0) 

+

9822 except RecognitionException as re: 

+

9823 localctx.exception = re 

+

9824 self._errHandler.reportError(self, re) 

+

9825 self._errHandler.recover(self, re) 

+

9826 finally: 

+

9827 self.exitRule() 

+

9828 return localctx 

+

9829 

+

9830 class Rule_GenerateSpecificationContext(ParserRuleContext): 

+

9831 __slots__ = 'parser' 

+

9832 

+

9833 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

9834 super().__init__(parent, invokingState) 

+

9835 self.parser = parser 

+

9836 

+

9837 def rule_DiscreteRange(self): 

+

9838 return self.getTypedRuleContext(VHDLParser.Rule_DiscreteRangeContext, 0) 

+

9839 

+

9840 def rule_Expression(self): 

+

9841 return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0) 

+

9842 

+

9843 def LIT_IDENTIFIER(self): 

+

9844 return self.getToken(VHDLParser.LIT_IDENTIFIER, 0) 

+

9845 

+

9846 def getRuleIndex(self): 

+

9847 return VHDLParser.RULE_rule_GenerateSpecification 

+

9848 

+

9849 def accept(self, visitor: ParseTreeVisitor): 

+

9850 if hasattr(visitor, "visitRule_GenerateSpecification"): 

+

9851 return visitor.visitRule_GenerateSpecification(self) 

+

9852 else: 

+

9853 return visitor.visitChildren(self) 

+

9854 

+

9855 def rule_GenerateSpecification(self): 

+

9856 

+

9857 localctx = VHDLParser.Rule_GenerateSpecificationContext(self, self._ctx, self.state) 

+

9858 self.enterRule(localctx, 224, self.RULE_rule_GenerateSpecification) 

+

9859 try: 

+

9860 self.state = 1562 

+

9861 self._errHandler.sync(self) 

+

9862 la_ = self._interp.adaptivePredict(self._input, 147, self._ctx) 

+

9863 if la_ == 1: 

+

9864 self.enterOuterAlt(localctx, 1) 

+

9865 self.state = 1559 

+

9866 self.rule_DiscreteRange() 

+

9867 pass 

+

9868 

+

9869 elif la_ == 2: 

+

9870 self.enterOuterAlt(localctx, 2) 

+

9871 self.state = 1560 

+

9872 self.rule_Expression(0) 

+

9873 pass 

+

9874 

+

9875 elif la_ == 3: 

+

9876 self.enterOuterAlt(localctx, 3) 

+

9877 self.state = 1561 

+

9878 self.match(VHDLParser.LIT_IDENTIFIER) 

+

9879 pass 

+

9880 

+

9881 

+

9882 except RecognitionException as re: 

+

9883 localctx.exception = re 

+

9884 self._errHandler.reportError(self, re) 

+

9885 self._errHandler.recover(self, re) 

+

9886 finally: 

+

9887 self.exitRule() 

+

9888 return localctx 

+

9889 

+

9890 class Rule_GenerateStatementContext(ParserRuleContext): 

+

9891 __slots__ = 'parser' 

+

9892 

+

9893 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

9894 super().__init__(parent, invokingState) 

+

9895 self.parser = parser 

+

9896 

+

9897 def rule_ForGenerateStatement(self): 

+

9898 return self.getTypedRuleContext(VHDLParser.Rule_ForGenerateStatementContext, 0) 

+

9899 

+

9900 def rule_IfGenerateStatement(self): 

+

9901 return self.getTypedRuleContext(VHDLParser.Rule_IfGenerateStatementContext, 0) 

+

9902 

+

9903 def rule_CaseGenerateStatement(self): 

+

9904 return self.getTypedRuleContext(VHDLParser.Rule_CaseGenerateStatementContext, 0) 

+

9905 

+

9906 def getRuleIndex(self): 

+

9907 return VHDLParser.RULE_rule_GenerateStatement 

+

9908 

+

9909 def accept(self, visitor: ParseTreeVisitor): 

+

9910 if hasattr(visitor, "visitRule_GenerateStatement"): 

+

9911 return visitor.visitRule_GenerateStatement(self) 

+

9912 else: 

+

9913 return visitor.visitChildren(self) 

+

9914 

+

9915 def rule_GenerateStatement(self): 

+

9916 

+

9917 localctx = VHDLParser.Rule_GenerateStatementContext(self, self._ctx, self.state) 

+

9918 self.enterRule(localctx, 226, self.RULE_rule_GenerateStatement) 

+

9919 try: 

+

9920 self.state = 1567 

+

9921 self._errHandler.sync(self) 

+

9922 la_ = self._interp.adaptivePredict(self._input, 148, self._ctx) 

+

9923 if la_ == 1: 

+

9924 self.enterOuterAlt(localctx, 1) 

+

9925 self.state = 1564 

+

9926 self.rule_ForGenerateStatement() 

+

9927 pass 

+

9928 

+

9929 elif la_ == 2: 

+

9930 self.enterOuterAlt(localctx, 2) 

+

9931 self.state = 1565 

+

9932 self.rule_IfGenerateStatement() 

+

9933 pass 

+

9934 

+

9935 elif la_ == 3: 

+

9936 self.enterOuterAlt(localctx, 3) 

+

9937 self.state = 1566 

+

9938 self.rule_CaseGenerateStatement() 

+

9939 pass 

+

9940 

+

9941 

+

9942 except RecognitionException as re: 

+

9943 localctx.exception = re 

+

9944 self._errHandler.reportError(self, re) 

+

9945 self._errHandler.recover(self, re) 

+

9946 finally: 

+

9947 self.exitRule() 

+

9948 return localctx 

+

9949 

+

9950 class Rule_GenerateStatementBodyContext(ParserRuleContext): 

+

9951 __slots__ = 'parser' 

+

9952 

+

9953 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

9954 super().__init__(parent, invokingState) 

+

9955 self.parser = parser 

+

9956 self._rule_BlockDeclarativeItem = None # Rule_BlockDeclarativeItemContext 

+

9957 self.declaredItems = list() # of Rule_BlockDeclarativeItemContexts 

+

9958 self._rule_ConcurrentStatement = None # Rule_ConcurrentStatementContext 

+

9959 self.statements = list() # of Rule_ConcurrentStatementContexts 

+

9960 self.label = None # Token 

+

9961 

+

9962 def KW_BEGIN(self): 

+

9963 return self.getToken(VHDLParser.KW_BEGIN, 0) 

+

9964 

+

9965 def KW_END(self): 

+

9966 return self.getToken(VHDLParser.KW_END, 0) 

+

9967 

+

9968 def TOK_SEMICOL(self): 

+

9969 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

9970 

+

9971 def rule_ConcurrentStatement(self, i: int = None): 

+

9972 if i is None: 

+

9973 return self.getTypedRuleContexts(VHDLParser.Rule_ConcurrentStatementContext) 

+

9974 else: 

+

9975 return self.getTypedRuleContext(VHDLParser.Rule_ConcurrentStatementContext, i) 

+

9976 

+

9977 def rule_BlockDeclarativeItem(self, i: int = None): 

+

9978 if i is None: 

+

9979 return self.getTypedRuleContexts(VHDLParser.Rule_BlockDeclarativeItemContext) 

+

9980 else: 

+

9981 return self.getTypedRuleContext(VHDLParser.Rule_BlockDeclarativeItemContext, i) 

+

9982 

+

9983 def LIT_IDENTIFIER(self): 

+

9984 return self.getToken(VHDLParser.LIT_IDENTIFIER, 0) 

+

9985 

+

9986 def getRuleIndex(self): 

+

9987 return VHDLParser.RULE_rule_GenerateStatementBody 

+

9988 

+

9989 def accept(self, visitor: ParseTreeVisitor): 

+

9990 if hasattr(visitor, "visitRule_GenerateStatementBody"): 

+

9991 return visitor.visitRule_GenerateStatementBody(self) 

+

9992 else: 

+

9993 return visitor.visitChildren(self) 

+

9994 

+

9995 def rule_GenerateStatementBody(self): 

+

9996 

+

9997 localctx = VHDLParser.Rule_GenerateStatementBodyContext(self, self._ctx, self.state) 

+

9998 self.enterRule(localctx, 228, self.RULE_rule_GenerateStatementBody) 

+

9999 self._la = 0 # Token type 

+

10000 try: 

+

10001 self.enterOuterAlt(localctx, 1) 

+

10002 self.state = 1576 

+

10003 self._errHandler.sync(self) 

+

10004 _la = self._input.LA(1) 

+

10005 if (((_la) & ~0x3f) == 0 and ((1 << _la) & 88717423444480) != 0) or ( 

+

10006 (((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & 1941606236449) != 0): 

+

10007 self.state = 1572 

+

10008 self._errHandler.sync(self) 

+

10009 _la = self._input.LA(1) 

+

10010 while (((_la) & ~0x3f) == 0 and ((1 << _la) & 88717423313408) != 0) or ( 

+

10011 (((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & 1941606236449) != 0): 

+

10012 self.state = 1569 

+

10013 localctx._rule_BlockDeclarativeItem = self.rule_BlockDeclarativeItem() 

+

10014 localctx.declaredItems.append(localctx._rule_BlockDeclarativeItem) 

+

10015 self.state = 1574 

+

10016 self._errHandler.sync(self) 

+

10017 _la = self._input.LA(1) 

+

10018 

+

10019 self.state = 1575 

+

10020 self.match(VHDLParser.KW_BEGIN) 

+

10021 

+

10022 self.state = 1581 

+

10023 self._errHandler.sync(self) 

+

10024 _la = self._input.LA(1) 

+

10025 while ((((_la - 14)) & ~0x3f) == 0 and ((1 << (_la - 14)) & 5188146770730811393) != 0) or ( 

+

10026 (((_la - 116)) & ~0x3f) == 0 and ((1 << (_la - 116)) & 246292886323201) != 0): 

+

10027 self.state = 1578 

+

10028 localctx._rule_ConcurrentStatement = self.rule_ConcurrentStatement() 

+

10029 localctx.statements.append(localctx._rule_ConcurrentStatement) 

+

10030 self.state = 1583 

+

10031 self._errHandler.sync(self) 

+

10032 _la = self._input.LA(1) 

+

10033 

+

10034 self.state = 1589 

+

10035 self._errHandler.sync(self) 

+

10036 la_ = self._interp.adaptivePredict(self._input, 153, self._ctx) 

+

10037 if la_ == 1: 

+

10038 self.state = 1584 

+

10039 self.match(VHDLParser.KW_END) 

+

10040 self.state = 1586 

+

10041 self._errHandler.sync(self) 

+

10042 _la = self._input.LA(1) 

+

10043 if _la == 163: 

+

10044 self.state = 1585 

+

10045 localctx.label = self.match(VHDLParser.LIT_IDENTIFIER) 

+

10046 

+

10047 self.state = 1588 

+

10048 self.match(VHDLParser.TOK_SEMICOL) 

+

10049 

+

10050 

+

10051 except RecognitionException as re: 

+

10052 localctx.exception = re 

+

10053 self._errHandler.reportError(self, re) 

+

10054 self._errHandler.recover(self, re) 

+

10055 finally: 

+

10056 self.exitRule() 

+

10057 return localctx 

+

10058 

+

10059 class Rule_GenericClauseContext(ParserRuleContext): 

+

10060 __slots__ = 'parser' 

+

10061 

+

10062 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

10063 super().__init__(parent, invokingState) 

+

10064 self.parser = parser 

+

10065 self._rule_InterfaceElement = None # Rule_InterfaceElementContext 

+

10066 self.elements = list() # of Rule_InterfaceElementContexts 

+

10067 

+

10068 def KW_GENERIC(self): 

+

10069 return self.getToken(VHDLParser.KW_GENERIC, 0) 

+

10070 

+

10071 def TOK_LP(self): 

+

10072 return self.getToken(VHDLParser.TOK_LP, 0) 

+

10073 

+

10074 def TOK_RP(self): 

+

10075 return self.getToken(VHDLParser.TOK_RP, 0) 

+

10076 

+

10077 def TOK_SEMICOL(self, i: int = None): 

+

10078 if i is None: 

+

10079 return self.getTokens(VHDLParser.TOK_SEMICOL) 

+

10080 else: 

+

10081 return self.getToken(VHDLParser.TOK_SEMICOL, i) 

+

10082 

+

10083 def rule_InterfaceElement(self, i: int = None): 

+

10084 if i is None: 

+

10085 return self.getTypedRuleContexts(VHDLParser.Rule_InterfaceElementContext) 

+

10086 else: 

+

10087 return self.getTypedRuleContext(VHDLParser.Rule_InterfaceElementContext, i) 

+

10088 

+

10089 def getRuleIndex(self): 

+

10090 return VHDLParser.RULE_rule_GenericClause 

+

10091 

+

10092 def accept(self, visitor: ParseTreeVisitor): 

+

10093 if hasattr(visitor, "visitRule_GenericClause"): 

+

10094 return visitor.visitRule_GenericClause(self) 

+

10095 else: 

+

10096 return visitor.visitChildren(self) 

+

10097 

+

10098 def rule_GenericClause(self): 

+

10099 

+

10100 localctx = VHDLParser.Rule_GenericClauseContext(self, self._ctx, self.state) 

+

10101 self.enterRule(localctx, 230, self.RULE_rule_GenericClause) 

+

10102 self._la = 0 # Token type 

+

10103 try: 

+

10104 self.enterOuterAlt(localctx, 1) 

+

10105 self.state = 1591 

+

10106 self.match(VHDLParser.KW_GENERIC) 

+

10107 self.state = 1592 

+

10108 self.match(VHDLParser.TOK_LP) 

+

10109 self.state = 1593 

+

10110 localctx._rule_InterfaceElement = self.rule_InterfaceElement() 

+

10111 localctx.elements.append(localctx._rule_InterfaceElement) 

+

10112 self.state = 1598 

+

10113 self._errHandler.sync(self) 

+

10114 _alt = self._interp.adaptivePredict(self._input, 154, self._ctx) 

+

10115 while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: 

+

10116 if _alt == 1: 

+

10117 self.state = 1594 

+

10118 self.match(VHDLParser.TOK_SEMICOL) 

+

10119 self.state = 1595 

+

10120 localctx._rule_InterfaceElement = self.rule_InterfaceElement() 

+

10121 localctx.elements.append(localctx._rule_InterfaceElement) 

+

10122 self.state = 1600 

+

10123 self._errHandler.sync(self) 

+

10124 _alt = self._interp.adaptivePredict(self._input, 154, self._ctx) 

+

10125 

+

10126 self.state = 1602 

+

10127 self._errHandler.sync(self) 

+

10128 _la = self._input.LA(1) 

+

10129 if _la == 150: 

+

10130 self.state = 1601 

+

10131 self.match(VHDLParser.TOK_SEMICOL) 

+

10132 

+

10133 self.state = 1604 

+

10134 self.match(VHDLParser.TOK_RP) 

+

10135 self.state = 1605 

+

10136 self.match(VHDLParser.TOK_SEMICOL) 

+

10137 except RecognitionException as re: 

+

10138 localctx.exception = re 

+

10139 self._errHandler.reportError(self, re) 

+

10140 self._errHandler.recover(self, re) 

+

10141 finally: 

+

10142 self.exitRule() 

+

10143 return localctx 

+

10144 

+

10145 class Rule_GenericMapAspectContext(ParserRuleContext): 

+

10146 __slots__ = 'parser' 

+

10147 

+

10148 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

10149 super().__init__(parent, invokingState) 

+

10150 self.parser = parser 

+

10151 self.associationList = None # Rule_AssociationListContext 

+

10152 

+

10153 def KW_GENERIC(self): 

+

10154 return self.getToken(VHDLParser.KW_GENERIC, 0) 

+

10155 

+

10156 def KW_MAP(self): 

+

10157 return self.getToken(VHDLParser.KW_MAP, 0) 

+

10158 

+

10159 def TOK_LP(self): 

+

10160 return self.getToken(VHDLParser.TOK_LP, 0) 

+

10161 

+

10162 def TOK_RP(self): 

+

10163 return self.getToken(VHDLParser.TOK_RP, 0) 

+

10164 

+

10165 def rule_AssociationList(self): 

+

10166 return self.getTypedRuleContext(VHDLParser.Rule_AssociationListContext, 0) 

+

10167 

+

10168 def getRuleIndex(self): 

+

10169 return VHDLParser.RULE_rule_GenericMapAspect 

+

10170 

+

10171 def accept(self, visitor: ParseTreeVisitor): 

+

10172 if hasattr(visitor, "visitRule_GenericMapAspect"): 

+

10173 return visitor.visitRule_GenericMapAspect(self) 

+

10174 else: 

+

10175 return visitor.visitChildren(self) 

+

10176 

+

10177 def rule_GenericMapAspect(self): 

+

10178 

+

10179 localctx = VHDLParser.Rule_GenericMapAspectContext(self, self._ctx, self.state) 

+

10180 self.enterRule(localctx, 232, self.RULE_rule_GenericMapAspect) 

+

10181 try: 

+

10182 self.enterOuterAlt(localctx, 1) 

+

10183 self.state = 1607 

+

10184 self.match(VHDLParser.KW_GENERIC) 

+

10185 self.state = 1608 

+

10186 self.match(VHDLParser.KW_MAP) 

+

10187 self.state = 1609 

+

10188 self.match(VHDLParser.TOK_LP) 

+

10189 self.state = 1610 

+

10190 localctx.associationList = self.rule_AssociationList() 

+

10191 self.state = 1611 

+

10192 self.match(VHDLParser.TOK_RP) 

+

10193 except RecognitionException as re: 

+

10194 localctx.exception = re 

+

10195 self._errHandler.reportError(self, re) 

+

10196 self._errHandler.recover(self, re) 

+

10197 finally: 

+

10198 self.exitRule() 

+

10199 return localctx 

+

10200 

+

10201 class Rule_GroupConstituentContext(ParserRuleContext): 

+

10202 __slots__ = 'parser' 

+

10203 

+

10204 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

10205 super().__init__(parent, invokingState) 

+

10206 self.parser = parser 

+

10207 

+

10208 def rule_Name(self): 

+

10209 return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0) 

+

10210 

+

10211 def LIT_CHARACTER(self): 

+

10212 return self.getToken(VHDLParser.LIT_CHARACTER, 0) 

+

10213 

+

10214 def getRuleIndex(self): 

+

10215 return VHDLParser.RULE_rule_GroupConstituent 

+

10216 

+

10217 def accept(self, visitor: ParseTreeVisitor): 

+

10218 if hasattr(visitor, "visitRule_GroupConstituent"): 

+

10219 return visitor.visitRule_GroupConstituent(self) 

+

10220 else: 

+

10221 return visitor.visitChildren(self) 

+

10222 

+

10223 def rule_GroupConstituent(self): 

+

10224 

+

10225 localctx = VHDLParser.Rule_GroupConstituentContext(self, self._ctx, self.state) 

+

10226 self.enterRule(localctx, 234, self.RULE_rule_GroupConstituent) 

+

10227 try: 

+

10228 self.state = 1615 

+

10229 self._errHandler.sync(self) 

+

10230 la_ = self._interp.adaptivePredict(self._input, 156, self._ctx) 

+

10231 if la_ == 1: 

+

10232 self.enterOuterAlt(localctx, 1) 

+

10233 self.state = 1613 

+

10234 self.rule_Name(0) 

+

10235 pass 

+

10236 

+

10237 elif la_ == 2: 

+

10238 self.enterOuterAlt(localctx, 2) 

+

10239 self.state = 1614 

+

10240 self.match(VHDLParser.LIT_CHARACTER) 

+

10241 pass 

+

10242 

+

10243 

+

10244 except RecognitionException as re: 

+

10245 localctx.exception = re 

+

10246 self._errHandler.reportError(self, re) 

+

10247 self._errHandler.recover(self, re) 

+

10248 finally: 

+

10249 self.exitRule() 

+

10250 return localctx 

+

10251 

+

10252 class Rule_GroupDeclarationContext(ParserRuleContext): 

+

10253 __slots__ = 'parser' 

+

10254 

+

10255 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

10256 super().__init__(parent, invokingState) 

+

10257 self.parser = parser 

+

10258 self.name = None # Token 

+

10259 self._rule_GroupConstituent = None # Rule_GroupConstituentContext 

+

10260 self.constituents = list() # of Rule_GroupConstituentContexts 

+

10261 

+

10262 def KW_GROUP(self): 

+

10263 return self.getToken(VHDLParser.KW_GROUP, 0) 

+

10264 

+

10265 def TOK_COLON(self): 

+

10266 return self.getToken(VHDLParser.TOK_COLON, 0) 

+

10267 

+

10268 def rule_Name(self): 

+

10269 return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0) 

+

10270 

+

10271 def TOK_LP(self): 

+

10272 return self.getToken(VHDLParser.TOK_LP, 0) 

+

10273 

+

10274 def TOK_RP(self): 

+

10275 return self.getToken(VHDLParser.TOK_RP, 0) 

+

10276 

+

10277 def TOK_SEMICOL(self): 

+

10278 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

10279 

+

10280 def LIT_IDENTIFIER(self): 

+

10281 return self.getToken(VHDLParser.LIT_IDENTIFIER, 0) 

+

10282 

+

10283 def rule_GroupConstituent(self, i: int = None): 

+

10284 if i is None: 

+

10285 return self.getTypedRuleContexts(VHDLParser.Rule_GroupConstituentContext) 

+

10286 else: 

+

10287 return self.getTypedRuleContext(VHDLParser.Rule_GroupConstituentContext, i) 

+

10288 

+

10289 def TOK_COMMA(self, i: int = None): 

+

10290 if i is None: 

+

10291 return self.getTokens(VHDLParser.TOK_COMMA) 

+

10292 else: 

+

10293 return self.getToken(VHDLParser.TOK_COMMA, i) 

+

10294 

+

10295 def getRuleIndex(self): 

+

10296 return VHDLParser.RULE_rule_GroupDeclaration 

+

10297 

+

10298 def accept(self, visitor: ParseTreeVisitor): 

+

10299 if hasattr(visitor, "visitRule_GroupDeclaration"): 

+

10300 return visitor.visitRule_GroupDeclaration(self) 

+

10301 else: 

+

10302 return visitor.visitChildren(self) 

+

10303 

+

10304 def rule_GroupDeclaration(self): 

+

10305 

+

10306 localctx = VHDLParser.Rule_GroupDeclarationContext(self, self._ctx, self.state) 

+

10307 self.enterRule(localctx, 236, self.RULE_rule_GroupDeclaration) 

+

10308 self._la = 0 # Token type 

+

10309 try: 

+

10310 self.enterOuterAlt(localctx, 1) 

+

10311 self.state = 1617 

+

10312 self.match(VHDLParser.KW_GROUP) 

+

10313 self.state = 1618 

+

10314 localctx.name = self.match(VHDLParser.LIT_IDENTIFIER) 

+

10315 self.state = 1619 

+

10316 self.match(VHDLParser.TOK_COLON) 

+

10317 self.state = 1620 

+

10318 self.rule_Name(0) 

+

10319 self.state = 1621 

+

10320 self.match(VHDLParser.TOK_LP) 

+

10321 self.state = 1622 

+

10322 localctx._rule_GroupConstituent = self.rule_GroupConstituent() 

+

10323 localctx.constituents.append(localctx._rule_GroupConstituent) 

+

10324 self.state = 1627 

+

10325 self._errHandler.sync(self) 

+

10326 _la = self._input.LA(1) 

+

10327 while _la == 151: 

+

10328 self.state = 1623 

+

10329 self.match(VHDLParser.TOK_COMMA) 

+

10330 self.state = 1624 

+

10331 localctx._rule_GroupConstituent = self.rule_GroupConstituent() 

+

10332 localctx.constituents.append(localctx._rule_GroupConstituent) 

+

10333 self.state = 1629 

+

10334 self._errHandler.sync(self) 

+

10335 _la = self._input.LA(1) 

+

10336 

+

10337 self.state = 1630 

+

10338 self.match(VHDLParser.TOK_RP) 

+

10339 self.state = 1631 

+

10340 self.match(VHDLParser.TOK_SEMICOL) 

+

10341 except RecognitionException as re: 

+

10342 localctx.exception = re 

+

10343 self._errHandler.reportError(self, re) 

+

10344 self._errHandler.recover(self, re) 

+

10345 finally: 

+

10346 self.exitRule() 

+

10347 return localctx 

+

10348 

+

10349 class Rule_GroupTemplateDeclarationContext(ParserRuleContext): 

+

10350 __slots__ = 'parser' 

+

10351 

+

10352 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

10353 super().__init__(parent, invokingState) 

+

10354 self.parser = parser 

+

10355 self.name = None # Token 

+

10356 self._rule_EntityClassEntry = None # Rule_EntityClassEntryContext 

+

10357 self.entityClasses = list() # of Rule_EntityClassEntryContexts 

+

10358 

+

10359 def KW_GROUP(self): 

+

10360 return self.getToken(VHDLParser.KW_GROUP, 0) 

+

10361 

+

10362 def KW_IS(self): 

+

10363 return self.getToken(VHDLParser.KW_IS, 0) 

+

10364 

+

10365 def TOK_LP(self): 

+

10366 return self.getToken(VHDLParser.TOK_LP, 0) 

+

10367 

+

10368 def TOK_RP(self): 

+

10369 return self.getToken(VHDLParser.TOK_RP, 0) 

+

10370 

+

10371 def TOK_SEMICOL(self): 

+

10372 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

10373 

+

10374 def LIT_IDENTIFIER(self): 

+

10375 return self.getToken(VHDLParser.LIT_IDENTIFIER, 0) 

+

10376 

+

10377 def rule_EntityClassEntry(self, i: int = None): 

+

10378 if i is None: 

+

10379 return self.getTypedRuleContexts(VHDLParser.Rule_EntityClassEntryContext) 

+

10380 else: 

+

10381 return self.getTypedRuleContext(VHDLParser.Rule_EntityClassEntryContext, i) 

+

10382 

+

10383 def TOK_COMMA(self, i: int = None): 

+

10384 if i is None: 

+

10385 return self.getTokens(VHDLParser.TOK_COMMA) 

+

10386 else: 

+

10387 return self.getToken(VHDLParser.TOK_COMMA, i) 

+

10388 

+

10389 def getRuleIndex(self): 

+

10390 return VHDLParser.RULE_rule_GroupTemplateDeclaration 

+

10391 

+

10392 def accept(self, visitor: ParseTreeVisitor): 

+

10393 if hasattr(visitor, "visitRule_GroupTemplateDeclaration"): 

+

10394 return visitor.visitRule_GroupTemplateDeclaration(self) 

+

10395 else: 

+

10396 return visitor.visitChildren(self) 

+

10397 

+

10398 def rule_GroupTemplateDeclaration(self): 

+

10399 

+

10400 localctx = VHDLParser.Rule_GroupTemplateDeclarationContext(self, self._ctx, self.state) 

+

10401 self.enterRule(localctx, 238, self.RULE_rule_GroupTemplateDeclaration) 

+

10402 self._la = 0 # Token type 

+

10403 try: 

+

10404 self.enterOuterAlt(localctx, 1) 

+

10405 self.state = 1633 

+

10406 self.match(VHDLParser.KW_GROUP) 

+

10407 self.state = 1634 

+

10408 localctx.name = self.match(VHDLParser.LIT_IDENTIFIER) 

+

10409 self.state = 1635 

+

10410 self.match(VHDLParser.KW_IS) 

+

10411 self.state = 1636 

+

10412 self.match(VHDLParser.TOK_LP) 

+

10413 self.state = 1637 

+

10414 localctx._rule_EntityClassEntry = self.rule_EntityClassEntry() 

+

10415 localctx.entityClasses.append(localctx._rule_EntityClassEntry) 

+

10416 self.state = 1642 

+

10417 self._errHandler.sync(self) 

+

10418 _la = self._input.LA(1) 

+

10419 while _la == 151: 

+

10420 self.state = 1638 

+

10421 self.match(VHDLParser.TOK_COMMA) 

+

10422 self.state = 1639 

+

10423 localctx._rule_EntityClassEntry = self.rule_EntityClassEntry() 

+

10424 localctx.entityClasses.append(localctx._rule_EntityClassEntry) 

+

10425 self.state = 1644 

+

10426 self._errHandler.sync(self) 

+

10427 _la = self._input.LA(1) 

+

10428 

+

10429 self.state = 1645 

+

10430 self.match(VHDLParser.TOK_RP) 

+

10431 self.state = 1646 

+

10432 self.match(VHDLParser.TOK_SEMICOL) 

+

10433 except RecognitionException as re: 

+

10434 localctx.exception = re 

+

10435 self._errHandler.reportError(self, re) 

+

10436 self._errHandler.recover(self, re) 

+

10437 finally: 

+

10438 self.exitRule() 

+

10439 return localctx 

+

10440 

+

10441 class Rule_GuardedSignalSpecificationContext(ParserRuleContext): 

+

10442 __slots__ = 'parser' 

+

10443 

+

10444 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

10445 super().__init__(parent, invokingState) 

+

10446 self.parser = parser 

+

10447 

+

10448 def rule_SignalList(self): 

+

10449 return self.getTypedRuleContext(VHDLParser.Rule_SignalListContext, 0) 

+

10450 

+

10451 def TOK_COLON(self): 

+

10452 return self.getToken(VHDLParser.TOK_COLON, 0) 

+

10453 

+

10454 def rule_Name(self): 

+

10455 return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0) 

+

10456 

+

10457 def getRuleIndex(self): 

+

10458 return VHDLParser.RULE_rule_GuardedSignalSpecification 

+

10459 

+

10460 def accept(self, visitor: ParseTreeVisitor): 

+

10461 if hasattr(visitor, "visitRule_GuardedSignalSpecification"): 

+

10462 return visitor.visitRule_GuardedSignalSpecification(self) 

+

10463 else: 

+

10464 return visitor.visitChildren(self) 

+

10465 

+

10466 def rule_GuardedSignalSpecification(self): 

+

10467 

+

10468 localctx = VHDLParser.Rule_GuardedSignalSpecificationContext(self, self._ctx, self.state) 

+

10469 self.enterRule(localctx, 240, self.RULE_rule_GuardedSignalSpecification) 

+

10470 try: 

+

10471 self.enterOuterAlt(localctx, 1) 

+

10472 self.state = 1648 

+

10473 self.rule_SignalList() 

+

10474 self.state = 1649 

+

10475 self.match(VHDLParser.TOK_COLON) 

+

10476 self.state = 1650 

+

10477 self.rule_Name(0) 

+

10478 except RecognitionException as re: 

+

10479 localctx.exception = re 

+

10480 self._errHandler.reportError(self, re) 

+

10481 self._errHandler.recover(self, re) 

+

10482 finally: 

+

10483 self.exitRule() 

+

10484 return localctx 

+

10485 

+

10486 class Rule_IdentifierListContext(ParserRuleContext): 

+

10487 __slots__ = 'parser' 

+

10488 

+

10489 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

10490 super().__init__(parent, invokingState) 

+

10491 self.parser = parser 

+

10492 self._LIT_IDENTIFIER = None # Token 

+

10493 self.identifiers = list() # of Tokens 

+

10494 

+

10495 def LIT_IDENTIFIER(self, i: int = None): 

+

10496 if i is None: 

+

10497 return self.getTokens(VHDLParser.LIT_IDENTIFIER) 

+

10498 else: 

+

10499 return self.getToken(VHDLParser.LIT_IDENTIFIER, i) 

+

10500 

+

10501 def TOK_COMMA(self, i: int = None): 

+

10502 if i is None: 

+

10503 return self.getTokens(VHDLParser.TOK_COMMA) 

+

10504 else: 

+

10505 return self.getToken(VHDLParser.TOK_COMMA, i) 

+

10506 

+

10507 def getRuleIndex(self): 

+

10508 return VHDLParser.RULE_rule_IdentifierList 

+

10509 

+

10510 def accept(self, visitor: ParseTreeVisitor): 

+

10511 if hasattr(visitor, "visitRule_IdentifierList"): 

+

10512 return visitor.visitRule_IdentifierList(self) 

+

10513 else: 

+

10514 return visitor.visitChildren(self) 

+

10515 

+

10516 def rule_IdentifierList(self): 

+

10517 

+

10518 localctx = VHDLParser.Rule_IdentifierListContext(self, self._ctx, self.state) 

+

10519 self.enterRule(localctx, 242, self.RULE_rule_IdentifierList) 

+

10520 self._la = 0 # Token type 

+

10521 try: 

+

10522 self.enterOuterAlt(localctx, 1) 

+

10523 self.state = 1652 

+

10524 localctx._LIT_IDENTIFIER = self.match(VHDLParser.LIT_IDENTIFIER) 

+

10525 localctx.identifiers.append(localctx._LIT_IDENTIFIER) 

+

10526 self.state = 1657 

+

10527 self._errHandler.sync(self) 

+

10528 _la = self._input.LA(1) 

+

10529 while _la == 151: 

+

10530 self.state = 1653 

+

10531 self.match(VHDLParser.TOK_COMMA) 

+

10532 self.state = 1654 

+

10533 localctx._LIT_IDENTIFIER = self.match(VHDLParser.LIT_IDENTIFIER) 

+

10534 localctx.identifiers.append(localctx._LIT_IDENTIFIER) 

+

10535 self.state = 1659 

+

10536 self._errHandler.sync(self) 

+

10537 _la = self._input.LA(1) 

+

10538 

+

10539 except RecognitionException as re: 

+

10540 localctx.exception = re 

+

10541 self._errHandler.reportError(self, re) 

+

10542 self._errHandler.recover(self, re) 

+

10543 finally: 

+

10544 self.exitRule() 

+

10545 return localctx 

+

10546 

+

10547 class Rule_IfGenerateStatementContext(ParserRuleContext): 

+

10548 __slots__ = 'parser' 

+

10549 

+

10550 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

10551 super().__init__(parent, invokingState) 

+

10552 self.parser = parser 

+

10553 self.label = None # Token 

+

10554 self.ifAlternativeLabel = None # Token 

+

10555 self.ifCondition = None # Rule_ExpressionContext 

+

10556 self.ifBody = None # Rule_GenerateStatementBodyContext 

+

10557 self._LIT_IDENTIFIER = None # Token 

+

10558 self.elsifAlternativeLabel = list() # of Tokens 

+

10559 self._rule_Expression = None # Rule_ExpressionContext 

+

10560 self.elsifCondition = list() # of Rule_ExpressionContexts 

+

10561 self._rule_GenerateStatementBody = None # Rule_GenerateStatementBodyContext 

+

10562 self.elsifBody = list() # of Rule_GenerateStatementBodyContexts 

+

10563 self.elseAlternativeLabel = list() # of Tokens 

+

10564 self.elseBody = None # Rule_GenerateStatementBodyContext 

+

10565 self.label2 = None # Token 

+

10566 

+

10567 def TOK_COLON(self, i: int = None): 

+

10568 if i is None: 

+

10569 return self.getTokens(VHDLParser.TOK_COLON) 

+

10570 else: 

+

10571 return self.getToken(VHDLParser.TOK_COLON, i) 

+

10572 

+

10573 def KW_IF(self): 

+

10574 return self.getToken(VHDLParser.KW_IF, 0) 

+

10575 

+

10576 def KW_GENERATE(self, i: int = None): 

+

10577 if i is None: 

+

10578 return self.getTokens(VHDLParser.KW_GENERATE) 

+

10579 else: 

+

10580 return self.getToken(VHDLParser.KW_GENERATE, i) 

+

10581 

+

10582 def KW_END(self): 

+

10583 return self.getToken(VHDLParser.KW_END, 0) 

+

10584 

+

10585 def TOK_SEMICOL(self): 

+

10586 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

10587 

+

10588 def LIT_IDENTIFIER(self, i: int = None): 

+

10589 if i is None: 

+

10590 return self.getTokens(VHDLParser.LIT_IDENTIFIER) 

+

10591 else: 

+

10592 return self.getToken(VHDLParser.LIT_IDENTIFIER, i) 

+

10593 

+

10594 def rule_Expression(self, i: int = None): 

+

10595 if i is None: 

+

10596 return self.getTypedRuleContexts(VHDLParser.Rule_ExpressionContext) 

+

10597 else: 

+

10598 return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, i) 

+

10599 

+

10600 def rule_GenerateStatementBody(self, i: int = None): 

+

10601 if i is None: 

+

10602 return self.getTypedRuleContexts(VHDLParser.Rule_GenerateStatementBodyContext) 

+

10603 else: 

+

10604 return self.getTypedRuleContext(VHDLParser.Rule_GenerateStatementBodyContext, i) 

+

10605 

+

10606 def KW_ELSIF(self, i: int = None): 

+

10607 if i is None: 

+

10608 return self.getTokens(VHDLParser.KW_ELSIF) 

+

10609 else: 

+

10610 return self.getToken(VHDLParser.KW_ELSIF, i) 

+

10611 

+

10612 def KW_ELSE(self): 

+

10613 return self.getToken(VHDLParser.KW_ELSE, 0) 

+

10614 

+

10615 def getRuleIndex(self): 

+

10616 return VHDLParser.RULE_rule_IfGenerateStatement 

+

10617 

+

10618 def accept(self, visitor: ParseTreeVisitor): 

+

10619 if hasattr(visitor, "visitRule_IfGenerateStatement"): 

+

10620 return visitor.visitRule_IfGenerateStatement(self) 

+

10621 else: 

+

10622 return visitor.visitChildren(self) 

+

10623 

+

10624 def rule_IfGenerateStatement(self): 

+

10625 

+

10626 localctx = VHDLParser.Rule_IfGenerateStatementContext(self, self._ctx, self.state) 

+

10627 self.enterRule(localctx, 244, self.RULE_rule_IfGenerateStatement) 

+

10628 self._la = 0 # Token type 

+

10629 try: 

+

10630 self.enterOuterAlt(localctx, 1) 

+

10631 self.state = 1660 

+

10632 localctx.label = self.match(VHDLParser.LIT_IDENTIFIER) 

+

10633 self.state = 1661 

+

10634 self.match(VHDLParser.TOK_COLON) 

+

10635 self.state = 1662 

+

10636 self.match(VHDLParser.KW_IF) 

+

10637 self.state = 1665 

+

10638 self._errHandler.sync(self) 

+

10639 la_ = self._interp.adaptivePredict(self._input, 160, self._ctx) 

+

10640 if la_ == 1: 

+

10641 self.state = 1663 

+

10642 localctx.ifAlternativeLabel = self.match(VHDLParser.LIT_IDENTIFIER) 

+

10643 self.state = 1664 

+

10644 self.match(VHDLParser.TOK_COLON) 

+

10645 

+

10646 self.state = 1667 

+

10647 localctx.ifCondition = self.rule_Expression(0) 

+

10648 self.state = 1668 

+

10649 self.match(VHDLParser.KW_GENERATE) 

+

10650 self.state = 1669 

+

10651 localctx.ifBody = self.rule_GenerateStatementBody() 

+

10652 self.state = 1681 

+

10653 self._errHandler.sync(self) 

+

10654 _la = self._input.LA(1) 

+

10655 while _la == 32: 

+

10656 self.state = 1670 

+

10657 self.match(VHDLParser.KW_ELSIF) 

+

10658 self.state = 1673 

+

10659 self._errHandler.sync(self) 

+

10660 la_ = self._interp.adaptivePredict(self._input, 161, self._ctx) 

+

10661 if la_ == 1: 

+

10662 self.state = 1671 

+

10663 localctx._LIT_IDENTIFIER = self.match(VHDLParser.LIT_IDENTIFIER) 

+

10664 localctx.elsifAlternativeLabel.append(localctx._LIT_IDENTIFIER) 

+

10665 self.state = 1672 

+

10666 self.match(VHDLParser.TOK_COLON) 

+

10667 

+

10668 self.state = 1675 

+

10669 localctx._rule_Expression = self.rule_Expression(0) 

+

10670 localctx.elsifCondition.append(localctx._rule_Expression) 

+

10671 self.state = 1676 

+

10672 self.match(VHDLParser.KW_GENERATE) 

+

10673 self.state = 1677 

+

10674 localctx._rule_GenerateStatementBody = self.rule_GenerateStatementBody() 

+

10675 localctx.elsifBody.append(localctx._rule_GenerateStatementBody) 

+

10676 self.state = 1683 

+

10677 self._errHandler.sync(self) 

+

10678 _la = self._input.LA(1) 

+

10679 

+

10680 self.state = 1691 

+

10681 self._errHandler.sync(self) 

+

10682 _la = self._input.LA(1) 

+

10683 if _la == 31: 

+

10684 self.state = 1684 

+

10685 self.match(VHDLParser.KW_ELSE) 

+

10686 self.state = 1687 

+

10687 self._errHandler.sync(self) 

+

10688 _la = self._input.LA(1) 

+

10689 if _la == 163: 

+

10690 self.state = 1685 

+

10691 localctx._LIT_IDENTIFIER = self.match(VHDLParser.LIT_IDENTIFIER) 

+

10692 localctx.elseAlternativeLabel.append(localctx._LIT_IDENTIFIER) 

+

10693 self.state = 1686 

+

10694 self.match(VHDLParser.TOK_COLON) 

+

10695 

+

10696 self.state = 1689 

+

10697 self.match(VHDLParser.KW_GENERATE) 

+

10698 self.state = 1690 

+

10699 localctx.elseBody = self.rule_GenerateStatementBody() 

+

10700 

+

10701 self.state = 1693 

+

10702 self.match(VHDLParser.KW_END) 

+

10703 self.state = 1694 

+

10704 self.match(VHDLParser.KW_GENERATE) 

+

10705 self.state = 1696 

+

10706 self._errHandler.sync(self) 

+

10707 _la = self._input.LA(1) 

+

10708 if _la == 163: 

+

10709 self.state = 1695 

+

10710 localctx.label2 = self.match(VHDLParser.LIT_IDENTIFIER) 

+

10711 

+

10712 self.state = 1698 

+

10713 self.match(VHDLParser.TOK_SEMICOL) 

+

10714 except RecognitionException as re: 

+

10715 localctx.exception = re 

+

10716 self._errHandler.reportError(self, re) 

+

10717 self._errHandler.recover(self, re) 

+

10718 finally: 

+

10719 self.exitRule() 

+

10720 return localctx 

+

10721 

+

10722 class Rule_IfStatementContext(ParserRuleContext): 

+

10723 __slots__ = 'parser' 

+

10724 

+

10725 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

10726 super().__init__(parent, invokingState) 

+

10727 self.parser = parser 

+

10728 self.label = None # Token 

+

10729 self.condition = None # Rule_ExpressionContext 

+

10730 self._rule_SequentialStatement = None # Rule_SequentialStatementContext 

+

10731 self.thenStatements = list() # of Rule_SequentialStatementContexts 

+

10732 self.elseifStatements = list() # of Rule_SequentialStatementContexts 

+

10733 self.elseStatements = list() # of Rule_SequentialStatementContexts 

+

10734 self.label2 = None # Token 

+

10735 

+

10736 def KW_IF(self, i: int = None): 

+

10737 if i is None: 

+

10738 return self.getTokens(VHDLParser.KW_IF) 

+

10739 else: 

+

10740 return self.getToken(VHDLParser.KW_IF, i) 

+

10741 

+

10742 def KW_THEN(self, i: int = None): 

+

10743 if i is None: 

+

10744 return self.getTokens(VHDLParser.KW_THEN) 

+

10745 else: 

+

10746 return self.getToken(VHDLParser.KW_THEN, i) 

+

10747 

+

10748 def KW_END(self): 

+

10749 return self.getToken(VHDLParser.KW_END, 0) 

+

10750 

+

10751 def TOK_SEMICOL(self): 

+

10752 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

10753 

+

10754 def rule_Expression(self, i: int = None): 

+

10755 if i is None: 

+

10756 return self.getTypedRuleContexts(VHDLParser.Rule_ExpressionContext) 

+

10757 else: 

+

10758 return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, i) 

+

10759 

+

10760 def TOK_COLON(self): 

+

10761 return self.getToken(VHDLParser.TOK_COLON, 0) 

+

10762 

+

10763 def KW_ELSIF(self, i: int = None): 

+

10764 if i is None: 

+

10765 return self.getTokens(VHDLParser.KW_ELSIF) 

+

10766 else: 

+

10767 return self.getToken(VHDLParser.KW_ELSIF, i) 

+

10768 

+

10769 def KW_ELSE(self): 

+

10770 return self.getToken(VHDLParser.KW_ELSE, 0) 

+

10771 

+

10772 def LIT_IDENTIFIER(self, i: int = None): 

+

10773 if i is None: 

+

10774 return self.getTokens(VHDLParser.LIT_IDENTIFIER) 

+

10775 else: 

+

10776 return self.getToken(VHDLParser.LIT_IDENTIFIER, i) 

+

10777 

+

10778 def rule_SequentialStatement(self, i: int = None): 

+

10779 if i is None: 

+

10780 return self.getTypedRuleContexts(VHDLParser.Rule_SequentialStatementContext) 

+

10781 else: 

+

10782 return self.getTypedRuleContext(VHDLParser.Rule_SequentialStatementContext, i) 

+

10783 

+

10784 def getRuleIndex(self): 

+

10785 return VHDLParser.RULE_rule_IfStatement 

+

10786 

+

10787 def accept(self, visitor: ParseTreeVisitor): 

+

10788 if hasattr(visitor, "visitRule_IfStatement"): 

+

10789 return visitor.visitRule_IfStatement(self) 

+

10790 else: 

+

10791 return visitor.visitChildren(self) 

+

10792 

+

10793 def rule_IfStatement(self): 

+

10794 

+

10795 localctx = VHDLParser.Rule_IfStatementContext(self, self._ctx, self.state) 

+

10796 self.enterRule(localctx, 246, self.RULE_rule_IfStatement) 

+

10797 self._la = 0 # Token type 

+

10798 try: 

+

10799 self.enterOuterAlt(localctx, 1) 

+

10800 self.state = 1702 

+

10801 self._errHandler.sync(self) 

+

10802 _la = self._input.LA(1) 

+

10803 if _la == 163: 

+

10804 self.state = 1700 

+

10805 localctx.label = self.match(VHDLParser.LIT_IDENTIFIER) 

+

10806 self.state = 1701 

+

10807 self.match(VHDLParser.TOK_COLON) 

+

10808 

+

10809 self.state = 1704 

+

10810 self.match(VHDLParser.KW_IF) 

+

10811 self.state = 1705 

+

10812 localctx.condition = self.rule_Expression(0) 

+

10813 self.state = 1706 

+

10814 self.match(VHDLParser.KW_THEN) 

+

10815 self.state = 1710 

+

10816 self._errHandler.sync(self) 

+

10817 _la = self._input.LA(1) 

+

10818 while (((_la) & ~0x3f) == 0 and ((1 << _la) & -8052400777563193344) != 0) or ( 

+

10819 (((_la - 85)) & ~0x3f) == 0 and ((1 << (_la - 85)) & 4899916406390259715) != 0) or ( 

+

10820 (((_la - 161)) & ~0x3f) == 0 and ((1 << (_la - 161)) & 7) != 0): 

+

10821 self.state = 1707 

+

10822 localctx._rule_SequentialStatement = self.rule_SequentialStatement() 

+

10823 localctx.thenStatements.append(localctx._rule_SequentialStatement) 

+

10824 self.state = 1712 

+

10825 self._errHandler.sync(self) 

+

10826 _la = self._input.LA(1) 

+

10827 

+

10828 self.state = 1724 

+

10829 self._errHandler.sync(self) 

+

10830 _la = self._input.LA(1) 

+

10831 while _la == 32: 

+

10832 self.state = 1713 

+

10833 self.match(VHDLParser.KW_ELSIF) 

+

10834 self.state = 1714 

+

10835 localctx.condition = self.rule_Expression(0) 

+

10836 self.state = 1715 

+

10837 self.match(VHDLParser.KW_THEN) 

+

10838 self.state = 1719 

+

10839 self._errHandler.sync(self) 

+

10840 _la = self._input.LA(1) 

+

10841 while (((_la) & ~0x3f) == 0 and ((1 << _la) & -8052400777563193344) != 0) or ( 

+

10842 (((_la - 85)) & ~0x3f) == 0 and ((1 << (_la - 85)) & 4899916406390259715) != 0) or ( 

+

10843 (((_la - 161)) & ~0x3f) == 0 and ((1 << (_la - 161)) & 7) != 0): 

+

10844 self.state = 1716 

+

10845 localctx._rule_SequentialStatement = self.rule_SequentialStatement() 

+

10846 localctx.elseifStatements.append(localctx._rule_SequentialStatement) 

+

10847 self.state = 1721 

+

10848 self._errHandler.sync(self) 

+

10849 _la = self._input.LA(1) 

+

10850 

+

10851 self.state = 1726 

+

10852 self._errHandler.sync(self) 

+

10853 _la = self._input.LA(1) 

+

10854 

+

10855 self.state = 1734 

+

10856 self._errHandler.sync(self) 

+

10857 _la = self._input.LA(1) 

+

10858 if _la == 31: 

+

10859 self.state = 1727 

+

10860 self.match(VHDLParser.KW_ELSE) 

+

10861 self.state = 1731 

+

10862 self._errHandler.sync(self) 

+

10863 _la = self._input.LA(1) 

+

10864 while (((_la) & ~0x3f) == 0 and ((1 << _la) & -8052400777563193344) != 0) or ( 

+

10865 (((_la - 85)) & ~0x3f) == 0 and ((1 << (_la - 85)) & 4899916406390259715) != 0) or ( 

+

10866 (((_la - 161)) & ~0x3f) == 0 and ((1 << (_la - 161)) & 7) != 0): 

+

10867 self.state = 1728 

+

10868 localctx._rule_SequentialStatement = self.rule_SequentialStatement() 

+

10869 localctx.elseStatements.append(localctx._rule_SequentialStatement) 

+

10870 self.state = 1733 

+

10871 self._errHandler.sync(self) 

+

10872 _la = self._input.LA(1) 

+

10873 

+

10874 self.state = 1736 

+

10875 self.match(VHDLParser.KW_END) 

+

10876 self.state = 1737 

+

10877 self.match(VHDLParser.KW_IF) 

+

10878 self.state = 1739 

+

10879 self._errHandler.sync(self) 

+

10880 _la = self._input.LA(1) 

+

10881 if _la == 163: 

+

10882 self.state = 1738 

+

10883 localctx.label2 = self.match(VHDLParser.LIT_IDENTIFIER) 

+

10884 

+

10885 self.state = 1741 

+

10886 self.match(VHDLParser.TOK_SEMICOL) 

+

10887 except RecognitionException as re: 

+

10888 localctx.exception = re 

+

10889 self._errHandler.reportError(self, re) 

+

10890 self._errHandler.recover(self, re) 

+

10891 finally: 

+

10892 self.exitRule() 

+

10893 return localctx 

+

10894 

+

10895 class Rule_IncompleteSubtypeIndicationContext(ParserRuleContext): 

+

10896 __slots__ = 'parser' 

+

10897 

+

10898 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

10899 super().__init__(parent, invokingState) 

+

10900 self.parser = parser 

+

10901 

+

10902 def rule_SubtypeIndication(self): 

+

10903 return self.getTypedRuleContext(VHDLParser.Rule_SubtypeIndicationContext, 0) 

+

10904 

+

10905 def rule_UnspecifiedTypeIndication(self): 

+

10906 return self.getTypedRuleContext(VHDLParser.Rule_UnspecifiedTypeIndicationContext, 0) 

+

10907 

+

10908 def getRuleIndex(self): 

+

10909 return VHDLParser.RULE_rule_IncompleteSubtypeIndication 

+

10910 

+

10911 def accept(self, visitor: ParseTreeVisitor): 

+

10912 if hasattr(visitor, "visitRule_IncompleteSubtypeIndication"): 

+

10913 return visitor.visitRule_IncompleteSubtypeIndication(self) 

+

10914 else: 

+

10915 return visitor.visitChildren(self) 

+

10916 

+

10917 def rule_IncompleteSubtypeIndication(self): 

+

10918 

+

10919 localctx = VHDLParser.Rule_IncompleteSubtypeIndicationContext(self, self._ctx, self.state) 

+

10920 self.enterRule(localctx, 248, self.RULE_rule_IncompleteSubtypeIndication) 

+

10921 try: 

+

10922 self.state = 1745 

+

10923 self._errHandler.sync(self) 

+

10924 token = self._input.LA(1) 

+

10925 if token in [143, 147, 161, 162, 163]: 

+

10926 self.enterOuterAlt(localctx, 1) 

+

10927 self.state = 1743 

+

10928 self.rule_SubtypeIndication() 

+

10929 pass 

+

10930 elif token in [104]: 

+

10931 self.enterOuterAlt(localctx, 2) 

+

10932 self.state = 1744 

+

10933 self.rule_UnspecifiedTypeIndication() 

+

10934 pass 

+

10935 else: 

+

10936 raise NoViableAltException(self) 

+

10937 

+

10938 except RecognitionException as re: 

+

10939 localctx.exception = re 

+

10940 self._errHandler.reportError(self, re) 

+

10941 self._errHandler.recover(self, re) 

+

10942 finally: 

+

10943 self.exitRule() 

+

10944 return localctx 

+

10945 

+

10946 class Rule_IncompleteTypeDeclarationContext(ParserRuleContext): 

+

10947 __slots__ = 'parser' 

+

10948 

+

10949 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

10950 super().__init__(parent, invokingState) 

+

10951 self.parser = parser 

+

10952 self.name = None # Token 

+

10953 

+

10954 def KW_TYPE(self): 

+

10955 return self.getToken(VHDLParser.KW_TYPE, 0) 

+

10956 

+

10957 def TOK_SEMICOL(self): 

+

10958 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

10959 

+

10960 def LIT_IDENTIFIER(self): 

+

10961 return self.getToken(VHDLParser.LIT_IDENTIFIER, 0) 

+

10962 

+

10963 def getRuleIndex(self): 

+

10964 return VHDLParser.RULE_rule_IncompleteTypeDeclaration 

+

10965 

+

10966 def accept(self, visitor: ParseTreeVisitor): 

+

10967 if hasattr(visitor, "visitRule_IncompleteTypeDeclaration"): 

+

10968 return visitor.visitRule_IncompleteTypeDeclaration(self) 

+

10969 else: 

+

10970 return visitor.visitChildren(self) 

+

10971 

+

10972 def rule_IncompleteTypeDeclaration(self): 

+

10973 

+

10974 localctx = VHDLParser.Rule_IncompleteTypeDeclarationContext(self, self._ctx, self.state) 

+

10975 self.enterRule(localctx, 250, self.RULE_rule_IncompleteTypeDeclaration) 

+

10976 try: 

+

10977 self.enterOuterAlt(localctx, 1) 

+

10978 self.state = 1747 

+

10979 self.match(VHDLParser.KW_TYPE) 

+

10980 self.state = 1748 

+

10981 localctx.name = self.match(VHDLParser.LIT_IDENTIFIER) 

+

10982 self.state = 1749 

+

10983 self.match(VHDLParser.TOK_SEMICOL) 

+

10984 except RecognitionException as re: 

+

10985 localctx.exception = re 

+

10986 self._errHandler.reportError(self, re) 

+

10987 self._errHandler.recover(self, re) 

+

10988 finally: 

+

10989 self.exitRule() 

+

10990 return localctx 

+

10991 

+

10992 class Rule_IncompleteTypeDefinitionContext(ParserRuleContext): 

+

10993 __slots__ = 'parser' 

+

10994 

+

10995 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

10996 super().__init__(parent, invokingState) 

+

10997 self.parser = parser 

+

10998 

+

10999 def rule_PrivateIncompleteTypeDefinition(self): 

+

11000 return self.getTypedRuleContext(VHDLParser.Rule_PrivateIncompleteTypeDefinitionContext, 0) 

+

11001 

+

11002 def rule_ScalarIncompleteTypeDefinition(self): 

+

11003 return self.getTypedRuleContext(VHDLParser.Rule_ScalarIncompleteTypeDefinitionContext, 0) 

+

11004 

+

11005 def rule_DiscreteIncompleteTypeDefinition(self): 

+

11006 return self.getTypedRuleContext(VHDLParser.Rule_DiscreteIncompleteTypeDefinitionContext, 0) 

+

11007 

+

11008 def rule_IntegerIncompleteTypeDefinition(self): 

+

11009 return self.getTypedRuleContext(VHDLParser.Rule_IntegerIncompleteTypeDefinitionContext, 0) 

+

11010 

+

11011 def rule_PhysicalIncompleteTypeDefinition(self): 

+

11012 return self.getTypedRuleContext(VHDLParser.Rule_PhysicalIncompleteTypeDefinitionContext, 0) 

+

11013 

+

11014 def rule_FloatingIncompleteTypeDefinition(self): 

+

11015 return self.getTypedRuleContext(VHDLParser.Rule_FloatingIncompleteTypeDefinitionContext, 0) 

+

11016 

+

11017 def rule_ArrayIncompleteTypeDefinition(self): 

+

11018 return self.getTypedRuleContext(VHDLParser.Rule_ArrayIncompleteTypeDefinitionContext, 0) 

+

11019 

+

11020 def rule_AccessIncompleteTypeDefinition(self): 

+

11021 return self.getTypedRuleContext(VHDLParser.Rule_AccessIncompleteTypeDefinitionContext, 0) 

+

11022 

+

11023 def rule_FileIncompleteTypeDefinition(self): 

+

11024 return self.getTypedRuleContext(VHDLParser.Rule_FileIncompleteTypeDefinitionContext, 0) 

+

11025 

+

11026 def getRuleIndex(self): 

+

11027 return VHDLParser.RULE_rule_IncompleteTypeDefinition 

+

11028 

+

11029 def accept(self, visitor: ParseTreeVisitor): 

+

11030 if hasattr(visitor, "visitRule_IncompleteTypeDefinition"): 

+

11031 return visitor.visitRule_IncompleteTypeDefinition(self) 

+

11032 else: 

+

11033 return visitor.visitChildren(self) 

+

11034 

+

11035 def rule_IncompleteTypeDefinition(self): 

+

11036 

+

11037 localctx = VHDLParser.Rule_IncompleteTypeDefinitionContext(self, self._ctx, self.state) 

+

11038 self.enterRule(localctx, 252, self.RULE_rule_IncompleteTypeDefinition) 

+

11039 try: 

+

11040 self.state = 1760 

+

11041 self._errHandler.sync(self) 

+

11042 la_ = self._interp.adaptivePredict(self._input, 174, self._ctx) 

+

11043 if la_ == 1: 

+

11044 self.enterOuterAlt(localctx, 1) 

+

11045 self.state = 1751 

+

11046 self.rule_PrivateIncompleteTypeDefinition() 

+

11047 pass 

+

11048 

+

11049 elif la_ == 2: 

+

11050 self.enterOuterAlt(localctx, 2) 

+

11051 self.state = 1752 

+

11052 self.rule_ScalarIncompleteTypeDefinition() 

+

11053 pass 

+

11054 

+

11055 elif la_ == 3: 

+

11056 self.enterOuterAlt(localctx, 3) 

+

11057 self.state = 1753 

+

11058 self.rule_DiscreteIncompleteTypeDefinition() 

+

11059 pass 

+

11060 

+

11061 elif la_ == 4: 

+

11062 self.enterOuterAlt(localctx, 4) 

+

11063 self.state = 1754 

+

11064 self.rule_IntegerIncompleteTypeDefinition() 

+

11065 pass 

+

11066 

+

11067 elif la_ == 5: 

+

11068 self.enterOuterAlt(localctx, 5) 

+

11069 self.state = 1755 

+

11070 self.rule_PhysicalIncompleteTypeDefinition() 

+

11071 pass 

+

11072 

+

11073 elif la_ == 6: 

+

11074 self.enterOuterAlt(localctx, 6) 

+

11075 self.state = 1756 

+

11076 self.rule_FloatingIncompleteTypeDefinition() 

+

11077 pass 

+

11078 

+

11079 elif la_ == 7: 

+

11080 self.enterOuterAlt(localctx, 7) 

+

11081 self.state = 1757 

+

11082 self.rule_ArrayIncompleteTypeDefinition() 

+

11083 pass 

+

11084 

+

11085 elif la_ == 8: 

+

11086 self.enterOuterAlt(localctx, 8) 

+

11087 self.state = 1758 

+

11088 self.rule_AccessIncompleteTypeDefinition() 

+

11089 pass 

+

11090 

+

11091 elif la_ == 9: 

+

11092 self.enterOuterAlt(localctx, 9) 

+

11093 self.state = 1759 

+

11094 self.rule_FileIncompleteTypeDefinition() 

+

11095 pass 

+

11096 

+

11097 

+

11098 except RecognitionException as re: 

+

11099 localctx.exception = re 

+

11100 self._errHandler.reportError(self, re) 

+

11101 self._errHandler.recover(self, re) 

+

11102 finally: 

+

11103 self.exitRule() 

+

11104 return localctx 

+

11105 

+

11106 class Rule_IncompleteTypeMarkContext(ParserRuleContext): 

+

11107 __slots__ = 'parser' 

+

11108 

+

11109 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

11110 super().__init__(parent, invokingState) 

+

11111 self.parser = parser 

+

11112 

+

11113 def rule_Name(self): 

+

11114 return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0) 

+

11115 

+

11116 def rule_UnspecifiedTypeIndication(self): 

+

11117 return self.getTypedRuleContext(VHDLParser.Rule_UnspecifiedTypeIndicationContext, 0) 

+

11118 

+

11119 def getRuleIndex(self): 

+

11120 return VHDLParser.RULE_rule_IncompleteTypeMark 

+

11121 

+

11122 def accept(self, visitor: ParseTreeVisitor): 

+

11123 if hasattr(visitor, "visitRule_IncompleteTypeMark"): 

+

11124 return visitor.visitRule_IncompleteTypeMark(self) 

+

11125 else: 

+

11126 return visitor.visitChildren(self) 

+

11127 

+

11128 def rule_IncompleteTypeMark(self): 

+

11129 

+

11130 localctx = VHDLParser.Rule_IncompleteTypeMarkContext(self, self._ctx, self.state) 

+

11131 self.enterRule(localctx, 254, self.RULE_rule_IncompleteTypeMark) 

+

11132 try: 

+

11133 self.state = 1764 

+

11134 self._errHandler.sync(self) 

+

11135 token = self._input.LA(1) 

+

11136 if token in [147, 161, 162, 163]: 

+

11137 self.enterOuterAlt(localctx, 1) 

+

11138 self.state = 1762 

+

11139 self.rule_Name(0) 

+

11140 pass 

+

11141 elif token in [104]: 

+

11142 self.enterOuterAlt(localctx, 2) 

+

11143 self.state = 1763 

+

11144 self.rule_UnspecifiedTypeIndication() 

+

11145 pass 

+

11146 else: 

+

11147 raise NoViableAltException(self) 

+

11148 

+

11149 except RecognitionException as re: 

+

11150 localctx.exception = re 

+

11151 self._errHandler.reportError(self, re) 

+

11152 self._errHandler.recover(self, re) 

+

11153 finally: 

+

11154 self.exitRule() 

+

11155 return localctx 

+

11156 

+

11157 class Rule_IndexConstraintContext(ParserRuleContext): 

+

11158 __slots__ = 'parser' 

+

11159 

+

11160 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

11161 super().__init__(parent, invokingState) 

+

11162 self.parser = parser 

+

11163 self._rule_DiscreteRange = None # Rule_DiscreteRangeContext 

+

11164 self.ranges = list() # of Rule_DiscreteRangeContexts 

+

11165 

+

11166 def TOK_LP(self): 

+

11167 return self.getToken(VHDLParser.TOK_LP, 0) 

+

11168 

+

11169 def TOK_RP(self): 

+

11170 return self.getToken(VHDLParser.TOK_RP, 0) 

+

11171 

+

11172 def rule_DiscreteRange(self, i: int = None): 

+

11173 if i is None: 

+

11174 return self.getTypedRuleContexts(VHDLParser.Rule_DiscreteRangeContext) 

+

11175 else: 

+

11176 return self.getTypedRuleContext(VHDLParser.Rule_DiscreteRangeContext, i) 

+

11177 

+

11178 def TOK_COMMA(self, i: int = None): 

+

11179 if i is None: 

+

11180 return self.getTokens(VHDLParser.TOK_COMMA) 

+

11181 else: 

+

11182 return self.getToken(VHDLParser.TOK_COMMA, i) 

+

11183 

+

11184 def getRuleIndex(self): 

+

11185 return VHDLParser.RULE_rule_IndexConstraint 

+

11186 

+

11187 def accept(self, visitor: ParseTreeVisitor): 

+

11188 if hasattr(visitor, "visitRule_IndexConstraint"): 

+

11189 return visitor.visitRule_IndexConstraint(self) 

+

11190 else: 

+

11191 return visitor.visitChildren(self) 

+

11192 

+

11193 def rule_IndexConstraint(self): 

+

11194 

+

11195 localctx = VHDLParser.Rule_IndexConstraintContext(self, self._ctx, self.state) 

+

11196 self.enterRule(localctx, 256, self.RULE_rule_IndexConstraint) 

+

11197 self._la = 0 # Token type 

+

11198 try: 

+

11199 self.enterOuterAlt(localctx, 1) 

+

11200 self.state = 1766 

+

11201 self.match(VHDLParser.TOK_LP) 

+

11202 self.state = 1767 

+

11203 localctx._rule_DiscreteRange = self.rule_DiscreteRange() 

+

11204 localctx.ranges.append(localctx._rule_DiscreteRange) 

+

11205 self.state = 1772 

+

11206 self._errHandler.sync(self) 

+

11207 _la = self._input.LA(1) 

+

11208 while _la == 151: 

+

11209 self.state = 1768 

+

11210 self.match(VHDLParser.TOK_COMMA) 

+

11211 self.state = 1769 

+

11212 localctx._rule_DiscreteRange = self.rule_DiscreteRange() 

+

11213 localctx.ranges.append(localctx._rule_DiscreteRange) 

+

11214 self.state = 1774 

+

11215 self._errHandler.sync(self) 

+

11216 _la = self._input.LA(1) 

+

11217 

+

11218 self.state = 1775 

+

11219 self.match(VHDLParser.TOK_RP) 

+

11220 except RecognitionException as re: 

+

11221 localctx.exception = re 

+

11222 self._errHandler.reportError(self, re) 

+

11223 self._errHandler.recover(self, re) 

+

11224 finally: 

+

11225 self.exitRule() 

+

11226 return localctx 

+

11227 

+

11228 class Rule_IndexSubtypeDefinitionContext(ParserRuleContext): 

+

11229 __slots__ = 'parser' 

+

11230 

+

11231 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

11232 super().__init__(parent, invokingState) 

+

11233 self.parser = parser 

+

11234 self.typeMark = None # Rule_NameContext 

+

11235 

+

11236 def KW_RANGE(self): 

+

11237 return self.getToken(VHDLParser.KW_RANGE, 0) 

+

11238 

+

11239 def TOK_BOX(self): 

+

11240 return self.getToken(VHDLParser.TOK_BOX, 0) 

+

11241 

+

11242 def rule_Name(self): 

+

11243 return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0) 

+

11244 

+

11245 def getRuleIndex(self): 

+

11246 return VHDLParser.RULE_rule_IndexSubtypeDefinition 

+

11247 

+

11248 def accept(self, visitor: ParseTreeVisitor): 

+

11249 if hasattr(visitor, "visitRule_IndexSubtypeDefinition"): 

+

11250 return visitor.visitRule_IndexSubtypeDefinition(self) 

+

11251 else: 

+

11252 return visitor.visitChildren(self) 

+

11253 

+

11254 def rule_IndexSubtypeDefinition(self): 

+

11255 

+

11256 localctx = VHDLParser.Rule_IndexSubtypeDefinitionContext(self, self._ctx, self.state) 

+

11257 self.enterRule(localctx, 258, self.RULE_rule_IndexSubtypeDefinition) 

+

11258 try: 

+

11259 self.enterOuterAlt(localctx, 1) 

+

11260 self.state = 1777 

+

11261 localctx.typeMark = self.rule_Name(0) 

+

11262 self.state = 1778 

+

11263 self.match(VHDLParser.KW_RANGE) 

+

11264 self.state = 1779 

+

11265 self.match(VHDLParser.TOK_BOX) 

+

11266 except RecognitionException as re: 

+

11267 localctx.exception = re 

+

11268 self._errHandler.reportError(self, re) 

+

11269 self._errHandler.recover(self, re) 

+

11270 finally: 

+

11271 self.exitRule() 

+

11272 return localctx 

+

11273 

+

11274 class Rule_InstantiatedUnitContext(ParserRuleContext): 

+

11275 __slots__ = 'parser' 

+

11276 

+

11277 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

11278 super().__init__(parent, invokingState) 

+

11279 self.parser = parser 

+

11280 self.component = None # Token 

+

11281 self.componentName = None # Rule_NameContext 

+

11282 self.entityName = None # Rule_NameContext 

+

11283 self.architectureName = None # Token 

+

11284 self.configurationName = None # Rule_NameContext 

+

11285 

+

11286 def rule_Name(self): 

+

11287 return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0) 

+

11288 

+

11289 def KW_COMPONENT(self): 

+

11290 return self.getToken(VHDLParser.KW_COMPONENT, 0) 

+

11291 

+

11292 def KW_ENTITY(self): 

+

11293 return self.getToken(VHDLParser.KW_ENTITY, 0) 

+

11294 

+

11295 def TOK_LP(self): 

+

11296 return self.getToken(VHDLParser.TOK_LP, 0) 

+

11297 

+

11298 def TOK_RP(self): 

+

11299 return self.getToken(VHDLParser.TOK_RP, 0) 

+

11300 

+

11301 def LIT_IDENTIFIER(self): 

+

11302 return self.getToken(VHDLParser.LIT_IDENTIFIER, 0) 

+

11303 

+

11304 def KW_CONFIGURATION(self): 

+

11305 return self.getToken(VHDLParser.KW_CONFIGURATION, 0) 

+

11306 

+

11307 def getRuleIndex(self): 

+

11308 return VHDLParser.RULE_rule_InstantiatedUnit 

+

11309 

+

11310 def accept(self, visitor: ParseTreeVisitor): 

+

11311 if hasattr(visitor, "visitRule_InstantiatedUnit"): 

+

11312 return visitor.visitRule_InstantiatedUnit(self) 

+

11313 else: 

+

11314 return visitor.visitChildren(self) 

+

11315 

+

11316 def rule_InstantiatedUnit(self): 

+

11317 

+

11318 localctx = VHDLParser.Rule_InstantiatedUnitContext(self, self._ctx, self.state) 

+

11319 self.enterRule(localctx, 260, self.RULE_rule_InstantiatedUnit) 

+

11320 self._la = 0 # Token type 

+

11321 try: 

+

11322 self.state = 1794 

+

11323 self._errHandler.sync(self) 

+

11324 token = self._input.LA(1) 

+

11325 if token in [23, 147, 161, 162, 163]: 

+

11326 self.enterOuterAlt(localctx, 1) 

+

11327 self.state = 1782 

+

11328 self._errHandler.sync(self) 

+

11329 _la = self._input.LA(1) 

+

11330 if _la == 23: 

+

11331 self.state = 1781 

+

11332 localctx.component = self.match(VHDLParser.KW_COMPONENT) 

+

11333 

+

11334 self.state = 1784 

+

11335 localctx.componentName = self.rule_Name(0) 

+

11336 pass 

+

11337 elif token in [34]: 

+

11338 self.enterOuterAlt(localctx, 2) 

+

11339 self.state = 1785 

+

11340 self.match(VHDLParser.KW_ENTITY) 

+

11341 self.state = 1786 

+

11342 localctx.entityName = self.rule_Name(0) 

+

11343 self.state = 1790 

+

11344 self._errHandler.sync(self) 

+

11345 _la = self._input.LA(1) 

+

11346 if _la == 143: 

+

11347 self.state = 1787 

+

11348 self.match(VHDLParser.TOK_LP) 

+

11349 self.state = 1788 

+

11350 localctx.architectureName = self.match(VHDLParser.LIT_IDENTIFIER) 

+

11351 self.state = 1789 

+

11352 self.match(VHDLParser.TOK_RP) 

+

11353 

+

11354 pass 

+

11355 elif token in [24]: 

+

11356 self.enterOuterAlt(localctx, 3) 

+

11357 self.state = 1792 

+

11358 self.match(VHDLParser.KW_CONFIGURATION) 

+

11359 self.state = 1793 

+

11360 localctx.configurationName = self.rule_Name(0) 

+

11361 pass 

+

11362 else: 

+

11363 raise NoViableAltException(self) 

+

11364 

+

11365 except RecognitionException as re: 

+

11366 localctx.exception = re 

+

11367 self._errHandler.reportError(self, re) 

+

11368 self._errHandler.recover(self, re) 

+

11369 finally: 

+

11370 self.exitRule() 

+

11371 return localctx 

+

11372 

+

11373 class Rule_InstantiationListContext(ParserRuleContext): 

+

11374 __slots__ = 'parser' 

+

11375 

+

11376 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

11377 super().__init__(parent, invokingState) 

+

11378 self.parser = parser 

+

11379 self._LIT_IDENTIFIER = None # Token 

+

11380 self.componentNames = list() # of Tokens 

+

11381 self.others = None # Token 

+

11382 self.all_ = None # Token 

+

11383 

+

11384 def LIT_IDENTIFIER(self, i: int = None): 

+

11385 if i is None: 

+

11386 return self.getTokens(VHDLParser.LIT_IDENTIFIER) 

+

11387 else: 

+

11388 return self.getToken(VHDLParser.LIT_IDENTIFIER, i) 

+

11389 

+

11390 def TOK_COMMA(self, i: int = None): 

+

11391 if i is None: 

+

11392 return self.getTokens(VHDLParser.TOK_COMMA) 

+

11393 else: 

+

11394 return self.getToken(VHDLParser.TOK_COMMA, i) 

+

11395 

+

11396 def KW_OTHERS(self): 

+

11397 return self.getToken(VHDLParser.KW_OTHERS, 0) 

+

11398 

+

11399 def KW_ALL(self): 

+

11400 return self.getToken(VHDLParser.KW_ALL, 0) 

+

11401 

+

11402 def getRuleIndex(self): 

+

11403 return VHDLParser.RULE_rule_InstantiationList 

+

11404 

+

11405 def accept(self, visitor: ParseTreeVisitor): 

+

11406 if hasattr(visitor, "visitRule_InstantiationList"): 

+

11407 return visitor.visitRule_InstantiationList(self) 

+

11408 else: 

+

11409 return visitor.visitChildren(self) 

+

11410 

+

11411 def rule_InstantiationList(self): 

+

11412 

+

11413 localctx = VHDLParser.Rule_InstantiationListContext(self, self._ctx, self.state) 

+

11414 self.enterRule(localctx, 262, self.RULE_rule_InstantiationList) 

+

11415 self._la = 0 # Token type 

+

11416 try: 

+

11417 self.state = 1806 

+

11418 self._errHandler.sync(self) 

+

11419 token = self._input.LA(1) 

+

11420 if token in [163]: 

+

11421 self.enterOuterAlt(localctx, 1) 

+

11422 self.state = 1796 

+

11423 localctx._LIT_IDENTIFIER = self.match(VHDLParser.LIT_IDENTIFIER) 

+

11424 localctx.componentNames.append(localctx._LIT_IDENTIFIER) 

+

11425 self.state = 1801 

+

11426 self._errHandler.sync(self) 

+

11427 _la = self._input.LA(1) 

+

11428 while _la == 151: 

+

11429 self.state = 1797 

+

11430 self.match(VHDLParser.TOK_COMMA) 

+

11431 self.state = 1798 

+

11432 localctx._LIT_IDENTIFIER = self.match(VHDLParser.LIT_IDENTIFIER) 

+

11433 localctx.componentNames.append(localctx._LIT_IDENTIFIER) 

+

11434 self.state = 1803 

+

11435 self._errHandler.sync(self) 

+

11436 _la = self._input.LA(1) 

+

11437 

+

11438 pass 

+

11439 elif token in [68]: 

+

11440 self.enterOuterAlt(localctx, 2) 

+

11441 self.state = 1804 

+

11442 localctx.others = self.match(VHDLParser.KW_OTHERS) 

+

11443 pass 

+

11444 elif token in [10]: 

+

11445 self.enterOuterAlt(localctx, 3) 

+

11446 self.state = 1805 

+

11447 localctx.all_ = self.match(VHDLParser.KW_ALL) 

+

11448 pass 

+

11449 else: 

+

11450 raise NoViableAltException(self) 

+

11451 

+

11452 except RecognitionException as re: 

+

11453 localctx.exception = re 

+

11454 self._errHandler.reportError(self, re) 

+

11455 self._errHandler.recover(self, re) 

+

11456 finally: 

+

11457 self.exitRule() 

+

11458 return localctx 

+

11459 

+

11460 class Rule_IntegerIncompleteTypeDefinitionContext(ParserRuleContext): 

+

11461 __slots__ = 'parser' 

+

11462 

+

11463 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

11464 super().__init__(parent, invokingState) 

+

11465 self.parser = parser 

+

11466 

+

11467 def KW_RANGE(self): 

+

11468 return self.getToken(VHDLParser.KW_RANGE, 0) 

+

11469 

+

11470 def TOK_BOX(self): 

+

11471 return self.getToken(VHDLParser.TOK_BOX, 0) 

+

11472 

+

11473 def getRuleIndex(self): 

+

11474 return VHDLParser.RULE_rule_IntegerIncompleteTypeDefinition 

+

11475 

+

11476 def accept(self, visitor: ParseTreeVisitor): 

+

11477 if hasattr(visitor, "visitRule_IntegerIncompleteTypeDefinition"): 

+

11478 return visitor.visitRule_IntegerIncompleteTypeDefinition(self) 

+

11479 else: 

+

11480 return visitor.visitChildren(self) 

+

11481 

+

11482 def rule_IntegerIncompleteTypeDefinition(self): 

+

11483 

+

11484 localctx = VHDLParser.Rule_IntegerIncompleteTypeDefinitionContext(self, self._ctx, self.state) 

+

11485 self.enterRule(localctx, 264, self.RULE_rule_IntegerIncompleteTypeDefinition) 

+

11486 try: 

+

11487 self.enterOuterAlt(localctx, 1) 

+

11488 self.state = 1808 

+

11489 self.match(VHDLParser.KW_RANGE) 

+

11490 self.state = 1809 

+

11491 self.match(VHDLParser.TOK_BOX) 

+

11492 except RecognitionException as re: 

+

11493 localctx.exception = re 

+

11494 self._errHandler.reportError(self, re) 

+

11495 self._errHandler.recover(self, re) 

+

11496 finally: 

+

11497 self.exitRule() 

+

11498 return localctx 

+

11499 

+

11500 class Rule_IntegerTypeDefinitionContext(ParserRuleContext): 

+

11501 __slots__ = 'parser' 

+

11502 

+

11503 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

11504 super().__init__(parent, invokingState) 

+

11505 self.parser = parser 

+

11506 

+

11507 def rule_RangeConstraint(self): 

+

11508 return self.getTypedRuleContext(VHDLParser.Rule_RangeConstraintContext, 0) 

+

11509 

+

11510 def getRuleIndex(self): 

+

11511 return VHDLParser.RULE_rule_IntegerTypeDefinition 

+

11512 

+

11513 def accept(self, visitor: ParseTreeVisitor): 

+

11514 if hasattr(visitor, "visitRule_IntegerTypeDefinition"): 

+

11515 return visitor.visitRule_IntegerTypeDefinition(self) 

+

11516 else: 

+

11517 return visitor.visitChildren(self) 

+

11518 

+

11519 def rule_IntegerTypeDefinition(self): 

+

11520 

+

11521 localctx = VHDLParser.Rule_IntegerTypeDefinitionContext(self, self._ctx, self.state) 

+

11522 self.enterRule(localctx, 266, self.RULE_rule_IntegerTypeDefinition) 

+

11523 try: 

+

11524 self.enterOuterAlt(localctx, 1) 

+

11525 self.state = 1811 

+

11526 self.rule_RangeConstraint() 

+

11527 except RecognitionException as re: 

+

11528 localctx.exception = re 

+

11529 self._errHandler.reportError(self, re) 

+

11530 self._errHandler.recover(self, re) 

+

11531 finally: 

+

11532 self.exitRule() 

+

11533 return localctx 

+

11534 

+

11535 class Rule_InterfaceConstantDeclarationContext(ParserRuleContext): 

+

11536 __slots__ = 'parser' 

+

11537 

+

11538 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

11539 super().__init__(parent, invokingState) 

+

11540 self.parser = parser 

+

11541 self.constantNames = None # Rule_IdentifierListContext 

+

11542 self.modeName = None # Token 

+

11543 self.subtypeIndication = None # Rule_SubtypeIndicationContext 

+

11544 self.defaultValue = None # Rule_ExpressionContext 

+

11545 

+

11546 def TOK_COLON(self): 

+

11547 return self.getToken(VHDLParser.TOK_COLON, 0) 

+

11548 

+

11549 def rule_IdentifierList(self): 

+

11550 return self.getTypedRuleContext(VHDLParser.Rule_IdentifierListContext, 0) 

+

11551 

+

11552 def rule_SubtypeIndication(self): 

+

11553 return self.getTypedRuleContext(VHDLParser.Rule_SubtypeIndicationContext, 0) 

+

11554 

+

11555 def KW_CONSTANT(self): 

+

11556 return self.getToken(VHDLParser.KW_CONSTANT, 0) 

+

11557 

+

11558 def TOK_VAR_ASSIGN(self): 

+

11559 return self.getToken(VHDLParser.TOK_VAR_ASSIGN, 0) 

+

11560 

+

11561 def KW_IN(self): 

+

11562 return self.getToken(VHDLParser.KW_IN, 0) 

+

11563 

+

11564 def rule_Expression(self): 

+

11565 return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0) 

+

11566 

+

11567 def getRuleIndex(self): 

+

11568 return VHDLParser.RULE_rule_InterfaceConstantDeclaration 

+

11569 

+

11570 def accept(self, visitor: ParseTreeVisitor): 

+

11571 if hasattr(visitor, "visitRule_InterfaceConstantDeclaration"): 

+

11572 return visitor.visitRule_InterfaceConstantDeclaration(self) 

+

11573 else: 

+

11574 return visitor.visitChildren(self) 

+

11575 

+

11576 def rule_InterfaceConstantDeclaration(self): 

+

11577 

+

11578 localctx = VHDLParser.Rule_InterfaceConstantDeclarationContext(self, self._ctx, self.state) 

+

11579 self.enterRule(localctx, 268, self.RULE_rule_InterfaceConstantDeclaration) 

+

11580 self._la = 0 # Token type 

+

11581 try: 

+

11582 self.enterOuterAlt(localctx, 1) 

+

11583 self.state = 1814 

+

11584 self._errHandler.sync(self) 

+

11585 _la = self._input.LA(1) 

+

11586 if _la == 25: 

+

11587 self.state = 1813 

+

11588 self.match(VHDLParser.KW_CONSTANT) 

+

11589 

+

11590 self.state = 1816 

+

11591 localctx.constantNames = self.rule_IdentifierList() 

+

11592 self.state = 1817 

+

11593 self.match(VHDLParser.TOK_COLON) 

+

11594 self.state = 1819 

+

11595 self._errHandler.sync(self) 

+

11596 _la = self._input.LA(1) 

+

11597 if _la == 47: 

+

11598 self.state = 1818 

+

11599 localctx.modeName = self.match(VHDLParser.KW_IN) 

+

11600 

+

11601 self.state = 1821 

+

11602 localctx.subtypeIndication = self.rule_SubtypeIndication() 

+

11603 self.state = 1824 

+

11604 self._errHandler.sync(self) 

+

11605 _la = self._input.LA(1) 

+

11606 if _la == 141: 

+

11607 self.state = 1822 

+

11608 self.match(VHDLParser.TOK_VAR_ASSIGN) 

+

11609 self.state = 1823 

+

11610 localctx.defaultValue = self.rule_Expression(0) 

+

11611 

+

11612 

+

11613 except RecognitionException as re: 

+

11614 localctx.exception = re 

+

11615 self._errHandler.reportError(self, re) 

+

11616 self._errHandler.recover(self, re) 

+

11617 finally: 

+

11618 self.exitRule() 

+

11619 return localctx 

+

11620 

+

11621 class Rule_InterfaceDeclarationContext(ParserRuleContext): 

+

11622 __slots__ = 'parser' 

+

11623 

+

11624 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

11625 super().__init__(parent, invokingState) 

+

11626 self.parser = parser 

+

11627 

+

11628 def rule_InterfaceConstantDeclaration(self): 

+

11629 return self.getTypedRuleContext(VHDLParser.Rule_InterfaceConstantDeclarationContext, 0) 

+

11630 

+

11631 def rule_InterfaceVariableDeclaration(self): 

+

11632 return self.getTypedRuleContext(VHDLParser.Rule_InterfaceVariableDeclarationContext, 0) 

+

11633 

+

11634 def rule_InterfaceFileDeclaration(self): 

+

11635 return self.getTypedRuleContext(VHDLParser.Rule_InterfaceFileDeclarationContext, 0) 

+

11636 

+

11637 def rule_InterfaceTypeDeclaration(self): 

+

11638 return self.getTypedRuleContext(VHDLParser.Rule_InterfaceTypeDeclarationContext, 0) 

+

11639 

+

11640 def rule_InterfaceSubprogramDeclaration(self): 

+

11641 return self.getTypedRuleContext(VHDLParser.Rule_InterfaceSubprogramDeclarationContext, 0) 

+

11642 

+

11643 def rule_InterfacePackageDeclaration(self): 

+

11644 return self.getTypedRuleContext(VHDLParser.Rule_InterfacePackageDeclarationContext, 0) 

+

11645 

+

11646 def getRuleIndex(self): 

+

11647 return VHDLParser.RULE_rule_InterfaceDeclaration 

+

11648 

+

11649 def accept(self, visitor: ParseTreeVisitor): 

+

11650 if hasattr(visitor, "visitRule_InterfaceDeclaration"): 

+

11651 return visitor.visitRule_InterfaceDeclaration(self) 

+

11652 else: 

+

11653 return visitor.visitChildren(self) 

+

11654 

+

11655 def rule_InterfaceDeclaration(self): 

+

11656 

+

11657 localctx = VHDLParser.Rule_InterfaceDeclarationContext(self, self._ctx, self.state) 

+

11658 self.enterRule(localctx, 270, self.RULE_rule_InterfaceDeclaration) 

+

11659 try: 

+

11660 self.state = 1832 

+

11661 self._errHandler.sync(self) 

+

11662 la_ = self._interp.adaptivePredict(self._input, 185, self._ctx) 

+

11663 if la_ == 1: 

+

11664 self.enterOuterAlt(localctx, 1) 

+

11665 self.state = 1826 

+

11666 self.rule_InterfaceConstantDeclaration() 

+

11667 pass 

+

11668 

+

11669 elif la_ == 2: 

+

11670 self.enterOuterAlt(localctx, 2) 

+

11671 self.state = 1827 

+

11672 self.rule_InterfaceVariableDeclaration() 

+

11673 pass 

+

11674 

+

11675 elif la_ == 3: 

+

11676 self.enterOuterAlt(localctx, 3) 

+

11677 self.state = 1828 

+

11678 self.rule_InterfaceFileDeclaration() 

+

11679 pass 

+

11680 

+

11681 elif la_ == 4: 

+

11682 self.enterOuterAlt(localctx, 4) 

+

11683 self.state = 1829 

+

11684 self.rule_InterfaceTypeDeclaration() 

+

11685 pass 

+

11686 

+

11687 elif la_ == 5: 

+

11688 self.enterOuterAlt(localctx, 5) 

+

11689 self.state = 1830 

+

11690 self.rule_InterfaceSubprogramDeclaration() 

+

11691 pass 

+

11692 

+

11693 elif la_ == 6: 

+

11694 self.enterOuterAlt(localctx, 6) 

+

11695 self.state = 1831 

+

11696 self.rule_InterfacePackageDeclaration() 

+

11697 pass 

+

11698 

+

11699 

+

11700 except RecognitionException as re: 

+

11701 localctx.exception = re 

+

11702 self._errHandler.reportError(self, re) 

+

11703 self._errHandler.recover(self, re) 

+

11704 finally: 

+

11705 self.exitRule() 

+

11706 return localctx 

+

11707 

+

11708 class Rule_InterfaceElementContext(ParserRuleContext): 

+

11709 __slots__ = 'parser' 

+

11710 

+

11711 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

11712 super().__init__(parent, invokingState) 

+

11713 self.parser = parser 

+

11714 

+

11715 def rule_InterfaceDeclaration(self): 

+

11716 return self.getTypedRuleContext(VHDLParser.Rule_InterfaceDeclarationContext, 0) 

+

11717 

+

11718 def getRuleIndex(self): 

+

11719 return VHDLParser.RULE_rule_InterfaceElement 

+

11720 

+

11721 def accept(self, visitor: ParseTreeVisitor): 

+

11722 if hasattr(visitor, "visitRule_InterfaceElement"): 

+

11723 return visitor.visitRule_InterfaceElement(self) 

+

11724 else: 

+

11725 return visitor.visitChildren(self) 

+

11726 

+

11727 def rule_InterfaceElement(self): 

+

11728 

+

11729 localctx = VHDLParser.Rule_InterfaceElementContext(self, self._ctx, self.state) 

+

11730 self.enterRule(localctx, 272, self.RULE_rule_InterfaceElement) 

+

11731 try: 

+

11732 self.enterOuterAlt(localctx, 1) 

+

11733 self.state = 1834 

+

11734 self.rule_InterfaceDeclaration() 

+

11735 except RecognitionException as re: 

+

11736 localctx.exception = re 

+

11737 self._errHandler.reportError(self, re) 

+

11738 self._errHandler.recover(self, re) 

+

11739 finally: 

+

11740 self.exitRule() 

+

11741 return localctx 

+

11742 

+

11743 class Rule_InterfaceFileDeclarationContext(ParserRuleContext): 

+

11744 __slots__ = 'parser' 

+

11745 

+

11746 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

11747 super().__init__(parent, invokingState) 

+

11748 self.parser = parser 

+

11749 self.names = None # Rule_IdentifierListContext 

+

11750 self.subtypeIndication = None # Rule_SubtypeIndicationContext 

+

11751 

+

11752 def KW_FILE(self): 

+

11753 return self.getToken(VHDLParser.KW_FILE, 0) 

+

11754 

+

11755 def TOK_COLON(self): 

+

11756 return self.getToken(VHDLParser.TOK_COLON, 0) 

+

11757 

+

11758 def rule_IdentifierList(self): 

+

11759 return self.getTypedRuleContext(VHDLParser.Rule_IdentifierListContext, 0) 

+

11760 

+

11761 def rule_SubtypeIndication(self): 

+

11762 return self.getTypedRuleContext(VHDLParser.Rule_SubtypeIndicationContext, 0) 

+

11763 

+

11764 def getRuleIndex(self): 

+

11765 return VHDLParser.RULE_rule_InterfaceFileDeclaration 

+

11766 

+

11767 def accept(self, visitor: ParseTreeVisitor): 

+

11768 if hasattr(visitor, "visitRule_InterfaceFileDeclaration"): 

+

11769 return visitor.visitRule_InterfaceFileDeclaration(self) 

+

11770 else: 

+

11771 return visitor.visitChildren(self) 

+

11772 

+

11773 def rule_InterfaceFileDeclaration(self): 

+

11774 

+

11775 localctx = VHDLParser.Rule_InterfaceFileDeclarationContext(self, self._ctx, self.state) 

+

11776 self.enterRule(localctx, 274, self.RULE_rule_InterfaceFileDeclaration) 

+

11777 try: 

+

11778 self.enterOuterAlt(localctx, 1) 

+

11779 self.state = 1836 

+

11780 self.match(VHDLParser.KW_FILE) 

+

11781 self.state = 1837 

+

11782 localctx.names = self.rule_IdentifierList() 

+

11783 self.state = 1838 

+

11784 self.match(VHDLParser.TOK_COLON) 

+

11785 self.state = 1839 

+

11786 localctx.subtypeIndication = self.rule_SubtypeIndication() 

+

11787 except RecognitionException as re: 

+

11788 localctx.exception = re 

+

11789 self._errHandler.reportError(self, re) 

+

11790 self._errHandler.recover(self, re) 

+

11791 finally: 

+

11792 self.exitRule() 

+

11793 return localctx 

+

11794 

+

11795 class Rule_InterfaceFunctionSpecificationContext(ParserRuleContext): 

+

11796 __slots__ = 'parser' 

+

11797 

+

11798 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

11799 super().__init__(parent, invokingState) 

+

11800 self.parser = parser 

+

11801 

+

11802 def KW_FUNCTION(self): 

+

11803 return self.getToken(VHDLParser.KW_FUNCTION, 0) 

+

11804 

+

11805 def rule_Designator(self): 

+

11806 return self.getTypedRuleContext(VHDLParser.Rule_DesignatorContext, 0) 

+

11807 

+

11808 def KW_RETURN(self): 

+

11809 return self.getToken(VHDLParser.KW_RETURN, 0) 

+

11810 

+

11811 def rule_Name(self): 

+

11812 return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0) 

+

11813 

+

11814 def TOK_LP(self): 

+

11815 return self.getToken(VHDLParser.TOK_LP, 0) 

+

11816 

+

11817 def rule_FormalParameterList(self): 

+

11818 return self.getTypedRuleContext(VHDLParser.Rule_FormalParameterListContext, 0) 

+

11819 

+

11820 def TOK_RP(self): 

+

11821 return self.getToken(VHDLParser.TOK_RP, 0) 

+

11822 

+

11823 def KW_PURE(self): 

+

11824 return self.getToken(VHDLParser.KW_PURE, 0) 

+

11825 

+

11826 def KW_IMPURE(self): 

+

11827 return self.getToken(VHDLParser.KW_IMPURE, 0) 

+

11828 

+

11829 def KW_PARAMETER(self): 

+

11830 return self.getToken(VHDLParser.KW_PARAMETER, 0) 

+

11831 

+

11832 def getRuleIndex(self): 

+

11833 return VHDLParser.RULE_rule_InterfaceFunctionSpecification 

+

11834 

+

11835 def accept(self, visitor: ParseTreeVisitor): 

+

11836 if hasattr(visitor, "visitRule_InterfaceFunctionSpecification"): 

+

11837 return visitor.visitRule_InterfaceFunctionSpecification(self) 

+

11838 else: 

+

11839 return visitor.visitChildren(self) 

+

11840 

+

11841 def rule_InterfaceFunctionSpecification(self): 

+

11842 

+

11843 localctx = VHDLParser.Rule_InterfaceFunctionSpecificationContext(self, self._ctx, self.state) 

+

11844 self.enterRule(localctx, 276, self.RULE_rule_InterfaceFunctionSpecification) 

+

11845 self._la = 0 # Token type 

+

11846 try: 

+

11847 self.enterOuterAlt(localctx, 1) 

+

11848 self.state = 1842 

+

11849 self._errHandler.sync(self) 

+

11850 _la = self._input.LA(1) 

+

11851 if _la == 46 or _la == 78: 

+

11852 self.state = 1841 

+

11853 _la = self._input.LA(1) 

+

11854 if not (_la == 46 or _la == 78): 

+

11855 self._errHandler.recoverInline(self) 

+

11856 else: 

+

11857 self._errHandler.reportMatch(self) 

+

11858 self.consume() 

+

11859 

+

11860 self.state = 1844 

+

11861 self.match(VHDLParser.KW_FUNCTION) 

+

11862 self.state = 1845 

+

11863 self.rule_Designator() 

+

11864 self.state = 1853 

+

11865 self._errHandler.sync(self) 

+

11866 _la = self._input.LA(1) 

+

11867 if _la == 71 or _la == 143: 

+

11868 self.state = 1847 

+

11869 self._errHandler.sync(self) 

+

11870 _la = self._input.LA(1) 

+

11871 if _la == 71: 

+

11872 self.state = 1846 

+

11873 self.match(VHDLParser.KW_PARAMETER) 

+

11874 

+

11875 self.state = 1849 

+

11876 self.match(VHDLParser.TOK_LP) 

+

11877 self.state = 1850 

+

11878 self.rule_FormalParameterList() 

+

11879 self.state = 1851 

+

11880 self.match(VHDLParser.TOK_RP) 

+

11881 

+

11882 self.state = 1855 

+

11883 self.match(VHDLParser.KW_RETURN) 

+

11884 self.state = 1856 

+

11885 self.rule_Name(0) 

+

11886 except RecognitionException as re: 

+

11887 localctx.exception = re 

+

11888 self._errHandler.reportError(self, re) 

+

11889 self._errHandler.recover(self, re) 

+

11890 finally: 

+

11891 self.exitRule() 

+

11892 return localctx 

+

11893 

+

11894 class Rule_InterfaceListContext(ParserRuleContext): 

+

11895 __slots__ = 'parser' 

+

11896 

+

11897 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

11898 super().__init__(parent, invokingState) 

+

11899 self.parser = parser 

+

11900 self._rule_InterfaceElement = None # Rule_InterfaceElementContext 

+

11901 self.interfaceElements = list() # of Rule_InterfaceElementContexts 

+

11902 

+

11903 def rule_InterfaceElement(self, i: int = None): 

+

11904 if i is None: 

+

11905 return self.getTypedRuleContexts(VHDLParser.Rule_InterfaceElementContext) 

+

11906 else: 

+

11907 return self.getTypedRuleContext(VHDLParser.Rule_InterfaceElementContext, i) 

+

11908 

+

11909 def TOK_SEMICOL(self, i: int = None): 

+

11910 if i is None: 

+

11911 return self.getTokens(VHDLParser.TOK_SEMICOL) 

+

11912 else: 

+

11913 return self.getToken(VHDLParser.TOK_SEMICOL, i) 

+

11914 

+

11915 def getRuleIndex(self): 

+

11916 return VHDLParser.RULE_rule_InterfaceList 

+

11917 

+

11918 def accept(self, visitor: ParseTreeVisitor): 

+

11919 if hasattr(visitor, "visitRule_InterfaceList"): 

+

11920 return visitor.visitRule_InterfaceList(self) 

+

11921 else: 

+

11922 return visitor.visitChildren(self) 

+

11923 

+

11924 def rule_InterfaceList(self): 

+

11925 

+

11926 localctx = VHDLParser.Rule_InterfaceListContext(self, self._ctx, self.state) 

+

11927 self.enterRule(localctx, 278, self.RULE_rule_InterfaceList) 

+

11928 self._la = 0 # Token type 

+

11929 try: 

+

11930 self.enterOuterAlt(localctx, 1) 

+

11931 self.state = 1858 

+

11932 localctx._rule_InterfaceElement = self.rule_InterfaceElement() 

+

11933 localctx.interfaceElements.append(localctx._rule_InterfaceElement) 

+

11934 self.state = 1863 

+

11935 self._errHandler.sync(self) 

+

11936 _alt = self._interp.adaptivePredict(self._input, 189, self._ctx) 

+

11937 while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: 

+

11938 if _alt == 1: 

+

11939 self.state = 1859 

+

11940 self.match(VHDLParser.TOK_SEMICOL) 

+

11941 self.state = 1860 

+

11942 localctx._rule_InterfaceElement = self.rule_InterfaceElement() 

+

11943 localctx.interfaceElements.append(localctx._rule_InterfaceElement) 

+

11944 self.state = 1865 

+

11945 self._errHandler.sync(self) 

+

11946 _alt = self._interp.adaptivePredict(self._input, 189, self._ctx) 

+

11947 

+

11948 self.state = 1867 

+

11949 self._errHandler.sync(self) 

+

11950 _la = self._input.LA(1) 

+

11951 if _la == 150: 

+

11952 self.state = 1866 

+

11953 self.match(VHDLParser.TOK_SEMICOL) 

+

11954 

+

11955 

+

11956 except RecognitionException as re: 

+

11957 localctx.exception = re 

+

11958 self._errHandler.reportError(self, re) 

+

11959 self._errHandler.recover(self, re) 

+

11960 finally: 

+

11961 self.exitRule() 

+

11962 return localctx 

+

11963 

+

11964 class Rule_InterfacePackageDeclarationContext(ParserRuleContext): 

+

11965 __slots__ = 'parser' 

+

11966 

+

11967 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

11968 super().__init__(parent, invokingState) 

+

11969 self.parser = parser 

+

11970 self.name = None # Token 

+

11971 

+

11972 def KW_PACKAGE(self): 

+

11973 return self.getToken(VHDLParser.KW_PACKAGE, 0) 

+

11974 

+

11975 def KW_IS(self): 

+

11976 return self.getToken(VHDLParser.KW_IS, 0) 

+

11977 

+

11978 def KW_NEW(self): 

+

11979 return self.getToken(VHDLParser.KW_NEW, 0) 

+

11980 

+

11981 def rule_Name(self): 

+

11982 return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0) 

+

11983 

+

11984 def rule_InterfacePackageGenericMapAspect(self): 

+

11985 return self.getTypedRuleContext(VHDLParser.Rule_InterfacePackageGenericMapAspectContext, 0) 

+

11986 

+

11987 def LIT_IDENTIFIER(self): 

+

11988 return self.getToken(VHDLParser.LIT_IDENTIFIER, 0) 

+

11989 

+

11990 def getRuleIndex(self): 

+

11991 return VHDLParser.RULE_rule_InterfacePackageDeclaration 

+

11992 

+

11993 def accept(self, visitor: ParseTreeVisitor): 

+

11994 if hasattr(visitor, "visitRule_InterfacePackageDeclaration"): 

+

11995 return visitor.visitRule_InterfacePackageDeclaration(self) 

+

11996 else: 

+

11997 return visitor.visitChildren(self) 

+

11998 

+

11999 def rule_InterfacePackageDeclaration(self): 

+

12000 

+

12001 localctx = VHDLParser.Rule_InterfacePackageDeclarationContext(self, self._ctx, self.state) 

+

12002 self.enterRule(localctx, 280, self.RULE_rule_InterfacePackageDeclaration) 

+

12003 try: 

+

12004 self.enterOuterAlt(localctx, 1) 

+

12005 self.state = 1869 

+

12006 self.match(VHDLParser.KW_PACKAGE) 

+

12007 self.state = 1870 

+

12008 localctx.name = self.match(VHDLParser.LIT_IDENTIFIER) 

+

12009 self.state = 1871 

+

12010 self.match(VHDLParser.KW_IS) 

+

12011 self.state = 1872 

+

12012 self.match(VHDLParser.KW_NEW) 

+

12013 self.state = 1873 

+

12014 self.rule_Name(0) 

+

12015 self.state = 1874 

+

12016 self.rule_InterfacePackageGenericMapAspect() 

+

12017 except RecognitionException as re: 

+

12018 localctx.exception = re 

+

12019 self._errHandler.reportError(self, re) 

+

12020 self._errHandler.recover(self, re) 

+

12021 finally: 

+

12022 self.exitRule() 

+

12023 return localctx 

+

12024 

+

12025 class Rule_InterfacePackageGenericMapAspectContext(ParserRuleContext): 

+

12026 __slots__ = 'parser' 

+

12027 

+

12028 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

12029 super().__init__(parent, invokingState) 

+

12030 self.parser = parser 

+

12031 

+

12032 def rule_GenericMapAspect(self): 

+

12033 return self.getTypedRuleContext(VHDLParser.Rule_GenericMapAspectContext, 0) 

+

12034 

+

12035 def KW_GENERIC(self): 

+

12036 return self.getToken(VHDLParser.KW_GENERIC, 0) 

+

12037 

+

12038 def KW_MAP(self): 

+

12039 return self.getToken(VHDLParser.KW_MAP, 0) 

+

12040 

+

12041 def TOK_LP(self): 

+

12042 return self.getToken(VHDLParser.TOK_LP, 0) 

+

12043 

+

12044 def TOK_RP(self): 

+

12045 return self.getToken(VHDLParser.TOK_RP, 0) 

+

12046 

+

12047 def TOK_BOX(self): 

+

12048 return self.getToken(VHDLParser.TOK_BOX, 0) 

+

12049 

+

12050 def KW_DEFAULT(self): 

+

12051 return self.getToken(VHDLParser.KW_DEFAULT, 0) 

+

12052 

+

12053 def getRuleIndex(self): 

+

12054 return VHDLParser.RULE_rule_InterfacePackageGenericMapAspect 

+

12055 

+

12056 def accept(self, visitor: ParseTreeVisitor): 

+

12057 if hasattr(visitor, "visitRule_InterfacePackageGenericMapAspect"): 

+

12058 return visitor.visitRule_InterfacePackageGenericMapAspect(self) 

+

12059 else: 

+

12060 return visitor.visitChildren(self) 

+

12061 

+

12062 def rule_InterfacePackageGenericMapAspect(self): 

+

12063 

+

12064 localctx = VHDLParser.Rule_InterfacePackageGenericMapAspectContext(self, self._ctx, self.state) 

+

12065 self.enterRule(localctx, 282, self.RULE_rule_InterfacePackageGenericMapAspect) 

+

12066 self._la = 0 # Token type 

+

12067 try: 

+

12068 self.state = 1882 

+

12069 self._errHandler.sync(self) 

+

12070 la_ = self._interp.adaptivePredict(self._input, 191, self._ctx) 

+

12071 if la_ == 1: 

+

12072 self.enterOuterAlt(localctx, 1) 

+

12073 self.state = 1876 

+

12074 self.rule_GenericMapAspect() 

+

12075 pass 

+

12076 

+

12077 elif la_ == 2: 

+

12078 self.enterOuterAlt(localctx, 2) 

+

12079 self.state = 1877 

+

12080 self.match(VHDLParser.KW_GENERIC) 

+

12081 self.state = 1878 

+

12082 self.match(VHDLParser.KW_MAP) 

+

12083 self.state = 1879 

+

12084 self.match(VHDLParser.TOK_LP) 

+

12085 self.state = 1880 

+

12086 _la = self._input.LA(1) 

+

12087 if not (_la == 28 or _la == 142): 

+

12088 self._errHandler.recoverInline(self) 

+

12089 else: 

+

12090 self._errHandler.reportMatch(self) 

+

12091 self.consume() 

+

12092 self.state = 1881 

+

12093 self.match(VHDLParser.TOK_RP) 

+

12094 pass 

+

12095 

+

12096 

+

12097 except RecognitionException as re: 

+

12098 localctx.exception = re 

+

12099 self._errHandler.reportError(self, re) 

+

12100 self._errHandler.recover(self, re) 

+

12101 finally: 

+

12102 self.exitRule() 

+

12103 return localctx 

+

12104 

+

12105 class Rule_InterfaceProcedureSpecificationContext(ParserRuleContext): 

+

12106 __slots__ = 'parser' 

+

12107 

+

12108 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

12109 super().__init__(parent, invokingState) 

+

12110 self.parser = parser 

+

12111 self.name = None # Token 

+

12112 

+

12113 def KW_PROCEDURE(self): 

+

12114 return self.getToken(VHDLParser.KW_PROCEDURE, 0) 

+

12115 

+

12116 def LIT_IDENTIFIER(self): 

+

12117 return self.getToken(VHDLParser.LIT_IDENTIFIER, 0) 

+

12118 

+

12119 def TOK_LP(self): 

+

12120 return self.getToken(VHDLParser.TOK_LP, 0) 

+

12121 

+

12122 def rule_FormalParameterList(self): 

+

12123 return self.getTypedRuleContext(VHDLParser.Rule_FormalParameterListContext, 0) 

+

12124 

+

12125 def TOK_RP(self): 

+

12126 return self.getToken(VHDLParser.TOK_RP, 0) 

+

12127 

+

12128 def KW_PARAMETER(self): 

+

12129 return self.getToken(VHDLParser.KW_PARAMETER, 0) 

+

12130 

+

12131 def getRuleIndex(self): 

+

12132 return VHDLParser.RULE_rule_InterfaceProcedureSpecification 

+

12133 

+

12134 def accept(self, visitor: ParseTreeVisitor): 

+

12135 if hasattr(visitor, "visitRule_InterfaceProcedureSpecification"): 

+

12136 return visitor.visitRule_InterfaceProcedureSpecification(self) 

+

12137 else: 

+

12138 return visitor.visitChildren(self) 

+

12139 

+

12140 def rule_InterfaceProcedureSpecification(self): 

+

12141 

+

12142 localctx = VHDLParser.Rule_InterfaceProcedureSpecificationContext(self, self._ctx, self.state) 

+

12143 self.enterRule(localctx, 284, self.RULE_rule_InterfaceProcedureSpecification) 

+

12144 self._la = 0 # Token type 

+

12145 try: 

+

12146 self.enterOuterAlt(localctx, 1) 

+

12147 self.state = 1884 

+

12148 self.match(VHDLParser.KW_PROCEDURE) 

+

12149 self.state = 1885 

+

12150 localctx.name = self.match(VHDLParser.LIT_IDENTIFIER) 

+

12151 self.state = 1893 

+

12152 self._errHandler.sync(self) 

+

12153 _la = self._input.LA(1) 

+

12154 if _la == 71 or _la == 143: 

+

12155 self.state = 1887 

+

12156 self._errHandler.sync(self) 

+

12157 _la = self._input.LA(1) 

+

12158 if _la == 71: 

+

12159 self.state = 1886 

+

12160 self.match(VHDLParser.KW_PARAMETER) 

+

12161 

+

12162 self.state = 1889 

+

12163 self.match(VHDLParser.TOK_LP) 

+

12164 self.state = 1890 

+

12165 self.rule_FormalParameterList() 

+

12166 self.state = 1891 

+

12167 self.match(VHDLParser.TOK_RP) 

+

12168 

+

12169 

+

12170 except RecognitionException as re: 

+

12171 localctx.exception = re 

+

12172 self._errHandler.reportError(self, re) 

+

12173 self._errHandler.recover(self, re) 

+

12174 finally: 

+

12175 self.exitRule() 

+

12176 return localctx 

+

12177 

+

12178 class Rule_InterfaceSignalDeclarationContext(ParserRuleContext): 

+

12179 __slots__ = 'parser' 

+

12180 

+

12181 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

12182 super().__init__(parent, invokingState) 

+

12183 self.parser = parser 

+

12184 self.modeName = None # Rule_ModeIndicationContext 

+

12185 

+

12186 def rule_IdentifierList(self): 

+

12187 return self.getTypedRuleContext(VHDLParser.Rule_IdentifierListContext, 0) 

+

12188 

+

12189 def TOK_COLON(self): 

+

12190 return self.getToken(VHDLParser.TOK_COLON, 0) 

+

12191 

+

12192 def rule_ModeIndication(self): 

+

12193 return self.getTypedRuleContext(VHDLParser.Rule_ModeIndicationContext, 0) 

+

12194 

+

12195 def KW_SIGNAL(self): 

+

12196 return self.getToken(VHDLParser.KW_SIGNAL, 0) 

+

12197 

+

12198 def getRuleIndex(self): 

+

12199 return VHDLParser.RULE_rule_InterfaceSignalDeclaration 

+

12200 

+

12201 def accept(self, visitor: ParseTreeVisitor): 

+

12202 if hasattr(visitor, "visitRule_InterfaceSignalDeclaration"): 

+

12203 return visitor.visitRule_InterfaceSignalDeclaration(self) 

+

12204 else: 

+

12205 return visitor.visitChildren(self) 

+

12206 

+

12207 def rule_InterfaceSignalDeclaration(self): 

+

12208 

+

12209 localctx = VHDLParser.Rule_InterfaceSignalDeclarationContext(self, self._ctx, self.state) 

+

12210 self.enterRule(localctx, 286, self.RULE_rule_InterfaceSignalDeclaration) 

+

12211 self._la = 0 # Token type 

+

12212 try: 

+

12213 self.enterOuterAlt(localctx, 1) 

+

12214 self.state = 1896 

+

12215 self._errHandler.sync(self) 

+

12216 _la = self._input.LA(1) 

+

12217 if _la == 93: 

+

12218 self.state = 1895 

+

12219 self.match(VHDLParser.KW_SIGNAL) 

+

12220 

+

12221 self.state = 1898 

+

12222 self.rule_IdentifierList() 

+

12223 self.state = 1899 

+

12224 self.match(VHDLParser.TOK_COLON) 

+

12225 self.state = 1900 

+

12226 localctx.modeName = self.rule_ModeIndication() 

+

12227 except RecognitionException as re: 

+

12228 localctx.exception = re 

+

12229 self._errHandler.reportError(self, re) 

+

12230 self._errHandler.recover(self, re) 

+

12231 finally: 

+

12232 self.exitRule() 

+

12233 return localctx 

+

12234 

+

12235 class Rule_InterfaceSubprogramDeclarationContext(ParserRuleContext): 

+

12236 __slots__ = 'parser' 

+

12237 

+

12238 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

12239 super().__init__(parent, invokingState) 

+

12240 self.parser = parser 

+

12241 

+

12242 def rule_InterfaceSubprogramSpecification(self): 

+

12243 return self.getTypedRuleContext(VHDLParser.Rule_InterfaceSubprogramSpecificationContext, 0) 

+

12244 

+

12245 def KW_IS(self): 

+

12246 return self.getToken(VHDLParser.KW_IS, 0) 

+

12247 

+

12248 def rule_InterfaceSubprogramDefault(self): 

+

12249 return self.getTypedRuleContext(VHDLParser.Rule_InterfaceSubprogramDefaultContext, 0) 

+

12250 

+

12251 def getRuleIndex(self): 

+

12252 return VHDLParser.RULE_rule_InterfaceSubprogramDeclaration 

+

12253 

+

12254 def accept(self, visitor: ParseTreeVisitor): 

+

12255 if hasattr(visitor, "visitRule_InterfaceSubprogramDeclaration"): 

+

12256 return visitor.visitRule_InterfaceSubprogramDeclaration(self) 

+

12257 else: 

+

12258 return visitor.visitChildren(self) 

+

12259 

+

12260 def rule_InterfaceSubprogramDeclaration(self): 

+

12261 

+

12262 localctx = VHDLParser.Rule_InterfaceSubprogramDeclarationContext(self, self._ctx, self.state) 

+

12263 self.enterRule(localctx, 288, self.RULE_rule_InterfaceSubprogramDeclaration) 

+

12264 self._la = 0 # Token type 

+

12265 try: 

+

12266 self.enterOuterAlt(localctx, 1) 

+

12267 self.state = 1902 

+

12268 self.rule_InterfaceSubprogramSpecification() 

+

12269 self.state = 1905 

+

12270 self._errHandler.sync(self) 

+

12271 _la = self._input.LA(1) 

+

12272 if _la == 50: 

+

12273 self.state = 1903 

+

12274 self.match(VHDLParser.KW_IS) 

+

12275 self.state = 1904 

+

12276 self.rule_InterfaceSubprogramDefault() 

+

12277 

+

12278 

+

12279 except RecognitionException as re: 

+

12280 localctx.exception = re 

+

12281 self._errHandler.reportError(self, re) 

+

12282 self._errHandler.recover(self, re) 

+

12283 finally: 

+

12284 self.exitRule() 

+

12285 return localctx 

+

12286 

+

12287 class Rule_InterfaceSubprogramDefaultContext(ParserRuleContext): 

+

12288 __slots__ = 'parser' 

+

12289 

+

12290 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

12291 super().__init__(parent, invokingState) 

+

12292 self.parser = parser 

+

12293 

+

12294 def rule_Name(self): 

+

12295 return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0) 

+

12296 

+

12297 def TOK_BOX(self): 

+

12298 return self.getToken(VHDLParser.TOK_BOX, 0) 

+

12299 

+

12300 def getRuleIndex(self): 

+

12301 return VHDLParser.RULE_rule_InterfaceSubprogramDefault 

+

12302 

+

12303 def accept(self, visitor: ParseTreeVisitor): 

+

12304 if hasattr(visitor, "visitRule_InterfaceSubprogramDefault"): 

+

12305 return visitor.visitRule_InterfaceSubprogramDefault(self) 

+

12306 else: 

+

12307 return visitor.visitChildren(self) 

+

12308 

+

12309 def rule_InterfaceSubprogramDefault(self): 

+

12310 

+

12311 localctx = VHDLParser.Rule_InterfaceSubprogramDefaultContext(self, self._ctx, self.state) 

+

12312 self.enterRule(localctx, 290, self.RULE_rule_InterfaceSubprogramDefault) 

+

12313 try: 

+

12314 self.state = 1909 

+

12315 self._errHandler.sync(self) 

+

12316 token = self._input.LA(1) 

+

12317 if token in [147, 161, 162, 163]: 

+

12318 self.enterOuterAlt(localctx, 1) 

+

12319 self.state = 1907 

+

12320 self.rule_Name(0) 

+

12321 pass 

+

12322 elif token in [142]: 

+

12323 self.enterOuterAlt(localctx, 2) 

+

12324 self.state = 1908 

+

12325 self.match(VHDLParser.TOK_BOX) 

+

12326 pass 

+

12327 else: 

+

12328 raise NoViableAltException(self) 

+

12329 

+

12330 except RecognitionException as re: 

+

12331 localctx.exception = re 

+

12332 self._errHandler.reportError(self, re) 

+

12333 self._errHandler.recover(self, re) 

+

12334 finally: 

+

12335 self.exitRule() 

+

12336 return localctx 

+

12337 

+

12338 class Rule_InterfaceSubprogramSpecificationContext(ParserRuleContext): 

+

12339 __slots__ = 'parser' 

+

12340 

+

12341 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

12342 super().__init__(parent, invokingState) 

+

12343 self.parser = parser 

+

12344 

+

12345 def rule_InterfaceFunctionSpecification(self): 

+

12346 return self.getTypedRuleContext(VHDLParser.Rule_InterfaceFunctionSpecificationContext, 0) 

+

12347 

+

12348 def rule_InterfaceProcedureSpecification(self): 

+

12349 return self.getTypedRuleContext(VHDLParser.Rule_InterfaceProcedureSpecificationContext, 0) 

+

12350 

+

12351 def getRuleIndex(self): 

+

12352 return VHDLParser.RULE_rule_InterfaceSubprogramSpecification 

+

12353 

+

12354 def accept(self, visitor: ParseTreeVisitor): 

+

12355 if hasattr(visitor, "visitRule_InterfaceSubprogramSpecification"): 

+

12356 return visitor.visitRule_InterfaceSubprogramSpecification(self) 

+

12357 else: 

+

12358 return visitor.visitChildren(self) 

+

12359 

+

12360 def rule_InterfaceSubprogramSpecification(self): 

+

12361 

+

12362 localctx = VHDLParser.Rule_InterfaceSubprogramSpecificationContext(self, self._ctx, self.state) 

+

12363 self.enterRule(localctx, 292, self.RULE_rule_InterfaceSubprogramSpecification) 

+

12364 try: 

+

12365 self.state = 1913 

+

12366 self._errHandler.sync(self) 

+

12367 token = self._input.LA(1) 

+

12368 if token in [39, 46, 78]: 

+

12369 self.enterOuterAlt(localctx, 1) 

+

12370 self.state = 1911 

+

12371 self.rule_InterfaceFunctionSpecification() 

+

12372 pass 

+

12373 elif token in [75]: 

+

12374 self.enterOuterAlt(localctx, 2) 

+

12375 self.state = 1912 

+

12376 self.rule_InterfaceProcedureSpecification() 

+

12377 pass 

+

12378 else: 

+

12379 raise NoViableAltException(self) 

+

12380 

+

12381 except RecognitionException as re: 

+

12382 localctx.exception = re 

+

12383 self._errHandler.reportError(self, re) 

+

12384 self._errHandler.recover(self, re) 

+

12385 finally: 

+

12386 self.exitRule() 

+

12387 return localctx 

+

12388 

+

12389 class Rule_InterfaceTypeDeclarationContext(ParserRuleContext): 

+

12390 __slots__ = 'parser' 

+

12391 

+

12392 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

12393 super().__init__(parent, invokingState) 

+

12394 self.parser = parser 

+

12395 self.name = None # Token 

+

12396 

+

12397 def KW_TYPE(self): 

+

12398 return self.getToken(VHDLParser.KW_TYPE, 0) 

+

12399 

+

12400 def LIT_IDENTIFIER(self): 

+

12401 return self.getToken(VHDLParser.LIT_IDENTIFIER, 0) 

+

12402 

+

12403 def KW_IS(self): 

+

12404 return self.getToken(VHDLParser.KW_IS, 0) 

+

12405 

+

12406 def rule_IncompleteTypeDefinition(self): 

+

12407 return self.getTypedRuleContext(VHDLParser.Rule_IncompleteTypeDefinitionContext, 0) 

+

12408 

+

12409 def getRuleIndex(self): 

+

12410 return VHDLParser.RULE_rule_InterfaceTypeDeclaration 

+

12411 

+

12412 def accept(self, visitor: ParseTreeVisitor): 

+

12413 if hasattr(visitor, "visitRule_InterfaceTypeDeclaration"): 

+

12414 return visitor.visitRule_InterfaceTypeDeclaration(self) 

+

12415 else: 

+

12416 return visitor.visitChildren(self) 

+

12417 

+

12418 def rule_InterfaceTypeDeclaration(self): 

+

12419 

+

12420 localctx = VHDLParser.Rule_InterfaceTypeDeclarationContext(self, self._ctx, self.state) 

+

12421 self.enterRule(localctx, 294, self.RULE_rule_InterfaceTypeDeclaration) 

+

12422 self._la = 0 # Token type 

+

12423 try: 

+

12424 self.enterOuterAlt(localctx, 1) 

+

12425 self.state = 1915 

+

12426 self.match(VHDLParser.KW_TYPE) 

+

12427 self.state = 1916 

+

12428 localctx.name = self.match(VHDLParser.LIT_IDENTIFIER) 

+

12429 self.state = 1919 

+

12430 self._errHandler.sync(self) 

+

12431 _la = self._input.LA(1) 

+

12432 if _la == 50: 

+

12433 self.state = 1917 

+

12434 self.match(VHDLParser.KW_IS) 

+

12435 self.state = 1918 

+

12436 self.rule_IncompleteTypeDefinition() 

+

12437 

+

12438 

+

12439 except RecognitionException as re: 

+

12440 localctx.exception = re 

+

12441 self._errHandler.reportError(self, re) 

+

12442 self._errHandler.recover(self, re) 

+

12443 finally: 

+

12444 self.exitRule() 

+

12445 return localctx 

+

12446 

+

12447 class Rule_InterfaceTypeIndicationContext(ParserRuleContext): 

+

12448 __slots__ = 'parser' 

+

12449 

+

12450 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

12451 super().__init__(parent, invokingState) 

+

12452 self.parser = parser 

+

12453 

+

12454 def rule_SubtypeIndication(self): 

+

12455 return self.getTypedRuleContext(VHDLParser.Rule_SubtypeIndicationContext, 0) 

+

12456 

+

12457 def rule_UnspecifiedTypeIndication(self): 

+

12458 return self.getTypedRuleContext(VHDLParser.Rule_UnspecifiedTypeIndicationContext, 0) 

+

12459 

+

12460 def getRuleIndex(self): 

+

12461 return VHDLParser.RULE_rule_InterfaceTypeIndication 

+

12462 

+

12463 def accept(self, visitor: ParseTreeVisitor): 

+

12464 if hasattr(visitor, "visitRule_InterfaceTypeIndication"): 

+

12465 return visitor.visitRule_InterfaceTypeIndication(self) 

+

12466 else: 

+

12467 return visitor.visitChildren(self) 

+

12468 

+

12469 def rule_InterfaceTypeIndication(self): 

+

12470 

+

12471 localctx = VHDLParser.Rule_InterfaceTypeIndicationContext(self, self._ctx, self.state) 

+

12472 self.enterRule(localctx, 296, self.RULE_rule_InterfaceTypeIndication) 

+

12473 try: 

+

12474 self.state = 1923 

+

12475 self._errHandler.sync(self) 

+

12476 token = self._input.LA(1) 

+

12477 if token in [143, 147, 161, 162, 163]: 

+

12478 self.enterOuterAlt(localctx, 1) 

+

12479 self.state = 1921 

+

12480 self.rule_SubtypeIndication() 

+

12481 pass 

+

12482 elif token in [104]: 

+

12483 self.enterOuterAlt(localctx, 2) 

+

12484 self.state = 1922 

+

12485 self.rule_UnspecifiedTypeIndication() 

+

12486 pass 

+

12487 else: 

+

12488 raise NoViableAltException(self) 

+

12489 

+

12490 except RecognitionException as re: 

+

12491 localctx.exception = re 

+

12492 self._errHandler.reportError(self, re) 

+

12493 self._errHandler.recover(self, re) 

+

12494 finally: 

+

12495 self.exitRule() 

+

12496 return localctx 

+

12497 

+

12498 class Rule_InterfaceVariableDeclarationContext(ParserRuleContext): 

+

12499 __slots__ = 'parser' 

+

12500 

+

12501 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

12502 super().__init__(parent, invokingState) 

+

12503 self.parser = parser 

+

12504 self.names = None # Rule_IdentifierListContext 

+

12505 self.modeName = None # Rule_ModeContext 

+

12506 self.interfaceTypeIndication = None # Rule_InterfaceTypeIndicationContext 

+

12507 self.expression = None # Rule_ConditionalExpressionContext 

+

12508 

+

12509 def TOK_COLON(self): 

+

12510 return self.getToken(VHDLParser.TOK_COLON, 0) 

+

12511 

+

12512 def rule_IdentifierList(self): 

+

12513 return self.getTypedRuleContext(VHDLParser.Rule_IdentifierListContext, 0) 

+

12514 

+

12515 def rule_InterfaceTypeIndication(self): 

+

12516 return self.getTypedRuleContext(VHDLParser.Rule_InterfaceTypeIndicationContext, 0) 

+

12517 

+

12518 def KW_VARIABLE(self): 

+

12519 return self.getToken(VHDLParser.KW_VARIABLE, 0) 

+

12520 

+

12521 def TOK_VAR_ASSIGN(self): 

+

12522 return self.getToken(VHDLParser.TOK_VAR_ASSIGN, 0) 

+

12523 

+

12524 def rule_Mode(self): 

+

12525 return self.getTypedRuleContext(VHDLParser.Rule_ModeContext, 0) 

+

12526 

+

12527 def rule_ConditionalExpression(self): 

+

12528 return self.getTypedRuleContext(VHDLParser.Rule_ConditionalExpressionContext, 0) 

+

12529 

+

12530 def getRuleIndex(self): 

+

12531 return VHDLParser.RULE_rule_InterfaceVariableDeclaration 

+

12532 

+

12533 def accept(self, visitor: ParseTreeVisitor): 

+

12534 if hasattr(visitor, "visitRule_InterfaceVariableDeclaration"): 

+

12535 return visitor.visitRule_InterfaceVariableDeclaration(self) 

+

12536 else: 

+

12537 return visitor.visitChildren(self) 

+

12538 

+

12539 def rule_InterfaceVariableDeclaration(self): 

+

12540 

+

12541 localctx = VHDLParser.Rule_InterfaceVariableDeclarationContext(self, self._ctx, self.state) 

+

12542 self.enterRule(localctx, 298, self.RULE_rule_InterfaceVariableDeclaration) 

+

12543 self._la = 0 # Token type 

+

12544 try: 

+

12545 self.enterOuterAlt(localctx, 1) 

+

12546 self.state = 1926 

+

12547 self._errHandler.sync(self) 

+

12548 _la = self._input.LA(1) 

+

12549 if _la == 109: 

+

12550 self.state = 1925 

+

12551 self.match(VHDLParser.KW_VARIABLE) 

+

12552 

+

12553 self.state = 1928 

+

12554 localctx.names = self.rule_IdentifierList() 

+

12555 self.state = 1929 

+

12556 self.match(VHDLParser.TOK_COLON) 

+

12557 self.state = 1931 

+

12558 self._errHandler.sync(self) 

+

12559 _la = self._input.LA(1) 

+

12560 if (((_la - 20)) & ~0x3f) == 0 and ((1 << (_la - 20)) & 562959214444545) != 0: 

+

12561 self.state = 1930 

+

12562 localctx.modeName = self.rule_Mode() 

+

12563 

+

12564 self.state = 1933 

+

12565 localctx.interfaceTypeIndication = self.rule_InterfaceTypeIndication() 

+

12566 self.state = 1936 

+

12567 self._errHandler.sync(self) 

+

12568 _la = self._input.LA(1) 

+

12569 if _la == 141: 

+

12570 self.state = 1934 

+

12571 self.match(VHDLParser.TOK_VAR_ASSIGN) 

+

12572 self.state = 1935 

+

12573 localctx.expression = self.rule_ConditionalExpression() 

+

12574 

+

12575 

+

12576 except RecognitionException as re: 

+

12577 localctx.exception = re 

+

12578 self._errHandler.reportError(self, re) 

+

12579 self._errHandler.recover(self, re) 

+

12580 finally: 

+

12581 self.exitRule() 

+

12582 return localctx 

+

12583 

+

12584 class Rule_IterationSchemeContext(ParserRuleContext): 

+

12585 __slots__ = 'parser' 

+

12586 

+

12587 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

12588 super().__init__(parent, invokingState) 

+

12589 self.parser = parser 

+

12590 self.condition = None # Rule_ExpressionContext 

+

12591 self.parameterSpecification = None # Rule_ParameterSpecificationContext 

+

12592 

+

12593 def KW_WHILE(self): 

+

12594 return self.getToken(VHDLParser.KW_WHILE, 0) 

+

12595 

+

12596 def rule_Expression(self): 

+

12597 return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0) 

+

12598 

+

12599 def KW_FOR(self): 

+

12600 return self.getToken(VHDLParser.KW_FOR, 0) 

+

12601 

+

12602 def rule_ParameterSpecification(self): 

+

12603 return self.getTypedRuleContext(VHDLParser.Rule_ParameterSpecificationContext, 0) 

+

12604 

+

12605 def getRuleIndex(self): 

+

12606 return VHDLParser.RULE_rule_IterationScheme 

+

12607 

+

12608 def accept(self, visitor: ParseTreeVisitor): 

+

12609 if hasattr(visitor, "visitRule_IterationScheme"): 

+

12610 return visitor.visitRule_IterationScheme(self) 

+

12611 else: 

+

12612 return visitor.visitChildren(self) 

+

12613 

+

12614 def rule_IterationScheme(self): 

+

12615 

+

12616 localctx = VHDLParser.Rule_IterationSchemeContext(self, self._ctx, self.state) 

+

12617 self.enterRule(localctx, 300, self.RULE_rule_IterationScheme) 

+

12618 try: 

+

12619 self.state = 1942 

+

12620 self._errHandler.sync(self) 

+

12621 token = self._input.LA(1) 

+

12622 if token in [118]: 

+

12623 self.enterOuterAlt(localctx, 1) 

+

12624 self.state = 1938 

+

12625 self.match(VHDLParser.KW_WHILE) 

+

12626 self.state = 1939 

+

12627 localctx.condition = self.rule_Expression(0) 

+

12628 pass 

+

12629 elif token in [37]: 

+

12630 self.enterOuterAlt(localctx, 2) 

+

12631 self.state = 1940 

+

12632 self.match(VHDLParser.KW_FOR) 

+

12633 self.state = 1941 

+

12634 localctx.parameterSpecification = self.rule_ParameterSpecification() 

+

12635 pass 

+

12636 else: 

+

12637 raise NoViableAltException(self) 

+

12638 

+

12639 except RecognitionException as re: 

+

12640 localctx.exception = re 

+

12641 self._errHandler.reportError(self, re) 

+

12642 self._errHandler.recover(self, re) 

+

12643 finally: 

+

12644 self.exitRule() 

+

12645 return localctx 

+

12646 

+

12647 class Rule_LibraryClauseContext(ParserRuleContext): 

+

12648 __slots__ = 'parser' 

+

12649 

+

12650 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

12651 super().__init__(parent, invokingState) 

+

12652 self.parser = parser 

+

12653 self._LIT_IDENTIFIER = None # Token 

+

12654 self.names = list() # of Tokens 

+

12655 

+

12656 def KW_LIBRARY(self): 

+

12657 return self.getToken(VHDLParser.KW_LIBRARY, 0) 

+

12658 

+

12659 def TOK_SEMICOL(self): 

+

12660 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

12661 

+

12662 def LIT_IDENTIFIER(self, i: int = None): 

+

12663 if i is None: 

+

12664 return self.getTokens(VHDLParser.LIT_IDENTIFIER) 

+

12665 else: 

+

12666 return self.getToken(VHDLParser.LIT_IDENTIFIER, i) 

+

12667 

+

12668 def TOK_COMMA(self, i: int = None): 

+

12669 if i is None: 

+

12670 return self.getTokens(VHDLParser.TOK_COMMA) 

+

12671 else: 

+

12672 return self.getToken(VHDLParser.TOK_COMMA, i) 

+

12673 

+

12674 def getRuleIndex(self): 

+

12675 return VHDLParser.RULE_rule_LibraryClause 

+

12676 

+

12677 def accept(self, visitor: ParseTreeVisitor): 

+

12678 if hasattr(visitor, "visitRule_LibraryClause"): 

+

12679 return visitor.visitRule_LibraryClause(self) 

+

12680 else: 

+

12681 return visitor.visitChildren(self) 

+

12682 

+

12683 def rule_LibraryClause(self): 

+

12684 

+

12685 localctx = VHDLParser.Rule_LibraryClauseContext(self, self._ctx, self.state) 

+

12686 self.enterRule(localctx, 302, self.RULE_rule_LibraryClause) 

+

12687 self._la = 0 # Token type 

+

12688 try: 

+

12689 self.enterOuterAlt(localctx, 1) 

+

12690 self.state = 1944 

+

12691 self.match(VHDLParser.KW_LIBRARY) 

+

12692 self.state = 1945 

+

12693 localctx._LIT_IDENTIFIER = self.match(VHDLParser.LIT_IDENTIFIER) 

+

12694 localctx.names.append(localctx._LIT_IDENTIFIER) 

+

12695 self.state = 1950 

+

12696 self._errHandler.sync(self) 

+

12697 _la = self._input.LA(1) 

+

12698 while _la == 151: 

+

12699 self.state = 1946 

+

12700 self.match(VHDLParser.TOK_COMMA) 

+

12701 self.state = 1947 

+

12702 localctx._LIT_IDENTIFIER = self.match(VHDLParser.LIT_IDENTIFIER) 

+

12703 localctx.names.append(localctx._LIT_IDENTIFIER) 

+

12704 self.state = 1952 

+

12705 self._errHandler.sync(self) 

+

12706 _la = self._input.LA(1) 

+

12707 

+

12708 self.state = 1953 

+

12709 self.match(VHDLParser.TOK_SEMICOL) 

+

12710 except RecognitionException as re: 

+

12711 localctx.exception = re 

+

12712 self._errHandler.reportError(self, re) 

+

12713 self._errHandler.recover(self, re) 

+

12714 finally: 

+

12715 self.exitRule() 

+

12716 return localctx 

+

12717 

+

12718 class Rule_LibraryUnitContext(ParserRuleContext): 

+

12719 __slots__ = 'parser' 

+

12720 

+

12721 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

12722 super().__init__(parent, invokingState) 

+

12723 self.parser = parser 

+

12724 self.entity = None # Rule_EntityDeclarationContext 

+

12725 self.configuration = None # Rule_ConfigurationDeclarationContext 

+

12726 self.package = None # Rule_PackageDeclarationContext 

+

12727 self.packageInstance = None # Rule_PackageInstantiationDeclarationContext 

+

12728 self.context = None # Rule_ContextDeclarationContext 

+

12729 self.architecture = None # Rule_ArchitectureContext 

+

12730 self.packageBody = None # Rule_PackageBodyContext 

+

12731 

+

12732 def rule_EntityDeclaration(self): 

+

12733 return self.getTypedRuleContext(VHDLParser.Rule_EntityDeclarationContext, 0) 

+

12734 

+

12735 def rule_ConfigurationDeclaration(self): 

+

12736 return self.getTypedRuleContext(VHDLParser.Rule_ConfigurationDeclarationContext, 0) 

+

12737 

+

12738 def rule_PackageDeclaration(self): 

+

12739 return self.getTypedRuleContext(VHDLParser.Rule_PackageDeclarationContext, 0) 

+

12740 

+

12741 def rule_PackageInstantiationDeclaration(self): 

+

12742 return self.getTypedRuleContext(VHDLParser.Rule_PackageInstantiationDeclarationContext, 0) 

+

12743 

+

12744 def rule_ContextDeclaration(self): 

+

12745 return self.getTypedRuleContext(VHDLParser.Rule_ContextDeclarationContext, 0) 

+

12746 

+

12747 def rule_Architecture(self): 

+

12748 return self.getTypedRuleContext(VHDLParser.Rule_ArchitectureContext, 0) 

+

12749 

+

12750 def rule_PackageBody(self): 

+

12751 return self.getTypedRuleContext(VHDLParser.Rule_PackageBodyContext, 0) 

+

12752 

+

12753 def getRuleIndex(self): 

+

12754 return VHDLParser.RULE_rule_LibraryUnit 

+

12755 

+

12756 def accept(self, visitor: ParseTreeVisitor): 

+

12757 if hasattr(visitor, "visitRule_LibraryUnit"): 

+

12758 return visitor.visitRule_LibraryUnit(self) 

+

12759 else: 

+

12760 return visitor.visitChildren(self) 

+

12761 

+

12762 def rule_LibraryUnit(self): 

+

12763 

+

12764 localctx = VHDLParser.Rule_LibraryUnitContext(self, self._ctx, self.state) 

+

12765 self.enterRule(localctx, 304, self.RULE_rule_LibraryUnit) 

+

12766 try: 

+

12767 self.state = 1962 

+

12768 self._errHandler.sync(self) 

+

12769 la_ = self._interp.adaptivePredict(self._input, 205, self._ctx) 

+

12770 if la_ == 1: 

+

12771 self.enterOuterAlt(localctx, 1) 

+

12772 self.state = 1955 

+

12773 localctx.entity = self.rule_EntityDeclaration() 

+

12774 pass 

+

12775 

+

12776 elif la_ == 2: 

+

12777 self.enterOuterAlt(localctx, 2) 

+

12778 self.state = 1956 

+

12779 localctx.configuration = self.rule_ConfigurationDeclaration() 

+

12780 pass 

+

12781 

+

12782 elif la_ == 3: 

+

12783 self.enterOuterAlt(localctx, 3) 

+

12784 self.state = 1957 

+

12785 localctx.package = self.rule_PackageDeclaration() 

+

12786 pass 

+

12787 

+

12788 elif la_ == 4: 

+

12789 self.enterOuterAlt(localctx, 4) 

+

12790 self.state = 1958 

+

12791 localctx.packageInstance = self.rule_PackageInstantiationDeclaration() 

+

12792 pass 

+

12793 

+

12794 elif la_ == 5: 

+

12795 self.enterOuterAlt(localctx, 5) 

+

12796 self.state = 1959 

+

12797 localctx.context = self.rule_ContextDeclaration() 

+

12798 pass 

+

12799 

+

12800 elif la_ == 6: 

+

12801 self.enterOuterAlt(localctx, 6) 

+

12802 self.state = 1960 

+

12803 localctx.architecture = self.rule_Architecture() 

+

12804 pass 

+

12805 

+

12806 elif la_ == 7: 

+

12807 self.enterOuterAlt(localctx, 7) 

+

12808 self.state = 1961 

+

12809 localctx.packageBody = self.rule_PackageBody() 

+

12810 pass 

+

12811 

+

12812 

+

12813 except RecognitionException as re: 

+

12814 localctx.exception = re 

+

12815 self._errHandler.reportError(self, re) 

+

12816 self._errHandler.recover(self, re) 

+

12817 finally: 

+

12818 self.exitRule() 

+

12819 return localctx 

+

12820 

+

12821 class Rule_LiteralContext(ParserRuleContext): 

+

12822 __slots__ = 'parser' 

+

12823 

+

12824 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

12825 super().__init__(parent, invokingState) 

+

12826 self.parser = parser 

+

12827 

+

12828 def rule_NumericLiteral(self): 

+

12829 return self.getTypedRuleContext(VHDLParser.Rule_NumericLiteralContext, 0) 

+

12830 

+

12831 def rule_EnumerationLiteral(self): 

+

12832 return self.getTypedRuleContext(VHDLParser.Rule_EnumerationLiteralContext, 0) 

+

12833 

+

12834 def LIT_STRING(self): 

+

12835 return self.getToken(VHDLParser.LIT_STRING, 0) 

+

12836 

+

12837 def LIT_BIT_STRING(self): 

+

12838 return self.getToken(VHDLParser.LIT_BIT_STRING, 0) 

+

12839 

+

12840 def KW_NULL(self): 

+

12841 return self.getToken(VHDLParser.KW_NULL, 0) 

+

12842 

+

12843 def getRuleIndex(self): 

+

12844 return VHDLParser.RULE_rule_Literal 

+

12845 

+

12846 def accept(self, visitor: ParseTreeVisitor): 

+

12847 if hasattr(visitor, "visitRule_Literal"): 

+

12848 return visitor.visitRule_Literal(self) 

+

12849 else: 

+

12850 return visitor.visitChildren(self) 

+

12851 

+

12852 def rule_Literal(self): 

+

12853 

+

12854 localctx = VHDLParser.Rule_LiteralContext(self, self._ctx, self.state) 

+

12855 self.enterRule(localctx, 306, self.RULE_rule_Literal) 

+

12856 try: 

+

12857 self.state = 1969 

+

12858 self._errHandler.sync(self) 

+

12859 la_ = self._interp.adaptivePredict(self._input, 206, self._ctx) 

+

12860 if la_ == 1: 

+

12861 self.enterOuterAlt(localctx, 1) 

+

12862 self.state = 1964 

+

12863 self.rule_NumericLiteral() 

+

12864 pass 

+

12865 

+

12866 elif la_ == 2: 

+

12867 self.enterOuterAlt(localctx, 2) 

+

12868 self.state = 1965 

+

12869 self.rule_EnumerationLiteral() 

+

12870 pass 

+

12871 

+

12872 elif la_ == 3: 

+

12873 self.enterOuterAlt(localctx, 3) 

+

12874 self.state = 1966 

+

12875 self.match(VHDLParser.LIT_STRING) 

+

12876 pass 

+

12877 

+

12878 elif la_ == 4: 

+

12879 self.enterOuterAlt(localctx, 4) 

+

12880 self.state = 1967 

+

12881 self.match(VHDLParser.LIT_BIT_STRING) 

+

12882 pass 

+

12883 

+

12884 elif la_ == 5: 

+

12885 self.enterOuterAlt(localctx, 5) 

+

12886 self.state = 1968 

+

12887 self.match(VHDLParser.KW_NULL) 

+

12888 pass 

+

12889 

+

12890 

+

12891 except RecognitionException as re: 

+

12892 localctx.exception = re 

+

12893 self._errHandler.reportError(self, re) 

+

12894 self._errHandler.recover(self, re) 

+

12895 finally: 

+

12896 self.exitRule() 

+

12897 return localctx 

+

12898 

+

12899 class Rule_LoopStatementContext(ParserRuleContext): 

+

12900 __slots__ = 'parser' 

+

12901 

+

12902 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

12903 super().__init__(parent, invokingState) 

+

12904 self.parser = parser 

+

12905 self.label = None # Token 

+

12906 self.scheme = None # Rule_IterationSchemeContext 

+

12907 self._rule_SequentialStatement = None # Rule_SequentialStatementContext 

+

12908 self.statements = list() # of Rule_SequentialStatementContexts 

+

12909 self.label2 = None # Token 

+

12910 

+

12911 def KW_LOOP(self, i: int = None): 

+

12912 if i is None: 

+

12913 return self.getTokens(VHDLParser.KW_LOOP) 

+

12914 else: 

+

12915 return self.getToken(VHDLParser.KW_LOOP, i) 

+

12916 

+

12917 def KW_END(self): 

+

12918 return self.getToken(VHDLParser.KW_END, 0) 

+

12919 

+

12920 def TOK_SEMICOL(self): 

+

12921 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

12922 

+

12923 def TOK_COLON(self): 

+

12924 return self.getToken(VHDLParser.TOK_COLON, 0) 

+

12925 

+

12926 def LIT_IDENTIFIER(self, i: int = None): 

+

12927 if i is None: 

+

12928 return self.getTokens(VHDLParser.LIT_IDENTIFIER) 

+

12929 else: 

+

12930 return self.getToken(VHDLParser.LIT_IDENTIFIER, i) 

+

12931 

+

12932 def rule_IterationScheme(self): 

+

12933 return self.getTypedRuleContext(VHDLParser.Rule_IterationSchemeContext, 0) 

+

12934 

+

12935 def rule_SequentialStatement(self, i: int = None): 

+

12936 if i is None: 

+

12937 return self.getTypedRuleContexts(VHDLParser.Rule_SequentialStatementContext) 

+

12938 else: 

+

12939 return self.getTypedRuleContext(VHDLParser.Rule_SequentialStatementContext, i) 

+

12940 

+

12941 def getRuleIndex(self): 

+

12942 return VHDLParser.RULE_rule_LoopStatement 

+

12943 

+

12944 def accept(self, visitor: ParseTreeVisitor): 

+

12945 if hasattr(visitor, "visitRule_LoopStatement"): 

+

12946 return visitor.visitRule_LoopStatement(self) 

+

12947 else: 

+

12948 return visitor.visitChildren(self) 

+

12949 

+

12950 def rule_LoopStatement(self): 

+

12951 

+

12952 localctx = VHDLParser.Rule_LoopStatementContext(self, self._ctx, self.state) 

+

12953 self.enterRule(localctx, 308, self.RULE_rule_LoopStatement) 

+

12954 self._la = 0 # Token type 

+

12955 try: 

+

12956 self.enterOuterAlt(localctx, 1) 

+

12957 self.state = 1973 

+

12958 self._errHandler.sync(self) 

+

12959 _la = self._input.LA(1) 

+

12960 if _la == 163: 

+

12961 self.state = 1971 

+

12962 localctx.label = self.match(VHDLParser.LIT_IDENTIFIER) 

+

12963 self.state = 1972 

+

12964 self.match(VHDLParser.TOK_COLON) 

+

12965 

+

12966 self.state = 1976 

+

12967 self._errHandler.sync(self) 

+

12968 _la = self._input.LA(1) 

+

12969 if _la == 37 or _la == 118: 

+

12970 self.state = 1975 

+

12971 localctx.scheme = self.rule_IterationScheme() 

+

12972 

+

12973 self.state = 1978 

+

12974 self.match(VHDLParser.KW_LOOP) 

+

12975 self.state = 1982 

+

12976 self._errHandler.sync(self) 

+

12977 _la = self._input.LA(1) 

+

12978 while (((_la) & ~0x3f) == 0 and ((1 << _la) & -8052400777563193344) != 0) or ( 

+

12979 (((_la - 85)) & ~0x3f) == 0 and ((1 << (_la - 85)) & 4899916406390259715) != 0) or ( 

+

12980 (((_la - 161)) & ~0x3f) == 0 and ((1 << (_la - 161)) & 7) != 0): 

+

12981 self.state = 1979 

+

12982 localctx._rule_SequentialStatement = self.rule_SequentialStatement() 

+

12983 localctx.statements.append(localctx._rule_SequentialStatement) 

+

12984 self.state = 1984 

+

12985 self._errHandler.sync(self) 

+

12986 _la = self._input.LA(1) 

+

12987 

+

12988 self.state = 1985 

+

12989 self.match(VHDLParser.KW_END) 

+

12990 self.state = 1986 

+

12991 self.match(VHDLParser.KW_LOOP) 

+

12992 self.state = 1988 

+

12993 self._errHandler.sync(self) 

+

12994 _la = self._input.LA(1) 

+

12995 if _la == 163: 

+

12996 self.state = 1987 

+

12997 localctx.label2 = self.match(VHDLParser.LIT_IDENTIFIER) 

+

12998 

+

12999 self.state = 1990 

+

13000 self.match(VHDLParser.TOK_SEMICOL) 

+

13001 except RecognitionException as re: 

+

13002 localctx.exception = re 

+

13003 self._errHandler.reportError(self, re) 

+

13004 self._errHandler.recover(self, re) 

+

13005 finally: 

+

13006 self.exitRule() 

+

13007 return localctx 

+

13008 

+

13009 class Rule_ModeContext(ParserRuleContext): 

+

13010 __slots__ = 'parser' 

+

13011 

+

13012 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

13013 super().__init__(parent, invokingState) 

+

13014 self.parser = parser 

+

13015 self.name = None # Token 

+

13016 

+

13017 def KW_IN(self): 

+

13018 return self.getToken(VHDLParser.KW_IN, 0) 

+

13019 

+

13020 def KW_OUT(self): 

+

13021 return self.getToken(VHDLParser.KW_OUT, 0) 

+

13022 

+

13023 def KW_INOUT(self): 

+

13024 return self.getToken(VHDLParser.KW_INOUT, 0) 

+

13025 

+

13026 def KW_BUFFER(self): 

+

13027 return self.getToken(VHDLParser.KW_BUFFER, 0) 

+

13028 

+

13029 def KW_LINKAGE(self): 

+

13030 return self.getToken(VHDLParser.KW_LINKAGE, 0) 

+

13031 

+

13032 def getRuleIndex(self): 

+

13033 return VHDLParser.RULE_rule_Mode 

+

13034 

+

13035 def accept(self, visitor: ParseTreeVisitor): 

+

13036 if hasattr(visitor, "visitRule_Mode"): 

+

13037 return visitor.visitRule_Mode(self) 

+

13038 else: 

+

13039 return visitor.visitChildren(self) 

+

13040 

+

13041 def rule_Mode(self): 

+

13042 

+

13043 localctx = VHDLParser.Rule_ModeContext(self, self._ctx, self.state) 

+

13044 self.enterRule(localctx, 310, self.RULE_rule_Mode) 

+

13045 self._la = 0 # Token type 

+

13046 try: 

+

13047 self.enterOuterAlt(localctx, 1) 

+

13048 self.state = 1992 

+

13049 localctx.name = self._input.LT(1) 

+

13050 _la = self._input.LA(1) 

+

13051 if not (((((_la - 20)) & ~0x3f) == 0 and ((1 << (_la - 20)) & 562959214444545) != 0)): 

+

13052 localctx.name = self._errHandler.recoverInline(self) 

+

13053 else: 

+

13054 self._errHandler.reportMatch(self) 

+

13055 self.consume() 

+

13056 except RecognitionException as re: 

+

13057 localctx.exception = re 

+

13058 self._errHandler.reportError(self, re) 

+

13059 self._errHandler.recover(self, re) 

+

13060 finally: 

+

13061 self.exitRule() 

+

13062 return localctx 

+

13063 

+

13064 class Rule_ModeIndicationContext(ParserRuleContext): 

+

13065 __slots__ = 'parser' 

+

13066 

+

13067 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

13068 super().__init__(parent, invokingState) 

+

13069 self.parser = parser 

+

13070 

+

13071 def rule_SimpleModeIndication(self): 

+

13072 return self.getTypedRuleContext(VHDLParser.Rule_SimpleModeIndicationContext, 0) 

+

13073 

+

13074 def rule_ArrayModeViewIndication(self): 

+

13075 return self.getTypedRuleContext(VHDLParser.Rule_ArrayModeViewIndicationContext, 0) 

+

13076 

+

13077 def rule_RecordModeViewIndication(self): 

+

13078 return self.getTypedRuleContext(VHDLParser.Rule_RecordModeViewIndicationContext, 0) 

+

13079 

+

13080 def getRuleIndex(self): 

+

13081 return VHDLParser.RULE_rule_ModeIndication 

+

13082 

+

13083 def accept(self, visitor: ParseTreeVisitor): 

+

13084 if hasattr(visitor, "visitRule_ModeIndication"): 

+

13085 return visitor.visitRule_ModeIndication(self) 

+

13086 else: 

+

13087 return visitor.visitChildren(self) 

+

13088 

+

13089 def rule_ModeIndication(self): 

+

13090 

+

13091 localctx = VHDLParser.Rule_ModeIndicationContext(self, self._ctx, self.state) 

+

13092 self.enterRule(localctx, 312, self.RULE_rule_ModeIndication) 

+

13093 try: 

+

13094 self.state = 1997 

+

13095 self._errHandler.sync(self) 

+

13096 la_ = self._interp.adaptivePredict(self._input, 211, self._ctx) 

+

13097 if la_ == 1: 

+

13098 self.enterOuterAlt(localctx, 1) 

+

13099 self.state = 1994 

+

13100 self.rule_SimpleModeIndication() 

+

13101 pass 

+

13102 

+

13103 elif la_ == 2: 

+

13104 self.enterOuterAlt(localctx, 2) 

+

13105 self.state = 1995 

+

13106 self.rule_ArrayModeViewIndication() 

+

13107 pass 

+

13108 

+

13109 elif la_ == 3: 

+

13110 self.enterOuterAlt(localctx, 3) 

+

13111 self.state = 1996 

+

13112 self.rule_RecordModeViewIndication() 

+

13113 pass 

+

13114 

+

13115 

+

13116 except RecognitionException as re: 

+

13117 localctx.exception = re 

+

13118 self._errHandler.reportError(self, re) 

+

13119 self._errHandler.recover(self, re) 

+

13120 finally: 

+

13121 self.exitRule() 

+

13122 return localctx 

+

13123 

+

13124 class Rule_ModeViewDeclarationContext(ParserRuleContext): 

+

13125 __slots__ = 'parser' 

+

13126 

+

13127 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

13128 super().__init__(parent, invokingState) 

+

13129 self.parser = parser 

+

13130 self.name = None # Token 

+

13131 self.name2 = None # Token 

+

13132 

+

13133 def KW_VIEW(self, i: int = None): 

+

13134 if i is None: 

+

13135 return self.getTokens(VHDLParser.KW_VIEW) 

+

13136 else: 

+

13137 return self.getToken(VHDLParser.KW_VIEW, i) 

+

13138 

+

13139 def KW_OF(self): 

+

13140 return self.getToken(VHDLParser.KW_OF, 0) 

+

13141 

+

13142 def rule_SubtypeIndication(self): 

+

13143 return self.getTypedRuleContext(VHDLParser.Rule_SubtypeIndicationContext, 0) 

+

13144 

+

13145 def KW_IS(self): 

+

13146 return self.getToken(VHDLParser.KW_IS, 0) 

+

13147 

+

13148 def KW_END(self): 

+

13149 return self.getToken(VHDLParser.KW_END, 0) 

+

13150 

+

13151 def TOK_SEMICOL(self): 

+

13152 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

13153 

+

13154 def LIT_IDENTIFIER(self, i: int = None): 

+

13155 if i is None: 

+

13156 return self.getTokens(VHDLParser.LIT_IDENTIFIER) 

+

13157 else: 

+

13158 return self.getToken(VHDLParser.LIT_IDENTIFIER, i) 

+

13159 

+

13160 def rule_ModeViewElementDefinition(self, i: int = None): 

+

13161 if i is None: 

+

13162 return self.getTypedRuleContexts(VHDLParser.Rule_ModeViewElementDefinitionContext) 

+

13163 else: 

+

13164 return self.getTypedRuleContext(VHDLParser.Rule_ModeViewElementDefinitionContext, i) 

+

13165 

+

13166 def getRuleIndex(self): 

+

13167 return VHDLParser.RULE_rule_ModeViewDeclaration 

+

13168 

+

13169 def accept(self, visitor: ParseTreeVisitor): 

+

13170 if hasattr(visitor, "visitRule_ModeViewDeclaration"): 

+

13171 return visitor.visitRule_ModeViewDeclaration(self) 

+

13172 else: 

+

13173 return visitor.visitChildren(self) 

+

13174 

+

13175 def rule_ModeViewDeclaration(self): 

+

13176 

+

13177 localctx = VHDLParser.Rule_ModeViewDeclarationContext(self, self._ctx, self.state) 

+

13178 self.enterRule(localctx, 314, self.RULE_rule_ModeViewDeclaration) 

+

13179 self._la = 0 # Token type 

+

13180 try: 

+

13181 self.enterOuterAlt(localctx, 1) 

+

13182 self.state = 1999 

+

13183 self.match(VHDLParser.KW_VIEW) 

+

13184 self.state = 2000 

+

13185 localctx.name = self.match(VHDLParser.LIT_IDENTIFIER) 

+

13186 self.state = 2001 

+

13187 self.match(VHDLParser.KW_OF) 

+

13188 self.state = 2002 

+

13189 self.rule_SubtypeIndication() 

+

13190 self.state = 2003 

+

13191 self.match(VHDLParser.KW_IS) 

+

13192 self.state = 2007 

+

13193 self._errHandler.sync(self) 

+

13194 _la = self._input.LA(1) 

+

13195 while _la == 163: 

+

13196 self.state = 2004 

+

13197 self.rule_ModeViewElementDefinition() 

+

13198 self.state = 2009 

+

13199 self._errHandler.sync(self) 

+

13200 _la = self._input.LA(1) 

+

13201 

+

13202 self.state = 2010 

+

13203 self.match(VHDLParser.KW_END) 

+

13204 self.state = 2011 

+

13205 self.match(VHDLParser.KW_VIEW) 

+

13206 self.state = 2013 

+

13207 self._errHandler.sync(self) 

+

13208 _la = self._input.LA(1) 

+

13209 if _la == 163: 

+

13210 self.state = 2012 

+

13211 localctx.name2 = self.match(VHDLParser.LIT_IDENTIFIER) 

+

13212 

+

13213 self.state = 2015 

+

13214 self.match(VHDLParser.TOK_SEMICOL) 

+

13215 except RecognitionException as re: 

+

13216 localctx.exception = re 

+

13217 self._errHandler.reportError(self, re) 

+

13218 self._errHandler.recover(self, re) 

+

13219 finally: 

+

13220 self.exitRule() 

+

13221 return localctx 

+

13222 

+

13223 class Rule_ModeViewElementDefinitionContext(ParserRuleContext): 

+

13224 __slots__ = 'parser' 

+

13225 

+

13226 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

13227 super().__init__(parent, invokingState) 

+

13228 self.parser = parser 

+

13229 

+

13230 def rule_RecordElementList(self): 

+

13231 return self.getTypedRuleContext(VHDLParser.Rule_RecordElementListContext, 0) 

+

13232 

+

13233 def TOK_COLON(self): 

+

13234 return self.getToken(VHDLParser.TOK_COLON, 0) 

+

13235 

+

13236 def rule_ElementModeIndication(self): 

+

13237 return self.getTypedRuleContext(VHDLParser.Rule_ElementModeIndicationContext, 0) 

+

13238 

+

13239 def TOK_SEMICOL(self): 

+

13240 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

13241 

+

13242 def getRuleIndex(self): 

+

13243 return VHDLParser.RULE_rule_ModeViewElementDefinition 

+

13244 

+

13245 def accept(self, visitor: ParseTreeVisitor): 

+

13246 if hasattr(visitor, "visitRule_ModeViewElementDefinition"): 

+

13247 return visitor.visitRule_ModeViewElementDefinition(self) 

+

13248 else: 

+

13249 return visitor.visitChildren(self) 

+

13250 

+

13251 def rule_ModeViewElementDefinition(self): 

+

13252 

+

13253 localctx = VHDLParser.Rule_ModeViewElementDefinitionContext(self, self._ctx, self.state) 

+

13254 self.enterRule(localctx, 316, self.RULE_rule_ModeViewElementDefinition) 

+

13255 try: 

+

13256 self.enterOuterAlt(localctx, 1) 

+

13257 self.state = 2017 

+

13258 self.rule_RecordElementList() 

+

13259 self.state = 2018 

+

13260 self.match(VHDLParser.TOK_COLON) 

+

13261 self.state = 2019 

+

13262 self.rule_ElementModeIndication() 

+

13263 self.state = 2020 

+

13264 self.match(VHDLParser.TOK_SEMICOL) 

+

13265 except RecognitionException as re: 

+

13266 localctx.exception = re 

+

13267 self._errHandler.reportError(self, re) 

+

13268 self._errHandler.recover(self, re) 

+

13269 finally: 

+

13270 self.exitRule() 

+

13271 return localctx 

+

13272 

+

13273 class Rule_NameContext(ParserRuleContext): 

+

13274 __slots__ = 'parser' 

+

13275 

+

13276 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

13277 super().__init__(parent, invokingState) 

+

13278 self.parser = parser 

+

13279 

+

13280 def getRuleIndex(self): 

+

13281 return VHDLParser.RULE_rule_Name 

+

13282 

+

13283 def copyFrom(self, ctx: ParserRuleContext): 

+

13284 super().copyFrom(ctx) 

+

13285 

+

13286 class Rule_CharContext(Rule_NameContext): 

+

13287 

+

13288 def __init__(self, parser, ctx: ParserRuleContext): # actually a VHDLParser.Rule_NameContext 

+

13289 super().__init__(parser) 

+

13290 self.copyFrom(ctx) 

+

13291 

+

13292 def LIT_CHARACTER(self): 

+

13293 return self.getToken(VHDLParser.LIT_CHARACTER, 0) 

+

13294 

+

13295 def accept(self, visitor: ParseTreeVisitor): 

+

13296 if hasattr(visitor, "visitRule_Char"): 

+

13297 return visitor.visitRule_Char(self) 

+

13298 else: 

+

13299 return visitor.visitChildren(self) 

+

13300 

+

13301 class Rule_IndexedNameContext(Rule_NameContext): 

+

13302 

+

13303 def __init__(self, parser, ctx: ParserRuleContext): # actually a VHDLParser.Rule_NameContext 

+

13304 super().__init__(parser) 

+

13305 self.prefix = None # Rule_NameContext 

+

13306 self._rule_Expression = None # Rule_ExpressionContext 

+

13307 self.expressions = list() # of Rule_ExpressionContexts 

+

13308 self.copyFrom(ctx) 

+

13309 

+

13310 def TOK_LP(self): 

+

13311 return self.getToken(VHDLParser.TOK_LP, 0) 

+

13312 

+

13313 def TOK_RP(self): 

+

13314 return self.getToken(VHDLParser.TOK_RP, 0) 

+

13315 

+

13316 def rule_Name(self): 

+

13317 return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0) 

+

13318 

+

13319 def rule_Expression(self, i: int = None): 

+

13320 if i is None: 

+

13321 return self.getTypedRuleContexts(VHDLParser.Rule_ExpressionContext) 

+

13322 else: 

+

13323 return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, i) 

+

13324 

+

13325 def TOK_COMMA(self, i: int = None): 

+

13326 if i is None: 

+

13327 return self.getTokens(VHDLParser.TOK_COMMA) 

+

13328 else: 

+

13329 return self.getToken(VHDLParser.TOK_COMMA, i) 

+

13330 

+

13331 def accept(self, visitor: ParseTreeVisitor): 

+

13332 if hasattr(visitor, "visitRule_IndexedName"): 

+

13333 return visitor.visitRule_IndexedName(self) 

+

13334 else: 

+

13335 return visitor.visitChildren(self) 

+

13336 

+

13337 class Rule_SimpleNameContext(Rule_NameContext): 

+

13338 

+

13339 def __init__(self, parser, ctx: ParserRuleContext): # actually a VHDLParser.Rule_NameContext 

+

13340 super().__init__(parser) 

+

13341 self.copyFrom(ctx) 

+

13342 

+

13343 def LIT_IDENTIFIER(self): 

+

13344 return self.getToken(VHDLParser.LIT_IDENTIFIER, 0) 

+

13345 

+

13346 def accept(self, visitor: ParseTreeVisitor): 

+

13347 if hasattr(visitor, "visitRule_SimpleName"): 

+

13348 return visitor.visitRule_SimpleName(self) 

+

13349 else: 

+

13350 return visitor.visitChildren(self) 

+

13351 

+

13352 class Rule_ExternalContext(Rule_NameContext): 

+

13353 

+

13354 def __init__(self, parser, ctx: ParserRuleContext): # actually a VHDLParser.Rule_NameContext 

+

13355 super().__init__(parser) 

+

13356 self.copyFrom(ctx) 

+

13357 

+

13358 def rule_ExternalName(self): 

+

13359 return self.getTypedRuleContext(VHDLParser.Rule_ExternalNameContext, 0) 

+

13360 

+

13361 def accept(self, visitor: ParseTreeVisitor): 

+

13362 if hasattr(visitor, "visitRule_External"): 

+

13363 return visitor.visitRule_External(self) 

+

13364 else: 

+

13365 return visitor.visitChildren(self) 

+

13366 

+

13367 class Rule_AttributeNameContext(Rule_NameContext): 

+

13368 

+

13369 def __init__(self, parser, ctx: ParserRuleContext): # actually a VHDLParser.Rule_NameContext 

+

13370 super().__init__(parser) 

+

13371 self.prefix = None # Rule_NameContext 

+

13372 self.signature = None # Rule_SignatureContext 

+

13373 self.designator = None # Rule_AttributeDesignatorContext 

+

13374 self.expression = None # Rule_ExpressionContext 

+

13375 self.copyFrom(ctx) 

+

13376 

+

13377 def TOK_TICK(self): 

+

13378 return self.getToken(VHDLParser.TOK_TICK, 0) 

+

13379 

+

13380 def rule_Name(self): 

+

13381 return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0) 

+

13382 

+

13383 def rule_AttributeDesignator(self): 

+

13384 return self.getTypedRuleContext(VHDLParser.Rule_AttributeDesignatorContext, 0) 

+

13385 

+

13386 def TOK_LP(self): 

+

13387 return self.getToken(VHDLParser.TOK_LP, 0) 

+

13388 

+

13389 def TOK_RP(self): 

+

13390 return self.getToken(VHDLParser.TOK_RP, 0) 

+

13391 

+

13392 def rule_Signature(self): 

+

13393 return self.getTypedRuleContext(VHDLParser.Rule_SignatureContext, 0) 

+

13394 

+

13395 def rule_Expression(self): 

+

13396 return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0) 

+

13397 

+

13398 def accept(self, visitor: ParseTreeVisitor): 

+

13399 if hasattr(visitor, "visitRule_AttributeName"): 

+

13400 return visitor.visitRule_AttributeName(self) 

+

13401 else: 

+

13402 return visitor.visitChildren(self) 

+

13403 

+

13404 class Rule_SelectedNameContext(Rule_NameContext): 

+

13405 

+

13406 def __init__(self, parser, ctx: ParserRuleContext): # actually a VHDLParser.Rule_NameContext 

+

13407 super().__init__(parser) 

+

13408 self.prefix = None # Rule_NameContext 

+

13409 self.copyFrom(ctx) 

+

13410 

+

13411 def TOK_DOT(self): 

+

13412 return self.getToken(VHDLParser.TOK_DOT, 0) 

+

13413 

+

13414 def rule_Suffix(self): 

+

13415 return self.getTypedRuleContext(VHDLParser.Rule_SuffixContext, 0) 

+

13416 

+

13417 def rule_Name(self): 

+

13418 return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0) 

+

13419 

+

13420 def accept(self, visitor: ParseTreeVisitor): 

+

13421 if hasattr(visitor, "visitRule_SelectedName"): 

+

13422 return visitor.visitRule_SelectedName(self) 

+

13423 else: 

+

13424 return visitor.visitChildren(self) 

+

13425 

+

13426 class Rule_SliceNameContext(Rule_NameContext): 

+

13427 

+

13428 def __init__(self, parser, ctx: ParserRuleContext): # actually a VHDLParser.Rule_NameContext 

+

13429 super().__init__(parser) 

+

13430 self.prefix = None # Rule_NameContext 

+

13431 self.copyFrom(ctx) 

+

13432 

+

13433 def TOK_LP(self): 

+

13434 return self.getToken(VHDLParser.TOK_LP, 0) 

+

13435 

+

13436 def rule_DiscreteRange(self): 

+

13437 return self.getTypedRuleContext(VHDLParser.Rule_DiscreteRangeContext, 0) 

+

13438 

+

13439 def TOK_RP(self): 

+

13440 return self.getToken(VHDLParser.TOK_RP, 0) 

+

13441 

+

13442 def rule_Name(self): 

+

13443 return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0) 

+

13444 

+

13445 def accept(self, visitor: ParseTreeVisitor): 

+

13446 if hasattr(visitor, "visitRule_SliceName"): 

+

13447 return visitor.visitRule_SliceName(self) 

+

13448 else: 

+

13449 return visitor.visitChildren(self) 

+

13450 

+

13451 class Rule_OperatorContext(Rule_NameContext): 

+

13452 

+

13453 def __init__(self, parser, ctx: ParserRuleContext): # actually a VHDLParser.Rule_NameContext 

+

13454 super().__init__(parser) 

+

13455 self.copyFrom(ctx) 

+

13456 

+

13457 def LIT_STRING(self): 

+

13458 return self.getToken(VHDLParser.LIT_STRING, 0) 

+

13459 

+

13460 def accept(self, visitor: ParseTreeVisitor): 

+

13461 if hasattr(visitor, "visitRule_Operator"): 

+

13462 return visitor.visitRule_Operator(self) 

+

13463 else: 

+

13464 return visitor.visitChildren(self) 

+

13465 

+

13466 def rule_Name(self, _p: int = 0): 

+

13467 _parentctx = self._ctx 

+

13468 _parentState = self.state 

+

13469 localctx = VHDLParser.Rule_NameContext(self, self._ctx, _parentState) 

+

13470 _prevctx = localctx 

+

13471 _startState = 318 

+

13472 self.enterRecursionRule(localctx, 318, self.RULE_rule_Name, _p) 

+

13473 self._la = 0 # Token type 

+

13474 try: 

+

13475 self.enterOuterAlt(localctx, 1) 

+

13476 self.state = 2027 

+

13477 self._errHandler.sync(self) 

+

13478 token = self._input.LA(1) 

+

13479 if token in [163]: 

+

13480 localctx = VHDLParser.Rule_SimpleNameContext(self, localctx) 

+

13481 self._ctx = localctx 

+

13482 _prevctx = localctx 

+

13483 

+

13484 self.state = 2023 

+

13485 self.match(VHDLParser.LIT_IDENTIFIER) 

+

13486 pass 

+

13487 elif token in [162]: 

+

13488 localctx = VHDLParser.Rule_OperatorContext(self, localctx) 

+

13489 self._ctx = localctx 

+

13490 _prevctx = localctx 

+

13491 self.state = 2024 

+

13492 self.match(VHDLParser.LIT_STRING) 

+

13493 pass 

+

13494 elif token in [161]: 

+

13495 localctx = VHDLParser.Rule_CharContext(self, localctx) 

+

13496 self._ctx = localctx 

+

13497 _prevctx = localctx 

+

13498 self.state = 2025 

+

13499 self.match(VHDLParser.LIT_CHARACTER) 

+

13500 pass 

+

13501 elif token in [147]: 

+

13502 localctx = VHDLParser.Rule_ExternalContext(self, localctx) 

+

13503 self._ctx = localctx 

+

13504 _prevctx = localctx 

+

13505 self.state = 2026 

+

13506 self.rule_ExternalName() 

+

13507 pass 

+

13508 else: 

+

13509 raise NoViableAltException(self) 

+

13510 

+

13511 self._ctx.stop = self._input.LT(-1) 

+

13512 self.state = 2063 

+

13513 self._errHandler.sync(self) 

+

13514 _alt = self._interp.adaptivePredict(self._input, 219, self._ctx) 

+

13515 while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: 

+

13516 if _alt == 1: 

+

13517 if self._parseListeners is not None: 

+

13518 self.triggerExitRuleEvent() 

+

13519 _prevctx = localctx 

+

13520 self.state = 2061 

+

13521 self._errHandler.sync(self) 

+

13522 la_ = self._interp.adaptivePredict(self._input, 218, self._ctx) 

+

13523 if la_ == 1: 

+

13524 localctx = VHDLParser.Rule_SelectedNameContext(self, 

+

13525 VHDLParser.Rule_NameContext(self, _parentctx, _parentState)) 

+

13526 localctx.prefix = _prevctx 

+

13527 self.pushNewRecursionContext(localctx, _startState, self.RULE_rule_Name) 

+

13528 self.state = 2029 

+

13529 if not self.precpred(self._ctx, 5): 

+

13530 from antlr4.error.Errors import FailedPredicateException 

+

13531 raise FailedPredicateException(self, "self.precpred(self._ctx, 5)") 

+

13532 self.state = 2030 

+

13533 self.match(VHDLParser.TOK_DOT) 

+

13534 self.state = 2031 

+

13535 self.rule_Suffix() 

+

13536 pass 

+

13537 

+

13538 elif la_ == 2: 

+

13539 localctx = VHDLParser.Rule_IndexedNameContext(self, 

+

13540 VHDLParser.Rule_NameContext(self, _parentctx, _parentState)) 

+

13541 localctx.prefix = _prevctx 

+

13542 self.pushNewRecursionContext(localctx, _startState, self.RULE_rule_Name) 

+

13543 self.state = 2032 

+

13544 if not self.precpred(self._ctx, 4): 

+

13545 from antlr4.error.Errors import FailedPredicateException 

+

13546 raise FailedPredicateException(self, "self.precpred(self._ctx, 4)") 

+

13547 self.state = 2033 

+

13548 self.match(VHDLParser.TOK_LP) 

+

13549 self.state = 2034 

+

13550 localctx._rule_Expression = self.rule_Expression(0) 

+

13551 localctx.expressions.append(localctx._rule_Expression) 

+

13552 self.state = 2039 

+

13553 self._errHandler.sync(self) 

+

13554 _la = self._input.LA(1) 

+

13555 while _la == 151: 

+

13556 self.state = 2035 

+

13557 self.match(VHDLParser.TOK_COMMA) 

+

13558 self.state = 2036 

+

13559 localctx._rule_Expression = self.rule_Expression(0) 

+

13560 localctx.expressions.append(localctx._rule_Expression) 

+

13561 self.state = 2041 

+

13562 self._errHandler.sync(self) 

+

13563 _la = self._input.LA(1) 

+

13564 

+

13565 self.state = 2042 

+

13566 self.match(VHDLParser.TOK_RP) 

+

13567 pass 

+

13568 

+

13569 elif la_ == 3: 

+

13570 localctx = VHDLParser.Rule_SliceNameContext(self, 

+

13571 VHDLParser.Rule_NameContext(self, _parentctx, _parentState)) 

+

13572 localctx.prefix = _prevctx 

+

13573 self.pushNewRecursionContext(localctx, _startState, self.RULE_rule_Name) 

+

13574 self.state = 2044 

+

13575 if not self.precpred(self._ctx, 3): 

+

13576 from antlr4.error.Errors import FailedPredicateException 

+

13577 raise FailedPredicateException(self, "self.precpred(self._ctx, 3)") 

+

13578 self.state = 2045 

+

13579 self.match(VHDLParser.TOK_LP) 

+

13580 self.state = 2046 

+

13581 self.rule_DiscreteRange() 

+

13582 self.state = 2047 

+

13583 self.match(VHDLParser.TOK_RP) 

+

13584 pass 

+

13585 

+

13586 elif la_ == 4: 

+

13587 localctx = VHDLParser.Rule_AttributeNameContext(self, 

+

13588 VHDLParser.Rule_NameContext(self, _parentctx, _parentState)) 

+

13589 localctx.prefix = _prevctx 

+

13590 self.pushNewRecursionContext(localctx, _startState, self.RULE_rule_Name) 

+

13591 self.state = 2049 

+

13592 if not self.precpred(self._ctx, 2): 

+

13593 from antlr4.error.Errors import FailedPredicateException 

+

13594 raise FailedPredicateException(self, "self.precpred(self._ctx, 2)") 

+

13595 self.state = 2051 

+

13596 self._errHandler.sync(self) 

+

13597 _la = self._input.LA(1) 

+

13598 if _la == 145: 

+

13599 self.state = 2050 

+

13600 localctx.signature = self.rule_Signature() 

+

13601 

+

13602 self.state = 2053 

+

13603 self.match(VHDLParser.TOK_TICK) 

+

13604 self.state = 2054 

+

13605 localctx.designator = self.rule_AttributeDesignator() 

+

13606 self.state = 2059 

+

13607 self._errHandler.sync(self) 

+

13608 la_ = self._interp.adaptivePredict(self._input, 217, self._ctx) 

+

13609 if la_ == 1: 

+

13610 self.state = 2055 

+

13611 self.match(VHDLParser.TOK_LP) 

+

13612 self.state = 2056 

+

13613 localctx.expression = self.rule_Expression(0) 

+

13614 self.state = 2057 

+

13615 self.match(VHDLParser.TOK_RP) 

+

13616 

+

13617 pass 

+

13618 

+

13619 self.state = 2065 

+

13620 self._errHandler.sync(self) 

+

13621 _alt = self._interp.adaptivePredict(self._input, 219, self._ctx) 

+

13622 

+

13623 except RecognitionException as re: 

+

13624 localctx.exception = re 

+

13625 self._errHandler.reportError(self, re) 

+

13626 self._errHandler.recover(self, re) 

+

13627 finally: 

+

13628 self.unrollRecursionContexts(_parentctx) 

+

13629 return localctx 

+

13630 

+

13631 class Rule_NextStatementContext(ParserRuleContext): 

+

13632 __slots__ = 'parser' 

+

13633 

+

13634 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

13635 super().__init__(parent, invokingState) 

+

13636 self.parser = parser 

+

13637 self.label = None # Token 

+

13638 self.referencedLabel = None # Token 

+

13639 self.condition = None # Rule_ExpressionContext 

+

13640 

+

13641 def KW_NEXT(self): 

+

13642 return self.getToken(VHDLParser.KW_NEXT, 0) 

+

13643 

+

13644 def TOK_SEMICOL(self): 

+

13645 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

13646 

+

13647 def TOK_COLON(self): 

+

13648 return self.getToken(VHDLParser.TOK_COLON, 0) 

+

13649 

+

13650 def KW_WHEN(self): 

+

13651 return self.getToken(VHDLParser.KW_WHEN, 0) 

+

13652 

+

13653 def LIT_IDENTIFIER(self, i: int = None): 

+

13654 if i is None: 

+

13655 return self.getTokens(VHDLParser.LIT_IDENTIFIER) 

+

13656 else: 

+

13657 return self.getToken(VHDLParser.LIT_IDENTIFIER, i) 

+

13658 

+

13659 def rule_Expression(self): 

+

13660 return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0) 

+

13661 

+

13662 def getRuleIndex(self): 

+

13663 return VHDLParser.RULE_rule_NextStatement 

+

13664 

+

13665 def accept(self, visitor: ParseTreeVisitor): 

+

13666 if hasattr(visitor, "visitRule_NextStatement"): 

+

13667 return visitor.visitRule_NextStatement(self) 

+

13668 else: 

+

13669 return visitor.visitChildren(self) 

+

13670 

+

13671 def rule_NextStatement(self): 

+

13672 

+

13673 localctx = VHDLParser.Rule_NextStatementContext(self, self._ctx, self.state) 

+

13674 self.enterRule(localctx, 320, self.RULE_rule_NextStatement) 

+

13675 self._la = 0 # Token type 

+

13676 try: 

+

13677 self.enterOuterAlt(localctx, 1) 

+

13678 self.state = 2068 

+

13679 self._errHandler.sync(self) 

+

13680 _la = self._input.LA(1) 

+

13681 if _la == 163: 

+

13682 self.state = 2066 

+

13683 localctx.label = self.match(VHDLParser.LIT_IDENTIFIER) 

+

13684 self.state = 2067 

+

13685 self.match(VHDLParser.TOK_COLON) 

+

13686 

+

13687 self.state = 2070 

+

13688 self.match(VHDLParser.KW_NEXT) 

+

13689 self.state = 2072 

+

13690 self._errHandler.sync(self) 

+

13691 _la = self._input.LA(1) 

+

13692 if _la == 163: 

+

13693 self.state = 2071 

+

13694 localctx.referencedLabel = self.match(VHDLParser.LIT_IDENTIFIER) 

+

13695 

+

13696 self.state = 2076 

+

13697 self._errHandler.sync(self) 

+

13698 _la = self._input.LA(1) 

+

13699 if _la == 117: 

+

13700 self.state = 2074 

+

13701 self.match(VHDLParser.KW_WHEN) 

+

13702 self.state = 2075 

+

13703 localctx.condition = self.rule_Expression(0) 

+

13704 

+

13705 self.state = 2078 

+

13706 self.match(VHDLParser.TOK_SEMICOL) 

+

13707 except RecognitionException as re: 

+

13708 localctx.exception = re 

+

13709 self._errHandler.reportError(self, re) 

+

13710 self._errHandler.recover(self, re) 

+

13711 finally: 

+

13712 self.exitRule() 

+

13713 return localctx 

+

13714 

+

13715 class Rule_NullStatementContext(ParserRuleContext): 

+

13716 __slots__ = 'parser' 

+

13717 

+

13718 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

13719 super().__init__(parent, invokingState) 

+

13720 self.parser = parser 

+

13721 self.label = None # Token 

+

13722 

+

13723 def KW_NULL(self): 

+

13724 return self.getToken(VHDLParser.KW_NULL, 0) 

+

13725 

+

13726 def TOK_SEMICOL(self): 

+

13727 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

13728 

+

13729 def TOK_COLON(self): 

+

13730 return self.getToken(VHDLParser.TOK_COLON, 0) 

+

13731 

+

13732 def LIT_IDENTIFIER(self): 

+

13733 return self.getToken(VHDLParser.LIT_IDENTIFIER, 0) 

+

13734 

+

13735 def getRuleIndex(self): 

+

13736 return VHDLParser.RULE_rule_NullStatement 

+

13737 

+

13738 def accept(self, visitor: ParseTreeVisitor): 

+

13739 if hasattr(visitor, "visitRule_NullStatement"): 

+

13740 return visitor.visitRule_NullStatement(self) 

+

13741 else: 

+

13742 return visitor.visitChildren(self) 

+

13743 

+

13744 def rule_NullStatement(self): 

+

13745 

+

13746 localctx = VHDLParser.Rule_NullStatementContext(self, self._ctx, self.state) 

+

13747 self.enterRule(localctx, 322, self.RULE_rule_NullStatement) 

+

13748 self._la = 0 # Token type 

+

13749 try: 

+

13750 self.enterOuterAlt(localctx, 1) 

+

13751 self.state = 2082 

+

13752 self._errHandler.sync(self) 

+

13753 _la = self._input.LA(1) 

+

13754 if _la == 163: 

+

13755 self.state = 2080 

+

13756 localctx.label = self.match(VHDLParser.LIT_IDENTIFIER) 

+

13757 self.state = 2081 

+

13758 self.match(VHDLParser.TOK_COLON) 

+

13759 

+

13760 self.state = 2084 

+

13761 self.match(VHDLParser.KW_NULL) 

+

13762 self.state = 2085 

+

13763 self.match(VHDLParser.TOK_SEMICOL) 

+

13764 except RecognitionException as re: 

+

13765 localctx.exception = re 

+

13766 self._errHandler.reportError(self, re) 

+

13767 self._errHandler.recover(self, re) 

+

13768 finally: 

+

13769 self.exitRule() 

+

13770 return localctx 

+

13771 

+

13772 class Rule_NumericLiteralContext(ParserRuleContext): 

+

13773 __slots__ = 'parser' 

+

13774 

+

13775 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

13776 super().__init__(parent, invokingState) 

+

13777 self.parser = parser 

+

13778 

+

13779 def LIT_ABSTRACT(self): 

+

13780 return self.getToken(VHDLParser.LIT_ABSTRACT, 0) 

+

13781 

+

13782 def rule_PhysicalLiteral(self): 

+

13783 return self.getTypedRuleContext(VHDLParser.Rule_PhysicalLiteralContext, 0) 

+

13784 

+

13785 def getRuleIndex(self): 

+

13786 return VHDLParser.RULE_rule_NumericLiteral 

+

13787 

+

13788 def accept(self, visitor: ParseTreeVisitor): 

+

13789 if hasattr(visitor, "visitRule_NumericLiteral"): 

+

13790 return visitor.visitRule_NumericLiteral(self) 

+

13791 else: 

+

13792 return visitor.visitChildren(self) 

+

13793 

+

13794 def rule_NumericLiteral(self): 

+

13795 

+

13796 localctx = VHDLParser.Rule_NumericLiteralContext(self, self._ctx, self.state) 

+

13797 self.enterRule(localctx, 324, self.RULE_rule_NumericLiteral) 

+

13798 try: 

+

13799 self.state = 2089 

+

13800 self._errHandler.sync(self) 

+

13801 la_ = self._interp.adaptivePredict(self._input, 224, self._ctx) 

+

13802 if la_ == 1: 

+

13803 self.enterOuterAlt(localctx, 1) 

+

13804 self.state = 2087 

+

13805 self.match(VHDLParser.LIT_ABSTRACT) 

+

13806 pass 

+

13807 

+

13808 elif la_ == 2: 

+

13809 self.enterOuterAlt(localctx, 2) 

+

13810 self.state = 2088 

+

13811 self.rule_PhysicalLiteral() 

+

13812 pass 

+

13813 

+

13814 

+

13815 except RecognitionException as re: 

+

13816 localctx.exception = re 

+

13817 self._errHandler.reportError(self, re) 

+

13818 self._errHandler.recover(self, re) 

+

13819 finally: 

+

13820 self.exitRule() 

+

13821 return localctx 

+

13822 

+

13823 class Rule_PackageBodyContext(ParserRuleContext): 

+

13824 __slots__ = 'parser' 

+

13825 

+

13826 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

13827 super().__init__(parent, invokingState) 

+

13828 self.parser = parser 

+

13829 self.name = None # Token 

+

13830 self._rule_PackageBodyDeclarativeItem = None # Rule_PackageBodyDeclarativeItemContext 

+

13831 self.declarativeItem = list() # of Rule_PackageBodyDeclarativeItemContexts 

+

13832 self.name2 = None # Token 

+

13833 

+

13834 def KW_PACKAGE(self, i: int = None): 

+

13835 if i is None: 

+

13836 return self.getTokens(VHDLParser.KW_PACKAGE) 

+

13837 else: 

+

13838 return self.getToken(VHDLParser.KW_PACKAGE, i) 

+

13839 

+

13840 def KW_BODY(self, i: int = None): 

+

13841 if i is None: 

+

13842 return self.getTokens(VHDLParser.KW_BODY) 

+

13843 else: 

+

13844 return self.getToken(VHDLParser.KW_BODY, i) 

+

13845 

+

13846 def KW_IS(self): 

+

13847 return self.getToken(VHDLParser.KW_IS, 0) 

+

13848 

+

13849 def KW_END(self): 

+

13850 return self.getToken(VHDLParser.KW_END, 0) 

+

13851 

+

13852 def TOK_SEMICOL(self): 

+

13853 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

13854 

+

13855 def LIT_IDENTIFIER(self, i: int = None): 

+

13856 if i is None: 

+

13857 return self.getTokens(VHDLParser.LIT_IDENTIFIER) 

+

13858 else: 

+

13859 return self.getToken(VHDLParser.LIT_IDENTIFIER, i) 

+

13860 

+

13861 def rule_PackageBodyDeclarativeItem(self, i: int = None): 

+

13862 if i is None: 

+

13863 return self.getTypedRuleContexts(VHDLParser.Rule_PackageBodyDeclarativeItemContext) 

+

13864 else: 

+

13865 return self.getTypedRuleContext(VHDLParser.Rule_PackageBodyDeclarativeItemContext, i) 

+

13866 

+

13867 def getRuleIndex(self): 

+

13868 return VHDLParser.RULE_rule_PackageBody 

+

13869 

+

13870 def accept(self, visitor: ParseTreeVisitor): 

+

13871 if hasattr(visitor, "visitRule_PackageBody"): 

+

13872 return visitor.visitRule_PackageBody(self) 

+

13873 else: 

+

13874 return visitor.visitChildren(self) 

+

13875 

+

13876 def rule_PackageBody(self): 

+

13877 

+

13878 localctx = VHDLParser.Rule_PackageBodyContext(self, self._ctx, self.state) 

+

13879 self.enterRule(localctx, 326, self.RULE_rule_PackageBody) 

+

13880 self._la = 0 # Token type 

+

13881 try: 

+

13882 self.enterOuterAlt(localctx, 1) 

+

13883 self.state = 2091 

+

13884 self.match(VHDLParser.KW_PACKAGE) 

+

13885 self.state = 2092 

+

13886 self.match(VHDLParser.KW_BODY) 

+

13887 self.state = 2093 

+

13888 localctx.name = self.match(VHDLParser.LIT_IDENTIFIER) 

+

13889 self.state = 2094 

+

13890 self.match(VHDLParser.KW_IS) 

+

13891 self.state = 2098 

+

13892 self._errHandler.sync(self) 

+

13893 _la = self._input.LA(1) 

+

13894 while (((_la) & ~0x3f) == 0 and ((1 << _la) & 88579439100416) != 0) or ( 

+

13895 (((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & 842086220065) != 0): 

+

13896 self.state = 2095 

+

13897 localctx._rule_PackageBodyDeclarativeItem = self.rule_PackageBodyDeclarativeItem() 

+

13898 localctx.declarativeItem.append(localctx._rule_PackageBodyDeclarativeItem) 

+

13899 self.state = 2100 

+

13900 self._errHandler.sync(self) 

+

13901 _la = self._input.LA(1) 

+

13902 

+

13903 self.state = 2101 

+

13904 self.match(VHDLParser.KW_END) 

+

13905 self.state = 2104 

+

13906 self._errHandler.sync(self) 

+

13907 _la = self._input.LA(1) 

+

13908 if _la == 70: 

+

13909 self.state = 2102 

+

13910 self.match(VHDLParser.KW_PACKAGE) 

+

13911 self.state = 2103 

+

13912 self.match(VHDLParser.KW_BODY) 

+

13913 

+

13914 self.state = 2107 

+

13915 self._errHandler.sync(self) 

+

13916 _la = self._input.LA(1) 

+

13917 if _la == 163: 

+

13918 self.state = 2106 

+

13919 localctx.name2 = self.match(VHDLParser.LIT_IDENTIFIER) 

+

13920 

+

13921 self.state = 2109 

+

13922 self.match(VHDLParser.TOK_SEMICOL) 

+

13923 except RecognitionException as re: 

+

13924 localctx.exception = re 

+

13925 self._errHandler.reportError(self, re) 

+

13926 self._errHandler.recover(self, re) 

+

13927 finally: 

+

13928 self.exitRule() 

+

13929 return localctx 

+

13930 

+

13931 class Rule_PackageBodyDeclarativeItemContext(ParserRuleContext): 

+

13932 __slots__ = 'parser' 

+

13933 

+

13934 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

13935 super().__init__(parent, invokingState) 

+

13936 self.parser = parser 

+

13937 

+

13938 def rule_SubprogramDeclaration(self): 

+

13939 return self.getTypedRuleContext(VHDLParser.Rule_SubprogramDeclarationContext, 0) 

+

13940 

+

13941 def rule_SubprogramBody(self): 

+

13942 return self.getTypedRuleContext(VHDLParser.Rule_SubprogramBodyContext, 0) 

+

13943 

+

13944 def rule_SubprogramInstantiationDeclaration(self): 

+

13945 return self.getTypedRuleContext(VHDLParser.Rule_SubprogramInstantiationDeclarationContext, 0) 

+

13946 

+

13947 def rule_PackageDeclaration(self): 

+

13948 return self.getTypedRuleContext(VHDLParser.Rule_PackageDeclarationContext, 0) 

+

13949 

+

13950 def rule_PackageBody(self): 

+

13951 return self.getTypedRuleContext(VHDLParser.Rule_PackageBodyContext, 0) 

+

13952 

+

13953 def rule_PackageInstantiationDeclaration(self): 

+

13954 return self.getTypedRuleContext(VHDLParser.Rule_PackageInstantiationDeclarationContext, 0) 

+

13955 

+

13956 def rule_TypeDeclaration(self): 

+

13957 return self.getTypedRuleContext(VHDLParser.Rule_TypeDeclarationContext, 0) 

+

13958 

+

13959 def rule_SubtypeDeclaration(self): 

+

13960 return self.getTypedRuleContext(VHDLParser.Rule_SubtypeDeclarationContext, 0) 

+

13961 

+

13962 def rule_ConstantDeclaration(self): 

+

13963 return self.getTypedRuleContext(VHDLParser.Rule_ConstantDeclarationContext, 0) 

+

13964 

+

13965 def rule_VariableDeclaration(self): 

+

13966 return self.getTypedRuleContext(VHDLParser.Rule_VariableDeclarationContext, 0) 

+

13967 

+

13968 def rule_FileDeclaration(self): 

+

13969 return self.getTypedRuleContext(VHDLParser.Rule_FileDeclarationContext, 0) 

+

13970 

+

13971 def rule_AliasDeclaration(self): 

+

13972 return self.getTypedRuleContext(VHDLParser.Rule_AliasDeclarationContext, 0) 

+

13973 

+

13974 def rule_AttributeDeclaration(self): 

+

13975 return self.getTypedRuleContext(VHDLParser.Rule_AttributeDeclarationContext, 0) 

+

13976 

+

13977 def rule_AttributeSpecification(self): 

+

13978 return self.getTypedRuleContext(VHDLParser.Rule_AttributeSpecificationContext, 0) 

+

13979 

+

13980 def rule_UseClause(self): 

+

13981 return self.getTypedRuleContext(VHDLParser.Rule_UseClauseContext, 0) 

+

13982 

+

13983 def rule_GroupTemplateDeclaration(self): 

+

13984 return self.getTypedRuleContext(VHDLParser.Rule_GroupTemplateDeclarationContext, 0) 

+

13985 

+

13986 def rule_GroupDeclaration(self): 

+

13987 return self.getTypedRuleContext(VHDLParser.Rule_GroupDeclarationContext, 0) 

+

13988 

+

13989 def getRuleIndex(self): 

+

13990 return VHDLParser.RULE_rule_PackageBodyDeclarativeItem 

+

13991 

+

13992 def accept(self, visitor: ParseTreeVisitor): 

+

13993 if hasattr(visitor, "visitRule_PackageBodyDeclarativeItem"): 

+

13994 return visitor.visitRule_PackageBodyDeclarativeItem(self) 

+

13995 else: 

+

13996 return visitor.visitChildren(self) 

+

13997 

+

13998 def rule_PackageBodyDeclarativeItem(self): 

+

13999 

+

14000 localctx = VHDLParser.Rule_PackageBodyDeclarativeItemContext(self, self._ctx, self.state) 

+

14001 self.enterRule(localctx, 328, self.RULE_rule_PackageBodyDeclarativeItem) 

+

14002 try: 

+

14003 self.state = 2128 

+

14004 self._errHandler.sync(self) 

+

14005 la_ = self._interp.adaptivePredict(self._input, 228, self._ctx) 

+

14006 if la_ == 1: 

+

14007 self.enterOuterAlt(localctx, 1) 

+

14008 self.state = 2111 

+

14009 self.rule_SubprogramDeclaration() 

+

14010 pass 

+

14011 

+

14012 elif la_ == 2: 

+

14013 self.enterOuterAlt(localctx, 2) 

+

14014 self.state = 2112 

+

14015 self.rule_SubprogramBody() 

+

14016 pass 

+

14017 

+

14018 elif la_ == 3: 

+

14019 self.enterOuterAlt(localctx, 3) 

+

14020 self.state = 2113 

+

14021 self.rule_SubprogramInstantiationDeclaration() 

+

14022 pass 

+

14023 

+

14024 elif la_ == 4: 

+

14025 self.enterOuterAlt(localctx, 4) 

+

14026 self.state = 2114 

+

14027 self.rule_PackageDeclaration() 

+

14028 pass 

+

14029 

+

14030 elif la_ == 5: 

+

14031 self.enterOuterAlt(localctx, 5) 

+

14032 self.state = 2115 

+

14033 self.rule_PackageBody() 

+

14034 pass 

+

14035 

+

14036 elif la_ == 6: 

+

14037 self.enterOuterAlt(localctx, 6) 

+

14038 self.state = 2116 

+

14039 self.rule_PackageInstantiationDeclaration() 

+

14040 pass 

+

14041 

+

14042 elif la_ == 7: 

+

14043 self.enterOuterAlt(localctx, 7) 

+

14044 self.state = 2117 

+

14045 self.rule_TypeDeclaration() 

+

14046 pass 

+

14047 

+

14048 elif la_ == 8: 

+

14049 self.enterOuterAlt(localctx, 8) 

+

14050 self.state = 2118 

+

14051 self.rule_SubtypeDeclaration() 

+

14052 pass 

+

14053 

+

14054 elif la_ == 9: 

+

14055 self.enterOuterAlt(localctx, 9) 

+

14056 self.state = 2119 

+

14057 self.rule_ConstantDeclaration() 

+

14058 pass 

+

14059 

+

14060 elif la_ == 10: 

+

14061 self.enterOuterAlt(localctx, 10) 

+

14062 self.state = 2120 

+

14063 self.rule_VariableDeclaration() 

+

14064 pass 

+

14065 

+

14066 elif la_ == 11: 

+

14067 self.enterOuterAlt(localctx, 11) 

+

14068 self.state = 2121 

+

14069 self.rule_FileDeclaration() 

+

14070 pass 

+

14071 

+

14072 elif la_ == 12: 

+

14073 self.enterOuterAlt(localctx, 12) 

+

14074 self.state = 2122 

+

14075 self.rule_AliasDeclaration() 

+

14076 pass 

+

14077 

+

14078 elif la_ == 13: 

+

14079 self.enterOuterAlt(localctx, 13) 

+

14080 self.state = 2123 

+

14081 self.rule_AttributeDeclaration() 

+

14082 pass 

+

14083 

+

14084 elif la_ == 14: 

+

14085 self.enterOuterAlt(localctx, 14) 

+

14086 self.state = 2124 

+

14087 self.rule_AttributeSpecification() 

+

14088 pass 

+

14089 

+

14090 elif la_ == 15: 

+

14091 self.enterOuterAlt(localctx, 15) 

+

14092 self.state = 2125 

+

14093 self.rule_UseClause() 

+

14094 pass 

+

14095 

+

14096 elif la_ == 16: 

+

14097 self.enterOuterAlt(localctx, 16) 

+

14098 self.state = 2126 

+

14099 self.rule_GroupTemplateDeclaration() 

+

14100 pass 

+

14101 

+

14102 elif la_ == 17: 

+

14103 self.enterOuterAlt(localctx, 17) 

+

14104 self.state = 2127 

+

14105 self.rule_GroupDeclaration() 

+

14106 pass 

+

14107 

+

14108 

+

14109 except RecognitionException as re: 

+

14110 localctx.exception = re 

+

14111 self._errHandler.reportError(self, re) 

+

14112 self._errHandler.recover(self, re) 

+

14113 finally: 

+

14114 self.exitRule() 

+

14115 return localctx 

+

14116 

+

14117 class Rule_PackageDeclarationContext(ParserRuleContext): 

+

14118 __slots__ = 'parser' 

+

14119 

+

14120 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

14121 super().__init__(parent, invokingState) 

+

14122 self.parser = parser 

+

14123 self.name = None # Token 

+

14124 self.genericClause = None # Rule_GenericClauseContext 

+

14125 self._rule_PackageDeclarativeItem = None # Rule_PackageDeclarativeItemContext 

+

14126 self.declarativeItems = list() # of Rule_PackageDeclarativeItemContexts 

+

14127 self.name2 = None # Token 

+

14128 

+

14129 def KW_PACKAGE(self, i: int = None): 

+

14130 if i is None: 

+

14131 return self.getTokens(VHDLParser.KW_PACKAGE) 

+

14132 else: 

+

14133 return self.getToken(VHDLParser.KW_PACKAGE, i) 

+

14134 

+

14135 def KW_IS(self): 

+

14136 return self.getToken(VHDLParser.KW_IS, 0) 

+

14137 

+

14138 def KW_END(self): 

+

14139 return self.getToken(VHDLParser.KW_END, 0) 

+

14140 

+

14141 def TOK_SEMICOL(self): 

+

14142 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

14143 

+

14144 def LIT_IDENTIFIER(self, i: int = None): 

+

14145 if i is None: 

+

14146 return self.getTokens(VHDLParser.LIT_IDENTIFIER) 

+

14147 else: 

+

14148 return self.getToken(VHDLParser.LIT_IDENTIFIER, i) 

+

14149 

+

14150 def rule_GenericClause(self): 

+

14151 return self.getTypedRuleContext(VHDLParser.Rule_GenericClauseContext, 0) 

+

14152 

+

14153 def rule_PackageDeclarativeItem(self, i: int = None): 

+

14154 if i is None: 

+

14155 return self.getTypedRuleContexts(VHDLParser.Rule_PackageDeclarativeItemContext) 

+

14156 else: 

+

14157 return self.getTypedRuleContext(VHDLParser.Rule_PackageDeclarativeItemContext, i) 

+

14158 

+

14159 def getRuleIndex(self): 

+

14160 return VHDLParser.RULE_rule_PackageDeclaration 

+

14161 

+

14162 def accept(self, visitor: ParseTreeVisitor): 

+

14163 if hasattr(visitor, "visitRule_PackageDeclaration"): 

+

14164 return visitor.visitRule_PackageDeclaration(self) 

+

14165 else: 

+

14166 return visitor.visitChildren(self) 

+

14167 

+

14168 def rule_PackageDeclaration(self): 

+

14169 

+

14170 localctx = VHDLParser.Rule_PackageDeclarationContext(self, self._ctx, self.state) 

+

14171 self.enterRule(localctx, 330, self.RULE_rule_PackageDeclaration) 

+

14172 self._la = 0 # Token type 

+

14173 try: 

+

14174 self.enterOuterAlt(localctx, 1) 

+

14175 self.state = 2130 

+

14176 self.match(VHDLParser.KW_PACKAGE) 

+

14177 self.state = 2131 

+

14178 localctx.name = self.match(VHDLParser.LIT_IDENTIFIER) 

+

14179 self.state = 2132 

+

14180 self.match(VHDLParser.KW_IS) 

+

14181 self.state = 2134 

+

14182 self._errHandler.sync(self) 

+

14183 _la = self._input.LA(1) 

+

14184 if _la == 42: 

+

14185 self.state = 2133 

+

14186 localctx.genericClause = self.rule_GenericClause() 

+

14187 

+

14188 self.state = 2139 

+

14189 self._errHandler.sync(self) 

+

14190 _la = self._input.LA(1) 

+

14191 while (((_la) & ~0x3f) == 0 and ((1 << _la) & 88579984359936) != 0) or ( 

+

14192 (((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & 842094608673) != 0): 

+

14193 self.state = 2136 

+

14194 localctx._rule_PackageDeclarativeItem = self.rule_PackageDeclarativeItem() 

+

14195 localctx.declarativeItems.append(localctx._rule_PackageDeclarativeItem) 

+

14196 self.state = 2141 

+

14197 self._errHandler.sync(self) 

+

14198 _la = self._input.LA(1) 

+

14199 

+

14200 self.state = 2142 

+

14201 self.match(VHDLParser.KW_END) 

+

14202 self.state = 2144 

+

14203 self._errHandler.sync(self) 

+

14204 _la = self._input.LA(1) 

+

14205 if _la == 70: 

+

14206 self.state = 2143 

+

14207 self.match(VHDLParser.KW_PACKAGE) 

+

14208 

+

14209 self.state = 2147 

+

14210 self._errHandler.sync(self) 

+

14211 _la = self._input.LA(1) 

+

14212 if _la == 163: 

+

14213 self.state = 2146 

+

14214 localctx.name2 = self.match(VHDLParser.LIT_IDENTIFIER) 

+

14215 

+

14216 self.state = 2149 

+

14217 self.match(VHDLParser.TOK_SEMICOL) 

+

14218 except RecognitionException as re: 

+

14219 localctx.exception = re 

+

14220 self._errHandler.reportError(self, re) 

+

14221 self._errHandler.recover(self, re) 

+

14222 finally: 

+

14223 self.exitRule() 

+

14224 return localctx 

+

14225 

+

14226 class Rule_PackageDeclarativeItemContext(ParserRuleContext): 

+

14227 __slots__ = 'parser' 

+

14228 

+

14229 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

14230 super().__init__(parent, invokingState) 

+

14231 self.parser = parser 

+

14232 self.subprogramDeclaration = None # Rule_SubprogramDeclarationContext 

+

14233 self.typeDeclaration = None # Rule_TypeDeclarationContext 

+

14234 self.subtypeDeclaration = None # Rule_SubtypeDeclarationContext 

+

14235 self.constantDeclaration = None # Rule_ConstantDeclarationContext 

+

14236 self.signalDeclaration = None # Rule_SignalDeclarationContext 

+

14237 self.variableDeclaration = None # Rule_VariableDeclarationContext 

+

14238 self.fileDeclaration = None # Rule_FileDeclarationContext 

+

14239 self.aliasDeclaration = None # Rule_AliasDeclarationContext 

+

14240 self.componentDeclaration = None # Rule_ComponentDeclarationContext 

+

14241 self.attributeDeclaration = None # Rule_AttributeDeclarationContext 

+

14242 self.attributeSpecification = None # Rule_AttributeSpecificationContext 

+

14243 self.disconnectionSpecification = None # Rule_DisconnectionSpecificationContext 

+

14244 self.useClause = None # Rule_UseClauseContext 

+

14245 

+

14246 def rule_SubprogramDeclaration(self): 

+

14247 return self.getTypedRuleContext(VHDLParser.Rule_SubprogramDeclarationContext, 0) 

+

14248 

+

14249 def rule_SubprogramInstantiationDeclaration(self): 

+

14250 return self.getTypedRuleContext(VHDLParser.Rule_SubprogramInstantiationDeclarationContext, 0) 

+

14251 

+

14252 def rule_PackageDeclaration(self): 

+

14253 return self.getTypedRuleContext(VHDLParser.Rule_PackageDeclarationContext, 0) 

+

14254 

+

14255 def rule_PackageInstantiationDeclaration(self): 

+

14256 return self.getTypedRuleContext(VHDLParser.Rule_PackageInstantiationDeclarationContext, 0) 

+

14257 

+

14258 def rule_TypeDeclaration(self): 

+

14259 return self.getTypedRuleContext(VHDLParser.Rule_TypeDeclarationContext, 0) 

+

14260 

+

14261 def rule_SubtypeDeclaration(self): 

+

14262 return self.getTypedRuleContext(VHDLParser.Rule_SubtypeDeclarationContext, 0) 

+

14263 

+

14264 def rule_ConstantDeclaration(self): 

+

14265 return self.getTypedRuleContext(VHDLParser.Rule_ConstantDeclarationContext, 0) 

+

14266 

+

14267 def rule_SignalDeclaration(self): 

+

14268 return self.getTypedRuleContext(VHDLParser.Rule_SignalDeclarationContext, 0) 

+

14269 

+

14270 def rule_VariableDeclaration(self): 

+

14271 return self.getTypedRuleContext(VHDLParser.Rule_VariableDeclarationContext, 0) 

+

14272 

+

14273 def rule_FileDeclaration(self): 

+

14274 return self.getTypedRuleContext(VHDLParser.Rule_FileDeclarationContext, 0) 

+

14275 

+

14276 def rule_AliasDeclaration(self): 

+

14277 return self.getTypedRuleContext(VHDLParser.Rule_AliasDeclarationContext, 0) 

+

14278 

+

14279 def rule_ComponentDeclaration(self): 

+

14280 return self.getTypedRuleContext(VHDLParser.Rule_ComponentDeclarationContext, 0) 

+

14281 

+

14282 def rule_AttributeDeclaration(self): 

+

14283 return self.getTypedRuleContext(VHDLParser.Rule_AttributeDeclarationContext, 0) 

+

14284 

+

14285 def rule_AttributeSpecification(self): 

+

14286 return self.getTypedRuleContext(VHDLParser.Rule_AttributeSpecificationContext, 0) 

+

14287 

+

14288 def rule_DisconnectionSpecification(self): 

+

14289 return self.getTypedRuleContext(VHDLParser.Rule_DisconnectionSpecificationContext, 0) 

+

14290 

+

14291 def rule_UseClause(self): 

+

14292 return self.getTypedRuleContext(VHDLParser.Rule_UseClauseContext, 0) 

+

14293 

+

14294 def rule_GroupTemplateDeclaration(self): 

+

14295 return self.getTypedRuleContext(VHDLParser.Rule_GroupTemplateDeclarationContext, 0) 

+

14296 

+

14297 def rule_GroupDeclaration(self): 

+

14298 return self.getTypedRuleContext(VHDLParser.Rule_GroupDeclarationContext, 0) 

+

14299 

+

14300 def getRuleIndex(self): 

+

14301 return VHDLParser.RULE_rule_PackageDeclarativeItem 

+

14302 

+

14303 def accept(self, visitor: ParseTreeVisitor): 

+

14304 if hasattr(visitor, "visitRule_PackageDeclarativeItem"): 

+

14305 return visitor.visitRule_PackageDeclarativeItem(self) 

+

14306 else: 

+

14307 return visitor.visitChildren(self) 

+

14308 

+

14309 def rule_PackageDeclarativeItem(self): 

+

14310 

+

14311 localctx = VHDLParser.Rule_PackageDeclarativeItemContext(self, self._ctx, self.state) 

+

14312 self.enterRule(localctx, 332, self.RULE_rule_PackageDeclarativeItem) 

+

14313 try: 

+

14314 self.state = 2169 

+

14315 self._errHandler.sync(self) 

+

14316 la_ = self._interp.adaptivePredict(self._input, 233, self._ctx) 

+

14317 if la_ == 1: 

+

14318 self.enterOuterAlt(localctx, 1) 

+

14319 self.state = 2151 

+

14320 localctx.subprogramDeclaration = self.rule_SubprogramDeclaration() 

+

14321 pass 

+

14322 

+

14323 elif la_ == 2: 

+

14324 self.enterOuterAlt(localctx, 2) 

+

14325 self.state = 2152 

+

14326 self.rule_SubprogramInstantiationDeclaration() 

+

14327 pass 

+

14328 

+

14329 elif la_ == 3: 

+

14330 self.enterOuterAlt(localctx, 3) 

+

14331 self.state = 2153 

+

14332 self.rule_PackageDeclaration() 

+

14333 pass 

+

14334 

+

14335 elif la_ == 4: 

+

14336 self.enterOuterAlt(localctx, 4) 

+

14337 self.state = 2154 

+

14338 self.rule_PackageInstantiationDeclaration() 

+

14339 pass 

+

14340 

+

14341 elif la_ == 5: 

+

14342 self.enterOuterAlt(localctx, 5) 

+

14343 self.state = 2155 

+

14344 localctx.typeDeclaration = self.rule_TypeDeclaration() 

+

14345 pass 

+

14346 

+

14347 elif la_ == 6: 

+

14348 self.enterOuterAlt(localctx, 6) 

+

14349 self.state = 2156 

+

14350 localctx.subtypeDeclaration = self.rule_SubtypeDeclaration() 

+

14351 pass 

+

14352 

+

14353 elif la_ == 7: 

+

14354 self.enterOuterAlt(localctx, 7) 

+

14355 self.state = 2157 

+

14356 localctx.constantDeclaration = self.rule_ConstantDeclaration() 

+

14357 pass 

+

14358 

+

14359 elif la_ == 8: 

+

14360 self.enterOuterAlt(localctx, 8) 

+

14361 self.state = 2158 

+

14362 localctx.signalDeclaration = self.rule_SignalDeclaration() 

+

14363 pass 

+

14364 

+

14365 elif la_ == 9: 

+

14366 self.enterOuterAlt(localctx, 9) 

+

14367 self.state = 2159 

+

14368 localctx.variableDeclaration = self.rule_VariableDeclaration() 

+

14369 pass 

+

14370 

+

14371 elif la_ == 10: 

+

14372 self.enterOuterAlt(localctx, 10) 

+

14373 self.state = 2160 

+

14374 localctx.fileDeclaration = self.rule_FileDeclaration() 

+

14375 pass 

+

14376 

+

14377 elif la_ == 11: 

+

14378 self.enterOuterAlt(localctx, 11) 

+

14379 self.state = 2161 

+

14380 localctx.aliasDeclaration = self.rule_AliasDeclaration() 

+

14381 pass 

+

14382 

+

14383 elif la_ == 12: 

+

14384 self.enterOuterAlt(localctx, 12) 

+

14385 self.state = 2162 

+

14386 localctx.componentDeclaration = self.rule_ComponentDeclaration() 

+

14387 pass 

+

14388 

+

14389 elif la_ == 13: 

+

14390 self.enterOuterAlt(localctx, 13) 

+

14391 self.state = 2163 

+

14392 localctx.attributeDeclaration = self.rule_AttributeDeclaration() 

+

14393 pass 

+

14394 

+

14395 elif la_ == 14: 

+

14396 self.enterOuterAlt(localctx, 14) 

+

14397 self.state = 2164 

+

14398 localctx.attributeSpecification = self.rule_AttributeSpecification() 

+

14399 pass 

+

14400 

+

14401 elif la_ == 15: 

+

14402 self.enterOuterAlt(localctx, 15) 

+

14403 self.state = 2165 

+

14404 localctx.disconnectionSpecification = self.rule_DisconnectionSpecification() 

+

14405 pass 

+

14406 

+

14407 elif la_ == 16: 

+

14408 self.enterOuterAlt(localctx, 16) 

+

14409 self.state = 2166 

+

14410 localctx.useClause = self.rule_UseClause() 

+

14411 pass 

+

14412 

+

14413 elif la_ == 17: 

+

14414 self.enterOuterAlt(localctx, 17) 

+

14415 self.state = 2167 

+

14416 self.rule_GroupTemplateDeclaration() 

+

14417 pass 

+

14418 

+

14419 elif la_ == 18: 

+

14420 self.enterOuterAlt(localctx, 18) 

+

14421 self.state = 2168 

+

14422 self.rule_GroupDeclaration() 

+

14423 pass 

+

14424 

+

14425 

+

14426 except RecognitionException as re: 

+

14427 localctx.exception = re 

+

14428 self._errHandler.reportError(self, re) 

+

14429 self._errHandler.recover(self, re) 

+

14430 finally: 

+

14431 self.exitRule() 

+

14432 return localctx 

+

14433 

+

14434 class Rule_PackageInstantiationDeclarationContext(ParserRuleContext): 

+

14435 __slots__ = 'parser' 

+

14436 

+

14437 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

14438 super().__init__(parent, invokingState) 

+

14439 self.parser = parser 

+

14440 self.name = None # Token 

+

14441 self.genericMasAspect = None # Rule_GenericMapAspectContext 

+

14442 

+

14443 def KW_PACKAGE(self): 

+

14444 return self.getToken(VHDLParser.KW_PACKAGE, 0) 

+

14445 

+

14446 def KW_IS(self): 

+

14447 return self.getToken(VHDLParser.KW_IS, 0) 

+

14448 

+

14449 def KW_NEW(self): 

+

14450 return self.getToken(VHDLParser.KW_NEW, 0) 

+

14451 

+

14452 def rule_Name(self): 

+

14453 return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0) 

+

14454 

+

14455 def TOK_SEMICOL(self): 

+

14456 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

14457 

+

14458 def LIT_IDENTIFIER(self): 

+

14459 return self.getToken(VHDLParser.LIT_IDENTIFIER, 0) 

+

14460 

+

14461 def rule_GenericMapAspect(self): 

+

14462 return self.getTypedRuleContext(VHDLParser.Rule_GenericMapAspectContext, 0) 

+

14463 

+

14464 def getRuleIndex(self): 

+

14465 return VHDLParser.RULE_rule_PackageInstantiationDeclaration 

+

14466 

+

14467 def accept(self, visitor: ParseTreeVisitor): 

+

14468 if hasattr(visitor, "visitRule_PackageInstantiationDeclaration"): 

+

14469 return visitor.visitRule_PackageInstantiationDeclaration(self) 

+

14470 else: 

+

14471 return visitor.visitChildren(self) 

+

14472 

+

14473 def rule_PackageInstantiationDeclaration(self): 

+

14474 

+

14475 localctx = VHDLParser.Rule_PackageInstantiationDeclarationContext(self, self._ctx, self.state) 

+

14476 self.enterRule(localctx, 334, self.RULE_rule_PackageInstantiationDeclaration) 

+

14477 self._la = 0 # Token type 

+

14478 try: 

+

14479 self.enterOuterAlt(localctx, 1) 

+

14480 self.state = 2171 

+

14481 self.match(VHDLParser.KW_PACKAGE) 

+

14482 self.state = 2172 

+

14483 localctx.name = self.match(VHDLParser.LIT_IDENTIFIER) 

+

14484 self.state = 2173 

+

14485 self.match(VHDLParser.KW_IS) 

+

14486 self.state = 2174 

+

14487 self.match(VHDLParser.KW_NEW) 

+

14488 self.state = 2175 

+

14489 self.rule_Name(0) 

+

14490 self.state = 2177 

+

14491 self._errHandler.sync(self) 

+

14492 _la = self._input.LA(1) 

+

14493 if _la == 42: 

+

14494 self.state = 2176 

+

14495 localctx.genericMasAspect = self.rule_GenericMapAspect() 

+

14496 

+

14497 self.state = 2179 

+

14498 self.match(VHDLParser.TOK_SEMICOL) 

+

14499 except RecognitionException as re: 

+

14500 localctx.exception = re 

+

14501 self._errHandler.reportError(self, re) 

+

14502 self._errHandler.recover(self, re) 

+

14503 finally: 

+

14504 self.exitRule() 

+

14505 return localctx 

+

14506 

+

14507 class Rule_PackagePathnameContext(ParserRuleContext): 

+

14508 __slots__ = 'parser' 

+

14509 

+

14510 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

14511 super().__init__(parent, invokingState) 

+

14512 self.parser = parser 

+

14513 self.libraryName = None # Token 

+

14514 self.packageName = None # Token 

+

14515 self.objectName = None # Token 

+

14516 

+

14517 def TOK_AT(self): 

+

14518 return self.getToken(VHDLParser.TOK_AT, 0) 

+

14519 

+

14520 def TOK_DOT(self, i: int = None): 

+

14521 if i is None: 

+

14522 return self.getTokens(VHDLParser.TOK_DOT) 

+

14523 else: 

+

14524 return self.getToken(VHDLParser.TOK_DOT, i) 

+

14525 

+

14526 def LIT_IDENTIFIER(self, i: int = None): 

+

14527 if i is None: 

+

14528 return self.getTokens(VHDLParser.LIT_IDENTIFIER) 

+

14529 else: 

+

14530 return self.getToken(VHDLParser.LIT_IDENTIFIER, i) 

+

14531 

+

14532 def getRuleIndex(self): 

+

14533 return VHDLParser.RULE_rule_PackagePathname 

+

14534 

+

14535 def accept(self, visitor: ParseTreeVisitor): 

+

14536 if hasattr(visitor, "visitRule_PackagePathname"): 

+

14537 return visitor.visitRule_PackagePathname(self) 

+

14538 else: 

+

14539 return visitor.visitChildren(self) 

+

14540 

+

14541 def rule_PackagePathname(self): 

+

14542 

+

14543 localctx = VHDLParser.Rule_PackagePathnameContext(self, self._ctx, self.state) 

+

14544 self.enterRule(localctx, 336, self.RULE_rule_PackagePathname) 

+

14545 try: 

+

14546 self.enterOuterAlt(localctx, 1) 

+

14547 self.state = 2181 

+

14548 self.match(VHDLParser.TOK_AT) 

+

14549 self.state = 2182 

+

14550 localctx.libraryName = self.match(VHDLParser.LIT_IDENTIFIER) 

+

14551 self.state = 2183 

+

14552 self.match(VHDLParser.TOK_DOT) 

+

14553 self.state = 2188 

+

14554 self._errHandler.sync(self) 

+

14555 _alt = self._interp.adaptivePredict(self._input, 235, self._ctx) 

+

14556 while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: 

+

14557 if _alt == 1: 

+

14558 self.state = 2184 

+

14559 localctx.packageName = self.match(VHDLParser.LIT_IDENTIFIER) 

+

14560 self.state = 2185 

+

14561 self.match(VHDLParser.TOK_DOT) 

+

14562 self.state = 2190 

+

14563 self._errHandler.sync(self) 

+

14564 _alt = self._interp.adaptivePredict(self._input, 235, self._ctx) 

+

14565 

+

14566 self.state = 2191 

+

14567 localctx.objectName = self.match(VHDLParser.LIT_IDENTIFIER) 

+

14568 except RecognitionException as re: 

+

14569 localctx.exception = re 

+

14570 self._errHandler.reportError(self, re) 

+

14571 self._errHandler.recover(self, re) 

+

14572 finally: 

+

14573 self.exitRule() 

+

14574 return localctx 

+

14575 

+

14576 class Rule_ParameterMapAspectContext(ParserRuleContext): 

+

14577 __slots__ = 'parser' 

+

14578 

+

14579 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

14580 super().__init__(parent, invokingState) 

+

14581 self.parser = parser 

+

14582 

+

14583 def TOK_LP(self): 

+

14584 return self.getToken(VHDLParser.TOK_LP, 0) 

+

14585 

+

14586 def rule_AssociationList(self): 

+

14587 return self.getTypedRuleContext(VHDLParser.Rule_AssociationListContext, 0) 

+

14588 

+

14589 def TOK_RP(self): 

+

14590 return self.getToken(VHDLParser.TOK_RP, 0) 

+

14591 

+

14592 def KW_PARAMETER(self): 

+

14593 return self.getToken(VHDLParser.KW_PARAMETER, 0) 

+

14594 

+

14595 def KW_MAP(self): 

+

14596 return self.getToken(VHDLParser.KW_MAP, 0) 

+

14597 

+

14598 def getRuleIndex(self): 

+

14599 return VHDLParser.RULE_rule_ParameterMapAspect 

+

14600 

+

14601 def accept(self, visitor: ParseTreeVisitor): 

+

14602 if hasattr(visitor, "visitRule_ParameterMapAspect"): 

+

14603 return visitor.visitRule_ParameterMapAspect(self) 

+

14604 else: 

+

14605 return visitor.visitChildren(self) 

+

14606 

+

14607 def rule_ParameterMapAspect(self): 

+

14608 

+

14609 localctx = VHDLParser.Rule_ParameterMapAspectContext(self, self._ctx, self.state) 

+

14610 self.enterRule(localctx, 338, self.RULE_rule_ParameterMapAspect) 

+

14611 self._la = 0 # Token type 

+

14612 try: 

+

14613 self.enterOuterAlt(localctx, 1) 

+

14614 self.state = 2195 

+

14615 self._errHandler.sync(self) 

+

14616 _la = self._input.LA(1) 

+

14617 if _la == 71: 

+

14618 self.state = 2193 

+

14619 self.match(VHDLParser.KW_PARAMETER) 

+

14620 self.state = 2194 

+

14621 self.match(VHDLParser.KW_MAP) 

+

14622 

+

14623 self.state = 2197 

+

14624 self.match(VHDLParser.TOK_LP) 

+

14625 self.state = 2198 

+

14626 self.rule_AssociationList() 

+

14627 self.state = 2199 

+

14628 self.match(VHDLParser.TOK_RP) 

+

14629 except RecognitionException as re: 

+

14630 localctx.exception = re 

+

14631 self._errHandler.reportError(self, re) 

+

14632 self._errHandler.recover(self, re) 

+

14633 finally: 

+

14634 self.exitRule() 

+

14635 return localctx 

+

14636 

+

14637 class Rule_ParameterSpecificationContext(ParserRuleContext): 

+

14638 __slots__ = 'parser' 

+

14639 

+

14640 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

14641 super().__init__(parent, invokingState) 

+

14642 self.parser = parser 

+

14643 

+

14644 def LIT_IDENTIFIER(self): 

+

14645 return self.getToken(VHDLParser.LIT_IDENTIFIER, 0) 

+

14646 

+

14647 def KW_IN(self): 

+

14648 return self.getToken(VHDLParser.KW_IN, 0) 

+

14649 

+

14650 def rule_DiscreteRange(self): 

+

14651 return self.getTypedRuleContext(VHDLParser.Rule_DiscreteRangeContext, 0) 

+

14652 

+

14653 def getRuleIndex(self): 

+

14654 return VHDLParser.RULE_rule_ParameterSpecification 

+

14655 

+

14656 def accept(self, visitor: ParseTreeVisitor): 

+

14657 if hasattr(visitor, "visitRule_ParameterSpecification"): 

+

14658 return visitor.visitRule_ParameterSpecification(self) 

+

14659 else: 

+

14660 return visitor.visitChildren(self) 

+

14661 

+

14662 def rule_ParameterSpecification(self): 

+

14663 

+

14664 localctx = VHDLParser.Rule_ParameterSpecificationContext(self, self._ctx, self.state) 

+

14665 self.enterRule(localctx, 340, self.RULE_rule_ParameterSpecification) 

+

14666 try: 

+

14667 self.enterOuterAlt(localctx, 1) 

+

14668 self.state = 2201 

+

14669 self.match(VHDLParser.LIT_IDENTIFIER) 

+

14670 self.state = 2202 

+

14671 self.match(VHDLParser.KW_IN) 

+

14672 self.state = 2203 

+

14673 self.rule_DiscreteRange() 

+

14674 except RecognitionException as re: 

+

14675 localctx.exception = re 

+

14676 self._errHandler.reportError(self, re) 

+

14677 self._errHandler.recover(self, re) 

+

14678 finally: 

+

14679 self.exitRule() 

+

14680 return localctx 

+

14681 

+

14682 class Rule_PartialPathnameContext(ParserRuleContext): 

+

14683 __slots__ = 'parser' 

+

14684 

+

14685 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

14686 super().__init__(parent, invokingState) 

+

14687 self.parser = parser 

+

14688 

+

14689 def LIT_IDENTIFIER(self): 

+

14690 return self.getToken(VHDLParser.LIT_IDENTIFIER, 0) 

+

14691 

+

14692 def rule_PathnameElement(self, i: int = None): 

+

14693 if i is None: 

+

14694 return self.getTypedRuleContexts(VHDLParser.Rule_PathnameElementContext) 

+

14695 else: 

+

14696 return self.getTypedRuleContext(VHDLParser.Rule_PathnameElementContext, i) 

+

14697 

+

14698 def TOK_DOT(self, i: int = None): 

+

14699 if i is None: 

+

14700 return self.getTokens(VHDLParser.TOK_DOT) 

+

14701 else: 

+

14702 return self.getToken(VHDLParser.TOK_DOT, i) 

+

14703 

+

14704 def getRuleIndex(self): 

+

14705 return VHDLParser.RULE_rule_PartialPathname 

+

14706 

+

14707 def accept(self, visitor: ParseTreeVisitor): 

+

14708 if hasattr(visitor, "visitRule_PartialPathname"): 

+

14709 return visitor.visitRule_PartialPathname(self) 

+

14710 else: 

+

14711 return visitor.visitChildren(self) 

+

14712 

+

14713 def rule_PartialPathname(self): 

+

14714 

+

14715 localctx = VHDLParser.Rule_PartialPathnameContext(self, self._ctx, self.state) 

+

14716 self.enterRule(localctx, 342, self.RULE_rule_PartialPathname) 

+

14717 try: 

+

14718 self.enterOuterAlt(localctx, 1) 

+

14719 self.state = 2210 

+

14720 self._errHandler.sync(self) 

+

14721 _alt = self._interp.adaptivePredict(self._input, 237, self._ctx) 

+

14722 while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: 

+

14723 if _alt == 1: 

+

14724 self.state = 2205 

+

14725 self.rule_PathnameElement() 

+

14726 self.state = 2206 

+

14727 self.match(VHDLParser.TOK_DOT) 

+

14728 self.state = 2212 

+

14729 self._errHandler.sync(self) 

+

14730 _alt = self._interp.adaptivePredict(self._input, 237, self._ctx) 

+

14731 

+

14732 self.state = 2213 

+

14733 self.match(VHDLParser.LIT_IDENTIFIER) 

+

14734 except RecognitionException as re: 

+

14735 localctx.exception = re 

+

14736 self._errHandler.reportError(self, re) 

+

14737 self._errHandler.recover(self, re) 

+

14738 finally: 

+

14739 self.exitRule() 

+

14740 return localctx 

+

14741 

+

14742 class Rule_PathnameElementContext(ParserRuleContext): 

+

14743 __slots__ = 'parser' 

+

14744 

+

14745 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

14746 super().__init__(parent, invokingState) 

+

14747 self.parser = parser 

+

14748 self.nameOrLabel = None # Token 

+

14749 

+

14750 def LIT_IDENTIFIER(self): 

+

14751 return self.getToken(VHDLParser.LIT_IDENTIFIER, 0) 

+

14752 

+

14753 def getRuleIndex(self): 

+

14754 return VHDLParser.RULE_rule_PathnameElement 

+

14755 

+

14756 def accept(self, visitor: ParseTreeVisitor): 

+

14757 if hasattr(visitor, "visitRule_PathnameElement"): 

+

14758 return visitor.visitRule_PathnameElement(self) 

+

14759 else: 

+

14760 return visitor.visitChildren(self) 

+

14761 

+

14762 def rule_PathnameElement(self): 

+

14763 

+

14764 localctx = VHDLParser.Rule_PathnameElementContext(self, self._ctx, self.state) 

+

14765 self.enterRule(localctx, 344, self.RULE_rule_PathnameElement) 

+

14766 try: 

+

14767 self.enterOuterAlt(localctx, 1) 

+

14768 self.state = 2215 

+

14769 localctx.nameOrLabel = self.match(VHDLParser.LIT_IDENTIFIER) 

+

14770 except RecognitionException as re: 

+

14771 localctx.exception = re 

+

14772 self._errHandler.reportError(self, re) 

+

14773 self._errHandler.recover(self, re) 

+

14774 finally: 

+

14775 self.exitRule() 

+

14776 return localctx 

+

14777 

+

14778 class Rule_PhysicalIncompleteTypeDefinitionContext(ParserRuleContext): 

+

14779 __slots__ = 'parser' 

+

14780 

+

14781 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

14782 super().__init__(parent, invokingState) 

+

14783 self.parser = parser 

+

14784 

+

14785 def KW_UNITS(self): 

+

14786 return self.getToken(VHDLParser.KW_UNITS, 0) 

+

14787 

+

14788 def TOK_BOX(self): 

+

14789 return self.getToken(VHDLParser.TOK_BOX, 0) 

+

14790 

+

14791 def getRuleIndex(self): 

+

14792 return VHDLParser.RULE_rule_PhysicalIncompleteTypeDefinition 

+

14793 

+

14794 def accept(self, visitor: ParseTreeVisitor): 

+

14795 if hasattr(visitor, "visitRule_PhysicalIncompleteTypeDefinition"): 

+

14796 return visitor.visitRule_PhysicalIncompleteTypeDefinition(self) 

+

14797 else: 

+

14798 return visitor.visitChildren(self) 

+

14799 

+

14800 def rule_PhysicalIncompleteTypeDefinition(self): 

+

14801 

+

14802 localctx = VHDLParser.Rule_PhysicalIncompleteTypeDefinitionContext(self, self._ctx, self.state) 

+

14803 self.enterRule(localctx, 346, self.RULE_rule_PhysicalIncompleteTypeDefinition) 

+

14804 try: 

+

14805 self.enterOuterAlt(localctx, 1) 

+

14806 self.state = 2217 

+

14807 self.match(VHDLParser.KW_UNITS) 

+

14808 self.state = 2218 

+

14809 self.match(VHDLParser.TOK_BOX) 

+

14810 except RecognitionException as re: 

+

14811 localctx.exception = re 

+

14812 self._errHandler.reportError(self, re) 

+

14813 self._errHandler.recover(self, re) 

+

14814 finally: 

+

14815 self.exitRule() 

+

14816 return localctx 

+

14817 

+

14818 class Rule_PhysicalLiteralContext(ParserRuleContext): 

+

14819 __slots__ = 'parser' 

+

14820 

+

14821 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

14822 super().__init__(parent, invokingState) 

+

14823 self.parser = parser 

+

14824 

+

14825 def rule_Name(self): 

+

14826 return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0) 

+

14827 

+

14828 def LIT_ABSTRACT(self): 

+

14829 return self.getToken(VHDLParser.LIT_ABSTRACT, 0) 

+

14830 

+

14831 def getRuleIndex(self): 

+

14832 return VHDLParser.RULE_rule_PhysicalLiteral 

+

14833 

+

14834 def accept(self, visitor: ParseTreeVisitor): 

+

14835 if hasattr(visitor, "visitRule_PhysicalLiteral"): 

+

14836 return visitor.visitRule_PhysicalLiteral(self) 

+

14837 else: 

+

14838 return visitor.visitChildren(self) 

+

14839 

+

14840 def rule_PhysicalLiteral(self): 

+

14841 

+

14842 localctx = VHDLParser.Rule_PhysicalLiteralContext(self, self._ctx, self.state) 

+

14843 self.enterRule(localctx, 348, self.RULE_rule_PhysicalLiteral) 

+

14844 self._la = 0 # Token type 

+

14845 try: 

+

14846 self.enterOuterAlt(localctx, 1) 

+

14847 self.state = 2221 

+

14848 self._errHandler.sync(self) 

+

14849 _la = self._input.LA(1) 

+

14850 if _la == 159: 

+

14851 self.state = 2220 

+

14852 self.match(VHDLParser.LIT_ABSTRACT) 

+

14853 

+

14854 self.state = 2223 

+

14855 self.rule_Name(0) 

+

14856 except RecognitionException as re: 

+

14857 localctx.exception = re 

+

14858 self._errHandler.reportError(self, re) 

+

14859 self._errHandler.recover(self, re) 

+

14860 finally: 

+

14861 self.exitRule() 

+

14862 return localctx 

+

14863 

+

14864 class Rule_PhysicalTypeDefinitionContext(ParserRuleContext): 

+

14865 __slots__ = 'parser' 

+

14866 

+

14867 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

14868 super().__init__(parent, invokingState) 

+

14869 self.parser = parser 

+

14870 self.rangeConstraint = None # Rule_RangeConstraintContext 

+

14871 self.primaryUnit = None # Token 

+

14872 self._rule_SecondaryUnitDeclaration = None # Rule_SecondaryUnitDeclarationContext 

+

14873 self.secondaryUnits = list() # of Rule_SecondaryUnitDeclarationContexts 

+

14874 self.name2 = None # Token 

+

14875 

+

14876 def KW_UNITS(self, i: int = None): 

+

14877 if i is None: 

+

14878 return self.getTokens(VHDLParser.KW_UNITS) 

+

14879 else: 

+

14880 return self.getToken(VHDLParser.KW_UNITS, i) 

+

14881 

+

14882 def TOK_SEMICOL(self): 

+

14883 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

14884 

+

14885 def KW_END(self): 

+

14886 return self.getToken(VHDLParser.KW_END, 0) 

+

14887 

+

14888 def rule_RangeConstraint(self): 

+

14889 return self.getTypedRuleContext(VHDLParser.Rule_RangeConstraintContext, 0) 

+

14890 

+

14891 def LIT_IDENTIFIER(self, i: int = None): 

+

14892 if i is None: 

+

14893 return self.getTokens(VHDLParser.LIT_IDENTIFIER) 

+

14894 else: 

+

14895 return self.getToken(VHDLParser.LIT_IDENTIFIER, i) 

+

14896 

+

14897 def rule_SecondaryUnitDeclaration(self, i: int = None): 

+

14898 if i is None: 

+

14899 return self.getTypedRuleContexts(VHDLParser.Rule_SecondaryUnitDeclarationContext) 

+

14900 else: 

+

14901 return self.getTypedRuleContext(VHDLParser.Rule_SecondaryUnitDeclarationContext, i) 

+

14902 

+

14903 def getRuleIndex(self): 

+

14904 return VHDLParser.RULE_rule_PhysicalTypeDefinition 

+

14905 

+

14906 def accept(self, visitor: ParseTreeVisitor): 

+

14907 if hasattr(visitor, "visitRule_PhysicalTypeDefinition"): 

+

14908 return visitor.visitRule_PhysicalTypeDefinition(self) 

+

14909 else: 

+

14910 return visitor.visitChildren(self) 

+

14911 

+

14912 def rule_PhysicalTypeDefinition(self): 

+

14913 

+

14914 localctx = VHDLParser.Rule_PhysicalTypeDefinitionContext(self, self._ctx, self.state) 

+

14915 self.enterRule(localctx, 350, self.RULE_rule_PhysicalTypeDefinition) 

+

14916 self._la = 0 # Token type 

+

14917 try: 

+

14918 self.enterOuterAlt(localctx, 1) 

+

14919 self.state = 2225 

+

14920 localctx.rangeConstraint = self.rule_RangeConstraint() 

+

14921 self.state = 2226 

+

14922 self.match(VHDLParser.KW_UNITS) 

+

14923 self.state = 2227 

+

14924 localctx.primaryUnit = self.match(VHDLParser.LIT_IDENTIFIER) 

+

14925 self.state = 2228 

+

14926 self.match(VHDLParser.TOK_SEMICOL) 

+

14927 self.state = 2232 

+

14928 self._errHandler.sync(self) 

+

14929 _la = self._input.LA(1) 

+

14930 while _la == 163: 

+

14931 self.state = 2229 

+

14932 localctx._rule_SecondaryUnitDeclaration = self.rule_SecondaryUnitDeclaration() 

+

14933 localctx.secondaryUnits.append(localctx._rule_SecondaryUnitDeclaration) 

+

14934 self.state = 2234 

+

14935 self._errHandler.sync(self) 

+

14936 _la = self._input.LA(1) 

+

14937 

+

14938 self.state = 2235 

+

14939 self.match(VHDLParser.KW_END) 

+

14940 self.state = 2236 

+

14941 self.match(VHDLParser.KW_UNITS) 

+

14942 self.state = 2238 

+

14943 self._errHandler.sync(self) 

+

14944 _la = self._input.LA(1) 

+

14945 if _la == 163: 

+

14946 self.state = 2237 

+

14947 localctx.name2 = self.match(VHDLParser.LIT_IDENTIFIER) 

+

14948 

+

14949 

+

14950 except RecognitionException as re: 

+

14951 localctx.exception = re 

+

14952 self._errHandler.reportError(self, re) 

+

14953 self._errHandler.recover(self, re) 

+

14954 finally: 

+

14955 self.exitRule() 

+

14956 return localctx 

+

14957 

+

14958 class Rule_PlainReturnStatementContext(ParserRuleContext): 

+

14959 __slots__ = 'parser' 

+

14960 

+

14961 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

14962 super().__init__(parent, invokingState) 

+

14963 self.parser = parser 

+

14964 self.label = None # Token 

+

14965 self.condition = None # Rule_ExpressionContext 

+

14966 

+

14967 def KW_RETURN(self): 

+

14968 return self.getToken(VHDLParser.KW_RETURN, 0) 

+

14969 

+

14970 def TOK_SEMICOL(self): 

+

14971 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

14972 

+

14973 def TOK_COLON(self): 

+

14974 return self.getToken(VHDLParser.TOK_COLON, 0) 

+

14975 

+

14976 def KW_WHEN(self): 

+

14977 return self.getToken(VHDLParser.KW_WHEN, 0) 

+

14978 

+

14979 def LIT_IDENTIFIER(self): 

+

14980 return self.getToken(VHDLParser.LIT_IDENTIFIER, 0) 

+

14981 

+

14982 def rule_Expression(self): 

+

14983 return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0) 

+

14984 

+

14985 def getRuleIndex(self): 

+

14986 return VHDLParser.RULE_rule_PlainReturnStatement 

+

14987 

+

14988 def accept(self, visitor: ParseTreeVisitor): 

+

14989 if hasattr(visitor, "visitRule_PlainReturnStatement"): 

+

14990 return visitor.visitRule_PlainReturnStatement(self) 

+

14991 else: 

+

14992 return visitor.visitChildren(self) 

+

14993 

+

14994 def rule_PlainReturnStatement(self): 

+

14995 

+

14996 localctx = VHDLParser.Rule_PlainReturnStatementContext(self, self._ctx, self.state) 

+

14997 self.enterRule(localctx, 352, self.RULE_rule_PlainReturnStatement) 

+

14998 self._la = 0 # Token type 

+

14999 try: 

+

15000 self.enterOuterAlt(localctx, 1) 

+

15001 self.state = 2242 

+

15002 self._errHandler.sync(self) 

+

15003 _la = self._input.LA(1) 

+

15004 if _la == 163: 

+

15005 self.state = 2240 

+

15006 localctx.label = self.match(VHDLParser.LIT_IDENTIFIER) 

+

15007 self.state = 2241 

+

15008 self.match(VHDLParser.TOK_COLON) 

+

15009 

+

15010 self.state = 2244 

+

15011 self.match(VHDLParser.KW_RETURN) 

+

15012 self.state = 2247 

+

15013 self._errHandler.sync(self) 

+

15014 _la = self._input.LA(1) 

+

15015 if _la == 117: 

+

15016 self.state = 2245 

+

15017 self.match(VHDLParser.KW_WHEN) 

+

15018 self.state = 2246 

+

15019 localctx.condition = self.rule_Expression(0) 

+

15020 

+

15021 self.state = 2249 

+

15022 self.match(VHDLParser.TOK_SEMICOL) 

+

15023 except RecognitionException as re: 

+

15024 localctx.exception = re 

+

15025 self._errHandler.reportError(self, re) 

+

15026 self._errHandler.recover(self, re) 

+

15027 finally: 

+

15028 self.exitRule() 

+

15029 return localctx 

+

15030 

+

15031 class Rule_PortClauseContext(ParserRuleContext): 

+

15032 __slots__ = 'parser' 

+

15033 

+

15034 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

15035 super().__init__(parent, invokingState) 

+

15036 self.parser = parser 

+

15037 self._rule_InterfaceSignalDeclaration = None # Rule_InterfaceSignalDeclarationContext 

+

15038 self.ports = list() # of Rule_InterfaceSignalDeclarationContexts 

+

15039 

+

15040 def KW_PORT(self): 

+

15041 return self.getToken(VHDLParser.KW_PORT, 0) 

+

15042 

+

15043 def TOK_LP(self): 

+

15044 return self.getToken(VHDLParser.TOK_LP, 0) 

+

15045 

+

15046 def TOK_RP(self): 

+

15047 return self.getToken(VHDLParser.TOK_RP, 0) 

+

15048 

+

15049 def TOK_SEMICOL(self, i: int = None): 

+

15050 if i is None: 

+

15051 return self.getTokens(VHDLParser.TOK_SEMICOL) 

+

15052 else: 

+

15053 return self.getToken(VHDLParser.TOK_SEMICOL, i) 

+

15054 

+

15055 def rule_InterfaceSignalDeclaration(self, i: int = None): 

+

15056 if i is None: 

+

15057 return self.getTypedRuleContexts(VHDLParser.Rule_InterfaceSignalDeclarationContext) 

+

15058 else: 

+

15059 return self.getTypedRuleContext(VHDLParser.Rule_InterfaceSignalDeclarationContext, i) 

+

15060 

+

15061 def getRuleIndex(self): 

+

15062 return VHDLParser.RULE_rule_PortClause 

+

15063 

+

15064 def accept(self, visitor: ParseTreeVisitor): 

+

15065 if hasattr(visitor, "visitRule_PortClause"): 

+

15066 return visitor.visitRule_PortClause(self) 

+

15067 else: 

+

15068 return visitor.visitChildren(self) 

+

15069 

+

15070 def rule_PortClause(self): 

+

15071 

+

15072 localctx = VHDLParser.Rule_PortClauseContext(self, self._ctx, self.state) 

+

15073 self.enterRule(localctx, 354, self.RULE_rule_PortClause) 

+

15074 self._la = 0 # Token type 

+

15075 try: 

+

15076 self.enterOuterAlt(localctx, 1) 

+

15077 self.state = 2251 

+

15078 self.match(VHDLParser.KW_PORT) 

+

15079 self.state = 2252 

+

15080 self.match(VHDLParser.TOK_LP) 

+

15081 self.state = 2253 

+

15082 localctx._rule_InterfaceSignalDeclaration = self.rule_InterfaceSignalDeclaration() 

+

15083 localctx.ports.append(localctx._rule_InterfaceSignalDeclaration) 

+

15084 self.state = 2258 

+

15085 self._errHandler.sync(self) 

+

15086 _alt = self._interp.adaptivePredict(self._input, 243, self._ctx) 

+

15087 while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: 

+

15088 if _alt == 1: 

+

15089 self.state = 2254 

+

15090 self.match(VHDLParser.TOK_SEMICOL) 

+

15091 self.state = 2255 

+

15092 localctx._rule_InterfaceSignalDeclaration = self.rule_InterfaceSignalDeclaration() 

+

15093 localctx.ports.append(localctx._rule_InterfaceSignalDeclaration) 

+

15094 self.state = 2260 

+

15095 self._errHandler.sync(self) 

+

15096 _alt = self._interp.adaptivePredict(self._input, 243, self._ctx) 

+

15097 

+

15098 self.state = 2262 

+

15099 self._errHandler.sync(self) 

+

15100 _la = self._input.LA(1) 

+

15101 if _la == 150: 

+

15102 self.state = 2261 

+

15103 self.match(VHDLParser.TOK_SEMICOL) 

+

15104 

+

15105 self.state = 2264 

+

15106 self.match(VHDLParser.TOK_RP) 

+

15107 self.state = 2265 

+

15108 self.match(VHDLParser.TOK_SEMICOL) 

+

15109 except RecognitionException as re: 

+

15110 localctx.exception = re 

+

15111 self._errHandler.reportError(self, re) 

+

15112 self._errHandler.recover(self, re) 

+

15113 finally: 

+

15114 self.exitRule() 

+

15115 return localctx 

+

15116 

+

15117 class Rule_PortMapAspectContext(ParserRuleContext): 

+

15118 __slots__ = 'parser' 

+

15119 

+

15120 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

15121 super().__init__(parent, invokingState) 

+

15122 self.parser = parser 

+

15123 self.associationList = None # Rule_AssociationListContext 

+

15124 

+

15125 def KW_PORT(self): 

+

15126 return self.getToken(VHDLParser.KW_PORT, 0) 

+

15127 

+

15128 def KW_MAP(self): 

+

15129 return self.getToken(VHDLParser.KW_MAP, 0) 

+

15130 

+

15131 def TOK_LP(self): 

+

15132 return self.getToken(VHDLParser.TOK_LP, 0) 

+

15133 

+

15134 def TOK_RP(self): 

+

15135 return self.getToken(VHDLParser.TOK_RP, 0) 

+

15136 

+

15137 def rule_AssociationList(self): 

+

15138 return self.getTypedRuleContext(VHDLParser.Rule_AssociationListContext, 0) 

+

15139 

+

15140 def getRuleIndex(self): 

+

15141 return VHDLParser.RULE_rule_PortMapAspect 

+

15142 

+

15143 def accept(self, visitor: ParseTreeVisitor): 

+

15144 if hasattr(visitor, "visitRule_PortMapAspect"): 

+

15145 return visitor.visitRule_PortMapAspect(self) 

+

15146 else: 

+

15147 return visitor.visitChildren(self) 

+

15148 

+

15149 def rule_PortMapAspect(self): 

+

15150 

+

15151 localctx = VHDLParser.Rule_PortMapAspectContext(self, self._ctx, self.state) 

+

15152 self.enterRule(localctx, 356, self.RULE_rule_PortMapAspect) 

+

15153 try: 

+

15154 self.enterOuterAlt(localctx, 1) 

+

15155 self.state = 2267 

+

15156 self.match(VHDLParser.KW_PORT) 

+

15157 self.state = 2268 

+

15158 self.match(VHDLParser.KW_MAP) 

+

15159 self.state = 2269 

+

15160 self.match(VHDLParser.TOK_LP) 

+

15161 self.state = 2270 

+

15162 localctx.associationList = self.rule_AssociationList() 

+

15163 self.state = 2271 

+

15164 self.match(VHDLParser.TOK_RP) 

+

15165 except RecognitionException as re: 

+

15166 localctx.exception = re 

+

15167 self._errHandler.reportError(self, re) 

+

15168 self._errHandler.recover(self, re) 

+

15169 finally: 

+

15170 self.exitRule() 

+

15171 return localctx 

+

15172 

+

15173 class Rule_PrimaryContext(ParserRuleContext): 

+

15174 __slots__ = 'parser' 

+

15175 

+

15176 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

15177 super().__init__(parent, invokingState) 

+

15178 self.parser = parser 

+

15179 self.expression = None # Rule_ExpressionContext 

+

15180 

+

15181 def rule_Name(self): 

+

15182 return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0) 

+

15183 

+

15184 def rule_Literal(self): 

+

15185 return self.getTypedRuleContext(VHDLParser.Rule_LiteralContext, 0) 

+

15186 

+

15187 def rule_Aggregate(self): 

+

15188 return self.getTypedRuleContext(VHDLParser.Rule_AggregateContext, 0) 

+

15189 

+

15190 def rule_FunctionCall(self): 

+

15191 return self.getTypedRuleContext(VHDLParser.Rule_FunctionCallContext, 0) 

+

15192 

+

15193 def rule_QualifiedExpression(self): 

+

15194 return self.getTypedRuleContext(VHDLParser.Rule_QualifiedExpressionContext, 0) 

+

15195 

+

15196 def rule_TypeConversion(self): 

+

15197 return self.getTypedRuleContext(VHDLParser.Rule_TypeConversionContext, 0) 

+

15198 

+

15199 def rule_Allocator(self): 

+

15200 return self.getTypedRuleContext(VHDLParser.Rule_AllocatorContext, 0) 

+

15201 

+

15202 def TOK_LP(self): 

+

15203 return self.getToken(VHDLParser.TOK_LP, 0) 

+

15204 

+

15205 def TOK_RP(self): 

+

15206 return self.getToken(VHDLParser.TOK_RP, 0) 

+

15207 

+

15208 def rule_Expression(self): 

+

15209 return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0) 

+

15210 

+

15211 def getRuleIndex(self): 

+

15212 return VHDLParser.RULE_rule_Primary 

+

15213 

+

15214 def accept(self, visitor: ParseTreeVisitor): 

+

15215 if hasattr(visitor, "visitRule_Primary"): 

+

15216 return visitor.visitRule_Primary(self) 

+

15217 else: 

+

15218 return visitor.visitChildren(self) 

+

15219 

+

15220 def rule_Primary(self): 

+

15221 

+

15222 localctx = VHDLParser.Rule_PrimaryContext(self, self._ctx, self.state) 

+

15223 self.enterRule(localctx, 358, self.RULE_rule_Primary) 

+

15224 try: 

+

15225 self.state = 2284 

+

15226 self._errHandler.sync(self) 

+

15227 la_ = self._interp.adaptivePredict(self._input, 245, self._ctx) 

+

15228 if la_ == 1: 

+

15229 self.enterOuterAlt(localctx, 1) 

+

15230 self.state = 2273 

+

15231 self.rule_Name(0) 

+

15232 pass 

+

15233 

+

15234 elif la_ == 2: 

+

15235 self.enterOuterAlt(localctx, 2) 

+

15236 self.state = 2274 

+

15237 self.rule_Literal() 

+

15238 pass 

+

15239 

+

15240 elif la_ == 3: 

+

15241 self.enterOuterAlt(localctx, 3) 

+

15242 self.state = 2275 

+

15243 self.rule_Aggregate() 

+

15244 pass 

+

15245 

+

15246 elif la_ == 4: 

+

15247 self.enterOuterAlt(localctx, 4) 

+

15248 self.state = 2276 

+

15249 self.rule_FunctionCall() 

+

15250 pass 

+

15251 

+

15252 elif la_ == 5: 

+

15253 self.enterOuterAlt(localctx, 5) 

+

15254 self.state = 2277 

+

15255 self.rule_QualifiedExpression() 

+

15256 pass 

+

15257 

+

15258 elif la_ == 6: 

+

15259 self.enterOuterAlt(localctx, 6) 

+

15260 self.state = 2278 

+

15261 self.rule_TypeConversion() 

+

15262 pass 

+

15263 

+

15264 elif la_ == 7: 

+

15265 self.enterOuterAlt(localctx, 7) 

+

15266 self.state = 2279 

+

15267 self.rule_Allocator() 

+

15268 pass 

+

15269 

+

15270 elif la_ == 8: 

+

15271 self.enterOuterAlt(localctx, 8) 

+

15272 self.state = 2280 

+

15273 self.match(VHDLParser.TOK_LP) 

+

15274 self.state = 2281 

+

15275 localctx.expression = self.rule_Expression(0) 

+

15276 self.state = 2282 

+

15277 self.match(VHDLParser.TOK_RP) 

+

15278 pass 

+

15279 

+

15280 

+

15281 except RecognitionException as re: 

+

15282 localctx.exception = re 

+

15283 self._errHandler.reportError(self, re) 

+

15284 self._errHandler.recover(self, re) 

+

15285 finally: 

+

15286 self.exitRule() 

+

15287 return localctx 

+

15288 

+

15289 class Rule_PrivateVariableDeclarationContext(ParserRuleContext): 

+

15290 __slots__ = 'parser' 

+

15291 

+

15292 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

15293 super().__init__(parent, invokingState) 

+

15294 self.parser = parser 

+

15295 

+

15296 def KW_PRIVATE(self): 

+

15297 return self.getToken(VHDLParser.KW_PRIVATE, 0) 

+

15298 

+

15299 def rule_VariableDeclaration(self): 

+

15300 return self.getTypedRuleContext(VHDLParser.Rule_VariableDeclarationContext, 0) 

+

15301 

+

15302 def getRuleIndex(self): 

+

15303 return VHDLParser.RULE_rule_PrivateVariableDeclaration 

+

15304 

+

15305 def accept(self, visitor: ParseTreeVisitor): 

+

15306 if hasattr(visitor, "visitRule_PrivateVariableDeclaration"): 

+

15307 return visitor.visitRule_PrivateVariableDeclaration(self) 

+

15308 else: 

+

15309 return visitor.visitChildren(self) 

+

15310 

+

15311 def rule_PrivateVariableDeclaration(self): 

+

15312 

+

15313 localctx = VHDLParser.Rule_PrivateVariableDeclarationContext(self, self._ctx, self.state) 

+

15314 self.enterRule(localctx, 360, self.RULE_rule_PrivateVariableDeclaration) 

+

15315 try: 

+

15316 self.enterOuterAlt(localctx, 1) 

+

15317 self.state = 2286 

+

15318 self.match(VHDLParser.KW_PRIVATE) 

+

15319 self.state = 2287 

+

15320 self.rule_VariableDeclaration() 

+

15321 except RecognitionException as re: 

+

15322 localctx.exception = re 

+

15323 self._errHandler.reportError(self, re) 

+

15324 self._errHandler.recover(self, re) 

+

15325 finally: 

+

15326 self.exitRule() 

+

15327 return localctx 

+

15328 

+

15329 class Rule_PrivateIncompleteTypeDefinitionContext(ParserRuleContext): 

+

15330 __slots__ = 'parser' 

+

15331 

+

15332 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

15333 super().__init__(parent, invokingState) 

+

15334 self.parser = parser 

+

15335 

+

15336 def KW_PRIVATE(self): 

+

15337 return self.getToken(VHDLParser.KW_PRIVATE, 0) 

+

15338 

+

15339 def getRuleIndex(self): 

+

15340 return VHDLParser.RULE_rule_PrivateIncompleteTypeDefinition 

+

15341 

+

15342 def accept(self, visitor: ParseTreeVisitor): 

+

15343 if hasattr(visitor, "visitRule_PrivateIncompleteTypeDefinition"): 

+

15344 return visitor.visitRule_PrivateIncompleteTypeDefinition(self) 

+

15345 else: 

+

15346 return visitor.visitChildren(self) 

+

15347 

+

15348 def rule_PrivateIncompleteTypeDefinition(self): 

+

15349 

+

15350 localctx = VHDLParser.Rule_PrivateIncompleteTypeDefinitionContext(self, self._ctx, self.state) 

+

15351 self.enterRule(localctx, 362, self.RULE_rule_PrivateIncompleteTypeDefinition) 

+

15352 try: 

+

15353 self.enterOuterAlt(localctx, 1) 

+

15354 self.state = 2289 

+

15355 self.match(VHDLParser.KW_PRIVATE) 

+

15356 except RecognitionException as re: 

+

15357 localctx.exception = re 

+

15358 self._errHandler.reportError(self, re) 

+

15359 self._errHandler.recover(self, re) 

+

15360 finally: 

+

15361 self.exitRule() 

+

15362 return localctx 

+

15363 

+

15364 class Rule_ProcedureCallContext(ParserRuleContext): 

+

15365 __slots__ = 'parser' 

+

15366 

+

15367 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

15368 super().__init__(parent, invokingState) 

+

15369 self.parser = parser 

+

15370 self.genericMapAspect = None # Rule_GenericMapAspectContext 

+

15371 self.parameterMapAspect = None # Rule_ParameterMapAspectContext 

+

15372 

+

15373 def rule_Name(self): 

+

15374 return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0) 

+

15375 

+

15376 def rule_GenericMapAspect(self): 

+

15377 return self.getTypedRuleContext(VHDLParser.Rule_GenericMapAspectContext, 0) 

+

15378 

+

15379 def rule_ParameterMapAspect(self): 

+

15380 return self.getTypedRuleContext(VHDLParser.Rule_ParameterMapAspectContext, 0) 

+

15381 

+

15382 def getRuleIndex(self): 

+

15383 return VHDLParser.RULE_rule_ProcedureCall 

+

15384 

+

15385 def accept(self, visitor: ParseTreeVisitor): 

+

15386 if hasattr(visitor, "visitRule_ProcedureCall"): 

+

15387 return visitor.visitRule_ProcedureCall(self) 

+

15388 else: 

+

15389 return visitor.visitChildren(self) 

+

15390 

+

15391 def rule_ProcedureCall(self): 

+

15392 

+

15393 localctx = VHDLParser.Rule_ProcedureCallContext(self, self._ctx, self.state) 

+

15394 self.enterRule(localctx, 364, self.RULE_rule_ProcedureCall) 

+

15395 self._la = 0 # Token type 

+

15396 try: 

+

15397 self.enterOuterAlt(localctx, 1) 

+

15398 self.state = 2291 

+

15399 self.rule_Name(0) 

+

15400 self.state = 2293 

+

15401 self._errHandler.sync(self) 

+

15402 _la = self._input.LA(1) 

+

15403 if _la == 42: 

+

15404 self.state = 2292 

+

15405 localctx.genericMapAspect = self.rule_GenericMapAspect() 

+

15406 

+

15407 self.state = 2296 

+

15408 self._errHandler.sync(self) 

+

15409 _la = self._input.LA(1) 

+

15410 if _la == 71 or _la == 143: 

+

15411 self.state = 2295 

+

15412 localctx.parameterMapAspect = self.rule_ParameterMapAspect() 

+

15413 

+

15414 

+

15415 except RecognitionException as re: 

+

15416 localctx.exception = re 

+

15417 self._errHandler.reportError(self, re) 

+

15418 self._errHandler.recover(self, re) 

+

15419 finally: 

+

15420 self.exitRule() 

+

15421 return localctx 

+

15422 

+

15423 class Rule_ProcedureCallStatementContext(ParserRuleContext): 

+

15424 __slots__ = 'parser' 

+

15425 

+

15426 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

15427 super().__init__(parent, invokingState) 

+

15428 self.parser = parser 

+

15429 self.label = None # Token 

+

15430 

+

15431 def rule_ProcedureCall(self): 

+

15432 return self.getTypedRuleContext(VHDLParser.Rule_ProcedureCallContext, 0) 

+

15433 

+

15434 def TOK_SEMICOL(self): 

+

15435 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

15436 

+

15437 def TOK_COLON(self): 

+

15438 return self.getToken(VHDLParser.TOK_COLON, 0) 

+

15439 

+

15440 def LIT_IDENTIFIER(self): 

+

15441 return self.getToken(VHDLParser.LIT_IDENTIFIER, 0) 

+

15442 

+

15443 def getRuleIndex(self): 

+

15444 return VHDLParser.RULE_rule_ProcedureCallStatement 

+

15445 

+

15446 def accept(self, visitor: ParseTreeVisitor): 

+

15447 if hasattr(visitor, "visitRule_ProcedureCallStatement"): 

+

15448 return visitor.visitRule_ProcedureCallStatement(self) 

+

15449 else: 

+

15450 return visitor.visitChildren(self) 

+

15451 

+

15452 def rule_ProcedureCallStatement(self): 

+

15453 

+

15454 localctx = VHDLParser.Rule_ProcedureCallStatementContext(self, self._ctx, self.state) 

+

15455 self.enterRule(localctx, 366, self.RULE_rule_ProcedureCallStatement) 

+

15456 try: 

+

15457 self.enterOuterAlt(localctx, 1) 

+

15458 self.state = 2300 

+

15459 self._errHandler.sync(self) 

+

15460 la_ = self._interp.adaptivePredict(self._input, 248, self._ctx) 

+

15461 if la_ == 1: 

+

15462 self.state = 2298 

+

15463 localctx.label = self.match(VHDLParser.LIT_IDENTIFIER) 

+

15464 self.state = 2299 

+

15465 self.match(VHDLParser.TOK_COLON) 

+

15466 

+

15467 self.state = 2302 

+

15468 self.rule_ProcedureCall() 

+

15469 self.state = 2303 

+

15470 self.match(VHDLParser.TOK_SEMICOL) 

+

15471 except RecognitionException as re: 

+

15472 localctx.exception = re 

+

15473 self._errHandler.reportError(self, re) 

+

15474 self._errHandler.recover(self, re) 

+

15475 finally: 

+

15476 self.exitRule() 

+

15477 return localctx 

+

15478 

+

15479 class Rule_ProcedureSpecificationContext(ParserRuleContext): 

+

15480 __slots__ = 'parser' 

+

15481 

+

15482 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

15483 super().__init__(parent, invokingState) 

+

15484 self.parser = parser 

+

15485 self.name = None # Token 

+

15486 

+

15487 def KW_PROCEDURE(self): 

+

15488 return self.getToken(VHDLParser.KW_PROCEDURE, 0) 

+

15489 

+

15490 def LIT_IDENTIFIER(self): 

+

15491 return self.getToken(VHDLParser.LIT_IDENTIFIER, 0) 

+

15492 

+

15493 def TOK_LP(self): 

+

15494 return self.getToken(VHDLParser.TOK_LP, 0) 

+

15495 

+

15496 def rule_FormalParameterList(self): 

+

15497 return self.getTypedRuleContext(VHDLParser.Rule_FormalParameterListContext, 0) 

+

15498 

+

15499 def TOK_RP(self): 

+

15500 return self.getToken(VHDLParser.TOK_RP, 0) 

+

15501 

+

15502 def KW_PARAMETER(self): 

+

15503 return self.getToken(VHDLParser.KW_PARAMETER, 0) 

+

15504 

+

15505 def getRuleIndex(self): 

+

15506 return VHDLParser.RULE_rule_ProcedureSpecification 

+

15507 

+

15508 def accept(self, visitor: ParseTreeVisitor): 

+

15509 if hasattr(visitor, "visitRule_ProcedureSpecification"): 

+

15510 return visitor.visitRule_ProcedureSpecification(self) 

+

15511 else: 

+

15512 return visitor.visitChildren(self) 

+

15513 

+

15514 def rule_ProcedureSpecification(self): 

+

15515 

+

15516 localctx = VHDLParser.Rule_ProcedureSpecificationContext(self, self._ctx, self.state) 

+

15517 self.enterRule(localctx, 368, self.RULE_rule_ProcedureSpecification) 

+

15518 self._la = 0 # Token type 

+

15519 try: 

+

15520 self.enterOuterAlt(localctx, 1) 

+

15521 self.state = 2305 

+

15522 self.match(VHDLParser.KW_PROCEDURE) 

+

15523 self.state = 2306 

+

15524 localctx.name = self.match(VHDLParser.LIT_IDENTIFIER) 

+

15525 self.state = 2314 

+

15526 self._errHandler.sync(self) 

+

15527 _la = self._input.LA(1) 

+

15528 if _la == 71 or _la == 143: 

+

15529 self.state = 2308 

+

15530 self._errHandler.sync(self) 

+

15531 _la = self._input.LA(1) 

+

15532 if _la == 71: 

+

15533 self.state = 2307 

+

15534 self.match(VHDLParser.KW_PARAMETER) 

+

15535 

+

15536 self.state = 2310 

+

15537 self.match(VHDLParser.TOK_LP) 

+

15538 self.state = 2311 

+

15539 self.rule_FormalParameterList() 

+

15540 self.state = 2312 

+

15541 self.match(VHDLParser.TOK_RP) 

+

15542 

+

15543 

+

15544 except RecognitionException as re: 

+

15545 localctx.exception = re 

+

15546 self._errHandler.reportError(self, re) 

+

15547 self._errHandler.recover(self, re) 

+

15548 finally: 

+

15549 self.exitRule() 

+

15550 return localctx 

+

15551 

+

15552 class Rule_ProcessDeclarativeItemContext(ParserRuleContext): 

+

15553 __slots__ = 'parser' 

+

15554 

+

15555 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

15556 super().__init__(parent, invokingState) 

+

15557 self.parser = parser 

+

15558 

+

15559 def rule_SubprogramDeclaration(self): 

+

15560 return self.getTypedRuleContext(VHDLParser.Rule_SubprogramDeclarationContext, 0) 

+

15561 

+

15562 def rule_SubprogramBody(self): 

+

15563 return self.getTypedRuleContext(VHDLParser.Rule_SubprogramBodyContext, 0) 

+

15564 

+

15565 def rule_SubprogramInstantiationDeclaration(self): 

+

15566 return self.getTypedRuleContext(VHDLParser.Rule_SubprogramInstantiationDeclarationContext, 0) 

+

15567 

+

15568 def rule_PackageDeclaration(self): 

+

15569 return self.getTypedRuleContext(VHDLParser.Rule_PackageDeclarationContext, 0) 

+

15570 

+

15571 def rule_PackageBody(self): 

+

15572 return self.getTypedRuleContext(VHDLParser.Rule_PackageBodyContext, 0) 

+

15573 

+

15574 def rule_PackageInstantiationDeclaration(self): 

+

15575 return self.getTypedRuleContext(VHDLParser.Rule_PackageInstantiationDeclarationContext, 0) 

+

15576 

+

15577 def rule_TypeDeclaration(self): 

+

15578 return self.getTypedRuleContext(VHDLParser.Rule_TypeDeclarationContext, 0) 

+

15579 

+

15580 def rule_SubtypeDeclaration(self): 

+

15581 return self.getTypedRuleContext(VHDLParser.Rule_SubtypeDeclarationContext, 0) 

+

15582 

+

15583 def rule_ConstantDeclaration(self): 

+

15584 return self.getTypedRuleContext(VHDLParser.Rule_ConstantDeclarationContext, 0) 

+

15585 

+

15586 def rule_VariableDeclaration(self): 

+

15587 return self.getTypedRuleContext(VHDLParser.Rule_VariableDeclarationContext, 0) 

+

15588 

+

15589 def rule_FileDeclaration(self): 

+

15590 return self.getTypedRuleContext(VHDLParser.Rule_FileDeclarationContext, 0) 

+

15591 

+

15592 def rule_AliasDeclaration(self): 

+

15593 return self.getTypedRuleContext(VHDLParser.Rule_AliasDeclarationContext, 0) 

+

15594 

+

15595 def rule_AttributeDeclaration(self): 

+

15596 return self.getTypedRuleContext(VHDLParser.Rule_AttributeDeclarationContext, 0) 

+

15597 

+

15598 def rule_AttributeSpecification(self): 

+

15599 return self.getTypedRuleContext(VHDLParser.Rule_AttributeSpecificationContext, 0) 

+

15600 

+

15601 def rule_UseClause(self): 

+

15602 return self.getTypedRuleContext(VHDLParser.Rule_UseClauseContext, 0) 

+

15603 

+

15604 def rule_GroupTemplateDeclaration(self): 

+

15605 return self.getTypedRuleContext(VHDLParser.Rule_GroupTemplateDeclarationContext, 0) 

+

15606 

+

15607 def rule_GroupDeclaration(self): 

+

15608 return self.getTypedRuleContext(VHDLParser.Rule_GroupDeclarationContext, 0) 

+

15609 

+

15610 def getRuleIndex(self): 

+

15611 return VHDLParser.RULE_rule_ProcessDeclarativeItem 

+

15612 

+

15613 def accept(self, visitor: ParseTreeVisitor): 

+

15614 if hasattr(visitor, "visitRule_ProcessDeclarativeItem"): 

+

15615 return visitor.visitRule_ProcessDeclarativeItem(self) 

+

15616 else: 

+

15617 return visitor.visitChildren(self) 

+

15618 

+

15619 def rule_ProcessDeclarativeItem(self): 

+

15620 

+

15621 localctx = VHDLParser.Rule_ProcessDeclarativeItemContext(self, self._ctx, self.state) 

+

15622 self.enterRule(localctx, 370, self.RULE_rule_ProcessDeclarativeItem) 

+

15623 try: 

+

15624 self.state = 2333 

+

15625 self._errHandler.sync(self) 

+

15626 la_ = self._interp.adaptivePredict(self._input, 251, self._ctx) 

+

15627 if la_ == 1: 

+

15628 self.enterOuterAlt(localctx, 1) 

+

15629 self.state = 2316 

+

15630 self.rule_SubprogramDeclaration() 

+

15631 pass 

+

15632 

+

15633 elif la_ == 2: 

+

15634 self.enterOuterAlt(localctx, 2) 

+

15635 self.state = 2317 

+

15636 self.rule_SubprogramBody() 

+

15637 pass 

+

15638 

+

15639 elif la_ == 3: 

+

15640 self.enterOuterAlt(localctx, 3) 

+

15641 self.state = 2318 

+

15642 self.rule_SubprogramInstantiationDeclaration() 

+

15643 pass 

+

15644 

+

15645 elif la_ == 4: 

+

15646 self.enterOuterAlt(localctx, 4) 

+

15647 self.state = 2319 

+

15648 self.rule_PackageDeclaration() 

+

15649 pass 

+

15650 

+

15651 elif la_ == 5: 

+

15652 self.enterOuterAlt(localctx, 5) 

+

15653 self.state = 2320 

+

15654 self.rule_PackageBody() 

+

15655 pass 

+

15656 

+

15657 elif la_ == 6: 

+

15658 self.enterOuterAlt(localctx, 6) 

+

15659 self.state = 2321 

+

15660 self.rule_PackageInstantiationDeclaration() 

+

15661 pass 

+

15662 

+

15663 elif la_ == 7: 

+

15664 self.enterOuterAlt(localctx, 7) 

+

15665 self.state = 2322 

+

15666 self.rule_TypeDeclaration() 

+

15667 pass 

+

15668 

+

15669 elif la_ == 8: 

+

15670 self.enterOuterAlt(localctx, 8) 

+

15671 self.state = 2323 

+

15672 self.rule_SubtypeDeclaration() 

+

15673 pass 

+

15674 

+

15675 elif la_ == 9: 

+

15676 self.enterOuterAlt(localctx, 9) 

+

15677 self.state = 2324 

+

15678 self.rule_ConstantDeclaration() 

+

15679 pass 

+

15680 

+

15681 elif la_ == 10: 

+

15682 self.enterOuterAlt(localctx, 10) 

+

15683 self.state = 2325 

+

15684 self.rule_VariableDeclaration() 

+

15685 pass 

+

15686 

+

15687 elif la_ == 11: 

+

15688 self.enterOuterAlt(localctx, 11) 

+

15689 self.state = 2326 

+

15690 self.rule_FileDeclaration() 

+

15691 pass 

+

15692 

+

15693 elif la_ == 12: 

+

15694 self.enterOuterAlt(localctx, 12) 

+

15695 self.state = 2327 

+

15696 self.rule_AliasDeclaration() 

+

15697 pass 

+

15698 

+

15699 elif la_ == 13: 

+

15700 self.enterOuterAlt(localctx, 13) 

+

15701 self.state = 2328 

+

15702 self.rule_AttributeDeclaration() 

+

15703 pass 

+

15704 

+

15705 elif la_ == 14: 

+

15706 self.enterOuterAlt(localctx, 14) 

+

15707 self.state = 2329 

+

15708 self.rule_AttributeSpecification() 

+

15709 pass 

+

15710 

+

15711 elif la_ == 15: 

+

15712 self.enterOuterAlt(localctx, 15) 

+

15713 self.state = 2330 

+

15714 self.rule_UseClause() 

+

15715 pass 

+

15716 

+

15717 elif la_ == 16: 

+

15718 self.enterOuterAlt(localctx, 16) 

+

15719 self.state = 2331 

+

15720 self.rule_GroupTemplateDeclaration() 

+

15721 pass 

+

15722 

+

15723 elif la_ == 17: 

+

15724 self.enterOuterAlt(localctx, 17) 

+

15725 self.state = 2332 

+

15726 self.rule_GroupDeclaration() 

+

15727 pass 

+

15728 

+

15729 

+

15730 except RecognitionException as re: 

+

15731 localctx.exception = re 

+

15732 self._errHandler.reportError(self, re) 

+

15733 self._errHandler.recover(self, re) 

+

15734 finally: 

+

15735 self.exitRule() 

+

15736 return localctx 

+

15737 

+

15738 class Rule_ProcessSensitivityListContext(ParserRuleContext): 

+

15739 __slots__ = 'parser' 

+

15740 

+

15741 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

15742 super().__init__(parent, invokingState) 

+

15743 self.parser = parser 

+

15744 

+

15745 def rule_SensitivityList(self): 

+

15746 return self.getTypedRuleContext(VHDLParser.Rule_SensitivityListContext, 0) 

+

15747 

+

15748 def KW_ALL(self): 

+

15749 return self.getToken(VHDLParser.KW_ALL, 0) 

+

15750 

+

15751 def getRuleIndex(self): 

+

15752 return VHDLParser.RULE_rule_ProcessSensitivityList 

+

15753 

+

15754 def accept(self, visitor: ParseTreeVisitor): 

+

15755 if hasattr(visitor, "visitRule_ProcessSensitivityList"): 

+

15756 return visitor.visitRule_ProcessSensitivityList(self) 

+

15757 else: 

+

15758 return visitor.visitChildren(self) 

+

15759 

+

15760 def rule_ProcessSensitivityList(self): 

+

15761 

+

15762 localctx = VHDLParser.Rule_ProcessSensitivityListContext(self, self._ctx, self.state) 

+

15763 self.enterRule(localctx, 372, self.RULE_rule_ProcessSensitivityList) 

+

15764 try: 

+

15765 self.state = 2337 

+

15766 self._errHandler.sync(self) 

+

15767 token = self._input.LA(1) 

+

15768 if token in [147, 161, 162, 163]: 

+

15769 self.enterOuterAlt(localctx, 1) 

+

15770 self.state = 2335 

+

15771 self.rule_SensitivityList() 

+

15772 pass 

+

15773 elif token in [10]: 

+

15774 self.enterOuterAlt(localctx, 2) 

+

15775 self.state = 2336 

+

15776 self.match(VHDLParser.KW_ALL) 

+

15777 pass 

+

15778 else: 

+

15779 raise NoViableAltException(self) 

+

15780 

+

15781 except RecognitionException as re: 

+

15782 localctx.exception = re 

+

15783 self._errHandler.reportError(self, re) 

+

15784 self._errHandler.recover(self, re) 

+

15785 finally: 

+

15786 self.exitRule() 

+

15787 return localctx 

+

15788 

+

15789 class Rule_ProcessStatementContext(ParserRuleContext): 

+

15790 __slots__ = 'parser' 

+

15791 

+

15792 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

15793 super().__init__(parent, invokingState) 

+

15794 self.parser = parser 

+

15795 self.label = None # Token 

+

15796 self._rule_ProcessDeclarativeItem = None # Rule_ProcessDeclarativeItemContext 

+

15797 self.declaredItems = list() # of Rule_ProcessDeclarativeItemContexts 

+

15798 self._rule_SequentialStatement = None # Rule_SequentialStatementContext 

+

15799 self.statements = list() # of Rule_SequentialStatementContexts 

+

15800 

+

15801 def KW_PROCESS(self, i: int = None): 

+

15802 if i is None: 

+

15803 return self.getTokens(VHDLParser.KW_PROCESS) 

+

15804 else: 

+

15805 return self.getToken(VHDLParser.KW_PROCESS, i) 

+

15806 

+

15807 def KW_BEGIN(self): 

+

15808 return self.getToken(VHDLParser.KW_BEGIN, 0) 

+

15809 

+

15810 def KW_END(self): 

+

15811 return self.getToken(VHDLParser.KW_END, 0) 

+

15812 

+

15813 def TOK_SEMICOL(self): 

+

15814 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

15815 

+

15816 def TOK_COLON(self): 

+

15817 return self.getToken(VHDLParser.TOK_COLON, 0) 

+

15818 

+

15819 def TOK_LP(self): 

+

15820 return self.getToken(VHDLParser.TOK_LP, 0) 

+

15821 

+

15822 def rule_ProcessSensitivityList(self): 

+

15823 return self.getTypedRuleContext(VHDLParser.Rule_ProcessSensitivityListContext, 0) 

+

15824 

+

15825 def TOK_RP(self): 

+

15826 return self.getToken(VHDLParser.TOK_RP, 0) 

+

15827 

+

15828 def KW_IS(self): 

+

15829 return self.getToken(VHDLParser.KW_IS, 0) 

+

15830 

+

15831 def LIT_IDENTIFIER(self, i: int = None): 

+

15832 if i is None: 

+

15833 return self.getTokens(VHDLParser.LIT_IDENTIFIER) 

+

15834 else: 

+

15835 return self.getToken(VHDLParser.LIT_IDENTIFIER, i) 

+

15836 

+

15837 def rule_ProcessDeclarativeItem(self, i: int = None): 

+

15838 if i is None: 

+

15839 return self.getTypedRuleContexts(VHDLParser.Rule_ProcessDeclarativeItemContext) 

+

15840 else: 

+

15841 return self.getTypedRuleContext(VHDLParser.Rule_ProcessDeclarativeItemContext, i) 

+

15842 

+

15843 def rule_SequentialStatement(self, i: int = None): 

+

15844 if i is None: 

+

15845 return self.getTypedRuleContexts(VHDLParser.Rule_SequentialStatementContext) 

+

15846 else: 

+

15847 return self.getTypedRuleContext(VHDLParser.Rule_SequentialStatementContext, i) 

+

15848 

+

15849 def getRuleIndex(self): 

+

15850 return VHDLParser.RULE_rule_ProcessStatement 

+

15851 

+

15852 def accept(self, visitor: ParseTreeVisitor): 

+

15853 if hasattr(visitor, "visitRule_ProcessStatement"): 

+

15854 return visitor.visitRule_ProcessStatement(self) 

+

15855 else: 

+

15856 return visitor.visitChildren(self) 

+

15857 

+

15858 def rule_ProcessStatement(self): 

+

15859 

+

15860 localctx = VHDLParser.Rule_ProcessStatementContext(self, self._ctx, self.state) 

+

15861 self.enterRule(localctx, 374, self.RULE_rule_ProcessStatement) 

+

15862 self._la = 0 # Token type 

+

15863 try: 

+

15864 self.enterOuterAlt(localctx, 1) 

+

15865 self.state = 2341 

+

15866 self._errHandler.sync(self) 

+

15867 _la = self._input.LA(1) 

+

15868 if _la == 163: 

+

15869 self.state = 2339 

+

15870 localctx.label = self.match(VHDLParser.LIT_IDENTIFIER) 

+

15871 self.state = 2340 

+

15872 self.match(VHDLParser.TOK_COLON) 

+

15873 

+

15874 self.state = 2343 

+

15875 self.match(VHDLParser.KW_PROCESS) 

+

15876 self.state = 2348 

+

15877 self._errHandler.sync(self) 

+

15878 _la = self._input.LA(1) 

+

15879 if _la == 143: 

+

15880 self.state = 2344 

+

15881 self.match(VHDLParser.TOK_LP) 

+

15882 self.state = 2345 

+

15883 self.rule_ProcessSensitivityList() 

+

15884 self.state = 2346 

+

15885 self.match(VHDLParser.TOK_RP) 

+

15886 

+

15887 self.state = 2351 

+

15888 self._errHandler.sync(self) 

+

15889 _la = self._input.LA(1) 

+

15890 if _la == 50: 

+

15891 self.state = 2350 

+

15892 self.match(VHDLParser.KW_IS) 

+

15893 

+

15894 self.state = 2356 

+

15895 self._errHandler.sync(self) 

+

15896 _la = self._input.LA(1) 

+

15897 while (((_la) & ~0x3f) == 0 and ((1 << _la) & 88579439100416) != 0) or ( 

+

15898 (((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & 842086220065) != 0): 

+

15899 self.state = 2353 

+

15900 localctx._rule_ProcessDeclarativeItem = self.rule_ProcessDeclarativeItem() 

+

15901 localctx.declaredItems.append(localctx._rule_ProcessDeclarativeItem) 

+

15902 self.state = 2358 

+

15903 self._errHandler.sync(self) 

+

15904 _la = self._input.LA(1) 

+

15905 

+

15906 self.state = 2359 

+

15907 self.match(VHDLParser.KW_BEGIN) 

+

15908 self.state = 2363 

+

15909 self._errHandler.sync(self) 

+

15910 _la = self._input.LA(1) 

+

15911 while (((_la) & ~0x3f) == 0 and ((1 << _la) & -8052400777563193344) != 0) or ( 

+

15912 (((_la - 85)) & ~0x3f) == 0 and ((1 << (_la - 85)) & 4899916406390259715) != 0) or ( 

+

15913 (((_la - 161)) & ~0x3f) == 0 and ((1 << (_la - 161)) & 7) != 0): 

+

15914 self.state = 2360 

+

15915 localctx._rule_SequentialStatement = self.rule_SequentialStatement() 

+

15916 localctx.statements.append(localctx._rule_SequentialStatement) 

+

15917 self.state = 2365 

+

15918 self._errHandler.sync(self) 

+

15919 _la = self._input.LA(1) 

+

15920 

+

15921 self.state = 2366 

+

15922 self.match(VHDLParser.KW_END) 

+

15923 self.state = 2367 

+

15924 self.match(VHDLParser.KW_PROCESS) 

+

15925 self.state = 2369 

+

15926 self._errHandler.sync(self) 

+

15927 _la = self._input.LA(1) 

+

15928 if _la == 163: 

+

15929 self.state = 2368 

+

15930 self.match(VHDLParser.LIT_IDENTIFIER) 

+

15931 

+

15932 self.state = 2371 

+

15933 self.match(VHDLParser.TOK_SEMICOL) 

+

15934 except RecognitionException as re: 

+

15935 localctx.exception = re 

+

15936 self._errHandler.reportError(self, re) 

+

15937 self._errHandler.recover(self, re) 

+

15938 finally: 

+

15939 self.exitRule() 

+

15940 return localctx 

+

15941 

+

15942 class Rule_PostponedProcessStatementContext(ParserRuleContext): 

+

15943 __slots__ = 'parser' 

+

15944 

+

15945 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

15946 super().__init__(parent, invokingState) 

+

15947 self.parser = parser 

+

15948 self.label = None # Token 

+

15949 self._rule_ProcessDeclarativeItem = None # Rule_ProcessDeclarativeItemContext 

+

15950 self.declaredItems = list() # of Rule_ProcessDeclarativeItemContexts 

+

15951 self._rule_SequentialStatement = None # Rule_SequentialStatementContext 

+

15952 self.statements = list() # of Rule_SequentialStatementContexts 

+

15953 

+

15954 def KW_POSTPONED(self, i: int = None): 

+

15955 if i is None: 

+

15956 return self.getTokens(VHDLParser.KW_POSTPONED) 

+

15957 else: 

+

15958 return self.getToken(VHDLParser.KW_POSTPONED, i) 

+

15959 

+

15960 def KW_PROCESS(self, i: int = None): 

+

15961 if i is None: 

+

15962 return self.getTokens(VHDLParser.KW_PROCESS) 

+

15963 else: 

+

15964 return self.getToken(VHDLParser.KW_PROCESS, i) 

+

15965 

+

15966 def KW_BEGIN(self): 

+

15967 return self.getToken(VHDLParser.KW_BEGIN, 0) 

+

15968 

+

15969 def KW_END(self): 

+

15970 return self.getToken(VHDLParser.KW_END, 0) 

+

15971 

+

15972 def TOK_SEMICOL(self): 

+

15973 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

15974 

+

15975 def TOK_COLON(self): 

+

15976 return self.getToken(VHDLParser.TOK_COLON, 0) 

+

15977 

+

15978 def TOK_LP(self): 

+

15979 return self.getToken(VHDLParser.TOK_LP, 0) 

+

15980 

+

15981 def rule_SensitivityList(self): 

+

15982 return self.getTypedRuleContext(VHDLParser.Rule_SensitivityListContext, 0) 

+

15983 

+

15984 def TOK_RP(self): 

+

15985 return self.getToken(VHDLParser.TOK_RP, 0) 

+

15986 

+

15987 def KW_IS(self): 

+

15988 return self.getToken(VHDLParser.KW_IS, 0) 

+

15989 

+

15990 def LIT_IDENTIFIER(self, i: int = None): 

+

15991 if i is None: 

+

15992 return self.getTokens(VHDLParser.LIT_IDENTIFIER) 

+

15993 else: 

+

15994 return self.getToken(VHDLParser.LIT_IDENTIFIER, i) 

+

15995 

+

15996 def rule_ProcessDeclarativeItem(self, i: int = None): 

+

15997 if i is None: 

+

15998 return self.getTypedRuleContexts(VHDLParser.Rule_ProcessDeclarativeItemContext) 

+

15999 else: 

+

16000 return self.getTypedRuleContext(VHDLParser.Rule_ProcessDeclarativeItemContext, i) 

+

16001 

+

16002 def rule_SequentialStatement(self, i: int = None): 

+

16003 if i is None: 

+

16004 return self.getTypedRuleContexts(VHDLParser.Rule_SequentialStatementContext) 

+

16005 else: 

+

16006 return self.getTypedRuleContext(VHDLParser.Rule_SequentialStatementContext, i) 

+

16007 

+

16008 def getRuleIndex(self): 

+

16009 return VHDLParser.RULE_rule_PostponedProcessStatement 

+

16010 

+

16011 def accept(self, visitor: ParseTreeVisitor): 

+

16012 if hasattr(visitor, "visitRule_PostponedProcessStatement"): 

+

16013 return visitor.visitRule_PostponedProcessStatement(self) 

+

16014 else: 

+

16015 return visitor.visitChildren(self) 

+

16016 

+

16017 def rule_PostponedProcessStatement(self): 

+

16018 

+

16019 localctx = VHDLParser.Rule_PostponedProcessStatementContext(self, self._ctx, self.state) 

+

16020 self.enterRule(localctx, 376, self.RULE_rule_PostponedProcessStatement) 

+

16021 self._la = 0 # Token type 

+

16022 try: 

+

16023 self.enterOuterAlt(localctx, 1) 

+

16024 self.state = 2375 

+

16025 self._errHandler.sync(self) 

+

16026 _la = self._input.LA(1) 

+

16027 if _la == 163: 

+

16028 self.state = 2373 

+

16029 localctx.label = self.match(VHDLParser.LIT_IDENTIFIER) 

+

16030 self.state = 2374 

+

16031 self.match(VHDLParser.TOK_COLON) 

+

16032 

+

16033 self.state = 2377 

+

16034 self.match(VHDLParser.KW_POSTPONED) 

+

16035 self.state = 2378 

+

16036 self.match(VHDLParser.KW_PROCESS) 

+

16037 self.state = 2383 

+

16038 self._errHandler.sync(self) 

+

16039 _la = self._input.LA(1) 

+

16040 if _la == 143: 

+

16041 self.state = 2379 

+

16042 self.match(VHDLParser.TOK_LP) 

+

16043 self.state = 2380 

+

16044 self.rule_SensitivityList() 

+

16045 self.state = 2381 

+

16046 self.match(VHDLParser.TOK_RP) 

+

16047 

+

16048 self.state = 2386 

+

16049 self._errHandler.sync(self) 

+

16050 _la = self._input.LA(1) 

+

16051 if _la == 50: 

+

16052 self.state = 2385 

+

16053 self.match(VHDLParser.KW_IS) 

+

16054 

+

16055 self.state = 2391 

+

16056 self._errHandler.sync(self) 

+

16057 _la = self._input.LA(1) 

+

16058 while (((_la) & ~0x3f) == 0 and ((1 << _la) & 88579439100416) != 0) or ( 

+

16059 (((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & 842086220065) != 0): 

+

16060 self.state = 2388 

+

16061 localctx._rule_ProcessDeclarativeItem = self.rule_ProcessDeclarativeItem() 

+

16062 localctx.declaredItems.append(localctx._rule_ProcessDeclarativeItem) 

+

16063 self.state = 2393 

+

16064 self._errHandler.sync(self) 

+

16065 _la = self._input.LA(1) 

+

16066 

+

16067 self.state = 2394 

+

16068 self.match(VHDLParser.KW_BEGIN) 

+

16069 self.state = 2398 

+

16070 self._errHandler.sync(self) 

+

16071 _la = self._input.LA(1) 

+

16072 while (((_la) & ~0x3f) == 0 and ((1 << _la) & -8052400777563193344) != 0) or ( 

+

16073 (((_la - 85)) & ~0x3f) == 0 and ((1 << (_la - 85)) & 4899916406390259715) != 0) or ( 

+

16074 (((_la - 161)) & ~0x3f) == 0 and ((1 << (_la - 161)) & 7) != 0): 

+

16075 self.state = 2395 

+

16076 localctx._rule_SequentialStatement = self.rule_SequentialStatement() 

+

16077 localctx.statements.append(localctx._rule_SequentialStatement) 

+

16078 self.state = 2400 

+

16079 self._errHandler.sync(self) 

+

16080 _la = self._input.LA(1) 

+

16081 

+

16082 self.state = 2401 

+

16083 self.match(VHDLParser.KW_END) 

+

16084 self.state = 2403 

+

16085 self._errHandler.sync(self) 

+

16086 _la = self._input.LA(1) 

+

16087 if _la == 73: 

+

16088 self.state = 2402 

+

16089 self.match(VHDLParser.KW_POSTPONED) 

+

16090 

+

16091 self.state = 2405 

+

16092 self.match(VHDLParser.KW_PROCESS) 

+

16093 self.state = 2407 

+

16094 self._errHandler.sync(self) 

+

16095 _la = self._input.LA(1) 

+

16096 if _la == 163: 

+

16097 self.state = 2406 

+

16098 self.match(VHDLParser.LIT_IDENTIFIER) 

+

16099 

+

16100 self.state = 2409 

+

16101 self.match(VHDLParser.TOK_SEMICOL) 

+

16102 except RecognitionException as re: 

+

16103 localctx.exception = re 

+

16104 self._errHandler.reportError(self, re) 

+

16105 self._errHandler.recover(self, re) 

+

16106 finally: 

+

16107 self.exitRule() 

+

16108 return localctx 

+

16109 

+

16110 class Rule_ProtectedTypeBodyContext(ParserRuleContext): 

+

16111 __slots__ = 'parser' 

+

16112 

+

16113 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

16114 super().__init__(parent, invokingState) 

+

16115 self.parser = parser 

+

16116 self._rule_ProtectedTypeBodyDeclarativeItem = None # Rule_ProtectedTypeBodyDeclarativeItemContext 

+

16117 self.declaredItems = list() # of Rule_ProtectedTypeBodyDeclarativeItemContexts 

+

16118 self.name2 = None # Token 

+

16119 

+

16120 def KW_PROTECTED(self, i: int = None): 

+

16121 if i is None: 

+

16122 return self.getTokens(VHDLParser.KW_PROTECTED) 

+

16123 else: 

+

16124 return self.getToken(VHDLParser.KW_PROTECTED, i) 

+

16125 

+

16126 def KW_BODY(self, i: int = None): 

+

16127 if i is None: 

+

16128 return self.getTokens(VHDLParser.KW_BODY) 

+

16129 else: 

+

16130 return self.getToken(VHDLParser.KW_BODY, i) 

+

16131 

+

16132 def KW_END(self): 

+

16133 return self.getToken(VHDLParser.KW_END, 0) 

+

16134 

+

16135 def rule_ProtectedTypeBodyDeclarativeItem(self, i: int = None): 

+

16136 if i is None: 

+

16137 return self.getTypedRuleContexts(VHDLParser.Rule_ProtectedTypeBodyDeclarativeItemContext) 

+

16138 else: 

+

16139 return self.getTypedRuleContext(VHDLParser.Rule_ProtectedTypeBodyDeclarativeItemContext, i) 

+

16140 

+

16141 def LIT_IDENTIFIER(self): 

+

16142 return self.getToken(VHDLParser.LIT_IDENTIFIER, 0) 

+

16143 

+

16144 def getRuleIndex(self): 

+

16145 return VHDLParser.RULE_rule_ProtectedTypeBody 

+

16146 

+

16147 def accept(self, visitor: ParseTreeVisitor): 

+

16148 if hasattr(visitor, "visitRule_ProtectedTypeBody"): 

+

16149 return visitor.visitRule_ProtectedTypeBody(self) 

+

16150 else: 

+

16151 return visitor.visitChildren(self) 

+

16152 

+

16153 def rule_ProtectedTypeBody(self): 

+

16154 

+

16155 localctx = VHDLParser.Rule_ProtectedTypeBodyContext(self, self._ctx, self.state) 

+

16156 self.enterRule(localctx, 378, self.RULE_rule_ProtectedTypeBody) 

+

16157 self._la = 0 # Token type 

+

16158 try: 

+

16159 self.enterOuterAlt(localctx, 1) 

+

16160 self.state = 2411 

+

16161 self.match(VHDLParser.KW_PROTECTED) 

+

16162 self.state = 2412 

+

16163 self.match(VHDLParser.KW_BODY) 

+

16164 self.state = 2416 

+

16165 self._errHandler.sync(self) 

+

16166 _la = self._input.LA(1) 

+

16167 while (((_la) & ~0x3f) == 0 and ((1 << _la) & 88579439100416) != 0) or ( 

+

16168 (((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & 842086220065) != 0): 

+

16169 self.state = 2413 

+

16170 localctx._rule_ProtectedTypeBodyDeclarativeItem = self.rule_ProtectedTypeBodyDeclarativeItem() 

+

16171 localctx.declaredItems.append(localctx._rule_ProtectedTypeBodyDeclarativeItem) 

+

16172 self.state = 2418 

+

16173 self._errHandler.sync(self) 

+

16174 _la = self._input.LA(1) 

+

16175 

+

16176 self.state = 2419 

+

16177 self.match(VHDLParser.KW_END) 

+

16178 self.state = 2420 

+

16179 self.match(VHDLParser.KW_PROTECTED) 

+

16180 self.state = 2421 

+

16181 self.match(VHDLParser.KW_BODY) 

+

16182 self.state = 2423 

+

16183 self._errHandler.sync(self) 

+

16184 _la = self._input.LA(1) 

+

16185 if _la == 163: 

+

16186 self.state = 2422 

+

16187 localctx.name2 = self.match(VHDLParser.LIT_IDENTIFIER) 

+

16188 

+

16189 

+

16190 except RecognitionException as re: 

+

16191 localctx.exception = re 

+

16192 self._errHandler.reportError(self, re) 

+

16193 self._errHandler.recover(self, re) 

+

16194 finally: 

+

16195 self.exitRule() 

+

16196 return localctx 

+

16197 

+

16198 class Rule_ProtectedTypeBodyDeclarativeItemContext(ParserRuleContext): 

+

16199 __slots__ = 'parser' 

+

16200 

+

16201 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

16202 super().__init__(parent, invokingState) 

+

16203 self.parser = parser 

+

16204 

+

16205 def rule_SubprogramDeclaration(self): 

+

16206 return self.getTypedRuleContext(VHDLParser.Rule_SubprogramDeclarationContext, 0) 

+

16207 

+

16208 def rule_SubprogramBody(self): 

+

16209 return self.getTypedRuleContext(VHDLParser.Rule_SubprogramBodyContext, 0) 

+

16210 

+

16211 def rule_SubprogramInstantiationDeclaration(self): 

+

16212 return self.getTypedRuleContext(VHDLParser.Rule_SubprogramInstantiationDeclarationContext, 0) 

+

16213 

+

16214 def rule_PackageDeclaration(self): 

+

16215 return self.getTypedRuleContext(VHDLParser.Rule_PackageDeclarationContext, 0) 

+

16216 

+

16217 def rule_PackageBody(self): 

+

16218 return self.getTypedRuleContext(VHDLParser.Rule_PackageBodyContext, 0) 

+

16219 

+

16220 def rule_PackageInstantiationDeclaration(self): 

+

16221 return self.getTypedRuleContext(VHDLParser.Rule_PackageInstantiationDeclarationContext, 0) 

+

16222 

+

16223 def rule_TypeDeclaration(self): 

+

16224 return self.getTypedRuleContext(VHDLParser.Rule_TypeDeclarationContext, 0) 

+

16225 

+

16226 def rule_SubtypeDeclaration(self): 

+

16227 return self.getTypedRuleContext(VHDLParser.Rule_SubtypeDeclarationContext, 0) 

+

16228 

+

16229 def rule_ConstantDeclaration(self): 

+

16230 return self.getTypedRuleContext(VHDLParser.Rule_ConstantDeclarationContext, 0) 

+

16231 

+

16232 def rule_VariableDeclaration(self): 

+

16233 return self.getTypedRuleContext(VHDLParser.Rule_VariableDeclarationContext, 0) 

+

16234 

+

16235 def rule_FileDeclaration(self): 

+

16236 return self.getTypedRuleContext(VHDLParser.Rule_FileDeclarationContext, 0) 

+

16237 

+

16238 def rule_AliasDeclaration(self): 

+

16239 return self.getTypedRuleContext(VHDLParser.Rule_AliasDeclarationContext, 0) 

+

16240 

+

16241 def rule_AttributeDeclaration(self): 

+

16242 return self.getTypedRuleContext(VHDLParser.Rule_AttributeDeclarationContext, 0) 

+

16243 

+

16244 def rule_AttributeSpecification(self): 

+

16245 return self.getTypedRuleContext(VHDLParser.Rule_AttributeSpecificationContext, 0) 

+

16246 

+

16247 def rule_UseClause(self): 

+

16248 return self.getTypedRuleContext(VHDLParser.Rule_UseClauseContext, 0) 

+

16249 

+

16250 def rule_GroupTemplateDeclaration(self): 

+

16251 return self.getTypedRuleContext(VHDLParser.Rule_GroupTemplateDeclarationContext, 0) 

+

16252 

+

16253 def rule_GroupDeclaration(self): 

+

16254 return self.getTypedRuleContext(VHDLParser.Rule_GroupDeclarationContext, 0) 

+

16255 

+

16256 def getRuleIndex(self): 

+

16257 return VHDLParser.RULE_rule_ProtectedTypeBodyDeclarativeItem 

+

16258 

+

16259 def accept(self, visitor: ParseTreeVisitor): 

+

16260 if hasattr(visitor, "visitRule_ProtectedTypeBodyDeclarativeItem"): 

+

16261 return visitor.visitRule_ProtectedTypeBodyDeclarativeItem(self) 

+

16262 else: 

+

16263 return visitor.visitChildren(self) 

+

16264 

+

16265 def rule_ProtectedTypeBodyDeclarativeItem(self): 

+

16266 

+

16267 localctx = VHDLParser.Rule_ProtectedTypeBodyDeclarativeItemContext(self, self._ctx, self.state) 

+

16268 self.enterRule(localctx, 380, self.RULE_rule_ProtectedTypeBodyDeclarativeItem) 

+

16269 try: 

+

16270 self.state = 2442 

+

16271 self._errHandler.sync(self) 

+

16272 la_ = self._interp.adaptivePredict(self._input, 268, self._ctx) 

+

16273 if la_ == 1: 

+

16274 self.enterOuterAlt(localctx, 1) 

+

16275 self.state = 2425 

+

16276 self.rule_SubprogramDeclaration() 

+

16277 pass 

+

16278 

+

16279 elif la_ == 2: 

+

16280 self.enterOuterAlt(localctx, 2) 

+

16281 self.state = 2426 

+

16282 self.rule_SubprogramBody() 

+

16283 pass 

+

16284 

+

16285 elif la_ == 3: 

+

16286 self.enterOuterAlt(localctx, 3) 

+

16287 self.state = 2427 

+

16288 self.rule_SubprogramInstantiationDeclaration() 

+

16289 pass 

+

16290 

+

16291 elif la_ == 4: 

+

16292 self.enterOuterAlt(localctx, 4) 

+

16293 self.state = 2428 

+

16294 self.rule_PackageDeclaration() 

+

16295 pass 

+

16296 

+

16297 elif la_ == 5: 

+

16298 self.enterOuterAlt(localctx, 5) 

+

16299 self.state = 2429 

+

16300 self.rule_PackageBody() 

+

16301 pass 

+

16302 

+

16303 elif la_ == 6: 

+

16304 self.enterOuterAlt(localctx, 6) 

+

16305 self.state = 2430 

+

16306 self.rule_PackageInstantiationDeclaration() 

+

16307 pass 

+

16308 

+

16309 elif la_ == 7: 

+

16310 self.enterOuterAlt(localctx, 7) 

+

16311 self.state = 2431 

+

16312 self.rule_TypeDeclaration() 

+

16313 pass 

+

16314 

+

16315 elif la_ == 8: 

+

16316 self.enterOuterAlt(localctx, 8) 

+

16317 self.state = 2432 

+

16318 self.rule_SubtypeDeclaration() 

+

16319 pass 

+

16320 

+

16321 elif la_ == 9: 

+

16322 self.enterOuterAlt(localctx, 9) 

+

16323 self.state = 2433 

+

16324 self.rule_ConstantDeclaration() 

+

16325 pass 

+

16326 

+

16327 elif la_ == 10: 

+

16328 self.enterOuterAlt(localctx, 10) 

+

16329 self.state = 2434 

+

16330 self.rule_VariableDeclaration() 

+

16331 pass 

+

16332 

+

16333 elif la_ == 11: 

+

16334 self.enterOuterAlt(localctx, 11) 

+

16335 self.state = 2435 

+

16336 self.rule_FileDeclaration() 

+

16337 pass 

+

16338 

+

16339 elif la_ == 12: 

+

16340 self.enterOuterAlt(localctx, 12) 

+

16341 self.state = 2436 

+

16342 self.rule_AliasDeclaration() 

+

16343 pass 

+

16344 

+

16345 elif la_ == 13: 

+

16346 self.enterOuterAlt(localctx, 13) 

+

16347 self.state = 2437 

+

16348 self.rule_AttributeDeclaration() 

+

16349 pass 

+

16350 

+

16351 elif la_ == 14: 

+

16352 self.enterOuterAlt(localctx, 14) 

+

16353 self.state = 2438 

+

16354 self.rule_AttributeSpecification() 

+

16355 pass 

+

16356 

+

16357 elif la_ == 15: 

+

16358 self.enterOuterAlt(localctx, 15) 

+

16359 self.state = 2439 

+

16360 self.rule_UseClause() 

+

16361 pass 

+

16362 

+

16363 elif la_ == 16: 

+

16364 self.enterOuterAlt(localctx, 16) 

+

16365 self.state = 2440 

+

16366 self.rule_GroupTemplateDeclaration() 

+

16367 pass 

+

16368 

+

16369 elif la_ == 17: 

+

16370 self.enterOuterAlt(localctx, 17) 

+

16371 self.state = 2441 

+

16372 self.rule_GroupDeclaration() 

+

16373 pass 

+

16374 

+

16375 

+

16376 except RecognitionException as re: 

+

16377 localctx.exception = re 

+

16378 self._errHandler.reportError(self, re) 

+

16379 self._errHandler.recover(self, re) 

+

16380 finally: 

+

16381 self.exitRule() 

+

16382 return localctx 

+

16383 

+

16384 class Rule_ProtectedTypeDeclarationContext(ParserRuleContext): 

+

16385 __slots__ = 'parser' 

+

16386 

+

16387 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

16388 super().__init__(parent, invokingState) 

+

16389 self.parser = parser 

+

16390 self._rule_ProtectedTypeDeclarativeItem = None # Rule_ProtectedTypeDeclarativeItemContext 

+

16391 self.declaredItems = list() # of Rule_ProtectedTypeDeclarativeItemContexts 

+

16392 self.name2 = None # Token 

+

16393 

+

16394 def KW_PROTECTED(self, i: int = None): 

+

16395 if i is None: 

+

16396 return self.getTokens(VHDLParser.KW_PROTECTED) 

+

16397 else: 

+

16398 return self.getToken(VHDLParser.KW_PROTECTED, i) 

+

16399 

+

16400 def KW_END(self): 

+

16401 return self.getToken(VHDLParser.KW_END, 0) 

+

16402 

+

16403 def rule_ProtectedTypeDeclarativeItem(self, i: int = None): 

+

16404 if i is None: 

+

16405 return self.getTypedRuleContexts(VHDLParser.Rule_ProtectedTypeDeclarativeItemContext) 

+

16406 else: 

+

16407 return self.getTypedRuleContext(VHDLParser.Rule_ProtectedTypeDeclarativeItemContext, i) 

+

16408 

+

16409 def LIT_IDENTIFIER(self): 

+

16410 return self.getToken(VHDLParser.LIT_IDENTIFIER, 0) 

+

16411 

+

16412 def getRuleIndex(self): 

+

16413 return VHDLParser.RULE_rule_ProtectedTypeDeclaration 

+

16414 

+

16415 def accept(self, visitor: ParseTreeVisitor): 

+

16416 if hasattr(visitor, "visitRule_ProtectedTypeDeclaration"): 

+

16417 return visitor.visitRule_ProtectedTypeDeclaration(self) 

+

16418 else: 

+

16419 return visitor.visitChildren(self) 

+

16420 

+

16421 def rule_ProtectedTypeDeclaration(self): 

+

16422 

+

16423 localctx = VHDLParser.Rule_ProtectedTypeDeclarationContext(self, self._ctx, self.state) 

+

16424 self.enterRule(localctx, 382, self.RULE_rule_ProtectedTypeDeclaration) 

+

16425 self._la = 0 # Token type 

+

16426 try: 

+

16427 self.enterOuterAlt(localctx, 1) 

+

16428 self.state = 2444 

+

16429 self.match(VHDLParser.KW_PROTECTED) 

+

16430 self.state = 2448 

+

16431 self._errHandler.sync(self) 

+

16432 _la = self._input.LA(1) 

+

16433 while (((_la) & ~0x3f) == 0 and ((1 << _la) & 70918500024832) != 0) or ( 

+

16434 (((_la - 74)) & ~0x3f) == 0 and ((1 << (_la - 74)) & 17179869203) != 0): 

+

16435 self.state = 2445 

+

16436 localctx._rule_ProtectedTypeDeclarativeItem = self.rule_ProtectedTypeDeclarativeItem() 

+

16437 localctx.declaredItems.append(localctx._rule_ProtectedTypeDeclarativeItem) 

+

16438 self.state = 2450 

+

16439 self._errHandler.sync(self) 

+

16440 _la = self._input.LA(1) 

+

16441 

+

16442 self.state = 2451 

+

16443 self.match(VHDLParser.KW_END) 

+

16444 self.state = 2452 

+

16445 self.match(VHDLParser.KW_PROTECTED) 

+

16446 self.state = 2454 

+

16447 self._errHandler.sync(self) 

+

16448 _la = self._input.LA(1) 

+

16449 if _la == 163: 

+

16450 self.state = 2453 

+

16451 localctx.name2 = self.match(VHDLParser.LIT_IDENTIFIER) 

+

16452 

+

16453 

+

16454 except RecognitionException as re: 

+

16455 localctx.exception = re 

+

16456 self._errHandler.reportError(self, re) 

+

16457 self._errHandler.recover(self, re) 

+

16458 finally: 

+

16459 self.exitRule() 

+

16460 return localctx 

+

16461 

+

16462 class Rule_ProtectedTypeDeclarativeItemContext(ParserRuleContext): 

+

16463 __slots__ = 'parser' 

+

16464 

+

16465 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

16466 super().__init__(parent, invokingState) 

+

16467 self.parser = parser 

+

16468 

+

16469 def rule_SubprogramDeclaration(self): 

+

16470 return self.getTypedRuleContext(VHDLParser.Rule_SubprogramDeclarationContext, 0) 

+

16471 

+

16472 def rule_SubprogramInstantiationDeclaration(self): 

+

16473 return self.getTypedRuleContext(VHDLParser.Rule_SubprogramInstantiationDeclarationContext, 0) 

+

16474 

+

16475 def rule_PrivateVariableDeclaration(self): 

+

16476 return self.getTypedRuleContext(VHDLParser.Rule_PrivateVariableDeclarationContext, 0) 

+

16477 

+

16478 def rule_AliasDeclaration(self): 

+

16479 return self.getTypedRuleContext(VHDLParser.Rule_AliasDeclarationContext, 0) 

+

16480 

+

16481 def rule_AttributeSpecification(self): 

+

16482 return self.getTypedRuleContext(VHDLParser.Rule_AttributeSpecificationContext, 0) 

+

16483 

+

16484 def rule_UseClause(self): 

+

16485 return self.getTypedRuleContext(VHDLParser.Rule_UseClauseContext, 0) 

+

16486 

+

16487 def getRuleIndex(self): 

+

16488 return VHDLParser.RULE_rule_ProtectedTypeDeclarativeItem 

+

16489 

+

16490 def accept(self, visitor: ParseTreeVisitor): 

+

16491 if hasattr(visitor, "visitRule_ProtectedTypeDeclarativeItem"): 

+

16492 return visitor.visitRule_ProtectedTypeDeclarativeItem(self) 

+

16493 else: 

+

16494 return visitor.visitChildren(self) 

+

16495 

+

16496 def rule_ProtectedTypeDeclarativeItem(self): 

+

16497 

+

16498 localctx = VHDLParser.Rule_ProtectedTypeDeclarativeItemContext(self, self._ctx, self.state) 

+

16499 self.enterRule(localctx, 384, self.RULE_rule_ProtectedTypeDeclarativeItem) 

+

16500 try: 

+

16501 self.state = 2462 

+

16502 self._errHandler.sync(self) 

+

16503 la_ = self._interp.adaptivePredict(self._input, 271, self._ctx) 

+

16504 if la_ == 1: 

+

16505 self.enterOuterAlt(localctx, 1) 

+

16506 self.state = 2456 

+

16507 self.rule_SubprogramDeclaration() 

+

16508 pass 

+

16509 

+

16510 elif la_ == 2: 

+

16511 self.enterOuterAlt(localctx, 2) 

+

16512 self.state = 2457 

+

16513 self.rule_SubprogramInstantiationDeclaration() 

+

16514 pass 

+

16515 

+

16516 elif la_ == 3: 

+

16517 self.enterOuterAlt(localctx, 3) 

+

16518 self.state = 2458 

+

16519 self.rule_PrivateVariableDeclaration() 

+

16520 pass 

+

16521 

+

16522 elif la_ == 4: 

+

16523 self.enterOuterAlt(localctx, 4) 

+

16524 self.state = 2459 

+

16525 self.rule_AliasDeclaration() 

+

16526 pass 

+

16527 

+

16528 elif la_ == 5: 

+

16529 self.enterOuterAlt(localctx, 5) 

+

16530 self.state = 2460 

+

16531 self.rule_AttributeSpecification() 

+

16532 pass 

+

16533 

+

16534 elif la_ == 6: 

+

16535 self.enterOuterAlt(localctx, 6) 

+

16536 self.state = 2461 

+

16537 self.rule_UseClause() 

+

16538 pass 

+

16539 

+

16540 

+

16541 except RecognitionException as re: 

+

16542 localctx.exception = re 

+

16543 self._errHandler.reportError(self, re) 

+

16544 self._errHandler.recover(self, re) 

+

16545 finally: 

+

16546 self.exitRule() 

+

16547 return localctx 

+

16548 

+

16549 class Rule_ProtectedTypeDefinitionContext(ParserRuleContext): 

+

16550 __slots__ = 'parser' 

+

16551 

+

16552 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

16553 super().__init__(parent, invokingState) 

+

16554 self.parser = parser 

+

16555 

+

16556 def rule_ProtectedTypeDeclaration(self): 

+

16557 return self.getTypedRuleContext(VHDLParser.Rule_ProtectedTypeDeclarationContext, 0) 

+

16558 

+

16559 def rule_ProtectedTypeBody(self): 

+

16560 return self.getTypedRuleContext(VHDLParser.Rule_ProtectedTypeBodyContext, 0) 

+

16561 

+

16562 def getRuleIndex(self): 

+

16563 return VHDLParser.RULE_rule_ProtectedTypeDefinition 

+

16564 

+

16565 def accept(self, visitor: ParseTreeVisitor): 

+

16566 if hasattr(visitor, "visitRule_ProtectedTypeDefinition"): 

+

16567 return visitor.visitRule_ProtectedTypeDefinition(self) 

+

16568 else: 

+

16569 return visitor.visitChildren(self) 

+

16570 

+

16571 def rule_ProtectedTypeDefinition(self): 

+

16572 

+

16573 localctx = VHDLParser.Rule_ProtectedTypeDefinitionContext(self, self._ctx, self.state) 

+

16574 self.enterRule(localctx, 386, self.RULE_rule_ProtectedTypeDefinition) 

+

16575 try: 

+

16576 self.state = 2466 

+

16577 self._errHandler.sync(self) 

+

16578 la_ = self._interp.adaptivePredict(self._input, 272, self._ctx) 

+

16579 if la_ == 1: 

+

16580 self.enterOuterAlt(localctx, 1) 

+

16581 self.state = 2464 

+

16582 self.rule_ProtectedTypeDeclaration() 

+

16583 pass 

+

16584 

+

16585 elif la_ == 2: 

+

16586 self.enterOuterAlt(localctx, 2) 

+

16587 self.state = 2465 

+

16588 self.rule_ProtectedTypeBody() 

+

16589 pass 

+

16590 

+

16591 

+

16592 except RecognitionException as re: 

+

16593 localctx.exception = re 

+

16594 self._errHandler.reportError(self, re) 

+

16595 self._errHandler.recover(self, re) 

+

16596 finally: 

+

16597 self.exitRule() 

+

16598 return localctx 

+

16599 

+

16600 class Rule_ProtectedTypeInstantiationDefinitionContext(ParserRuleContext): 

+

16601 __slots__ = 'parser' 

+

16602 

+

16603 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

16604 super().__init__(parent, invokingState) 

+

16605 self.parser = parser 

+

16606 self.genericMapAspect = None # Rule_GenericMapAspectContext 

+

16607 

+

16608 def KW_NEW(self): 

+

16609 return self.getToken(VHDLParser.KW_NEW, 0) 

+

16610 

+

16611 def rule_Name(self): 

+

16612 return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0) 

+

16613 

+

16614 def rule_GenericMapAspect(self): 

+

16615 return self.getTypedRuleContext(VHDLParser.Rule_GenericMapAspectContext, 0) 

+

16616 

+

16617 def getRuleIndex(self): 

+

16618 return VHDLParser.RULE_rule_ProtectedTypeInstantiationDefinition 

+

16619 

+

16620 def accept(self, visitor: ParseTreeVisitor): 

+

16621 if hasattr(visitor, "visitRule_ProtectedTypeInstantiationDefinition"): 

+

16622 return visitor.visitRule_ProtectedTypeInstantiationDefinition(self) 

+

16623 else: 

+

16624 return visitor.visitChildren(self) 

+

16625 

+

16626 def rule_ProtectedTypeInstantiationDefinition(self): 

+

16627 

+

16628 localctx = VHDLParser.Rule_ProtectedTypeInstantiationDefinitionContext(self, self._ctx, self.state) 

+

16629 self.enterRule(localctx, 388, self.RULE_rule_ProtectedTypeInstantiationDefinition) 

+

16630 self._la = 0 # Token type 

+

16631 try: 

+

16632 self.enterOuterAlt(localctx, 1) 

+

16633 self.state = 2468 

+

16634 self.match(VHDLParser.KW_NEW) 

+

16635 self.state = 2469 

+

16636 self.rule_Name(0) 

+

16637 self.state = 2471 

+

16638 self._errHandler.sync(self) 

+

16639 _la = self._input.LA(1) 

+

16640 if _la == 42: 

+

16641 self.state = 2470 

+

16642 localctx.genericMapAspect = self.rule_GenericMapAspect() 

+

16643 

+

16644 

+

16645 except RecognitionException as re: 

+

16646 localctx.exception = re 

+

16647 self._errHandler.reportError(self, re) 

+

16648 self._errHandler.recover(self, re) 

+

16649 finally: 

+

16650 self.exitRule() 

+

16651 return localctx 

+

16652 

+

16653 class Rule_QualifiedExpressionContext(ParserRuleContext): 

+

16654 __slots__ = 'parser' 

+

16655 

+

16656 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

16657 super().__init__(parent, invokingState) 

+

16658 self.parser = parser 

+

16659 self.typeMark = None # Rule_NameContext 

+

16660 self.expression = None # Rule_ExpressionContext 

+

16661 self.aggregate = None # Rule_AggregateContext 

+

16662 

+

16663 def TOK_TICK(self): 

+

16664 return self.getToken(VHDLParser.TOK_TICK, 0) 

+

16665 

+

16666 def rule_Name(self): 

+

16667 return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0) 

+

16668 

+

16669 def TOK_LP(self): 

+

16670 return self.getToken(VHDLParser.TOK_LP, 0) 

+

16671 

+

16672 def TOK_RP(self): 

+

16673 return self.getToken(VHDLParser.TOK_RP, 0) 

+

16674 

+

16675 def rule_Expression(self): 

+

16676 return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0) 

+

16677 

+

16678 def rule_Aggregate(self): 

+

16679 return self.getTypedRuleContext(VHDLParser.Rule_AggregateContext, 0) 

+

16680 

+

16681 def getRuleIndex(self): 

+

16682 return VHDLParser.RULE_rule_QualifiedExpression 

+

16683 

+

16684 def accept(self, visitor: ParseTreeVisitor): 

+

16685 if hasattr(visitor, "visitRule_QualifiedExpression"): 

+

16686 return visitor.visitRule_QualifiedExpression(self) 

+

16687 else: 

+

16688 return visitor.visitChildren(self) 

+

16689 

+

16690 def rule_QualifiedExpression(self): 

+

16691 

+

16692 localctx = VHDLParser.Rule_QualifiedExpressionContext(self, self._ctx, self.state) 

+

16693 self.enterRule(localctx, 390, self.RULE_rule_QualifiedExpression) 

+

16694 try: 

+

16695 self.enterOuterAlt(localctx, 1) 

+

16696 self.state = 2473 

+

16697 localctx.typeMark = self.rule_Name(0) 

+

16698 self.state = 2474 

+

16699 self.match(VHDLParser.TOK_TICK) 

+

16700 self.state = 2481 

+

16701 self._errHandler.sync(self) 

+

16702 la_ = self._interp.adaptivePredict(self._input, 274, self._ctx) 

+

16703 if la_ == 1: 

+

16704 pass 

+

16705 

+

16706 elif la_ == 2: 

+

16707 self.state = 2476 

+

16708 self.match(VHDLParser.TOK_LP) 

+

16709 self.state = 2477 

+

16710 localctx.expression = self.rule_Expression(0) 

+

16711 self.state = 2478 

+

16712 self.match(VHDLParser.TOK_RP) 

+

16713 pass 

+

16714 

+

16715 elif la_ == 3: 

+

16716 self.state = 2480 

+

16717 localctx.aggregate = self.rule_Aggregate() 

+

16718 pass 

+

16719 

+

16720 

+

16721 except RecognitionException as re: 

+

16722 localctx.exception = re 

+

16723 self._errHandler.reportError(self, re) 

+

16724 self._errHandler.recover(self, re) 

+

16725 finally: 

+

16726 self.exitRule() 

+

16727 return localctx 

+

16728 

+

16729 class Rule_RangeContext(ParserRuleContext): 

+

16730 __slots__ = 'parser' 

+

16731 

+

16732 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

16733 super().__init__(parent, invokingState) 

+

16734 self.parser = parser 

+

16735 

+

16736 def rule_Name(self): 

+

16737 return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0) 

+

16738 

+

16739 def rule_SimpleRange(self): 

+

16740 return self.getTypedRuleContext(VHDLParser.Rule_SimpleRangeContext, 0) 

+

16741 

+

16742 def rule_Expression(self): 

+

16743 return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0) 

+

16744 

+

16745 def getRuleIndex(self): 

+

16746 return VHDLParser.RULE_rule_Range 

+

16747 

+

16748 def accept(self, visitor: ParseTreeVisitor): 

+

16749 if hasattr(visitor, "visitRule_Range"): 

+

16750 return visitor.visitRule_Range(self) 

+

16751 else: 

+

16752 return visitor.visitChildren(self) 

+

16753 

+

16754 def rule_Range(self): 

+

16755 

+

16756 localctx = VHDLParser.Rule_RangeContext(self, self._ctx, self.state) 

+

16757 self.enterRule(localctx, 392, self.RULE_rule_Range) 

+

16758 try: 

+

16759 self.state = 2486 

+

16760 self._errHandler.sync(self) 

+

16761 la_ = self._interp.adaptivePredict(self._input, 275, self._ctx) 

+

16762 if la_ == 1: 

+

16763 self.enterOuterAlt(localctx, 1) 

+

16764 self.state = 2483 

+

16765 self.rule_Name(0) 

+

16766 pass 

+

16767 

+

16768 elif la_ == 2: 

+

16769 self.enterOuterAlt(localctx, 2) 

+

16770 self.state = 2484 

+

16771 self.rule_SimpleRange() 

+

16772 pass 

+

16773 

+

16774 elif la_ == 3: 

+

16775 self.enterOuterAlt(localctx, 3) 

+

16776 self.state = 2485 

+

16777 self.rule_Expression(0) 

+

16778 pass 

+

16779 

+

16780 

+

16781 except RecognitionException as re: 

+

16782 localctx.exception = re 

+

16783 self._errHandler.reportError(self, re) 

+

16784 self._errHandler.recover(self, re) 

+

16785 finally: 

+

16786 self.exitRule() 

+

16787 return localctx 

+

16788 

+

16789 class Rule_RangeConstraintContext(ParserRuleContext): 

+

16790 __slots__ = 'parser' 

+

16791 

+

16792 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

16793 super().__init__(parent, invokingState) 

+

16794 self.parser = parser 

+

16795 

+

16796 def KW_RANGE(self): 

+

16797 return self.getToken(VHDLParser.KW_RANGE, 0) 

+

16798 

+

16799 def rule_Range(self): 

+

16800 return self.getTypedRuleContext(VHDLParser.Rule_RangeContext, 0) 

+

16801 

+

16802 def getRuleIndex(self): 

+

16803 return VHDLParser.RULE_rule_RangeConstraint 

+

16804 

+

16805 def accept(self, visitor: ParseTreeVisitor): 

+

16806 if hasattr(visitor, "visitRule_RangeConstraint"): 

+

16807 return visitor.visitRule_RangeConstraint(self) 

+

16808 else: 

+

16809 return visitor.visitChildren(self) 

+

16810 

+

16811 def rule_RangeConstraint(self): 

+

16812 

+

16813 localctx = VHDLParser.Rule_RangeConstraintContext(self, self._ctx, self.state) 

+

16814 self.enterRule(localctx, 394, self.RULE_rule_RangeConstraint) 

+

16815 try: 

+

16816 self.enterOuterAlt(localctx, 1) 

+

16817 self.state = 2488 

+

16818 self.match(VHDLParser.KW_RANGE) 

+

16819 self.state = 2489 

+

16820 self.rule_Range() 

+

16821 except RecognitionException as re: 

+

16822 localctx.exception = re 

+

16823 self._errHandler.reportError(self, re) 

+

16824 self._errHandler.recover(self, re) 

+

16825 finally: 

+

16826 self.exitRule() 

+

16827 return localctx 

+

16828 

+

16829 class Rule_RecordConstraintContext(ParserRuleContext): 

+

16830 __slots__ = 'parser' 

+

16831 

+

16832 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

16833 super().__init__(parent, invokingState) 

+

16834 self.parser = parser 

+

16835 

+

16836 def TOK_LP(self): 

+

16837 return self.getToken(VHDLParser.TOK_LP, 0) 

+

16838 

+

16839 def rule_RecordElementConstraint(self, i: int = None): 

+

16840 if i is None: 

+

16841 return self.getTypedRuleContexts(VHDLParser.Rule_RecordElementConstraintContext) 

+

16842 else: 

+

16843 return self.getTypedRuleContext(VHDLParser.Rule_RecordElementConstraintContext, i) 

+

16844 

+

16845 def TOK_RP(self): 

+

16846 return self.getToken(VHDLParser.TOK_RP, 0) 

+

16847 

+

16848 def TOK_COMMA(self, i: int = None): 

+

16849 if i is None: 

+

16850 return self.getTokens(VHDLParser.TOK_COMMA) 

+

16851 else: 

+

16852 return self.getToken(VHDLParser.TOK_COMMA, i) 

+

16853 

+

16854 def getRuleIndex(self): 

+

16855 return VHDLParser.RULE_rule_RecordConstraint 

+

16856 

+

16857 def accept(self, visitor: ParseTreeVisitor): 

+

16858 if hasattr(visitor, "visitRule_RecordConstraint"): 

+

16859 return visitor.visitRule_RecordConstraint(self) 

+

16860 else: 

+

16861 return visitor.visitChildren(self) 

+

16862 

+

16863 def rule_RecordConstraint(self): 

+

16864 

+

16865 localctx = VHDLParser.Rule_RecordConstraintContext(self, self._ctx, self.state) 

+

16866 self.enterRule(localctx, 396, self.RULE_rule_RecordConstraint) 

+

16867 self._la = 0 # Token type 

+

16868 try: 

+

16869 self.enterOuterAlt(localctx, 1) 

+

16870 self.state = 2491 

+

16871 self.match(VHDLParser.TOK_LP) 

+

16872 self.state = 2492 

+

16873 self.rule_RecordElementConstraint() 

+

16874 self.state = 2497 

+

16875 self._errHandler.sync(self) 

+

16876 _la = self._input.LA(1) 

+

16877 while _la == 151: 

+

16878 self.state = 2493 

+

16879 self.match(VHDLParser.TOK_COMMA) 

+

16880 self.state = 2494 

+

16881 self.rule_RecordElementConstraint() 

+

16882 self.state = 2499 

+

16883 self._errHandler.sync(self) 

+

16884 _la = self._input.LA(1) 

+

16885 

+

16886 self.state = 2500 

+

16887 self.match(VHDLParser.TOK_RP) 

+

16888 except RecognitionException as re: 

+

16889 localctx.exception = re 

+

16890 self._errHandler.reportError(self, re) 

+

16891 self._errHandler.recover(self, re) 

+

16892 finally: 

+

16893 self.exitRule() 

+

16894 return localctx 

+

16895 

+

16896 class Rule_RecordElementConstraintContext(ParserRuleContext): 

+

16897 __slots__ = 'parser' 

+

16898 

+

16899 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

16900 super().__init__(parent, invokingState) 

+

16901 self.parser = parser 

+

16902 

+

16903 def LIT_IDENTIFIER(self): 

+

16904 return self.getToken(VHDLParser.LIT_IDENTIFIER, 0) 

+

16905 

+

16906 def rule_ElementConstraint(self): 

+

16907 return self.getTypedRuleContext(VHDLParser.Rule_ElementConstraintContext, 0) 

+

16908 

+

16909 def getRuleIndex(self): 

+

16910 return VHDLParser.RULE_rule_RecordElementConstraint 

+

16911 

+

16912 def accept(self, visitor: ParseTreeVisitor): 

+

16913 if hasattr(visitor, "visitRule_RecordElementConstraint"): 

+

16914 return visitor.visitRule_RecordElementConstraint(self) 

+

16915 else: 

+

16916 return visitor.visitChildren(self) 

+

16917 

+

16918 def rule_RecordElementConstraint(self): 

+

16919 

+

16920 localctx = VHDLParser.Rule_RecordElementConstraintContext(self, self._ctx, self.state) 

+

16921 self.enterRule(localctx, 398, self.RULE_rule_RecordElementConstraint) 

+

16922 try: 

+

16923 self.enterOuterAlt(localctx, 1) 

+

16924 self.state = 2502 

+

16925 self.match(VHDLParser.LIT_IDENTIFIER) 

+

16926 self.state = 2503 

+

16927 self.rule_ElementConstraint() 

+

16928 except RecognitionException as re: 

+

16929 localctx.exception = re 

+

16930 self._errHandler.reportError(self, re) 

+

16931 self._errHandler.recover(self, re) 

+

16932 finally: 

+

16933 self.exitRule() 

+

16934 return localctx 

+

16935 

+

16936 class Rule_RecordElementListContext(ParserRuleContext): 

+

16937 __slots__ = 'parser' 

+

16938 

+

16939 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

16940 super().__init__(parent, invokingState) 

+

16941 self.parser = parser 

+

16942 self._LIT_IDENTIFIER = None # Token 

+

16943 self.elements = list() # of Tokens 

+

16944 

+

16945 def LIT_IDENTIFIER(self, i: int = None): 

+

16946 if i is None: 

+

16947 return self.getTokens(VHDLParser.LIT_IDENTIFIER) 

+

16948 else: 

+

16949 return self.getToken(VHDLParser.LIT_IDENTIFIER, i) 

+

16950 

+

16951 def TOK_COMMA(self, i: int = None): 

+

16952 if i is None: 

+

16953 return self.getTokens(VHDLParser.TOK_COMMA) 

+

16954 else: 

+

16955 return self.getToken(VHDLParser.TOK_COMMA, i) 

+

16956 

+

16957 def getRuleIndex(self): 

+

16958 return VHDLParser.RULE_rule_RecordElementList 

+

16959 

+

16960 def accept(self, visitor: ParseTreeVisitor): 

+

16961 if hasattr(visitor, "visitRule_RecordElementList"): 

+

16962 return visitor.visitRule_RecordElementList(self) 

+

16963 else: 

+

16964 return visitor.visitChildren(self) 

+

16965 

+

16966 def rule_RecordElementList(self): 

+

16967 

+

16968 localctx = VHDLParser.Rule_RecordElementListContext(self, self._ctx, self.state) 

+

16969 self.enterRule(localctx, 400, self.RULE_rule_RecordElementList) 

+

16970 self._la = 0 # Token type 

+

16971 try: 

+

16972 self.enterOuterAlt(localctx, 1) 

+

16973 self.state = 2505 

+

16974 localctx._LIT_IDENTIFIER = self.match(VHDLParser.LIT_IDENTIFIER) 

+

16975 localctx.elements.append(localctx._LIT_IDENTIFIER) 

+

16976 self.state = 2510 

+

16977 self._errHandler.sync(self) 

+

16978 _la = self._input.LA(1) 

+

16979 while _la == 151: 

+

16980 self.state = 2506 

+

16981 self.match(VHDLParser.TOK_COMMA) 

+

16982 self.state = 2507 

+

16983 localctx._LIT_IDENTIFIER = self.match(VHDLParser.LIT_IDENTIFIER) 

+

16984 localctx.elements.append(localctx._LIT_IDENTIFIER) 

+

16985 self.state = 2512 

+

16986 self._errHandler.sync(self) 

+

16987 _la = self._input.LA(1) 

+

16988 

+

16989 except RecognitionException as re: 

+

16990 localctx.exception = re 

+

16991 self._errHandler.reportError(self, re) 

+

16992 self._errHandler.recover(self, re) 

+

16993 finally: 

+

16994 self.exitRule() 

+

16995 return localctx 

+

16996 

+

16997 class Rule_RecordElementResolutionContext(ParserRuleContext): 

+

16998 __slots__ = 'parser' 

+

16999 

+

17000 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

17001 super().__init__(parent, invokingState) 

+

17002 self.parser = parser 

+

17003 

+

17004 def LIT_IDENTIFIER(self): 

+

17005 return self.getToken(VHDLParser.LIT_IDENTIFIER, 0) 

+

17006 

+

17007 def rule_ResolutionIndication(self): 

+

17008 return self.getTypedRuleContext(VHDLParser.Rule_ResolutionIndicationContext, 0) 

+

17009 

+

17010 def getRuleIndex(self): 

+

17011 return VHDLParser.RULE_rule_RecordElementResolution 

+

17012 

+

17013 def accept(self, visitor: ParseTreeVisitor): 

+

17014 if hasattr(visitor, "visitRule_RecordElementResolution"): 

+

17015 return visitor.visitRule_RecordElementResolution(self) 

+

17016 else: 

+

17017 return visitor.visitChildren(self) 

+

17018 

+

17019 def rule_RecordElementResolution(self): 

+

17020 

+

17021 localctx = VHDLParser.Rule_RecordElementResolutionContext(self, self._ctx, self.state) 

+

17022 self.enterRule(localctx, 402, self.RULE_rule_RecordElementResolution) 

+

17023 try: 

+

17024 self.enterOuterAlt(localctx, 1) 

+

17025 self.state = 2513 

+

17026 self.match(VHDLParser.LIT_IDENTIFIER) 

+

17027 self.state = 2514 

+

17028 self.rule_ResolutionIndication() 

+

17029 except RecognitionException as re: 

+

17030 localctx.exception = re 

+

17031 self._errHandler.reportError(self, re) 

+

17032 self._errHandler.recover(self, re) 

+

17033 finally: 

+

17034 self.exitRule() 

+

17035 return localctx 

+

17036 

+

17037 class Rule_RecordResolutionContext(ParserRuleContext): 

+

17038 __slots__ = 'parser' 

+

17039 

+

17040 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

17041 super().__init__(parent, invokingState) 

+

17042 self.parser = parser 

+

17043 

+

17044 def rule_RecordElementResolution(self, i: int = None): 

+

17045 if i is None: 

+

17046 return self.getTypedRuleContexts(VHDLParser.Rule_RecordElementResolutionContext) 

+

17047 else: 

+

17048 return self.getTypedRuleContext(VHDLParser.Rule_RecordElementResolutionContext, i) 

+

17049 

+

17050 def TOK_COMMA(self, i: int = None): 

+

17051 if i is None: 

+

17052 return self.getTokens(VHDLParser.TOK_COMMA) 

+

17053 else: 

+

17054 return self.getToken(VHDLParser.TOK_COMMA, i) 

+

17055 

+

17056 def getRuleIndex(self): 

+

17057 return VHDLParser.RULE_rule_RecordResolution 

+

17058 

+

17059 def accept(self, visitor: ParseTreeVisitor): 

+

17060 if hasattr(visitor, "visitRule_RecordResolution"): 

+

17061 return visitor.visitRule_RecordResolution(self) 

+

17062 else: 

+

17063 return visitor.visitChildren(self) 

+

17064 

+

17065 def rule_RecordResolution(self): 

+

17066 

+

17067 localctx = VHDLParser.Rule_RecordResolutionContext(self, self._ctx, self.state) 

+

17068 self.enterRule(localctx, 404, self.RULE_rule_RecordResolution) 

+

17069 self._la = 0 # Token type 

+

17070 try: 

+

17071 self.enterOuterAlt(localctx, 1) 

+

17072 self.state = 2516 

+

17073 self.rule_RecordElementResolution() 

+

17074 self.state = 2521 

+

17075 self._errHandler.sync(self) 

+

17076 _la = self._input.LA(1) 

+

17077 while _la == 151: 

+

17078 self.state = 2517 

+

17079 self.match(VHDLParser.TOK_COMMA) 

+

17080 self.state = 2518 

+

17081 self.rule_RecordElementResolution() 

+

17082 self.state = 2523 

+

17083 self._errHandler.sync(self) 

+

17084 _la = self._input.LA(1) 

+

17085 

+

17086 except RecognitionException as re: 

+

17087 localctx.exception = re 

+

17088 self._errHandler.reportError(self, re) 

+

17089 self._errHandler.recover(self, re) 

+

17090 finally: 

+

17091 self.exitRule() 

+

17092 return localctx 

+

17093 

+

17094 class Rule_RecordTypeDefinitionContext(ParserRuleContext): 

+

17095 __slots__ = 'parser' 

+

17096 

+

17097 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

17098 super().__init__(parent, invokingState) 

+

17099 self.parser = parser 

+

17100 self._rule_ElementDeclaration = None # Rule_ElementDeclarationContext 

+

17101 self.elements = list() # of Rule_ElementDeclarationContexts 

+

17102 self.name2 = None # Token 

+

17103 

+

17104 def KW_RECORD(self, i: int = None): 

+

17105 if i is None: 

+

17106 return self.getTokens(VHDLParser.KW_RECORD) 

+

17107 else: 

+

17108 return self.getToken(VHDLParser.KW_RECORD, i) 

+

17109 

+

17110 def KW_END(self): 

+

17111 return self.getToken(VHDLParser.KW_END, 0) 

+

17112 

+

17113 def rule_ElementDeclaration(self, i: int = None): 

+

17114 if i is None: 

+

17115 return self.getTypedRuleContexts(VHDLParser.Rule_ElementDeclarationContext) 

+

17116 else: 

+

17117 return self.getTypedRuleContext(VHDLParser.Rule_ElementDeclarationContext, i) 

+

17118 

+

17119 def LIT_IDENTIFIER(self): 

+

17120 return self.getToken(VHDLParser.LIT_IDENTIFIER, 0) 

+

17121 

+

17122 def getRuleIndex(self): 

+

17123 return VHDLParser.RULE_rule_RecordTypeDefinition 

+

17124 

+

17125 def accept(self, visitor: ParseTreeVisitor): 

+

17126 if hasattr(visitor, "visitRule_RecordTypeDefinition"): 

+

17127 return visitor.visitRule_RecordTypeDefinition(self) 

+

17128 else: 

+

17129 return visitor.visitChildren(self) 

+

17130 

+

17131 def rule_RecordTypeDefinition(self): 

+

17132 

+

17133 localctx = VHDLParser.Rule_RecordTypeDefinitionContext(self, self._ctx, self.state) 

+

17134 self.enterRule(localctx, 406, self.RULE_rule_RecordTypeDefinition) 

+

17135 self._la = 0 # Token type 

+

17136 try: 

+

17137 self.enterOuterAlt(localctx, 1) 

+

17138 self.state = 2524 

+

17139 self.match(VHDLParser.KW_RECORD) 

+

17140 self.state = 2528 

+

17141 self._errHandler.sync(self) 

+

17142 _la = self._input.LA(1) 

+

17143 while _la == 163: 

+

17144 self.state = 2525 

+

17145 localctx._rule_ElementDeclaration = self.rule_ElementDeclaration() 

+

17146 localctx.elements.append(localctx._rule_ElementDeclaration) 

+

17147 self.state = 2530 

+

17148 self._errHandler.sync(self) 

+

17149 _la = self._input.LA(1) 

+

17150 

+

17151 self.state = 2531 

+

17152 self.match(VHDLParser.KW_END) 

+

17153 self.state = 2532 

+

17154 self.match(VHDLParser.KW_RECORD) 

+

17155 self.state = 2534 

+

17156 self._errHandler.sync(self) 

+

17157 _la = self._input.LA(1) 

+

17158 if _la == 163: 

+

17159 self.state = 2533 

+

17160 localctx.name2 = self.match(VHDLParser.LIT_IDENTIFIER) 

+

17161 

+

17162 

+

17163 except RecognitionException as re: 

+

17164 localctx.exception = re 

+

17165 self._errHandler.reportError(self, re) 

+

17166 self._errHandler.recover(self, re) 

+

17167 finally: 

+

17168 self.exitRule() 

+

17169 return localctx 

+

17170 

+

17171 class Rule_RecordModeViewIndicationContext(ParserRuleContext): 

+

17172 __slots__ = 'parser' 

+

17173 

+

17174 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

17175 super().__init__(parent, invokingState) 

+

17176 self.parser = parser 

+

17177 

+

17178 def KW_VIEW(self): 

+

17179 return self.getToken(VHDLParser.KW_VIEW, 0) 

+

17180 

+

17181 def rule_Name(self): 

+

17182 return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0) 

+

17183 

+

17184 def KW_OF(self): 

+

17185 return self.getToken(VHDLParser.KW_OF, 0) 

+

17186 

+

17187 def rule_SubtypeIndication(self): 

+

17188 return self.getTypedRuleContext(VHDLParser.Rule_SubtypeIndicationContext, 0) 

+

17189 

+

17190 def getRuleIndex(self): 

+

17191 return VHDLParser.RULE_rule_RecordModeViewIndication 

+

17192 

+

17193 def accept(self, visitor: ParseTreeVisitor): 

+

17194 if hasattr(visitor, "visitRule_RecordModeViewIndication"): 

+

17195 return visitor.visitRule_RecordModeViewIndication(self) 

+

17196 else: 

+

17197 return visitor.visitChildren(self) 

+

17198 

+

17199 def rule_RecordModeViewIndication(self): 

+

17200 

+

17201 localctx = VHDLParser.Rule_RecordModeViewIndicationContext(self, self._ctx, self.state) 

+

17202 self.enterRule(localctx, 408, self.RULE_rule_RecordModeViewIndication) 

+

17203 self._la = 0 # Token type 

+

17204 try: 

+

17205 self.enterOuterAlt(localctx, 1) 

+

17206 self.state = 2536 

+

17207 self.match(VHDLParser.KW_VIEW) 

+

17208 self.state = 2537 

+

17209 self.rule_Name(0) 

+

17210 self.state = 2540 

+

17211 self._errHandler.sync(self) 

+

17212 _la = self._input.LA(1) 

+

17213 if _la == 64: 

+

17214 self.state = 2538 

+

17215 self.match(VHDLParser.KW_OF) 

+

17216 self.state = 2539 

+

17217 self.rule_SubtypeIndication() 

+

17218 

+

17219 

+

17220 except RecognitionException as re: 

+

17221 localctx.exception = re 

+

17222 self._errHandler.reportError(self, re) 

+

17223 self._errHandler.recover(self, re) 

+

17224 finally: 

+

17225 self.exitRule() 

+

17226 return localctx 

+

17227 

+

17228 class Rule_RelativePathnameContext(ParserRuleContext): 

+

17229 __slots__ = 'parser' 

+

17230 

+

17231 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

17232 super().__init__(parent, invokingState) 

+

17233 self.parser = parser 

+

17234 

+

17235 def rule_PartialPathname(self): 

+

17236 return self.getTypedRuleContext(VHDLParser.Rule_PartialPathnameContext, 0) 

+

17237 

+

17238 def TOK_CIRCUMFLEX(self, i: int = None): 

+

17239 if i is None: 

+

17240 return self.getTokens(VHDLParser.TOK_CIRCUMFLEX) 

+

17241 else: 

+

17242 return self.getToken(VHDLParser.TOK_CIRCUMFLEX, i) 

+

17243 

+

17244 def TOK_DOT(self, i: int = None): 

+

17245 if i is None: 

+

17246 return self.getTokens(VHDLParser.TOK_DOT) 

+

17247 else: 

+

17248 return self.getToken(VHDLParser.TOK_DOT, i) 

+

17249 

+

17250 def getRuleIndex(self): 

+

17251 return VHDLParser.RULE_rule_RelativePathname 

+

17252 

+

17253 def accept(self, visitor: ParseTreeVisitor): 

+

17254 if hasattr(visitor, "visitRule_RelativePathname"): 

+

17255 return visitor.visitRule_RelativePathname(self) 

+

17256 else: 

+

17257 return visitor.visitChildren(self) 

+

17258 

+

17259 def rule_RelativePathname(self): 

+

17260 

+

17261 localctx = VHDLParser.Rule_RelativePathnameContext(self, self._ctx, self.state) 

+

17262 self.enterRule(localctx, 410, self.RULE_rule_RelativePathname) 

+

17263 self._la = 0 # Token type 

+

17264 try: 

+

17265 self.enterOuterAlt(localctx, 1) 

+

17266 self.state = 2546 

+

17267 self._errHandler.sync(self) 

+

17268 _la = self._input.LA(1) 

+

17269 while _la == 156: 

+

17270 self.state = 2542 

+

17271 self.match(VHDLParser.TOK_CIRCUMFLEX) 

+

17272 self.state = 2543 

+

17273 self.match(VHDLParser.TOK_DOT) 

+

17274 self.state = 2548 

+

17275 self._errHandler.sync(self) 

+

17276 _la = self._input.LA(1) 

+

17277 

+

17278 self.state = 2549 

+

17279 self.rule_PartialPathname() 

+

17280 except RecognitionException as re: 

+

17281 localctx.exception = re 

+

17282 self._errHandler.reportError(self, re) 

+

17283 self._errHandler.recover(self, re) 

+

17284 finally: 

+

17285 self.exitRule() 

+

17286 return localctx 

+

17287 

+

17288 class Rule_ReportStatementContext(ParserRuleContext): 

+

17289 __slots__ = 'parser' 

+

17290 

+

17291 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

17292 super().__init__(parent, invokingState) 

+

17293 self.parser = parser 

+

17294 self.label = None # Token 

+

17295 self.reportExpression = None # Rule_ExpressionContext 

+

17296 self.severityExpression = None # Rule_ExpressionContext 

+

17297 

+

17298 def KW_REPORT(self): 

+

17299 return self.getToken(VHDLParser.KW_REPORT, 0) 

+

17300 

+

17301 def TOK_SEMICOL(self): 

+

17302 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

17303 

+

17304 def rule_Expression(self, i: int = None): 

+

17305 if i is None: 

+

17306 return self.getTypedRuleContexts(VHDLParser.Rule_ExpressionContext) 

+

17307 else: 

+

17308 return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, i) 

+

17309 

+

17310 def TOK_COLON(self): 

+

17311 return self.getToken(VHDLParser.TOK_COLON, 0) 

+

17312 

+

17313 def KW_SEVERITY(self): 

+

17314 return self.getToken(VHDLParser.KW_SEVERITY, 0) 

+

17315 

+

17316 def LIT_IDENTIFIER(self): 

+

17317 return self.getToken(VHDLParser.LIT_IDENTIFIER, 0) 

+

17318 

+

17319 def getRuleIndex(self): 

+

17320 return VHDLParser.RULE_rule_ReportStatement 

+

17321 

+

17322 def accept(self, visitor: ParseTreeVisitor): 

+

17323 if hasattr(visitor, "visitRule_ReportStatement"): 

+

17324 return visitor.visitRule_ReportStatement(self) 

+

17325 else: 

+

17326 return visitor.visitChildren(self) 

+

17327 

+

17328 def rule_ReportStatement(self): 

+

17329 

+

17330 localctx = VHDLParser.Rule_ReportStatementContext(self, self._ctx, self.state) 

+

17331 self.enterRule(localctx, 412, self.RULE_rule_ReportStatement) 

+

17332 self._la = 0 # Token type 

+

17333 try: 

+

17334 self.enterOuterAlt(localctx, 1) 

+

17335 self.state = 2553 

+

17336 self._errHandler.sync(self) 

+

17337 _la = self._input.LA(1) 

+

17338 if _la == 163: 

+

17339 self.state = 2551 

+

17340 localctx.label = self.match(VHDLParser.LIT_IDENTIFIER) 

+

17341 self.state = 2552 

+

17342 self.match(VHDLParser.TOK_COLON) 

+

17343 

+

17344 self.state = 2555 

+

17345 self.match(VHDLParser.KW_REPORT) 

+

17346 self.state = 2556 

+

17347 localctx.reportExpression = self.rule_Expression(0) 

+

17348 self.state = 2559 

+

17349 self._errHandler.sync(self) 

+

17350 _la = self._input.LA(1) 

+

17351 if _la == 91: 

+

17352 self.state = 2557 

+

17353 self.match(VHDLParser.KW_SEVERITY) 

+

17354 self.state = 2558 

+

17355 localctx.severityExpression = self.rule_Expression(0) 

+

17356 

+

17357 self.state = 2561 

+

17358 self.match(VHDLParser.TOK_SEMICOL) 

+

17359 except RecognitionException as re: 

+

17360 localctx.exception = re 

+

17361 self._errHandler.reportError(self, re) 

+

17362 self._errHandler.recover(self, re) 

+

17363 finally: 

+

17364 self.exitRule() 

+

17365 return localctx 

+

17366 

+

17367 class Rule_ResolutionIndicationContext(ParserRuleContext): 

+

17368 __slots__ = 'parser' 

+

17369 

+

17370 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

17371 super().__init__(parent, invokingState) 

+

17372 self.parser = parser 

+

17373 

+

17374 def rule_Name(self): 

+

17375 return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0) 

+

17376 

+

17377 def TOK_LP(self): 

+

17378 return self.getToken(VHDLParser.TOK_LP, 0) 

+

17379 

+

17380 def rule_ElementResolution(self): 

+

17381 return self.getTypedRuleContext(VHDLParser.Rule_ElementResolutionContext, 0) 

+

17382 

+

17383 def TOK_RP(self): 

+

17384 return self.getToken(VHDLParser.TOK_RP, 0) 

+

17385 

+

17386 def getRuleIndex(self): 

+

17387 return VHDLParser.RULE_rule_ResolutionIndication 

+

17388 

+

17389 def accept(self, visitor: ParseTreeVisitor): 

+

17390 if hasattr(visitor, "visitRule_ResolutionIndication"): 

+

17391 return visitor.visitRule_ResolutionIndication(self) 

+

17392 else: 

+

17393 return visitor.visitChildren(self) 

+

17394 

+

17395 def rule_ResolutionIndication(self): 

+

17396 

+

17397 localctx = VHDLParser.Rule_ResolutionIndicationContext(self, self._ctx, self.state) 

+

17398 self.enterRule(localctx, 414, self.RULE_rule_ResolutionIndication) 

+

17399 try: 

+

17400 self.state = 2568 

+

17401 self._errHandler.sync(self) 

+

17402 token = self._input.LA(1) 

+

17403 if token in [147, 161, 162, 163]: 

+

17404 self.enterOuterAlt(localctx, 1) 

+

17405 self.state = 2563 

+

17406 self.rule_Name(0) 

+

17407 pass 

+

17408 elif token in [143]: 

+

17409 self.enterOuterAlt(localctx, 2) 

+

17410 self.state = 2564 

+

17411 self.match(VHDLParser.TOK_LP) 

+

17412 self.state = 2565 

+

17413 self.rule_ElementResolution() 

+

17414 self.state = 2566 

+

17415 self.match(VHDLParser.TOK_RP) 

+

17416 pass 

+

17417 else: 

+

17418 raise NoViableAltException(self) 

+

17419 

+

17420 except RecognitionException as re: 

+

17421 localctx.exception = re 

+

17422 self._errHandler.reportError(self, re) 

+

17423 self._errHandler.recover(self, re) 

+

17424 finally: 

+

17425 self.exitRule() 

+

17426 return localctx 

+

17427 

+

17428 class Rule_ReturnStatementContext(ParserRuleContext): 

+

17429 __slots__ = 'parser' 

+

17430 

+

17431 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

17432 super().__init__(parent, invokingState) 

+

17433 self.parser = parser 

+

17434 

+

17435 def rule_PlainReturnStatement(self): 

+

17436 return self.getTypedRuleContext(VHDLParser.Rule_PlainReturnStatementContext, 0) 

+

17437 

+

17438 def rule_ValueReturnStatement(self): 

+

17439 return self.getTypedRuleContext(VHDLParser.Rule_ValueReturnStatementContext, 0) 

+

17440 

+

17441 def getRuleIndex(self): 

+

17442 return VHDLParser.RULE_rule_ReturnStatement 

+

17443 

+

17444 def accept(self, visitor: ParseTreeVisitor): 

+

17445 if hasattr(visitor, "visitRule_ReturnStatement"): 

+

17446 return visitor.visitRule_ReturnStatement(self) 

+

17447 else: 

+

17448 return visitor.visitChildren(self) 

+

17449 

+

17450 def rule_ReturnStatement(self): 

+

17451 

+

17452 localctx = VHDLParser.Rule_ReturnStatementContext(self, self._ctx, self.state) 

+

17453 self.enterRule(localctx, 416, self.RULE_rule_ReturnStatement) 

+

17454 try: 

+

17455 self.state = 2572 

+

17456 self._errHandler.sync(self) 

+

17457 la_ = self._interp.adaptivePredict(self._input, 286, self._ctx) 

+

17458 if la_ == 1: 

+

17459 self.enterOuterAlt(localctx, 1) 

+

17460 self.state = 2570 

+

17461 self.rule_PlainReturnStatement() 

+

17462 pass 

+

17463 

+

17464 elif la_ == 2: 

+

17465 self.enterOuterAlt(localctx, 2) 

+

17466 self.state = 2571 

+

17467 self.rule_ValueReturnStatement() 

+

17468 pass 

+

17469 

+

17470 

+

17471 except RecognitionException as re: 

+

17472 localctx.exception = re 

+

17473 self._errHandler.reportError(self, re) 

+

17474 self._errHandler.recover(self, re) 

+

17475 finally: 

+

17476 self.exitRule() 

+

17477 return localctx 

+

17478 

+

17479 class Rule_ScalarIncompleteTypeDefinitionContext(ParserRuleContext): 

+

17480 __slots__ = 'parser' 

+

17481 

+

17482 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

17483 super().__init__(parent, invokingState) 

+

17484 self.parser = parser 

+

17485 

+

17486 def TOK_BOX(self): 

+

17487 return self.getToken(VHDLParser.TOK_BOX, 0) 

+

17488 

+

17489 def getRuleIndex(self): 

+

17490 return VHDLParser.RULE_rule_ScalarIncompleteTypeDefinition 

+

17491 

+

17492 def accept(self, visitor: ParseTreeVisitor): 

+

17493 if hasattr(visitor, "visitRule_ScalarIncompleteTypeDefinition"): 

+

17494 return visitor.visitRule_ScalarIncompleteTypeDefinition(self) 

+

17495 else: 

+

17496 return visitor.visitChildren(self) 

+

17497 

+

17498 def rule_ScalarIncompleteTypeDefinition(self): 

+

17499 

+

17500 localctx = VHDLParser.Rule_ScalarIncompleteTypeDefinitionContext(self, self._ctx, self.state) 

+

17501 self.enterRule(localctx, 418, self.RULE_rule_ScalarIncompleteTypeDefinition) 

+

17502 try: 

+

17503 self.enterOuterAlt(localctx, 1) 

+

17504 self.state = 2574 

+

17505 self.match(VHDLParser.TOK_BOX) 

+

17506 except RecognitionException as re: 

+

17507 localctx.exception = re 

+

17508 self._errHandler.reportError(self, re) 

+

17509 self._errHandler.recover(self, re) 

+

17510 finally: 

+

17511 self.exitRule() 

+

17512 return localctx 

+

17513 

+

17514 class Rule_ScalarTypeDefinitionContext(ParserRuleContext): 

+

17515 __slots__ = 'parser' 

+

17516 

+

17517 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

17518 super().__init__(parent, invokingState) 

+

17519 self.parser = parser 

+

17520 

+

17521 def rule_EnumerationTypeDefinition(self): 

+

17522 return self.getTypedRuleContext(VHDLParser.Rule_EnumerationTypeDefinitionContext, 0) 

+

17523 

+

17524 def rule_IntegerTypeDefinition(self): 

+

17525 return self.getTypedRuleContext(VHDLParser.Rule_IntegerTypeDefinitionContext, 0) 

+

17526 

+

17527 def rule_FloatingTypeDefinition(self): 

+

17528 return self.getTypedRuleContext(VHDLParser.Rule_FloatingTypeDefinitionContext, 0) 

+

17529 

+

17530 def rule_PhysicalTypeDefinition(self): 

+

17531 return self.getTypedRuleContext(VHDLParser.Rule_PhysicalTypeDefinitionContext, 0) 

+

17532 

+

17533 def getRuleIndex(self): 

+

17534 return VHDLParser.RULE_rule_ScalarTypeDefinition 

+

17535 

+

17536 def accept(self, visitor: ParseTreeVisitor): 

+

17537 if hasattr(visitor, "visitRule_ScalarTypeDefinition"): 

+

17538 return visitor.visitRule_ScalarTypeDefinition(self) 

+

17539 else: 

+

17540 return visitor.visitChildren(self) 

+

17541 

+

17542 def rule_ScalarTypeDefinition(self): 

+

17543 

+

17544 localctx = VHDLParser.Rule_ScalarTypeDefinitionContext(self, self._ctx, self.state) 

+

17545 self.enterRule(localctx, 420, self.RULE_rule_ScalarTypeDefinition) 

+

17546 try: 

+

17547 self.state = 2580 

+

17548 self._errHandler.sync(self) 

+

17549 la_ = self._interp.adaptivePredict(self._input, 287, self._ctx) 

+

17550 if la_ == 1: 

+

17551 self.enterOuterAlt(localctx, 1) 

+

17552 self.state = 2576 

+

17553 self.rule_EnumerationTypeDefinition() 

+

17554 pass 

+

17555 

+

17556 elif la_ == 2: 

+

17557 self.enterOuterAlt(localctx, 2) 

+

17558 self.state = 2577 

+

17559 self.rule_IntegerTypeDefinition() 

+

17560 pass 

+

17561 

+

17562 elif la_ == 3: 

+

17563 self.enterOuterAlt(localctx, 3) 

+

17564 self.state = 2578 

+

17565 self.rule_FloatingTypeDefinition() 

+

17566 pass 

+

17567 

+

17568 elif la_ == 4: 

+

17569 self.enterOuterAlt(localctx, 4) 

+

17570 self.state = 2579 

+

17571 self.rule_PhysicalTypeDefinition() 

+

17572 pass 

+

17573 

+

17574 

+

17575 except RecognitionException as re: 

+

17576 localctx.exception = re 

+

17577 self._errHandler.reportError(self, re) 

+

17578 self._errHandler.recover(self, re) 

+

17579 finally: 

+

17580 self.exitRule() 

+

17581 return localctx 

+

17582 

+

17583 class Rule_SecondaryUnitDeclarationContext(ParserRuleContext): 

+

17584 __slots__ = 'parser' 

+

17585 

+

17586 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

17587 super().__init__(parent, invokingState) 

+

17588 self.parser = parser 

+

17589 self.name = None # Token 

+

17590 self.value = None # Token 

+

17591 self.unit = None # Token 

+

17592 

+

17593 def OP_EQ(self): 

+

17594 return self.getToken(VHDLParser.OP_EQ, 0) 

+

17595 

+

17596 def TOK_SEMICOL(self): 

+

17597 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

17598 

+

17599 def LIT_IDENTIFIER(self, i: int = None): 

+

17600 if i is None: 

+

17601 return self.getTokens(VHDLParser.LIT_IDENTIFIER) 

+

17602 else: 

+

17603 return self.getToken(VHDLParser.LIT_IDENTIFIER, i) 

+

17604 

+

17605 def LIT_ABSTRACT(self): 

+

17606 return self.getToken(VHDLParser.LIT_ABSTRACT, 0) 

+

17607 

+

17608 def getRuleIndex(self): 

+

17609 return VHDLParser.RULE_rule_SecondaryUnitDeclaration 

+

17610 

+

17611 def accept(self, visitor: ParseTreeVisitor): 

+

17612 if hasattr(visitor, "visitRule_SecondaryUnitDeclaration"): 

+

17613 return visitor.visitRule_SecondaryUnitDeclaration(self) 

+

17614 else: 

+

17615 return visitor.visitChildren(self) 

+

17616 

+

17617 def rule_SecondaryUnitDeclaration(self): 

+

17618 

+

17619 localctx = VHDLParser.Rule_SecondaryUnitDeclarationContext(self, self._ctx, self.state) 

+

17620 self.enterRule(localctx, 422, self.RULE_rule_SecondaryUnitDeclaration) 

+

17621 self._la = 0 # Token type 

+

17622 try: 

+

17623 self.enterOuterAlt(localctx, 1) 

+

17624 self.state = 2582 

+

17625 localctx.name = self.match(VHDLParser.LIT_IDENTIFIER) 

+

17626 self.state = 2583 

+

17627 self.match(VHDLParser.OP_EQ) 

+

17628 self.state = 2585 

+

17629 self._errHandler.sync(self) 

+

17630 _la = self._input.LA(1) 

+

17631 if _la == 159: 

+

17632 self.state = 2584 

+

17633 localctx.value = self.match(VHDLParser.LIT_ABSTRACT) 

+

17634 

+

17635 self.state = 2587 

+

17636 localctx.unit = self.match(VHDLParser.LIT_IDENTIFIER) 

+

17637 self.state = 2588 

+

17638 self.match(VHDLParser.TOK_SEMICOL) 

+

17639 except RecognitionException as re: 

+

17640 localctx.exception = re 

+

17641 self._errHandler.reportError(self, re) 

+

17642 self._errHandler.recover(self, re) 

+

17643 finally: 

+

17644 self.exitRule() 

+

17645 return localctx 

+

17646 

+

17647 class Rule_SelectedExpressionsContext(ParserRuleContext): 

+

17648 __slots__ = 'parser' 

+

17649 

+

17650 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

17651 super().__init__(parent, invokingState) 

+

17652 self.parser = parser 

+

17653 

+

17654 def rule_Expression(self, i: int = None): 

+

17655 if i is None: 

+

17656 return self.getTypedRuleContexts(VHDLParser.Rule_ExpressionContext) 

+

17657 else: 

+

17658 return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, i) 

+

17659 

+

17660 def KW_WHEN(self, i: int = None): 

+

17661 if i is None: 

+

17662 return self.getTokens(VHDLParser.KW_WHEN) 

+

17663 else: 

+

17664 return self.getToken(VHDLParser.KW_WHEN, i) 

+

17665 

+

17666 def rule_Choices(self, i: int = None): 

+

17667 if i is None: 

+

17668 return self.getTypedRuleContexts(VHDLParser.Rule_ChoicesContext) 

+

17669 else: 

+

17670 return self.getTypedRuleContext(VHDLParser.Rule_ChoicesContext, i) 

+

17671 

+

17672 def TOK_COMMA(self, i: int = None): 

+

17673 if i is None: 

+

17674 return self.getTokens(VHDLParser.TOK_COMMA) 

+

17675 else: 

+

17676 return self.getToken(VHDLParser.TOK_COMMA, i) 

+

17677 

+

17678 def getRuleIndex(self): 

+

17679 return VHDLParser.RULE_rule_SelectedExpressions 

+

17680 

+

17681 def accept(self, visitor: ParseTreeVisitor): 

+

17682 if hasattr(visitor, "visitRule_SelectedExpressions"): 

+

17683 return visitor.visitRule_SelectedExpressions(self) 

+

17684 else: 

+

17685 return visitor.visitChildren(self) 

+

17686 

+

17687 def rule_SelectedExpressions(self): 

+

17688 

+

17689 localctx = VHDLParser.Rule_SelectedExpressionsContext(self, self._ctx, self.state) 

+

17690 self.enterRule(localctx, 424, self.RULE_rule_SelectedExpressions) 

+

17691 try: 

+

17692 self.enterOuterAlt(localctx, 1) 

+

17693 self.state = 2597 

+

17694 self._errHandler.sync(self) 

+

17695 _alt = self._interp.adaptivePredict(self._input, 289, self._ctx) 

+

17696 while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: 

+

17697 if _alt == 1: 

+

17698 self.state = 2590 

+

17699 self.rule_Expression(0) 

+

17700 self.state = 2591 

+

17701 self.match(VHDLParser.KW_WHEN) 

+

17702 self.state = 2592 

+

17703 self.rule_Choices() 

+

17704 self.state = 2593 

+

17705 self.match(VHDLParser.TOK_COMMA) 

+

17706 self.state = 2599 

+

17707 self._errHandler.sync(self) 

+

17708 _alt = self._interp.adaptivePredict(self._input, 289, self._ctx) 

+

17709 

+

17710 self.state = 2600 

+

17711 self.rule_Expression(0) 

+

17712 self.state = 2601 

+

17713 self.match(VHDLParser.KW_WHEN) 

+

17714 self.state = 2602 

+

17715 self.rule_Choices() 

+

17716 except RecognitionException as re: 

+

17717 localctx.exception = re 

+

17718 self._errHandler.reportError(self, re) 

+

17719 self._errHandler.recover(self, re) 

+

17720 finally: 

+

17721 self.exitRule() 

+

17722 return localctx 

+

17723 

+

17724 class Rule_SelectedForceAssignmentContext(ParserRuleContext): 

+

17725 __slots__ = 'parser' 

+

17726 

+

17727 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

17728 super().__init__(parent, invokingState) 

+

17729 self.parser = parser 

+

17730 self.forceMode = None # Token 

+

17731 

+

17732 def KW_WITH(self): 

+

17733 return self.getToken(VHDLParser.KW_WITH, 0) 

+

17734 

+

17735 def rule_Expression(self): 

+

17736 return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0) 

+

17737 

+

17738 def KW_SELECT(self): 

+

17739 return self.getToken(VHDLParser.KW_SELECT, 0) 

+

17740 

+

17741 def rule_Target(self): 

+

17742 return self.getTypedRuleContext(VHDLParser.Rule_TargetContext, 0) 

+

17743 

+

17744 def TOK_SIG_ASSIGN(self): 

+

17745 return self.getToken(VHDLParser.TOK_SIG_ASSIGN, 0) 

+

17746 

+

17747 def KW_FORCE(self): 

+

17748 return self.getToken(VHDLParser.KW_FORCE, 0) 

+

17749 

+

17750 def rule_SelectedExpressions(self): 

+

17751 return self.getTypedRuleContext(VHDLParser.Rule_SelectedExpressionsContext, 0) 

+

17752 

+

17753 def TOK_SEMICOL(self): 

+

17754 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

17755 

+

17756 def KW_IN(self): 

+

17757 return self.getToken(VHDLParser.KW_IN, 0) 

+

17758 

+

17759 def KW_OUT(self): 

+

17760 return self.getToken(VHDLParser.KW_OUT, 0) 

+

17761 

+

17762 def TOK_QUESTION(self): 

+

17763 return self.getToken(VHDLParser.TOK_QUESTION, 0) 

+

17764 

+

17765 def getRuleIndex(self): 

+

17766 return VHDLParser.RULE_rule_SelectedForceAssignment 

+

17767 

+

17768 def accept(self, visitor: ParseTreeVisitor): 

+

17769 if hasattr(visitor, "visitRule_SelectedForceAssignment"): 

+

17770 return visitor.visitRule_SelectedForceAssignment(self) 

+

17771 else: 

+

17772 return visitor.visitChildren(self) 

+

17773 

+

17774 def rule_SelectedForceAssignment(self): 

+

17775 

+

17776 localctx = VHDLParser.Rule_SelectedForceAssignmentContext(self, self._ctx, self.state) 

+

17777 self.enterRule(localctx, 426, self.RULE_rule_SelectedForceAssignment) 

+

17778 self._la = 0 # Token type 

+

17779 try: 

+

17780 self.enterOuterAlt(localctx, 1) 

+

17781 self.state = 2604 

+

17782 self.match(VHDLParser.KW_WITH) 

+

17783 self.state = 2605 

+

17784 self.rule_Expression(0) 

+

17785 self.state = 2606 

+

17786 self.match(VHDLParser.KW_SELECT) 

+

17787 self.state = 2608 

+

17788 self._errHandler.sync(self) 

+

17789 _la = self._input.LA(1) 

+

17790 if _la == 154: 

+

17791 self.state = 2607 

+

17792 self.match(VHDLParser.TOK_QUESTION) 

+

17793 

+

17794 self.state = 2610 

+

17795 self.rule_Target() 

+

17796 self.state = 2611 

+

17797 self.match(VHDLParser.TOK_SIG_ASSIGN) 

+

17798 self.state = 2612 

+

17799 self.match(VHDLParser.KW_FORCE) 

+

17800 self.state = 2613 

+

17801 localctx.forceMode = self._input.LT(1) 

+

17802 _la = self._input.LA(1) 

+

17803 if not (_la == 47 or _la == 69): 

+

17804 localctx.forceMode = self._errHandler.recoverInline(self) 

+

17805 else: 

+

17806 self._errHandler.reportMatch(self) 

+

17807 self.consume() 

+

17808 self.state = 2614 

+

17809 self.rule_SelectedExpressions() 

+

17810 self.state = 2615 

+

17811 self.match(VHDLParser.TOK_SEMICOL) 

+

17812 except RecognitionException as re: 

+

17813 localctx.exception = re 

+

17814 self._errHandler.reportError(self, re) 

+

17815 self._errHandler.recover(self, re) 

+

17816 finally: 

+

17817 self.exitRule() 

+

17818 return localctx 

+

17819 

+

17820 class Rule_SelectedName2Context(ParserRuleContext): 

+

17821 __slots__ = 'parser' 

+

17822 

+

17823 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

17824 super().__init__(parent, invokingState) 

+

17825 self.parser = parser 

+

17826 self._LIT_IDENTIFIER = None # Token 

+

17827 self.names = list() # of Tokens 

+

17828 

+

17829 def LIT_IDENTIFIER(self, i: int = None): 

+

17830 if i is None: 

+

17831 return self.getTokens(VHDLParser.LIT_IDENTIFIER) 

+

17832 else: 

+

17833 return self.getToken(VHDLParser.LIT_IDENTIFIER, i) 

+

17834 

+

17835 def TOK_DOT(self, i: int = None): 

+

17836 if i is None: 

+

17837 return self.getTokens(VHDLParser.TOK_DOT) 

+

17838 else: 

+

17839 return self.getToken(VHDLParser.TOK_DOT, i) 

+

17840 

+

17841 def KW_ALL(self): 

+

17842 return self.getToken(VHDLParser.KW_ALL, 0) 

+

17843 

+

17844 def getRuleIndex(self): 

+

17845 return VHDLParser.RULE_rule_SelectedName2 

+

17846 

+

17847 def accept(self, visitor: ParseTreeVisitor): 

+

17848 if hasattr(visitor, "visitRule_SelectedName2"): 

+

17849 return visitor.visitRule_SelectedName2(self) 

+

17850 else: 

+

17851 return visitor.visitChildren(self) 

+

17852 

+

17853 def rule_SelectedName2(self): 

+

17854 

+

17855 localctx = VHDLParser.Rule_SelectedName2Context(self, self._ctx, self.state) 

+

17856 self.enterRule(localctx, 428, self.RULE_rule_SelectedName2) 

+

17857 self._la = 0 # Token type 

+

17858 try: 

+

17859 self.state = 2634 

+

17860 self._errHandler.sync(self) 

+

17861 la_ = self._interp.adaptivePredict(self._input, 293, self._ctx) 

+

17862 if la_ == 1: 

+

17863 self.enterOuterAlt(localctx, 1) 

+

17864 self.state = 2617 

+

17865 localctx._LIT_IDENTIFIER = self.match(VHDLParser.LIT_IDENTIFIER) 

+

17866 localctx.names.append(localctx._LIT_IDENTIFIER) 

+

17867 self.state = 2620 

+

17868 self._errHandler.sync(self) 

+

17869 _la = self._input.LA(1) 

+

17870 while True: 

+

17871 self.state = 2618 

+

17872 self.match(VHDLParser.TOK_DOT) 

+

17873 self.state = 2619 

+

17874 localctx._LIT_IDENTIFIER = self.match(VHDLParser.LIT_IDENTIFIER) 

+

17875 localctx.names.append(localctx._LIT_IDENTIFIER) 

+

17876 self.state = 2622 

+

17877 self._errHandler.sync(self) 

+

17878 _la = self._input.LA(1) 

+

17879 if not (_la == 153): 

+

17880 break 

+

17881 

+

17882 pass 

+

17883 

+

17884 elif la_ == 2: 

+

17885 self.enterOuterAlt(localctx, 2) 

+

17886 self.state = 2624 

+

17887 localctx._LIT_IDENTIFIER = self.match(VHDLParser.LIT_IDENTIFIER) 

+

17888 localctx.names.append(localctx._LIT_IDENTIFIER) 

+

17889 self.state = 2629 

+

17890 self._errHandler.sync(self) 

+

17891 _alt = self._interp.adaptivePredict(self._input, 292, self._ctx) 

+

17892 while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: 

+

17893 if _alt == 1: 

+

17894 self.state = 2625 

+

17895 self.match(VHDLParser.TOK_DOT) 

+

17896 self.state = 2626 

+

17897 localctx._LIT_IDENTIFIER = self.match(VHDLParser.LIT_IDENTIFIER) 

+

17898 localctx.names.append(localctx._LIT_IDENTIFIER) 

+

17899 self.state = 2631 

+

17900 self._errHandler.sync(self) 

+

17901 _alt = self._interp.adaptivePredict(self._input, 292, self._ctx) 

+

17902 

+

17903 self.state = 2632 

+

17904 self.match(VHDLParser.TOK_DOT) 

+

17905 self.state = 2633 

+

17906 self.match(VHDLParser.KW_ALL) 

+

17907 pass 

+

17908 

+

17909 

+

17910 except RecognitionException as re: 

+

17911 localctx.exception = re 

+

17912 self._errHandler.reportError(self, re) 

+

17913 self._errHandler.recover(self, re) 

+

17914 finally: 

+

17915 self.exitRule() 

+

17916 return localctx 

+

17917 

+

17918 class Rule_SelectedSignalAssignmentContext(ParserRuleContext): 

+

17919 __slots__ = 'parser' 

+

17920 

+

17921 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

17922 super().__init__(parent, invokingState) 

+

17923 self.parser = parser 

+

17924 

+

17925 def rule_SelectedWaveformAssignment(self): 

+

17926 return self.getTypedRuleContext(VHDLParser.Rule_SelectedWaveformAssignmentContext, 0) 

+

17927 

+

17928 def rule_SelectedForceAssignment(self): 

+

17929 return self.getTypedRuleContext(VHDLParser.Rule_SelectedForceAssignmentContext, 0) 

+

17930 

+

17931 def getRuleIndex(self): 

+

17932 return VHDLParser.RULE_rule_SelectedSignalAssignment 

+

17933 

+

17934 def accept(self, visitor: ParseTreeVisitor): 

+

17935 if hasattr(visitor, "visitRule_SelectedSignalAssignment"): 

+

17936 return visitor.visitRule_SelectedSignalAssignment(self) 

+

17937 else: 

+

17938 return visitor.visitChildren(self) 

+

17939 

+

17940 def rule_SelectedSignalAssignment(self): 

+

17941 

+

17942 localctx = VHDLParser.Rule_SelectedSignalAssignmentContext(self, self._ctx, self.state) 

+

17943 self.enterRule(localctx, 430, self.RULE_rule_SelectedSignalAssignment) 

+

17944 try: 

+

17945 self.state = 2638 

+

17946 self._errHandler.sync(self) 

+

17947 la_ = self._interp.adaptivePredict(self._input, 294, self._ctx) 

+

17948 if la_ == 1: 

+

17949 self.enterOuterAlt(localctx, 1) 

+

17950 self.state = 2636 

+

17951 self.rule_SelectedWaveformAssignment() 

+

17952 pass 

+

17953 

+

17954 elif la_ == 2: 

+

17955 self.enterOuterAlt(localctx, 2) 

+

17956 self.state = 2637 

+

17957 self.rule_SelectedForceAssignment() 

+

17958 pass 

+

17959 

+

17960 

+

17961 except RecognitionException as re: 

+

17962 localctx.exception = re 

+

17963 self._errHandler.reportError(self, re) 

+

17964 self._errHandler.recover(self, re) 

+

17965 finally: 

+

17966 self.exitRule() 

+

17967 return localctx 

+

17968 

+

17969 class Rule_SelectedVariableAssignmentContext(ParserRuleContext): 

+

17970 __slots__ = 'parser' 

+

17971 

+

17972 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

17973 super().__init__(parent, invokingState) 

+

17974 self.parser = parser 

+

17975 self.expression = None # Rule_ExpressionContext 

+

17976 self.target = None # Rule_TargetContext 

+

17977 

+

17978 def KW_WITH(self): 

+

17979 return self.getToken(VHDLParser.KW_WITH, 0) 

+

17980 

+

17981 def KW_SELECT(self): 

+

17982 return self.getToken(VHDLParser.KW_SELECT, 0) 

+

17983 

+

17984 def TOK_VAR_ASSIGN(self): 

+

17985 return self.getToken(VHDLParser.TOK_VAR_ASSIGN, 0) 

+

17986 

+

17987 def rule_SelectedExpressions(self): 

+

17988 return self.getTypedRuleContext(VHDLParser.Rule_SelectedExpressionsContext, 0) 

+

17989 

+

17990 def TOK_SEMICOL(self): 

+

17991 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

17992 

+

17993 def rule_Expression(self): 

+

17994 return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0) 

+

17995 

+

17996 def rule_Target(self): 

+

17997 return self.getTypedRuleContext(VHDLParser.Rule_TargetContext, 0) 

+

17998 

+

17999 def TOK_QUESTION(self): 

+

18000 return self.getToken(VHDLParser.TOK_QUESTION, 0) 

+

18001 

+

18002 def getRuleIndex(self): 

+

18003 return VHDLParser.RULE_rule_SelectedVariableAssignment 

+

18004 

+

18005 def accept(self, visitor: ParseTreeVisitor): 

+

18006 if hasattr(visitor, "visitRule_SelectedVariableAssignment"): 

+

18007 return visitor.visitRule_SelectedVariableAssignment(self) 

+

18008 else: 

+

18009 return visitor.visitChildren(self) 

+

18010 

+

18011 def rule_SelectedVariableAssignment(self): 

+

18012 

+

18013 localctx = VHDLParser.Rule_SelectedVariableAssignmentContext(self, self._ctx, self.state) 

+

18014 self.enterRule(localctx, 432, self.RULE_rule_SelectedVariableAssignment) 

+

18015 self._la = 0 # Token type 

+

18016 try: 

+

18017 self.enterOuterAlt(localctx, 1) 

+

18018 self.state = 2640 

+

18019 self.match(VHDLParser.KW_WITH) 

+

18020 self.state = 2641 

+

18021 localctx.expression = self.rule_Expression(0) 

+

18022 self.state = 2642 

+

18023 self.match(VHDLParser.KW_SELECT) 

+

18024 self.state = 2644 

+

18025 self._errHandler.sync(self) 

+

18026 _la = self._input.LA(1) 

+

18027 if _la == 154: 

+

18028 self.state = 2643 

+

18029 self.match(VHDLParser.TOK_QUESTION) 

+

18030 

+

18031 self.state = 2646 

+

18032 localctx.target = self.rule_Target() 

+

18033 self.state = 2647 

+

18034 self.match(VHDLParser.TOK_VAR_ASSIGN) 

+

18035 self.state = 2648 

+

18036 self.rule_SelectedExpressions() 

+

18037 self.state = 2649 

+

18038 self.match(VHDLParser.TOK_SEMICOL) 

+

18039 except RecognitionException as re: 

+

18040 localctx.exception = re 

+

18041 self._errHandler.reportError(self, re) 

+

18042 self._errHandler.recover(self, re) 

+

18043 finally: 

+

18044 self.exitRule() 

+

18045 return localctx 

+

18046 

+

18047 class Rule_SelectedWaveformAssignmentContext(ParserRuleContext): 

+

18048 __slots__ = 'parser' 

+

18049 

+

18050 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

18051 super().__init__(parent, invokingState) 

+

18052 self.parser = parser 

+

18053 self.expression = None # Rule_ExpressionContext 

+

18054 self.target = None # Rule_TargetContext 

+

18055 self.waveform = None # Rule_SelectedWaveformsContext 

+

18056 

+

18057 def KW_WITH(self): 

+

18058 return self.getToken(VHDLParser.KW_WITH, 0) 

+

18059 

+

18060 def KW_SELECT(self): 

+

18061 return self.getToken(VHDLParser.KW_SELECT, 0) 

+

18062 

+

18063 def TOK_SIG_ASSIGN(self): 

+

18064 return self.getToken(VHDLParser.TOK_SIG_ASSIGN, 0) 

+

18065 

+

18066 def rule_DelayMechanism(self): 

+

18067 return self.getTypedRuleContext(VHDLParser.Rule_DelayMechanismContext, 0) 

+

18068 

+

18069 def TOK_SEMICOL(self): 

+

18070 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

18071 

+

18072 def rule_Expression(self): 

+

18073 return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0) 

+

18074 

+

18075 def rule_Target(self): 

+

18076 return self.getTypedRuleContext(VHDLParser.Rule_TargetContext, 0) 

+

18077 

+

18078 def rule_SelectedWaveforms(self): 

+

18079 return self.getTypedRuleContext(VHDLParser.Rule_SelectedWaveformsContext, 0) 

+

18080 

+

18081 def TOK_QUESTION(self): 

+

18082 return self.getToken(VHDLParser.TOK_QUESTION, 0) 

+

18083 

+

18084 def getRuleIndex(self): 

+

18085 return VHDLParser.RULE_rule_SelectedWaveformAssignment 

+

18086 

+

18087 def accept(self, visitor: ParseTreeVisitor): 

+

18088 if hasattr(visitor, "visitRule_SelectedWaveformAssignment"): 

+

18089 return visitor.visitRule_SelectedWaveformAssignment(self) 

+

18090 else: 

+

18091 return visitor.visitChildren(self) 

+

18092 

+

18093 def rule_SelectedWaveformAssignment(self): 

+

18094 

+

18095 localctx = VHDLParser.Rule_SelectedWaveformAssignmentContext(self, self._ctx, self.state) 

+

18096 self.enterRule(localctx, 434, self.RULE_rule_SelectedWaveformAssignment) 

+

18097 self._la = 0 # Token type 

+

18098 try: 

+

18099 self.enterOuterAlt(localctx, 1) 

+

18100 self.state = 2651 

+

18101 self.match(VHDLParser.KW_WITH) 

+

18102 self.state = 2652 

+

18103 localctx.expression = self.rule_Expression(0) 

+

18104 self.state = 2653 

+

18105 self.match(VHDLParser.KW_SELECT) 

+

18106 self.state = 2655 

+

18107 self._errHandler.sync(self) 

+

18108 _la = self._input.LA(1) 

+

18109 if _la == 154: 

+

18110 self.state = 2654 

+

18111 self.match(VHDLParser.TOK_QUESTION) 

+

18112 

+

18113 self.state = 2657 

+

18114 localctx.target = self.rule_Target() 

+

18115 self.state = 2658 

+

18116 self.match(VHDLParser.TOK_SIG_ASSIGN) 

+

18117 self.state = 2659 

+

18118 self.rule_DelayMechanism() 

+

18119 self.state = 2660 

+

18120 localctx.waveform = self.rule_SelectedWaveforms() 

+

18121 self.state = 2661 

+

18122 self.match(VHDLParser.TOK_SEMICOL) 

+

18123 except RecognitionException as re: 

+

18124 localctx.exception = re 

+

18125 self._errHandler.reportError(self, re) 

+

18126 self._errHandler.recover(self, re) 

+

18127 finally: 

+

18128 self.exitRule() 

+

18129 return localctx 

+

18130 

+

18131 class Rule_SelectedWaveformsContext(ParserRuleContext): 

+

18132 __slots__ = 'parser' 

+

18133 

+

18134 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

18135 super().__init__(parent, invokingState) 

+

18136 self.parser = parser 

+

18137 

+

18138 def rule_Waveform(self, i: int = None): 

+

18139 if i is None: 

+

18140 return self.getTypedRuleContexts(VHDLParser.Rule_WaveformContext) 

+

18141 else: 

+

18142 return self.getTypedRuleContext(VHDLParser.Rule_WaveformContext, i) 

+

18143 

+

18144 def KW_WHEN(self, i: int = None): 

+

18145 if i is None: 

+

18146 return self.getTokens(VHDLParser.KW_WHEN) 

+

18147 else: 

+

18148 return self.getToken(VHDLParser.KW_WHEN, i) 

+

18149 

+

18150 def rule_Choices(self, i: int = None): 

+

18151 if i is None: 

+

18152 return self.getTypedRuleContexts(VHDLParser.Rule_ChoicesContext) 

+

18153 else: 

+

18154 return self.getTypedRuleContext(VHDLParser.Rule_ChoicesContext, i) 

+

18155 

+

18156 def TOK_COMMA(self, i: int = None): 

+

18157 if i is None: 

+

18158 return self.getTokens(VHDLParser.TOK_COMMA) 

+

18159 else: 

+

18160 return self.getToken(VHDLParser.TOK_COMMA, i) 

+

18161 

+

18162 def getRuleIndex(self): 

+

18163 return VHDLParser.RULE_rule_SelectedWaveforms 

+

18164 

+

18165 def accept(self, visitor: ParseTreeVisitor): 

+

18166 if hasattr(visitor, "visitRule_SelectedWaveforms"): 

+

18167 return visitor.visitRule_SelectedWaveforms(self) 

+

18168 else: 

+

18169 return visitor.visitChildren(self) 

+

18170 

+

18171 def rule_SelectedWaveforms(self): 

+

18172 

+

18173 localctx = VHDLParser.Rule_SelectedWaveformsContext(self, self._ctx, self.state) 

+

18174 self.enterRule(localctx, 436, self.RULE_rule_SelectedWaveforms) 

+

18175 try: 

+

18176 self.enterOuterAlt(localctx, 1) 

+

18177 self.state = 2670 

+

18178 self._errHandler.sync(self) 

+

18179 _alt = self._interp.adaptivePredict(self._input, 297, self._ctx) 

+

18180 while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: 

+

18181 if _alt == 1: 

+

18182 self.state = 2663 

+

18183 self.rule_Waveform() 

+

18184 self.state = 2664 

+

18185 self.match(VHDLParser.KW_WHEN) 

+

18186 self.state = 2665 

+

18187 self.rule_Choices() 

+

18188 self.state = 2666 

+

18189 self.match(VHDLParser.TOK_COMMA) 

+

18190 self.state = 2672 

+

18191 self._errHandler.sync(self) 

+

18192 _alt = self._interp.adaptivePredict(self._input, 297, self._ctx) 

+

18193 

+

18194 self.state = 2673 

+

18195 self.rule_Waveform() 

+

18196 self.state = 2674 

+

18197 self.match(VHDLParser.KW_WHEN) 

+

18198 self.state = 2675 

+

18199 self.rule_Choices() 

+

18200 except RecognitionException as re: 

+

18201 localctx.exception = re 

+

18202 self._errHandler.reportError(self, re) 

+

18203 self._errHandler.recover(self, re) 

+

18204 finally: 

+

18205 self.exitRule() 

+

18206 return localctx 

+

18207 

+

18208 class Rule_SensitivityClauseContext(ParserRuleContext): 

+

18209 __slots__ = 'parser' 

+

18210 

+

18211 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

18212 super().__init__(parent, invokingState) 

+

18213 self.parser = parser 

+

18214 self.sensitivityList = None # Rule_SensitivityListContext 

+

18215 

+

18216 def KW_ON(self): 

+

18217 return self.getToken(VHDLParser.KW_ON, 0) 

+

18218 

+

18219 def rule_SensitivityList(self): 

+

18220 return self.getTypedRuleContext(VHDLParser.Rule_SensitivityListContext, 0) 

+

18221 

+

18222 def getRuleIndex(self): 

+

18223 return VHDLParser.RULE_rule_SensitivityClause 

+

18224 

+

18225 def accept(self, visitor: ParseTreeVisitor): 

+

18226 if hasattr(visitor, "visitRule_SensitivityClause"): 

+

18227 return visitor.visitRule_SensitivityClause(self) 

+

18228 else: 

+

18229 return visitor.visitChildren(self) 

+

18230 

+

18231 def rule_SensitivityClause(self): 

+

18232 

+

18233 localctx = VHDLParser.Rule_SensitivityClauseContext(self, self._ctx, self.state) 

+

18234 self.enterRule(localctx, 438, self.RULE_rule_SensitivityClause) 

+

18235 try: 

+

18236 self.enterOuterAlt(localctx, 1) 

+

18237 self.state = 2677 

+

18238 self.match(VHDLParser.KW_ON) 

+

18239 self.state = 2678 

+

18240 localctx.sensitivityList = self.rule_SensitivityList() 

+

18241 except RecognitionException as re: 

+

18242 localctx.exception = re 

+

18243 self._errHandler.reportError(self, re) 

+

18244 self._errHandler.recover(self, re) 

+

18245 finally: 

+

18246 self.exitRule() 

+

18247 return localctx 

+

18248 

+

18249 class Rule_SensitivityListContext(ParserRuleContext): 

+

18250 __slots__ = 'parser' 

+

18251 

+

18252 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

18253 super().__init__(parent, invokingState) 

+

18254 self.parser = parser 

+

18255 self._rule_Name = None # Rule_NameContext 

+

18256 self.name = list() # of Rule_NameContexts 

+

18257 

+

18258 def rule_Name(self, i: int = None): 

+

18259 if i is None: 

+

18260 return self.getTypedRuleContexts(VHDLParser.Rule_NameContext) 

+

18261 else: 

+

18262 return self.getTypedRuleContext(VHDLParser.Rule_NameContext, i) 

+

18263 

+

18264 def TOK_COMMA(self, i: int = None): 

+

18265 if i is None: 

+

18266 return self.getTokens(VHDLParser.TOK_COMMA) 

+

18267 else: 

+

18268 return self.getToken(VHDLParser.TOK_COMMA, i) 

+

18269 

+

18270 def getRuleIndex(self): 

+

18271 return VHDLParser.RULE_rule_SensitivityList 

+

18272 

+

18273 def accept(self, visitor: ParseTreeVisitor): 

+

18274 if hasattr(visitor, "visitRule_SensitivityList"): 

+

18275 return visitor.visitRule_SensitivityList(self) 

+

18276 else: 

+

18277 return visitor.visitChildren(self) 

+

18278 

+

18279 def rule_SensitivityList(self): 

+

18280 

+

18281 localctx = VHDLParser.Rule_SensitivityListContext(self, self._ctx, self.state) 

+

18282 self.enterRule(localctx, 440, self.RULE_rule_SensitivityList) 

+

18283 self._la = 0 # Token type 

+

18284 try: 

+

18285 self.enterOuterAlt(localctx, 1) 

+

18286 self.state = 2680 

+

18287 localctx._rule_Name = self.rule_Name(0) 

+

18288 localctx.name.append(localctx._rule_Name) 

+

18289 self.state = 2685 

+

18290 self._errHandler.sync(self) 

+

18291 _la = self._input.LA(1) 

+

18292 while _la == 151: 

+

18293 self.state = 2681 

+

18294 self.match(VHDLParser.TOK_COMMA) 

+

18295 self.state = 2682 

+

18296 localctx._rule_Name = self.rule_Name(0) 

+

18297 localctx.name.append(localctx._rule_Name) 

+

18298 self.state = 2687 

+

18299 self._errHandler.sync(self) 

+

18300 _la = self._input.LA(1) 

+

18301 

+

18302 except RecognitionException as re: 

+

18303 localctx.exception = re 

+

18304 self._errHandler.reportError(self, re) 

+

18305 self._errHandler.recover(self, re) 

+

18306 finally: 

+

18307 self.exitRule() 

+

18308 return localctx 

+

18309 

+

18310 class Rule_SequentialBlockStatementContext(ParserRuleContext): 

+

18311 __slots__ = 'parser' 

+

18312 

+

18313 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

18314 super().__init__(parent, invokingState) 

+

18315 self.parser = parser 

+

18316 self.label = None # Token 

+

18317 self._rule_ProcessDeclarativeItem = None # Rule_ProcessDeclarativeItemContext 

+

18318 self.declaredItems = list() # of Rule_ProcessDeclarativeItemContexts 

+

18319 self._rule_SequentialStatement = None # Rule_SequentialStatementContext 

+

18320 self.statements = list() # of Rule_SequentialStatementContexts 

+

18321 self.label2 = None # Token 

+

18322 

+

18323 def KW_BLOCK(self, i: int = None): 

+

18324 if i is None: 

+

18325 return self.getTokens(VHDLParser.KW_BLOCK) 

+

18326 else: 

+

18327 return self.getToken(VHDLParser.KW_BLOCK, i) 

+

18328 

+

18329 def KW_BEGIN(self): 

+

18330 return self.getToken(VHDLParser.KW_BEGIN, 0) 

+

18331 

+

18332 def KW_END(self): 

+

18333 return self.getToken(VHDLParser.KW_END, 0) 

+

18334 

+

18335 def TOK_SEMICOL(self): 

+

18336 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

18337 

+

18338 def TOK_COLON(self): 

+

18339 return self.getToken(VHDLParser.TOK_COLON, 0) 

+

18340 

+

18341 def KW_IS(self): 

+

18342 return self.getToken(VHDLParser.KW_IS, 0) 

+

18343 

+

18344 def LIT_IDENTIFIER(self, i: int = None): 

+

18345 if i is None: 

+

18346 return self.getTokens(VHDLParser.LIT_IDENTIFIER) 

+

18347 else: 

+

18348 return self.getToken(VHDLParser.LIT_IDENTIFIER, i) 

+

18349 

+

18350 def rule_ProcessDeclarativeItem(self, i: int = None): 

+

18351 if i is None: 

+

18352 return self.getTypedRuleContexts(VHDLParser.Rule_ProcessDeclarativeItemContext) 

+

18353 else: 

+

18354 return self.getTypedRuleContext(VHDLParser.Rule_ProcessDeclarativeItemContext, i) 

+

18355 

+

18356 def rule_SequentialStatement(self, i: int = None): 

+

18357 if i is None: 

+

18358 return self.getTypedRuleContexts(VHDLParser.Rule_SequentialStatementContext) 

+

18359 else: 

+

18360 return self.getTypedRuleContext(VHDLParser.Rule_SequentialStatementContext, i) 

+

18361 

+

18362 def getRuleIndex(self): 

+

18363 return VHDLParser.RULE_rule_SequentialBlockStatement 

+

18364 

+

18365 def accept(self, visitor: ParseTreeVisitor): 

+

18366 if hasattr(visitor, "visitRule_SequentialBlockStatement"): 

+

18367 return visitor.visitRule_SequentialBlockStatement(self) 

+

18368 else: 

+

18369 return visitor.visitChildren(self) 

+

18370 

+

18371 def rule_SequentialBlockStatement(self): 

+

18372 

+

18373 localctx = VHDLParser.Rule_SequentialBlockStatementContext(self, self._ctx, self.state) 

+

18374 self.enterRule(localctx, 442, self.RULE_rule_SequentialBlockStatement) 

+

18375 self._la = 0 # Token type 

+

18376 try: 

+

18377 self.enterOuterAlt(localctx, 1) 

+

18378 self.state = 2690 

+

18379 self._errHandler.sync(self) 

+

18380 _la = self._input.LA(1) 

+

18381 if _la == 163: 

+

18382 self.state = 2688 

+

18383 localctx.label = self.match(VHDLParser.LIT_IDENTIFIER) 

+

18384 self.state = 2689 

+

18385 self.match(VHDLParser.TOK_COLON) 

+

18386 

+

18387 self.state = 2692 

+

18388 self.match(VHDLParser.KW_BLOCK) 

+

18389 self.state = 2694 

+

18390 self._errHandler.sync(self) 

+

18391 _la = self._input.LA(1) 

+

18392 if _la == 50: 

+

18393 self.state = 2693 

+

18394 self.match(VHDLParser.KW_IS) 

+

18395 

+

18396 self.state = 2699 

+

18397 self._errHandler.sync(self) 

+

18398 _la = self._input.LA(1) 

+

18399 while (((_la) & ~0x3f) == 0 and ((1 << _la) & 88579439100416) != 0) or ( 

+

18400 (((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & 842086220065) != 0): 

+

18401 self.state = 2696 

+

18402 localctx._rule_ProcessDeclarativeItem = self.rule_ProcessDeclarativeItem() 

+

18403 localctx.declaredItems.append(localctx._rule_ProcessDeclarativeItem) 

+

18404 self.state = 2701 

+

18405 self._errHandler.sync(self) 

+

18406 _la = self._input.LA(1) 

+

18407 

+

18408 self.state = 2702 

+

18409 self.match(VHDLParser.KW_BEGIN) 

+

18410 self.state = 2706 

+

18411 self._errHandler.sync(self) 

+

18412 _la = self._input.LA(1) 

+

18413 while (((_la) & ~0x3f) == 0 and ((1 << _la) & -8052400777563193344) != 0) or ( 

+

18414 (((_la - 85)) & ~0x3f) == 0 and ((1 << (_la - 85)) & 4899916406390259715) != 0) or ( 

+

18415 (((_la - 161)) & ~0x3f) == 0 and ((1 << (_la - 161)) & 7) != 0): 

+

18416 self.state = 2703 

+

18417 localctx._rule_SequentialStatement = self.rule_SequentialStatement() 

+

18418 localctx.statements.append(localctx._rule_SequentialStatement) 

+

18419 self.state = 2708 

+

18420 self._errHandler.sync(self) 

+

18421 _la = self._input.LA(1) 

+

18422 

+

18423 self.state = 2709 

+

18424 self.match(VHDLParser.KW_END) 

+

18425 self.state = 2711 

+

18426 self._errHandler.sync(self) 

+

18427 _la = self._input.LA(1) 

+

18428 if _la == 18: 

+

18429 self.state = 2710 

+

18430 self.match(VHDLParser.KW_BLOCK) 

+

18431 

+

18432 self.state = 2714 

+

18433 self._errHandler.sync(self) 

+

18434 _la = self._input.LA(1) 

+

18435 if _la == 163: 

+

18436 self.state = 2713 

+

18437 localctx.label2 = self.match(VHDLParser.LIT_IDENTIFIER) 

+

18438 

+

18439 self.state = 2716 

+

18440 self.match(VHDLParser.TOK_SEMICOL) 

+

18441 except RecognitionException as re: 

+

18442 localctx.exception = re 

+

18443 self._errHandler.reportError(self, re) 

+

18444 self._errHandler.recover(self, re) 

+

18445 finally: 

+

18446 self.exitRule() 

+

18447 return localctx 

+

18448 

+

18449 class Rule_SequentialStatementContext(ParserRuleContext): 

+

18450 __slots__ = 'parser' 

+

18451 

+

18452 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

18453 super().__init__(parent, invokingState) 

+

18454 self.parser = parser 

+

18455 

+

18456 def rule_WaitStatement(self): 

+

18457 return self.getTypedRuleContext(VHDLParser.Rule_WaitStatementContext, 0) 

+

18458 

+

18459 def rule_AssertionStatement(self): 

+

18460 return self.getTypedRuleContext(VHDLParser.Rule_AssertionStatementContext, 0) 

+

18461 

+

18462 def rule_ReportStatement(self): 

+

18463 return self.getTypedRuleContext(VHDLParser.Rule_ReportStatementContext, 0) 

+

18464 

+

18465 def rule_SignalAssignmentStatement(self): 

+

18466 return self.getTypedRuleContext(VHDLParser.Rule_SignalAssignmentStatementContext, 0) 

+

18467 

+

18468 def rule_VariableAssignmentStatement(self): 

+

18469 return self.getTypedRuleContext(VHDLParser.Rule_VariableAssignmentStatementContext, 0) 

+

18470 

+

18471 def rule_ProcedureCallStatement(self): 

+

18472 return self.getTypedRuleContext(VHDLParser.Rule_ProcedureCallStatementContext, 0) 

+

18473 

+

18474 def rule_IfStatement(self): 

+

18475 return self.getTypedRuleContext(VHDLParser.Rule_IfStatementContext, 0) 

+

18476 

+

18477 def rule_CaseStatement(self): 

+

18478 return self.getTypedRuleContext(VHDLParser.Rule_CaseStatementContext, 0) 

+

18479 

+

18480 def rule_LoopStatement(self): 

+

18481 return self.getTypedRuleContext(VHDLParser.Rule_LoopStatementContext, 0) 

+

18482 

+

18483 def rule_NextStatement(self): 

+

18484 return self.getTypedRuleContext(VHDLParser.Rule_NextStatementContext, 0) 

+

18485 

+

18486 def rule_ExitStatement(self): 

+

18487 return self.getTypedRuleContext(VHDLParser.Rule_ExitStatementContext, 0) 

+

18488 

+

18489 def rule_ReturnStatement(self): 

+

18490 return self.getTypedRuleContext(VHDLParser.Rule_ReturnStatementContext, 0) 

+

18491 

+

18492 def rule_NullStatement(self): 

+

18493 return self.getTypedRuleContext(VHDLParser.Rule_NullStatementContext, 0) 

+

18494 

+

18495 def rule_SequentialBlockStatement(self): 

+

18496 return self.getTypedRuleContext(VHDLParser.Rule_SequentialBlockStatementContext, 0) 

+

18497 

+

18498 def getRuleIndex(self): 

+

18499 return VHDLParser.RULE_rule_SequentialStatement 

+

18500 

+

18501 def accept(self, visitor: ParseTreeVisitor): 

+

18502 if hasattr(visitor, "visitRule_SequentialStatement"): 

+

18503 return visitor.visitRule_SequentialStatement(self) 

+

18504 else: 

+

18505 return visitor.visitChildren(self) 

+

18506 

+

18507 def rule_SequentialStatement(self): 

+

18508 

+

18509 localctx = VHDLParser.Rule_SequentialStatementContext(self, self._ctx, self.state) 

+

18510 self.enterRule(localctx, 444, self.RULE_rule_SequentialStatement) 

+

18511 try: 

+

18512 self.state = 2732 

+

18513 self._errHandler.sync(self) 

+

18514 la_ = self._interp.adaptivePredict(self._input, 305, self._ctx) 

+

18515 if la_ == 1: 

+

18516 self.enterOuterAlt(localctx, 1) 

+

18517 self.state = 2718 

+

18518 self.rule_WaitStatement() 

+

18519 pass 

+

18520 

+

18521 elif la_ == 2: 

+

18522 self.enterOuterAlt(localctx, 2) 

+

18523 self.state = 2719 

+

18524 self.rule_AssertionStatement() 

+

18525 pass 

+

18526 

+

18527 elif la_ == 3: 

+

18528 self.enterOuterAlt(localctx, 3) 

+

18529 self.state = 2720 

+

18530 self.rule_ReportStatement() 

+

18531 pass 

+

18532 

+

18533 elif la_ == 4: 

+

18534 self.enterOuterAlt(localctx, 4) 

+

18535 self.state = 2721 

+

18536 self.rule_SignalAssignmentStatement() 

+

18537 pass 

+

18538 

+

18539 elif la_ == 5: 

+

18540 self.enterOuterAlt(localctx, 5) 

+

18541 self.state = 2722 

+

18542 self.rule_VariableAssignmentStatement() 

+

18543 pass 

+

18544 

+

18545 elif la_ == 6: 

+

18546 self.enterOuterAlt(localctx, 6) 

+

18547 self.state = 2723 

+

18548 self.rule_ProcedureCallStatement() 

+

18549 pass 

+

18550 

+

18551 elif la_ == 7: 

+

18552 self.enterOuterAlt(localctx, 7) 

+

18553 self.state = 2724 

+

18554 self.rule_IfStatement() 

+

18555 pass 

+

18556 

+

18557 elif la_ == 8: 

+

18558 self.enterOuterAlt(localctx, 8) 

+

18559 self.state = 2725 

+

18560 self.rule_CaseStatement() 

+

18561 pass 

+

18562 

+

18563 elif la_ == 9: 

+

18564 self.enterOuterAlt(localctx, 9) 

+

18565 self.state = 2726 

+

18566 self.rule_LoopStatement() 

+

18567 pass 

+

18568 

+

18569 elif la_ == 10: 

+

18570 self.enterOuterAlt(localctx, 10) 

+

18571 self.state = 2727 

+

18572 self.rule_NextStatement() 

+

18573 pass 

+

18574 

+

18575 elif la_ == 11: 

+

18576 self.enterOuterAlt(localctx, 11) 

+

18577 self.state = 2728 

+

18578 self.rule_ExitStatement() 

+

18579 pass 

+

18580 

+

18581 elif la_ == 12: 

+

18582 self.enterOuterAlt(localctx, 12) 

+

18583 self.state = 2729 

+

18584 self.rule_ReturnStatement() 

+

18585 pass 

+

18586 

+

18587 elif la_ == 13: 

+

18588 self.enterOuterAlt(localctx, 13) 

+

18589 self.state = 2730 

+

18590 self.rule_NullStatement() 

+

18591 pass 

+

18592 

+

18593 elif la_ == 14: 

+

18594 self.enterOuterAlt(localctx, 14) 

+

18595 self.state = 2731 

+

18596 self.rule_SequentialBlockStatement() 

+

18597 pass 

+

18598 

+

18599 

+

18600 except RecognitionException as re: 

+

18601 localctx.exception = re 

+

18602 self._errHandler.reportError(self, re) 

+

18603 self._errHandler.recover(self, re) 

+

18604 finally: 

+

18605 self.exitRule() 

+

18606 return localctx 

+

18607 

+

18608 class Rule_SignalAssignmentStatementContext(ParserRuleContext): 

+

18609 __slots__ = 'parser' 

+

18610 

+

18611 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

18612 super().__init__(parent, invokingState) 

+

18613 self.parser = parser 

+

18614 self.label = None # Token 

+

18615 

+

18616 def rule_SimpleSignalAssignment(self): 

+

18617 return self.getTypedRuleContext(VHDLParser.Rule_SimpleSignalAssignmentContext, 0) 

+

18618 

+

18619 def rule_ConditionalSignalAssignment(self): 

+

18620 return self.getTypedRuleContext(VHDLParser.Rule_ConditionalSignalAssignmentContext, 0) 

+

18621 

+

18622 def rule_SelectedSignalAssignment(self): 

+

18623 return self.getTypedRuleContext(VHDLParser.Rule_SelectedSignalAssignmentContext, 0) 

+

18624 

+

18625 def TOK_COLON(self): 

+

18626 return self.getToken(VHDLParser.TOK_COLON, 0) 

+

18627 

+

18628 def LIT_IDENTIFIER(self): 

+

18629 return self.getToken(VHDLParser.LIT_IDENTIFIER, 0) 

+

18630 

+

18631 def getRuleIndex(self): 

+

18632 return VHDLParser.RULE_rule_SignalAssignmentStatement 

+

18633 

+

18634 def accept(self, visitor: ParseTreeVisitor): 

+

18635 if hasattr(visitor, "visitRule_SignalAssignmentStatement"): 

+

18636 return visitor.visitRule_SignalAssignmentStatement(self) 

+

18637 else: 

+

18638 return visitor.visitChildren(self) 

+

18639 

+

18640 def rule_SignalAssignmentStatement(self): 

+

18641 

+

18642 localctx = VHDLParser.Rule_SignalAssignmentStatementContext(self, self._ctx, self.state) 

+

18643 self.enterRule(localctx, 446, self.RULE_rule_SignalAssignmentStatement) 

+

18644 try: 

+

18645 self.enterOuterAlt(localctx, 1) 

+

18646 self.state = 2736 

+

18647 self._errHandler.sync(self) 

+

18648 la_ = self._interp.adaptivePredict(self._input, 306, self._ctx) 

+

18649 if la_ == 1: 

+

18650 self.state = 2734 

+

18651 localctx.label = self.match(VHDLParser.LIT_IDENTIFIER) 

+

18652 self.state = 2735 

+

18653 self.match(VHDLParser.TOK_COLON) 

+

18654 

+

18655 self.state = 2741 

+

18656 self._errHandler.sync(self) 

+

18657 la_ = self._interp.adaptivePredict(self._input, 307, self._ctx) 

+

18658 if la_ == 1: 

+

18659 self.state = 2738 

+

18660 self.rule_SimpleSignalAssignment() 

+

18661 pass 

+

18662 

+

18663 elif la_ == 2: 

+

18664 self.state = 2739 

+

18665 self.rule_ConditionalSignalAssignment() 

+

18666 pass 

+

18667 

+

18668 elif la_ == 3: 

+

18669 self.state = 2740 

+

18670 self.rule_SelectedSignalAssignment() 

+

18671 pass 

+

18672 

+

18673 

+

18674 except RecognitionException as re: 

+

18675 localctx.exception = re 

+

18676 self._errHandler.reportError(self, re) 

+

18677 self._errHandler.recover(self, re) 

+

18678 finally: 

+

18679 self.exitRule() 

+

18680 return localctx 

+

18681 

+

18682 class Rule_SignalDeclarationContext(ParserRuleContext): 

+

18683 __slots__ = 'parser' 

+

18684 

+

18685 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

18686 super().__init__(parent, invokingState) 

+

18687 self.parser = parser 

+

18688 self.names = None # Rule_IdentifierListContext 

+

18689 self.subtypeIndication = None # Rule_SubtypeIndicationContext 

+

18690 self.signalKind = None # Token 

+

18691 self.expression = None # Rule_ExpressionContext 

+

18692 

+

18693 def KW_SIGNAL(self): 

+

18694 return self.getToken(VHDLParser.KW_SIGNAL, 0) 

+

18695 

+

18696 def TOK_COLON(self): 

+

18697 return self.getToken(VHDLParser.TOK_COLON, 0) 

+

18698 

+

18699 def TOK_SEMICOL(self): 

+

18700 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

18701 

+

18702 def rule_IdentifierList(self): 

+

18703 return self.getTypedRuleContext(VHDLParser.Rule_IdentifierListContext, 0) 

+

18704 

+

18705 def rule_SubtypeIndication(self): 

+

18706 return self.getTypedRuleContext(VHDLParser.Rule_SubtypeIndicationContext, 0) 

+

18707 

+

18708 def TOK_VAR_ASSIGN(self): 

+

18709 return self.getToken(VHDLParser.TOK_VAR_ASSIGN, 0) 

+

18710 

+

18711 def rule_Expression(self): 

+

18712 return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0) 

+

18713 

+

18714 def KW_REGISTER(self): 

+

18715 return self.getToken(VHDLParser.KW_REGISTER, 0) 

+

18716 

+

18717 def KW_BUS(self): 

+

18718 return self.getToken(VHDLParser.KW_BUS, 0) 

+

18719 

+

18720 def getRuleIndex(self): 

+

18721 return VHDLParser.RULE_rule_SignalDeclaration 

+

18722 

+

18723 def accept(self, visitor: ParseTreeVisitor): 

+

18724 if hasattr(visitor, "visitRule_SignalDeclaration"): 

+

18725 return visitor.visitRule_SignalDeclaration(self) 

+

18726 else: 

+

18727 return visitor.visitChildren(self) 

+

18728 

+

18729 def rule_SignalDeclaration(self): 

+

18730 

+

18731 localctx = VHDLParser.Rule_SignalDeclarationContext(self, self._ctx, self.state) 

+

18732 self.enterRule(localctx, 448, self.RULE_rule_SignalDeclaration) 

+

18733 self._la = 0 # Token type 

+

18734 try: 

+

18735 self.enterOuterAlt(localctx, 1) 

+

18736 self.state = 2743 

+

18737 self.match(VHDLParser.KW_SIGNAL) 

+

18738 self.state = 2744 

+

18739 localctx.names = self.rule_IdentifierList() 

+

18740 self.state = 2745 

+

18741 self.match(VHDLParser.TOK_COLON) 

+

18742 self.state = 2746 

+

18743 localctx.subtypeIndication = self.rule_SubtypeIndication() 

+

18744 self.state = 2748 

+

18745 self._errHandler.sync(self) 

+

18746 _la = self._input.LA(1) 

+

18747 if _la == 21 or _la == 81: 

+

18748 self.state = 2747 

+

18749 localctx.signalKind = self._input.LT(1) 

+

18750 _la = self._input.LA(1) 

+

18751 if not (_la == 21 or _la == 81): 

+

18752 localctx.signalKind = self._errHandler.recoverInline(self) 

+

18753 else: 

+

18754 self._errHandler.reportMatch(self) 

+

18755 self.consume() 

+

18756 

+

18757 self.state = 2752 

+

18758 self._errHandler.sync(self) 

+

18759 _la = self._input.LA(1) 

+

18760 if _la == 141: 

+

18761 self.state = 2750 

+

18762 self.match(VHDLParser.TOK_VAR_ASSIGN) 

+

18763 self.state = 2751 

+

18764 localctx.expression = self.rule_Expression(0) 

+

18765 

+

18766 self.state = 2754 

+

18767 self.match(VHDLParser.TOK_SEMICOL) 

+

18768 except RecognitionException as re: 

+

18769 localctx.exception = re 

+

18770 self._errHandler.reportError(self, re) 

+

18771 self._errHandler.recover(self, re) 

+

18772 finally: 

+

18773 self.exitRule() 

+

18774 return localctx 

+

18775 

+

18776 class Rule_SignalListContext(ParserRuleContext): 

+

18777 __slots__ = 'parser' 

+

18778 

+

18779 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

18780 super().__init__(parent, invokingState) 

+

18781 self.parser = parser 

+

18782 self._rule_Name = None # Rule_NameContext 

+

18783 self.names = list() # of Rule_NameContexts 

+

18784 self.others = None # Token 

+

18785 self.all_ = None # Token 

+

18786 

+

18787 def rule_Name(self, i: int = None): 

+

18788 if i is None: 

+

18789 return self.getTypedRuleContexts(VHDLParser.Rule_NameContext) 

+

18790 else: 

+

18791 return self.getTypedRuleContext(VHDLParser.Rule_NameContext, i) 

+

18792 

+

18793 def TOK_COMMA(self, i: int = None): 

+

18794 if i is None: 

+

18795 return self.getTokens(VHDLParser.TOK_COMMA) 

+

18796 else: 

+

18797 return self.getToken(VHDLParser.TOK_COMMA, i) 

+

18798 

+

18799 def KW_OTHERS(self): 

+

18800 return self.getToken(VHDLParser.KW_OTHERS, 0) 

+

18801 

+

18802 def KW_ALL(self): 

+

18803 return self.getToken(VHDLParser.KW_ALL, 0) 

+

18804 

+

18805 def getRuleIndex(self): 

+

18806 return VHDLParser.RULE_rule_SignalList 

+

18807 

+

18808 def accept(self, visitor: ParseTreeVisitor): 

+

18809 if hasattr(visitor, "visitRule_SignalList"): 

+

18810 return visitor.visitRule_SignalList(self) 

+

18811 else: 

+

18812 return visitor.visitChildren(self) 

+

18813 

+

18814 def rule_SignalList(self): 

+

18815 

+

18816 localctx = VHDLParser.Rule_SignalListContext(self, self._ctx, self.state) 

+

18817 self.enterRule(localctx, 450, self.RULE_rule_SignalList) 

+

18818 self._la = 0 # Token type 

+

18819 try: 

+

18820 self.state = 2766 

+

18821 self._errHandler.sync(self) 

+

18822 token = self._input.LA(1) 

+

18823 if token in [147, 161, 162, 163]: 

+

18824 self.enterOuterAlt(localctx, 1) 

+

18825 self.state = 2756 

+

18826 localctx._rule_Name = self.rule_Name(0) 

+

18827 localctx.names.append(localctx._rule_Name) 

+

18828 self.state = 2761 

+

18829 self._errHandler.sync(self) 

+

18830 _la = self._input.LA(1) 

+

18831 while _la == 151: 

+

18832 self.state = 2757 

+

18833 self.match(VHDLParser.TOK_COMMA) 

+

18834 self.state = 2758 

+

18835 localctx._rule_Name = self.rule_Name(0) 

+

18836 localctx.names.append(localctx._rule_Name) 

+

18837 self.state = 2763 

+

18838 self._errHandler.sync(self) 

+

18839 _la = self._input.LA(1) 

+

18840 

+

18841 pass 

+

18842 elif token in [68]: 

+

18843 self.enterOuterAlt(localctx, 2) 

+

18844 self.state = 2764 

+

18845 localctx.others = self.match(VHDLParser.KW_OTHERS) 

+

18846 pass 

+

18847 elif token in [10]: 

+

18848 self.enterOuterAlt(localctx, 3) 

+

18849 self.state = 2765 

+

18850 localctx.all_ = self.match(VHDLParser.KW_ALL) 

+

18851 pass 

+

18852 else: 

+

18853 raise NoViableAltException(self) 

+

18854 

+

18855 except RecognitionException as re: 

+

18856 localctx.exception = re 

+

18857 self._errHandler.reportError(self, re) 

+

18858 self._errHandler.recover(self, re) 

+

18859 finally: 

+

18860 self.exitRule() 

+

18861 return localctx 

+

18862 

+

18863 class Rule_SignatureContext(ParserRuleContext): 

+

18864 __slots__ = 'parser' 

+

18865 

+

18866 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

18867 super().__init__(parent, invokingState) 

+

18868 self.parser = parser 

+

18869 self._rule_Name = None # Rule_NameContext 

+

18870 self.names = list() # of Rule_NameContexts 

+

18871 self.returnName = None # Rule_NameContext 

+

18872 

+

18873 def TOK_LB(self): 

+

18874 return self.getToken(VHDLParser.TOK_LB, 0) 

+

18875 

+

18876 def TOK_RB(self): 

+

18877 return self.getToken(VHDLParser.TOK_RB, 0) 

+

18878 

+

18879 def KW_RETURN(self): 

+

18880 return self.getToken(VHDLParser.KW_RETURN, 0) 

+

18881 

+

18882 def rule_Name(self, i: int = None): 

+

18883 if i is None: 

+

18884 return self.getTypedRuleContexts(VHDLParser.Rule_NameContext) 

+

18885 else: 

+

18886 return self.getTypedRuleContext(VHDLParser.Rule_NameContext, i) 

+

18887 

+

18888 def TOK_COMMA(self, i: int = None): 

+

18889 if i is None: 

+

18890 return self.getTokens(VHDLParser.TOK_COMMA) 

+

18891 else: 

+

18892 return self.getToken(VHDLParser.TOK_COMMA, i) 

+

18893 

+

18894 def getRuleIndex(self): 

+

18895 return VHDLParser.RULE_rule_Signature 

+

18896 

+

18897 def accept(self, visitor: ParseTreeVisitor): 

+

18898 if hasattr(visitor, "visitRule_Signature"): 

+

18899 return visitor.visitRule_Signature(self) 

+

18900 else: 

+

18901 return visitor.visitChildren(self) 

+

18902 

+

18903 def rule_Signature(self): 

+

18904 

+

18905 localctx = VHDLParser.Rule_SignatureContext(self, self._ctx, self.state) 

+

18906 self.enterRule(localctx, 452, self.RULE_rule_Signature) 

+

18907 self._la = 0 # Token type 

+

18908 try: 

+

18909 self.enterOuterAlt(localctx, 1) 

+

18910 self.state = 2768 

+

18911 self.match(VHDLParser.TOK_LB) 

+

18912 self.state = 2777 

+

18913 self._errHandler.sync(self) 

+

18914 _la = self._input.LA(1) 

+

18915 if (((_la - 147)) & ~0x3f) == 0 and ((1 << (_la - 147)) & 114689) != 0: 

+

18916 self.state = 2769 

+

18917 localctx._rule_Name = self.rule_Name(0) 

+

18918 localctx.names.append(localctx._rule_Name) 

+

18919 self.state = 2774 

+

18920 self._errHandler.sync(self) 

+

18921 _la = self._input.LA(1) 

+

18922 while _la == 151: 

+

18923 self.state = 2770 

+

18924 self.match(VHDLParser.TOK_COMMA) 

+

18925 self.state = 2771 

+

18926 localctx._rule_Name = self.rule_Name(0) 

+

18927 localctx.names.append(localctx._rule_Name) 

+

18928 self.state = 2776 

+

18929 self._errHandler.sync(self) 

+

18930 _la = self._input.LA(1) 

+

18931 

+

18932 self.state = 2781 

+

18933 self._errHandler.sync(self) 

+

18934 _la = self._input.LA(1) 

+

18935 if _la == 86: 

+

18936 self.state = 2779 

+

18937 self.match(VHDLParser.KW_RETURN) 

+

18938 self.state = 2780 

+

18939 localctx.returnName = self.rule_Name(0) 

+

18940 

+

18941 self.state = 2783 

+

18942 self.match(VHDLParser.TOK_RB) 

+

18943 except RecognitionException as re: 

+

18944 localctx.exception = re 

+

18945 self._errHandler.reportError(self, re) 

+

18946 self._errHandler.recover(self, re) 

+

18947 finally: 

+

18948 self.exitRule() 

+

18949 return localctx 

+

18950 

+

18951 class Rule_SimpleConfigurationSpecificationContext(ParserRuleContext): 

+

18952 __slots__ = 'parser' 

+

18953 

+

18954 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

18955 super().__init__(parent, invokingState) 

+

18956 self.parser = parser 

+

18957 

+

18958 def KW_FOR(self, i: int = None): 

+

18959 if i is None: 

+

18960 return self.getTokens(VHDLParser.KW_FOR) 

+

18961 else: 

+

18962 return self.getToken(VHDLParser.KW_FOR, i) 

+

18963 

+

18964 def rule_ComponentSpecification(self): 

+

18965 return self.getTypedRuleContext(VHDLParser.Rule_ComponentSpecificationContext, 0) 

+

18966 

+

18967 def rule_BindingIndication(self): 

+

18968 return self.getTypedRuleContext(VHDLParser.Rule_BindingIndicationContext, 0) 

+

18969 

+

18970 def TOK_SEMICOL(self, i: int = None): 

+

18971 if i is None: 

+

18972 return self.getTokens(VHDLParser.TOK_SEMICOL) 

+

18973 else: 

+

18974 return self.getToken(VHDLParser.TOK_SEMICOL, i) 

+

18975 

+

18976 def KW_END(self): 

+

18977 return self.getToken(VHDLParser.KW_END, 0) 

+

18978 

+

18979 def getRuleIndex(self): 

+

18980 return VHDLParser.RULE_rule_SimpleConfigurationSpecification 

+

18981 

+

18982 def accept(self, visitor: ParseTreeVisitor): 

+

18983 if hasattr(visitor, "visitRule_SimpleConfigurationSpecification"): 

+

18984 return visitor.visitRule_SimpleConfigurationSpecification(self) 

+

18985 else: 

+

18986 return visitor.visitChildren(self) 

+

18987 

+

18988 def rule_SimpleConfigurationSpecification(self): 

+

18989 

+

18990 localctx = VHDLParser.Rule_SimpleConfigurationSpecificationContext(self, self._ctx, self.state) 

+

18991 self.enterRule(localctx, 454, self.RULE_rule_SimpleConfigurationSpecification) 

+

18992 self._la = 0 # Token type 

+

18993 try: 

+

18994 self.enterOuterAlt(localctx, 1) 

+

18995 self.state = 2785 

+

18996 self.match(VHDLParser.KW_FOR) 

+

18997 self.state = 2786 

+

18998 self.rule_ComponentSpecification() 

+

18999 self.state = 2787 

+

19000 self.rule_BindingIndication() 

+

19001 self.state = 2788 

+

19002 self.match(VHDLParser.TOK_SEMICOL) 

+

19003 self.state = 2792 

+

19004 self._errHandler.sync(self) 

+

19005 _la = self._input.LA(1) 

+

19006 if _la == 33: 

+

19007 self.state = 2789 

+

19008 self.match(VHDLParser.KW_END) 

+

19009 self.state = 2790 

+

19010 self.match(VHDLParser.KW_FOR) 

+

19011 self.state = 2791 

+

19012 self.match(VHDLParser.TOK_SEMICOL) 

+

19013 

+

19014 

+

19015 except RecognitionException as re: 

+

19016 localctx.exception = re 

+

19017 self._errHandler.reportError(self, re) 

+

19018 self._errHandler.recover(self, re) 

+

19019 finally: 

+

19020 self.exitRule() 

+

19021 return localctx 

+

19022 

+

19023 class Rule_SimpleForceAssignmentContext(ParserRuleContext): 

+

19024 __slots__ = 'parser' 

+

19025 

+

19026 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

19027 super().__init__(parent, invokingState) 

+

19028 self.parser = parser 

+

19029 self.forceMode = None # Token 

+

19030 

+

19031 def rule_Target(self): 

+

19032 return self.getTypedRuleContext(VHDLParser.Rule_TargetContext, 0) 

+

19033 

+

19034 def TOK_SIG_ASSIGN(self): 

+

19035 return self.getToken(VHDLParser.TOK_SIG_ASSIGN, 0) 

+

19036 

+

19037 def KW_FORCE(self): 

+

19038 return self.getToken(VHDLParser.KW_FORCE, 0) 

+

19039 

+

19040 def rule_ConditionalOrUnaffectedExpression(self): 

+

19041 return self.getTypedRuleContext(VHDLParser.Rule_ConditionalOrUnaffectedExpressionContext, 0) 

+

19042 

+

19043 def TOK_SEMICOL(self): 

+

19044 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

19045 

+

19046 def KW_IN(self): 

+

19047 return self.getToken(VHDLParser.KW_IN, 0) 

+

19048 

+

19049 def KW_OUT(self): 

+

19050 return self.getToken(VHDLParser.KW_OUT, 0) 

+

19051 

+

19052 def getRuleIndex(self): 

+

19053 return VHDLParser.RULE_rule_SimpleForceAssignment 

+

19054 

+

19055 def accept(self, visitor: ParseTreeVisitor): 

+

19056 if hasattr(visitor, "visitRule_SimpleForceAssignment"): 

+

19057 return visitor.visitRule_SimpleForceAssignment(self) 

+

19058 else: 

+

19059 return visitor.visitChildren(self) 

+

19060 

+

19061 def rule_SimpleForceAssignment(self): 

+

19062 

+

19063 localctx = VHDLParser.Rule_SimpleForceAssignmentContext(self, self._ctx, self.state) 

+

19064 self.enterRule(localctx, 456, self.RULE_rule_SimpleForceAssignment) 

+

19065 self._la = 0 # Token type 

+

19066 try: 

+

19067 self.enterOuterAlt(localctx, 1) 

+

19068 self.state = 2794 

+

19069 self.rule_Target() 

+

19070 self.state = 2795 

+

19071 self.match(VHDLParser.TOK_SIG_ASSIGN) 

+

19072 self.state = 2796 

+

19073 self.match(VHDLParser.KW_FORCE) 

+

19074 self.state = 2797 

+

19075 localctx.forceMode = self._input.LT(1) 

+

19076 _la = self._input.LA(1) 

+

19077 if not (_la == 47 or _la == 69): 

+

19078 localctx.forceMode = self._errHandler.recoverInline(self) 

+

19079 else: 

+

19080 self._errHandler.reportMatch(self) 

+

19081 self.consume() 

+

19082 self.state = 2798 

+

19083 self.rule_ConditionalOrUnaffectedExpression() 

+

19084 self.state = 2799 

+

19085 self.match(VHDLParser.TOK_SEMICOL) 

+

19086 except RecognitionException as re: 

+

19087 localctx.exception = re 

+

19088 self._errHandler.reportError(self, re) 

+

19089 self._errHandler.recover(self, re) 

+

19090 finally: 

+

19091 self.exitRule() 

+

19092 return localctx 

+

19093 

+

19094 class Rule_SimpleModeIndicationContext(ParserRuleContext): 

+

19095 __slots__ = 'parser' 

+

19096 

+

19097 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

19098 super().__init__(parent, invokingState) 

+

19099 self.parser = parser 

+

19100 

+

19101 def rule_InterfaceTypeIndication(self): 

+

19102 return self.getTypedRuleContext(VHDLParser.Rule_InterfaceTypeIndicationContext, 0) 

+

19103 

+

19104 def rule_Mode(self): 

+

19105 return self.getTypedRuleContext(VHDLParser.Rule_ModeContext, 0) 

+

19106 

+

19107 def KW_BUS(self): 

+

19108 return self.getToken(VHDLParser.KW_BUS, 0) 

+

19109 

+

19110 def TOK_VAR_ASSIGN(self): 

+

19111 return self.getToken(VHDLParser.TOK_VAR_ASSIGN, 0) 

+

19112 

+

19113 def rule_ConditionalExpression(self): 

+

19114 return self.getTypedRuleContext(VHDLParser.Rule_ConditionalExpressionContext, 0) 

+

19115 

+

19116 def getRuleIndex(self): 

+

19117 return VHDLParser.RULE_rule_SimpleModeIndication 

+

19118 

+

19119 def accept(self, visitor: ParseTreeVisitor): 

+

19120 if hasattr(visitor, "visitRule_SimpleModeIndication"): 

+

19121 return visitor.visitRule_SimpleModeIndication(self) 

+

19122 else: 

+

19123 return visitor.visitChildren(self) 

+

19124 

+

19125 def rule_SimpleModeIndication(self): 

+

19126 

+

19127 localctx = VHDLParser.Rule_SimpleModeIndicationContext(self, self._ctx, self.state) 

+

19128 self.enterRule(localctx, 458, self.RULE_rule_SimpleModeIndication) 

+

19129 self._la = 0 # Token type 

+

19130 try: 

+

19131 self.enterOuterAlt(localctx, 1) 

+

19132 self.state = 2802 

+

19133 self._errHandler.sync(self) 

+

19134 _la = self._input.LA(1) 

+

19135 if (((_la - 20)) & ~0x3f) == 0 and ((1 << (_la - 20)) & 562959214444545) != 0: 

+

19136 self.state = 2801 

+

19137 self.rule_Mode() 

+

19138 

+

19139 self.state = 2804 

+

19140 self.rule_InterfaceTypeIndication() 

+

19141 self.state = 2806 

+

19142 self._errHandler.sync(self) 

+

19143 _la = self._input.LA(1) 

+

19144 if _la == 21: 

+

19145 self.state = 2805 

+

19146 self.match(VHDLParser.KW_BUS) 

+

19147 

+

19148 self.state = 2810 

+

19149 self._errHandler.sync(self) 

+

19150 _la = self._input.LA(1) 

+

19151 if _la == 141: 

+

19152 self.state = 2808 

+

19153 self.match(VHDLParser.TOK_VAR_ASSIGN) 

+

19154 self.state = 2809 

+

19155 self.rule_ConditionalExpression() 

+

19156 

+

19157 

+

19158 except RecognitionException as re: 

+

19159 localctx.exception = re 

+

19160 self._errHandler.reportError(self, re) 

+

19161 self._errHandler.recover(self, re) 

+

19162 finally: 

+

19163 self.exitRule() 

+

19164 return localctx 

+

19165 

+

19166 class Rule_SimpleRangeContext(ParserRuleContext): 

+

19167 __slots__ = 'parser' 

+

19168 

+

19169 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

19170 super().__init__(parent, invokingState) 

+

19171 self.parser = parser 

+

19172 self.leftBound = None # Rule_ExpressionContext 

+

19173 self.direction = None # Rule_DirectionContext 

+

19174 self.rightBound = None # Rule_ExpressionContext 

+

19175 

+

19176 def rule_Expression(self, i: int = None): 

+

19177 if i is None: 

+

19178 return self.getTypedRuleContexts(VHDLParser.Rule_ExpressionContext) 

+

19179 else: 

+

19180 return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, i) 

+

19181 

+

19182 def rule_Direction(self): 

+

19183 return self.getTypedRuleContext(VHDLParser.Rule_DirectionContext, 0) 

+

19184 

+

19185 def getRuleIndex(self): 

+

19186 return VHDLParser.RULE_rule_SimpleRange 

+

19187 

+

19188 def accept(self, visitor: ParseTreeVisitor): 

+

19189 if hasattr(visitor, "visitRule_SimpleRange"): 

+

19190 return visitor.visitRule_SimpleRange(self) 

+

19191 else: 

+

19192 return visitor.visitChildren(self) 

+

19193 

+

19194 def rule_SimpleRange(self): 

+

19195 

+

19196 localctx = VHDLParser.Rule_SimpleRangeContext(self, self._ctx, self.state) 

+

19197 self.enterRule(localctx, 460, self.RULE_rule_SimpleRange) 

+

19198 try: 

+

19199 self.enterOuterAlt(localctx, 1) 

+

19200 self.state = 2812 

+

19201 localctx.leftBound = self.rule_Expression(0) 

+

19202 self.state = 2813 

+

19203 localctx.direction = self.rule_Direction() 

+

19204 self.state = 2814 

+

19205 localctx.rightBound = self.rule_Expression(0) 

+

19206 except RecognitionException as re: 

+

19207 localctx.exception = re 

+

19208 self._errHandler.reportError(self, re) 

+

19209 self._errHandler.recover(self, re) 

+

19210 finally: 

+

19211 self.exitRule() 

+

19212 return localctx 

+

19213 

+

19214 class Rule_SimpleReleaseAssignmentContext(ParserRuleContext): 

+

19215 __slots__ = 'parser' 

+

19216 

+

19217 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

19218 super().__init__(parent, invokingState) 

+

19219 self.parser = parser 

+

19220 self.forceMode = None # Token 

+

19221 

+

19222 def rule_Target(self): 

+

19223 return self.getTypedRuleContext(VHDLParser.Rule_TargetContext, 0) 

+

19224 

+

19225 def TOK_SIG_ASSIGN(self): 

+

19226 return self.getToken(VHDLParser.TOK_SIG_ASSIGN, 0) 

+

19227 

+

19228 def TOK_SEMICOL(self): 

+

19229 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

19230 

+

19231 def KW_IN(self): 

+

19232 return self.getToken(VHDLParser.KW_IN, 0) 

+

19233 

+

19234 def KW_OUT(self): 

+

19235 return self.getToken(VHDLParser.KW_OUT, 0) 

+

19236 

+

19237 def getRuleIndex(self): 

+

19238 return VHDLParser.RULE_rule_SimpleReleaseAssignment 

+

19239 

+

19240 def accept(self, visitor: ParseTreeVisitor): 

+

19241 if hasattr(visitor, "visitRule_SimpleReleaseAssignment"): 

+

19242 return visitor.visitRule_SimpleReleaseAssignment(self) 

+

19243 else: 

+

19244 return visitor.visitChildren(self) 

+

19245 

+

19246 def rule_SimpleReleaseAssignment(self): 

+

19247 

+

19248 localctx = VHDLParser.Rule_SimpleReleaseAssignmentContext(self, self._ctx, self.state) 

+

19249 self.enterRule(localctx, 462, self.RULE_rule_SimpleReleaseAssignment) 

+

19250 self._la = 0 # Token type 

+

19251 try: 

+

19252 self.enterOuterAlt(localctx, 1) 

+

19253 self.state = 2816 

+

19254 self.rule_Target() 

+

19255 self.state = 2817 

+

19256 self.match(VHDLParser.TOK_SIG_ASSIGN) 

+

19257 self.state = 2818 

+

19258 localctx.forceMode = self._input.LT(1) 

+

19259 _la = self._input.LA(1) 

+

19260 if not (_la == 47 or _la == 69): 

+

19261 localctx.forceMode = self._errHandler.recoverInline(self) 

+

19262 else: 

+

19263 self._errHandler.reportMatch(self) 

+

19264 self.consume() 

+

19265 self.state = 2819 

+

19266 self.match(VHDLParser.TOK_SEMICOL) 

+

19267 except RecognitionException as re: 

+

19268 localctx.exception = re 

+

19269 self._errHandler.reportError(self, re) 

+

19270 self._errHandler.recover(self, re) 

+

19271 finally: 

+

19272 self.exitRule() 

+

19273 return localctx 

+

19274 

+

19275 class Rule_SimpleSignalAssignmentContext(ParserRuleContext): 

+

19276 __slots__ = 'parser' 

+

19277 

+

19278 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

19279 super().__init__(parent, invokingState) 

+

19280 self.parser = parser 

+

19281 

+

19282 def rule_SimpleWaveformAssignment(self): 

+

19283 return self.getTypedRuleContext(VHDLParser.Rule_SimpleWaveformAssignmentContext, 0) 

+

19284 

+

19285 def rule_SimpleForceAssignment(self): 

+

19286 return self.getTypedRuleContext(VHDLParser.Rule_SimpleForceAssignmentContext, 0) 

+

19287 

+

19288 def rule_SimpleReleaseAssignment(self): 

+

19289 return self.getTypedRuleContext(VHDLParser.Rule_SimpleReleaseAssignmentContext, 0) 

+

19290 

+

19291 def getRuleIndex(self): 

+

19292 return VHDLParser.RULE_rule_SimpleSignalAssignment 

+

19293 

+

19294 def accept(self, visitor: ParseTreeVisitor): 

+

19295 if hasattr(visitor, "visitRule_SimpleSignalAssignment"): 

+

19296 return visitor.visitRule_SimpleSignalAssignment(self) 

+

19297 else: 

+

19298 return visitor.visitChildren(self) 

+

19299 

+

19300 def rule_SimpleSignalAssignment(self): 

+

19301 

+

19302 localctx = VHDLParser.Rule_SimpleSignalAssignmentContext(self, self._ctx, self.state) 

+

19303 self.enterRule(localctx, 464, self.RULE_rule_SimpleSignalAssignment) 

+

19304 try: 

+

19305 self.state = 2824 

+

19306 self._errHandler.sync(self) 

+

19307 la_ = self._interp.adaptivePredict(self._input, 319, self._ctx) 

+

19308 if la_ == 1: 

+

19309 self.enterOuterAlt(localctx, 1) 

+

19310 self.state = 2821 

+

19311 self.rule_SimpleWaveformAssignment() 

+

19312 pass 

+

19313 

+

19314 elif la_ == 2: 

+

19315 self.enterOuterAlt(localctx, 2) 

+

19316 self.state = 2822 

+

19317 self.rule_SimpleForceAssignment() 

+

19318 pass 

+

19319 

+

19320 elif la_ == 3: 

+

19321 self.enterOuterAlt(localctx, 3) 

+

19322 self.state = 2823 

+

19323 self.rule_SimpleReleaseAssignment() 

+

19324 pass 

+

19325 

+

19326 

+

19327 except RecognitionException as re: 

+

19328 localctx.exception = re 

+

19329 self._errHandler.reportError(self, re) 

+

19330 self._errHandler.recover(self, re) 

+

19331 finally: 

+

19332 self.exitRule() 

+

19333 return localctx 

+

19334 

+

19335 class Rule_SimpleWaveformAssignmentContext(ParserRuleContext): 

+

19336 __slots__ = 'parser' 

+

19337 

+

19338 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

19339 super().__init__(parent, invokingState) 

+

19340 self.parser = parser 

+

19341 

+

19342 def rule_Target(self): 

+

19343 return self.getTypedRuleContext(VHDLParser.Rule_TargetContext, 0) 

+

19344 

+

19345 def TOK_SIG_ASSIGN(self): 

+

19346 return self.getToken(VHDLParser.TOK_SIG_ASSIGN, 0) 

+

19347 

+

19348 def rule_Waveform(self): 

+

19349 return self.getTypedRuleContext(VHDLParser.Rule_WaveformContext, 0) 

+

19350 

+

19351 def TOK_SEMICOL(self): 

+

19352 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

19353 

+

19354 def rule_DelayMechanism(self): 

+

19355 return self.getTypedRuleContext(VHDLParser.Rule_DelayMechanismContext, 0) 

+

19356 

+

19357 def getRuleIndex(self): 

+

19358 return VHDLParser.RULE_rule_SimpleWaveformAssignment 

+

19359 

+

19360 def accept(self, visitor: ParseTreeVisitor): 

+

19361 if hasattr(visitor, "visitRule_SimpleWaveformAssignment"): 

+

19362 return visitor.visitRule_SimpleWaveformAssignment(self) 

+

19363 else: 

+

19364 return visitor.visitChildren(self) 

+

19365 

+

19366 def rule_SimpleWaveformAssignment(self): 

+

19367 

+

19368 localctx = VHDLParser.Rule_SimpleWaveformAssignmentContext(self, self._ctx, self.state) 

+

19369 self.enterRule(localctx, 466, self.RULE_rule_SimpleWaveformAssignment) 

+

19370 self._la = 0 # Token type 

+

19371 try: 

+

19372 self.enterOuterAlt(localctx, 1) 

+

19373 self.state = 2826 

+

19374 self.rule_Target() 

+

19375 self.state = 2827 

+

19376 self.match(VHDLParser.TOK_SIG_ASSIGN) 

+

19377 self.state = 2829 

+

19378 self._errHandler.sync(self) 

+

19379 _la = self._input.LA(1) 

+

19380 if (((_la - 48)) & ~0x3f) == 0 and ((1 << (_la - 48)) & 36028814198833153) != 0: 

+

19381 self.state = 2828 

+

19382 self.rule_DelayMechanism() 

+

19383 

+

19384 self.state = 2831 

+

19385 self.rule_Waveform() 

+

19386 self.state = 2832 

+

19387 self.match(VHDLParser.TOK_SEMICOL) 

+

19388 except RecognitionException as re: 

+

19389 localctx.exception = re 

+

19390 self._errHandler.reportError(self, re) 

+

19391 self._errHandler.recover(self, re) 

+

19392 finally: 

+

19393 self.exitRule() 

+

19394 return localctx 

+

19395 

+

19396 class Rule_SimpleVariableAssignmentContext(ParserRuleContext): 

+

19397 __slots__ = 'parser' 

+

19398 

+

19399 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

19400 super().__init__(parent, invokingState) 

+

19401 self.parser = parser 

+

19402 

+

19403 def rule_Target(self): 

+

19404 return self.getTypedRuleContext(VHDLParser.Rule_TargetContext, 0) 

+

19405 

+

19406 def TOK_VAR_ASSIGN(self): 

+

19407 return self.getToken(VHDLParser.TOK_VAR_ASSIGN, 0) 

+

19408 

+

19409 def rule_ConditionalOrUnaffectedExpression(self): 

+

19410 return self.getTypedRuleContext(VHDLParser.Rule_ConditionalOrUnaffectedExpressionContext, 0) 

+

19411 

+

19412 def TOK_SEMICOL(self): 

+

19413 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

19414 

+

19415 def getRuleIndex(self): 

+

19416 return VHDLParser.RULE_rule_SimpleVariableAssignment 

+

19417 

+

19418 def accept(self, visitor: ParseTreeVisitor): 

+

19419 if hasattr(visitor, "visitRule_SimpleVariableAssignment"): 

+

19420 return visitor.visitRule_SimpleVariableAssignment(self) 

+

19421 else: 

+

19422 return visitor.visitChildren(self) 

+

19423 

+

19424 def rule_SimpleVariableAssignment(self): 

+

19425 

+

19426 localctx = VHDLParser.Rule_SimpleVariableAssignmentContext(self, self._ctx, self.state) 

+

19427 self.enterRule(localctx, 468, self.RULE_rule_SimpleVariableAssignment) 

+

19428 try: 

+

19429 self.enterOuterAlt(localctx, 1) 

+

19430 self.state = 2834 

+

19431 self.rule_Target() 

+

19432 self.state = 2835 

+

19433 self.match(VHDLParser.TOK_VAR_ASSIGN) 

+

19434 self.state = 2836 

+

19435 self.rule_ConditionalOrUnaffectedExpression() 

+

19436 self.state = 2837 

+

19437 self.match(VHDLParser.TOK_SEMICOL) 

+

19438 except RecognitionException as re: 

+

19439 localctx.exception = re 

+

19440 self._errHandler.reportError(self, re) 

+

19441 self._errHandler.recover(self, re) 

+

19442 finally: 

+

19443 self.exitRule() 

+

19444 return localctx 

+

19445 

+

19446 class Rule_SubprogramBodyContext(ParserRuleContext): 

+

19447 __slots__ = 'parser' 

+

19448 

+

19449 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

19450 super().__init__(parent, invokingState) 

+

19451 self.parser = parser 

+

19452 self._rule_SubprogramDeclarativeItem = None # Rule_SubprogramDeclarativeItemContext 

+

19453 self.declaredItems = list() # of Rule_SubprogramDeclarativeItemContexts 

+

19454 self._rule_SequentialStatement = None # Rule_SequentialStatementContext 

+

19455 self.statements = list() # of Rule_SequentialStatementContexts 

+

19456 

+

19457 def rule_SubprogramSpecification(self): 

+

19458 return self.getTypedRuleContext(VHDLParser.Rule_SubprogramSpecificationContext, 0) 

+

19459 

+

19460 def KW_IS(self): 

+

19461 return self.getToken(VHDLParser.KW_IS, 0) 

+

19462 

+

19463 def KW_BEGIN(self): 

+

19464 return self.getToken(VHDLParser.KW_BEGIN, 0) 

+

19465 

+

19466 def KW_END(self): 

+

19467 return self.getToken(VHDLParser.KW_END, 0) 

+

19468 

+

19469 def TOK_SEMICOL(self): 

+

19470 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

19471 

+

19472 def rule_SubprogramKind(self): 

+

19473 return self.getTypedRuleContext(VHDLParser.Rule_SubprogramKindContext, 0) 

+

19474 

+

19475 def rule_Designator(self): 

+

19476 return self.getTypedRuleContext(VHDLParser.Rule_DesignatorContext, 0) 

+

19477 

+

19478 def rule_SubprogramDeclarativeItem(self, i: int = None): 

+

19479 if i is None: 

+

19480 return self.getTypedRuleContexts(VHDLParser.Rule_SubprogramDeclarativeItemContext) 

+

19481 else: 

+

19482 return self.getTypedRuleContext(VHDLParser.Rule_SubprogramDeclarativeItemContext, i) 

+

19483 

+

19484 def rule_SequentialStatement(self, i: int = None): 

+

19485 if i is None: 

+

19486 return self.getTypedRuleContexts(VHDLParser.Rule_SequentialStatementContext) 

+

19487 else: 

+

19488 return self.getTypedRuleContext(VHDLParser.Rule_SequentialStatementContext, i) 

+

19489 

+

19490 def getRuleIndex(self): 

+

19491 return VHDLParser.RULE_rule_SubprogramBody 

+

19492 

+

19493 def accept(self, visitor: ParseTreeVisitor): 

+

19494 if hasattr(visitor, "visitRule_SubprogramBody"): 

+

19495 return visitor.visitRule_SubprogramBody(self) 

+

19496 else: 

+

19497 return visitor.visitChildren(self) 

+

19498 

+

19499 def rule_SubprogramBody(self): 

+

19500 

+

19501 localctx = VHDLParser.Rule_SubprogramBodyContext(self, self._ctx, self.state) 

+

19502 self.enterRule(localctx, 470, self.RULE_rule_SubprogramBody) 

+

19503 self._la = 0 # Token type 

+

19504 try: 

+

19505 self.enterOuterAlt(localctx, 1) 

+

19506 self.state = 2839 

+

19507 self.rule_SubprogramSpecification() 

+

19508 self.state = 2840 

+

19509 self.match(VHDLParser.KW_IS) 

+

19510 self.state = 2844 

+

19511 self._errHandler.sync(self) 

+

19512 _la = self._input.LA(1) 

+

19513 while (((_la) & ~0x3f) == 0 and ((1 << _la) & 88579439100416) != 0) or ( 

+

19514 (((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & 842086220065) != 0): 

+

19515 self.state = 2841 

+

19516 localctx._rule_SubprogramDeclarativeItem = self.rule_SubprogramDeclarativeItem() 

+

19517 localctx.declaredItems.append(localctx._rule_SubprogramDeclarativeItem) 

+

19518 self.state = 2846 

+

19519 self._errHandler.sync(self) 

+

19520 _la = self._input.LA(1) 

+

19521 

+

19522 self.state = 2847 

+

19523 self.match(VHDLParser.KW_BEGIN) 

+

19524 self.state = 2851 

+

19525 self._errHandler.sync(self) 

+

19526 _la = self._input.LA(1) 

+

19527 while (((_la) & ~0x3f) == 0 and ((1 << _la) & -8052400777563193344) != 0) or ( 

+

19528 (((_la - 85)) & ~0x3f) == 0 and ((1 << (_la - 85)) & 4899916406390259715) != 0) or ( 

+

19529 (((_la - 161)) & ~0x3f) == 0 and ((1 << (_la - 161)) & 7) != 0): 

+

19530 self.state = 2848 

+

19531 localctx._rule_SequentialStatement = self.rule_SequentialStatement() 

+

19532 localctx.statements.append(localctx._rule_SequentialStatement) 

+

19533 self.state = 2853 

+

19534 self._errHandler.sync(self) 

+

19535 _la = self._input.LA(1) 

+

19536 

+

19537 self.state = 2854 

+

19538 self.match(VHDLParser.KW_END) 

+

19539 self.state = 2856 

+

19540 self._errHandler.sync(self) 

+

19541 _la = self._input.LA(1) 

+

19542 if _la == 39 or _la == 75: 

+

19543 self.state = 2855 

+

19544 self.rule_SubprogramKind() 

+

19545 

+

19546 self.state = 2859 

+

19547 self._errHandler.sync(self) 

+

19548 _la = self._input.LA(1) 

+

19549 if _la == 162 or _la == 163: 

+

19550 self.state = 2858 

+

19551 self.rule_Designator() 

+

19552 

+

19553 self.state = 2861 

+

19554 self.match(VHDLParser.TOK_SEMICOL) 

+

19555 except RecognitionException as re: 

+

19556 localctx.exception = re 

+

19557 self._errHandler.reportError(self, re) 

+

19558 self._errHandler.recover(self, re) 

+

19559 finally: 

+

19560 self.exitRule() 

+

19561 return localctx 

+

19562 

+

19563 class Rule_SubprogramDeclarationContext(ParserRuleContext): 

+

19564 __slots__ = 'parser' 

+

19565 

+

19566 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

19567 super().__init__(parent, invokingState) 

+

19568 self.parser = parser 

+

19569 

+

19570 def rule_SubprogramSpecification(self): 

+

19571 return self.getTypedRuleContext(VHDLParser.Rule_SubprogramSpecificationContext, 0) 

+

19572 

+

19573 def TOK_SEMICOL(self): 

+

19574 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

19575 

+

19576 def getRuleIndex(self): 

+

19577 return VHDLParser.RULE_rule_SubprogramDeclaration 

+

19578 

+

19579 def accept(self, visitor: ParseTreeVisitor): 

+

19580 if hasattr(visitor, "visitRule_SubprogramDeclaration"): 

+

19581 return visitor.visitRule_SubprogramDeclaration(self) 

+

19582 else: 

+

19583 return visitor.visitChildren(self) 

+

19584 

+

19585 def rule_SubprogramDeclaration(self): 

+

19586 

+

19587 localctx = VHDLParser.Rule_SubprogramDeclarationContext(self, self._ctx, self.state) 

+

19588 self.enterRule(localctx, 472, self.RULE_rule_SubprogramDeclaration) 

+

19589 try: 

+

19590 self.enterOuterAlt(localctx, 1) 

+

19591 self.state = 2863 

+

19592 self.rule_SubprogramSpecification() 

+

19593 self.state = 2864 

+

19594 self.match(VHDLParser.TOK_SEMICOL) 

+

19595 except RecognitionException as re: 

+

19596 localctx.exception = re 

+

19597 self._errHandler.reportError(self, re) 

+

19598 self._errHandler.recover(self, re) 

+

19599 finally: 

+

19600 self.exitRule() 

+

19601 return localctx 

+

19602 

+

19603 class Rule_SubprogramDeclarativeItemContext(ParserRuleContext): 

+

19604 __slots__ = 'parser' 

+

19605 

+

19606 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

19607 super().__init__(parent, invokingState) 

+

19608 self.parser = parser 

+

19609 

+

19610 def rule_SubprogramDeclaration(self): 

+

19611 return self.getTypedRuleContext(VHDLParser.Rule_SubprogramDeclarationContext, 0) 

+

19612 

+

19613 def rule_SubprogramBody(self): 

+

19614 return self.getTypedRuleContext(VHDLParser.Rule_SubprogramBodyContext, 0) 

+

19615 

+

19616 def rule_SubprogramInstantiationDeclaration(self): 

+

19617 return self.getTypedRuleContext(VHDLParser.Rule_SubprogramInstantiationDeclarationContext, 0) 

+

19618 

+

19619 def rule_PackageDeclaration(self): 

+

19620 return self.getTypedRuleContext(VHDLParser.Rule_PackageDeclarationContext, 0) 

+

19621 

+

19622 def rule_PackageBody(self): 

+

19623 return self.getTypedRuleContext(VHDLParser.Rule_PackageBodyContext, 0) 

+

19624 

+

19625 def rule_PackageInstantiationDeclaration(self): 

+

19626 return self.getTypedRuleContext(VHDLParser.Rule_PackageInstantiationDeclarationContext, 0) 

+

19627 

+

19628 def rule_TypeDeclaration(self): 

+

19629 return self.getTypedRuleContext(VHDLParser.Rule_TypeDeclarationContext, 0) 

+

19630 

+

19631 def rule_SubtypeDeclaration(self): 

+

19632 return self.getTypedRuleContext(VHDLParser.Rule_SubtypeDeclarationContext, 0) 

+

19633 

+

19634 def rule_ConstantDeclaration(self): 

+

19635 return self.getTypedRuleContext(VHDLParser.Rule_ConstantDeclarationContext, 0) 

+

19636 

+

19637 def rule_VariableDeclaration(self): 

+

19638 return self.getTypedRuleContext(VHDLParser.Rule_VariableDeclarationContext, 0) 

+

19639 

+

19640 def rule_FileDeclaration(self): 

+

19641 return self.getTypedRuleContext(VHDLParser.Rule_FileDeclarationContext, 0) 

+

19642 

+

19643 def rule_AliasDeclaration(self): 

+

19644 return self.getTypedRuleContext(VHDLParser.Rule_AliasDeclarationContext, 0) 

+

19645 

+

19646 def rule_AttributeDeclaration(self): 

+

19647 return self.getTypedRuleContext(VHDLParser.Rule_AttributeDeclarationContext, 0) 

+

19648 

+

19649 def rule_AttributeSpecification(self): 

+

19650 return self.getTypedRuleContext(VHDLParser.Rule_AttributeSpecificationContext, 0) 

+

19651 

+

19652 def rule_UseClause(self): 

+

19653 return self.getTypedRuleContext(VHDLParser.Rule_UseClauseContext, 0) 

+

19654 

+

19655 def rule_GroupTemplateDeclaration(self): 

+

19656 return self.getTypedRuleContext(VHDLParser.Rule_GroupTemplateDeclarationContext, 0) 

+

19657 

+

19658 def rule_GroupDeclaration(self): 

+

19659 return self.getTypedRuleContext(VHDLParser.Rule_GroupDeclarationContext, 0) 

+

19660 

+

19661 def getRuleIndex(self): 

+

19662 return VHDLParser.RULE_rule_SubprogramDeclarativeItem 

+

19663 

+

19664 def accept(self, visitor: ParseTreeVisitor): 

+

19665 if hasattr(visitor, "visitRule_SubprogramDeclarativeItem"): 

+

19666 return visitor.visitRule_SubprogramDeclarativeItem(self) 

+

19667 else: 

+

19668 return visitor.visitChildren(self) 

+

19669 

+

19670 def rule_SubprogramDeclarativeItem(self): 

+

19671 

+

19672 localctx = VHDLParser.Rule_SubprogramDeclarativeItemContext(self, self._ctx, self.state) 

+

19673 self.enterRule(localctx, 474, self.RULE_rule_SubprogramDeclarativeItem) 

+

19674 try: 

+

19675 self.state = 2883 

+

19676 self._errHandler.sync(self) 

+

19677 la_ = self._interp.adaptivePredict(self._input, 325, self._ctx) 

+

19678 if la_ == 1: 

+

19679 self.enterOuterAlt(localctx, 1) 

+

19680 self.state = 2866 

+

19681 self.rule_SubprogramDeclaration() 

+

19682 pass 

+

19683 

+

19684 elif la_ == 2: 

+

19685 self.enterOuterAlt(localctx, 2) 

+

19686 self.state = 2867 

+

19687 self.rule_SubprogramBody() 

+

19688 pass 

+

19689 

+

19690 elif la_ == 3: 

+

19691 self.enterOuterAlt(localctx, 3) 

+

19692 self.state = 2868 

+

19693 self.rule_SubprogramInstantiationDeclaration() 

+

19694 pass 

+

19695 

+

19696 elif la_ == 4: 

+

19697 self.enterOuterAlt(localctx, 4) 

+

19698 self.state = 2869 

+

19699 self.rule_PackageDeclaration() 

+

19700 pass 

+

19701 

+

19702 elif la_ == 5: 

+

19703 self.enterOuterAlt(localctx, 5) 

+

19704 self.state = 2870 

+

19705 self.rule_PackageBody() 

+

19706 pass 

+

19707 

+

19708 elif la_ == 6: 

+

19709 self.enterOuterAlt(localctx, 6) 

+

19710 self.state = 2871 

+

19711 self.rule_PackageInstantiationDeclaration() 

+

19712 pass 

+

19713 

+

19714 elif la_ == 7: 

+

19715 self.enterOuterAlt(localctx, 7) 

+

19716 self.state = 2872 

+

19717 self.rule_TypeDeclaration() 

+

19718 pass 

+

19719 

+

19720 elif la_ == 8: 

+

19721 self.enterOuterAlt(localctx, 8) 

+

19722 self.state = 2873 

+

19723 self.rule_SubtypeDeclaration() 

+

19724 pass 

+

19725 

+

19726 elif la_ == 9: 

+

19727 self.enterOuterAlt(localctx, 9) 

+

19728 self.state = 2874 

+

19729 self.rule_ConstantDeclaration() 

+

19730 pass 

+

19731 

+

19732 elif la_ == 10: 

+

19733 self.enterOuterAlt(localctx, 10) 

+

19734 self.state = 2875 

+

19735 self.rule_VariableDeclaration() 

+

19736 pass 

+

19737 

+

19738 elif la_ == 11: 

+

19739 self.enterOuterAlt(localctx, 11) 

+

19740 self.state = 2876 

+

19741 self.rule_FileDeclaration() 

+

19742 pass 

+

19743 

+

19744 elif la_ == 12: 

+

19745 self.enterOuterAlt(localctx, 12) 

+

19746 self.state = 2877 

+

19747 self.rule_AliasDeclaration() 

+

19748 pass 

+

19749 

+

19750 elif la_ == 13: 

+

19751 self.enterOuterAlt(localctx, 13) 

+

19752 self.state = 2878 

+

19753 self.rule_AttributeDeclaration() 

+

19754 pass 

+

19755 

+

19756 elif la_ == 14: 

+

19757 self.enterOuterAlt(localctx, 14) 

+

19758 self.state = 2879 

+

19759 self.rule_AttributeSpecification() 

+

19760 pass 

+

19761 

+

19762 elif la_ == 15: 

+

19763 self.enterOuterAlt(localctx, 15) 

+

19764 self.state = 2880 

+

19765 self.rule_UseClause() 

+

19766 pass 

+

19767 

+

19768 elif la_ == 16: 

+

19769 self.enterOuterAlt(localctx, 16) 

+

19770 self.state = 2881 

+

19771 self.rule_GroupTemplateDeclaration() 

+

19772 pass 

+

19773 

+

19774 elif la_ == 17: 

+

19775 self.enterOuterAlt(localctx, 17) 

+

19776 self.state = 2882 

+

19777 self.rule_GroupDeclaration() 

+

19778 pass 

+

19779 

+

19780 

+

19781 except RecognitionException as re: 

+

19782 localctx.exception = re 

+

19783 self._errHandler.reportError(self, re) 

+

19784 self._errHandler.recover(self, re) 

+

19785 finally: 

+

19786 self.exitRule() 

+

19787 return localctx 

+

19788 

+

19789 class Rule_SubprogramInstantiationDeclarationContext(ParserRuleContext): 

+

19790 __slots__ = 'parser' 

+

19791 

+

19792 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

19793 super().__init__(parent, invokingState) 

+

19794 self.parser = parser 

+

19795 self.name = None # Token 

+

19796 self.genericMapAspect = None # Rule_GenericMapAspectContext 

+

19797 

+

19798 def rule_SubprogramKind(self): 

+

19799 return self.getTypedRuleContext(VHDLParser.Rule_SubprogramKindContext, 0) 

+

19800 

+

19801 def KW_IS(self): 

+

19802 return self.getToken(VHDLParser.KW_IS, 0) 

+

19803 

+

19804 def KW_NEW(self): 

+

19805 return self.getToken(VHDLParser.KW_NEW, 0) 

+

19806 

+

19807 def rule_Name(self): 

+

19808 return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0) 

+

19809 

+

19810 def TOK_SEMICOL(self): 

+

19811 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

19812 

+

19813 def LIT_IDENTIFIER(self): 

+

19814 return self.getToken(VHDLParser.LIT_IDENTIFIER, 0) 

+

19815 

+

19816 def rule_Signature(self): 

+

19817 return self.getTypedRuleContext(VHDLParser.Rule_SignatureContext, 0) 

+

19818 

+

19819 def rule_GenericMapAspect(self): 

+

19820 return self.getTypedRuleContext(VHDLParser.Rule_GenericMapAspectContext, 0) 

+

19821 

+

19822 def getRuleIndex(self): 

+

19823 return VHDLParser.RULE_rule_SubprogramInstantiationDeclaration 

+

19824 

+

19825 def accept(self, visitor: ParseTreeVisitor): 

+

19826 if hasattr(visitor, "visitRule_SubprogramInstantiationDeclaration"): 

+

19827 return visitor.visitRule_SubprogramInstantiationDeclaration(self) 

+

19828 else: 

+

19829 return visitor.visitChildren(self) 

+

19830 

+

19831 def rule_SubprogramInstantiationDeclaration(self): 

+

19832 

+

19833 localctx = VHDLParser.Rule_SubprogramInstantiationDeclarationContext(self, self._ctx, self.state) 

+

19834 self.enterRule(localctx, 476, self.RULE_rule_SubprogramInstantiationDeclaration) 

+

19835 self._la = 0 # Token type 

+

19836 try: 

+

19837 self.enterOuterAlt(localctx, 1) 

+

19838 self.state = 2885 

+

19839 self.rule_SubprogramKind() 

+

19840 self.state = 2886 

+

19841 localctx.name = self.match(VHDLParser.LIT_IDENTIFIER) 

+

19842 self.state = 2887 

+

19843 self.match(VHDLParser.KW_IS) 

+

19844 self.state = 2888 

+

19845 self.match(VHDLParser.KW_NEW) 

+

19846 self.state = 2889 

+

19847 self.rule_Name(0) 

+

19848 self.state = 2891 

+

19849 self._errHandler.sync(self) 

+

19850 _la = self._input.LA(1) 

+

19851 if _la == 145: 

+

19852 self.state = 2890 

+

19853 self.rule_Signature() 

+

19854 

+

19855 self.state = 2894 

+

19856 self._errHandler.sync(self) 

+

19857 _la = self._input.LA(1) 

+

19858 if _la == 42: 

+

19859 self.state = 2893 

+

19860 localctx.genericMapAspect = self.rule_GenericMapAspect() 

+

19861 

+

19862 self.state = 2896 

+

19863 self.match(VHDLParser.TOK_SEMICOL) 

+

19864 except RecognitionException as re: 

+

19865 localctx.exception = re 

+

19866 self._errHandler.reportError(self, re) 

+

19867 self._errHandler.recover(self, re) 

+

19868 finally: 

+

19869 self.exitRule() 

+

19870 return localctx 

+

19871 

+

19872 class Rule_SubprogramKindContext(ParserRuleContext): 

+

19873 __slots__ = 'parser' 

+

19874 

+

19875 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

19876 super().__init__(parent, invokingState) 

+

19877 self.parser = parser 

+

19878 

+

19879 def KW_PROCEDURE(self): 

+

19880 return self.getToken(VHDLParser.KW_PROCEDURE, 0) 

+

19881 

+

19882 def KW_FUNCTION(self): 

+

19883 return self.getToken(VHDLParser.KW_FUNCTION, 0) 

+

19884 

+

19885 def getRuleIndex(self): 

+

19886 return VHDLParser.RULE_rule_SubprogramKind 

+

19887 

+

19888 def accept(self, visitor: ParseTreeVisitor): 

+

19889 if hasattr(visitor, "visitRule_SubprogramKind"): 

+

19890 return visitor.visitRule_SubprogramKind(self) 

+

19891 else: 

+

19892 return visitor.visitChildren(self) 

+

19893 

+

19894 def rule_SubprogramKind(self): 

+

19895 

+

19896 localctx = VHDLParser.Rule_SubprogramKindContext(self, self._ctx, self.state) 

+

19897 self.enterRule(localctx, 478, self.RULE_rule_SubprogramKind) 

+

19898 self._la = 0 # Token type 

+

19899 try: 

+

19900 self.enterOuterAlt(localctx, 1) 

+

19901 self.state = 2898 

+

19902 _la = self._input.LA(1) 

+

19903 if not (_la == 39 or _la == 75): 

+

19904 self._errHandler.recoverInline(self) 

+

19905 else: 

+

19906 self._errHandler.reportMatch(self) 

+

19907 self.consume() 

+

19908 except RecognitionException as re: 

+

19909 localctx.exception = re 

+

19910 self._errHandler.reportError(self, re) 

+

19911 self._errHandler.recover(self, re) 

+

19912 finally: 

+

19913 self.exitRule() 

+

19914 return localctx 

+

19915 

+

19916 class Rule_SubprogramSpecificationContext(ParserRuleContext): 

+

19917 __slots__ = 'parser' 

+

19918 

+

19919 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

19920 super().__init__(parent, invokingState) 

+

19921 self.parser = parser 

+

19922 

+

19923 def rule_ProcedureSpecification(self): 

+

19924 return self.getTypedRuleContext(VHDLParser.Rule_ProcedureSpecificationContext, 0) 

+

19925 

+

19926 def rule_FunctionSpecification(self): 

+

19927 return self.getTypedRuleContext(VHDLParser.Rule_FunctionSpecificationContext, 0) 

+

19928 

+

19929 def getRuleIndex(self): 

+

19930 return VHDLParser.RULE_rule_SubprogramSpecification 

+

19931 

+

19932 def accept(self, visitor: ParseTreeVisitor): 

+

19933 if hasattr(visitor, "visitRule_SubprogramSpecification"): 

+

19934 return visitor.visitRule_SubprogramSpecification(self) 

+

19935 else: 

+

19936 return visitor.visitChildren(self) 

+

19937 

+

19938 def rule_SubprogramSpecification(self): 

+

19939 

+

19940 localctx = VHDLParser.Rule_SubprogramSpecificationContext(self, self._ctx, self.state) 

+

19941 self.enterRule(localctx, 480, self.RULE_rule_SubprogramSpecification) 

+

19942 try: 

+

19943 self.state = 2902 

+

19944 self._errHandler.sync(self) 

+

19945 token = self._input.LA(1) 

+

19946 if token in [75]: 

+

19947 self.enterOuterAlt(localctx, 1) 

+

19948 self.state = 2900 

+

19949 self.rule_ProcedureSpecification() 

+

19950 pass 

+

19951 elif token in [39, 46, 78]: 

+

19952 self.enterOuterAlt(localctx, 2) 

+

19953 self.state = 2901 

+

19954 self.rule_FunctionSpecification() 

+

19955 pass 

+

19956 else: 

+

19957 raise NoViableAltException(self) 

+

19958 

+

19959 except RecognitionException as re: 

+

19960 localctx.exception = re 

+

19961 self._errHandler.reportError(self, re) 

+

19962 self._errHandler.recover(self, re) 

+

19963 finally: 

+

19964 self.exitRule() 

+

19965 return localctx 

+

19966 

+

19967 class Rule_SubtypeDeclarationContext(ParserRuleContext): 

+

19968 __slots__ = 'parser' 

+

19969 

+

19970 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

19971 super().__init__(parent, invokingState) 

+

19972 self.parser = parser 

+

19973 self.name = None # Token 

+

19974 self.subtypeIndication = None # Rule_SubtypeIndicationContext 

+

19975 

+

19976 def KW_SUBTYPE(self): 

+

19977 return self.getToken(VHDLParser.KW_SUBTYPE, 0) 

+

19978 

+

19979 def KW_IS(self): 

+

19980 return self.getToken(VHDLParser.KW_IS, 0) 

+

19981 

+

19982 def TOK_SEMICOL(self): 

+

19983 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

19984 

+

19985 def LIT_IDENTIFIER(self): 

+

19986 return self.getToken(VHDLParser.LIT_IDENTIFIER, 0) 

+

19987 

+

19988 def rule_SubtypeIndication(self): 

+

19989 return self.getTypedRuleContext(VHDLParser.Rule_SubtypeIndicationContext, 0) 

+

19990 

+

19991 def getRuleIndex(self): 

+

19992 return VHDLParser.RULE_rule_SubtypeDeclaration 

+

19993 

+

19994 def accept(self, visitor: ParseTreeVisitor): 

+

19995 if hasattr(visitor, "visitRule_SubtypeDeclaration"): 

+

19996 return visitor.visitRule_SubtypeDeclaration(self) 

+

19997 else: 

+

19998 return visitor.visitChildren(self) 

+

19999 

+

20000 def rule_SubtypeDeclaration(self): 

+

20001 

+

20002 localctx = VHDLParser.Rule_SubtypeDeclarationContext(self, self._ctx, self.state) 

+

20003 self.enterRule(localctx, 482, self.RULE_rule_SubtypeDeclaration) 

+

20004 try: 

+

20005 self.enterOuterAlt(localctx, 1) 

+

20006 self.state = 2904 

+

20007 self.match(VHDLParser.KW_SUBTYPE) 

+

20008 self.state = 2905 

+

20009 localctx.name = self.match(VHDLParser.LIT_IDENTIFIER) 

+

20010 self.state = 2906 

+

20011 self.match(VHDLParser.KW_IS) 

+

20012 self.state = 2907 

+

20013 localctx.subtypeIndication = self.rule_SubtypeIndication() 

+

20014 self.state = 2908 

+

20015 self.match(VHDLParser.TOK_SEMICOL) 

+

20016 except RecognitionException as re: 

+

20017 localctx.exception = re 

+

20018 self._errHandler.reportError(self, re) 

+

20019 self._errHandler.recover(self, re) 

+

20020 finally: 

+

20021 self.exitRule() 

+

20022 return localctx 

+

20023 

+

20024 class Rule_SubtypeIndicationContext(ParserRuleContext): 

+

20025 __slots__ = 'parser' 

+

20026 

+

20027 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

20028 super().__init__(parent, invokingState) 

+

20029 self.parser = parser 

+

20030 

+

20031 def rule_Name(self): 

+

20032 return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0) 

+

20033 

+

20034 def rule_ResolutionIndication(self): 

+

20035 return self.getTypedRuleContext(VHDLParser.Rule_ResolutionIndicationContext, 0) 

+

20036 

+

20037 def rule_Constraint(self): 

+

20038 return self.getTypedRuleContext(VHDLParser.Rule_ConstraintContext, 0) 

+

20039 

+

20040 def getRuleIndex(self): 

+

20041 return VHDLParser.RULE_rule_SubtypeIndication 

+

20042 

+

20043 def accept(self, visitor: ParseTreeVisitor): 

+

20044 if hasattr(visitor, "visitRule_SubtypeIndication"): 

+

20045 return visitor.visitRule_SubtypeIndication(self) 

+

20046 else: 

+

20047 return visitor.visitChildren(self) 

+

20048 

+

20049 def rule_SubtypeIndication(self): 

+

20050 

+

20051 localctx = VHDLParser.Rule_SubtypeIndicationContext(self, self._ctx, self.state) 

+

20052 self.enterRule(localctx, 484, self.RULE_rule_SubtypeIndication) 

+

20053 try: 

+

20054 self.enterOuterAlt(localctx, 1) 

+

20055 self.state = 2911 

+

20056 self._errHandler.sync(self) 

+

20057 la_ = self._interp.adaptivePredict(self._input, 329, self._ctx) 

+

20058 if la_ == 1: 

+

20059 self.state = 2910 

+

20060 self.rule_ResolutionIndication() 

+

20061 

+

20062 self.state = 2913 

+

20063 self.rule_Name(0) 

+

20064 self.state = 2915 

+

20065 self._errHandler.sync(self) 

+

20066 la_ = self._interp.adaptivePredict(self._input, 330, self._ctx) 

+

20067 if la_ == 1: 

+

20068 self.state = 2914 

+

20069 self.rule_Constraint() 

+

20070 

+

20071 

+

20072 except RecognitionException as re: 

+

20073 localctx.exception = re 

+

20074 self._errHandler.reportError(self, re) 

+

20075 self._errHandler.recover(self, re) 

+

20076 finally: 

+

20077 self.exitRule() 

+

20078 return localctx 

+

20079 

+

20080 class Rule_SuffixContext(ParserRuleContext): 

+

20081 __slots__ = 'parser' 

+

20082 

+

20083 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

20084 super().__init__(parent, invokingState) 

+

20085 self.parser = parser 

+

20086 

+

20087 def LIT_IDENTIFIER(self): 

+

20088 return self.getToken(VHDLParser.LIT_IDENTIFIER, 0) 

+

20089 

+

20090 def LIT_CHARACTER(self): 

+

20091 return self.getToken(VHDLParser.LIT_CHARACTER, 0) 

+

20092 

+

20093 def LIT_STRING(self): 

+

20094 return self.getToken(VHDLParser.LIT_STRING, 0) 

+

20095 

+

20096 def KW_ALL(self): 

+

20097 return self.getToken(VHDLParser.KW_ALL, 0) 

+

20098 

+

20099 def getRuleIndex(self): 

+

20100 return VHDLParser.RULE_rule_Suffix 

+

20101 

+

20102 def accept(self, visitor: ParseTreeVisitor): 

+

20103 if hasattr(visitor, "visitRule_Suffix"): 

+

20104 return visitor.visitRule_Suffix(self) 

+

20105 else: 

+

20106 return visitor.visitChildren(self) 

+

20107 

+

20108 def rule_Suffix(self): 

+

20109 

+

20110 localctx = VHDLParser.Rule_SuffixContext(self, self._ctx, self.state) 

+

20111 self.enterRule(localctx, 486, self.RULE_rule_Suffix) 

+

20112 self._la = 0 # Token type 

+

20113 try: 

+

20114 self.enterOuterAlt(localctx, 1) 

+

20115 self.state = 2917 

+

20116 _la = self._input.LA(1) 

+

20117 if not (_la == 10 or ((((_la - 161)) & ~0x3f) == 0 and ((1 << (_la - 161)) & 7) != 0)): 

+

20118 self._errHandler.recoverInline(self) 

+

20119 else: 

+

20120 self._errHandler.reportMatch(self) 

+

20121 self.consume() 

+

20122 except RecognitionException as re: 

+

20123 localctx.exception = re 

+

20124 self._errHandler.reportError(self, re) 

+

20125 self._errHandler.recover(self, re) 

+

20126 finally: 

+

20127 self.exitRule() 

+

20128 return localctx 

+

20129 

+

20130 class Rule_TargetContext(ParserRuleContext): 

+

20131 __slots__ = 'parser' 

+

20132 

+

20133 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

20134 super().__init__(parent, invokingState) 

+

20135 self.parser = parser 

+

20136 

+

20137 def rule_Name(self): 

+

20138 return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0) 

+

20139 

+

20140 def rule_Aggregate(self): 

+

20141 return self.getTypedRuleContext(VHDLParser.Rule_AggregateContext, 0) 

+

20142 

+

20143 def getRuleIndex(self): 

+

20144 return VHDLParser.RULE_rule_Target 

+

20145 

+

20146 def accept(self, visitor: ParseTreeVisitor): 

+

20147 if hasattr(visitor, "visitRule_Target"): 

+

20148 return visitor.visitRule_Target(self) 

+

20149 else: 

+

20150 return visitor.visitChildren(self) 

+

20151 

+

20152 def rule_Target(self): 

+

20153 

+

20154 localctx = VHDLParser.Rule_TargetContext(self, self._ctx, self.state) 

+

20155 self.enterRule(localctx, 488, self.RULE_rule_Target) 

+

20156 try: 

+

20157 self.state = 2921 

+

20158 self._errHandler.sync(self) 

+

20159 token = self._input.LA(1) 

+

20160 if token in [147, 161, 162, 163]: 

+

20161 self.enterOuterAlt(localctx, 1) 

+

20162 self.state = 2919 

+

20163 self.rule_Name(0) 

+

20164 pass 

+

20165 elif token in [143]: 

+

20166 self.enterOuterAlt(localctx, 2) 

+

20167 self.state = 2920 

+

20168 self.rule_Aggregate() 

+

20169 pass 

+

20170 else: 

+

20171 raise NoViableAltException(self) 

+

20172 

+

20173 except RecognitionException as re: 

+

20174 localctx.exception = re 

+

20175 self._errHandler.reportError(self, re) 

+

20176 self._errHandler.recover(self, re) 

+

20177 finally: 

+

20178 self.exitRule() 

+

20179 return localctx 

+

20180 

+

20181 class Rule_TimeoutClauseContext(ParserRuleContext): 

+

20182 __slots__ = 'parser' 

+

20183 

+

20184 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

20185 super().__init__(parent, invokingState) 

+

20186 self.parser = parser 

+

20187 self.expression = None # Rule_ExpressionContext 

+

20188 

+

20189 def KW_FOR(self): 

+

20190 return self.getToken(VHDLParser.KW_FOR, 0) 

+

20191 

+

20192 def rule_Expression(self): 

+

20193 return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0) 

+

20194 

+

20195 def getRuleIndex(self): 

+

20196 return VHDLParser.RULE_rule_TimeoutClause 

+

20197 

+

20198 def accept(self, visitor: ParseTreeVisitor): 

+

20199 if hasattr(visitor, "visitRule_TimeoutClause"): 

+

20200 return visitor.visitRule_TimeoutClause(self) 

+

20201 else: 

+

20202 return visitor.visitChildren(self) 

+

20203 

+

20204 def rule_TimeoutClause(self): 

+

20205 

+

20206 localctx = VHDLParser.Rule_TimeoutClauseContext(self, self._ctx, self.state) 

+

20207 self.enterRule(localctx, 490, self.RULE_rule_TimeoutClause) 

+

20208 try: 

+

20209 self.enterOuterAlt(localctx, 1) 

+

20210 self.state = 2923 

+

20211 self.match(VHDLParser.KW_FOR) 

+

20212 self.state = 2924 

+

20213 localctx.expression = self.rule_Expression(0) 

+

20214 except RecognitionException as re: 

+

20215 localctx.exception = re 

+

20216 self._errHandler.reportError(self, re) 

+

20217 self._errHandler.recover(self, re) 

+

20218 finally: 

+

20219 self.exitRule() 

+

20220 return localctx 

+

20221 

+

20222 class Rule_TypeConversionContext(ParserRuleContext): 

+

20223 __slots__ = 'parser' 

+

20224 

+

20225 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

20226 super().__init__(parent, invokingState) 

+

20227 self.parser = parser 

+

20228 

+

20229 def rule_Name(self): 

+

20230 return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0) 

+

20231 

+

20232 def TOK_LP(self): 

+

20233 return self.getToken(VHDLParser.TOK_LP, 0) 

+

20234 

+

20235 def rule_Expression(self): 

+

20236 return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0) 

+

20237 

+

20238 def TOK_RP(self): 

+

20239 return self.getToken(VHDLParser.TOK_RP, 0) 

+

20240 

+

20241 def getRuleIndex(self): 

+

20242 return VHDLParser.RULE_rule_TypeConversion 

+

20243 

+

20244 def accept(self, visitor: ParseTreeVisitor): 

+

20245 if hasattr(visitor, "visitRule_TypeConversion"): 

+

20246 return visitor.visitRule_TypeConversion(self) 

+

20247 else: 

+

20248 return visitor.visitChildren(self) 

+

20249 

+

20250 def rule_TypeConversion(self): 

+

20251 

+

20252 localctx = VHDLParser.Rule_TypeConversionContext(self, self._ctx, self.state) 

+

20253 self.enterRule(localctx, 492, self.RULE_rule_TypeConversion) 

+

20254 try: 

+

20255 self.enterOuterAlt(localctx, 1) 

+

20256 self.state = 2926 

+

20257 self.rule_Name(0) 

+

20258 self.state = 2927 

+

20259 self.match(VHDLParser.TOK_LP) 

+

20260 self.state = 2928 

+

20261 self.rule_Expression(0) 

+

20262 self.state = 2929 

+

20263 self.match(VHDLParser.TOK_RP) 

+

20264 except RecognitionException as re: 

+

20265 localctx.exception = re 

+

20266 self._errHandler.reportError(self, re) 

+

20267 self._errHandler.recover(self, re) 

+

20268 finally: 

+

20269 self.exitRule() 

+

20270 return localctx 

+

20271 

+

20272 class Rule_TypeDeclarationContext(ParserRuleContext): 

+

20273 __slots__ = 'parser' 

+

20274 

+

20275 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

20276 super().__init__(parent, invokingState) 

+

20277 self.parser = parser 

+

20278 

+

20279 def rule_FullTypeDeclaration(self): 

+

20280 return self.getTypedRuleContext(VHDLParser.Rule_FullTypeDeclarationContext, 0) 

+

20281 

+

20282 def rule_IncompleteTypeDeclaration(self): 

+

20283 return self.getTypedRuleContext(VHDLParser.Rule_IncompleteTypeDeclarationContext, 0) 

+

20284 

+

20285 def getRuleIndex(self): 

+

20286 return VHDLParser.RULE_rule_TypeDeclaration 

+

20287 

+

20288 def accept(self, visitor: ParseTreeVisitor): 

+

20289 if hasattr(visitor, "visitRule_TypeDeclaration"): 

+

20290 return visitor.visitRule_TypeDeclaration(self) 

+

20291 else: 

+

20292 return visitor.visitChildren(self) 

+

20293 

+

20294 def rule_TypeDeclaration(self): 

+

20295 

+

20296 localctx = VHDLParser.Rule_TypeDeclarationContext(self, self._ctx, self.state) 

+

20297 self.enterRule(localctx, 494, self.RULE_rule_TypeDeclaration) 

+

20298 try: 

+

20299 self.state = 2933 

+

20300 self._errHandler.sync(self) 

+

20301 la_ = self._interp.adaptivePredict(self._input, 332, self._ctx) 

+

20302 if la_ == 1: 

+

20303 self.enterOuterAlt(localctx, 1) 

+

20304 self.state = 2931 

+

20305 self.rule_FullTypeDeclaration() 

+

20306 pass 

+

20307 

+

20308 elif la_ == 2: 

+

20309 self.enterOuterAlt(localctx, 2) 

+

20310 self.state = 2932 

+

20311 self.rule_IncompleteTypeDeclaration() 

+

20312 pass 

+

20313 

+

20314 

+

20315 except RecognitionException as re: 

+

20316 localctx.exception = re 

+

20317 self._errHandler.reportError(self, re) 

+

20318 self._errHandler.recover(self, re) 

+

20319 finally: 

+

20320 self.exitRule() 

+

20321 return localctx 

+

20322 

+

20323 class Rule_TypeDefinitionContext(ParserRuleContext): 

+

20324 __slots__ = 'parser' 

+

20325 

+

20326 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

20327 super().__init__(parent, invokingState) 

+

20328 self.parser = parser 

+

20329 

+

20330 def rule_ScalarTypeDefinition(self): 

+

20331 return self.getTypedRuleContext(VHDLParser.Rule_ScalarTypeDefinitionContext, 0) 

+

20332 

+

20333 def rule_CompositeTypeDefinition(self): 

+

20334 return self.getTypedRuleContext(VHDLParser.Rule_CompositeTypeDefinitionContext, 0) 

+

20335 

+

20336 def rule_AccessTypeDefinition(self): 

+

20337 return self.getTypedRuleContext(VHDLParser.Rule_AccessTypeDefinitionContext, 0) 

+

20338 

+

20339 def rule_FileTypeDefinition(self): 

+

20340 return self.getTypedRuleContext(VHDLParser.Rule_FileTypeDefinitionContext, 0) 

+

20341 

+

20342 def rule_ProtectedTypeDefinition(self): 

+

20343 return self.getTypedRuleContext(VHDLParser.Rule_ProtectedTypeDefinitionContext, 0) 

+

20344 

+

20345 def rule_ProtectedTypeInstantiationDefinition(self): 

+

20346 return self.getTypedRuleContext(VHDLParser.Rule_ProtectedTypeInstantiationDefinitionContext, 0) 

+

20347 

+

20348 def getRuleIndex(self): 

+

20349 return VHDLParser.RULE_rule_TypeDefinition 

+

20350 

+

20351 def accept(self, visitor: ParseTreeVisitor): 

+

20352 if hasattr(visitor, "visitRule_TypeDefinition"): 

+

20353 return visitor.visitRule_TypeDefinition(self) 

+

20354 else: 

+

20355 return visitor.visitChildren(self) 

+

20356 

+

20357 def rule_TypeDefinition(self): 

+

20358 

+

20359 localctx = VHDLParser.Rule_TypeDefinitionContext(self, self._ctx, self.state) 

+

20360 self.enterRule(localctx, 496, self.RULE_rule_TypeDefinition) 

+

20361 try: 

+

20362 self.state = 2941 

+

20363 self._errHandler.sync(self) 

+

20364 token = self._input.LA(1) 

+

20365 if token in [79, 143]: 

+

20366 self.enterOuterAlt(localctx, 1) 

+

20367 self.state = 2935 

+

20368 self.rule_ScalarTypeDefinition() 

+

20369 pass 

+

20370 elif token in [13, 80]: 

+

20371 self.enterOuterAlt(localctx, 2) 

+

20372 self.state = 2936 

+

20373 self.rule_CompositeTypeDefinition() 

+

20374 pass 

+

20375 elif token in [7]: 

+

20376 self.enterOuterAlt(localctx, 3) 

+

20377 self.state = 2937 

+

20378 self.rule_AccessTypeDefinition() 

+

20379 pass 

+

20380 elif token in [36]: 

+

20381 self.enterOuterAlt(localctx, 4) 

+

20382 self.state = 2938 

+

20383 self.rule_FileTypeDefinition() 

+

20384 pass 

+

20385 elif token in [77]: 

+

20386 self.enterOuterAlt(localctx, 5) 

+

20387 self.state = 2939 

+

20388 self.rule_ProtectedTypeDefinition() 

+

20389 pass 

+

20390 elif token in [59]: 

+

20391 self.enterOuterAlt(localctx, 6) 

+

20392 self.state = 2940 

+

20393 self.rule_ProtectedTypeInstantiationDefinition() 

+

20394 pass 

+

20395 else: 

+

20396 raise NoViableAltException(self) 

+

20397 

+

20398 except RecognitionException as re: 

+

20399 localctx.exception = re 

+

20400 self._errHandler.reportError(self, re) 

+

20401 self._errHandler.recover(self, re) 

+

20402 finally: 

+

20403 self.exitRule() 

+

20404 return localctx 

+

20405 

+

20406 class Rule_UnboundArrayDefinitionContext(ParserRuleContext): 

+

20407 __slots__ = 'parser' 

+

20408 

+

20409 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

20410 super().__init__(parent, invokingState) 

+

20411 self.parser = parser 

+

20412 self.subtypeIndication = None # Rule_SubtypeIndicationContext 

+

20413 

+

20414 def KW_ARRAY(self): 

+

20415 return self.getToken(VHDLParser.KW_ARRAY, 0) 

+

20416 

+

20417 def TOK_LP(self): 

+

20418 return self.getToken(VHDLParser.TOK_LP, 0) 

+

20419 

+

20420 def rule_IndexSubtypeDefinition(self, i: int = None): 

+

20421 if i is None: 

+

20422 return self.getTypedRuleContexts(VHDLParser.Rule_IndexSubtypeDefinitionContext) 

+

20423 else: 

+

20424 return self.getTypedRuleContext(VHDLParser.Rule_IndexSubtypeDefinitionContext, i) 

+

20425 

+

20426 def TOK_RP(self): 

+

20427 return self.getToken(VHDLParser.TOK_RP, 0) 

+

20428 

+

20429 def KW_OF(self): 

+

20430 return self.getToken(VHDLParser.KW_OF, 0) 

+

20431 

+

20432 def rule_SubtypeIndication(self): 

+

20433 return self.getTypedRuleContext(VHDLParser.Rule_SubtypeIndicationContext, 0) 

+

20434 

+

20435 def TOK_COMMA(self, i: int = None): 

+

20436 if i is None: 

+

20437 return self.getTokens(VHDLParser.TOK_COMMA) 

+

20438 else: 

+

20439 return self.getToken(VHDLParser.TOK_COMMA, i) 

+

20440 

+

20441 def getRuleIndex(self): 

+

20442 return VHDLParser.RULE_rule_UnboundArrayDefinition 

+

20443 

+

20444 def accept(self, visitor: ParseTreeVisitor): 

+

20445 if hasattr(visitor, "visitRule_UnboundArrayDefinition"): 

+

20446 return visitor.visitRule_UnboundArrayDefinition(self) 

+

20447 else: 

+

20448 return visitor.visitChildren(self) 

+

20449 

+

20450 def rule_UnboundArrayDefinition(self): 

+

20451 

+

20452 localctx = VHDLParser.Rule_UnboundArrayDefinitionContext(self, self._ctx, self.state) 

+

20453 self.enterRule(localctx, 498, self.RULE_rule_UnboundArrayDefinition) 

+

20454 self._la = 0 # Token type 

+

20455 try: 

+

20456 self.enterOuterAlt(localctx, 1) 

+

20457 self.state = 2943 

+

20458 self.match(VHDLParser.KW_ARRAY) 

+

20459 self.state = 2944 

+

20460 self.match(VHDLParser.TOK_LP) 

+

20461 self.state = 2945 

+

20462 self.rule_IndexSubtypeDefinition() 

+

20463 self.state = 2950 

+

20464 self._errHandler.sync(self) 

+

20465 _la = self._input.LA(1) 

+

20466 while _la == 151: 

+

20467 self.state = 2946 

+

20468 self.match(VHDLParser.TOK_COMMA) 

+

20469 self.state = 2947 

+

20470 self.rule_IndexSubtypeDefinition() 

+

20471 self.state = 2952 

+

20472 self._errHandler.sync(self) 

+

20473 _la = self._input.LA(1) 

+

20474 

+

20475 self.state = 2953 

+

20476 self.match(VHDLParser.TOK_RP) 

+

20477 self.state = 2954 

+

20478 self.match(VHDLParser.KW_OF) 

+

20479 self.state = 2955 

+

20480 localctx.subtypeIndication = self.rule_SubtypeIndication() 

+

20481 except RecognitionException as re: 

+

20482 localctx.exception = re 

+

20483 self._errHandler.reportError(self, re) 

+

20484 self._errHandler.recover(self, re) 

+

20485 finally: 

+

20486 self.exitRule() 

+

20487 return localctx 

+

20488 

+

20489 class Rule_UnspecifiedTypeIndicationContext(ParserRuleContext): 

+

20490 __slots__ = 'parser' 

+

20491 

+

20492 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

20493 super().__init__(parent, invokingState) 

+

20494 self.parser = parser 

+

20495 

+

20496 def KW_TYPE(self): 

+

20497 return self.getToken(VHDLParser.KW_TYPE, 0) 

+

20498 

+

20499 def KW_IS(self): 

+

20500 return self.getToken(VHDLParser.KW_IS, 0) 

+

20501 

+

20502 def rule_IncompleteTypeDefinition(self): 

+

20503 return self.getTypedRuleContext(VHDLParser.Rule_IncompleteTypeDefinitionContext, 0) 

+

20504 

+

20505 def getRuleIndex(self): 

+

20506 return VHDLParser.RULE_rule_UnspecifiedTypeIndication 

+

20507 

+

20508 def accept(self, visitor: ParseTreeVisitor): 

+

20509 if hasattr(visitor, "visitRule_UnspecifiedTypeIndication"): 

+

20510 return visitor.visitRule_UnspecifiedTypeIndication(self) 

+

20511 else: 

+

20512 return visitor.visitChildren(self) 

+

20513 

+

20514 def rule_UnspecifiedTypeIndication(self): 

+

20515 

+

20516 localctx = VHDLParser.Rule_UnspecifiedTypeIndicationContext(self, self._ctx, self.state) 

+

20517 self.enterRule(localctx, 500, self.RULE_rule_UnspecifiedTypeIndication) 

+

20518 try: 

+

20519 self.enterOuterAlt(localctx, 1) 

+

20520 self.state = 2957 

+

20521 self.match(VHDLParser.KW_TYPE) 

+

20522 self.state = 2958 

+

20523 self.match(VHDLParser.KW_IS) 

+

20524 self.state = 2959 

+

20525 self.rule_IncompleteTypeDefinition() 

+

20526 except RecognitionException as re: 

+

20527 localctx.exception = re 

+

20528 self._errHandler.reportError(self, re) 

+

20529 self._errHandler.recover(self, re) 

+

20530 finally: 

+

20531 self.exitRule() 

+

20532 return localctx 

+

20533 

+

20534 class Rule_UseClauseContext(ParserRuleContext): 

+

20535 __slots__ = 'parser' 

+

20536 

+

20537 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

20538 super().__init__(parent, invokingState) 

+

20539 self.parser = parser 

+

20540 self._rule_SelectedName2 = None # Rule_SelectedName2Context 

+

20541 self.names = list() # of Rule_SelectedName2Contexts 

+

20542 

+

20543 def KW_USE(self): 

+

20544 return self.getToken(VHDLParser.KW_USE, 0) 

+

20545 

+

20546 def TOK_SEMICOL(self): 

+

20547 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

20548 

+

20549 def rule_SelectedName2(self, i: int = None): 

+

20550 if i is None: 

+

20551 return self.getTypedRuleContexts(VHDLParser.Rule_SelectedName2Context) 

+

20552 else: 

+

20553 return self.getTypedRuleContext(VHDLParser.Rule_SelectedName2Context, i) 

+

20554 

+

20555 def TOK_COMMA(self, i: int = None): 

+

20556 if i is None: 

+

20557 return self.getTokens(VHDLParser.TOK_COMMA) 

+

20558 else: 

+

20559 return self.getToken(VHDLParser.TOK_COMMA, i) 

+

20560 

+

20561 def getRuleIndex(self): 

+

20562 return VHDLParser.RULE_rule_UseClause 

+

20563 

+

20564 def accept(self, visitor: ParseTreeVisitor): 

+

20565 if hasattr(visitor, "visitRule_UseClause"): 

+

20566 return visitor.visitRule_UseClause(self) 

+

20567 else: 

+

20568 return visitor.visitChildren(self) 

+

20569 

+

20570 def rule_UseClause(self): 

+

20571 

+

20572 localctx = VHDLParser.Rule_UseClauseContext(self, self._ctx, self.state) 

+

20573 self.enterRule(localctx, 502, self.RULE_rule_UseClause) 

+

20574 self._la = 0 # Token type 

+

20575 try: 

+

20576 self.enterOuterAlt(localctx, 1) 

+

20577 self.state = 2961 

+

20578 self.match(VHDLParser.KW_USE) 

+

20579 self.state = 2962 

+

20580 localctx._rule_SelectedName2 = self.rule_SelectedName2() 

+

20581 localctx.names.append(localctx._rule_SelectedName2) 

+

20582 self.state = 2967 

+

20583 self._errHandler.sync(self) 

+

20584 _la = self._input.LA(1) 

+

20585 while _la == 151: 

+

20586 self.state = 2963 

+

20587 self.match(VHDLParser.TOK_COMMA) 

+

20588 self.state = 2964 

+

20589 localctx._rule_SelectedName2 = self.rule_SelectedName2() 

+

20590 localctx.names.append(localctx._rule_SelectedName2) 

+

20591 self.state = 2969 

+

20592 self._errHandler.sync(self) 

+

20593 _la = self._input.LA(1) 

+

20594 

+

20595 self.state = 2970 

+

20596 self.match(VHDLParser.TOK_SEMICOL) 

+

20597 except RecognitionException as re: 

+

20598 localctx.exception = re 

+

20599 self._errHandler.reportError(self, re) 

+

20600 self._errHandler.recover(self, re) 

+

20601 finally: 

+

20602 self.exitRule() 

+

20603 return localctx 

+

20604 

+

20605 class Rule_ValueReturnStatementContext(ParserRuleContext): 

+

20606 __slots__ = 'parser' 

+

20607 

+

20608 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

20609 super().__init__(parent, invokingState) 

+

20610 self.parser = parser 

+

20611 self.label = None # Token 

+

20612 

+

20613 def KW_RETURN(self): 

+

20614 return self.getToken(VHDLParser.KW_RETURN, 0) 

+

20615 

+

20616 def rule_ConditionalOrUnaffectedExpression(self): 

+

20617 return self.getTypedRuleContext(VHDLParser.Rule_ConditionalOrUnaffectedExpressionContext, 0) 

+

20618 

+

20619 def TOK_SEMICOL(self): 

+

20620 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

20621 

+

20622 def TOK_COLON(self): 

+

20623 return self.getToken(VHDLParser.TOK_COLON, 0) 

+

20624 

+

20625 def LIT_IDENTIFIER(self): 

+

20626 return self.getToken(VHDLParser.LIT_IDENTIFIER, 0) 

+

20627 

+

20628 def getRuleIndex(self): 

+

20629 return VHDLParser.RULE_rule_ValueReturnStatement 

+

20630 

+

20631 def accept(self, visitor: ParseTreeVisitor): 

+

20632 if hasattr(visitor, "visitRule_ValueReturnStatement"): 

+

20633 return visitor.visitRule_ValueReturnStatement(self) 

+

20634 else: 

+

20635 return visitor.visitChildren(self) 

+

20636 

+

20637 def rule_ValueReturnStatement(self): 

+

20638 

+

20639 localctx = VHDLParser.Rule_ValueReturnStatementContext(self, self._ctx, self.state) 

+

20640 self.enterRule(localctx, 504, self.RULE_rule_ValueReturnStatement) 

+

20641 self._la = 0 # Token type 

+

20642 try: 

+

20643 self.enterOuterAlt(localctx, 1) 

+

20644 self.state = 2974 

+

20645 self._errHandler.sync(self) 

+

20646 _la = self._input.LA(1) 

+

20647 if _la == 163: 

+

20648 self.state = 2972 

+

20649 localctx.label = self.match(VHDLParser.LIT_IDENTIFIER) 

+

20650 self.state = 2973 

+

20651 self.match(VHDLParser.TOK_COLON) 

+

20652 

+

20653 self.state = 2976 

+

20654 self.match(VHDLParser.KW_RETURN) 

+

20655 self.state = 2977 

+

20656 self.rule_ConditionalOrUnaffectedExpression() 

+

20657 self.state = 2978 

+

20658 self.match(VHDLParser.TOK_SEMICOL) 

+

20659 except RecognitionException as re: 

+

20660 localctx.exception = re 

+

20661 self._errHandler.reportError(self, re) 

+

20662 self._errHandler.recover(self, re) 

+

20663 finally: 

+

20664 self.exitRule() 

+

20665 return localctx 

+

20666 

+

20667 class Rule_VariableAssignmentStatementContext(ParserRuleContext): 

+

20668 __slots__ = 'parser' 

+

20669 

+

20670 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

20671 super().__init__(parent, invokingState) 

+

20672 self.parser = parser 

+

20673 self.label = None # Token 

+

20674 

+

20675 def rule_SimpleVariableAssignment(self): 

+

20676 return self.getTypedRuleContext(VHDLParser.Rule_SimpleVariableAssignmentContext, 0) 

+

20677 

+

20678 def rule_SelectedVariableAssignment(self): 

+

20679 return self.getTypedRuleContext(VHDLParser.Rule_SelectedVariableAssignmentContext, 0) 

+

20680 

+

20681 def TOK_COLON(self): 

+

20682 return self.getToken(VHDLParser.TOK_COLON, 0) 

+

20683 

+

20684 def LIT_IDENTIFIER(self): 

+

20685 return self.getToken(VHDLParser.LIT_IDENTIFIER, 0) 

+

20686 

+

20687 def getRuleIndex(self): 

+

20688 return VHDLParser.RULE_rule_VariableAssignmentStatement 

+

20689 

+

20690 def accept(self, visitor: ParseTreeVisitor): 

+

20691 if hasattr(visitor, "visitRule_VariableAssignmentStatement"): 

+

20692 return visitor.visitRule_VariableAssignmentStatement(self) 

+

20693 else: 

+

20694 return visitor.visitChildren(self) 

+

20695 

+

20696 def rule_VariableAssignmentStatement(self): 

+

20697 

+

20698 localctx = VHDLParser.Rule_VariableAssignmentStatementContext(self, self._ctx, self.state) 

+

20699 self.enterRule(localctx, 506, self.RULE_rule_VariableAssignmentStatement) 

+

20700 try: 

+

20701 self.enterOuterAlt(localctx, 1) 

+

20702 self.state = 2982 

+

20703 self._errHandler.sync(self) 

+

20704 la_ = self._interp.adaptivePredict(self._input, 337, self._ctx) 

+

20705 if la_ == 1: 

+

20706 self.state = 2980 

+

20707 localctx.label = self.match(VHDLParser.LIT_IDENTIFIER) 

+

20708 self.state = 2981 

+

20709 self.match(VHDLParser.TOK_COLON) 

+

20710 

+

20711 self.state = 2986 

+

20712 self._errHandler.sync(self) 

+

20713 token = self._input.LA(1) 

+

20714 if token in [143, 147, 161, 162, 163]: 

+

20715 self.state = 2984 

+

20716 self.rule_SimpleVariableAssignment() 

+

20717 pass 

+

20718 elif token in [116]: 

+

20719 self.state = 2985 

+

20720 self.rule_SelectedVariableAssignment() 

+

20721 pass 

+

20722 else: 

+

20723 raise NoViableAltException(self) 

+

20724 

+

20725 except RecognitionException as re: 

+

20726 localctx.exception = re 

+

20727 self._errHandler.reportError(self, re) 

+

20728 self._errHandler.recover(self, re) 

+

20729 finally: 

+

20730 self.exitRule() 

+

20731 return localctx 

+

20732 

+

20733 class Rule_VariableDeclarationContext(ParserRuleContext): 

+

20734 __slots__ = 'parser' 

+

20735 

+

20736 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

20737 super().__init__(parent, invokingState) 

+

20738 self.parser = parser 

+

20739 self.subtypeIndication = None # Rule_SubtypeIndicationContext 

+

20740 self.genericMapAspect = None # Rule_GenericMapAspectContext 

+

20741 self.expression = None # Rule_ExpressionContext 

+

20742 

+

20743 def KW_VARIABLE(self): 

+

20744 return self.getToken(VHDLParser.KW_VARIABLE, 0) 

+

20745 

+

20746 def rule_IdentifierList(self): 

+

20747 return self.getTypedRuleContext(VHDLParser.Rule_IdentifierListContext, 0) 

+

20748 

+

20749 def TOK_COLON(self): 

+

20750 return self.getToken(VHDLParser.TOK_COLON, 0) 

+

20751 

+

20752 def TOK_SEMICOL(self): 

+

20753 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

20754 

+

20755 def rule_SubtypeIndication(self): 

+

20756 return self.getTypedRuleContext(VHDLParser.Rule_SubtypeIndicationContext, 0) 

+

20757 

+

20758 def KW_SHARED(self): 

+

20759 return self.getToken(VHDLParser.KW_SHARED, 0) 

+

20760 

+

20761 def TOK_VAR_ASSIGN(self): 

+

20762 return self.getToken(VHDLParser.TOK_VAR_ASSIGN, 0) 

+

20763 

+

20764 def rule_GenericMapAspect(self): 

+

20765 return self.getTypedRuleContext(VHDLParser.Rule_GenericMapAspectContext, 0) 

+

20766 

+

20767 def rule_Expression(self): 

+

20768 return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0) 

+

20769 

+

20770 def getRuleIndex(self): 

+

20771 return VHDLParser.RULE_rule_VariableDeclaration 

+

20772 

+

20773 def accept(self, visitor: ParseTreeVisitor): 

+

20774 if hasattr(visitor, "visitRule_VariableDeclaration"): 

+

20775 return visitor.visitRule_VariableDeclaration(self) 

+

20776 else: 

+

20777 return visitor.visitChildren(self) 

+

20778 

+

20779 def rule_VariableDeclaration(self): 

+

20780 

+

20781 localctx = VHDLParser.Rule_VariableDeclarationContext(self, self._ctx, self.state) 

+

20782 self.enterRule(localctx, 508, self.RULE_rule_VariableDeclaration) 

+

20783 self._la = 0 # Token type 

+

20784 try: 

+

20785 self.enterOuterAlt(localctx, 1) 

+

20786 self.state = 2989 

+

20787 self._errHandler.sync(self) 

+

20788 _la = self._input.LA(1) 

+

20789 if _la == 92: 

+

20790 self.state = 2988 

+

20791 self.match(VHDLParser.KW_SHARED) 

+

20792 

+

20793 self.state = 2991 

+

20794 self.match(VHDLParser.KW_VARIABLE) 

+

20795 self.state = 2992 

+

20796 self.rule_IdentifierList() 

+

20797 self.state = 2993 

+

20798 self.match(VHDLParser.TOK_COLON) 

+

20799 self.state = 2994 

+

20800 localctx.subtypeIndication = self.rule_SubtypeIndication() 

+

20801 self.state = 2996 

+

20802 self._errHandler.sync(self) 

+

20803 _la = self._input.LA(1) 

+

20804 if _la == 42: 

+

20805 self.state = 2995 

+

20806 localctx.genericMapAspect = self.rule_GenericMapAspect() 

+

20807 

+

20808 self.state = 3000 

+

20809 self._errHandler.sync(self) 

+

20810 _la = self._input.LA(1) 

+

20811 if _la == 141: 

+

20812 self.state = 2998 

+

20813 self.match(VHDLParser.TOK_VAR_ASSIGN) 

+

20814 self.state = 2999 

+

20815 localctx.expression = self.rule_Expression(0) 

+

20816 

+

20817 self.state = 3002 

+

20818 self.match(VHDLParser.TOK_SEMICOL) 

+

20819 except RecognitionException as re: 

+

20820 localctx.exception = re 

+

20821 self._errHandler.reportError(self, re) 

+

20822 self._errHandler.recover(self, re) 

+

20823 finally: 

+

20824 self.exitRule() 

+

20825 return localctx 

+

20826 

+

20827 class Rule_WaitStatementContext(ParserRuleContext): 

+

20828 __slots__ = 'parser' 

+

20829 

+

20830 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

20831 super().__init__(parent, invokingState) 

+

20832 self.parser = parser 

+

20833 self.label = None # Token 

+

20834 

+

20835 def KW_WAIT(self): 

+

20836 return self.getToken(VHDLParser.KW_WAIT, 0) 

+

20837 

+

20838 def TOK_SEMICOL(self): 

+

20839 return self.getToken(VHDLParser.TOK_SEMICOL, 0) 

+

20840 

+

20841 def TOK_COLON(self): 

+

20842 return self.getToken(VHDLParser.TOK_COLON, 0) 

+

20843 

+

20844 def rule_SensitivityClause(self): 

+

20845 return self.getTypedRuleContext(VHDLParser.Rule_SensitivityClauseContext, 0) 

+

20846 

+

20847 def rule_ConditionClause(self): 

+

20848 return self.getTypedRuleContext(VHDLParser.Rule_ConditionClauseContext, 0) 

+

20849 

+

20850 def rule_TimeoutClause(self): 

+

20851 return self.getTypedRuleContext(VHDLParser.Rule_TimeoutClauseContext, 0) 

+

20852 

+

20853 def LIT_IDENTIFIER(self): 

+

20854 return self.getToken(VHDLParser.LIT_IDENTIFIER, 0) 

+

20855 

+

20856 def getRuleIndex(self): 

+

20857 return VHDLParser.RULE_rule_WaitStatement 

+

20858 

+

20859 def accept(self, visitor: ParseTreeVisitor): 

+

20860 if hasattr(visitor, "visitRule_WaitStatement"): 

+

20861 return visitor.visitRule_WaitStatement(self) 

+

20862 else: 

+

20863 return visitor.visitChildren(self) 

+

20864 

+

20865 def rule_WaitStatement(self): 

+

20866 

+

20867 localctx = VHDLParser.Rule_WaitStatementContext(self, self._ctx, self.state) 

+

20868 self.enterRule(localctx, 510, self.RULE_rule_WaitStatement) 

+

20869 self._la = 0 # Token type 

+

20870 try: 

+

20871 self.enterOuterAlt(localctx, 1) 

+

20872 self.state = 3006 

+

20873 self._errHandler.sync(self) 

+

20874 _la = self._input.LA(1) 

+

20875 if _la == 163: 

+

20876 self.state = 3004 

+

20877 localctx.label = self.match(VHDLParser.LIT_IDENTIFIER) 

+

20878 self.state = 3005 

+

20879 self.match(VHDLParser.TOK_COLON) 

+

20880 

+

20881 self.state = 3008 

+

20882 self.match(VHDLParser.KW_WAIT) 

+

20883 self.state = 3010 

+

20884 self._errHandler.sync(self) 

+

20885 _la = self._input.LA(1) 

+

20886 if _la == 65: 

+

20887 self.state = 3009 

+

20888 self.rule_SensitivityClause() 

+

20889 

+

20890 self.state = 3013 

+

20891 self._errHandler.sync(self) 

+

20892 _la = self._input.LA(1) 

+

20893 if _la == 107: 

+

20894 self.state = 3012 

+

20895 self.rule_ConditionClause() 

+

20896 

+

20897 self.state = 3016 

+

20898 self._errHandler.sync(self) 

+

20899 _la = self._input.LA(1) 

+

20900 if _la == 37: 

+

20901 self.state = 3015 

+

20902 self.rule_TimeoutClause() 

+

20903 

+

20904 self.state = 3018 

+

20905 self.match(VHDLParser.TOK_SEMICOL) 

+

20906 except RecognitionException as re: 

+

20907 localctx.exception = re 

+

20908 self._errHandler.reportError(self, re) 

+

20909 self._errHandler.recover(self, re) 

+

20910 finally: 

+

20911 self.exitRule() 

+

20912 return localctx 

+

20913 

+

20914 class Rule_WaveformContext(ParserRuleContext): 

+

20915 __slots__ = 'parser' 

+

20916 

+

20917 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

20918 super().__init__(parent, invokingState) 

+

20919 self.parser = parser 

+

20920 self._rule_WaveformElement = None # Rule_WaveformElementContext 

+

20921 self.waveformElement = list() # of Rule_WaveformElementContexts 

+

20922 

+

20923 def rule_WaveformElement(self, i: int = None): 

+

20924 if i is None: 

+

20925 return self.getTypedRuleContexts(VHDLParser.Rule_WaveformElementContext) 

+

20926 else: 

+

20927 return self.getTypedRuleContext(VHDLParser.Rule_WaveformElementContext, i) 

+

20928 

+

20929 def TOK_COMMA(self, i: int = None): 

+

20930 if i is None: 

+

20931 return self.getTokens(VHDLParser.TOK_COMMA) 

+

20932 else: 

+

20933 return self.getToken(VHDLParser.TOK_COMMA, i) 

+

20934 

+

20935 def KW_UNAFFECTED(self): 

+

20936 return self.getToken(VHDLParser.KW_UNAFFECTED, 0) 

+

20937 

+

20938 def getRuleIndex(self): 

+

20939 return VHDLParser.RULE_rule_Waveform 

+

20940 

+

20941 def accept(self, visitor: ParseTreeVisitor): 

+

20942 if hasattr(visitor, "visitRule_Waveform"): 

+

20943 return visitor.visitRule_Waveform(self) 

+

20944 else: 

+

20945 return visitor.visitChildren(self) 

+

20946 

+

20947 def rule_Waveform(self): 

+

20948 

+

20949 localctx = VHDLParser.Rule_WaveformContext(self, self._ctx, self.state) 

+

20950 self.enterRule(localctx, 512, self.RULE_rule_Waveform) 

+

20951 self._la = 0 # Token type 

+

20952 try: 

+

20953 self.state = 3029 

+

20954 self._errHandler.sync(self) 

+

20955 token = self._input.LA(1) 

+

20956 if token in [6, 11, 58, 59, 61, 62, 63, 67, 119, 120, 132, 133, 138, 143, 147, 159, 160, 161, 162, 163]: 

+

20957 self.enterOuterAlt(localctx, 1) 

+

20958 self.state = 3020 

+

20959 localctx._rule_WaveformElement = self.rule_WaveformElement() 

+

20960 localctx.waveformElement.append(localctx._rule_WaveformElement) 

+

20961 self.state = 3025 

+

20962 self._errHandler.sync(self) 

+

20963 _la = self._input.LA(1) 

+

20964 while _la == 151: 

+

20965 self.state = 3021 

+

20966 self.match(VHDLParser.TOK_COMMA) 

+

20967 self.state = 3022 

+

20968 localctx._rule_WaveformElement = self.rule_WaveformElement() 

+

20969 localctx.waveformElement.append(localctx._rule_WaveformElement) 

+

20970 self.state = 3027 

+

20971 self._errHandler.sync(self) 

+

20972 _la = self._input.LA(1) 

+

20973 

+

20974 pass 

+

20975 elif token in [105]: 

+

20976 self.enterOuterAlt(localctx, 2) 

+

20977 self.state = 3028 

+

20978 self.match(VHDLParser.KW_UNAFFECTED) 

+

20979 pass 

+

20980 else: 

+

20981 raise NoViableAltException(self) 

+

20982 

+

20983 except RecognitionException as re: 

+

20984 localctx.exception = re 

+

20985 self._errHandler.reportError(self, re) 

+

20986 self._errHandler.recover(self, re) 

+

20987 finally: 

+

20988 self.exitRule() 

+

20989 return localctx 

+

20990 

+

20991 class Rule_WaveformElementContext(ParserRuleContext): 

+

20992 __slots__ = 'parser' 

+

20993 

+

20994 def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): 

+

20995 super().__init__(parent, invokingState) 

+

20996 self.parser = parser 

+

20997 self.expression = None # Rule_ExpressionContext 

+

20998 self.afterExpression = None # Rule_ExpressionContext 

+

20999 

+

21000 def rule_Expression(self, i: int = None): 

+

21001 if i is None: 

+

21002 return self.getTypedRuleContexts(VHDLParser.Rule_ExpressionContext) 

+

21003 else: 

+

21004 return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, i) 

+

21005 

+

21006 def KW_AFTER(self): 

+

21007 return self.getToken(VHDLParser.KW_AFTER, 0) 

+

21008 

+

21009 def KW_NULL(self): 

+

21010 return self.getToken(VHDLParser.KW_NULL, 0) 

+

21011 

+

21012 def getRuleIndex(self): 

+

21013 return VHDLParser.RULE_rule_WaveformElement 

+

21014 

+

21015 def accept(self, visitor: ParseTreeVisitor): 

+

21016 if hasattr(visitor, "visitRule_WaveformElement"): 

+

21017 return visitor.visitRule_WaveformElement(self) 

+

21018 else: 

+

21019 return visitor.visitChildren(self) 

+

21020 

+

21021 def rule_WaveformElement(self): 

+

21022 

+

21023 localctx = VHDLParser.Rule_WaveformElementContext(self, self._ctx, self.state) 

+

21024 self.enterRule(localctx, 514, self.RULE_rule_WaveformElement) 

+

21025 self._la = 0 # Token type 

+

21026 try: 

+

21027 self.state = 3041 

+

21028 self._errHandler.sync(self) 

+

21029 la_ = self._interp.adaptivePredict(self._input, 350, self._ctx) 

+

21030 if la_ == 1: 

+

21031 self.enterOuterAlt(localctx, 1) 

+

21032 self.state = 3031 

+

21033 localctx.expression = self.rule_Expression(0) 

+

21034 self.state = 3034 

+

21035 self._errHandler.sync(self) 

+

21036 _la = self._input.LA(1) 

+

21037 if _la == 8: 

+

21038 self.state = 3032 

+

21039 self.match(VHDLParser.KW_AFTER) 

+

21040 self.state = 3033 

+

21041 localctx.afterExpression = self.rule_Expression(0) 

+

21042 

+

21043 pass 

+

21044 

+

21045 elif la_ == 2: 

+

21046 self.enterOuterAlt(localctx, 2) 

+

21047 self.state = 3036 

+

21048 self.match(VHDLParser.KW_NULL) 

+

21049 self.state = 3039 

+

21050 self._errHandler.sync(self) 

+

21051 _la = self._input.LA(1) 

+

21052 if _la == 8: 

+

21053 self.state = 3037 

+

21054 self.match(VHDLParser.KW_AFTER) 

+

21055 self.state = 3038 

+

21056 localctx.afterExpression = self.rule_Expression(0) 

+

21057 

+

21058 pass 

+

21059 

+

21060 

+

21061 except RecognitionException as re: 

+

21062 localctx.exception = re 

+

21063 self._errHandler.reportError(self, re) 

+

21064 self._errHandler.recover(self, re) 

+

21065 finally: 

+

21066 self.exitRule() 

+

21067 return localctx 

+

21068 

+

21069 def sempred(self, localctx: RuleContext, ruleIndex: int, predIndex: int): 

+

21070 if self._predicates == None: 

+

21071 self._predicates = dict() 

+

21072 self._predicates[92] = self.rule_Expression_sempred 

+

21073 self._predicates[159] = self.rule_Name_sempred 

+

21074 pred = self._predicates.get(ruleIndex, None) 

+

21075 if pred is None: 

+

21076 raise Exception("No predicate with index:" + str(ruleIndex)) 

+

21077 else: 

+

21078 return pred(localctx, predIndex) 

+

21079 

+

21080 def rule_Expression_sempred(self, localctx: Rule_ExpressionContext, predIndex: int): 

+

21081 if predIndex == 0: 

+

21082 return self.precpred(self._ctx, 6) 

+

21083 

+

21084 if predIndex == 1: 

+

21085 return self.precpred(self._ctx, 5) 

+

21086 

+

21087 if predIndex == 2: 

+

21088 return self.precpred(self._ctx, 4) 

+

21089 

+

21090 if predIndex == 3: 

+

21091 return self.precpred(self._ctx, 3) 

+

21092 

+

21093 if predIndex == 4: 

+

21094 return self.precpred(self._ctx, 2) 

+

21095 

+

21096 if predIndex == 5: 

+

21097 return self.precpred(self._ctx, 1) 

+

21098 

+

21099 def rule_Name_sempred(self, localctx: Rule_NameContext, predIndex: int): 

+

21100 if predIndex == 6: 

+

21101 return self.precpred(self._ctx, 5) 

+

21102 

+

21103 if predIndex == 7: 

+

21104 return self.precpred(self._ctx, 4) 

+

21105 

+

21106 if predIndex == 8: 

+

21107 return self.precpred(self._ctx, 3) 

+

21108 

+

21109 if predIndex == 9: 

+

21110 return self.precpred(self._ctx, 2) 

+
+ + + diff --git a/coverage/d_2b67a29648fff107_Visitor_py.html b/coverage/d_2b67a29648fff107_Visitor_py.html new file mode 100644 index 000000000..816b2d683 --- /dev/null +++ b/coverage/d_2b67a29648fff107_Visitor_py.html @@ -0,0 +1,267 @@ + + + + + Coverage for pyVHDLParser/ANTLR4/Visitor.py: 0% + + + + + +
+
+

+ Coverage for pyVHDLParser/ANTLR4/Visitor.py: + 0% +

+ +

+ 116 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1from pyVHDLModel import DesignUnit 

+

2from pyVHDLModel.Base import Mode 

+

3from pyVHDLModel.Symbol import PackageSymbol 

+

4from .VHDLLexer import VHDLLexer 

+

5 

+

6from ..LanguageModel.DesignUnit import Context, Entity, Architecture, Configuration, Package, PackageBody 

+

7from ..LanguageModel.Reference import LibraryClause, UseClause, ContextReference 

+

8from ..LanguageModel.InterfaceItem import GenericConstantInterfaceItem, GenericTypeInterfaceItem, \ 

+

9 GenericPackageInterfaceItem, GenericFunctionInterfaceItem, GenericProcedureInterfaceItem, PortSignalInterfaceItem 

+

10from ..LanguageModel.Expression import AndExpression 

+

11 

+

12from .VHDLParser import * 

+

13from .VHDLParserVisitor import VHDLParserVisitor 

+

14 

+

15 

+

16class VHDLVisitor(VHDLParserVisitor): 

+

17 @staticmethod 

+

18 def checkRepeatedName(name1: Token, name2: Token, languageEntity: str): 

+

19 nameText: str = name1.text 

+

20 if name2 is not None: 

+

21 name2Text: str = name2.text 

+

22 if nameText.lower() != name2Text.lower(): 

+

23 raise Exception(f"Repeated {languageEntity} name '{name2Text}' must match {languageEntity} name '{nameText}'.") 

+

24 

+

25 return nameText 

+

26 

+

27 def visitRule_DesignFile(self, ctx: VHDLParser.Rule_DesignFileContext): 

+

28 return [self.visit(designUnit) for designUnit in ctx.designUnits] 

+

29 

+

30 def visitRule_LibraryClause(self, ctx: VHDLParser.Rule_LibraryClauseContext): 

+

31 names = [name.text for name in ctx.names] 

+

32 

+

33 return LibraryClause(names) 

+

34 

+

35 def visitRule_UseClause(self, ctx:VHDLParser.Rule_UseClauseContext): 

+

36 names = [self.visit(name) for name in ctx.names] 

+

37 

+

38 return UseClause(names) 

+

39 

+

40 def visitRule_SelectedName2(self, ctx:VHDLParser.Rule_SelectedName2Context): 

+

41 # TODO: needs to return a proper 'Name' 

+

42 return ctx.getText() 

+

43 

+

44 def visitRule_DesignUnit(self, ctx: VHDLParser.Rule_DesignUnitContext): 

+

45 # translate the design unit itself 

+

46 libraryUnit: DesignUnit = self.visit(ctx.libraryUnit) 

+

47 

+

48 # check if there are context items and add them to the design unit 

+

49 for contextItem in ctx.contextItems: 

+

50 ctxItem = self.visit(contextItem) 

+

51 libraryUnit.ContextItems.append(ctxItem) 

+

52 

+

53 if isinstance(ctxItem, LibraryClause): 

+

54 libraryUnit.LibraryReferences.append(ctxItem) 

+

55 elif isinstance(ctxItem, UseClause): 

+

56 libraryUnit.LibraryReferences.append(ctxItem) 

+

57 #elif isinstance(contextItem, ContextClause): 

+

58 # libraryUnit.LibraryReferences.append(contextItem) 

+

59 

+

60 return libraryUnit 

+

61 

+

62 # def visitRule_ContextDeclaration(self, ctx: VHDLParser.Rule_ContextDeclarationContext): 

+

63 

+

64 def visitRule_EntityDeclaration(self, ctx: VHDLParser.Rule_EntityDeclarationContext): 

+

65 entityName = self.checkRepeatedName(ctx.name, ctx.name2, "entity") 

+

66 

+

67 generics = self.visit(ctx.genericClause) if ctx.genericClause is not None else [] 

+

68 ports = self.visit(ctx.portClause) if ctx.portClause is not None else [] 

+

69 

+

70 entity = Entity(identifier=entityName, genericItems=generics, portItems=ports) 

+

71 entity.docstring = self.getDocString(ctx) 

+

72 return entity 

+

73 

+

74 def getDocString(self, ctx): 

+

75 start = ctx.start 

+

76 ts = ctx.parser.getTokenStream() 

+

77 i = 1 

+

78 r = [] 

+

79 while i <= start.tokenIndex: 

+

80 t: Token = ts.get(start.tokenIndex-i) 

+

81 if t.channel == VHDLLexer.COMMENT_CHANNEL: 

+

82 r.append(t.text) 

+

83 elif t.channel != VHDLLexer.WHITESPACE_CHANNEL: 

+

84 break 

+

85 i += 1 

+

86 return tuple(reversed(r)) 

+

87 

+

88 

+

89 def visitRule_Architecture(self, ctx:VHDLParser.Rule_ArchitectureContext): 

+

90 architectureName = self.checkRepeatedName(ctx.name, ctx.name2, "architecture") 

+

91 entityName: str = ctx.entityName.text # TODO: needs a Name 

+

92 

+

93 context = [] 

+

94 declaredItems = [] 

+

95 statements = [] 

+

96 

+

97 return Architecture(architectureName, entityName, context, declaredItems, statements) 

+

98 

+

99 def visitRule_ConfigurationDeclaration(self, ctx:VHDLParser.Rule_ConfigurationDeclarationContext): 

+

100 configurationName = self.checkRepeatedName(ctx.name, ctx.name2, "configuration") 

+

101 entityName: str = ctx.entityName.getText 

+

102 

+

103 context = [] 

+

104 

+

105 return Configuration(configurationName, context) 

+

106 

+

107 def visitRule_PackageDeclaration(self, ctx:VHDLParser.Rule_PackageDeclarationContext): 

+

108 packageName = self.checkRepeatedName(ctx.name, ctx.name2, "package") 

+

109 

+

110 return Package(packageName) 

+

111 

+

112 def visitRule_PackageBody(self, ctx:VHDLParser.Rule_PackageBodyContext): 

+

113 packageName = self.checkRepeatedName(ctx.name, ctx.name2, "package body") 

+

114 packageSymbol = PackageSymbol(packageName) 

+

115 

+

116 return PackageBody(packageSymbol) 

+

117 

+

118 def visitRule_GenericClause(self, ctx: VHDLParser.Rule_GenericClauseContext): 

+

119 generics = [] 

+

120 for element in ctx.elements: 

+

121 const = self.visit(element) 

+

122 generics.append(const) 

+

123 

+

124 return generics 

+

125 

+

126 def visitRule_InterfaceConstantDeclaration(self, ctx: VHDLParser.Rule_InterfaceConstantDeclarationContext): 

+

127 constantNames = self.visit(ctx.constantNames) 

+

128 if ctx.modeName is not None: 

+

129 mode = Mode(ctx.modeName.text) 

+

130 else: 

+

131 mode = Mode.Default 

+

132 

+

133 subtypeIndication = self.visit(ctx.subtypeIndication) 

+

134 defaultExpression = self.visit(ctx.defaultValue) if ctx.defaultValue is not None else None 

+

135 

+

136 return GenericConstantInterfaceItem(constantNames, mode, subtypeIndication, defaultExpression) 

+

137 

+

138 def visitRule_PortClause(self, ctx: VHDLParser.Rule_PortClauseContext): 

+

139 return [self.visit(port) for port in ctx.ports] 

+

140 

+

141 def visitRule_InterfacePortDeclaration(self, ctx:VHDLParser.Rule_InterfaceSignalDeclarationContext): 

+

142 signalNames = self.visit(ctx.names) 

+

143 if ctx.modeName is not None: 

+

144 modeToken:Token = ctx.modeName.name 

+

145 modeType = modeToken.type 

+

146 

+

147 if modeType == VHDLParser.KW_IN: 

+

148 mode = Mode.In 

+

149 elif modeType == VHDLParser.KW_OUT: 

+

150 mode = Mode.Out 

+

151 elif modeType == VHDLParser.KW_INOUT: 

+

152 mode = Mode.InOut 

+

153 elif modeType == VHDLParser.KW_BUFFER: 

+

154 mode = Mode.Buffer 

+

155 elif modeType == VHDLParser.KW_LINKAGE: 

+

156 mode = Mode.Linkage 

+

157 else: 

+

158 raise Exception() 

+

159 else: 

+

160 mode = Mode.Default 

+

161 

+

162 subtype = None 

+

163 defaultExpression = None 

+

164 

+

165 return PortSignalInterfaceItem(signalNames, mode, subtype, defaultExpression) 

+

166 

+

167 def visitRule_IdentifierList(self, ctx: VHDLParser.Rule_IdentifierListContext): 

+

168 return [identifier.text for identifier in ctx.identifiers] 

+
+ + + diff --git a/coverage/d_2b67a29648fff107___init___py.html b/coverage/d_2b67a29648fff107___init___py.html new file mode 100644 index 000000000..c6f32840b --- /dev/null +++ b/coverage/d_2b67a29648fff107___init___py.html @@ -0,0 +1,300 @@ + + + + + Coverage for pyVHDLParser/ANTLR4/__init__.py: 0% + + + + + +
+
+

+ Coverage for pyVHDLParser/ANTLR4/__init__.py: + 0% +

+ +

+ 50 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1from typing import Dict, List 

+

2 

+

3from antlr4 import CommonTokenStream, Token as antlrToken 

+

4 

+

5from .. import SourceCodePosition 

+

6from ..Token import Token, StartOfDocumentToken, EndOfDocumentToken, FusedCharacterToken, IntegerLiteralToken, \ 

+

7 IndentationToken, LinebreakToken, SpaceToken, SingleLineCommentToken, MultiLineCommentToken, CharacterToken, \ 

+

8 StringLiteralToken, BitStringLiteralToken 

+

9from ..Token.Keywords import * 

+

10 

+

11from .VHDLLexer import VHDLLexer 

+

12 

+

13 

+

14class ANTLR2Token: 

+

15 TRANSLATE: Dict[int, type(KeywordToken)] = { 

+

16 VHDLLexer.OP_ABS: AbsOperator, 

+

17 # VHDLLexer.KW_ACROSS: AcrossKeyword, 

+

18 VHDLLexer.KW_ACCESS: AccessKeyword, 

+

19 VHDLLexer.KW_AFTER: AfterKeyword, 

+

20 VHDLLexer.KW_ALIAS: AliasKeyword, 

+

21 VHDLLexer.KW_ALL: AllKeyword, 

+

22 VHDLLexer.OP_AND: AndOperator, 

+

23 VHDLLexer.KW_ARCHITECTURE: ArchitectureKeyword, 

+

24 VHDLLexer.KW_ARRAY: ArrayKeyword, 

+

25 VHDLLexer.KW_ASSERT: AssertKeyword, 

+

26 VHDLLexer.KW_ATTRIBUTE: AttributeKeyword, 

+

27 # VHDLLexer.KW_PSL_ASSUME: AssumeKeyword, 

+

28 # VHDLLexer.KW_AMS_ACROSS: AcrossKeyword, 

+

29 VHDLLexer.KW_BEGIN: BeginKeyword, 

+

30 VHDLLexer.KW_BLOCK: BlockKeyword, 

+

31 VHDLLexer.KW_BODY: BodyKeyword, 

+

32 VHDLLexer.KW_BUFFER: BufferKeyword, 

+

33 VHDLLexer.KW_BUS: BusKeyword, 

+

34 # VHDLLexer.KW_BREAK: BreakKeyword, 

+

35 VHDLLexer.KW_CASE: CaseKeyword, 

+

36 VHDLLexer.KW_COMPONENT: ComponentKeyword, 

+

37 VHDLLexer.KW_CONFIGURATION: ConfigurationKeyword, 

+

38 VHDLLexer.KW_CONSTANT: ConstantKeyword, 

+

39 VHDLLexer.KW_CONTEXT: ContextKeyword, 

+

40 # VHDLLexer.KW_PSL_COVER: CoverKeyword, 

+

41 VHDLLexer.KW_DEFAULT: DefaultKeyword, 

+

42 VHDLLexer.KW_DISCONNECT: DisconnectKeyword, 

+

43 VHDLLexer.KW_DOWNTO: DowntoKeyword, 

+

44 VHDLLexer.KW_ELSE: ElseKeyword, 

+

45 VHDLLexer.KW_ELSIF: ElsIfKeyword, 

+

46 VHDLLexer.KW_END: EndKeyword, 

+

47 VHDLLexer.KW_ENTITY: EntityKeyword, 

+

48 VHDLLexer.KW_EXIT: ExitKeyword, 

+

49 VHDLLexer.KW_FILE: FileKeyword, 

+

50 VHDLLexer.KW_FOR: ForKeyword, 

+

51 VHDLLexer.KW_FORCE: ForceKeyword, 

+

52 VHDLLexer.KW_FUNCTION: FunctionKeyword, 

+

53 VHDLLexer.KW_GENERATE: GenerateKeyword, 

+

54 VHDLLexer.KW_GENERIC: GenericKeyword, 

+

55 # VHDLLexer.KW_GROUP: GroupKeyword, 

+

56 VHDLLexer.KW_GUARDED: GuardedKeyword, 

+

57 VHDLLexer.KW_IF: IfKeyword, 

+

58 VHDLLexer.KW_IMPURE: ImpureKeyword, 

+

59 VHDLLexer.KW_IN: InKeyword, 

+

60 VHDLLexer.KW_INERTIAL: InertialKeyword, 

+

61 VHDLLexer.KW_INOUT: InoutKeyword, 

+

62 VHDLLexer.KW_IS: IsKeyword, 

+

63 VHDLLexer.KW_LABEL: LabelKeyword, 

+

64 VHDLLexer.KW_LIBRARY: LibraryKeyword, 

+

65 VHDLLexer.KW_LINKAGE: LinkageKeyword, 

+

66 VHDLLexer.KW_LOOP: LoopKeyword, 

+

67 VHDLLexer.KW_PSL_LITERAL: LiteralKeyword, 

+

68 # VHDLLexer.KW_LIMIT: LimitKeyword, 

+

69 VHDLLexer.KW_MAP: MapKeyword, 

+

70 VHDLLexer.OP_MOD: ModuloOperator, 

+

71 VHDLLexer.OP_NAND: NandOperator, 

+

72 VHDLLexer.KW_NEW: NewKeyword, 

+

73 VHDLLexer.KW_NEXT: NextKeyword, 

+

74 VHDLLexer.OP_NOR: NorOperator, 

+

75 VHDLLexer.OP_NOT: NotOperator, 

+

76 VHDLLexer.KW_NULL: NullKeyword, 

+

77 # VHDLLexer.KW_NATURE: NatureKeyword, 

+

78 # VHDLLexer.KW_NOISE: NoiseKeyword, 

+

79 VHDLLexer.KW_OF: OfKeyword, 

+

80 VHDLLexer.KW_ON: OnKeyword, 

+

81 VHDLLexer.KW_OPEN: OpenKeyword, 

+

82 VHDLLexer.OP_OR: OrOperator, 

+

83 VHDLLexer.KW_OTHERS: OthersKeyword, 

+

84 VHDLLexer.KW_OUT: OutKeyword, 

+

85 VHDLLexer.KW_PACKAGE: PackageKeyword, 

+

86 VHDLLexer.KW_PARAMETER: ParameterKeyword, 

+

87 VHDLLexer.KW_PORT: PortKeyword, 

+

88 VHDLLexer.KW_POSTPONED: PostponedKeyword, 

+

89 VHDLLexer.KW_PRIVATE: PrivateKeyword, 

+

90 VHDLLexer.KW_PROCEDURE: ProcedureKeyword, 

+

91 VHDLLexer.KW_PROCESS: ProcessKeyword, 

+

92 VHDLLexer.KW_PROTECTED: ProtectedKeyword, 

+

93 VHDLLexer.KW_PURE: PureKeyword, 

+

94 # VHDLLexer.KW_PROCEDURAL: ProceduralKeyword, 

+

95 # VHDLLexer.KW_QUANTITY: 'quantityKeyword, 

+

96 VHDLLexer.KW_RANGE: RangeKeyword, 

+

97 VHDLLexer.KW_RECORD: RecordKeyword, 

+

98 VHDLLexer.KW_REGISTER: RegisterKeyword, 

+

99 VHDLLexer.KW_REJECT: RejectKeyword, 

+

100 VHDLLexer.KW_RELEASE: ReleaseKeyword, 

+

101 VHDLLexer.OP_REM: RemainderOperator, 

+

102 VHDLLexer.KW_REPORT: ReportKeyword, 

+

103 VHDLLexer.KW_RETURN: ReturnKeyword, 

+

104 VHDLLexer.OP_ROL: RolOperator, 

+

105 VHDLLexer.OP_ROR: RorOperator, 

+

106 # VHDLLexer.KW_PSL_RESTRICT: RestrictKeyword, 

+

107 # VHDLLexer.KW_REFERENCE: ReferenceKeyword, 

+

108 VHDLLexer.KW_SELECT: SelectKeyword, 

+

109 VHDLLexer.KW_SEVERITY: SeverityKeyword, 

+

110 VHDLLexer.KW_SHARED: SharedKeyword, 

+

111 VHDLLexer.KW_SIGNAL: SignalKeyword, 

+

112 VHDLLexer.OP_SLA: SlaOperator, 

+

113 VHDLLexer.OP_SLL: SllOperator, 

+

114 VHDLLexer.OP_SRA: SraOperator, 

+

115 VHDLLexer.OP_SRL: SrlOperator, 

+

116 VHDLLexer.KW_SUBTYPE: SubtypeKeyword, 

+

117 # VHDLLexer.KW_PSL_STRONG: StrongKeyword, 

+

118 # VHDLLexer.KW_PSL_SEQUENCE: SequenceKeyword, 

+

119 # VHDLLexer.KW_SPECTRUM: SpectrumKeyword, 

+

120 # VHDLLexer.KW_SUBNATURE: SubnatureKeyword, 

+

121 VHDLLexer.KW_THEN: ThenKeyword, 

+

122 VHDLLexer.KW_TO: ToKeyword, 

+

123 VHDLLexer.KW_TRANSPORT: TransportKeyword, 

+

124 VHDLLexer.KW_TYPE: TypeKeyword, 

+

125 # VHDLLexer.KW_TERMINAL: TerminalKeyword, 

+

126 # VHDLLexer.KW_THROUGH: ThroughKeyword, 

+

127 # VHDLLexer.KW_TOLERANCE: ToleranceKeyword, 

+

128 VHDLLexer.KW_UNAFFECTED: UnaffectedKeyword, 

+

129 VHDLLexer.KW_UNITS: UnitsKeyword, 

+

130 VHDLLexer.KW_UNTIL: UntilKeyword, 

+

131 VHDLLexer.KW_USE: UseKeyword, 

+

132 VHDLLexer.KW_VARIABLE: VariableKeyword, 

+

133 VHDLLexer.KW_VIEW: ViewKeyword, 

+

134 # VHDLLexer.KW_PSL_VMODE: VModeKeyword, 

+

135 # VHDLLexer.KW_PSL_VPKG: VPackageKeyword, 

+

136 # VHDLLexer.KW_PSL_VPROP: VPropertyKeyword,, 

+

137 # VHDLLexer.KW_PSL_VUNIT: VunitKeyword, 

+

138 VHDLLexer.KW_WAIT: WaitKeyword, 

+

139 VHDLLexer.KW_WITH: WithKeyword, 

+

140 VHDLLexer.KW_WHEN: WhenKeyword, 

+

141 VHDLLexer.KW_WHILE: WhileKeyword, 

+

142 VHDLLexer.OP_XNOR: XnorOperator, 

+

143 VHDLLexer.OP_XOR: XorOperator, 

+

144 } 

+

145 

+

146 def ConvertToTokenChain(self, tokenStream: CommonTokenStream) -> List[Token]: 

+

147 allTokens: List[Token] = [] 

+

148 tokenIndex: int = -1 

+

149 

+

150 lastToken = StartOfDocumentToken() 

+

151 while True: 

+

152 allTokens.append(lastToken) 

+

153 tokenIndex += 1 

+

154 

+

155 aToken: antlrToken = tokenStream.get(tokenIndex) 

+

156 start = SourceCodePosition(aToken.line, aToken.column, -1) 

+

157 

+

158 if aToken.type == antlrToken.EOF: 

+

159 allTokens.append(EndOfDocumentToken(lastToken, start)) 

+

160 return allTokens 

+

161 

+

162 try: 

+

163 tokenType = self.TRANSLATE[aToken.type] 

+

164 lastToken = tokenType(lastToken, aToken.text, start) 

+

165 continue 

+

166 

+

167 except KeyError: 

+

168 pass 

+

169 

+

170 if aToken.type in ( 

+

171 VHDLLexer.TOK_SEMICOL, VHDLLexer.TOK_COMMA, VHDLLexer.TOK_COLON, VHDLLexer.TOK_DOT, VHDLLexer.TOK_LP, 

+

172 VHDLLexer.TOK_RP, VHDLLexer.TOK_LB, VHDLLexer.TOK_RB, VHDLLexer.OP_MINUS, VHDLLexer.OP_PLUS, VHDLLexer.OP_MUL, 

+

173 VHDLLexer.OP_DIV, VHDLLexer.TOK_BAR, VHDLLexer.TOK_TICK, VHDLLexer.OP_CONCAT, VHDLLexer.OP_CONDITION): 

+

174 lastToken = CharacterToken(lastToken, aToken.text, start) 

+

175 elif aToken.type in ( 

+

176 VHDLLexer.TOK_SIG_ASSIGN, VHDLLexer.TOK_VAR_ASSIGN, VHDLLexer.TOK_BOX, VHDLLexer.OP_POW, VHDLLexer.OP_EQ, 

+

177 VHDLLexer.OP_NE, VHDLLexer.OP_LT, VHDLLexer.OP_LT, VHDLLexer.OP_GT, VHDLLexer.OP_GE, VHDLLexer.OP_IEQ, 

+

178 VHDLLexer.OP_INE, VHDLLexer.OP_ILT, VHDLLexer.OP_ILE, VHDLLexer.OP_IGT, VHDLLexer.OP_IGE, VHDLLexer.TOK_RARROW): 

+

179 lastToken = FusedCharacterToken(lastToken, aToken.text, start, start) 

+

180 elif aToken.type == VHDLLexer.LIT_IDENTIFIER: 

+

181 lastToken = IdentifierToken(lastToken, aToken.text, start) 

+

182 elif aToken.type == VHDLLexer.LIT_ABSTRACT: 

+

183 lastToken = IntegerLiteralToken(lastToken, aToken.text, start) 

+

184 elif aToken.type == VHDLLexer.LIT_CHARACTER: 

+

185 lastToken = CharacterToken(lastToken, aToken.text, start) 

+

186 elif aToken.type == VHDLLexer.LIT_STRING: 

+

187 lastToken = StringLiteralToken(lastToken, aToken.text, start, start) 

+

188 elif aToken.type == VHDLLexer.LIT_BIT_STRING: 

+

189 lastToken = BitStringLiteralToken(lastToken, aToken.text, start, start) 

+

190 elif aToken.type == VHDLLexer.WHITESPACE: 

+

191 tokenType = IndentationToken if isinstance(lastToken, LinebreakToken) else SpaceToken 

+

192 lastToken = tokenType(lastToken, aToken.text, start) 

+

193 elif aToken.type == VHDLLexer.LINEBREAK: 

+

194 lastToken = LinebreakToken(lastToken, aToken.text, start) 

+

195 elif aToken.type == VHDLLexer.COMMENT_LINE: 

+

196 lastToken = SingleLineCommentToken(lastToken, aToken.text, start) 

+

197 elif aToken.type == VHDLLexer.COMMENT_BLOCK: 

+

198 lastToken = MultiLineCommentToken(lastToken, aToken.text, start) 

+

199 else: 

+

200 raise Exception( 

+

201 f"Unknown ANTLR4 token type '{VHDLLexer.symbolicNames[aToken.type]}' ({aToken.type}) with value '{aToken.text}'.") 

+
+ + + diff --git a/coverage/d_2ec5d9f57d6cf7d0_DesignUnit_py.html b/coverage/d_2ec5d9f57d6cf7d0_DesignUnit_py.html new file mode 100644 index 000000000..0c30a5fa6 --- /dev/null +++ b/coverage/d_2ec5d9f57d6cf7d0_DesignUnit_py.html @@ -0,0 +1,164 @@ + + + + + Coverage for pyVHDLParser/LanguageModel/DesignUnit.py: 0% + + + + + +
+
+

+ Coverage for pyVHDLParser/LanguageModel/DesignUnit.py: + 0% +

+ +

+ 22 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2022 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLModel.DesignUnit import Context as ModelContext, Entity as ModelEntity, Architecture as ModelArchitecture 

+

33from pyVHDLModel.DesignUnit import Configuration as ModelConfiguration, Package as ModelPackage, PackageBody as ModelPackageBody 

+

34 

+

35from ..Token import Token 

+

36 

+

37 

+

38@export 

+

39class Context(ModelContext): 

+

40 pass 

+

41 

+

42 

+

43@export 

+

44class Entity(ModelEntity): 

+

45 _startToken: Token 

+

46 

+

47 

+

48@export 

+

49class Architecture(ModelArchitecture): 

+

50 pass 

+

51 

+

52 

+

53@export 

+

54class Configuration(ModelConfiguration): 

+

55 pass 

+

56 

+

57 

+

58@export 

+

59class Package(ModelPackage): 

+

60 pass 

+

61 

+

62 

+

63@export 

+

64class PackageBody(ModelPackageBody): 

+

65 pass 

+
+ + + diff --git a/coverage/d_2ec5d9f57d6cf7d0_Expression_py.html b/coverage/d_2ec5d9f57d6cf7d0_Expression_py.html new file mode 100644 index 000000000..39d458903 --- /dev/null +++ b/coverage/d_2ec5d9f57d6cf7d0_Expression_py.html @@ -0,0 +1,135 @@ + + + + + Coverage for pyVHDLParser/LanguageModel/Expression.py: 0% + + + + + +
+
+

+ Coverage for pyVHDLParser/LanguageModel/Expression.py: + 0% +

+ +

+ 3 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2022 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyVHDLModel.Expression import ( 

+

31 AndExpression as ModelAndExpression 

+

32) 

+

33 

+

34 

+

35class AndExpression(ModelAndExpression): 

+

36 pass 

+
+ + + diff --git a/coverage/d_2ec5d9f57d6cf7d0_InterfaceItem_py.html b/coverage/d_2ec5d9f57d6cf7d0_InterfaceItem_py.html new file mode 100644 index 000000000..2606b85b0 --- /dev/null +++ b/coverage/d_2ec5d9f57d6cf7d0_InterfaceItem_py.html @@ -0,0 +1,160 @@ + + + + + Coverage for pyVHDLParser/LanguageModel/InterfaceItem.py: 0% + + + + + +
+
+

+ Coverage for pyVHDLParser/LanguageModel/InterfaceItem.py: + 0% +

+ +

+ 13 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2022 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyVHDLModel.Interface import ( 

+

31 GenericConstantInterfaceItem as ModelGenericConstantInterfaceItem, 

+

32 GenericTypeInterfaceItem as ModelGenericTypeInterfaceItem, 

+

33 GenericPackageInterfaceItem as ModelGenericPackageInterfaceItem, 

+

34 GenericFunctionInterfaceItem as ModelGenericFunctionInterfaceItem, 

+

35 GenericProcedureInterfaceItem as ModelGenericProcedureInterfaceItem, 

+

36 PortSignalInterfaceItem as ModelPortSignalInterfaceItem 

+

37) 

+

38 

+

39 

+

40class GenericConstantInterfaceItem(ModelGenericConstantInterfaceItem): 

+

41 pass 

+

42 

+

43 

+

44class GenericTypeInterfaceItem(ModelGenericTypeInterfaceItem): 

+

45 pass 

+

46 

+

47 

+

48class GenericPackageInterfaceItem(ModelGenericPackageInterfaceItem): 

+

49 pass 

+

50 

+

51 

+

52class GenericFunctionInterfaceItem(ModelGenericFunctionInterfaceItem): 

+

53 pass 

+

54 

+

55 

+

56class GenericProcedureInterfaceItem(ModelGenericProcedureInterfaceItem): 

+

57 pass 

+

58 

+

59 

+

60class PortSignalInterfaceItem(ModelPortSignalInterfaceItem): 

+

61 pass 

+
+ + + diff --git a/coverage/d_2ec5d9f57d6cf7d0_Reference_py.html b/coverage/d_2ec5d9f57d6cf7d0_Reference_py.html new file mode 100644 index 000000000..b5e0a7f26 --- /dev/null +++ b/coverage/d_2ec5d9f57d6cf7d0_Reference_py.html @@ -0,0 +1,142 @@ + + + + + Coverage for pyVHDLParser/LanguageModel/Reference.py: 0% + + + + + +
+
+

+ Coverage for pyVHDLParser/LanguageModel/Reference.py: + 0% +

+ +

+ 8 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2022 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyVHDLModel.DesignUnit import LibraryClause as ModelLibraryClause, UseClause as ModelUseClause 

+

31from pyVHDLModel.DesignUnit import ContextReference as ModelContextReference 

+

32 

+

33 

+

34class LibraryClause(ModelLibraryClause): 

+

35 pass 

+

36 

+

37 

+

38class UseClause(ModelUseClause): 

+

39 pass 

+

40 

+

41 

+

42class ContextReference(ModelContextReference): 

+

43 pass 

+
+ + + diff --git a/coverage/d_2ec5d9f57d6cf7d0___init___py.html b/coverage/d_2ec5d9f57d6cf7d0___init___py.html new file mode 100644 index 000000000..cb56fc907 --- /dev/null +++ b/coverage/d_2ec5d9f57d6cf7d0___init___py.html @@ -0,0 +1,143 @@ + + + + + Coverage for pyVHDLParser/LanguageModel/__init__.py: 0% + + + + + +
+
+

+ Coverage for pyVHDLParser/LanguageModel/__init__.py: + 0% +

+ +

+ 10 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pathlib import Path 

+

31 

+

32from pyVHDLModel import Document as ModelDocument 

+

33from pyVHDLParser.Token import StartOfDocumentToken, EndOfDocumentToken 

+

34 

+

35 

+

36class Document(ModelDocument): 

+

37 _startOfTokenStream: StartOfDocumentToken 

+

38 _endOfTokenStream: EndOfDocumentToken 

+

39 

+

40 def __init__(self, path: Path, startOfTokenStream: StartOfDocumentToken, endOfTokenStream: EndOfDocumentToken): 

+

41 super().__init__(path) 

+

42 

+

43 self._startOfTokenStream = startOfTokenStream 

+

44 self._endOfTokenStream = endOfTokenStream 

+
+ + + diff --git a/coverage/d_331d1eb816eb5c25_Constant_py.html b/coverage/d_331d1eb816eb5c25_Constant_py.html new file mode 100644 index 000000000..e3abeff71 --- /dev/null +++ b/coverage/d_331d1eb816eb5c25_Constant_py.html @@ -0,0 +1,170 @@ + + + + + Coverage for pyVHDLParser/Blocks/Object/Constant.py: 76% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/Object/Constant.py: + 76% +

+ +

+ 33 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Token import SpaceToken, LinebreakToken, CommentToken 

+

33from pyVHDLParser.Token.Keywords import BoundaryToken 

+

34from pyVHDLParser.Blocks import TokenToBlockParser, CommentBlock, BlockParserException 

+

35from pyVHDLParser.Blocks.Common import LinebreakBlock 

+

36from pyVHDLParser.Blocks.Expression import ExpressionBlockEndedBySemicolon 

+

37from pyVHDLParser.Blocks.Object import ObjectDeclarationEndMarkerBlock, ObjectDeclarationBlock 

+

38 

+

39 

+

40@export 

+

41class ConstantDeclarationEndMarkerBlock(ObjectDeclarationEndMarkerBlock): 

+

42 pass 

+

43 

+

44 

+

45@export 

+

46class ConstantDeclarationDefaultExpressionBlock(ExpressionBlockEndedBySemicolon): 

+

47 END_BLOCK = ConstantDeclarationEndMarkerBlock 

+

48 

+

49 

+

50@export 

+

51class ConstantDeclarationBlock(ObjectDeclarationBlock): 

+

52 OBJECT_KIND = "constant" 

+

53 EXPRESSION_BLOCK = ConstantDeclarationDefaultExpressionBlock 

+

54 END_BLOCK = ConstantDeclarationEndMarkerBlock 

+

55 

+

56 @classmethod 

+

57 def stateConstantKeyword(cls, parserState: TokenToBlockParser): 

+

58 token = parserState.Token 

+

59 if isinstance(token, SpaceToken): 59 ↛ 63line 59 didn't jump to line 63, because the condition on line 59 was never false

+

60 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

61 parserState.NextState = cls.stateWhitespace1 

+

62 return 

+

63 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

64 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

65 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken) 

+

66 _ = block(parserState.NewBlock, token) 

+

67 parserState.TokenMarker = None 

+

68 parserState.NextState = cls.stateWhitespace1 

+

69 return 

+

70 

+

71 raise BlockParserException("Expected whitespace after keyword CONSTANT.", token) 

+
+ + + diff --git a/coverage/d_331d1eb816eb5c25_SharedVariable_py.html b/coverage/d_331d1eb816eb5c25_SharedVariable_py.html new file mode 100644 index 000000000..2cac228b0 --- /dev/null +++ b/coverage/d_331d1eb816eb5c25_SharedVariable_py.html @@ -0,0 +1,262 @@ + + + + + Coverage for pyVHDLParser/Blocks/Object/SharedVariable.py: 23% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/Object/SharedVariable.py: + 23% +

+ +

+ 117 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Blocks import TokenToBlockParser, CommentBlock, BlockParserException 

+

33from pyVHDLParser.Blocks.Common import LinebreakBlock, WhitespaceBlock 

+

34from pyVHDLParser.Blocks.Object import ObjectDeclarationEndMarkerBlock, ObjectDeclarationBlock 

+

35from pyVHDLParser.Token import SpaceToken, LinebreakToken, CommentToken, WordToken 

+

36from pyVHDLParser.Token import ExtendedIdentifier, MultiLineCommentToken, CharacterToken 

+

37from pyVHDLParser.Token.Keywords import BoundaryToken, IdentifierToken, EndToken 

+

38 

+

39 

+

40@export 

+

41class SharedVariableDeclarationEndMarkerBlock(ObjectDeclarationEndMarkerBlock): 

+

42 pass 

+

43 

+

44 

+

45@export 

+

46class SharedVariableDeclarationBlock(ObjectDeclarationBlock): 

+

47 OBJECT_KIND = "variable" 

+

48 END_BLOCK = SharedVariableDeclarationEndMarkerBlock 

+

49 

+

50 @classmethod 

+

51 def stateSharedKeyword(cls, parserState: TokenToBlockParser): 

+

52 token = parserState.Token 

+

53 if isinstance(token, SpaceToken): 

+

54 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

55 parserState.NextState = cls.stateWhitespace0 

+

56 return 

+

57 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

58 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

59 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken) 

+

60 _ = block(parserState.NewBlock, token) 

+

61 parserState.TokenMarker = None 

+

62 parserState.NextState = cls.stateWhitespace0 

+

63 return 

+

64 

+

65 raise BlockParserException("Expected whitespace after keyword SHARED.", token) 

+

66 

+

67 @classmethod 

+

68 def stateWhitespace0(cls, parserState: TokenToBlockParser): 

+

69 token = parserState.Token 

+

70 if isinstance(token, WordToken): 

+

71 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

72 parserState.NextState = cls.stateVariableKeyword 

+

73 return 

+

74 elif isinstance(token, ExtendedIdentifier): 

+

75 parserState.NextState = cls.stateVariableKeyword 

+

76 return 

+

77 elif isinstance(token, LinebreakToken): 

+

78 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

79 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

80 _ = LinebreakBlock(parserState.NewBlock, token) 

+

81 else: 

+

82 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

83 parserState.TokenMarker = None 

+

84 return 

+

85 elif isinstance(token, CommentToken): 

+

86 parserState.NewBlock = CommentBlock(parserState.LastBlock, token) 

+

87 parserState.TokenMarker = None 

+

88 return 

+

89 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

90 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

91 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

92 parserState.TokenMarker = None 

+

93 return 

+

94 

+

95 raise BlockParserException("Expected whitespace after keyword SHARED.", token) 

+

96 

+

97 @classmethod 

+

98 def stateVariableKeyword(cls, parserState: TokenToBlockParser): 

+

99 token = parserState.Token 

+

100 if isinstance(token, SpaceToken): 

+

101 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

102 parserState.NextState = cls.stateWhitespace1 

+

103 return 

+

104 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

105 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

106 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken) 

+

107 _ = block(parserState.NewBlock, token) 

+

108 parserState.TokenMarker = None 

+

109 parserState.NextState = cls.stateWhitespace1 

+

110 return 

+

111 

+

112 raise BlockParserException("Expected whitespace after keyword VARIABLE.", token) 

+

113 

+

114 @classmethod 

+

115 def stateSubtypeIndication(cls, parserState: TokenToBlockParser): 

+

116 token = parserState.Token 

+

117 if isinstance(token, CharacterToken) and (token == ';'): 

+

118 parserState.NewToken = EndToken(fromExistingToken=token) 

+

119 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

120 _ = cls.END_BLOCK(parserState.NewBlock, parserState.NewToken) 

+

121 parserState.Pop() 

+

122 return 

+

123 elif isinstance(token, SpaceToken): 

+

124 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

125 parserState.NextState = cls.stateWhitespace4 

+

126 return 

+

127 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

128 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

129 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

130 _ = block(parserState.NewBlock, token) 

+

131 parserState.TokenMarker = None 

+

132 parserState.NextState = cls.stateWhitespace4 

+

133 return 

+

134 

+

135 raise BlockParserException("Expected ';' or whitespace after subtype indication.", token) 

+

136 

+

137 @classmethod 

+

138 def stateWhitespace4(cls, parserState: TokenToBlockParser): 

+

139 token = parserState.Token 

+

140 if isinstance(token, CharacterToken) and (token == ";"): 

+

141 parserState.NewToken = EndToken(fromExistingToken=token) 

+

142 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

143 parserState.Pop() 

+

144 return 

+

145 elif isinstance(token, LinebreakToken): 

+

146 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

147 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

148 _ = LinebreakBlock(parserState.NewBlock, token) 

+

149 else: 

+

150 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

151 parserState.TokenMarker = None 

+

152 return 

+

153 elif isinstance(token, CommentToken): 

+

154 parserState.NewBlock = CommentBlock(parserState.LastBlock, token) 

+

155 parserState.TokenMarker = None 

+

156 return 

+

157 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

158 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

159 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

160 parserState.TokenMarker = None 

+

161 return 

+

162 

+

163 raise BlockParserException("Expected ';' after subtype indication.", token) 

+
+ + + diff --git a/coverage/d_331d1eb816eb5c25_Signal_py.html b/coverage/d_331d1eb816eb5c25_Signal_py.html new file mode 100644 index 000000000..6fe141055 --- /dev/null +++ b/coverage/d_331d1eb816eb5c25_Signal_py.html @@ -0,0 +1,170 @@ + + + + + Coverage for pyVHDLParser/Blocks/Object/Signal.py: 76% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/Object/Signal.py: + 76% +

+ +

+ 33 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Token import SpaceToken, LinebreakToken, CommentToken 

+

33from pyVHDLParser.Token.Keywords import BoundaryToken 

+

34from pyVHDLParser.Blocks import TokenToBlockParser, CommentBlock, BlockParserException 

+

35from pyVHDLParser.Blocks.Common import LinebreakBlock 

+

36from pyVHDLParser.Blocks.Expression import ExpressionBlockEndedBySemicolon 

+

37from pyVHDLParser.Blocks.Object import ObjectDeclarationEndMarkerBlock, ObjectDeclarationBlock 

+

38 

+

39 

+

40@export 

+

41class SignalDeclarationEndMarkerBlock(ObjectDeclarationEndMarkerBlock): 

+

42 pass 

+

43 

+

44 

+

45@export 

+

46class SignalDeclarationDefaultExpressionBlock(ExpressionBlockEndedBySemicolon): 

+

47 END_BLOCK = SignalDeclarationEndMarkerBlock 

+

48 

+

49 

+

50@export 

+

51class SignalDeclarationBlock(ObjectDeclarationBlock): 

+

52 OBJECT_KIND = "signal" 

+

53 EXPRESSION_BLOCK = SignalDeclarationDefaultExpressionBlock 

+

54 END_BLOCK = SignalDeclarationEndMarkerBlock 

+

55 

+

56 @classmethod 

+

57 def stateSignalKeyword(cls, parserState: TokenToBlockParser): 

+

58 token = parserState.Token 

+

59 if isinstance(token, SpaceToken): 59 ↛ 63line 59 didn't jump to line 63, because the condition on line 59 was never false

+

60 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

61 parserState.NextState = cls.stateWhitespace1 

+

62 return 

+

63 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

64 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

65 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken) 

+

66 _ = block(parserState.NewBlock, token) 

+

67 parserState.TokenMarker = None 

+

68 parserState.NextState = cls.stateWhitespace1 

+

69 return 

+

70 

+

71 raise BlockParserException("Expected whitespace after keyword SIGNAL.", token) 

+
+ + + diff --git a/coverage/d_331d1eb816eb5c25_Variable_py.html b/coverage/d_331d1eb816eb5c25_Variable_py.html new file mode 100644 index 000000000..96c18fdae --- /dev/null +++ b/coverage/d_331d1eb816eb5c25_Variable_py.html @@ -0,0 +1,170 @@ + + + + + Coverage for pyVHDLParser/Blocks/Object/Variable.py: 62% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/Object/Variable.py: + 62% +

+ +

+ 33 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Token import SpaceToken, LinebreakToken, CommentToken 

+

33from pyVHDLParser.Token.Keywords import BoundaryToken 

+

34from pyVHDLParser.Blocks import TokenToBlockParser, CommentBlock, BlockParserException 

+

35from pyVHDLParser.Blocks.Common import LinebreakBlock 

+

36from pyVHDLParser.Blocks.Expression import ExpressionBlockEndedBySemicolon 

+

37from pyVHDLParser.Blocks.Object import ObjectDeclarationEndMarkerBlock, ObjectDeclarationBlock 

+

38 

+

39 

+

40@export 

+

41class VariableDeclarationEndMarkerBlock(ObjectDeclarationEndMarkerBlock): 

+

42 pass 

+

43 

+

44 

+

45@export 

+

46class VariableDeclarationDefaultExpressionBlock(ExpressionBlockEndedBySemicolon): 

+

47 END_BLOCK = VariableDeclarationEndMarkerBlock 

+

48 

+

49 

+

50@export 

+

51class VariableDeclarationBlock(ObjectDeclarationBlock): 

+

52 OBJECT_KIND = "variable" 

+

53 EXPRESSION_BLOCK = VariableDeclarationDefaultExpressionBlock 

+

54 END_BLOCK = VariableDeclarationEndMarkerBlock 

+

55 

+

56 @classmethod 

+

57 def stateVariableKeyword(cls, parserState: TokenToBlockParser): 

+

58 token = parserState.Token 

+

59 if isinstance(token, SpaceToken): 

+

60 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

61 parserState.NextState = cls.stateWhitespace1 

+

62 return 

+

63 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

64 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

65 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken) 

+

66 _ = block(parserState.NewBlock, token) 

+

67 parserState.TokenMarker = None 

+

68 parserState.NextState = cls.stateWhitespace1 

+

69 return 

+

70 

+

71 raise BlockParserException("Expected whitespace after keyword VARIABLE.", token) 

+
+ + + diff --git a/coverage/d_331d1eb816eb5c25___init___py.html b/coverage/d_331d1eb816eb5c25___init___py.html new file mode 100644 index 000000000..c9a2db415 --- /dev/null +++ b/coverage/d_331d1eb816eb5c25___init___py.html @@ -0,0 +1,339 @@ + + + + + Coverage for pyVHDLParser/Blocks/Object/__init__.py: 39% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/Object/__init__.py: + 39% +

+ +

+ 188 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Token import WordToken, ExtendedIdentifier, LinebreakToken, MultiLineCommentToken 

+

33from pyVHDLParser.Token import CommentToken, SpaceToken, CharacterToken, FusedCharacterToken 

+

34from pyVHDLParser.Token.Keywords import IdentifierToken, BoundaryToken, VariableAssignmentKeyword, EndToken 

+

35from pyVHDLParser.Blocks import Block, TokenToBlockParser, CommentBlock, BlockParserException 

+

36from pyVHDLParser.Blocks.Common import LinebreakBlock, WhitespaceBlock 

+

37from pyVHDLParser.Blocks.Generic1 import EndOfStatementBlock 

+

38 

+

39 

+

40@export 

+

41class ObjectDeclarationBlock(Block): 

+

42 OBJECT_KIND = "" 

+

43 EXPRESSION_BLOCK = None 

+

44 END_BLOCK = None 

+

45 

+

46 @classmethod 

+

47 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

48 token = parserState.Token 

+

49 if isinstance(token, WordToken): 49 ↛ 53line 49 didn't jump to line 53, because the condition on line 49 was never false

+

50 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

51 parserState.NextState = cls.stateObjectName 

+

52 return 

+

53 elif isinstance(token, ExtendedIdentifier): 

+

54 parserState.NextState = cls.stateObjectName 

+

55 return 

+

56 elif isinstance(token, LinebreakToken): 

+

57 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

58 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

59 _ = LinebreakBlock(parserState.NewBlock, token) 

+

60 else: 

+

61 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

62 parserState.TokenMarker = None 

+

63 return 

+

64 elif isinstance(token, CommentToken): 

+

65 parserState.NewBlock = CommentBlock(parserState.LastBlock, token) 

+

66 parserState.TokenMarker = None 

+

67 return 

+

68 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

69 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

70 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

71 parserState.TokenMarker = None 

+

72 return 

+

73 

+

74 raise BlockParserException("Expected {0} name (identifier).".format(cls.OBJECT_KIND), token) 

+

75 

+

76 @classmethod 

+

77 def stateObjectName(cls, parserState: TokenToBlockParser): 

+

78 token = parserState.Token 

+

79 if isinstance(token, CharacterToken) and (token == ":"): 79 ↛ 80line 79 didn't jump to line 80, because the condition on line 79 was never true

+

80 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

81 parserState.NextState = cls.stateColon1 

+

82 return 

+

83 elif isinstance(token, SpaceToken): 83 ↛ 87line 83 didn't jump to line 87, because the condition on line 83 was never false

+

84 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

85 parserState.NextState = cls.stateWhitespace2 

+

86 return 

+

87 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

88 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

89 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

90 _ = block(parserState.NewBlock, token) 

+

91 parserState.TokenMarker = None 

+

92 parserState.NextState = cls.stateWhitespace2 

+

93 return 

+

94 

+

95 raise BlockParserException("Expected ':' or whitespace after {0} name.".format(cls.OBJECT_KIND), token) 

+

96 

+

97 @classmethod 

+

98 def stateWhitespace2(cls, parserState: TokenToBlockParser): 

+

99 token = parserState.Token 

+

100 if isinstance(token, CharacterToken) and (token == ":"): 100 ↛ 104line 100 didn't jump to line 104, because the condition on line 100 was never false

+

101 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

102 parserState.NextState = cls.stateColon1 

+

103 return 

+

104 elif isinstance(token, LinebreakToken): 

+

105 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

106 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

107 _ = LinebreakBlock(parserState.NewBlock, token) 

+

108 else: 

+

109 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

110 parserState.TokenMarker = None 

+

111 return 

+

112 elif isinstance(token, CommentToken): 

+

113 parserState.NewBlock = CommentBlock(parserState.LastBlock, token) 

+

114 parserState.TokenMarker = None 

+

115 return 

+

116 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

117 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

118 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

119 parserState.TokenMarker = None 

+

120 return 

+

121 

+

122 raise BlockParserException("Expected colon after {0} name.".format(cls.OBJECT_KIND), token) 

+

123 

+

124 @classmethod 

+

125 def stateColon1(cls, parserState: TokenToBlockParser): 

+

126 token = parserState.Token 

+

127 if isinstance(token, WordToken): 127 ↛ 128line 127 didn't jump to line 128, because the condition on line 127 was never true

+

128 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

129 parserState.NextState = cls.stateSubtypeIndication 

+

130 return 

+

131 elif isinstance(token, SpaceToken): 131 ↛ 135line 131 didn't jump to line 135, because the condition on line 131 was never false

+

132 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

133 parserState.NextState = cls.stateWhitespace3 

+

134 return 

+

135 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

136 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

137 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

138 _ = block(parserState.NewBlock, token) 

+

139 parserState.TokenMarker = None 

+

140 parserState.NextState = cls.stateWhitespace3 

+

141 return 

+

142 

+

143 raise BlockParserException("Expected subtype indication or whitespace after colon.", token) 

+

144 

+

145 @classmethod 

+

146 def stateWhitespace3(cls, parserState: TokenToBlockParser): 

+

147 token = parserState.Token 

+

148 if isinstance(token, WordToken): 148 ↛ 152line 148 didn't jump to line 152, because the condition on line 148 was never false

+

149 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

150 parserState.NextState = cls.stateSubtypeIndication 

+

151 return 

+

152 elif isinstance(token, LinebreakToken): 

+

153 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

154 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

155 _ = LinebreakBlock(parserState.NewBlock, token) 

+

156 else: 

+

157 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

158 parserState.TokenMarker = None 

+

159 return 

+

160 elif isinstance(token, CommentToken): 

+

161 parserState.NewBlock = CommentBlock(parserState.LastBlock, token) 

+

162 parserState.TokenMarker = None 

+

163 return 

+

164 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

165 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

166 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

167 parserState.TokenMarker = None 

+

168 return 

+

169 

+

170 raise BlockParserException("Expected subtype indication after colon.", token) 

+

171 

+

172 @classmethod 

+

173 def stateSubtypeIndication(cls, parserState: TokenToBlockParser): 

+

174 token = parserState.Token 

+

175 if isinstance(token, FusedCharacterToken) and (token == ":="): 175 ↛ 176line 175 didn't jump to line 176, because the condition on line 175 was never true

+

176 parserState.NewToken = VariableAssignmentKeyword(fromExistingToken=token) 

+

177 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

178 parserState.PushState = cls.EXPRESSION_BLOCK.stateExpression 

+

179 parserState.TokenMarker = None 

+

180 parserState.Counter = 0 

+

181 return 

+

182 elif isinstance(token, CharacterToken) and (token == ';'): 

+

183 parserState.NewToken = EndToken(fromExistingToken=token) 

+

184 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

185 _ = cls.END_BLOCK(parserState.NewBlock, parserState.NewToken) 

+

186 parserState.Pop() 

+

187 return 

+

188 elif isinstance(token, SpaceToken): 188 ↛ 192line 188 didn't jump to line 192, because the condition on line 188 was never false

+

189 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

190 parserState.NextState = cls.stateWhitespace4 

+

191 return 

+

192 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

193 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

194 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

195 _ = block(parserState.NewBlock, token) 

+

196 parserState.TokenMarker = None 

+

197 parserState.NextState = cls.stateWhitespace4 

+

198 return 

+

199 

+

200 raise BlockParserException("Expected ':=', ';' or whitespace after subtype indication.", token) 

+

201 

+

202 @classmethod 

+

203 def stateWhitespace4(cls, parserState: TokenToBlockParser): 

+

204 token = parserState.Token 

+

205 if isinstance(token, FusedCharacterToken) and (token == ":="): 205 ↛ 212line 205 didn't jump to line 212, because the condition on line 205 was never false

+

206 parserState.NewToken = VariableAssignmentKeyword(fromExistingToken=token) 

+

207 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

208 parserState.PushState = cls.EXPRESSION_BLOCK.stateExpression 

+

209 parserState.TokenMarker = None 

+

210 parserState.Counter = 0 

+

211 return 

+

212 elif isinstance(token, CharacterToken) and (token == ";"): 

+

213 parserState.NewToken = EndToken(fromExistingToken=token) 

+

214 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

215 parserState.Pop() 

+

216 return 

+

217 elif isinstance(token, LinebreakToken): 

+

218 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

219 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

220 _ = LinebreakBlock(parserState.NewBlock, token) 

+

221 else: 

+

222 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

223 parserState.TokenMarker = None 

+

224 return 

+

225 elif isinstance(token, CommentToken): 

+

226 parserState.NewBlock = CommentBlock(parserState.LastBlock, token) 

+

227 parserState.TokenMarker = None 

+

228 return 

+

229 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

230 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

231 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

232 parserState.TokenMarker = None 

+

233 return 

+

234 

+

235 raise BlockParserException("Expected ':=' or ';' after subtype indication.", token) 

+

236 

+

237 

+

238@export 

+

239class ObjectDeclarationEndMarkerBlock(EndOfStatementBlock): 

+

240 pass 

+
+ + + diff --git a/coverage/d_36f028580bb02cc8_Counter_py.html b/coverage/d_36f028580bb02cc8_Counter_py.html new file mode 100644 index 000000000..71e1d3ca8 --- /dev/null +++ b/coverage/d_36f028580bb02cc8_Counter_py.html @@ -0,0 +1,174 @@ + + + + + Coverage for test/Counter.py: 0% + + + + + +
+
+

+ Coverage for test/Counter.py: + 0% +

+ +

+ 34 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ============================================================================== 

+

2# Authors: Patrick Lehmann 

+

3# 

+

4# Python functions: A streaming VHDL parser 

+

5# 

+

6# Description: 

+

7# ------------------------------------ 

+

8# TODO: 

+

9# 

+

10# License: 

+

11# ============================================================================== 

+

12# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany 

+

13# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany 

+

14# 

+

15# Licensed under the Apache License, Version 2.0 (the "License"); 

+

16# you may not use this file except in compliance with the License. 

+

17# You may obtain a copy of the License at 

+

18# 

+

19# http://www.apache.org/licenses/LICENSE-2.0 

+

20# 

+

21# Unless required by applicable law or agreed to in writing, software 

+

22# distributed under the License is distributed on an "AS IS" BASIS, 

+

23# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 

+

24# See the License for the specific language governing permissions and 

+

25# limitations under the License. 

+

26# ============================================================================== 

+

27# 

+

28# load dependencies 

+

29from pyVHDLParser.Functions import Console 

+

30 

+

31 

+

32class Counter: 

+

33 

+

34 

+

35 def __init__(self): 

+

36 self._history = {} 

+

37 self._expected = {} 

+

38 self._failing = {} 

+

39 

+

40 def AddType(self, type, count): 

+

41 self._expected[type] = count 

+

42 

+

43 def Count(self, type): 

+

44 if type in self._history: 

+

45 self._history[type] += 1 

+

46 else: 

+

47 self._history[type] = 1 

+

48 

+

49 def Check(self): 

+

50 good = True 

+

51 for key,expectedCount in self._expected.items(): 

+

52 try: 

+

53 count = self._history[key] 

+

54 except KeyError: 

+

55 self._failing[key] = (0, expectedCount) 

+

56 continue 

+

57 

+

58 if count != expectedCount: 

+

59 good = False 

+

60 self._failing[key] = (count, expectedCount) 

+

61 self._history.pop(key) 

+

62 

+

63 for key,value in self._history.items(): 

+

64 self._failing[key] = (value, 0) 

+

65 

+

66 return good 

+

67 

+

68 def PrintReport(self): 

+

69 for key,(count,expectedCount) in self._failing.items(): 

+

70 if count == 0: 

+

71 print(" {DARK_GRAY}Missing {expectedCount} {type}{NOCOLOR}".format(expectedCount=expectedCount, type=key.__name__, **Console.Foreground)) 

+

72 elif expectedCount == 0: 

+

73 print(" {DARK_GRAY}Found {count} unexpected {type}{NOCOLOR}".format(count=count, type=key.__name__, **Console.Foreground)) 

+

74 else: 

+

75 print(" {DARK_GRAY}Expected {expectedCount} of {type}; found {count}{NOCOLOR}".format(count=count, expectedCount=expectedCount, type=key.__name__, **Console.Foreground)) 

+
+ + + diff --git a/coverage/d_36f028580bb02cc8_TestCase_py.html b/coverage/d_36f028580bb02cc8_TestCase_py.html new file mode 100644 index 000000000..16a0c8ace --- /dev/null +++ b/coverage/d_36f028580bb02cc8_TestCase_py.html @@ -0,0 +1,132 @@ + + + + + Coverage for test/TestCase.py: 0% + + + + + +
+
+

+ Coverage for test/TestCase.py: + 0% +

+ +

+ 5 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ============================================================================== 

+

2# Authors: Patrick Lehmann 

+

3# 

+

4# Python functions: A streaming VHDL parser 

+

5# 

+

6# Description: 

+

7# ------------------------------------ 

+

8# TODO: 

+

9# 

+

10# License: 

+

11# ============================================================================== 

+

12# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany 

+

13# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany 

+

14# 

+

15# Licensed under the Apache License, Version 2.0 (the "License"); 

+

16# you may not use this file except in compliance with the License. 

+

17# You may obtain a copy of the License at 

+

18# 

+

19# http://www.apache.org/licenses/LICENSE-2.0 

+

20# 

+

21# Unless required by applicable law or agreed to in writing, software 

+

22# distributed under the License is distributed on an "AS IS" BASIS, 

+

23# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 

+

24# See the License for the specific language governing permissions and 

+

25# limitations under the License. 

+

26# ============================================================================== 

+

27# 

+

28class TestCase: 

+

29 __NAME__ = None 

+

30 __FILENAME__ = None 

+

31 

+

32 def __init__(self): 

+

33 pass 

+
+ + + diff --git a/coverage/d_401f91dc6b2d969a_Package_py.html b/coverage/d_401f91dc6b2d969a_Package_py.html new file mode 100644 index 000000000..f48ba86ee --- /dev/null +++ b/coverage/d_401f91dc6b2d969a_Package_py.html @@ -0,0 +1,195 @@ + + + + + Coverage for pyVHDLParser/TypeSystem/Package.py: 0% + + + + + +
+
+

+ Coverage for pyVHDLParser/TypeSystem/Package.py: + 0% +

+ +

+ 49 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32 

+

33@export 

+

34class Parameter: 

+

35 def __init__(self, name, subtype): 

+

36 self._name = name 

+

37 self._subtype = subtype 

+

38 

+

39 

+

40@export 

+

41class SubProgramDeclaration: 

+

42 def __init__(self, name, parameters): 

+

43 self._name = name 

+

44 self._parameters = parameters 

+

45 

+

46 

+

47@export 

+

48class ProcedureDeclaration(SubProgramDeclaration): 

+

49 pass 

+

50 

+

51@export 

+

52class FunctionDeclaration(SubProgramDeclaration): 

+

53 def __init__(self, name, parameters, returnType): 

+

54 super().__init__(name, parameters) 

+

55 self._returnType = returnType 

+

56 

+

57 

+

58@export 

+

59class SubProgram: 

+

60 def __init__(self, subprogramDeclaration): 

+

61 self._subprogramDeclaration = subprogramDeclaration 

+

62 

+

63 

+

64@export 

+

65class Procedure(SubProgram): 

+

66 def __init__(self, procedureDeclaration): 

+

67 super().__init__(procedureDeclaration) 

+

68 

+

69 

+

70@export 

+

71class Function(SubProgram): 

+

72 def __init__(self, functionDeclaration, function): 

+

73 super().__init__(functionDeclaration) 

+

74 self._function = function 

+

75 

+

76 def Call(self, arguments): 

+

77 return self._function(arguments) 

+

78 

+

79 

+

80@export 

+

81class PackageDeclation: 

+

82 def __init__(self, name, publicMembers): 

+

83 self._name = name 

+

84 self._publicMembers = publicMembers 

+

85 

+

86@export 

+

87class PackageBody: 

+

88 def __init__(self, declaration, privateMembers): 

+

89 self._declaration = declaration 

+

90 self._privateMembers = privateMembers 

+

91 

+

92@export 

+

93class Package: 

+

94 def __init__(self, declaration, body): 

+

95 self._declaration = declaration 

+

96 self._body = body 

+
+ + + diff --git a/coverage/d_401f91dc6b2d969a_TypeSystem_py.html b/coverage/d_401f91dc6b2d969a_TypeSystem_py.html new file mode 100644 index 000000000..fee773906 --- /dev/null +++ b/coverage/d_401f91dc6b2d969a_TypeSystem_py.html @@ -0,0 +1,353 @@ + + + + + Coverage for pyVHDLParser/TypeSystem/TypeSystem.py: 0% + + + + + +
+
+

+ Coverage for pyVHDLParser/TypeSystem/TypeSystem.py: + 0% +

+ +

+ 158 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from enum import Enum, unique 

+

31 

+

32from pyTooling.Decorators import export 

+

33 

+

34 

+

35@export 

+

36class _Attributes: 

+

37 pass 

+

38 

+

39 

+

40@export 

+

41class Type: 

+

42 def __init__(self, name): 

+

43 self._name = name 

+

44 

+

45 

+

46@export 

+

47class IntegerType(Type): 

+

48 class _Attributes(_Attributes): 

+

49 def __init__(self, integer): 

+

50 self._int = integer 

+

51 

+

52 def Left(self): 

+

53 return -2**31 

+

54 

+

55 def Right(self): 

+

56 return 2**31 - 1 

+

57 

+

58 

+

59 def __init__(self, name): 

+

60 super().__init__(name) 

+

61 

+

62 

+

63@export 

+

64class RealType(Type): 

+

65 def __init__(self, name): 

+

66 super().__init__(name) 

+

67 

+

68 

+

69@export 

+

70class EnumerationLiteral: 

+

71 def __init__(self, enum, name, pos): 

+

72 self._enum = enum 

+

73 self.Name = name 

+

74 self.Pos = pos 

+

75 

+

76 def __repr__(self): 

+

77 return "{enum!r}.{name}".format(enum=self._enum, name=self.Name) 

+

78 

+

79 def __str__(self): 

+

80 return self.Name 

+

81 

+

82 

+

83@export 

+

84class EnumerationType(Type): 

+

85 class _Attributes(_Attributes): 

+

86 def __init__(self, enum): 

+

87 self._enum = enum 

+

88 

+

89 def Low(self): 

+

90 return self._enum._range.Left 

+

91 

+

92 def High(self): 

+

93 return self._enum._range.Right 

+

94 

+

95 def Pos(self, value): 

+

96 for pos,enumValue in enumerate(self._enum._enumeration): 

+

97 if enumValue == value: 

+

98 return pos 

+

99 

+

100 def Val(self, pos): 

+

101 return self._enum._enumeration[pos] 

+

102 

+

103 def Value(self, str): 

+

104 for enumValue in self._enum._enumeration: 

+

105 if enumValue.Name == str: 

+

106 return enumValue 

+

107 

+

108 

+

109 def __init__(self, name, enumerationValues): 

+

110 super().__init__(name) 

+

111 self._enumeration = tuple([EnumerationLiteral(self, value, pos) for pos,value in enumerate(enumerationValues)]) 

+

112 self._range = Range(self, Direction.To, self._enumeration[0], self._enumeration[-1]) 

+

113 self.Attributes = self._Attributes(self) 

+

114 

+

115 def __repr__(self): 

+

116 return self._name 

+

117 

+

118 def __str__(self): 

+

119 return self._name 

+

120 

+

121 

+

122@export 

+

123class ArrayType(Type): 

+

124 def __init__(self, name, ranges, elementType): 

+

125 super().__init__(name) 

+

126 self._ranges = ranges 

+

127 self._elementType = elementType 

+

128 

+

129 @property 

+

130 def IsConstrained(self): 

+

131 for range in self._ranges: 

+

132 if not range.IsConstrained: 

+

133 return False 

+

134 return self._elementType.IsConstrained 

+

135 

+

136@export 

+

137class RecordMember: 

+

138 def __init__(self, name, elementType): 

+

139 self._name = None 

+

140 self._elementType = elementType 

+

141 

+

142 @property 

+

143 def IsConstrained(self): 

+

144 return self._elementType.IsConstrained 

+

145 

+

146 

+

147@export 

+

148class RecordType(Type): 

+

149 def __init__(self, name, members): 

+

150 super().__init__(name) 

+

151 self._members = members 

+

152 

+

153 @property 

+

154 def IsContrained(self): 

+

155 for member in self._members: 

+

156 if not member.IsConstrained: 

+

157 return False 

+

158 return True 

+

159 

+

160 

+

161@export 

+

162class Subtype: 

+

163 class _Attributes(_Attributes): 

+

164 def __init__(self, subtype): 

+

165 self._subtype = subtype 

+

166 

+

167 def Low(self): 

+

168 raise NotImplementedError() 

+

169 

+

170 def High(self): 

+

171 raise NotImplementedError() 

+

172 

+

173 

+

174 def __init__(self, name, subtype, range=None, resolutionFunction=None): 

+

175 self._name = name 

+

176 self._subtype = subtype 

+

177 self._range = range 

+

178 self._resolutionFunction = resolutionFunction 

+

179 self.Attributes = self._Attributes(self) 

+

180 

+

181 @property 

+

182 def IsResolved(self): 

+

183 return (self._resolutionFunction is not None) 

+

184 

+

185 @property 

+

186 def IsConstrained(self): 

+

187 return (self._range is not None) 

+

188 

+

189 

+

190@export 

+

191class IntegerSubtype(Subtype): 

+

192 class _Attributes(Subtype._Attributes): 

+

193 def Left(self): 

+

194 return self._subtype._range.Left 

+

195 

+

196 def Right(self): 

+

197 return self._subtype._range.Right 

+

198 

+

199 

+

200@export 

+

201class EnumerationSubtype(Subtype): 

+

202 class _Attributes(Subtype._Attributes): 

+

203 def Low(self): 

+

204 return self._subtype._range.Left 

+

205 

+

206 def High(self): 

+

207 return self._subtype._range.Right 

+

208 

+

209 def Value(self, str): 

+

210 return self._subtype._subtype.Attributes.Value(str) 

+

211 

+

212 

+

213 def __init__(self, name, subtype, range=None, resolutionFunction=None): 

+

214 if range is None: 

+

215 range = subtype._range 

+

216 super().__init__(name, subtype, range, resolutionFunction) 

+

217 

+

218 

+

219@export 

+

220@unique 

+

221class Direction(Enum): 

+

222 To = 0 

+

223 Downto = 1 

+

224 

+

225 

+

226@export 

+

227class Range: 

+

228 def __init__(self, baseType, direction=None, left=None, right=None): 

+

229 self._baseType = baseType 

+

230 

+

231 if direction is None: 

+

232 self.Direction = None 

+

233 self.Left = None 

+

234 self.Right = None 

+

235 else: 

+

236 self.Direction = direction 

+

237 self.Left = left 

+

238 self.Right = right 

+

239 

+

240 @property 

+

241 def IsConstrained(self): 

+

242 return (self.Direction is not None) 

+

243 

+

244 

+

245@export 

+

246class TypeInstance: 

+

247 pass 

+

248 

+

249@export 

+

250class Array(TypeInstance): 

+

251 def __init__(self, arrayType): 

+

252 self._arrayType = arrayType 

+

253 

+

254 

+
+ + + diff --git a/coverage/d_401f91dc6b2d969a_std_logic_1164_py.html b/coverage/d_401f91dc6b2d969a_std_logic_1164_py.html new file mode 100644 index 000000000..96e58e4a9 --- /dev/null +++ b/coverage/d_401f91dc6b2d969a_std_logic_1164_py.html @@ -0,0 +1,209 @@ + + + + + Coverage for pyVHDLParser/TypeSystem/std_logic_1164.py: 0% + + + + + +
+
+

+ Coverage for pyVHDLParser/TypeSystem/std_logic_1164.py: + 0% +

+ +

+ 25 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyVHDLParser.TypeSystem.Package import Parameter, FunctionDeclaration, Function, PackageDeclation, PackageBody, Package 

+

31from pyVHDLParser.TypeSystem.TypeSystem import EnumerationType, ArrayType, Range, Subtype, EnumerationSubtype 

+

32from pyVHDLParser.TypeSystem.std import Natural 

+

33 

+

34 

+

35Std_ULogic_Values = [ 

+

36 "U", # Uninitialized 

+

37 "X", # Forcing Unknown 

+

38 "0", # Forcing 0 

+

39 "1", # Forcing 1 

+

40 "Z", # High Impedance 

+

41 "W", # Weak Unknown 

+

42 "L", # Weak 0 

+

43 "H", # Weak 1 

+

44 "-" # Don't care 

+

45] 

+

46 

+

47Std_ULogic = EnumerationType("std_ulogic", Std_ULogic_Values) 

+

48Std_ULogic_U = Std_ULogic.Attributes.Value("U") 

+

49Std_ULogic_Z = Std_ULogic.Attributes.Value("Z") 

+

50 

+

51Std_ULogic_Vector = ArrayType("std_ulogic_vector", Range(Natural), Std_ULogic) 

+

52 

+

53Func_Resolved_Decl = FunctionDeclaration("resolved", [ 

+

54 Parameter("s", Std_ULogic_Vector) 

+

55], Std_ULogic) 

+

56 

+

57RESOLUTION_TABLE = ( 

+

58 ## --------------------------------------------------------- 

+

59 ## | U X 0 1 Z W L H - | | 

+

60 ## --------------------------------------------------------- 

+

61 ('U', 'U', 'U', 'U', 'U', 'U', 'U', 'U', 'U'), ## | U | 

+

62 ('U', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X'), ## | X | 

+

63 ('U', 'X', '0', 'X', '0', '0', '0', '0', 'X'), ## | 0 | 

+

64 ('U', 'X', 'X', '1', '1', '1', '1', '1', 'X'), ## | 1 | 

+

65 ('U', 'X', '0', '1', 'Z', 'W', 'L', 'H', 'X'), ## | Z | 

+

66 ('U', 'X', '0', '1', 'W', 'W', 'W', 'W', 'X'), ## | W | 

+

67 ('U', 'X', '0', '1', 'L', 'W', 'L', 'W', 'X'), ## | L | 

+

68 ('U', 'X', '0', '1', 'H', 'W', 'W', 'H', 'X'), ## | H | 

+

69 ('U', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X') ## | - | 

+

70 ) 

+

71 

+

72def Resolution(arguments): 

+

73 sources = arguments[0] 

+

74 if sources.Attributes.Length == 1: 

+

75 return sources[sources.Attributes.Low] 

+

76 else: 

+

77 result = Std_ULogic_Z.Pos 

+

78 # result = Std_ULogic.Attributes.Pos(Std_ULogic_Z) 

+

79 for source in sources: 

+

80 idx2 = source.Pos 

+

81 # idx2 = Std_ULogic.Attributes.Pos(source) 

+

82 result = RESOLUTION_TABLE[result][idx2] 

+

83 

+

84 return Std_Logic.Attributes.Val(result) 

+

85 

+

86 

+

87Func_Resolved = Function(Func_Resolved_Decl, Resolution) 

+

88 

+

89Std_Logic = EnumerationSubtype("std_logic", Std_ULogic, resolutionFunction=Func_Resolved) 

+

90 

+

91# if vhdlVersion < VHDLVersion.VHDL2008: 

+

92Std_Logic_Vector = ArrayType("std_logic_vector", Range(Natural), Std_Logic) 

+

93# else: 

+

94# pass 

+

95# # Std_Logic_Vector = ArraySubtype("std_logic_vector", Std_ULogic_Vector, resolutionFunction=Func_Resolved) 

+

96 

+

97 

+

98 

+

99Std_Logic_1164_Decl = PackageDeclation("std_logic_1164", [ 

+

100 Std_ULogic, 

+

101 Std_ULogic_Vector, 

+

102 Func_Resolved_Decl, 

+

103 Std_Logic, 

+

104 Std_Logic_Vector 

+

105]) 

+

106Std_Logic_1164_Body = PackageBody(Std_Logic_1164_Decl, [ 

+

107 Func_Resolved 

+

108]) 

+

109 

+

110Std_Logic_1164 = Package(Std_Logic_1164_Decl, Std_Logic_1164_Body) 

+
+ + + diff --git a/coverage/d_401f91dc6b2d969a_std_py.html b/coverage/d_401f91dc6b2d969a_std_py.html new file mode 100644 index 000000000..97edc878b --- /dev/null +++ b/coverage/d_401f91dc6b2d969a_std_py.html @@ -0,0 +1,176 @@ + + + + + Coverage for pyVHDLParser/TypeSystem/std.py: 0% + + + + + +
+
+

+ Coverage for pyVHDLParser/TypeSystem/std.py: + 0% +

+ +

+ 15 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyVHDLParser.TypeSystem.Package import PackageDeclation, PackageBody, Package 

+

31from pyVHDLParser.TypeSystem.TypeSystem import EnumerationType, ArrayType, IntegerType, RealType, Direction, Subtype, Range, IntegerSubtype 

+

32 

+

33 

+

34Boolean_Values = [ 

+

35 "FALSE", # 

+

36 "TRUE" # 

+

37] 

+

38 

+

39Boolean = EnumerationType("boolean", Boolean_Values) 

+

40 

+

41 

+

42UniversatInteger = IntegerType("universat_integer") 

+

43Integer = IntegerSubtype("integer", UniversatInteger, Range(UniversatInteger, Direction.To, -2**31, 2*31)) 

+

44Natural = IntegerSubtype("natural", Integer, Range(UniversatInteger, Direction.To, 0, Integer.Attributes.Right)) 

+

45Positive = IntegerSubtype("positive", Integer, Range(UniversatInteger, Direction.To, 1, Integer.Attributes.Right)) 

+

46 

+

47UniversatReal = RealType("universat_real") 

+

48Real = IntegerSubtype("real", UniversatReal, Range(UniversatReal, Direction.To, -10.0, 10.0)) 

+

49 

+

50 

+

51# if vhdlVersion < VHDLVersion.VHDL2008: 

+

52# Std_Decl = PackageDeclation("std", [ 

+

53# Boolean, 

+

54# Integer, 

+

55# Positive, 

+

56# Natural 

+

57# ]) 

+

58# Std_Body = PackageBody(Std_Decl, []) 

+

59# 

+

60# elif vhdlVersion >= VHDLVersion.VHDL2008: 

+

61Boolean_Vector = ArrayType("boolean_vector", Range(Natural), Boolean) 

+

62Integer_Vector = ArrayType("integer_vector", Range(Natural), Integer) 

+

63 

+

64 

+

65Std_Decl = PackageDeclation("std", [ 

+

66 Boolean, 

+

67 Boolean_Vector, 

+

68 Integer, 

+

69 Positive, 

+

70 Natural 

+

71]) 

+

72Std_Body = PackageBody(Std_Decl, []) 

+

73 

+

74 

+

75 

+

76Std = Package(Std_Decl, Std_Body) 

+

77 

+
+ + + diff --git a/coverage/d_491c058ff3048dbd_EntityInstantiation_py.html b/coverage/d_491c058ff3048dbd_EntityInstantiation_py.html new file mode 100644 index 000000000..ed9ab25e5 --- /dev/null +++ b/coverage/d_491c058ff3048dbd_EntityInstantiation_py.html @@ -0,0 +1,294 @@ + + + + + Coverage for pyVHDLParser/Blocks/Instantiation/EntityInstantiation.py: 0% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/Instantiation/EntityInstantiation.py: + 0% +

+ +

+ 152 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Token import CharacterToken, SpaceToken, WordToken, LinebreakToken 

+

33from pyVHDLParser.Token.Keywords import BoundaryToken, IdentifierToken, EndToken 

+

34from pyVHDLParser.Blocks import BlockParserException, Block, TokenToBlockParser, FinalBlock 

+

35from pyVHDLParser.Blocks.Common import LinebreakBlock, WhitespaceBlock 

+

36from pyVHDLParser.Blocks.Comment import SingleLineCommentBlock, MultiLineCommentBlock 

+

37 

+

38 

+

39@export 

+

40class EntityInstantiationBlock(Block): 

+

41 @classmethod 

+

42 def stateEntityInstantiationKeyword(cls, parserState: TokenToBlockParser): 

+

43 token = parserState.Token 

+

44 errorMessage = "Expected whitespace after keyword EntityInstantiation." 

+

45 if isinstance(token, CharacterToken): 

+

46 if token == "\n": 

+

47 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

48 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

49 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

50 parserState.TokenMarker = None 

+

51 parserState.NextState = cls.stateWhitespace1 

+

52 parserState.PushState = LinebreakBlock.stateLinebreak 

+

53 return 

+

54 elif token == "-": 

+

55 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

56 parserState.TokenMarker = None 

+

57 parserState.NextState = cls.stateWhitespace1 

+

58 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

59 parserState.TokenMarker = token 

+

60 return 

+

61 elif token == "/": 

+

62 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

63 parserState.TokenMarker = None 

+

64 parserState.NextState = cls.stateWhitespace1 

+

65 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

66 parserState.TokenMarker = token 

+

67 return 

+

68 elif isinstance(token, SpaceToken): 

+

69 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

70 parserState.NextState = cls.stateWhitespace1 

+

71 return 

+

72 

+

73 raise BlockParserException(errorMessage, token) 

+

74 

+

75 @classmethod 

+

76 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

77 token = parserState.Token 

+

78 errorMessage = "Expected entityInstantiation name (identifier)." 

+

79 if isinstance(token, CharacterToken): 

+

80 if token == "\n": 

+

81 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

82 if not isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

83 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) 

+

84 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

85 else: 

+

86 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

87 parserState.TokenMarker = None 

+

88 parserState.PushState = LinebreakBlock.stateLinebreak 

+

89 return 

+

90 elif token == "-": 

+

91 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

92 parserState.TokenMarker = None 

+

93 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

94 parserState.TokenMarker = token 

+

95 return 

+

96 elif token == "/": 

+

97 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

98 parserState.TokenMarker = None 

+

99 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

100 parserState.TokenMarker = token 

+

101 return 

+

102 elif isinstance(token, WordToken): 

+

103 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

104 parserState.NextState = cls.stateEntityInstantiationName 

+

105 return 

+

106 elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

107 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

108 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

109 parserState.TokenMarker = None 

+

110 return 

+

111 

+

112 raise BlockParserException(errorMessage, token) 

+

113 

+

114 @classmethod 

+

115 def stateEntityInstantiationName(cls, parserState: TokenToBlockParser): 

+

116 token = parserState.Token 

+

117 errorMessage = "Expected ';' after entityInstantiation name." 

+

118 if isinstance(token, CharacterToken): 

+

119 if token == ";": 

+

120 parserState.NewToken = EndToken(fromExistingToken=token) 

+

121 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

122 parserState.Pop() 

+

123 return 

+

124 elif token == "\n": 

+

125 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

126 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

127 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

128 parserState.TokenMarker = None 

+

129 parserState.NextState = cls.stateWhitespace2 

+

130 parserState.PushState = LinebreakBlock.stateLinebreak 

+

131 return 

+

132 elif token == "-": 

+

133 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

134 parserState.TokenMarker = None 

+

135 parserState.NextState = cls.stateWhitespace2 

+

136 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

137 parserState.TokenMarker = token 

+

138 return 

+

139 elif token == "/": 

+

140 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

141 parserState.TokenMarker = None 

+

142 parserState.NextState = cls.stateWhitespace2 

+

143 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

144 parserState.TokenMarker = token 

+

145 return 

+

146 elif isinstance(token, SpaceToken): 

+

147 parserState.NextState = cls.stateWhitespace2 

+

148 return 

+

149 

+

150 raise BlockParserException(errorMessage, token) 

+

151 

+

152 @classmethod 

+

153 def stateWhitespace2(cls, parserState: TokenToBlockParser): 

+

154 token = parserState.Token 

+

155 errorMessage = "Expected ';'." 

+

156 if isinstance(token, CharacterToken): 

+

157 if token == ";": 

+

158 parserState.NewToken = EndToken(fromExistingToken=token) 

+

159 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

160 parserState.Pop() 

+

161 return 

+

162 elif token == "\n": 

+

163 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

164 if not isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

165 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) 

+

166 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

167 else: 

+

168 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

169 parserState.TokenMarker = None 

+

170 parserState.PushState = LinebreakBlock.stateLinebreak 

+

171 return 

+

172 elif token == "-": 

+

173 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

174 parserState.TokenMarker = None 

+

175 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

176 parserState.TokenMarker = token 

+

177 return 

+

178 elif token == "/": 

+

179 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

180 parserState.TokenMarker = None 

+

181 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

182 parserState.TokenMarker = token 

+

183 return 

+

184 elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

185 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

186 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

187 parserState.TokenMarker = None 

+

188 return 

+

189 

+

190 raise BlockParserException(errorMessage, token) 

+

191 

+

192 

+

193@export 

+

194class EndBlock(FinalBlock): 

+

195 pass 

+
+ + + diff --git a/coverage/d_491c058ff3048dbd_FunctionInstantiation_py.html b/coverage/d_491c058ff3048dbd_FunctionInstantiation_py.html new file mode 100644 index 000000000..9ca4a4855 --- /dev/null +++ b/coverage/d_491c058ff3048dbd_FunctionInstantiation_py.html @@ -0,0 +1,326 @@ + + + + + Coverage for pyVHDLParser/Blocks/Instantiation/FunctionInstantiation.py: 0% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/Instantiation/FunctionInstantiation.py: + 0% +

+ +

+ 176 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Token import CharacterToken, SpaceToken, WordToken, LinebreakToken 

+

33from pyVHDLParser.Token.Keywords import BoundaryToken, IdentifierToken, EndToken 

+

34from pyVHDLParser.Blocks import BlockParserException, Block, TokenToBlockParser, FinalBlock, SkipableBlock 

+

35from pyVHDLParser.Blocks.Common import LinebreakBlock, WhitespaceBlock 

+

36from pyVHDLParser.Blocks.Comment import SingleLineCommentBlock, MultiLineCommentBlock 

+

37 

+

38 

+

39@export 

+

40class EntityInstantiationBlock(Block): 

+

41 @classmethod 

+

42 def stateEntityInstantiationKeyword(cls, parserState: TokenToBlockParser): 

+

43 token = parserState.Token 

+

44 errorMessage = "Expected whitespace after keyword EntityInstantiation." 

+

45 if isinstance(token, CharacterToken): 

+

46 if token == "\n": 

+

47 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

48 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

49 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

50 parserState.TokenMarker = None 

+

51 parserState.NextState = cls.stateWhitespace1 

+

52 parserState.PushState = LinebreakBlock.stateLinebreak 

+

53 return 

+

54 elif token == "-": 

+

55 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

56 parserState.TokenMarker = None 

+

57 parserState.NextState = cls.stateWhitespace1 

+

58 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

59 parserState.TokenMarker = token 

+

60 return 

+

61 elif token == "/": 

+

62 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

63 parserState.TokenMarker = None 

+

64 parserState.NextState = cls.stateWhitespace1 

+

65 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

66 parserState.TokenMarker = token 

+

67 return 

+

68 elif isinstance(token, SpaceToken): 

+

69 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

70 parserState.NextState = cls.stateWhitespace1 

+

71 return 

+

72 

+

73 raise BlockParserException(errorMessage, token) 

+

74 

+

75 @classmethod 

+

76 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

77 token = parserState.Token 

+

78 errorMessage = "Expected entityInstantiation name (identifier)." 

+

79 if isinstance(token, CharacterToken): 

+

80 if token == "\n": 

+

81 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

82 if not isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

83 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) 

+

84 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

85 else: 

+

86 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

87 parserState.TokenMarker = None 

+

88 parserState.PushState = LinebreakBlock.stateLinebreak 

+

89 return 

+

90 elif token == "-": 

+

91 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

92 parserState.TokenMarker = None 

+

93 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

94 parserState.TokenMarker = token 

+

95 return 

+

96 elif token == "/": 

+

97 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

98 parserState.TokenMarker = None 

+

99 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

100 parserState.TokenMarker = token 

+

101 return 

+

102 elif isinstance(token, WordToken): 

+

103 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

104 parserState.NextState = cls.stateEntityInstantiationName 

+

105 return 

+

106 elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

107 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

108 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

109 parserState.TokenMarker = None 

+

110 return 

+

111 

+

112 raise BlockParserException(errorMessage, token) 

+

113 

+

114 @classmethod 

+

115 def stateEntityInstantiationName(cls, parserState: TokenToBlockParser): 

+

116 token = parserState.Token 

+

117 errorMessage = "Expected ';' after entityInstantiation name." 

+

118 if isinstance(token, CharacterToken): 

+

119 if token == ";": 

+

120 parserState.NewToken = EndToken(fromExistingToken=token) 

+

121 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

122 parserState.Pop() 

+

123 return 

+

124 elif token == "\n": 

+

125 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

126 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

127 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

128 parserState.TokenMarker = None 

+

129 parserState.NextState = cls.stateWhitespace2 

+

130 parserState.PushState = LinebreakBlock.stateLinebreak 

+

131 return 

+

132 elif token == "-": 

+

133 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

134 parserState.TokenMarker = None 

+

135 parserState.NextState = cls.stateWhitespace2 

+

136 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

137 parserState.TokenMarker = token 

+

138 return 

+

139 elif token == "/": 

+

140 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

141 parserState.TokenMarker = None 

+

142 parserState.NextState = cls.stateWhitespace2 

+

143 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

144 parserState.TokenMarker = token 

+

145 return 

+

146 elif isinstance(token, SpaceToken): 

+

147 parserState.NextState = cls.stateWhitespace2 

+

148 return 

+

149 

+

150 raise BlockParserException(errorMessage, token) 

+

151 

+

152 @classmethod 

+

153 def stateWhitespace2(cls, parserState: TokenToBlockParser): 

+

154 token = parserState.Token 

+

155 errorMessage = "Expected ';'." 

+

156 if isinstance(token, CharacterToken): 

+

157 if token == ";": 

+

158 parserState.NewToken = EndToken(fromExistingToken=token) 

+

159 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

160 parserState.Pop() 

+

161 return 

+

162 elif token == "\n": 

+

163 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

164 if not isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

165 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) 

+

166 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

167 else: 

+

168 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

169 parserState.TokenMarker = None 

+

170 parserState.PushState = LinebreakBlock.stateLinebreak 

+

171 return 

+

172 elif token == "-": 

+

173 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

174 parserState.TokenMarker = None 

+

175 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

176 parserState.TokenMarker = token 

+

177 return 

+

178 elif token == "/": 

+

179 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

180 parserState.TokenMarker = None 

+

181 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

182 parserState.TokenMarker = token 

+

183 return 

+

184 elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

185 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

186 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

187 parserState.TokenMarker = None 

+

188 return 

+

189 

+

190 raise BlockParserException(errorMessage, token) 

+

191 

+

192 

+

193@export 

+

194class GenericMapBeginBlock(Block): 

+

195 pass 

+

196 

+

197@export 

+

198class GenericMapItemBlock(Block): 

+

199 pass 

+

200 

+

201@export 

+

202class GenericMapDelimiterBlock(SkipableBlock): 

+

203 pass 

+

204 

+

205@export 

+

206class GenericMapEndBlock(FinalBlock): 

+

207 pass 

+

208 

+

209@export 

+

210class PortMapBeginBlock(Block): 

+

211 pass 

+

212 

+

213@export 

+

214class PortMapItemBlock(Block): 

+

215 pass 

+

216 

+

217@export 

+

218class PortMapDelimiterBlock(SkipableBlock): 

+

219 pass 

+

220 

+

221@export 

+

222class PortMapEndBlock(FinalBlock): 

+

223 pass 

+

224 

+

225@export 

+

226class EndBlock(FinalBlock): 

+

227 pass 

+
+ + + diff --git a/coverage/d_491c058ff3048dbd_PackageInstantiation_py.html b/coverage/d_491c058ff3048dbd_PackageInstantiation_py.html new file mode 100644 index 000000000..94aed66ed --- /dev/null +++ b/coverage/d_491c058ff3048dbd_PackageInstantiation_py.html @@ -0,0 +1,326 @@ + + + + + Coverage for pyVHDLParser/Blocks/Instantiation/PackageInstantiation.py: 0% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/Instantiation/PackageInstantiation.py: + 0% +

+ +

+ 176 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Token import CharacterToken, SpaceToken, WordToken, LinebreakToken 

+

33from pyVHDLParser.Token.Keywords import BoundaryToken, IdentifierToken, EndToken 

+

34from pyVHDLParser.Blocks import BlockParserException, Block, TokenToBlockParser, FinalBlock, SkipableBlock 

+

35from pyVHDLParser.Blocks.Common import LinebreakBlock, WhitespaceBlock 

+

36from pyVHDLParser.Blocks.Comment import SingleLineCommentBlock, MultiLineCommentBlock 

+

37 

+

38 

+

39@export 

+

40class EntityInstantiationBlock(Block): 

+

41 @classmethod 

+

42 def stateEntityInstantiationKeyword(cls, parserState: TokenToBlockParser): 

+

43 token = parserState.Token 

+

44 errorMessage = "Expected whitespace after keyword EntityInstantiation." 

+

45 if isinstance(token, CharacterToken): 

+

46 if token == "\n": 

+

47 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

48 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

49 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

50 parserState.TokenMarker = None 

+

51 parserState.NextState = cls.stateWhitespace1 

+

52 parserState.PushState = LinebreakBlock.stateLinebreak 

+

53 return 

+

54 elif token == "-": 

+

55 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

56 parserState.TokenMarker = None 

+

57 parserState.NextState = cls.stateWhitespace1 

+

58 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

59 parserState.TokenMarker = token 

+

60 return 

+

61 elif token == "/": 

+

62 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

63 parserState.TokenMarker = None 

+

64 parserState.NextState = cls.stateWhitespace1 

+

65 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

66 parserState.TokenMarker = token 

+

67 return 

+

68 elif isinstance(token, SpaceToken): 

+

69 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

70 parserState.NextState = cls.stateWhitespace1 

+

71 return 

+

72 

+

73 raise BlockParserException(errorMessage, token) 

+

74 

+

75 @classmethod 

+

76 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

77 token = parserState.Token 

+

78 errorMessage = "Expected entityInstantiation name (identifier)." 

+

79 if isinstance(token, CharacterToken): 

+

80 if token == "\n": 

+

81 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

82 if not isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

83 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) 

+

84 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

85 else: 

+

86 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

87 parserState.TokenMarker = None 

+

88 parserState.PushState = LinebreakBlock.stateLinebreak 

+

89 return 

+

90 elif token == "-": 

+

91 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

92 parserState.TokenMarker = None 

+

93 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

94 parserState.TokenMarker = token 

+

95 return 

+

96 elif token == "/": 

+

97 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

98 parserState.TokenMarker = None 

+

99 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

100 parserState.TokenMarker = token 

+

101 return 

+

102 elif isinstance(token, WordToken): 

+

103 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

104 parserState.NextState = cls.stateEntityInstantiationName 

+

105 return 

+

106 elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

107 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

108 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

109 parserState.TokenMarker = None 

+

110 return 

+

111 

+

112 raise BlockParserException(errorMessage, token) 

+

113 

+

114 @classmethod 

+

115 def stateEntityInstantiationName(cls, parserState: TokenToBlockParser): 

+

116 token = parserState.Token 

+

117 errorMessage = "Expected ';' after entityInstantiation name." 

+

118 if isinstance(token, CharacterToken): 

+

119 if token == ";": 

+

120 parserState.NewToken = EndToken(fromExistingToken=token) 

+

121 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

122 parserState.Pop() 

+

123 return 

+

124 elif token == "\n": 

+

125 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

126 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

127 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

128 parserState.TokenMarker = None 

+

129 parserState.NextState = cls.stateWhitespace2 

+

130 parserState.PushState = LinebreakBlock.stateLinebreak 

+

131 return 

+

132 elif token == "-": 

+

133 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

134 parserState.TokenMarker = None 

+

135 parserState.NextState = cls.stateWhitespace2 

+

136 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

137 parserState.TokenMarker = token 

+

138 return 

+

139 elif token == "/": 

+

140 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

141 parserState.TokenMarker = None 

+

142 parserState.NextState = cls.stateWhitespace2 

+

143 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

144 parserState.TokenMarker = token 

+

145 return 

+

146 elif isinstance(token, SpaceToken): 

+

147 parserState.NextState = cls.stateWhitespace2 

+

148 return 

+

149 

+

150 raise BlockParserException(errorMessage, token) 

+

151 

+

152 @classmethod 

+

153 def stateWhitespace2(cls, parserState: TokenToBlockParser): 

+

154 token = parserState.Token 

+

155 errorMessage = "Expected ';'." 

+

156 if isinstance(token, CharacterToken): 

+

157 if token == ";": 

+

158 parserState.NewToken = EndToken(fromExistingToken=token) 

+

159 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

160 parserState.Pop() 

+

161 return 

+

162 elif token == "\n": 

+

163 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

164 if not isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

165 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) 

+

166 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

167 else: 

+

168 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

169 parserState.TokenMarker = None 

+

170 parserState.PushState = LinebreakBlock.stateLinebreak 

+

171 return 

+

172 elif token == "-": 

+

173 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

174 parserState.TokenMarker = None 

+

175 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

176 parserState.TokenMarker = token 

+

177 return 

+

178 elif token == "/": 

+

179 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

180 parserState.TokenMarker = None 

+

181 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

182 parserState.TokenMarker = token 

+

183 return 

+

184 elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

185 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

186 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

187 parserState.TokenMarker = None 

+

188 return 

+

189 

+

190 raise BlockParserException(errorMessage, token) 

+

191 

+

192 

+

193@export 

+

194class GenericMapBeginBlock(Block): 

+

195 pass 

+

196 

+

197@export 

+

198class GenericMapItemBlock(Block): 

+

199 pass 

+

200 

+

201@export 

+

202class GenericMapDelimiterBlock(SkipableBlock): 

+

203 pass 

+

204 

+

205@export 

+

206class GenericMapEndBlock(FinalBlock): 

+

207 pass 

+

208 

+

209@export 

+

210class PortMapBeginBlock(Block): 

+

211 pass 

+

212 

+

213@export 

+

214class PortMapItemBlock(Block): 

+

215 pass 

+

216 

+

217@export 

+

218class PortMapDelimiterBlock(SkipableBlock): 

+

219 pass 

+

220 

+

221@export 

+

222class PortMapEndBlock(FinalBlock): 

+

223 pass 

+

224 

+

225@export 

+

226class EndBlock(FinalBlock): 

+

227 pass 

+
+ + + diff --git a/coverage/d_491c058ff3048dbd_ProcedureInstantiation_py.html b/coverage/d_491c058ff3048dbd_ProcedureInstantiation_py.html new file mode 100644 index 000000000..4d4f99f43 --- /dev/null +++ b/coverage/d_491c058ff3048dbd_ProcedureInstantiation_py.html @@ -0,0 +1,326 @@ + + + + + Coverage for pyVHDLParser/Blocks/Instantiation/ProcedureInstantiation.py: 0% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/Instantiation/ProcedureInstantiation.py: + 0% +

+ +

+ 176 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Token import CharacterToken, SpaceToken, WordToken, LinebreakToken 

+

33from pyVHDLParser.Token.Keywords import BoundaryToken, IdentifierToken, EndToken 

+

34from pyVHDLParser.Blocks import BlockParserException, Block, TokenToBlockParser, FinalBlock, SkipableBlock 

+

35from pyVHDLParser.Blocks.Common import LinebreakBlock, WhitespaceBlock 

+

36from pyVHDLParser.Blocks.Comment import SingleLineCommentBlock, MultiLineCommentBlock 

+

37 

+

38 

+

39@export 

+

40class EntityInstantiationBlock(Block): 

+

41 @classmethod 

+

42 def stateEntityInstantiationKeyword(cls, parserState: TokenToBlockParser): 

+

43 token = parserState.Token 

+

44 errorMessage = "Expected whitespace after keyword EntityInstantiation." 

+

45 if isinstance(token, CharacterToken): 

+

46 if token == "\n": 

+

47 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

48 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

49 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

50 parserState.TokenMarker = None 

+

51 parserState.NextState = cls.stateWhitespace1 

+

52 parserState.PushState = LinebreakBlock.stateLinebreak 

+

53 return 

+

54 elif token == "-": 

+

55 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

56 parserState.TokenMarker = None 

+

57 parserState.NextState = cls.stateWhitespace1 

+

58 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

59 parserState.TokenMarker = token 

+

60 return 

+

61 elif token == "/": 

+

62 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

63 parserState.TokenMarker = None 

+

64 parserState.NextState = cls.stateWhitespace1 

+

65 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

66 parserState.TokenMarker = token 

+

67 return 

+

68 elif isinstance(token, SpaceToken): 

+

69 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

70 parserState.NextState = cls.stateWhitespace1 

+

71 return 

+

72 

+

73 raise BlockParserException(errorMessage, token) 

+

74 

+

75 @classmethod 

+

76 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

77 token = parserState.Token 

+

78 errorMessage = "Expected entityInstantiation name (identifier)." 

+

79 if isinstance(token, CharacterToken): 

+

80 if token == "\n": 

+

81 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

82 if not isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

83 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) 

+

84 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

85 else: 

+

86 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

87 parserState.TokenMarker = None 

+

88 parserState.PushState = LinebreakBlock.stateLinebreak 

+

89 return 

+

90 elif token == "-": 

+

91 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

92 parserState.TokenMarker = None 

+

93 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

94 parserState.TokenMarker = token 

+

95 return 

+

96 elif token == "/": 

+

97 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

98 parserState.TokenMarker = None 

+

99 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

100 parserState.TokenMarker = token 

+

101 return 

+

102 elif isinstance(token, WordToken): 

+

103 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

104 parserState.NextState = cls.stateEntityInstantiationName 

+

105 return 

+

106 elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

107 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

108 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

109 parserState.TokenMarker = None 

+

110 return 

+

111 

+

112 raise BlockParserException(errorMessage, token) 

+

113 

+

114 @classmethod 

+

115 def stateEntityInstantiationName(cls, parserState: TokenToBlockParser): 

+

116 token = parserState.Token 

+

117 errorMessage = "Expected ';' after entityInstantiation name." 

+

118 if isinstance(token, CharacterToken): 

+

119 if token == ";": 

+

120 parserState.NewToken = EndToken(fromExistingToken=token) 

+

121 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

122 parserState.Pop() 

+

123 return 

+

124 elif token == "\n": 

+

125 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

126 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

127 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

128 parserState.TokenMarker = None 

+

129 parserState.NextState = cls.stateWhitespace2 

+

130 parserState.PushState = LinebreakBlock.stateLinebreak 

+

131 return 

+

132 elif token == "-": 

+

133 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

134 parserState.TokenMarker = None 

+

135 parserState.NextState = cls.stateWhitespace2 

+

136 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

137 parserState.TokenMarker = token 

+

138 return 

+

139 elif token == "/": 

+

140 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

141 parserState.TokenMarker = None 

+

142 parserState.NextState = cls.stateWhitespace2 

+

143 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

144 parserState.TokenMarker = token 

+

145 return 

+

146 elif isinstance(token, SpaceToken): 

+

147 parserState.NextState = cls.stateWhitespace2 

+

148 return 

+

149 

+

150 raise BlockParserException(errorMessage, token) 

+

151 

+

152 @classmethod 

+

153 def stateWhitespace2(cls, parserState: TokenToBlockParser): 

+

154 token = parserState.Token 

+

155 errorMessage = "Expected ';'." 

+

156 if isinstance(token, CharacterToken): 

+

157 if token == ";": 

+

158 parserState.NewToken = EndToken(fromExistingToken=token) 

+

159 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

160 parserState.Pop() 

+

161 return 

+

162 elif token == "\n": 

+

163 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

164 if not isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

165 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) 

+

166 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

167 else: 

+

168 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

169 parserState.TokenMarker = None 

+

170 parserState.PushState = LinebreakBlock.stateLinebreak 

+

171 return 

+

172 elif token == "-": 

+

173 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

174 parserState.TokenMarker = None 

+

175 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

176 parserState.TokenMarker = token 

+

177 return 

+

178 elif token == "/": 

+

179 parserState.NewBlock = EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

180 parserState.TokenMarker = None 

+

181 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

182 parserState.TokenMarker = token 

+

183 return 

+

184 elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

185 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

186 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

187 parserState.TokenMarker = None 

+

188 return 

+

189 

+

190 raise BlockParserException(errorMessage, token) 

+

191 

+

192 

+

193@export 

+

194class GenericMapBeginBlock(Block): 

+

195 pass 

+

196 

+

197@export 

+

198class GenericMapItemBlock(Block): 

+

199 pass 

+

200 

+

201@export 

+

202class GenericMapDelimiterBlock(SkipableBlock): 

+

203 pass 

+

204 

+

205@export 

+

206class GenericMapEndBlock(FinalBlock): 

+

207 pass 

+

208 

+

209@export 

+

210class PortMapBeginBlock(Block): 

+

211 pass 

+

212 

+

213@export 

+

214class PortMapItemBlock(Block): 

+

215 pass 

+

216 

+

217@export 

+

218class PortMapDelimiterBlock(SkipableBlock): 

+

219 pass 

+

220 

+

221@export 

+

222class PortMapEndBlock(FinalBlock): 

+

223 pass 

+

224 

+

225@export 

+

226class EndBlock(FinalBlock): 

+

227 pass 

+
+ + + diff --git a/coverage/d_522569d2cb39496b_AttributeDeclaration_py.html b/coverage/d_522569d2cb39496b_AttributeDeclaration_py.html new file mode 100644 index 000000000..0bd64b3f1 --- /dev/null +++ b/coverage/d_522569d2cb39496b_AttributeDeclaration_py.html @@ -0,0 +1,551 @@ + + + + + Coverage for pyVHDLParser/Blocks/Attribute/AttributeDeclaration.py: 0% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/Attribute/AttributeDeclaration.py: + 0% +

+ +

+ 391 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Token import CharacterToken, LinebreakToken, SpaceToken, WordToken 

+

33from pyVHDLParser.Token.Keywords import BoundaryToken, IdentifierToken, VariableAssignmentKeyword, EndToken 

+

34from pyVHDLParser.Blocks import Block, TokenToBlockParser 

+

35from pyVHDLParser.Blocks.Comment import SingleLineCommentBlock, MultiLineCommentBlock 

+

36from pyVHDLParser.Blocks.Common import LinebreakBlock, WhitespaceBlock 

+

37 

+

38 

+

39@export 

+

40class AttributeDeclarationBlock(Block): 

+

41 @classmethod 

+

42 def stateAttributeDeclarationKeyword(cls, parserState: TokenToBlockParser): 

+

43 token = parserState.Token 

+

44 errorMessage = "Expected whitespace after keyword ATTRIBUTE." 

+

45 if isinstance(token, CharacterToken): 

+

46 if token == "\n": 

+

47 parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

48 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

49 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

50 parserState.TokenMarker = None 

+

51 parserState.NextState = cls.stateWhitespace1 

+

52 parserState.PushState = LinebreakBlock.stateLinebreak 

+

53 return 

+

54 elif token == "-": 

+

55 parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

56 parserState.TokenMarker = None 

+

57 parserState.NextState = cls.stateWhitespace1 

+

58 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

59 parserState.TokenMarker = token 

+

60 return 

+

61 elif token == "/": 

+

62 parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

63 parserState.TokenMarker = None 

+

64 parserState.NextState = cls.stateWhitespace1 

+

65 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

66 parserState.TokenMarker = token 

+

67 return 

+

68 elif isinstance(token, SpaceToken): 

+

69 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

70 parserState.NextState = cls.stateWhitespace1 

+

71 return 

+

72 

+

73 raise TokenParserException(errorMessage, token) 

+

74 

+

75 @classmethod 

+

76 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

77 token = parserState.Token 

+

78 errorMessage = "Expected attribute name (identifier)." 

+

79 if isinstance(token, CharacterToken): 

+

80 if token == "\n": 

+

81 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

82 if not isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

83 parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) 

+

84 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

85 else: 

+

86 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

87 parserState.TokenMarker = None 

+

88 parserState.PushState = LinebreakBlock.stateLinebreak 

+

89 return 

+

90 elif token == "-": 

+

91 parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

92 parserState.TokenMarker = None 

+

93 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

94 parserState.TokenMarker = token 

+

95 return 

+

96 elif token == "/": 

+

97 parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

98 parserState.TokenMarker = None 

+

99 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

100 parserState.TokenMarker = token 

+

101 return 

+

102 elif isinstance(token, WordToken): 

+

103 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

104 parserState.NextState = cls.stateAttributeDeclarationName 

+

105 return 

+

106 elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

107 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

108 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

109 parserState.TokenMarker = None 

+

110 return 

+

111 

+

112 raise TokenParserException(errorMessage, token) 

+

113 

+

114 @classmethod 

+

115 def stateAttributeDeclarationName(cls, parserState: TokenToBlockParser): 

+

116 token = parserState.Token 

+

117 errorMessage = "Expected ';' after library name." 

+

118 if isinstance(token, CharacterToken): 

+

119 if token == ":": 

+

120 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

121 parserState.NextState = cls.stateColon1 

+

122 return 

+

123 elif token == "\n": 

+

124 parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

125 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

126 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

127 parserState.TokenMarker = None 

+

128 parserState.NextState = cls.stateWhitespace2 

+

129 parserState.PushState = LinebreakBlock.stateLinebreak 

+

130 return 

+

131 elif token == "-": 

+

132 parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

133 parserState.TokenMarker = None 

+

134 parserState.NextState = cls.stateWhitespace2 

+

135 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

136 parserState.TokenMarker = token 

+

137 return 

+

138 elif token == "/": 

+

139 parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

140 parserState.TokenMarker = None 

+

141 parserState.NextState = cls.stateWhitespace2 

+

142 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

143 parserState.TokenMarker = token 

+

144 return 

+

145 elif isinstance(token, SpaceToken): 

+

146 parserState.NextState = cls.stateWhitespace2 

+

147 return 

+

148 

+

149 raise TokenParserException(errorMessage, token) 

+

150 

+

151 @classmethod 

+

152 def stateWhitespace2(cls, parserState: TokenToBlockParser): 

+

153 token = parserState.Token 

+

154 errorMessage = "Expected attribute name (identifier)." 

+

155 if isinstance(token, CharacterToken): 

+

156 if token == ":": 

+

157 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

158 parserState.NextState = cls.stateColon1 

+

159 return 

+

160 if token == "\n": 

+

161 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

162 if not isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

163 parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) 

+

164 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

165 else: 

+

166 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

167 parserState.TokenMarker = None 

+

168 parserState.PushState = LinebreakBlock.stateLinebreak 

+

169 return 

+

170 elif token == "-": 

+

171 parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

172 parserState.TokenMarker = None 

+

173 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

174 parserState.TokenMarker = token 

+

175 return 

+

176 elif token == "/": 

+

177 parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

178 parserState.TokenMarker = None 

+

179 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

180 parserState.TokenMarker = token 

+

181 return 

+

182 elif isinstance(token, WordToken): 

+

183 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

184 parserState.NextState = cls.stateColon1() 

+

185 return 

+

186 elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

187 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

188 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

189 parserState.TokenMarker = None 

+

190 return 

+

191 

+

192 raise TokenParserException(errorMessage, token) 

+

193 

+

194 @classmethod 

+

195 def stateColon1(cls, parserState: TokenToBlockParser): 

+

196 token = parserState.Token 

+

197 errorMessage = "Expected type mark or whitespace after ':'." 

+

198 if isinstance(token, CharacterToken): 

+

199 if token == "\n": 

+

200 parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

201 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

202 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

203 parserState.TokenMarker = None 

+

204 parserState.NextState = cls.stateWhitespace3 

+

205 parserState.PushState = LinebreakBlock.stateLinebreak 

+

206 return 

+

207 elif token == "-": 

+

208 parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

209 parserState.TokenMarker = None 

+

210 parserState.NextState = cls.stateWhitespace3 

+

211 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

212 parserState.TokenMarker = token 

+

213 return 

+

214 elif token == "/": 

+

215 parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

216 parserState.TokenMarker = None 

+

217 parserState.NextState = cls.stateWhitespace3 

+

218 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

219 parserState.TokenMarker = token 

+

220 return 

+

221 elif isinstance(token, SpaceToken): 

+

222 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

223 parserState.NextState = cls.stateWhitespace3 

+

224 return 

+

225 elif isinstance(token, WordToken): 

+

226 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

227 parserState.NextState = cls.stateTypeMarkName 

+

228 return 

+

229 

+

230 raise TokenParserException(errorMessage, token) 

+

231 

+

232 @classmethod 

+

233 def stateWhitespace3(cls, parserState: TokenToBlockParser): 

+

234 token = parserState.Token 

+

235 errorMessage = "Expected type mark (identifier)." 

+

236 if isinstance(token, CharacterToken): 

+

237 if token == "\n": 

+

238 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

239 if not isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

240 parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) 

+

241 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

242 else: 

+

243 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

244 parserState.TokenMarker = None 

+

245 parserState.PushState = LinebreakBlock.stateLinebreak 

+

246 return 

+

247 elif token == "-": 

+

248 parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

249 parserState.TokenMarker = None 

+

250 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

251 parserState.TokenMarker = token 

+

252 return 

+

253 elif token == "/": 

+

254 parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

255 parserState.TokenMarker = None 

+

256 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

257 parserState.TokenMarker = token 

+

258 return 

+

259 elif isinstance(token, WordToken): 

+

260 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

261 parserState.NextState = cls.stateTypeMarkName 

+

262 return 

+

263 elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

264 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

265 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

266 parserState.TokenMarker = None 

+

267 return 

+

268 

+

269 raise TokenParserException(errorMessage, token) 

+

270 

+

271 @classmethod 

+

272 def stateTypeMarkName(cls, parserState: TokenToBlockParser): 

+

273 token = parserState.Token 

+

274 errorMessage = "Expected ':=' or whitespace after type mark." 

+

275 if isinstance(token, CharacterToken): 

+

276 if token == ":": 

+

277 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

278 parserState.NextState = cls.statePossibleVariableAssignment 

+

279 return 

+

280 elif token == "\n": 

+

281 parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

282 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

283 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

284 parserState.TokenMarker = None 

+

285 parserState.NextState = cls.stateWhitespace4 

+

286 parserState.PushState = LinebreakBlock.stateLinebreak 

+

287 return 

+

288 elif token == "-": 

+

289 parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

290 parserState.TokenMarker = None 

+

291 parserState.NextState = cls.stateWhitespace4 

+

292 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

293 parserState.TokenMarker = token 

+

294 return 

+

295 elif token == "/": 

+

296 parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

297 parserState.TokenMarker = None 

+

298 parserState.NextState = cls.stateWhitespace4 

+

299 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

300 parserState.TokenMarker = token 

+

301 return 

+

302 elif isinstance(token, SpaceToken): 

+

303 parserState.NextState = cls.stateWhitespace4 

+

304 return 

+

305 

+

306 raise TokenParserException(errorMessage, token) 

+

307 

+

308 @classmethod 

+

309 def stateWhitespace4(cls, parserState: TokenToBlockParser): 

+

310 token = parserState.Token 

+

311 errorMessage = "Expected ':=' after type mark." 

+

312 if isinstance(token, CharacterToken): 

+

313 if token == ":": 

+

314 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

315 parserState.NextState = cls.statePossibleVariableAssignment 

+

316 return 

+

317 elif token == "\n": 

+

318 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

319 if not isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

320 parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) 

+

321 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

322 else: 

+

323 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

324 parserState.TokenMarker = None 

+

325 parserState.PushState = LinebreakBlock.stateLinebreak 

+

326 return 

+

327 elif token == "-": 

+

328 parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

329 parserState.TokenMarker = None 

+

330 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

331 parserState.TokenMarker = token 

+

332 return 

+

333 elif token == "/": 

+

334 parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

335 parserState.TokenMarker = None 

+

336 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

337 parserState.TokenMarker = token 

+

338 return 

+

339 elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

340 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

341 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

342 parserState.TokenMarker = None 

+

343 return 

+

344 

+

345 raise TokenParserException(errorMessage, token) 

+

346 

+

347 @classmethod 

+

348 def statePossibleVariableAssignment(cls, parserState: TokenToBlockParser): 

+

349 token = parserState.Token 

+

350 if isinstance(token, CharacterToken) and (token == "="): 

+

351 parserState.NewToken = VariableAssignmentKeyword(parserState.TokenMarker) 

+

352 parserState.TokenMarker = parserState.NewToken 

+

353 parserState.NextState = cls.stateVariableAssignment 

+

354 return 

+

355 

+

356 raise NotImplementedError("State=PossibleCommentStart: {0!r}".format(token)) 

+

357 

+

358 @classmethod 

+

359 def stateVariableAssignment(cls, parserState: TokenToBlockParser): 

+

360 token = parserState.Token 

+

361 errorMessage = "Expected ':=' or whitespace after attributeDeclaration mark." 

+

362 if isinstance(token, CharacterToken): 

+

363 if token == "\n": 

+

364 parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

365 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

366 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

367 parserState.TokenMarker = None 

+

368 parserState.NextState = cls.stateWhitespace5 

+

369 parserState.PushState = LinebreakBlock.stateLinebreak 

+

370 return 

+

371 elif token == "-": 

+

372 parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

373 parserState.TokenMarker = None 

+

374 parserState.NextState = cls.stateWhitespace5 

+

375 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

376 parserState.TokenMarker = token 

+

377 return 

+

378 elif token == "/": 

+

379 parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

380 parserState.TokenMarker = None 

+

381 parserState.NextState = cls.stateWhitespace5 

+

382 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

383 parserState.TokenMarker = token 

+

384 return 

+

385 elif isinstance(token, SpaceToken): 

+

386 parserState.NextState = cls.stateWhitespace5 

+

387 return 

+

388 

+

389 raise TokenParserException(errorMessage, token) 

+

390 

+

391 @classmethod 

+

392 def stateWhitespace5(cls, parserState: TokenToBlockParser): 

+

393 token = parserState.Token 

+

394 errorMessage = "Expected expression after ':='." 

+

395 if isinstance(token, CharacterToken): 

+

396 if token == "\n": 

+

397 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

398 if not isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

399 parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) 

+

400 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

401 else: 

+

402 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

403 parserState.TokenMarker = None 

+

404 parserState.PushState = LinebreakBlock.stateLinebreak 

+

405 return 

+

406 elif token == "-": 

+

407 parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

408 parserState.TokenMarker = None 

+

409 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

410 parserState.TokenMarker = token 

+

411 return 

+

412 elif token == "/": 

+

413 parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

414 parserState.TokenMarker = None 

+

415 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

416 parserState.TokenMarker = token 

+

417 return 

+

418 elif isinstance(token, WordToken): 

+

419 parserState.NextState = cls.stateExpressionEnd 

+

420 return 

+

421 elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

422 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

423 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

424 parserState.TokenMarker = None 

+

425 return 

+

426 

+

427 raise TokenParserException(errorMessage, token) 

+

428 

+

429 @classmethod 

+

430 def stateExpressionEnd(cls, parserState: TokenToBlockParser): 

+

431 token = parserState.Token 

+

432 errorMessage = "Expected ';'." 

+

433 if isinstance(token, CharacterToken): 

+

434 if token == ";": 

+

435 parserState.NewToken = EndToken(fromExistingToken=token) 

+

436 parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

437 parserState.Pop() 

+

438 return 

+

439 elif token == "-": 

+

440 parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

441 parserState.TokenMarker = None 

+

442 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

443 parserState.TokenMarker = token 

+

444 return 

+

445 elif token == "/": 

+

446 parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

447 parserState.TokenMarker = None 

+

448 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

449 parserState.TokenMarker = token 

+

450 return 

+

451 

+

452 raise TokenParserException(errorMessage, token) 

+
+ + + diff --git a/coverage/d_522569d2cb39496b_AttributeSpecification_py.html b/coverage/d_522569d2cb39496b_AttributeSpecification_py.html new file mode 100644 index 000000000..e1a1a44eb --- /dev/null +++ b/coverage/d_522569d2cb39496b_AttributeSpecification_py.html @@ -0,0 +1,551 @@ + + + + + Coverage for pyVHDLParser/Blocks/Attribute/AttributeSpecification.py: 0% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/Attribute/AttributeSpecification.py: + 0% +

+ +

+ 391 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Token import CharacterToken, LinebreakToken, SpaceToken, WordToken 

+

33from pyVHDLParser.Token.Keywords import BoundaryToken, IdentifierToken, VariableAssignmentKeyword, EndToken 

+

34from pyVHDLParser.Blocks import Block, TokenToBlockParser 

+

35from pyVHDLParser.Blocks.Common import LinebreakBlock, WhitespaceBlock 

+

36from pyVHDLParser.Blocks.Comment import SingleLineCommentBlock, MultiLineCommentBlock 

+

37 

+

38 

+

39@export 

+

40class AttributeSpecificationBlock(Block): 

+

41 @classmethod 

+

42 def stateAttributeSpecificationKeyword(cls, parserState: TokenToBlockParser): 

+

43 token = parserState.Token 

+

44 errorMessage = "Expected whitespace after keyword ATTRIBUTE." 

+

45 if isinstance(token, CharacterToken): 

+

46 if token == "\n": 

+

47 parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

48 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

49 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

50 parserState.TokenMarker = None 

+

51 parserState.NextState = cls.stateWhitespace1 

+

52 parserState.PushState = LinebreakBlock.stateLinebreak 

+

53 return 

+

54 elif token == "-": 

+

55 parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

56 parserState.TokenMarker = None 

+

57 parserState.NextState = cls.stateWhitespace1 

+

58 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

59 parserState.TokenMarker = token 

+

60 return 

+

61 elif token == "/": 

+

62 parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

63 parserState.TokenMarker = None 

+

64 parserState.NextState = cls.stateWhitespace1 

+

65 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

66 parserState.TokenMarker = token 

+

67 return 

+

68 elif isinstance(token, SpaceToken): 

+

69 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

70 parserState.NextState = cls.stateWhitespace1 

+

71 return 

+

72 

+

73 raise TokenParserException(errorMessage, token) 

+

74 

+

75 @classmethod 

+

76 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

77 token = parserState.Token 

+

78 errorMessage = "Expected attribute name (identifier)." 

+

79 if isinstance(token, CharacterToken): 

+

80 if token == "\n": 

+

81 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

82 if not isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

83 parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) 

+

84 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

85 else: 

+

86 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

87 parserState.TokenMarker = None 

+

88 parserState.PushState = LinebreakBlock.stateLinebreak 

+

89 return 

+

90 elif token == "-": 

+

91 parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

92 parserState.TokenMarker = None 

+

93 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

94 parserState.TokenMarker = token 

+

95 return 

+

96 elif token == "/": 

+

97 parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

98 parserState.TokenMarker = None 

+

99 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

100 parserState.TokenMarker = token 

+

101 return 

+

102 elif isinstance(token, WordToken): 

+

103 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

104 parserState.NextState = cls.stateAttributeSpecificationName 

+

105 return 

+

106 elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

107 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

108 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

109 parserState.TokenMarker = None 

+

110 return 

+

111 

+

112 raise TokenParserException(errorMessage, token) 

+

113 

+

114 @classmethod 

+

115 def stateAttributeSpecificationName(cls, parserState: TokenToBlockParser): 

+

116 token = parserState.Token 

+

117 errorMessage = "Expected ';' after library name." 

+

118 if isinstance(token, CharacterToken): 

+

119 if token == ":": 

+

120 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

121 parserState.NextState = cls.stateColon1 

+

122 return 

+

123 elif token == "\n": 

+

124 parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

125 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

126 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

127 parserState.TokenMarker = None 

+

128 parserState.NextState = cls.stateWhitespace2 

+

129 parserState.PushState = LinebreakBlock.stateLinebreak 

+

130 return 

+

131 elif token == "-": 

+

132 parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

133 parserState.TokenMarker = None 

+

134 parserState.NextState = cls.stateWhitespace2 

+

135 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

136 parserState.TokenMarker = token 

+

137 return 

+

138 elif token == "/": 

+

139 parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

140 parserState.TokenMarker = None 

+

141 parserState.NextState = cls.stateWhitespace2 

+

142 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

143 parserState.TokenMarker = token 

+

144 return 

+

145 elif isinstance(token, SpaceToken): 

+

146 parserState.NextState = cls.stateWhitespace2 

+

147 return 

+

148 

+

149 raise TokenParserException(errorMessage, token) 

+

150 

+

151 @classmethod 

+

152 def stateWhitespace2(cls, parserState: TokenToBlockParser): 

+

153 token = parserState.Token 

+

154 errorMessage = "Expected attribute name (identifier)." 

+

155 if isinstance(token, CharacterToken): 

+

156 if token == ":": 

+

157 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

158 parserState.NextState = cls.stateColon1 

+

159 return 

+

160 if token == "\n": 

+

161 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

162 if not isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

163 parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) 

+

164 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

165 else: 

+

166 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

167 parserState.TokenMarker = None 

+

168 parserState.PushState = LinebreakBlock.stateLinebreak 

+

169 return 

+

170 elif token == "-": 

+

171 parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

172 parserState.TokenMarker = None 

+

173 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

174 parserState.TokenMarker = token 

+

175 return 

+

176 elif token == "/": 

+

177 parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

178 parserState.TokenMarker = None 

+

179 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

180 parserState.TokenMarker = token 

+

181 return 

+

182 elif isinstance(token, WordToken): 

+

183 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

184 parserState.NextState = cls.stateColon1() 

+

185 return 

+

186 elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

187 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

188 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

189 parserState.TokenMarker = None 

+

190 return 

+

191 

+

192 raise TokenParserException(errorMessage, token) 

+

193 

+

194 @classmethod 

+

195 def stateColon1(cls, parserState: TokenToBlockParser): 

+

196 token = parserState.Token 

+

197 errorMessage = "Expected type mark or whitespace after ':'." 

+

198 if isinstance(token, CharacterToken): 

+

199 if token == "\n": 

+

200 parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

201 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

202 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

203 parserState.TokenMarker = None 

+

204 parserState.NextState = cls.stateWhitespace3 

+

205 parserState.PushState = LinebreakBlock.stateLinebreak 

+

206 return 

+

207 elif token == "-": 

+

208 parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

209 parserState.TokenMarker = None 

+

210 parserState.NextState = cls.stateWhitespace3 

+

211 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

212 parserState.TokenMarker = token 

+

213 return 

+

214 elif token == "/": 

+

215 parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

216 parserState.TokenMarker = None 

+

217 parserState.NextState = cls.stateWhitespace3 

+

218 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

219 parserState.TokenMarker = token 

+

220 return 

+

221 elif isinstance(token, SpaceToken): 

+

222 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

223 parserState.NextState = cls.stateWhitespace3 

+

224 return 

+

225 elif isinstance(token, WordToken): 

+

226 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

227 parserState.NextState = cls.stateTypeMarkName 

+

228 return 

+

229 

+

230 raise TokenParserException(errorMessage, token) 

+

231 

+

232 @classmethod 

+

233 def stateWhitespace3(cls, parserState: TokenToBlockParser): 

+

234 token = parserState.Token 

+

235 errorMessage = "Expected type mark (identifier)." 

+

236 if isinstance(token, CharacterToken): 

+

237 if token == "\n": 

+

238 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

239 if not isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

240 parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) 

+

241 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

242 else: 

+

243 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

244 parserState.TokenMarker = None 

+

245 parserState.PushState = LinebreakBlock.stateLinebreak 

+

246 return 

+

247 elif token == "-": 

+

248 parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

249 parserState.TokenMarker = None 

+

250 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

251 parserState.TokenMarker = token 

+

252 return 

+

253 elif token == "/": 

+

254 parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

255 parserState.TokenMarker = None 

+

256 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

257 parserState.TokenMarker = token 

+

258 return 

+

259 elif isinstance(token, WordToken): 

+

260 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

261 parserState.NextState = cls.stateTypeMarkName 

+

262 return 

+

263 elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

264 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

265 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

266 parserState.TokenMarker = None 

+

267 return 

+

268 

+

269 raise TokenParserException(errorMessage, token) 

+

270 

+

271 @classmethod 

+

272 def stateTypeMarkName(cls, parserState: TokenToBlockParser): 

+

273 token = parserState.Token 

+

274 errorMessage = "Expected ':=' or whitespace after type mark." 

+

275 if isinstance(token, CharacterToken): 

+

276 if token == ":": 

+

277 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

278 parserState.NextState = cls.statePossibleVariableAssignment 

+

279 return 

+

280 elif token == "\n": 

+

281 parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

282 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

283 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

284 parserState.TokenMarker = None 

+

285 parserState.NextState = cls.stateWhitespace4 

+

286 parserState.PushState = LinebreakBlock.stateLinebreak 

+

287 return 

+

288 elif token == "-": 

+

289 parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

290 parserState.TokenMarker = None 

+

291 parserState.NextState = cls.stateWhitespace4 

+

292 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

293 parserState.TokenMarker = token 

+

294 return 

+

295 elif token == "/": 

+

296 parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

297 parserState.TokenMarker = None 

+

298 parserState.NextState = cls.stateWhitespace4 

+

299 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

300 parserState.TokenMarker = token 

+

301 return 

+

302 elif isinstance(token, SpaceToken): 

+

303 parserState.NextState = cls.stateWhitespace4 

+

304 return 

+

305 

+

306 raise TokenParserException(errorMessage, token) 

+

307 

+

308 @classmethod 

+

309 def stateWhitespace4(cls, parserState: TokenToBlockParser): 

+

310 token = parserState.Token 

+

311 errorMessage = "Expected ':=' after type mark." 

+

312 if isinstance(token, CharacterToken): 

+

313 if token == ":": 

+

314 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

315 parserState.NextState = cls.statePossibleVariableAssignment 

+

316 return 

+

317 elif token == "\n": 

+

318 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

319 if not isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

320 parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) 

+

321 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

322 else: 

+

323 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

324 parserState.TokenMarker = None 

+

325 parserState.PushState = LinebreakBlock.stateLinebreak 

+

326 return 

+

327 elif token == "-": 

+

328 parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

329 parserState.TokenMarker = None 

+

330 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

331 parserState.TokenMarker = token 

+

332 return 

+

333 elif token == "/": 

+

334 parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

335 parserState.TokenMarker = None 

+

336 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

337 parserState.TokenMarker = token 

+

338 return 

+

339 elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

340 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

341 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

342 parserState.TokenMarker = None 

+

343 return 

+

344 

+

345 raise TokenParserException(errorMessage, token) 

+

346 

+

347 @classmethod 

+

348 def statePossibleVariableAssignment(cls, parserState: TokenToBlockParser): 

+

349 token = parserState.Token 

+

350 if isinstance(token, CharacterToken) and (token == "="): 

+

351 parserState.NewToken = VariableAssignmentKeyword(parserState.TokenMarker) 

+

352 parserState.TokenMarker = parserState.NewToken 

+

353 parserState.NextState = cls.stateVariableAssignment 

+

354 return 

+

355 

+

356 raise NotImplementedError("State=PossibleCommentStart: {0!r}".format(token)) 

+

357 

+

358 @classmethod 

+

359 def stateVariableAssignment(cls, parserState: TokenToBlockParser): 

+

360 token = parserState.Token 

+

361 errorMessage = "Expected ':=' or whitespace after attributeSpecification mark." 

+

362 if isinstance(token, CharacterToken): 

+

363 if token == "\n": 

+

364 parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

365 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

366 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

367 parserState.TokenMarker = None 

+

368 parserState.NextState = cls.stateWhitespace5 

+

369 parserState.PushState = LinebreakBlock.stateLinebreak 

+

370 return 

+

371 elif token == "-": 

+

372 parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

373 parserState.TokenMarker = None 

+

374 parserState.NextState = cls.stateWhitespace5 

+

375 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

376 parserState.TokenMarker = token 

+

377 return 

+

378 elif token == "/": 

+

379 parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

380 parserState.TokenMarker = None 

+

381 parserState.NextState = cls.stateWhitespace5 

+

382 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

383 parserState.TokenMarker = token 

+

384 return 

+

385 elif isinstance(token, SpaceToken): 

+

386 parserState.NextState = cls.stateWhitespace5 

+

387 return 

+

388 

+

389 raise TokenParserException(errorMessage, token) 

+

390 

+

391 @classmethod 

+

392 def stateWhitespace5(cls, parserState: TokenToBlockParser): 

+

393 token = parserState.Token 

+

394 errorMessage = "Expected expression after ':='." 

+

395 if isinstance(token, CharacterToken): 

+

396 if token == "\n": 

+

397 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

398 if not isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

399 parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) 

+

400 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

401 else: 

+

402 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

403 parserState.TokenMarker = None 

+

404 parserState.PushState = LinebreakBlock.stateLinebreak 

+

405 return 

+

406 elif token == "-": 

+

407 parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

408 parserState.TokenMarker = None 

+

409 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

410 parserState.TokenMarker = token 

+

411 return 

+

412 elif token == "/": 

+

413 parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

414 parserState.TokenMarker = None 

+

415 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

416 parserState.TokenMarker = token 

+

417 return 

+

418 elif isinstance(token, WordToken): 

+

419 parserState.NextState = cls.stateExpressionEnd 

+

420 return 

+

421 elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

422 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

423 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

424 parserState.TokenMarker = None 

+

425 return 

+

426 

+

427 raise TokenParserException(errorMessage, token) 

+

428 

+

429 @classmethod 

+

430 def stateExpressionEnd(cls, parserState: TokenToBlockParser): 

+

431 token = parserState.Token 

+

432 errorMessage = "Expected ';'." 

+

433 if isinstance(token, CharacterToken): 

+

434 if token == ";": 

+

435 parserState.NewToken = EndToken(fromExistingToken=token) 

+

436 parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

437 parserState.Pop() 

+

438 return 

+

439 elif token == "-": 

+

440 parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

441 parserState.TokenMarker = None 

+

442 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

443 parserState.TokenMarker = token 

+

444 return 

+

445 elif token == "/": 

+

446 parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

447 parserState.TokenMarker = None 

+

448 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

449 parserState.TokenMarker = token 

+

450 return 

+

451 

+

452 raise TokenParserException(errorMessage, token) 

+
+ + + diff --git a/coverage/d_59d4892145d5c009_Comment_py.html b/coverage/d_59d4892145d5c009_Comment_py.html new file mode 100644 index 000000000..ee9e7d1cb --- /dev/null +++ b/coverage/d_59d4892145d5c009_Comment_py.html @@ -0,0 +1,174 @@ + + + + + Coverage for pyVHDLParser/Filters/Comment.py: 0% + + + + + +
+
+

+ Coverage for pyVHDLParser/Filters/Comment.py: + 0% +

+ +

+ 32 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from typing import Generator, Any 

+

31 

+

32from pyVHDLParser.Blocks import BlockParserException, CommentBlock, Block 

+

33from pyVHDLParser.Blocks.Common import IndentationBlock, LinebreakBlock, WhitespaceBlock 

+

34# from pyVHDLParser.Blocks.Document import CommentBlock 

+

35 

+

36 

+

37def StripAndFuse(generator: Generator[Block, Any, None]) -> Generator[Block, Any, None]: 

+

38 iterator = iter(generator) 

+

39 lastBlock = next(iterator) 

+

40 

+

41 # don't filter the first block 

+

42 yield lastBlock 

+

43 

+

44 for block in iterator: 

+

45 if isinstance(block, (IndentationBlock, CommentBlock, LinebreakBlock)): 

+

46 continue 

+

47 else: 

+

48 if block.MultiPart == True: 

+

49 while True: 

+

50 nextBlock = next(iterator) 

+

51 if isinstance(nextBlock, (WhitespaceBlock, CommentBlock)): 

+

52 continue 

+

53 if type(block) is not type(nextBlock): 

+

54 raise BlockParserException("Error in multipart blocks. {0} <-> {1}".format(type(block), type(nextBlock)), None) # TODO: review exception type 

+

55 

+

56 nextBlock.StartToken.PreviousToken = block.EndToken 

+

57 block.EndToken = nextBlock.EndToken 

+

58 if nextBlock.MultiPart == False: 

+

59 break 

+

60 

+

61 block.PreviousBlock = lastBlock 

+

62 block.StartToken.PreviousToken = lastBlock.EndToken 

+

63 yield block 

+

64 lastBlock = block 

+

65 

+

66def FastForward(generator: Generator[Block, Any, None]) -> Generator[Block, Any, None]: 

+

67 iterator = iter(generator) 

+

68 # don't filter the first block 

+

69 yield next(iterator) 

+

70 

+

71 for block in iterator: 

+

72 if isinstance(block, (IndentationBlock, CommentBlock, LinebreakBlock)): 

+

73 continue 

+

74 else: 

+

75 yield block 

+
+ + + diff --git a/coverage/d_6d556a8728c616ef___init___py.html b/coverage/d_6d556a8728c616ef___init___py.html new file mode 100644 index 000000000..173b6454c --- /dev/null +++ b/coverage/d_6d556a8728c616ef___init___py.html @@ -0,0 +1,281 @@ + + + + + Coverage for pyVHDLParser/DocumentModel/__init__.py: 54% + + + + + +
+
+

+ Coverage for pyVHDLParser/DocumentModel/__init__.py: + 54% +

+ +

+ 112 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pathlib import Path 

+

31from typing import List, Union 

+

32 

+

33from pyTooling.Decorators import export 

+

34from pyVHDLModel import Document as DocumentModel 

+

35 

+

36from pyVHDLParser.Base import ParserException 

+

37from pyVHDLParser.Token.Parser import Tokenizer 

+

38from pyVHDLParser.Blocks import TokenToBlockParser, BlockParserException 

+

39from pyVHDLParser.Groups import StartOfDocumentGroup, EndOfDocumentGroup, BlockToGroupParser, Group, GroupParserException 

+

40from pyVHDLParser.Groups.Comment import WhitespaceGroup 

+

41from pyVHDLParser.Groups.DesignUnit import ContextGroup, EntityGroup, ArchitectureGroup, PackageBodyGroup, PackageGroup 

+

42from pyVHDLParser.Groups.Reference import LibraryGroup, UseGroup 

+

43from pyVHDLParser.DocumentModel.Reference import LibraryClause, PackageReference 

+

44 

+

45 

+

46@export 

+

47class DOMParserException(ParserException): 

+

48 def __init__(self, message, group): 

+

49 super().__init__(message) 

+

50 self._group = group 

+

51 

+

52 

+

53@export 

+

54class Document(DocumentModel): 

+

55 __libraries: List[LibraryClause] 

+

56 __uses: List[PackageReference] 

+

57 

+

58 def __init__(self, file: Union[Path, str]): # FIXME: parameter type 

+

59 if isinstance(file, Path): 59 ↛ 60line 59 didn't jump to line 60, because the condition on line 59 was never true

+

60 filePath = file 

+

61 elif isinstance(file, str): 61 ↛ 64line 61 didn't jump to line 64, because the condition on line 61 was never false

+

62 filePath = Path(file) 

+

63 else: 

+

64 raise ValueError("Unsupported type for parameter 'file'.") 

+

65 

+

66 super().__init__(filePath) 

+

67 

+

68 self.__libraries = [] 

+

69 self.__uses = [] 

+

70 

+

71 def Parse(self, content=None): # FIXME: parameter type 

+

72 if content is None: 72 ↛ 73line 72 didn't jump to line 73, because the condition on line 72 was never true

+

73 if not self._path.exists(): 

+

74 raise DOMParserException("File '{0!s}' does not exist.".format(self._path))\ 

+

75 from FileNotFoundError(str(self._path)) 

+

76 

+

77 with self._path.open('r') as fileHandle: 

+

78 content = fileHandle.read() 

+

79 

+

80 vhdlTokenStream = Tokenizer.GetVHDLTokenizer(content) 

+

81 vhdlBlockStream = TokenToBlockParser(vhdlTokenStream)() 

+

82 vhdlGroupStream = BlockToGroupParser(vhdlBlockStream)() 

+

83 try: 

+

84 groups = [group for group in vhdlGroupStream] 

+

85 except BlockParserException as ex: 85 ↛ 86line 85 didn't jump to line 86, because the exception caught by line 85 didn't happen

+

86 raise DOMParserException("Error while parsing and indexing the source code.", ex.Group) from ex 

+

87 except GroupParserException as ex: 87 ↛ 89line 87 didn't jump to line 89

+

88 raise DOMParserException("Unexpected ParserException.", ex.Block) from ex 

+

89 except ParserException as ex: 

+

90 raise DOMParserException("Unexpected ParserException.", ex.Position) from ex 

+

91 except Exception as ex: 

+

92 raise DOMParserException("Unexpected exception.", None) from ex 

+

93 

+

94 firstGroup = groups[0] 

+

95 lastGroup = groups[-1] 

+

96 

+

97 if not isinstance(firstGroup, StartOfDocumentGroup): 97 ↛ 98line 97 didn't jump to line 98, because the condition on line 97 was never true

+

98 raise DOMParserException("Expected group is not a StartOfDocumentGroup.", firstGroup) 

+

99 elif not isinstance(lastGroup, EndOfDocumentGroup): 99 ↛ 100line 99 didn't jump to line 100, because the condition on line 99 was never true

+

100 raise DOMParserException("Expected group is not an EndOfDocumentGroup.", lastGroup) 

+

101 

+

102 # run recursively (node, group) 

+

103 self.stateParse(self, firstGroup) 

+

104 

+

105 @classmethod 

+

106 def stateParse(cls, document, startOfDocumentGroup: Group): 

+

107 from pyVHDLParser.DocumentModel.Reference import LibraryClause as LibraryModel, PackageReference as UseModel 

+

108 from pyVHDLParser.DocumentModel.DesignUnit.Context import Context as ContextModel 

+

109 from pyVHDLParser.DocumentModel.DesignUnit.Entity import Entity as EntityModel 

+

110 from pyVHDLParser.DocumentModel.DesignUnit.Architecture import Architecture as ArchitectureModel 

+

111 from pyVHDLParser.DocumentModel.DesignUnit.Package import Package as PackageModel 

+

112 from pyVHDLParser.DocumentModel.DesignUnit.PackageBody import PackageBody as PackageBodyModel 

+

113 

+

114 GROUP_TO_MODEL = { 

+

115 LibraryGroup: LibraryModel, 

+

116 UseGroup: UseModel, 

+

117 ContextGroup: ContextModel, 

+

118 EntityGroup: EntityModel, 

+

119 ArchitectureGroup: ArchitectureModel, 

+

120 PackageGroup: PackageModel, 

+

121 PackageBodyGroup: PackageBodyModel, 

+

122 # ConfigurationModel 

+

123 } 

+

124 

+

125 for subGroup in startOfDocumentGroup.GetSubGroups(): 125 ↛ exitline 125 didn't return from function 'stateParse', because the loop on line 125 didn't complete

+

126 if isinstance(subGroup, (WhitespaceGroup)): 126 ↛ 127line 126 didn't jump to line 127, because the condition on line 126 was never true

+

127 pass 

+

128 for group in GROUP_TO_MODEL: 128 ↛ 125line 128 didn't jump to line 125, because the loop on line 128 didn't complete

+

129 # TODO: compare to a direct dictionary match with exception fallback on whitespace 

+

130 if isinstance(subGroup, group): 

+

131 GROUP_TO_MODEL[group].stateParse(document, subGroup) 

+

132 break 

+

133 

+

134 def AddLibrary(self, library): # FIXME: parameter type 

+

135 self.__libraries.append(library) 

+

136 

+

137 def AddUse(self, use): # FIXME: parameter type 

+

138 self.__uses.append(use) 

+

139 

+

140 @property 

+

141 def Libraries(self): 

+

142 return self.__libraries 

+

143 

+

144 @property 

+

145 def Uses(self): 

+

146 return self.__uses 

+

147 

+

148 def AddContext(self, context): # FIXME: parameter type 

+

149 self._contexts.append(context) 

+

150 

+

151 def AddEntity(self, entity): # FIXME: parameter type 

+

152 self._entities.append(entity) 

+

153 

+

154 def AddArchitecture(self, architecture): # FIXME: parameter type 

+

155 self._architectures.append(architecture) 

+

156 

+

157 def AddPackage(self, package): # FIXME: parameter type 

+

158 self._packages.append(package) 

+

159 

+

160 def AddPackageBody(self, packageBody): # FIXME: parameter type 

+

161 self._packageBodies.append(packageBody) 

+

162 

+

163 def Print(self, indent: int=0): 

+

164 _indent = " " * indent 

+

165 if len(self.__libraries) > 0: 

+

166 for library in self.__libraries: 

+

167 print("{indent}-- unused LIBRARY {lib};".format(indent=_indent, lib=library)) 

+

168 if len(self.__uses) > 0: 

+

169 for use in self.__uses: 

+

170 print("{indent}-- unused USE {lib}.{pack}.{obj};".format(indent=_indent, lib=use.Library, pack=use.Package, obj=use.Item)) 

+

171 print() 

+

172 for entity in self._entities: 

+

173 entity.Print() 

+

174 print() 

+

175 for architecture in self._architectures: 

+

176 architecture.Print() 

+

177 print() 

+

178 for package in self._packages: 

+

179 package.Print() 

+

180 print() 

+

181 for packageBody in self._packageBodies: 

+

182 packageBody.Print() 

+
+ + + diff --git a/coverage/d_6f6172e54b92c588_Context_py.html b/coverage/d_6f6172e54b92c588_Context_py.html new file mode 100644 index 000000000..fc5639b41 --- /dev/null +++ b/coverage/d_6f6172e54b92c588_Context_py.html @@ -0,0 +1,289 @@ + + + + + Coverage for pyVHDLParser/Blocks/Reference/Context.py: 52% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/Reference/Context.py: + 52% +

+ +

+ 132 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Token import CommentToken, SpaceToken, LinebreakToken, MultiLineCommentToken, IndentationToken, SingleLineCommentToken, ExtendedIdentifier 

+

33from pyVHDLParser.Token.Keywords import WordToken, BoundaryToken, IdentifierToken, IsKeyword, UseKeyword, EndKeyword, ContextKeyword, LibraryKeyword 

+

34from pyVHDLParser.Blocks import Block, CommentBlock, BlockParserException, TokenToBlockParser 

+

35from pyVHDLParser.Blocks.Common import LinebreakBlock, IndentationBlock, WhitespaceBlock 

+

36from pyVHDLParser.Blocks.Generic import EndBlock as EndBlockBase 

+

37 

+

38 

+

39@export 

+

40class NameBlock(Block): 

+

41 KEYWORDS = None 

+

42 

+

43 @classmethod 

+

44 def __cls_init__(cls): 

+

45 from pyVHDLParser.Blocks.Reference import Use, Library 

+

46 

+

47 cls.KEYWORDS = { 

+

48 # Keyword Transition 

+

49 UseKeyword: Use.StartBlock.stateUseKeyword, 

+

50 LibraryKeyword: Library.StartBlock.stateLibraryKeyword 

+

51 } 

+

52 @classmethod 

+

53 def stateContextKeyword(cls, parserState: TokenToBlockParser): 

+

54 token = parserState.Token 

+

55 if isinstance(token, SpaceToken): 55 ↛ 59line 55 didn't jump to line 59, because the condition on line 55 was never false

+

56 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

57 parserState.NextState = cls.stateWhitespace1 

+

58 return 

+

59 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

60 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

61 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

62 _ = block(parserState.NewBlock, token) 

+

63 parserState.TokenMarker = None 

+

64 parserState.NextState = cls.stateWhitespace1 

+

65 return 

+

66 

+

67 raise BlockParserException("Expected whitespace after keyword CONTEXT.", token) 

+

68 

+

69 @classmethod 

+

70 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

71 token = parserState.Token 

+

72 if isinstance(token, WordToken): 72 ↛ 76line 72 didn't jump to line 76, because the condition on line 72 was never false

+

73 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

74 parserState.NextState = cls.stateContextName 

+

75 return 

+

76 elif isinstance(token, ExtendedIdentifier): 

+

77 parserState.NextState = cls.stateContextName 

+

78 return 

+

79 elif isinstance(token, LinebreakToken): 

+

80 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

81 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

82 _ = LinebreakBlock(parserState.NewBlock, token) 

+

83 else: 

+

84 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

85 parserState.TokenMarker = None 

+

86 return 

+

87 elif isinstance(token, CommentToken): 

+

88 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

89 _ = CommentBlock(parserState.NewBlock, token) 

+

90 parserState.TokenMarker = None 

+

91 return 

+

92 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

93 return 

+

94 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

95 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

96 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

97 parserState.TokenMarker = None 

+

98 return 

+

99 

+

100 raise BlockParserException("Expected context name (identifier).", token) 

+

101 

+

102 @classmethod 

+

103 def stateContextName(cls, parserState: TokenToBlockParser): 

+

104 token = parserState.Token 

+

105 if isinstance(token, SpaceToken): 105 ↛ 109line 105 didn't jump to line 109, because the condition on line 105 was never false

+

106 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

107 parserState.NextState = cls.stateWhitespace2 

+

108 return 

+

109 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

110 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

111 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

112 _ = block(parserState.NewBlock, token) 

+

113 parserState.TokenMarker = None 

+

114 parserState.NextState = cls.stateWhitespace2 

+

115 return 

+

116 

+

117 raise BlockParserException("Expected whitespace after context name (identifier).", token) 

+

118 

+

119 @classmethod 

+

120 def stateWhitespace2(cls, parserState: TokenToBlockParser): 

+

121 token = parserState.Token 

+

122 if isinstance(token, WordToken) and (token <= "is"): 122 ↛ 127line 122 didn't jump to line 127, because the condition on line 122 was never false

+

123 parserState.NewToken = IsKeyword(fromExistingToken=token) 

+

124 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

125 parserState.NextState = cls.stateDeclarativeRegion 

+

126 return 

+

127 elif isinstance(token, LinebreakToken): 

+

128 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

129 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

130 _ = LinebreakBlock(parserState.NewBlock, token) 

+

131 else: 

+

132 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

133 parserState.TokenMarker = None 

+

134 return 

+

135 elif isinstance(token, CommentToken): 

+

136 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

137 _ = CommentBlock(parserState.NewBlock, token) 

+

138 parserState.TokenMarker = None 

+

139 return 

+

140 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

141 return 

+

142 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

143 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

144 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

145 parserState.TokenMarker = None 

+

146 return 

+

147 

+

148 raise BlockParserException("Expected keyword IS after context name.", token) 

+

149 

+

150 @classmethod 

+

151 def stateDeclarativeRegion(cls, parserState: TokenToBlockParser): 

+

152 token = parserState.Token 

+

153 if isinstance(token, SpaceToken): 

+

154 blockType = IndentationBlock if isinstance(token, IndentationToken) else WhitespaceBlock 

+

155 parserState.NewBlock = blockType(parserState.LastBlock, token) 

+

156 return 

+

157 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

158 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

159 parserState.NewBlock = block(parserState.LastBlock, token) 

+

160 parserState.TokenMarker = None 

+

161 return 

+

162 elif isinstance(token, WordToken): 162 ↛ 178line 162 didn't jump to line 178, because the condition on line 162 was never false

+

163 tokenValue = token.Value.lower() 

+

164 for keyword in cls.KEYWORDS: 

+

165 if tokenValue == keyword.__KEYWORD__: 

+

166 newToken = keyword(fromExistingToken=token) 

+

167 parserState.PushState = cls.KEYWORDS[keyword] 

+

168 parserState.NewToken = newToken 

+

169 parserState.TokenMarker = newToken 

+

170 return 

+

171 

+

172 if tokenValue == "end": 172 ↛ 178line 172 didn't jump to line 178, because the condition on line 172 was never false

+

173 parserState.NewToken = EndKeyword(fromExistingToken=token) 

+

174 parserState.TokenMarker = parserState.NewToken 

+

175 parserState.NextState = EndBlock.stateEndKeyword 

+

176 return 

+

177 

+

178 raise BlockParserException( 

+

179 "Expected one of these keywords: END, {keywords}. Found: '{tokenValue}'.".format( 

+

180 keywords=", ".join( 

+

181 [kw.__KEYWORD__.upper() for kw in cls.KEYWORDS] 

+

182 ), 

+

183 tokenValue=token.Value 

+

184 ), token) 

+

185 

+

186 

+

187@export 

+

188class EndBlock(EndBlockBase): 

+

189 KEYWORD = ContextKeyword 

+

190 EXPECTED_NAME = KEYWORD.__KEYWORD__ 

+
+ + + diff --git a/coverage/d_6f6172e54b92c588_Library_py.html b/coverage/d_6f6172e54b92c588_Library_py.html new file mode 100644 index 000000000..d63e7e6f5 --- /dev/null +++ b/coverage/d_6f6172e54b92c588_Library_py.html @@ -0,0 +1,313 @@ + + + + + Coverage for pyVHDLParser/Blocks/Reference/Library.py: 51% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/Reference/Library.py: + 51% +

+ +

+ 165 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Token import CharacterToken, SpaceToken, WordToken, LinebreakToken, CommentToken, IndentationToken, SingleLineCommentToken, MultiLineCommentToken, ExtendedIdentifier 

+

33from pyVHDLParser.Token.Keywords import BoundaryToken, IdentifierToken, EndToken, DelimiterToken 

+

34from pyVHDLParser.Blocks import BlockParserException, Block, CommentBlock, TokenToBlockParser, FinalBlock, SkipableBlock 

+

35from pyVHDLParser.Blocks.Common import LinebreakBlock, WhitespaceBlock 

+

36 

+

37 

+

38@export 

+

39class StartBlock(Block): 

+

40 @classmethod 

+

41 def stateLibraryKeyword(cls, parserState: TokenToBlockParser): 

+

42 token = parserState.Token 

+

43 if isinstance(token, SpaceToken): 43 ↛ 49line 43 didn't jump to line 49, because the condition on line 43 was never false

+

44 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

45 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

46 parserState.TokenMarker = None 

+

47 parserState.NextState = cls.stateWhitespace1 

+

48 return 

+

49 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

50 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

51 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken) 

+

52 _ = block(parserState.NewBlock, token) 

+

53 parserState.TokenMarker = None 

+

54 parserState.NextState = cls.stateWhitespace1 

+

55 return 

+

56 

+

57 raise BlockParserException("Expected whitespace after keyword LIBRARY.", token) 

+

58 

+

59 @classmethod 

+

60 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

61 token = parserState.Token 

+

62 if isinstance(token, WordToken): 62 ↛ 67line 62 didn't jump to line 67, because the condition on line 62 was never false

+

63 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

64 parserState.TokenMarker = parserState.NewToken 

+

65 parserState.NextState = LibraryNameBlock.stateLibraryName 

+

66 return 

+

67 elif isinstance(token, ExtendedIdentifier): 

+

68 parserState.NextState = LibraryNameBlock.stateLibraryName 

+

69 return 

+

70 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

71 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

72 parserState.NewBlock = block(parserState.LastBlock, token) 

+

73 parserState.TokenMarker = None 

+

74 return 

+

75 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

76 return 

+

77 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

78 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

79 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

80 parserState.TokenMarker = None 

+

81 return 

+

82 

+

83 raise BlockParserException("Expected library name (identifier).", token) 

+

84 

+

85 

+

86@export 

+

87class LibraryNameBlock(Block): 

+

88 @classmethod 

+

89 def stateLibraryName(cls, parserState: TokenToBlockParser): 

+

90 token = parserState.Token 

+

91 if isinstance(token, CharacterToken): 

+

92 if token == ",": 

+

93 parserState.NewToken = DelimiterToken(fromExistingToken=token) 

+

94 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken) 

+

95 _ = DelimiterBlock(parserState.NewBlock, parserState.NewToken) 

+

96 parserState.NextState = DelimiterBlock.stateDelimiter 

+

97 return 

+

98 elif token == ";": 98 ↛ 116line 98 didn't jump to line 116, because the condition on line 98 was never false

+

99 parserState.NewToken = EndToken(fromExistingToken=token) 

+

100 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken) 

+

101 _ = EndBlock(parserState.NewBlock, parserState.NewToken) 

+

102 parserState.Pop() 

+

103 return 

+

104 elif isinstance(token, SpaceToken): 104 ↛ 108line 104 didn't jump to line 108, because the condition on line 104 was never false

+

105 #parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

106 parserState.NextState = cls.stateWhitespace1 

+

107 return 

+

108 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

109 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

110 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

111 _ = block(parserState.NewBlock, token) 

+

112 parserState.TokenMarker = None 

+

113 parserState.NextState = cls.stateWhitespace1 

+

114 return 

+

115 

+

116 raise BlockParserException("Expected ';' after library name.", token) 

+

117 

+

118 @classmethod 

+

119 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

120 token = parserState.Token 

+

121 if isinstance(token, CharacterToken): 121 ↛ 134line 121 didn't jump to line 134, because the condition on line 121 was never false

+

122 if token == ",": 

+

123 parserState.NewToken = DelimiterToken(fromExistingToken=token) 

+

124 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken) 

+

125 _ = DelimiterBlock(parserState.NewBlock, parserState.NewToken) 

+

126 parserState.NextState = DelimiterBlock.stateDelimiter 

+

127 return 

+

128 elif token == ";": 128 ↛ 151line 128 didn't jump to line 151, because the condition on line 128 was never false

+

129 parserState.NewToken = EndToken(fromExistingToken=token) 

+

130 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken) 

+

131 _ = EndBlock(parserState.NewBlock, parserState.NewToken) 

+

132 parserState.Pop() 

+

133 return 

+

134 elif isinstance(token, LinebreakToken): 

+

135 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token, multiPart=True) 

+

136 parserState.TokenMarker = None 

+

137 return 

+

138 elif isinstance(token, CommentToken): 

+

139 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

140 _ = CommentBlock(parserState.NewBlock, token) 

+

141 parserState.TokenMarker = None 

+

142 return 

+

143 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

144 return 

+

145 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

146 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

147 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

148 parserState.TokenMarker = None 

+

149 return 

+

150 

+

151 raise BlockParserException("Expected ';'.", token) 

+

152 

+

153 

+

154@export 

+

155class DelimiterBlock(SkipableBlock): 

+

156 @classmethod 

+

157 def stateDelimiter(cls, parserState: TokenToBlockParser): 

+

158 token = parserState.Token 

+

159 if isinstance(token, WordToken): 159 ↛ 160line 159 didn't jump to line 160, because the condition on line 159 was never true

+

160 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

161 parserState.NextState = LibraryNameBlock.stateLibraryName 

+

162 parserState.TokenMarker = parserState.NewToken 

+

163 return 

+

164 elif isinstance(token, ExtendedIdentifier): 164 ↛ 165line 164 didn't jump to line 165, because the condition on line 164 was never true

+

165 parserState.NextState = LibraryNameBlock.stateLibraryName 

+

166 return 

+

167 elif isinstance(token, LinebreakToken): 167 ↛ 168line 167 didn't jump to line 168, because the condition on line 167 was never true

+

168 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token, multiPart=True) 

+

169 parserState.TokenMarker = None 

+

170 return 

+

171 elif isinstance(token, CommentToken): 171 ↛ 172line 171 didn't jump to line 172, because the condition on line 171 was never true

+

172 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

173 _ = CommentBlock(parserState.NewBlock, token) 

+

174 parserState.TokenMarker = None 

+

175 return 

+

176 elif isinstance(token, SpaceToken): 176 ↛ 183line 176 didn't jump to line 183, because the condition on line 176 was never false

+

177 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

178 # parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

179 parserState.TokenMarker = parserState.NewToken 

+

180 parserState.NextState = cls.stateWhitespace1 

+

181 return 

+

182 

+

183 raise BlockParserException("Expected library name (identifier).", token) 

+

184 

+

185 @classmethod 

+

186 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

187 token = parserState.Token 

+

188 if isinstance(token, WordToken): 188 ↛ 192line 188 didn't jump to line 192, because the condition on line 188 was never false

+

189 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

190 parserState.NextState = LibraryNameBlock.stateLibraryName 

+

191 return 

+

192 elif isinstance(token, LinebreakToken): 

+

193 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token, multiPart=True) 

+

194 parserState.TokenMarker = None 

+

195 return 

+

196 elif isinstance(token, CommentToken): 

+

197 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

198 _ = CommentBlock(parserState.NewBlock, token) 

+

199 parserState.TokenMarker = None 

+

200 return 

+

201 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

202 return 

+

203 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

204 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

205 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

206 parserState.TokenMarker = None 

+

207 return 

+

208 

+

209 raise BlockParserException("Expected library name (identifier).", token) 

+

210 

+

211 

+

212@export 

+

213class EndBlock(FinalBlock): 

+

214 pass 

+
+ + + diff --git a/coverage/d_6f6172e54b92c588_Use_py.html b/coverage/d_6f6172e54b92c588_Use_py.html new file mode 100644 index 000000000..63562a69d --- /dev/null +++ b/coverage/d_6f6172e54b92c588_Use_py.html @@ -0,0 +1,555 @@ + + + + + Coverage for pyVHDLParser/Blocks/Reference/Use.py: 49% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/Reference/Use.py: + 49% +

+ +

+ 387 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Token import CharacterToken, SpaceToken, WordToken, LinebreakToken, CommentToken, MultiLineCommentToken, IndentationToken, SingleLineCommentToken, ExtendedIdentifier 

+

33from pyVHDLParser.Token.Keywords import BoundaryToken, IdentifierToken, DelimiterToken, EndToken, AllKeyword 

+

34from pyVHDLParser.Blocks import BlockParserException, Block, CommentBlock, TokenToBlockParser, FinalBlock, SkipableBlock 

+

35from pyVHDLParser.Blocks.Common import LinebreakBlock, WhitespaceBlock 

+

36 

+

37 

+

38@export 

+

39class StartBlock(Block): 

+

40 @classmethod 

+

41 def stateUseKeyword(cls, parserState: TokenToBlockParser): 

+

42 token = parserState.Token 

+

43 if isinstance(token, SpaceToken): 

+

44 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

45 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

46 parserState.TokenMarker = None 

+

47 parserState.NextState = cls.stateWhitespace1 

+

48 return 

+

49 elif isinstance(token, (LinebreakToken, CommentToken)): 49 ↛ 57line 49 didn't jump to line 57, because the condition on line 49 was never false

+

50 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

51 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

52 _ = block(parserState.NewBlock, token) 

+

53 parserState.TokenMarker = None 

+

54 parserState.NextState = cls.stateWhitespace1 

+

55 return 

+

56 

+

57 raise BlockParserException("Expected whitespace after keyword USE.", token) 

+

58 

+

59 @classmethod 

+

60 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

61 token = parserState.Token 

+

62 if isinstance(token, WordToken): 62 ↛ 67line 62 didn't jump to line 67, because the condition on line 62 was never false

+

63 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

64 parserState.TokenMarker = parserState.NewToken 

+

65 parserState.NextState = ReferenceNameBlock.stateLibraryName 

+

66 return 

+

67 elif isinstance(token, ExtendedIdentifier): 

+

68 parserState.NextState = ReferenceNameBlock.stateLibraryName 

+

69 return 

+

70 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

71 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

72 parserState.NewBlock = block(parserState.LastBlock, token) 

+

73 parserState.TokenMarker = None 

+

74 return 

+

75 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

76 return 

+

77 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

78 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

79 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

80 parserState.TokenMarker = None 

+

81 return 

+

82 

+

83 raise BlockParserException("Expected library name (identifier).", token) 

+

84 

+

85 

+

86@export 

+

87class ReferenceNameBlock(Block): 

+

88 @classmethod 

+

89 def stateLibraryName(cls, parserState: TokenToBlockParser): 

+

90 token = parserState.Token 

+

91 if isinstance(token, CharacterToken) and (token == "."): 

+

92 parserState.NewToken = DelimiterToken(fromExistingToken=token) 

+

93 parserState.NextState = cls.stateDot1 

+

94 return 

+

95 elif isinstance(token, SpaceToken): 

+

96 #parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

97 parserState.NextState = cls.stateWhitespace1 

+

98 return 

+

99 elif isinstance(token, (LinebreakToken, CommentToken)): 99 ↛ 107line 99 didn't jump to line 107, because the condition on line 99 was never false

+

100 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

101 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

102 _ = block(parserState.NewBlock, token) 

+

103 parserState.TokenMarker = None 

+

104 parserState.NextState = cls.stateWhitespace1 

+

105 return 

+

106 

+

107 raise BlockParserException("Expected '.' after library name.", token) 

+

108 

+

109 @classmethod 

+

110 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

111 token = parserState.Token 

+

112 if isinstance(token, CharacterToken) and (token == "."): 112 ↛ 116line 112 didn't jump to line 116, because the condition on line 112 was never false

+

113 parserState.NewToken = DelimiterToken(fromExistingToken=token) 

+

114 parserState.NextState = cls.stateDot1 

+

115 return 

+

116 elif isinstance(token, WordToken): 

+

117 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

118 parserState.TokenMarker = parserState.NewToken 

+

119 parserState.NextState = cls.stateDot1 

+

120 return 

+

121 elif isinstance(token, ExtendedIdentifier): 

+

122 parserState.NextState = cls.stateDot1 

+

123 return 

+

124 elif isinstance(token, LinebreakToken): 

+

125 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token, multiPart=True) 

+

126 parserState.TokenMarker = None 

+

127 return 

+

128 elif isinstance(token, CommentToken): 

+

129 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

130 _ = CommentBlock(parserState.NewBlock, token) 

+

131 parserState.TokenMarker = None 

+

132 return 

+

133 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

134 return 

+

135 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

136 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

137 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

138 parserState.TokenMarker = None 

+

139 return 

+

140 

+

141 raise BlockParserException("Expected '.'.", token) 

+

142 

+

143 @classmethod 

+

144 def stateDot1(cls, parserState: TokenToBlockParser): 

+

145 token = parserState.Token 

+

146 if isinstance(token, WordToken): 

+

147 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

148 parserState.NextState = cls.statePackageName 

+

149 return 

+

150 elif isinstance(token, ExtendedIdentifier): 150 ↛ 151line 150 didn't jump to line 151, because the condition on line 150 was never true

+

151 parserState.NextState = cls.statePackageName 

+

152 return 

+

153 elif isinstance(token, CharacterToken) and (token == "."): 153 ↛ 154line 153 didn't jump to line 154, because the condition on line 153 was never true

+

154 parserState.NewToken = DelimiterToken(fromExistingToken=token) 

+

155 parserState.NextState = cls.stateDot1 

+

156 return 

+

157 elif isinstance(token, SpaceToken): 

+

158 #parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

159 parserState.NextState = cls.stateWhitespace2 

+

160 return 

+

161 elif isinstance(token, (LinebreakToken, CommentToken)): 161 ↛ 169line 161 didn't jump to line 169, because the condition on line 161 was never false

+

162 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

163 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

164 _ = block(parserState.NewBlock, token) 

+

165 parserState.TokenMarker = None 

+

166 parserState.NextState = cls.stateWhitespace2 

+

167 return 

+

168 

+

169 raise BlockParserException("Expected package name after '.'.", token) 

+

170 

+

171 @classmethod 

+

172 def stateWhitespace2(cls, parserState: TokenToBlockParser): 

+

173 token = parserState.Token 

+

174 if isinstance(token, WordToken): 174 ↛ 178line 174 didn't jump to line 178, because the condition on line 174 was never false

+

175 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

176 parserState.NextState = cls.statePackageName 

+

177 return 

+

178 elif isinstance(token, ExtendedIdentifier): 

+

179 parserState.NextState = cls.statePackageName 

+

180 return 

+

181 elif isinstance(token, CharacterToken) and (token == "."): 

+

182 parserState.NewToken = DelimiterToken(fromExistingToken=token) 

+

183 parserState.NextState = cls.stateDot1 

+

184 return 

+

185 elif isinstance(token, WordToken): 

+

186 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

187 parserState.TokenMarker = parserState.NewToken 

+

188 parserState.NextState = cls.statePackageName 

+

189 return 

+

190 elif isinstance(token, LinebreakToken): 

+

191 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token, multiPart=True) 

+

192 parserState.TokenMarker = None 

+

193 return 

+

194 elif isinstance(token, CommentToken): 

+

195 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

196 _ = CommentBlock(parserState.NewBlock, token) 

+

197 parserState.TokenMarker = None 

+

198 return 

+

199 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

200 return 

+

201 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

202 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

203 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

204 parserState.TokenMarker = None 

+

205 return 

+

206 

+

207 raise BlockParserException("Expected package name (identifier).", token) 

+

208 

+

209 @classmethod 

+

210 def statePackageName(cls, parserState: TokenToBlockParser): 

+

211 token = parserState.Token 

+

212 if isinstance(token, CharacterToken) and (token == "."): 

+

213 parserState.NewToken = DelimiterToken(fromExistingToken=token) 

+

214 parserState.NextState = cls.stateDot2 

+

215 return 

+

216 elif isinstance(token, SpaceToken): 

+

217 #parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

218 parserState.NextState = cls.stateWhitespace3 

+

219 return 

+

220 elif isinstance(token, (LinebreakToken, CommentToken)): 220 ↛ 228line 220 didn't jump to line 228, because the condition on line 220 was never false

+

221 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

222 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

223 _ = block(parserState.NewBlock, token) 

+

224 parserState.TokenMarker = None 

+

225 parserState.NextState = cls.stateWhitespace3 

+

226 return 

+

227 

+

228 raise BlockParserException("Expected '.' after package name.", token) 

+

229 

+

230 @classmethod 

+

231 def stateWhitespace3(cls, parserState: TokenToBlockParser): 

+

232 token = parserState.Token 

+

233 if isinstance(token, CharacterToken) and (token == "."): 233 ↛ 237line 233 didn't jump to line 237, because the condition on line 233 was never false

+

234 parserState.NewToken = DelimiterToken(fromExistingToken=token) 

+

235 parserState.NextState = cls.stateDot2 

+

236 return 

+

237 elif isinstance(token, WordToken): 

+

238 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

239 parserState.TokenMarker = parserState.NewToken 

+

240 parserState.NextState = cls.stateDot2 

+

241 return 

+

242 elif isinstance(token, ExtendedIdentifier): 

+

243 parserState.NextState = cls.stateDot2 

+

244 return 

+

245 elif isinstance(token, LinebreakToken): 

+

246 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token, multiPart=True) 

+

247 parserState.TokenMarker = None 

+

248 return 

+

249 elif isinstance(token, CommentToken): 

+

250 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

251 _ = CommentBlock(parserState.NewBlock, token) 

+

252 parserState.TokenMarker = None 

+

253 return 

+

254 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

255 return 

+

256 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

257 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

258 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

259 parserState.TokenMarker = None 

+

260 return 

+

261 

+

262 raise BlockParserException("Expected '.'.", token) 

+

263 

+

264 @classmethod 

+

265 def stateDot2(cls, parserState: TokenToBlockParser): 

+

266 token = parserState.Token 

+

267 if isinstance(token, WordToken): 

+

268 if token <= "all": 

+

269 parserState.NewToken = AllKeyword(fromExistingToken=token) 

+

270 else: 

+

271 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

272 parserState.NextState = cls.stateObjectName 

+

273 return 

+

274 elif isinstance(token, ExtendedIdentifier): 274 ↛ 275line 274 didn't jump to line 275, because the condition on line 274 was never true

+

275 parserState.NextState = cls.stateObjectName 

+

276 return 

+

277 elif isinstance(token, SpaceToken): 

+

278 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

279 parserState.NextState = cls.stateWhitespace4 

+

280 return 

+

281 elif isinstance(token, (LinebreakToken, CommentToken)): 281 ↛ 289line 281 didn't jump to line 289, because the condition on line 281 was never false

+

282 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

283 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

284 _ = block(parserState.NewBlock, token) 

+

285 parserState.TokenMarker = None 

+

286 parserState.NextState = cls.stateWhitespace4 

+

287 return 

+

288 

+

289 raise BlockParserException("Expected object name after '.'.", token) 

+

290 

+

291 @classmethod 

+

292 def stateWhitespace4(cls, parserState: TokenToBlockParser): 

+

293 token = parserState.Token 

+

294 if isinstance(token, CharacterToken) and (token == "."): 294 ↛ 295line 294 didn't jump to line 295, because the condition on line 294 was never true

+

295 parserState.NewToken = DelimiterToken(fromExistingToken=token) 

+

296 parserState.NextState = cls.stateDot1 

+

297 return 

+

298 elif isinstance(token, WordToken): 298 ↛ 305line 298 didn't jump to line 305, because the condition on line 298 was never false

+

299 if token <= "all": 299 ↛ 302line 299 didn't jump to line 302, because the condition on line 299 was never false

+

300 parserState.NewToken = AllKeyword(fromExistingToken=token) 

+

301 else: 

+

302 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

303 parserState.NextState = cls.stateObjectName 

+

304 return 

+

305 elif isinstance(token, ExtendedIdentifier): 

+

306 parserState.NextState = cls.stateObjectName 

+

307 return 

+

308 elif isinstance(token, LinebreakToken): 

+

309 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token, multiPart=True) 

+

310 parserState.TokenMarker = None 

+

311 return 

+

312 elif isinstance(token, CommentToken): 

+

313 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

314 _ = CommentBlock(parserState.NewBlock, token) 

+

315 parserState.TokenMarker = None 

+

316 return 

+

317 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

318 return 

+

319 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

320 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

321 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

322 parserState.TokenMarker = None 

+

323 return 

+

324 

+

325 raise BlockParserException("Expected object name (identifier) or keyword ALL.", token) 

+

326 

+

327 @classmethod 

+

328 def stateObjectName(cls, parserState: TokenToBlockParser): 

+

329 token = parserState.Token 

+

330 if isinstance(token, CharacterToken): 

+

331 if token == ",": 

+

332 parserState.NewToken = DelimiterToken(fromExistingToken=token) 

+

333 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken) 

+

334 _ = DelimiterBlock(parserState.NewBlock, parserState.NewToken, endToken=parserState.NewToken) 

+

335 parserState.NextState = DelimiterBlock.stateDelimiter 

+

336 return 

+

337 elif token == ";": 337 ↛ 357line 337 didn't jump to line 357, because the condition on line 337 was never false

+

338 parserState.NewToken = EndToken(fromExistingToken=token) 

+

339 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken) 

+

340 _ = EndBlock(parserState.NewBlock, parserState.NewToken, endToken=parserState.NewToken) 

+

341 parserState.Pop() 

+

342 return 

+

343 elif isinstance(token, SpaceToken): 

+

344 # parserState.NewToken = WhitespaceBlock(parserState.LastBlock, token) 

+

345 parserState.NextState = cls.stateWhitespace5 

+

346 return 

+

347 elif isinstance(token, LinebreakToken): 347 ↛ 350line 347 didn't jump to line 350, because the condition on line 347 was never false

+

348 parserState.NextState = cls.stateWhitespace5 

+

349 return 

+

350 elif isinstance(token, CommentToken): 

+

351 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

352 _ = CommentBlock(parserState.NewBlock, token) 

+

353 parserState.TokenMarker = None 

+

354 parserState.NextState = cls.stateWhitespace5 

+

355 return 

+

356 

+

357 raise BlockParserException("Expected ',', ';' or whitespace.", token) 

+

358 

+

359 @classmethod 

+

360 def stateWhitespace5(cls, parserState: TokenToBlockParser): 

+

361 token = parserState.Token 

+

362 if isinstance(token, CharacterToken): 362 ↛ 376line 362 didn't jump to line 376, because the condition on line 362 was never false

+

363 if token == ",": 363 ↛ 364line 363 didn't jump to line 364, because the condition on line 363 was never true

+

364 parserState.NewToken = DelimiterToken(fromExistingToken=token) 

+

365 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken) 

+

366 _ = DelimiterBlock(parserState.NewBlock, parserState.NewToken, endToken=parserState.NewToken) 

+

367 parserState.NextState = DelimiterBlock.stateDelimiter 

+

368 return 

+

369 elif token == ";": 369 ↛ 393line 369 didn't jump to line 393, because the condition on line 369 was never false

+

370 parserState.NewToken = EndToken(fromExistingToken=token) 

+

371 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

372 _ = EndBlock(parserState.NewBlock, parserState.NewToken, endToken=parserState.NewToken) 

+

373 parserState.Pop() 

+

374 parserState.TokenMarker = None 

+

375 return 

+

376 elif isinstance(token, LinebreakToken): 

+

377 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token, multiPart=True) 

+

378 parserState.TokenMarker = None 

+

379 return 

+

380 elif isinstance(token, CommentToken): 

+

381 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

382 _ = CommentBlock(parserState.NewBlock, token) 

+

383 parserState.TokenMarker = None 

+

384 return 

+

385 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

386 return 

+

387 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

388 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

389 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

390 parserState.TokenMarker = None 

+

391 return 

+

392 

+

393 raise BlockParserException("Expected ',' or ';'.", token) 

+

394 

+

395 

+

396@export 

+

397class DelimiterBlock(SkipableBlock): 

+

398 @classmethod 

+

399 def stateDelimiter(cls, parserState: TokenToBlockParser): 

+

400 token = parserState.Token 

+

401 if isinstance(token, WordToken): 401 ↛ 402line 401 didn't jump to line 402, because the condition on line 401 was never true

+

402 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

403 parserState.NextState = ReferenceNameBlock.stateLibraryName 

+

404 parserState.TokenMarker = parserState.NewToken 

+

405 return 

+

406 elif isinstance(token, ExtendedIdentifier): 406 ↛ 407line 406 didn't jump to line 407, because the condition on line 406 was never true

+

407 parserState.NextState = ReferenceNameBlock.stateLibraryName 

+

408 return 

+

409 elif isinstance(token, LinebreakToken): 409 ↛ 410line 409 didn't jump to line 410, because the condition on line 409 was never true

+

410 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token, multiPart=True) 

+

411 parserState.TokenMarker = None 

+

412 return 

+

413 elif isinstance(token, CommentToken): 413 ↛ 414line 413 didn't jump to line 414, because the condition on line 413 was never true

+

414 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

415 _ = CommentBlock(parserState.NewBlock, token) 

+

416 parserState.TokenMarker = None 

+

417 return 

+

418 elif isinstance(token, SpaceToken): 418 ↛ 424line 418 didn't jump to line 424, because the condition on line 418 was never false

+

419 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

420 parserState.TokenMarker = parserState.NewToken 

+

421 parserState.NextState = cls.stateWhitespace1 

+

422 return 

+

423 

+

424 raise BlockParserException("Expected library name (identifier) or whitespace.", token) 

+

425 

+

426 @classmethod 

+

427 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

428 token = parserState.Token 

+

429 if isinstance(token, WordToken): 429 ↛ 433line 429 didn't jump to line 433, because the condition on line 429 was never false

+

430 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

431 parserState.NextState = ReferenceNameBlock.stateLibraryName 

+

432 return 

+

433 elif isinstance(token, ExtendedIdentifier): 

+

434 parserState.NextState = ReferenceNameBlock.stateLibraryName 

+

435 return 

+

436 elif isinstance(token, LinebreakToken): 

+

437 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token, multiPart=True) 

+

438 parserState.TokenMarker = None 

+

439 return 

+

440 elif isinstance(token, CommentToken): 

+

441 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

442 _ = CommentBlock(parserState.NewBlock, token) 

+

443 parserState.TokenMarker = None 

+

444 return 

+

445 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

446 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

447 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

448 parserState.TokenMarker = None 

+

449 return 

+

450 

+

451 raise BlockParserException("Expected library name (identifier).", token) 

+

452 

+

453 

+

454@export 

+

455class EndBlock(FinalBlock): 

+

456 pass 

+
+ + + diff --git a/coverage/d_7088383a3b8e3502_NetlistModel_py.html b/coverage/d_7088383a3b8e3502_NetlistModel_py.html new file mode 100644 index 000000000..9d532891b --- /dev/null +++ b/coverage/d_7088383a3b8e3502_NetlistModel_py.html @@ -0,0 +1,149 @@ + + + + + Coverage for pyVHDLParser/NetlistModel/NetlistModel.py: 0% + + + + + +
+
+

+ Coverage for pyVHDLParser/NetlistModel/NetlistModel.py: + 0% +

+ +

+ 13 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32 

+

33@export 

+

34class ModelBase: 

+

35 pass 

+

36 

+

37 

+

38@export 

+

39class Netlist(ModelBase): 

+

40 pass 

+

41 

+

42 

+

43@export 

+

44class Wire(ModelBase): 

+

45 pass 

+

46 

+

47 

+

48@export 

+

49class Primitive(ModelBase): 

+

50 pass 

+
+ + + diff --git a/coverage/d_752c0c85f0e99b08_Function_py.html b/coverage/d_752c0c85f0e99b08_Function_py.html new file mode 100644 index 000000000..fc3512e30 --- /dev/null +++ b/coverage/d_752c0c85f0e99b08_Function_py.html @@ -0,0 +1,365 @@ + + + + + Coverage for pyVHDLParser/Groups/Sequential/Function.py: 22% + + + + + +
+
+

+ Coverage for pyVHDLParser/Groups/Sequential/Function.py: + 22% +

+ +

+ 176 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from collections import ChainMap 

+

31from itertools import chain 

+

32 

+

33from pyTooling.Decorators import export 

+

34 

+

35from pyVHDLParser.Token.Keywords import EndToken 

+

36from pyVHDLParser.Blocks import CommentBlock, EndOfDocumentBlock 

+

37from pyVHDLParser.Blocks.Common import LinebreakBlock, IndentationBlock 

+

38from pyVHDLParser.Blocks.List import GenericList, ParameterList 

+

39from pyVHDLParser.Blocks.Object.Variable import VariableDeclarationBlock 

+

40from pyVHDLParser.Blocks.Object.Constant import ConstantDeclarationBlock 

+

41from pyVHDLParser.Blocks.Reference import Use 

+

42from pyVHDLParser.Blocks.Reporting.Report import ReportBlock 

+

43from pyVHDLParser.Blocks.Sequential import Function 

+

44from pyVHDLParser.Groups import BlockToGroupParser, Group, GroupParserException, EndOfDocumentGroup 

+

45from pyVHDLParser.Groups.Comment import WhitespaceGroup, CommentGroup 

+

46from pyVHDLParser.Groups.Concurrent import ReportGroup 

+

47from pyVHDLParser.Groups.List import GenericListGroup, ParameterListGroup 

+

48from pyVHDLParser.Groups.Object import ConstantGroup, VariableGroup 

+

49from pyVHDLParser.Groups.Reference import UseGroup 

+

50 

+

51 

+

52@export 

+

53class FunctionGroup(Group): 

+

54 DECLARATION_SIMPLE_BLOCKS = { 

+

55 Use.StartBlock: UseGroup, 

+

56 ConstantDeclarationBlock: ConstantGroup, 

+

57 VariableDeclarationBlock: VariableGroup 

+

58 } 

+

59 DECLARATION_COMPOUND_BLOCKS = { 

+

60 # Function.NameBlock: FunctionGroup, # FIXME: unresolvable reference 

+

61 # Procedure.NameBlock: ProcedureGroup # FIXME: unresolvable reference 

+

62 } 

+

63 STATEMENT_SIMPLE_BLOCKS = { 

+

64 ReportBlock: ReportGroup 

+

65 } 

+

66 STATEMENT_COMPOUND_BLOCKS = { 

+

67 # If.OpenBlock: IfGroup 

+

68 } 

+

69 

+

70 def __init__(self, previousGroup, startBlock, endBlock=None): 

+

71 super().__init__(previousGroup, startBlock, endBlock) 

+

72 

+

73 self._subGroups = dict(ChainMap( 

+

74 {v: [] for v in chain( 

+

75 self.DECLARATION_SIMPLE_BLOCKS.values(), 

+

76 self.DECLARATION_COMPOUND_BLOCKS.values(), 

+

77 self.STATEMENT_SIMPLE_BLOCKS.values(), 

+

78 self.STATEMENT_COMPOUND_BLOCKS.values() 

+

79 )}, 

+

80 {CommentGroup: [], 

+

81 WhitespaceGroup: [], 

+

82 ReturnTypeGroup: [] 

+

83 } 

+

84 )) 

+

85 

+

86 @classmethod 

+

87 def stateParse(cls, parserState: BlockToGroupParser): 

+

88 currentBlock = parserState.Block 

+

89 

+

90 # consume OpenBlock 

+

91 if isinstance(currentBlock, Function.NameBlock): 

+

92 parserState.NextGroup = cls(parserState.LastGroup, currentBlock) 

+

93 parserState.BlockMarker = currentBlock 

+

94 parserState.NextState = cls.stateParseGenerics 

+

95 return 

+

96 else: 

+

97 raise GroupParserException("Begin of function expected.", currentBlock) 

+

98 

+

99 @classmethod 

+

100 def stateParseGenerics(cls, parserState: BlockToGroupParser): 

+

101 currentBlock = parserState.Block 

+

102 

+

103 if isinstance(currentBlock, GenericList.OpenBlock): 

+

104 parserState.NextState = cls.stateParseParameters 

+

105 parserState.PushState = GenericListGroup.stateParse 

+

106 parserState.NextGroup = GenericListGroup(parserState.LastGroup, currentBlock) 

+

107 parserState.BlockMarker = currentBlock 

+

108 return True 

+

109 elif isinstance(currentBlock, ParameterList.OpenBlock): 

+

110 parserState.NextState = cls.stateParseDeclarations 

+

111 parserState.PushState = ParameterListGroup.stateParse 

+

112 parserState.NextGroup = ParameterListGroup(parserState.LastGroup, currentBlock) 

+

113 parserState.BlockMarker = currentBlock 

+

114 return True 

+

115 elif isinstance(currentBlock, Function.ReturnTypeBlock): 

+

116 if isinstance(currentBlock.EndToken, EndToken): 

+

117 parserState.Pop() 

+

118 else: 

+

119 parserState.NextState = cls.stateParse2 

+

120 return True 

+

121 elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): 

+

122 parserState.PushState = WhitespaceGroup.stateParse 

+

123 parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) 

+

124 parserState.BlockMarker = currentBlock 

+

125 return True 

+

126 elif isinstance(currentBlock, CommentBlock): 

+

127 parserState.PushState = CommentGroup.stateParse 

+

128 parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) 

+

129 parserState.BlockMarker = currentBlock 

+

130 return True 

+

131 

+

132 if isinstance(currentBlock, EndOfDocumentBlock): 

+

133 parserState.NextGroup = EndOfDocumentGroup(currentBlock) 

+

134 return 

+

135 

+

136 raise GroupParserException("End of generic clause not found.", currentBlock) 

+

137 

+

138 @classmethod 

+

139 def stateParseParameters(cls, parserState: BlockToGroupParser): 

+

140 currentBlock = parserState.Block 

+

141 

+

142 if isinstance(currentBlock, GenericList.OpenBlock): 

+

143 parserState.NextState = cls.stateParse2 

+

144 parserState.PushState = ParameterListGroup.stateParse 

+

145 parserState.NextGroup = ParameterListGroup(parserState.LastGroup, currentBlock) 

+

146 parserState.BlockMarker = currentBlock 

+

147 return True 

+

148 elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): 

+

149 parserState.PushState = WhitespaceGroup.stateParse 

+

150 parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) 

+

151 parserState.BlockMarker = currentBlock 

+

152 return True 

+

153 elif isinstance(currentBlock, CommentBlock): 

+

154 parserState.PushState = CommentGroup.stateParse 

+

155 parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) 

+

156 parserState.BlockMarker = currentBlock 

+

157 return True 

+

158 

+

159 if isinstance(currentBlock, EndOfDocumentBlock): 

+

160 parserState.NextGroup = EndOfDocumentGroup(currentBlock) 

+

161 return 

+

162 

+

163 raise GroupParserException("End of parameters not found.", currentBlock) 

+

164 

+

165 # FIXME move to FunctionGroup2 as stateParse 

+

166 @classmethod 

+

167 def stateParse2(cls, parserState: BlockToGroupParser): 

+

168 currentBlock = parserState.Block 

+

169 

+

170 # consume OpenBlock 

+

171 if isinstance(currentBlock, Function.ReturnTypeBlock): 

+

172 parserState.NextState = cls.stateParseDeclarations 

+

173 parserState.PushState = cls.stateParse2 

+

174 parserState.NextGroup = ReturnTypeGroup(parserState.LastGroup, currentBlock) 

+

175 parserState.BlockMarker = currentBlock 

+

176 return 

+

177 else: 

+

178 parserState.Pop() 

+

179 return True 

+

180 

+

181 @classmethod 

+

182 def stateParseDeclarations(cls, parserState: BlockToGroupParser): 

+

183 currentBlock = parserState.Block 

+

184 

+

185 if isinstance(currentBlock, Function.BeginBlock): 

+

186 parserState.NextState = cls.stateParseStatements 

+

187 return 

+

188 elif isinstance(currentBlock, Function.EndBlock): 

+

189 parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, parserState.Block) 

+

190 parserState.Pop() 

+

191 parserState.BlockMarker = None 

+

192 return 

+

193 elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): 

+

194 parserState.PushState = WhitespaceGroup.stateParse 

+

195 parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) 

+

196 parserState.BlockMarker = currentBlock 

+

197 return True 

+

198 elif isinstance(currentBlock, CommentBlock): 

+

199 parserState.PushState = CommentGroup.stateParse 

+

200 parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) 

+

201 parserState.BlockMarker = currentBlock 

+

202 return True 

+

203 else: 

+

204 for block in cls.DECLARATION_SIMPLE_BLOCKS: 

+

205 if isinstance(currentBlock, block): 

+

206 group = cls.DECLARATION_SIMPLE_BLOCKS[block] 

+

207 parserState.PushState = group.stateParse 

+

208 parserState.BlockMarker = currentBlock 

+

209 return True 

+

210 

+

211 for block in cls.DECLARATION_COMPOUND_BLOCKS: 

+

212 if isinstance(currentBlock, block): 

+

213 group = cls.DECLARATION_COMPOUND_BLOCKS[block] 

+

214 parserState.PushState = group.stateParse 

+

215 parserState.BlockMarker = currentBlock 

+

216 return True 

+

217 

+

218 if isinstance(currentBlock, EndOfDocumentBlock): 

+

219 parserState.NextGroup = EndOfDocumentGroup(currentBlock) 

+

220 return 

+

221 

+

222 raise GroupParserException("End of function declarative region not found.", currentBlock) 

+

223 

+

224 @classmethod 

+

225 def stateParseStatements(cls, parserState: BlockToGroupParser): 

+

226 currentBlock = parserState.Block 

+

227 

+

228 if isinstance(currentBlock, Function.EndBlock): 

+

229 # parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, parserState.Block) 

+

230 parserState.Pop() 

+

231 return 

+

232 elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): 

+

233 parserState.PushState = WhitespaceGroup.stateParse 

+

234 parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) 

+

235 parserState.BlockMarker = currentBlock 

+

236 return True 

+

237 elif isinstance(currentBlock, CommentBlock): 

+

238 parserState.PushState = CommentGroup.stateParse 

+

239 parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) 

+

240 parserState.BlockMarker = currentBlock 

+

241 return True 

+

242 else: 

+

243 for block in cls.STATEMENT_SIMPLE_BLOCKS: 

+

244 if isinstance(currentBlock, block): 

+

245 group = cls.STATEMENT_SIMPLE_BLOCKS[block] 

+

246 parserState.PushState = group.stateParse 

+

247 parserState.BlockMarker = currentBlock 

+

248 return True 

+

249 

+

250 for block in cls.STATEMENT_COMPOUND_BLOCKS: 

+

251 if isinstance(currentBlock, block): 

+

252 group = cls.STATEMENT_COMPOUND_BLOCKS[block] 

+

253 parserState.PushState = group.stateParse 

+

254 parserState.BlockMarker = currentBlock 

+

255 return True 

+

256 

+

257 if isinstance(currentBlock, EndOfDocumentBlock): 

+

258 parserState.NextGroup = EndOfDocumentGroup(currentBlock) 

+

259 return 

+

260 

+

261 raise GroupParserException("End of function declaration not found.", currentBlock) 

+

262 

+

263 

+

264@export 

+

265class ReturnTypeGroup(Group): 

+

266 pass 

+
+ + + diff --git a/coverage/d_752c0c85f0e99b08_Procedure_py.html b/coverage/d_752c0c85f0e99b08_Procedure_py.html new file mode 100644 index 000000000..8a68ac1b8 --- /dev/null +++ b/coverage/d_752c0c85f0e99b08_Procedure_py.html @@ -0,0 +1,340 @@ + + + + + Coverage for pyVHDLParser/Groups/Sequential/Procedure.py: 20% + + + + + +
+
+

+ Coverage for pyVHDLParser/Groups/Sequential/Procedure.py: + 20% +

+ +

+ 160 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from collections import ChainMap 

+

31from itertools import chain 

+

32 

+

33from pyTooling.Decorators import export 

+

34 

+

35from pyVHDLParser.Blocks import CommentBlock, EndOfDocumentBlock 

+

36from pyVHDLParser.Blocks.Common import LinebreakBlock, IndentationBlock 

+

37from pyVHDLParser.Blocks.List import GenericList, ParameterList 

+

38from pyVHDLParser.Blocks.Object.Variable import VariableDeclarationBlock 

+

39from pyVHDLParser.Blocks.Object.Constant import ConstantDeclarationBlock 

+

40from pyVHDLParser.Blocks.Reference import Use 

+

41from pyVHDLParser.Blocks.Reporting.Report import ReportBlock 

+

42from pyVHDLParser.Blocks.Sequential import Procedure 

+

43from pyVHDLParser.Groups import BlockToGroupParser, Group, GroupParserException, EndOfDocumentGroup 

+

44from pyVHDLParser.Groups.Comment import WhitespaceGroup, CommentGroup 

+

45from pyVHDLParser.Groups.List import GenericListGroup, ParameterListGroup 

+

46from pyVHDLParser.Groups.Object import ConstantGroup, VariableGroup 

+

47from pyVHDLParser.Groups.Reference import UseGroup 

+

48 

+

49 

+

50@export 

+

51class ProcedureGroup(Group): 

+

52 DECLARATION_SIMPLE_BLOCKS = { 

+

53 Use.StartBlock: UseGroup, 

+

54 ConstantDeclarationBlock: ConstantGroup, 

+

55 VariableDeclarationBlock: VariableGroup 

+

56 } 

+

57 DECLARATION_COMPOUND_BLOCKS = { 

+

58 # Procedure.NameBlock: ProcedureGroup, 

+

59 # Procedure.NameBlock: ProcedureGroup 

+

60 } 

+

61 STATEMENT_SIMPLE_BLOCKS = { 

+

62 # ReportBlock: ReportGroup 

+

63 } 

+

64 STATEMENT_COMPOUND_BLOCKS = { 

+

65 # If.OpenBlock: IfGroup 

+

66 } 

+

67 

+

68 def __init__(self, previousGroup, startBlock, endBlock=None): 

+

69 super().__init__(previousGroup, startBlock, endBlock) 

+

70 

+

71 self._subGroups = dict(ChainMap( 

+

72 {v: [] for v in chain( 

+

73 self.DECLARATION_SIMPLE_BLOCKS.values(), 

+

74 self.DECLARATION_COMPOUND_BLOCKS.values(), 

+

75 self.STATEMENT_SIMPLE_BLOCKS.values(), 

+

76 self.STATEMENT_COMPOUND_BLOCKS.values() 

+

77 )}, 

+

78 {CommentGroup: [], 

+

79 WhitespaceGroup: [] 

+

80 } 

+

81 )) 

+

82 

+

83 @classmethod 

+

84 def stateParse(cls, parserState: BlockToGroupParser): 

+

85 currentBlock = parserState.Block 

+

86 

+

87 # consume OpenBlock 

+

88 if isinstance(currentBlock, Procedure.NameBlock): 

+

89 parserState.NextGroup = cls(parserState.LastGroup, currentBlock) 

+

90 parserState.BlockMarker = currentBlock 

+

91 parserState.NextState = cls.stateParseGenerics 

+

92 return 

+

93 else: 

+

94 raise GroupParserException("Begin of procedure expected.", currentBlock) 

+

95 

+

96 @classmethod 

+

97 def stateParseGenerics(cls, parserState: BlockToGroupParser): 

+

98 currentBlock = parserState.Block 

+

99 

+

100 if isinstance(currentBlock, GenericList.OpenBlock): 

+

101 parserState.NextState = cls.stateParseParameters 

+

102 parserState.PushState = GenericListGroup.stateParse 

+

103 parserState.NextGroup = GenericListGroup(parserState.LastGroup, currentBlock) 

+

104 parserState.BlockMarker = currentBlock 

+

105 return True 

+

106 elif isinstance(currentBlock, ParameterList.OpenBlock): 

+

107 parserState.NextState = cls.stateParseDeclarations 

+

108 parserState.PushState = ParameterListGroup.stateParse 

+

109 parserState.NextGroup = ParameterListGroup(parserState.LastGroup, currentBlock) 

+

110 parserState.BlockMarker = currentBlock 

+

111 return True 

+

112 elif isinstance(currentBlock, Procedure.VoidBlock): 

+

113 parserState.NextState = cls.stateParseDeclarations 

+

114 return 

+

115 elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): 

+

116 parserState.PushState = WhitespaceGroup.stateParse 

+

117 parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) 

+

118 parserState.BlockMarker = currentBlock 

+

119 return True 

+

120 elif isinstance(currentBlock, CommentBlock): 

+

121 parserState.PushState = CommentGroup.stateParse 

+

122 parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) 

+

123 parserState.BlockMarker = currentBlock 

+

124 return True 

+

125 

+

126 if isinstance(currentBlock, EndOfDocumentBlock): 

+

127 parserState.NextGroup = EndOfDocumentGroup(currentBlock) 

+

128 return 

+

129 

+

130 raise GroupParserException("End of generic clause not found.", currentBlock) 

+

131 

+

132 

+

133 @classmethod 

+

134 def stateParseParameters(cls, parserState: BlockToGroupParser): 

+

135 currentBlock = parserState.Block 

+

136 

+

137 if isinstance(currentBlock, GenericList.OpenBlock): 

+

138 parserState.NextState = cls.stateParseDeclarations 

+

139 parserState.PushState = ParameterListGroup.stateParse 

+

140 parserState.NextGroup = ParameterListGroup(parserState.LastGroup, currentBlock) 

+

141 parserState.BlockMarker = currentBlock 

+

142 return True 

+

143 elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): 

+

144 parserState.PushState = WhitespaceGroup.stateParse 

+

145 parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) 

+

146 parserState.BlockMarker = currentBlock 

+

147 return True 

+

148 elif isinstance(currentBlock, CommentBlock): 

+

149 parserState.PushState = CommentGroup.stateParse 

+

150 parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) 

+

151 parserState.BlockMarker = currentBlock 

+

152 return True 

+

153 

+

154 if isinstance(currentBlock, EndOfDocumentBlock): 

+

155 parserState.NextGroup = EndOfDocumentGroup(currentBlock) 

+

156 return 

+

157 

+

158 raise GroupParserException("End of parameters not found.", currentBlock) 

+

159 

+

160 @classmethod 

+

161 def stateParseDeclarations(cls, parserState: BlockToGroupParser): 

+

162 currentBlock = parserState.Block 

+

163 

+

164 if isinstance(currentBlock, Procedure.BeginBlock): 

+

165 parserState.NextState = cls.stateParseStatements 

+

166 return 

+

167 elif isinstance(currentBlock, Procedure.EndBlock): 

+

168 parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, parserState.Block) 

+

169 parserState.Pop() 

+

170 parserState.BlockMarker = None 

+

171 return 

+

172 elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): 

+

173 parserState.PushState = WhitespaceGroup.stateParse 

+

174 parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) 

+

175 parserState.BlockMarker = currentBlock 

+

176 return True 

+

177 elif isinstance(currentBlock, CommentBlock): 

+

178 parserState.PushState = CommentGroup.stateParse 

+

179 parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) 

+

180 parserState.BlockMarker = currentBlock 

+

181 return True 

+

182 else: 

+

183 for block in cls.DECLARATION_SIMPLE_BLOCKS: 

+

184 if isinstance(currentBlock, block): 

+

185 group = cls.DECLARATION_SIMPLE_BLOCKS[block] 

+

186 parserState.PushState = group.stateParse 

+

187 parserState.BlockMarker = currentBlock 

+

188 return True 

+

189 

+

190 for block in cls.DECLARATION_COMPOUND_BLOCKS: 

+

191 if isinstance(currentBlock, block): 

+

192 group = cls.DECLARATION_COMPOUND_BLOCKS[block] 

+

193 parserState.PushState = group.stateParse 

+

194 parserState.BlockMarker = currentBlock 

+

195 return True 

+

196 

+

197 if isinstance(currentBlock, EndOfDocumentBlock): 

+

198 parserState.NextGroup = EndOfDocumentGroup(currentBlock) 

+

199 return 

+

200 

+

201 raise GroupParserException("End of procedure declarative region not found.", currentBlock) 

+

202 

+

203 @classmethod 

+

204 def stateParseStatements(cls, parserState: BlockToGroupParser): 

+

205 currentBlock = parserState.Block 

+

206 

+

207 if isinstance(currentBlock, Procedure.EndBlock): 

+

208 parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, parserState.Block) 

+

209 parserState.Pop() 

+

210 parserState.BlockMarker = None 

+

211 return 

+

212 elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): 

+

213 parserState.PushState = WhitespaceGroup.stateParse 

+

214 parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) 

+

215 parserState.BlockMarker = currentBlock 

+

216 return True 

+

217 elif isinstance(currentBlock, CommentBlock): 

+

218 parserState.PushState = CommentGroup.stateParse 

+

219 parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) 

+

220 parserState.BlockMarker = currentBlock 

+

221 return True 

+

222 else: 

+

223 for block in cls.STATEMENT_SIMPLE_BLOCKS: 

+

224 if isinstance(currentBlock, block): 

+

225 group = cls.STATEMENT_SIMPLE_BLOCKS[block] 

+

226 parserState.PushState = group.stateParse 

+

227 parserState.BlockMarker = currentBlock 

+

228 return True 

+

229 

+

230 for block in cls.STATEMENT_COMPOUND_BLOCKS: 

+

231 if isinstance(currentBlock, block): 

+

232 group = cls.STATEMENT_COMPOUND_BLOCKS[block] 

+

233 parserState.PushState = group.stateParse 

+

234 parserState.BlockMarker = currentBlock 

+

235 return True 

+

236 

+

237 if isinstance(currentBlock, EndOfDocumentBlock): 

+

238 parserState.NextGroup = EndOfDocumentGroup(currentBlock) 

+

239 return 

+

240 

+

241 raise GroupParserException("End of procedure declaration not found.", currentBlock) 

+
+ + + diff --git a/coverage/d_752c0c85f0e99b08_Process_py.html b/coverage/d_752c0c85f0e99b08_Process_py.html new file mode 100644 index 000000000..1fe3c1ad7 --- /dev/null +++ b/coverage/d_752c0c85f0e99b08_Process_py.html @@ -0,0 +1,421 @@ + + + + + Coverage for pyVHDLParser/Groups/Sequential/Process.py: 48% + + + + + +
+
+

+ Coverage for pyVHDLParser/Groups/Sequential/Process.py: + 48% +

+ +

+ 193 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from collections import ChainMap 

+

31from itertools import chain 

+

32 

+

33from pyTooling.Decorators import export 

+

34 

+

35from pyVHDLParser.Blocks import CommentBlock, EndOfDocumentBlock 

+

36from pyVHDLParser.Blocks.Common import LinebreakBlock, IndentationBlock 

+

37from pyVHDLParser.Blocks.List import SensitivityList, GenericList, ParameterList 

+

38from pyVHDLParser.Blocks.Object.Variable import VariableDeclarationBlock 

+

39from pyVHDLParser.Blocks.Object.Constant import ConstantDeclarationBlock 

+

40from pyVHDLParser.Blocks.Reference import Use 

+

41from pyVHDLParser.Blocks.Reporting.Report import ReportBlock 

+

42from pyVHDLParser.Blocks.Sequential import Process 

+

43from pyVHDLParser.Groups import BlockToGroupParser, Group, GroupParserException, EndOfDocumentGroup 

+

44from pyVHDLParser.Groups.Comment import WhitespaceGroup, CommentGroup 

+

45from pyVHDLParser.Groups.List import GenericListGroup, ParameterListGroup, SensitivityListGroup 

+

46from pyVHDLParser.Groups.Object import ConstantGroup, VariableGroup 

+

47from pyVHDLParser.Groups.Reference import UseGroup 

+

48 

+

49 

+

50@export 

+

51class ProcessGroup(Group): 

+

52 DECLARATION_SIMPLE_BLOCKS = { 

+

53 Use.StartBlock: UseGroup, 

+

54 ConstantDeclarationBlock: ConstantGroup, 

+

55 VariableDeclarationBlock: VariableGroup 

+

56 } 

+

57 DECLARATION_COMPOUND_BLOCKS = { 

+

58 # Process.NameBlock: ProcessGroup, 

+

59 # Procedure.NameBlock: ProcedureGroup 

+

60 } 

+

61 STATEMENT_SIMPLE_BLOCKS = { 

+

62 # ReportBlock: ReportGroup 

+

63 } 

+

64 STATEMENT_COMPOUND_BLOCKS = { 

+

65 # If.OpenBlock: IfGroup 

+

66 } 

+

67 

+

68 def __init__(self, previousGroup, startBlock, endBlock=None): 

+

69 super().__init__(previousGroup, startBlock, endBlock) 

+

70 

+

71 self._subGroups = dict(ChainMap( 

+

72 {v: [] for v in chain( 

+

73 self.DECLARATION_SIMPLE_BLOCKS.values(), 

+

74 self.DECLARATION_COMPOUND_BLOCKS.values(), 

+

75 self.STATEMENT_SIMPLE_BLOCKS.values(), 

+

76 self.STATEMENT_COMPOUND_BLOCKS.values() 

+

77 )}, 

+

78 {CommentGroup: [], 

+

79 WhitespaceGroup: [] 

+

80 } 

+

81 )) 

+

82 

+

83 @classmethod 

+

84 def stateParse(cls, parserState: BlockToGroupParser): 

+

85 currentBlock = parserState.Block 

+

86 

+

87 # consume OpenBlock 

+

88 if isinstance(currentBlock, Process.OpenBlock): 

+

89 parserState.NextGroup = cls(parserState.LastGroup, currentBlock) 

+

90 parserState.BlockMarker = currentBlock 

+

91 parserState.NextState = cls.stateParseSensitivityList 

+

92 return 

+

93 else: 

+

94 raise GroupParserException("Begin of process expected.", currentBlock) 

+

95 

+

96 @classmethod 

+

97 def stateParseSensitivityList(cls, parserState: BlockToGroupParser): 

+

98 currentBlock = parserState.Block 

+

99 

+

100 if isinstance(currentBlock, SensitivityList.OpenBlock): 

+

101 parserState.NextState = cls.stateParseDeclarations 

+

102 parserState.PushState = SensitivityListGroup.stateParse 

+

103 parserState.NextGroup = SensitivityListGroup(parserState.LastGroup, currentBlock) 

+

104 parserState.BlockMarker = currentBlock 

+

105 return True 

+

106 elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): 

+

107 parserState.PushState = WhitespaceGroup.stateParse 

+

108 parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) 

+

109 parserState.BlockMarker = currentBlock 

+

110 return True 

+

111 elif isinstance(currentBlock, CommentBlock): 

+

112 parserState.PushState = CommentGroup.stateParse 

+

113 parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) 

+

114 parserState.BlockMarker = currentBlock 

+

115 return True 

+

116 

+

117 if isinstance(currentBlock, EndOfDocumentBlock): 

+

118 parserState.NextGroup = EndOfDocumentGroup(currentBlock) 

+

119 return 

+

120 

+

121 raise GroupParserException("End of process sensitivity list not found.", currentBlock) 

+

122 

+

123 @classmethod 

+

124 def stateParseDeclarations(cls, parserState: BlockToGroupParser): 

+

125 currentBlock = parserState.Block 

+

126 

+

127 if isinstance(currentBlock, Process.BeginBlock): 

+

128 parserState.NextState = cls.stateParseStatements 

+

129 return 

+

130 elif isinstance(currentBlock, Process.EndBlock): 

+

131 parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, parserState.Block) 

+

132 parserState.Pop() 

+

133 parserState.BlockMarker = None 

+

134 return 

+

135 elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): 

+

136 parserState.PushState = WhitespaceGroup.stateParse 

+

137 parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) 

+

138 parserState.BlockMarker = currentBlock 

+

139 return True 

+

140 elif isinstance(currentBlock, CommentBlock): 

+

141 parserState.PushState = CommentGroup.stateParse 

+

142 parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) 

+

143 parserState.BlockMarker = currentBlock 

+

144 return True 

+

145 else: 

+

146 for block in cls.DECLARATION_SIMPLE_BLOCKS: 

+

147 if isinstance(currentBlock, block): 

+

148 group = cls.DECLARATION_SIMPLE_BLOCKS[block] 

+

149 parserState.PushState = group.stateParse 

+

150 parserState.BlockMarker = currentBlock 

+

151 return True 

+

152 

+

153 for block in cls.DECLARATION_COMPOUND_BLOCKS: 

+

154 if isinstance(currentBlock, block): 

+

155 group = cls.DECLARATION_COMPOUND_BLOCKS[block] 

+

156 parserState.PushState = group.stateParse 

+

157 parserState.BlockMarker = currentBlock 

+

158 return True 

+

159 

+

160 if isinstance(currentBlock, EndOfDocumentBlock): 

+

161 parserState.NextGroup = EndOfDocumentGroup(currentBlock) 

+

162 return 

+

163 

+

164 raise GroupParserException("End of process declarative region not found.", currentBlock) 

+

165 

+

166 @classmethod 

+

167 def stateParseStatements(cls, parserState: BlockToGroupParser): 

+

168 currentBlock = parserState.Block 

+

169 

+

170 if isinstance(currentBlock, Process.EndBlock): 

+

171 parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, parserState.Block) 

+

172 parserState.Pop() 

+

173 parserState.BlockMarker = None 

+

174 return 

+

175 elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)): 

+

176 parserState.PushState = WhitespaceGroup.stateParse 

+

177 parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock) 

+

178 parserState.BlockMarker = currentBlock 

+

179 return True 

+

180 elif isinstance(currentBlock, CommentBlock): 

+

181 parserState.PushState = CommentGroup.stateParse 

+

182 parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock) 

+

183 parserState.BlockMarker = currentBlock 

+

184 return True 

+

185 else: 

+

186 for block in cls.STATEMENT_SIMPLE_BLOCKS: 

+

187 if isinstance(currentBlock, block): 

+

188 group = cls.STATEMENT_SIMPLE_BLOCKS[block] 

+

189 parserState.PushState = group.stateParse 

+

190 parserState.BlockMarker = currentBlock 

+

191 return True 

+

192 

+

193 for block in cls.STATEMENT_COMPOUND_BLOCKS: 

+

194 if isinstance(currentBlock, block): 

+

195 group = cls.STATEMENT_COMPOUND_BLOCKS[block] 

+

196 parserState.PushState = group.stateParse 

+

197 parserState.BlockMarker = currentBlock 

+

198 return True 

+

199 

+

200 if isinstance(currentBlock, EndOfDocumentBlock): 

+

201 parserState.NextGroup = EndOfDocumentGroup(currentBlock) 

+

202 return 

+

203 

+

204 raise GroupParserException("End of process declaration not found.", currentBlock) 

+

205 

+

206 

+

207 

+

208@export 

+

209class IfGroup(Group): 

+

210 @classmethod 

+

211 def stateParse(cls, parserState: BlockToGroupParser): 

+

212 block = parserState.Block 

+

213 

+

214 raise NotImplementedError("State=Parse: {0!r}".format(block)) 

+

215 

+

216 

+

217@export 

+

218class IfBranchGroup(Group): 

+

219 @classmethod 

+

220 def stateParse(cls, parserState: BlockToGroupParser): 

+

221 block = parserState.Block 

+

222 

+

223 raise NotImplementedError("State=Parse: {0!r}".format(block)) 

+

224 

+

225 

+

226@export 

+

227class ElsIfBranchGroup(Group): 

+

228 @classmethod 

+

229 def stateParse(cls, parserState: BlockToGroupParser): 

+

230 block = parserState.Block 

+

231 

+

232 raise NotImplementedError("State=Parse: {0!r}".format(block)) 

+

233 

+

234 

+

235@export 

+

236class ElseBranchGroup(Group): 

+

237 @classmethod 

+

238 def stateParse(cls, parserState: BlockToGroupParser): 

+

239 block = parserState.Block 

+

240 

+

241 raise NotImplementedError("State=Parse: {0!r}".format(block)) 

+

242 

+

243 

+

244@export 

+

245class CaseGroup(Group): 

+

246 @classmethod 

+

247 def stateParse(cls, parserState: BlockToGroupParser): 

+

248 block = parserState.Block 

+

249 

+

250 raise NotImplementedError("State=Parse: {0!r}".format(block)) 

+

251 

+

252 

+

253@export 

+

254class ChoiceGroup(Group): 

+

255 @classmethod 

+

256 def stateParse(cls, parserState: BlockToGroupParser): 

+

257 block = parserState.Block 

+

258 

+

259 raise NotImplementedError("State=Parse: {0!r}".format(block)) 

+

260 

+

261 

+

262@export 

+

263class ForLoopGroup(Group): 

+

264 @classmethod 

+

265 def stateParse(cls, parserState: BlockToGroupParser): 

+

266 block = parserState.Block 

+

267 

+

268 raise NotImplementedError("State=Parse: {0!r}".format(block)) 

+

269 

+

270 

+

271@export 

+

272class WhileLoopGroup(Group): 

+

273 @classmethod 

+

274 def stateParse(cls, parserState: BlockToGroupParser): 

+

275 block = parserState.Block 

+

276 

+

277 raise NotImplementedError("State=Parse: {0!r}".format(block)) 

+

278 

+

279 

+

280@export 

+

281class NextGroup(Group): 

+

282 @classmethod 

+

283 def stateParse(cls, parserState: BlockToGroupParser): 

+

284 block = parserState.Block 

+

285 

+

286 raise NotImplementedError("State=Parse: {0!r}".format(block)) 

+

287 

+

288 

+

289@export 

+

290class ExitGroup(Group): 

+

291 @classmethod 

+

292 def stateParse(cls, parserState: BlockToGroupParser): 

+

293 block = parserState.Block 

+

294 

+

295 raise NotImplementedError("State=Parse: {0!r}".format(block)) 

+

296 

+

297 

+

298@export 

+

299class ReturnGroup(Group): 

+

300 @classmethod 

+

301 def stateParse(cls, parserState: BlockToGroupParser): 

+

302 block = parserState.Block 

+

303 

+

304 raise NotImplementedError("State=Parse: {0!r}".format(block)) 

+

305 

+

306 

+

307@export 

+

308class VariableAssignmentGroup(Group): 

+

309 @classmethod 

+

310 def stateParse(cls, parserState: BlockToGroupParser): 

+

311 block = parserState.Block 

+

312 

+

313 raise NotImplementedError("State=Parse: {0!r}".format(block)) 

+

314 

+

315 

+

316@export 

+

317class SignalAssignmentGroup(Group): 

+

318 @classmethod 

+

319 def stateParse(cls, parserState: BlockToGroupParser): 

+

320 block = parserState.Block 

+

321 

+

322 raise NotImplementedError("State=Parse: {0!r}".format(block)) 

+
+ + + diff --git a/coverage/d_763895e6faf625b1_ResolutionIndication_py.html b/coverage/d_763895e6faf625b1_ResolutionIndication_py.html new file mode 100644 index 000000000..ad819621e --- /dev/null +++ b/coverage/d_763895e6faf625b1_ResolutionIndication_py.html @@ -0,0 +1,148 @@ + + + + + Coverage for pyVHDLParser/Blocks/Type/ResolutionIndication.py: 89% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/Type/ResolutionIndication.py: + 89% +

+ +

+ 13 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Blocks import Block 

+

33 

+

34 

+

35@export 

+

36class SimpleResolutionIndicationBlock(Block): 

+

37 def stateResolutionFunction(self): 

+

38 pass 

+

39 

+

40 

+

41@export 

+

42class ArrayResolutionIndicationBlock(Block): 

+

43 pass 

+

44 

+

45 

+

46@export 

+

47class RecordResolutionIndicationBlock(Block): 

+

48 def stateOpeningParentesis(self): 

+

49 pass 

+
+ + + diff --git a/coverage/d_763895e6faf625b1_SubtypeIndication_py.html b/coverage/d_763895e6faf625b1_SubtypeIndication_py.html new file mode 100644 index 000000000..83723dcdc --- /dev/null +++ b/coverage/d_763895e6faf625b1_SubtypeIndication_py.html @@ -0,0 +1,146 @@ + + + + + Coverage for pyVHDLParser/Blocks/Type/SubtypeIndication.py: 0% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/Type/SubtypeIndication.py: + 0% +

+ +

+ 11 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Blocks import Block 

+

33 

+

34 

+

35@export 

+

36class SubtypeIndicationBlock(Block): 

+

37 pass 

+

38 

+

39 

+

40@export 

+

41class ArrayConstrainedSubtypeIndicationBlock(Block): 

+

42 pass 

+

43 

+

44 

+

45@export 

+

46class RecordConstrainedSubtypeIndicationBlock(Block): 

+

47 pass 

+
+ + + diff --git a/coverage/d_763895e6faf625b1_Subtype_py.html b/coverage/d_763895e6faf625b1_Subtype_py.html new file mode 100644 index 000000000..d5742129c --- /dev/null +++ b/coverage/d_763895e6faf625b1_Subtype_py.html @@ -0,0 +1,551 @@ + + + + + Coverage for pyVHDLParser/Blocks/Type/Subtype.py: 0% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/Type/Subtype.py: + 0% +

+ +

+ 391 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Token import CharacterToken, LinebreakToken, SpaceToken, WordToken 

+

33from pyVHDLParser.Token.Keywords import BoundaryToken, IdentifierToken, VariableAssignmentKeyword, EndToken 

+

34from pyVHDLParser.Blocks import Block, TokenToBlockParser 

+

35from pyVHDLParser.Blocks.Common import LinebreakBlock, WhitespaceBlock 

+

36from pyVHDLParser.Blocks.Comment import SingleLineCommentBlock, MultiLineCommentBlock 

+

37 

+

38 

+

39@export 

+

40class SubtypeBlock(Block): 

+

41 @classmethod 

+

42 def stateSubtypeKeyword(cls, parserState: TokenToBlockParser): 

+

43 token = parserState.Token 

+

44 errorMessage = "Expected whitespace after keyword SUBTYPE." 

+

45 if isinstance(token, CharacterToken): 

+

46 if token == "\n": 

+

47 parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

48 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

49 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

50 parserState.TokenMarker = None 

+

51 parserState.NextState = cls.stateWhitespace1 

+

52 parserState.PushState = LinebreakBlock.stateLinebreak 

+

53 return 

+

54 elif token == "-": 

+

55 parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

56 parserState.TokenMarker = None 

+

57 parserState.NextState = cls.stateWhitespace1 

+

58 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

59 parserState.TokenMarker = token 

+

60 return 

+

61 elif token == "/": 

+

62 parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

63 parserState.TokenMarker = None 

+

64 parserState.NextState = cls.stateWhitespace1 

+

65 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

66 parserState.TokenMarker = token 

+

67 return 

+

68 elif isinstance(token, SpaceToken): 

+

69 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

70 parserState.NextState = cls.stateWhitespace1 

+

71 return 

+

72 

+

73 raise TokenParserException(errorMessage, token) 

+

74 

+

75 @classmethod 

+

76 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

77 token = parserState.Token 

+

78 errorMessage = "Expected subtype name (identifier)." 

+

79 if isinstance(token, CharacterToken): 

+

80 if token == "\n": 

+

81 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

82 if not isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

83 parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) 

+

84 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

85 else: 

+

86 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

87 parserState.TokenMarker = None 

+

88 parserState.PushState = LinebreakBlock.stateLinebreak 

+

89 return 

+

90 elif token == "-": 

+

91 parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

92 parserState.TokenMarker = None 

+

93 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

94 parserState.TokenMarker = token 

+

95 return 

+

96 elif token == "/": 

+

97 parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

98 parserState.TokenMarker = None 

+

99 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

100 parserState.TokenMarker = token 

+

101 return 

+

102 elif isinstance(token, WordToken): 

+

103 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

104 parserState.NextState = cls.stateSubtypeName 

+

105 return 

+

106 elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

107 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

108 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

109 parserState.TokenMarker = None 

+

110 return 

+

111 

+

112 raise TokenParserException(errorMessage, token) 

+

113 

+

114 @classmethod 

+

115 def stateSubtypeName(cls, parserState: TokenToBlockParser): 

+

116 token = parserState.Token 

+

117 errorMessage = "Expected ';' after library name." 

+

118 if isinstance(token, CharacterToken): 

+

119 if token == ":": 

+

120 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

121 parserState.NextState = cls.stateColon1 

+

122 return 

+

123 elif token == "\n": 

+

124 parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

125 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

126 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

127 parserState.TokenMarker = None 

+

128 parserState.NextState = cls.stateWhitespace2 

+

129 parserState.PushState = LinebreakBlock.stateLinebreak 

+

130 return 

+

131 elif token == "-": 

+

132 parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

133 parserState.TokenMarker = None 

+

134 parserState.NextState = cls.stateWhitespace2 

+

135 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

136 parserState.TokenMarker = token 

+

137 return 

+

138 elif token == "/": 

+

139 parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

140 parserState.TokenMarker = None 

+

141 parserState.NextState = cls.stateWhitespace2 

+

142 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

143 parserState.TokenMarker = token 

+

144 return 

+

145 elif isinstance(token, SpaceToken): 

+

146 parserState.NextState = cls.stateWhitespace2 

+

147 return 

+

148 

+

149 raise TokenParserException(errorMessage, token) 

+

150 

+

151 @classmethod 

+

152 def stateWhitespace2(cls, parserState: TokenToBlockParser): 

+

153 token = parserState.Token 

+

154 errorMessage = "Expected subtype name (identifier)." 

+

155 if isinstance(token, CharacterToken): 

+

156 if token == ":": 

+

157 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

158 parserState.NextState = cls.stateColon1 

+

159 return 

+

160 if token == "\n": 

+

161 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

162 if not isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

163 parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) 

+

164 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

165 else: 

+

166 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

167 parserState.TokenMarker = None 

+

168 parserState.PushState = LinebreakBlock.stateLinebreak 

+

169 return 

+

170 elif token == "-": 

+

171 parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

172 parserState.TokenMarker = None 

+

173 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

174 parserState.TokenMarker = token 

+

175 return 

+

176 elif token == "/": 

+

177 parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

178 parserState.TokenMarker = None 

+

179 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

180 parserState.TokenMarker = token 

+

181 return 

+

182 elif isinstance(token, WordToken): 

+

183 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

184 parserState.NextState = cls.stateColon1() 

+

185 return 

+

186 elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

187 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

188 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

189 parserState.TokenMarker = None 

+

190 return 

+

191 

+

192 raise TokenParserException(errorMessage, token) 

+

193 

+

194 @classmethod 

+

195 def stateColon1(cls, parserState: TokenToBlockParser): 

+

196 token = parserState.Token 

+

197 errorMessage = "Expected typemark or whitespace after ':'." 

+

198 if isinstance(token, CharacterToken): 

+

199 if token == "\n": 

+

200 parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

201 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

202 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

203 parserState.TokenMarker = None 

+

204 parserState.NextState = cls.stateWhitespace3 

+

205 parserState.PushState = LinebreakBlock.stateLinebreak 

+

206 return 

+

207 elif token == "-": 

+

208 parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

209 parserState.TokenMarker = None 

+

210 parserState.NextState = cls.stateWhitespace3 

+

211 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

212 parserState.TokenMarker = token 

+

213 return 

+

214 elif token == "/": 

+

215 parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

216 parserState.TokenMarker = None 

+

217 parserState.NextState = cls.stateWhitespace3 

+

218 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

219 parserState.TokenMarker = token 

+

220 return 

+

221 elif isinstance(token, SpaceToken): 

+

222 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

223 parserState.NextState = cls.stateWhitespace3 

+

224 return 

+

225 elif isinstance(token, WordToken): 

+

226 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

227 parserState.NextState = cls.stateTypeMarkName 

+

228 return 

+

229 

+

230 raise TokenParserException(errorMessage, token) 

+

231 

+

232 @classmethod 

+

233 def stateWhitespace3(cls, parserState: TokenToBlockParser): 

+

234 token = parserState.Token 

+

235 errorMessage = "Expected subtype name (identifier)." 

+

236 if isinstance(token, CharacterToken): 

+

237 if token == "\n": 

+

238 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

239 if not isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

240 parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) 

+

241 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

242 else: 

+

243 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

244 parserState.TokenMarker = None 

+

245 parserState.PushState = LinebreakBlock.stateLinebreak 

+

246 return 

+

247 elif token == "-": 

+

248 parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

249 parserState.TokenMarker = None 

+

250 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

251 parserState.TokenMarker = token 

+

252 return 

+

253 elif token == "/": 

+

254 parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

255 parserState.TokenMarker = None 

+

256 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

257 parserState.TokenMarker = token 

+

258 return 

+

259 elif isinstance(token, WordToken): 

+

260 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

261 parserState.NextState = cls.stateTypeMarkName 

+

262 return 

+

263 elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

264 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

265 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

266 parserState.TokenMarker = None 

+

267 return 

+

268 

+

269 raise TokenParserException(errorMessage, token) 

+

270 

+

271 @classmethod 

+

272 def stateTypeMarkName(cls, parserState: TokenToBlockParser): 

+

273 token = parserState.Token 

+

274 errorMessage = "Expected ':=' or whitespace after type mark." 

+

275 if isinstance(token, CharacterToken): 

+

276 if token == ":": 

+

277 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

278 parserState.NextState = cls.statePossibleVariableAssignment 

+

279 return 

+

280 elif token == "\n": 

+

281 parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

282 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

283 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

284 parserState.TokenMarker = None 

+

285 parserState.NextState = cls.stateWhitespace4 

+

286 parserState.PushState = LinebreakBlock.stateLinebreak 

+

287 return 

+

288 elif token == "-": 

+

289 parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

290 parserState.TokenMarker = None 

+

291 parserState.NextState = cls.stateWhitespace4 

+

292 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

293 parserState.TokenMarker = token 

+

294 return 

+

295 elif token == "/": 

+

296 parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

297 parserState.TokenMarker = None 

+

298 parserState.NextState = cls.stateWhitespace4 

+

299 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

300 parserState.TokenMarker = token 

+

301 return 

+

302 elif isinstance(token, SpaceToken): 

+

303 parserState.NextState = cls.stateWhitespace4 

+

304 return 

+

305 

+

306 raise TokenParserException(errorMessage, token) 

+

307 

+

308 @classmethod 

+

309 def stateWhitespace4(cls, parserState: TokenToBlockParser): 

+

310 token = parserState.Token 

+

311 errorMessage = "Expected ':=' after type mark." 

+

312 if isinstance(token, CharacterToken): 

+

313 if token == ":": 

+

314 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

315 parserState.NextState = cls.statePossibleVariableAssignment 

+

316 return 

+

317 elif token == "\n": 

+

318 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

319 if not isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

320 parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) 

+

321 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

322 else: 

+

323 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

324 parserState.TokenMarker = None 

+

325 parserState.PushState = LinebreakBlock.stateLinebreak 

+

326 return 

+

327 elif token == "-": 

+

328 parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

329 parserState.TokenMarker = None 

+

330 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

331 parserState.TokenMarker = token 

+

332 return 

+

333 elif token == "/": 

+

334 parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

335 parserState.TokenMarker = None 

+

336 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

337 parserState.TokenMarker = token 

+

338 return 

+

339 elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

340 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

341 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

342 parserState.TokenMarker = None 

+

343 return 

+

344 

+

345 raise TokenParserException(errorMessage, token) 

+

346 

+

347 @classmethod 

+

348 def statePossibleVariableAssignment(cls, parserState: TokenToBlockParser): 

+

349 token = parserState.Token 

+

350 if isinstance(token, CharacterToken) and (token == "="): 

+

351 parserState.NewToken = VariableAssignmentKeyword(parserState.TokenMarker) 

+

352 parserState.TokenMarker = parserState.NewToken 

+

353 parserState.NextState = cls.stateVariableAssignment 

+

354 return 

+

355 

+

356 raise NotImplementedError("State=PossibleCommentStart: {0!r}".format(token)) 

+

357 

+

358 @classmethod 

+

359 def stateVariableAssignment(cls, parserState: TokenToBlockParser): 

+

360 token = parserState.Token 

+

361 errorMessage = "Expected ':=' or whitespace after type mark." 

+

362 if isinstance(token, CharacterToken): 

+

363 if token == "\n": 

+

364 parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

365 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

366 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

367 parserState.TokenMarker = None 

+

368 parserState.NextState = cls.stateWhitespace5 

+

369 parserState.PushState = LinebreakBlock.stateLinebreak 

+

370 return 

+

371 elif token == "-": 

+

372 parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

373 parserState.TokenMarker = None 

+

374 parserState.NextState = cls.stateWhitespace5 

+

375 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

376 parserState.TokenMarker = token 

+

377 return 

+

378 elif token == "/": 

+

379 parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

380 parserState.TokenMarker = None 

+

381 parserState.NextState = cls.stateWhitespace5 

+

382 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

383 parserState.TokenMarker = token 

+

384 return 

+

385 elif isinstance(token, SpaceToken): 

+

386 parserState.NextState = cls.stateWhitespace5 

+

387 return 

+

388 

+

389 raise TokenParserException(errorMessage, token) 

+

390 

+

391 @classmethod 

+

392 def stateWhitespace5(cls, parserState: TokenToBlockParser): 

+

393 token = parserState.Token 

+

394 errorMessage = "Expected expression after ':='." 

+

395 if isinstance(token, CharacterToken): 

+

396 if token == "\n": 

+

397 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

398 if not isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

399 parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) 

+

400 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

401 else: 

+

402 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

403 parserState.TokenMarker = None 

+

404 parserState.PushState = LinebreakBlock.stateLinebreak 

+

405 return 

+

406 elif token == "-": 

+

407 parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

408 parserState.TokenMarker = None 

+

409 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

410 parserState.TokenMarker = token 

+

411 return 

+

412 elif token == "/": 

+

413 parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

414 parserState.TokenMarker = None 

+

415 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

416 parserState.TokenMarker = token 

+

417 return 

+

418 elif isinstance(token, WordToken): 

+

419 parserState.NextState = cls.stateExpressionEnd 

+

420 return 

+

421 elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

422 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

423 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

424 parserState.TokenMarker = None 

+

425 return 

+

426 

+

427 raise TokenParserException(errorMessage, token) 

+

428 

+

429 @classmethod 

+

430 def stateExpressionEnd(cls, parserState: TokenToBlockParser): 

+

431 token = parserState.Token 

+

432 errorMessage = "Expected ';'." 

+

433 if isinstance(token, CharacterToken): 

+

434 if token == ";": 

+

435 parserState.NewToken = EndToken(fromExistingToken=token) 

+

436 parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

437 parserState.Pop() 

+

438 return 

+

439 elif token == "-": 

+

440 parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

441 parserState.TokenMarker = None 

+

442 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

443 parserState.TokenMarker = token 

+

444 return 

+

445 elif token == "/": 

+

446 parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

447 parserState.TokenMarker = None 

+

448 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

449 parserState.TokenMarker = token 

+

450 return 

+

451 

+

452 raise TokenParserException(errorMessage, token) 

+
+ + + diff --git a/coverage/d_763895e6faf625b1_Type_py.html b/coverage/d_763895e6faf625b1_Type_py.html new file mode 100644 index 000000000..4af365414 --- /dev/null +++ b/coverage/d_763895e6faf625b1_Type_py.html @@ -0,0 +1,551 @@ + + + + + Coverage for pyVHDLParser/Blocks/Type/Type.py: 0% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/Type/Type.py: + 0% +

+ +

+ 391 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Token import CharacterToken, LinebreakToken, SpaceToken, WordToken 

+

33from pyVHDLParser.Token.Keywords import BoundaryToken, IdentifierToken, VariableAssignmentKeyword, EndToken 

+

34from pyVHDLParser.Blocks import Block, TokenToBlockParser 

+

35from pyVHDLParser.Blocks.Common import LinebreakBlock, WhitespaceBlock 

+

36from pyVHDLParser.Blocks.Comment import SingleLineCommentBlock, MultiLineCommentBlock 

+

37 

+

38 

+

39@export 

+

40class TypeBlock(Block): 

+

41 @classmethod 

+

42 def stateTypeKeyword(cls, parserState: TokenToBlockParser): 

+

43 token = parserState.Token 

+

44 errorMessage = "Expected whitespace after keyword TYPE." 

+

45 if isinstance(token, CharacterToken): 

+

46 if token == "\n": 

+

47 parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

48 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

49 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

50 parserState.TokenMarker = None 

+

51 parserState.NextState = cls.stateWhitespace1 

+

52 parserState.PushState = LinebreakBlock.stateLinebreak 

+

53 return 

+

54 elif token == "-": 

+

55 parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

56 parserState.TokenMarker = None 

+

57 parserState.NextState = cls.stateWhitespace1 

+

58 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

59 parserState.TokenMarker = token 

+

60 return 

+

61 elif token == "/": 

+

62 parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

63 parserState.TokenMarker = None 

+

64 parserState.NextState = cls.stateWhitespace1 

+

65 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

66 parserState.TokenMarker = token 

+

67 return 

+

68 elif isinstance(token, SpaceToken): 

+

69 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

70 parserState.NextState = cls.stateWhitespace1 

+

71 return 

+

72 

+

73 raise TokenParserException(errorMessage, token) 

+

74 

+

75 @classmethod 

+

76 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

77 token = parserState.Token 

+

78 errorMessage = "Expected type name (identifier)." 

+

79 if isinstance(token, CharacterToken): 

+

80 if token == "\n": 

+

81 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

82 if not isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

83 parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) 

+

84 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

85 else: 

+

86 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

87 parserState.TokenMarker = None 

+

88 parserState.PushState = LinebreakBlock.stateLinebreak 

+

89 return 

+

90 elif token == "-": 

+

91 parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

92 parserState.TokenMarker = None 

+

93 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

94 parserState.TokenMarker = token 

+

95 return 

+

96 elif token == "/": 

+

97 parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

98 parserState.TokenMarker = None 

+

99 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

100 parserState.TokenMarker = token 

+

101 return 

+

102 elif isinstance(token, WordToken): 

+

103 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

104 parserState.NextState = cls.stateTypeName 

+

105 return 

+

106 elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

107 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

108 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

109 parserState.TokenMarker = None 

+

110 return 

+

111 

+

112 raise TokenParserException(errorMessage, token) 

+

113 

+

114 @classmethod 

+

115 def stateTypeName(cls, parserState: TokenToBlockParser): 

+

116 token = parserState.Token 

+

117 errorMessage = "Expected ';' after library name." 

+

118 if isinstance(token, CharacterToken): 

+

119 if token == ":": 

+

120 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

121 parserState.NextState = cls.stateColon1 

+

122 return 

+

123 elif token == "\n": 

+

124 parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

125 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

126 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

127 parserState.TokenMarker = None 

+

128 parserState.NextState = cls.stateWhitespace2 

+

129 parserState.PushState = LinebreakBlock.stateLinebreak 

+

130 return 

+

131 elif token == "-": 

+

132 parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

133 parserState.TokenMarker = None 

+

134 parserState.NextState = cls.stateWhitespace2 

+

135 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

136 parserState.TokenMarker = token 

+

137 return 

+

138 elif token == "/": 

+

139 parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

140 parserState.TokenMarker = None 

+

141 parserState.NextState = cls.stateWhitespace2 

+

142 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

143 parserState.TokenMarker = token 

+

144 return 

+

145 elif isinstance(token, SpaceToken): 

+

146 parserState.NextState = cls.stateWhitespace2 

+

147 return 

+

148 

+

149 raise TokenParserException(errorMessage, token) 

+

150 

+

151 @classmethod 

+

152 def stateWhitespace2(cls, parserState: TokenToBlockParser): 

+

153 token = parserState.Token 

+

154 errorMessage = "Expected type name (identifier)." 

+

155 if isinstance(token, CharacterToken): 

+

156 if token == ":": 

+

157 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

158 parserState.NextState = cls.stateColon1 

+

159 return 

+

160 if token == "\n": 

+

161 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

162 if not isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

163 parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) 

+

164 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

165 else: 

+

166 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

167 parserState.TokenMarker = None 

+

168 parserState.PushState = LinebreakBlock.stateLinebreak 

+

169 return 

+

170 elif token == "-": 

+

171 parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

172 parserState.TokenMarker = None 

+

173 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

174 parserState.TokenMarker = token 

+

175 return 

+

176 elif token == "/": 

+

177 parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

178 parserState.TokenMarker = None 

+

179 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

180 parserState.TokenMarker = token 

+

181 return 

+

182 elif isinstance(token, WordToken): 

+

183 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

184 parserState.NextState = cls.stateColon1() 

+

185 return 

+

186 elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

187 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

188 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

189 parserState.TokenMarker = None 

+

190 return 

+

191 

+

192 raise TokenParserException(errorMessage, token) 

+

193 

+

194 @classmethod 

+

195 def stateColon1(cls, parserState: TokenToBlockParser): 

+

196 token = parserState.Token 

+

197 errorMessage = "Expected typemark or whitespace after ':'." 

+

198 if isinstance(token, CharacterToken): 

+

199 if token == "\n": 

+

200 parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

201 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

202 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

203 parserState.TokenMarker = None 

+

204 parserState.NextState = cls.stateWhitespace3 

+

205 parserState.PushState = LinebreakBlock.stateLinebreak 

+

206 return 

+

207 elif token == "-": 

+

208 parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

209 parserState.TokenMarker = None 

+

210 parserState.NextState = cls.stateWhitespace3 

+

211 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

212 parserState.TokenMarker = token 

+

213 return 

+

214 elif token == "/": 

+

215 parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

216 parserState.TokenMarker = None 

+

217 parserState.NextState = cls.stateWhitespace3 

+

218 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

219 parserState.TokenMarker = token 

+

220 return 

+

221 elif isinstance(token, SpaceToken): 

+

222 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

223 parserState.NextState = cls.stateWhitespace3 

+

224 return 

+

225 elif isinstance(token, WordToken): 

+

226 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

227 parserState.NextState = cls.stateTypeMarkName 

+

228 return 

+

229 

+

230 raise TokenParserException(errorMessage, token) 

+

231 

+

232 @classmethod 

+

233 def stateWhitespace3(cls, parserState: TokenToBlockParser): 

+

234 token = parserState.Token 

+

235 errorMessage = "Expected type name (identifier)." 

+

236 if isinstance(token, CharacterToken): 

+

237 if token == "\n": 

+

238 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

239 if not isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

240 parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) 

+

241 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

242 else: 

+

243 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

244 parserState.TokenMarker = None 

+

245 parserState.PushState = LinebreakBlock.stateLinebreak 

+

246 return 

+

247 elif token == "-": 

+

248 parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

249 parserState.TokenMarker = None 

+

250 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

251 parserState.TokenMarker = token 

+

252 return 

+

253 elif token == "/": 

+

254 parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

255 parserState.TokenMarker = None 

+

256 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

257 parserState.TokenMarker = token 

+

258 return 

+

259 elif isinstance(token, WordToken): 

+

260 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

261 parserState.NextState = cls.stateTypeMarkName 

+

262 return 

+

263 elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

264 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

265 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

266 parserState.TokenMarker = None 

+

267 return 

+

268 

+

269 raise TokenParserException(errorMessage, token) 

+

270 

+

271 @classmethod 

+

272 def stateTypeMarkName(cls, parserState: TokenToBlockParser): 

+

273 token = parserState.Token 

+

274 errorMessage = "Expected ':=' or whitespace after type mark." 

+

275 if isinstance(token, CharacterToken): 

+

276 if token == ":": 

+

277 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

278 parserState.NextState = cls.statePossibleVariableAssignment 

+

279 return 

+

280 elif token == "\n": 

+

281 parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

282 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

283 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

284 parserState.TokenMarker = None 

+

285 parserState.NextState = cls.stateWhitespace4 

+

286 parserState.PushState = LinebreakBlock.stateLinebreak 

+

287 return 

+

288 elif token == "-": 

+

289 parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

290 parserState.TokenMarker = None 

+

291 parserState.NextState = cls.stateWhitespace4 

+

292 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

293 parserState.TokenMarker = token 

+

294 return 

+

295 elif token == "/": 

+

296 parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

297 parserState.TokenMarker = None 

+

298 parserState.NextState = cls.stateWhitespace4 

+

299 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

300 parserState.TokenMarker = token 

+

301 return 

+

302 elif isinstance(token, SpaceToken): 

+

303 parserState.NextState = cls.stateWhitespace4 

+

304 return 

+

305 

+

306 raise TokenParserException(errorMessage, token) 

+

307 

+

308 @classmethod 

+

309 def stateWhitespace4(cls, parserState: TokenToBlockParser): 

+

310 token = parserState.Token 

+

311 errorMessage = "Expected ':=' after type mark." 

+

312 if isinstance(token, CharacterToken): 

+

313 if token == ":": 

+

314 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

315 parserState.NextState = cls.statePossibleVariableAssignment 

+

316 return 

+

317 elif token == "\n": 

+

318 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

319 if not isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

320 parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) 

+

321 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

322 else: 

+

323 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

324 parserState.TokenMarker = None 

+

325 parserState.PushState = LinebreakBlock.stateLinebreak 

+

326 return 

+

327 elif token == "-": 

+

328 parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

329 parserState.TokenMarker = None 

+

330 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

331 parserState.TokenMarker = token 

+

332 return 

+

333 elif token == "/": 

+

334 parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

335 parserState.TokenMarker = None 

+

336 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

337 parserState.TokenMarker = token 

+

338 return 

+

339 elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

340 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

341 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

342 parserState.TokenMarker = None 

+

343 return 

+

344 

+

345 raise TokenParserException(errorMessage, token) 

+

346 

+

347 @classmethod 

+

348 def statePossibleVariableAssignment(cls, parserState: TokenToBlockParser): 

+

349 token = parserState.Token 

+

350 if isinstance(token, CharacterToken) and (token == "="): 

+

351 parserState.NewToken = VariableAssignmentKeyword(parserState.TokenMarker) 

+

352 parserState.TokenMarker = parserState.NewToken 

+

353 parserState.NextState = cls.stateVariableAssignment 

+

354 return 

+

355 

+

356 raise NotImplementedError("State=PossibleCommentStart: {0!r}".format(token)) 

+

357 

+

358 @classmethod 

+

359 def stateVariableAssignment(cls, parserState: TokenToBlockParser): 

+

360 token = parserState.Token 

+

361 errorMessage = "Expected ':=' or whitespace after type mark." 

+

362 if isinstance(token, CharacterToken): 

+

363 if token == "\n": 

+

364 parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

365 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

366 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

367 parserState.TokenMarker = None 

+

368 parserState.NextState = cls.stateWhitespace5 

+

369 parserState.PushState = LinebreakBlock.stateLinebreak 

+

370 return 

+

371 elif token == "-": 

+

372 parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

373 parserState.TokenMarker = None 

+

374 parserState.NextState = cls.stateWhitespace5 

+

375 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

376 parserState.TokenMarker = token 

+

377 return 

+

378 elif token == "/": 

+

379 parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

380 parserState.TokenMarker = None 

+

381 parserState.NextState = cls.stateWhitespace5 

+

382 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

383 parserState.TokenMarker = token 

+

384 return 

+

385 elif isinstance(token, SpaceToken): 

+

386 parserState.NextState = cls.stateWhitespace5 

+

387 return 

+

388 

+

389 raise TokenParserException(errorMessage, token) 

+

390 

+

391 @classmethod 

+

392 def stateWhitespace5(cls, parserState: TokenToBlockParser): 

+

393 token = parserState.Token 

+

394 errorMessage = "Expected expression after ':='." 

+

395 if isinstance(token, CharacterToken): 

+

396 if token == "\n": 

+

397 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

398 if not isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

399 parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) 

+

400 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

401 else: 

+

402 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

403 parserState.TokenMarker = None 

+

404 parserState.PushState = LinebreakBlock.stateLinebreak 

+

405 return 

+

406 elif token == "-": 

+

407 parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

408 parserState.TokenMarker = None 

+

409 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

410 parserState.TokenMarker = token 

+

411 return 

+

412 elif token == "/": 

+

413 parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

414 parserState.TokenMarker = None 

+

415 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

416 parserState.TokenMarker = token 

+

417 return 

+

418 elif isinstance(token, WordToken): 

+

419 parserState.NextState = cls.stateExpressionEnd 

+

420 return 

+

421 elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

422 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

423 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

424 parserState.TokenMarker = None 

+

425 return 

+

426 

+

427 raise TokenParserException(errorMessage, token) 

+

428 

+

429 @classmethod 

+

430 def stateExpressionEnd(cls, parserState: TokenToBlockParser): 

+

431 token = parserState.Token 

+

432 errorMessage = "Expected ';'." 

+

433 if isinstance(token, CharacterToken): 

+

434 if token == ";": 

+

435 parserState.NewToken = EndToken(fromExistingToken=token) 

+

436 parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

437 parserState.Pop() 

+

438 return 

+

439 elif token == "-": 

+

440 parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

441 parserState.TokenMarker = None 

+

442 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

443 parserState.TokenMarker = token 

+

444 return 

+

445 elif token == "/": 

+

446 parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

447 parserState.TokenMarker = None 

+

448 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

449 parserState.TokenMarker = token 

+

450 return 

+

451 

+

452 raise TokenParserException(errorMessage, token) 

+
+ + + diff --git a/coverage/d_7b29d5beff92d7fe_ArchitectureTest_py.html b/coverage/d_7b29d5beff92d7fe_ArchitectureTest_py.html new file mode 100644 index 000000000..21087c1c3 --- /dev/null +++ b/coverage/d_7b29d5beff92d7fe_ArchitectureTest_py.html @@ -0,0 +1,159 @@ + + + + + Coverage for test/BlockParserTests/ArchitectureTest.py: 0% + + + + + +
+
+

+ Coverage for test/BlockParserTests/ArchitectureTest.py: + 0% +

+ +

+ 27 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ============================================================================== 

+

2# Authors: Patrick Lehmann 

+

3# 

+

4# Python functions: A streaming VHDL parser 

+

5# 

+

6# Description: 

+

7# ------------------------------------ 

+

8# TODO: 

+

9# 

+

10# License: 

+

11# ============================================================================== 

+

12# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany 

+

13# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany 

+

14# 

+

15# Licensed under the Apache License, Version 2.0 (the "License"); 

+

16# you may not use this file except in compliance with the License. 

+

17# You may obtain a copy of the License at 

+

18# 

+

19# http://www.apache.org/licenses/LICENSE-2.0 

+

20# 

+

21# Unless required by applicable law or agreed to in writing, software 

+

22# distributed under the License is distributed on an "AS IS" BASIS, 

+

23# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 

+

24# See the License for the specific language governing permissions and 

+

25# limitations under the License. 

+

26# ============================================================================== 

+

27# 

+

28# load dependencies 

+

29from pyVHDLParser.Blocks.Common import LinebreakBlock, EmptyLineBlock, WhitespaceBlock, IndentationBlock 

+

30from pyVHDLParser.Blocks import StartOfDocumentBlock, EndOfDocumentBlock 

+

31from pyVHDLParser.Blocks.Structural import Architecture 

+

32from test.TestCase import TestCase as TestCaseBase 

+

33from test.Counter import Counter 

+

34 

+

35 

+

36class TestCase(TestCaseBase): 

+

37 __NAME__ = "Architecture declarations" 

+

38 __FILENAME__ = "Architecture.vhdl" 

+

39 

+

40 def __init__(self): 

+

41 pass 

+

42 

+

43 @classmethod 

+

44 def GetExpectedBlocks(cls): 

+

45 counter = cls.GetExpectedBlocksAfterStrip() 

+

46 counter.AddType(EmptyLineBlock, 15) 

+

47 counter.AddType(LinebreakBlock, 78) 

+

48 counter.AddType(IndentationBlock, 43) 

+

49 counter.AddType(WhitespaceBlock, 5) 

+

50 return counter 

+

51 

+

52 @classmethod 

+

53 def GetExpectedBlocksAfterStrip(cls): 

+

54 counter = Counter() 

+

55 counter.AddType(StartOfDocumentBlock, 1) 

+

56 counter.AddType(Architecture.NameBlock, 63) 

+

57 counter.AddType(Architecture.BeginBlock, 27) 

+

58 counter.AddType(Architecture.EndBlock, 36) 

+

59 counter.AddType(EndOfDocumentBlock, 1) 

+

60 return counter 

+
+ + + diff --git a/coverage/d_7b29d5beff92d7fe_EntityTest_py.html b/coverage/d_7b29d5beff92d7fe_EntityTest_py.html new file mode 100644 index 000000000..c2b733797 --- /dev/null +++ b/coverage/d_7b29d5beff92d7fe_EntityTest_py.html @@ -0,0 +1,161 @@ + + + + + Coverage for test/BlockParserTests/EntityTest.py: 0% + + + + + +
+
+

+ Coverage for test/BlockParserTests/EntityTest.py: + 0% +

+ +

+ 29 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ============================================================================== 

+

2# Authors: Patrick Lehmann 

+

3# 

+

4# Python functions: A streaming VHDL parser 

+

5# 

+

6# Description: 

+

7# ------------------------------------ 

+

8# TODO: 

+

9# 

+

10# License: 

+

11# ============================================================================== 

+

12# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany 

+

13# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany 

+

14# 

+

15# Licensed under the Apache License, Version 2.0 (the "License"); 

+

16# you may not use this file except in compliance with the License. 

+

17# You may obtain a copy of the License at 

+

18# 

+

19# http://www.apache.org/licenses/LICENSE-2.0 

+

20# 

+

21# Unless required by applicable law or agreed to in writing, software 

+

22# distributed under the License is distributed on an "AS IS" BASIS, 

+

23# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 

+

24# See the License for the specific language governing permissions and 

+

25# limitations under the License. 

+

26# ============================================================================== 

+

27# 

+

28# load dependencies 

+

29from pyVHDLParser.Blocks.Common import LinebreakBlock, EmptyLineBlock, WhitespaceBlock, IndentationBlock 

+

30from pyVHDLParser.Blocks.Comment import SingleLineCommentBlock, MultiLineCommentBlock 

+

31from pyVHDLParser.Blocks import StartOfDocumentBlock, EndOfDocumentBlock 

+

32from pyVHDLParser.Blocks.Structural import Entity 

+

33from test.TestCase import TestCase as TestCaseBase 

+

34from test.Counter import Counter 

+

35 

+

36 

+

37class TestCase(TestCaseBase): 

+

38 __NAME__ = "Entity declarations" 

+

39 __FILENAME__ = "Entity.vhdl" 

+

40 

+

41 def __init__(self): 

+

42 pass 

+

43 

+

44 @classmethod 

+

45 def GetExpectedBlocks(cls): 

+

46 counter = cls.GetExpectedBlocksAfterStrip() 

+

47 counter.AddType(EmptyLineBlock, 14) 

+

48 counter.AddType(LinebreakBlock, 45) 

+

49 counter.AddType(IndentationBlock, 18) 

+

50 counter.AddType(WhitespaceBlock, 3) 

+

51 counter.AddType(SingleLineCommentBlock, 10) 

+

52 counter.AddType(MultiLineCommentBlock, 20) 

+

53 return counter 

+

54 

+

55 @classmethod 

+

56 def GetExpectedBlocksAfterStrip(cls): 

+

57 counter = Counter() 

+

58 counter.AddType(StartOfDocumentBlock, 1) 

+

59 counter.AddType(Entity.NameBlock, 39) 

+

60 counter.AddType(Entity.EndBlock, 32) 

+

61 counter.AddType(EndOfDocumentBlock, 1) 

+

62 return counter 

+
+ + + diff --git a/coverage/d_7b29d5beff92d7fe_GenericListTest_py.html b/coverage/d_7b29d5beff92d7fe_GenericListTest_py.html new file mode 100644 index 000000000..4975ad9bd --- /dev/null +++ b/coverage/d_7b29d5beff92d7fe_GenericListTest_py.html @@ -0,0 +1,164 @@ + + + + + Coverage for test/BlockParserTests/GenericListTest.py: 0% + + + + + +
+
+

+ Coverage for test/BlockParserTests/GenericListTest.py: + 0% +

+ +

+ 32 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ============================================================================== 

+

2# Authors: Patrick Lehmann 

+

3# 

+

4# Python functions: A streaming VHDL parser 

+

5# 

+

6# Description: 

+

7# ------------------------------------ 

+

8# TODO: 

+

9# 

+

10# License: 

+

11# ============================================================================== 

+

12# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany 

+

13# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany 

+

14# 

+

15# Licensed under the Apache License, Version 2.0 (the "License"); 

+

16# you may not use this file except in compliance with the License. 

+

17# You may obtain a copy of the License at 

+

18# 

+

19# http://www.apache.org/licenses/LICENSE-2.0 

+

20# 

+

21# Unless required by applicable law or agreed to in writing, software 

+

22# distributed under the License is distributed on an "AS IS" BASIS, 

+

23# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 

+

24# See the License for the specific language governing permissions and 

+

25# limitations under the License. 

+

26# ============================================================================== 

+

27# 

+

28# load dependencies 

+

29import pyVHDLParser.Blocks.InterfaceObject 

+

30from pyVHDLParser.Blocks.Common import LinebreakBlock, EmptyLineBlock, WhitespaceBlock, IndentationBlock 

+

31from pyVHDLParser.Blocks.Comment import SingleLineCommentBlock, MultiLineCommentBlock 

+

32from pyVHDLParser.Blocks import StartOfDocumentBlock, EndOfDocumentBlock 

+

33from pyVHDLParser.Blocks.Structural import Entity 

+

34from pyVHDLParser.Blocks.List import GenericList 

+

35from test.TestCase import TestCase as TestCaseBase 

+

36from test.Counter import Counter 

+

37 

+

38 

+

39class TestCase(TestCaseBase): 

+

40 __NAME__ = "Generic lists" 

+

41 __FILENAME__ = "GenericList.vhdl" 

+

42 

+

43 def __init__(self): 

+

44 pass 

+

45 

+

46 @classmethod 

+

47 def GetExpectedBlocks(cls): 

+

48 counter = cls.GetExpectedBlocksAfterStrip() 

+

49 counter.AddType(EmptyLineBlock, 8) 

+

50 counter.AddType(LinebreakBlock, 37) 

+

51 counter.AddType(IndentationBlock, 18) 

+

52 return counter 

+

53 

+

54 @classmethod 

+

55 def GetExpectedBlocksAfterStrip(cls): 

+

56 counter = Counter() 

+

57 counter.AddType(StartOfDocumentBlock, 1) 

+

58 counter.AddType(Entity.NameBlock, 9) 

+

59 counter.AddType(GenericList.OpenBlock, 9) 

+

60 counter.AddType(pyVHDLParser.Blocks.InterfaceObject.InterfaceConstantBlock, 13) 

+

61 counter.AddType(GenericList.DelimiterBlock, 4) 

+

62 counter.AddType(GenericList.CloseBlock, 9) 

+

63 counter.AddType(Entity.EndBlock, 9) 

+

64 counter.AddType(EndOfDocumentBlock, 1) 

+

65 return counter 

+
+ + + diff --git a/coverage/d_7b29d5beff92d7fe_LibraryTest_py.html b/coverage/d_7b29d5beff92d7fe_LibraryTest_py.html new file mode 100644 index 000000000..f45b5f15c --- /dev/null +++ b/coverage/d_7b29d5beff92d7fe_LibraryTest_py.html @@ -0,0 +1,163 @@ + + + + + Coverage for test/BlockParserTests/LibraryTest.py: 0% + + + + + +
+
+

+ Coverage for test/BlockParserTests/LibraryTest.py: + 0% +

+ +

+ 31 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ============================================================================== 

+

2# Authors: Patrick Lehmann 

+

3# 

+

4# Python functions: A streaming VHDL parser 

+

5# 

+

6# Description: 

+

7# ------------------------------------ 

+

8# TODO: 

+

9# 

+

10# License: 

+

11# ============================================================================== 

+

12# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany 

+

13# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany 

+

14# 

+

15# Licensed under the Apache License, Version 2.0 (the "License"); 

+

16# you may not use this file except in compliance with the License. 

+

17# You may obtain a copy of the License at 

+

18# 

+

19# http://www.apache.org/licenses/LICENSE-2.0 

+

20# 

+

21# Unless required by applicable law or agreed to in writing, software 

+

22# distributed under the License is distributed on an "AS IS" BASIS, 

+

23# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 

+

24# See the License for the specific language governing permissions and 

+

25# limitations under the License. 

+

26# ============================================================================== 

+

27# 

+

28# load dependencies 

+

29from pyVHDLParser.Blocks.Common import LinebreakBlock, EmptyLineBlock, WhitespaceBlock, IndentationBlock 

+

30from pyVHDLParser.Blocks import StartOfDocumentBlock, EndOfDocumentBlock, CommentBlock 

+

31from pyVHDLParser.Blocks.Reference import Library 

+

32from test.TestCase import TestCase as TestCaseBase 

+

33from test.Counter import Counter 

+

34 

+

35 

+

36class TestCase(TestCaseBase): 

+

37 __NAME__ = "Library clauses" 

+

38 __FILENAME__ = "Library.vhdl" 

+

39 

+

40 def __init__(self): 

+

41 super().__init__() 

+

42 

+

43 @classmethod 

+

44 def GetExpectedBlocks(cls): 

+

45 pass 

+

46 counter = cls.GetExpectedBlocksAfterStrip() 

+

47 counter.AddType(EmptyLineBlock, 7) 

+

48 counter.AddType(LinebreakBlock, 19) 

+

49 counter.AddType(IndentationBlock, 12) 

+

50 counter.AddType(WhitespaceBlock, 2) 

+

51 counter.AddType(CommentBlock, 7) 

+

52 return counter 

+

53 

+

54 @classmethod 

+

55 def GetExpectedBlocksAfterStrip(cls): 

+

56 pass 

+

57 counter = Counter() 

+

58 counter.AddType(StartOfDocumentBlock, 1) 

+

59 counter.AddType(Library.StartBlock, 11) 

+

60 counter.AddType(Library.LibraryNameBlock, 14) 

+

61 counter.AddType(Library.DelimiterBlock, 3) 

+

62 counter.AddType(Library.EndBlock, 11) 

+

63 counter.AddType(EndOfDocumentBlock, 1) 

+

64 return counter 

+
+ + + diff --git a/coverage/d_7b29d5beff92d7fe_PackageBodyTest_py.html b/coverage/d_7b29d5beff92d7fe_PackageBodyTest_py.html new file mode 100644 index 000000000..63384bb81 --- /dev/null +++ b/coverage/d_7b29d5beff92d7fe_PackageBodyTest_py.html @@ -0,0 +1,161 @@ + + + + + Coverage for test/BlockParserTests/PackageBodyTest.py: 0% + + + + + +
+
+

+ Coverage for test/BlockParserTests/PackageBodyTest.py: + 0% +

+ +

+ 29 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ============================================================================== 

+

2# Authors: Patrick Lehmann 

+

3# 

+

4# Python functions: A streaming VHDL parser 

+

5# 

+

6# Description: 

+

7# ------------------------------------ 

+

8# TODO: 

+

9# 

+

10# License: 

+

11# ============================================================================== 

+

12# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany 

+

13# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany 

+

14# 

+

15# Licensed under the Apache License, Version 2.0 (the "License"); 

+

16# you may not use this file except in compliance with the License. 

+

17# You may obtain a copy of the License at 

+

18# 

+

19# http://www.apache.org/licenses/LICENSE-2.0 

+

20# 

+

21# Unless required by applicable law or agreed to in writing, software 

+

22# distributed under the License is distributed on an "AS IS" BASIS, 

+

23# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 

+

24# See the License for the specific language governing permissions and 

+

25# limitations under the License. 

+

26# ============================================================================== 

+

27# 

+

28# load dependencies 

+

29from pyVHDLParser.Blocks.Common import LinebreakBlock, EmptyLineBlock, WhitespaceBlock, IndentationBlock 

+

30from pyVHDLParser.Blocks.Comment import SingleLineCommentBlock, MultiLineCommentBlock 

+

31from pyVHDLParser.Blocks import StartOfDocumentBlock, EndOfDocumentBlock 

+

32from pyVHDLParser.Blocks.Sequential import PackageBody 

+

33from test.TestCase import TestCase as TestCaseBase 

+

34from test.Counter import Counter 

+

35 

+

36 

+

37class TestCase(TestCaseBase): 

+

38 __NAME__ = "Package body declarations" 

+

39 __FILENAME__ = "PackageBody.vhdl" 

+

40 

+

41 def __init__(self): 

+

42 pass 

+

43 

+

44 @classmethod 

+

45 def GetExpectedBlocks(cls): 

+

46 counter = cls.GetExpectedBlocksAfterStrip() 

+

47 counter.AddType(EmptyLineBlock, 14) 

+

48 counter.AddType(LinebreakBlock, 48) 

+

49 counter.AddType(IndentationBlock, 18) 

+

50 counter.AddType(WhitespaceBlock, 3) 

+

51 counter.AddType(SingleLineCommentBlock, 12) 

+

52 counter.AddType(MultiLineCommentBlock, 22) 

+

53 return counter 

+

54 

+

55 @classmethod 

+

56 def GetExpectedBlocksAfterStrip(cls): 

+

57 counter = Counter() 

+

58 counter.AddType(StartOfDocumentBlock, 1) 

+

59 counter.AddType(PackageBody.NameBlock, 39) 

+

60 counter.AddType(PackageBody.EndBlock, 32) 

+

61 counter.AddType(EndOfDocumentBlock, 1) 

+

62 return counter 

+
+ + + diff --git a/coverage/d_7b29d5beff92d7fe_PackageTest_py.html b/coverage/d_7b29d5beff92d7fe_PackageTest_py.html new file mode 100644 index 000000000..393ebd2a9 --- /dev/null +++ b/coverage/d_7b29d5beff92d7fe_PackageTest_py.html @@ -0,0 +1,161 @@ + + + + + Coverage for test/BlockParserTests/PackageTest.py: 0% + + + + + +
+
+

+ Coverage for test/BlockParserTests/PackageTest.py: + 0% +

+ +

+ 29 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ============================================================================== 

+

2# Authors: Patrick Lehmann 

+

3# 

+

4# Python functions: A streaming VHDL parser 

+

5# 

+

6# Description: 

+

7# ------------------------------------ 

+

8# TODO: 

+

9# 

+

10# License: 

+

11# ============================================================================== 

+

12# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany 

+

13# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany 

+

14# 

+

15# Licensed under the Apache License, Version 2.0 (the "License"); 

+

16# you may not use this file except in compliance with the License. 

+

17# You may obtain a copy of the License at 

+

18# 

+

19# http://www.apache.org/licenses/LICENSE-2.0 

+

20# 

+

21# Unless required by applicable law or agreed to in writing, software 

+

22# distributed under the License is distributed on an "AS IS" BASIS, 

+

23# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 

+

24# See the License for the specific language governing permissions and 

+

25# limitations under the License. 

+

26# ============================================================================== 

+

27# 

+

28# load dependencies 

+

29from pyVHDLParser.Blocks.Common import LinebreakBlock, EmptyLineBlock, WhitespaceBlock, IndentationBlock 

+

30from pyVHDLParser.Blocks.Comment import SingleLineCommentBlock, MultiLineCommentBlock 

+

31from pyVHDLParser.Blocks import StartOfDocumentBlock, EndOfDocumentBlock 

+

32from pyVHDLParser.Blocks.Sequential import Package 

+

33from test.TestCase import TestCase as TestCaseBase 

+

34from test.Counter import Counter 

+

35 

+

36 

+

37class TestCase(TestCaseBase): 

+

38 __NAME__ = "Package declarations" 

+

39 __FILENAME__ = "Package.vhdl" 

+

40 

+

41 def __init__(self): 

+

42 pass 

+

43 

+

44 @classmethod 

+

45 def GetExpectedBlocks(cls): 

+

46 counter = cls.GetExpectedBlocksAfterStrip() 

+

47 counter.AddType(EmptyLineBlock, 14) 

+

48 counter.AddType(LinebreakBlock, 45) 

+

49 counter.AddType(IndentationBlock, 18) 

+

50 counter.AddType(WhitespaceBlock, 3) 

+

51 counter.AddType(SingleLineCommentBlock, 10) 

+

52 counter.AddType(MultiLineCommentBlock, 20) 

+

53 return counter 

+

54 

+

55 @classmethod 

+

56 def GetExpectedBlocksAfterStrip(cls): 

+

57 counter = Counter() 

+

58 counter.AddType(StartOfDocumentBlock, 1) 

+

59 counter.AddType(Package.NameBlock, 39) 

+

60 counter.AddType(Package.EndBlock, 32) 

+

61 counter.AddType(EndOfDocumentBlock, 1) 

+

62 return counter 

+
+ + + diff --git a/coverage/d_7b29d5beff92d7fe_PortListTest_py.html b/coverage/d_7b29d5beff92d7fe_PortListTest_py.html new file mode 100644 index 000000000..bff5f71db --- /dev/null +++ b/coverage/d_7b29d5beff92d7fe_PortListTest_py.html @@ -0,0 +1,165 @@ + + + + + Coverage for test/BlockParserTests/PortListTest.py: 0% + + + + + +
+
+

+ Coverage for test/BlockParserTests/PortListTest.py: + 0% +

+ +

+ 33 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ============================================================================== 

+

2# Authors: Patrick Lehmann 

+

3# 

+

4# Python functions: A streaming VHDL parser 

+

5# 

+

6# Description: 

+

7# ------------------------------------ 

+

8# TODO: 

+

9# 

+

10# License: 

+

11# ============================================================================== 

+

12# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany 

+

13# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany 

+

14# 

+

15# Licensed under the Apache License, Version 2.0 (the "License"); 

+

16# you may not use this file except in compliance with the License. 

+

17# You may obtain a copy of the License at 

+

18# 

+

19# http://www.apache.org/licenses/LICENSE-2.0 

+

20# 

+

21# Unless required by applicable law or agreed to in writing, software 

+

22# distributed under the License is distributed on an "AS IS" BASIS, 

+

23# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 

+

24# See the License for the specific language governing permissions and 

+

25# limitations under the License. 

+

26# ============================================================================== 

+

27# 

+

28# load dependencies 

+

29import pyVHDLParser.Blocks.InterfaceObject 

+

30from pyVHDLParser.Blocks.Common import LinebreakBlock, EmptyLineBlock, WhitespaceBlock, IndentationBlock 

+

31from pyVHDLParser.Blocks.Comment import SingleLineCommentBlock, MultiLineCommentBlock 

+

32from pyVHDLParser.Blocks import StartOfDocumentBlock, EndOfDocumentBlock 

+

33from pyVHDLParser.Blocks.Structural import Entity 

+

34from pyVHDLParser.Blocks.List import PortList 

+

35from test.TestCase import TestCase as TestCaseBase 

+

36from test.Counter import Counter 

+

37 

+

38 

+

39class TestCase(TestCaseBase): 

+

40 __NAME__ = "Port lists" 

+

41 __FILENAME__ = "PortList.vhdl" 

+

42 

+

43 def __init__(self): 

+

44 pass 

+

45 

+

46 @classmethod 

+

47 def GetExpectedBlocks(cls): 

+

48 counter = cls.GetExpectedBlocksAfterStrip() 

+

49 counter.AddType(EmptyLineBlock, 8) 

+

50 counter.AddType(LinebreakBlock, 37) 

+

51 counter.AddType(IndentationBlock, 18) 

+

52 counter.AddType(WhitespaceBlock, 3) 

+

53 return counter 

+

54 

+

55 @classmethod 

+

56 def GetExpectedBlocksAfterStrip(cls): 

+

57 counter = Counter() 

+

58 counter.AddType(StartOfDocumentBlock, 1) 

+

59 counter.AddType(Entity.NameBlock, 9) 

+

60 counter.AddType(PortList.OpenBlock, 9) 

+

61 counter.AddType(pyVHDLParser.Blocks.InterfaceObject.InterfaceSignalBlock, 13) 

+

62 counter.AddType(PortList.DelimiterBlock, 4) 

+

63 counter.AddType(PortList.CloseBlock, 9) 

+

64 counter.AddType(Entity.EndBlock, 9) 

+

65 counter.AddType(EndOfDocumentBlock, 1) 

+

66 return counter 

+
+ + + diff --git a/coverage/d_7b29d5beff92d7fe_ProcessTest_py.html b/coverage/d_7b29d5beff92d7fe_ProcessTest_py.html new file mode 100644 index 000000000..39f04c5ce --- /dev/null +++ b/coverage/d_7b29d5beff92d7fe_ProcessTest_py.html @@ -0,0 +1,170 @@ + + + + + Coverage for test/BlockParserTests/ProcessTest.py: 0% + + + + + +
+
+

+ Coverage for test/BlockParserTests/ProcessTest.py: + 0% +

+ +

+ 38 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ============================================================================== 

+

2# Authors: Patrick Lehmann 

+

3# 

+

4# Python functions: A streaming VHDL parser 

+

5# 

+

6# Description: 

+

7# ------------------------------------ 

+

8# TODO: 

+

9# 

+

10# License: 

+

11# ============================================================================== 

+

12# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany 

+

13# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany 

+

14# 

+

15# Licensed under the Apache License, Version 2.0 (the "License"); 

+

16# you may not use this file except in compliance with the License. 

+

17# You may obtain a copy of the License at 

+

18# 

+

19# http://www.apache.org/licenses/LICENSE-2.0 

+

20# 

+

21# Unless required by applicable law or agreed to in writing, software 

+

22# distributed under the License is distributed on an "AS IS" BASIS, 

+

23# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 

+

24# See the License for the specific language governing permissions and 

+

25# limitations under the License. 

+

26# ============================================================================== 

+

27# 

+

28# load dependencies 

+

29from pyVHDLParser.Blocks.Common import LinebreakBlock, EmptyLineBlock, WhitespaceBlock, IndentationBlock 

+

30from pyVHDLParser.Blocks.Comment import SingleLineCommentBlock, MultiLineCommentBlock 

+

31from pyVHDLParser.Blocks import StartOfDocumentBlock, EndOfDocumentBlock 

+

32from pyVHDLParser.Blocks.Structural import Architecture 

+

33from pyVHDLParser.Blocks.List import SensitivityList 

+

34from pyVHDLParser.Blocks.Sequential import Process 

+

35from test.TestCase import TestCase as TestCaseBase 

+

36from test.Counter import Counter 

+

37 

+

38 

+

39class TestCase(TestCaseBase): 

+

40 __NAME__ = "Process declarations" 

+

41 __FILENAME__ = "Process.vhdl" 

+

42 

+

43 def __init__(self): 

+

44 pass 

+

45 

+

46 @classmethod 

+

47 def GetExpectedBlocks(cls): 

+

48 counter = cls.GetExpectedBlocksAfterStrip() 

+

49 counter.AddType(EmptyLineBlock, 6) 

+

50 counter.AddType(LinebreakBlock, 23) 

+

51 counter.AddType(IndentationBlock, 29) 

+

52 counter.AddType(SingleLineCommentBlock, 9) 

+

53 return counter 

+

54 

+

55 @classmethod 

+

56 def GetExpectedBlocksAfterStrip(cls): 

+

57 counter = Counter() 

+

58 counter.AddType(StartOfDocumentBlock, 1) 

+

59 counter.AddType(Architecture.NameBlock, 1) 

+

60 counter.AddType(Architecture.BeginBlock, 1) 

+

61 counter.AddType(Process.OpenBlock, 7) 

+

62 counter.AddType(Process.OpenBlock2, 2) 

+

63 counter.AddType(SensitivityList.OpenBlock, 7) 

+

64 counter.AddType(SensitivityList.ItemBlock, 8) 

+

65 counter.AddType(SensitivityList.DelimiterBlock, 1) 

+

66 counter.AddType(SensitivityList.CloseBlock, 7) 

+

67 counter.AddType(Process.BeginBlock, 7) 

+

68 counter.AddType(Process.EndBlock, 7) 

+

69 counter.AddType(Architecture.EndBlock, 1) 

+

70 counter.AddType(EndOfDocumentBlock, 1) 

+

71 return counter 

+
+ + + diff --git a/coverage/d_7b29d5beff92d7fe_TestSuite_py.html b/coverage/d_7b29d5beff92d7fe_TestSuite_py.html new file mode 100644 index 000000000..d8c5b6369 --- /dev/null +++ b/coverage/d_7b29d5beff92d7fe_TestSuite_py.html @@ -0,0 +1,259 @@ + + + + + Coverage for test/BlockParserTests/TestSuite.py: 0% + + + + + +
+
+

+ Coverage for test/BlockParserTests/TestSuite.py: + 0% +

+ +

+ 86 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ============================================================================== 

+

2# Authors: Patrick Lehmann 

+

3# 

+

4# Python functions: A streaming VHDL parser 

+

5# 

+

6# Description: 

+

7# ------------------------------------ 

+

8# TODO: 

+

9# 

+

10# License: 

+

11# ============================================================================== 

+

12# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany 

+

13# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany 

+

14# 

+

15# Licensed under the Apache License, Version 2.0 (the "License"); 

+

16# you may not use this file except in compliance with the License. 

+

17# You may obtain a copy of the License at 

+

18# 

+

19# http://www.apache.org/licenses/LICENSE-2.0 

+

20# 

+

21# Unless required by applicable law or agreed to in writing, software 

+

22# distributed under the License is distributed on an "AS IS" BASIS, 

+

23# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 

+

24# See the License for the specific language governing permissions and 

+

25# limitations under the License. 

+

26# ============================================================================== 

+

27# 

+

28# load dependencies 

+

29from pyVHDLParser.Base import ParserException 

+

30from pyVHDLParser.Blocks import StartOfDocumentBlock, EndOfDocumentBlock, TokenToBlockParser 

+

31from pyVHDLParser.Filters.Comment import StripAndFuse 

+

32from pyVHDLParser.Functions import Console 

+

33from pyVHDLParser.Token import StartOfDocumentToken, EndOfDocumentToken 

+

34from pyVHDLParser.Token.Parser import Tokenizer 

+

35from . import EntityTest, GenericListTest, ArchitectureTest, ProcessTest 

+

36from . import LibraryTest, UseTest, PackageTest, PackageBodyTest 

+

37from . import PortListTest 

+

38 

+

39 

+

40class TestSuite: 

+

41 __NAME__ = "BlockParserTestSuite" 

+

42 __TESTCASES__ = [ 

+

43 LibraryTest.TestCase, 

+

44 UseTest.TestCase, 

+

45 PackageTest.TestCase, 

+

46 PackageBodyTest.TestCase, 

+

47 EntityTest.TestCase, 

+

48 GenericListTest.TestCase, 

+

49 PortListTest.TestCase, 

+

50 ArchitectureTest.TestCase, 

+

51 ProcessTest.TestCase 

+

52 ] 

+

53 

+

54 __ALPHA_CHARACTERS__ = Tokenizer.__ALPHA_CHARS__ + "_" + Tokenizer.__NUMBER_CHARS__ 

+

55 

+

56 def __init__(self, vhdlDirectory): 

+

57 self._vhdlDirectory = vhdlDirectory 

+

58 

+

59 def RunTests(self): 

+

60 runExpectedBlocks = True 

+

61 runExpectedBlocksAfterStrip = True 

+

62 runConnectivity = True 

+

63 

+

64 for testCase in self.__TESTCASES__: 

+

65 print(" Testcase: {DARK_CYAN}{name}.{NOCOLOR}".format(name=testCase.__NAME__, **Console.Foreground)) 

+

66 

+

67 file = self._vhdlDirectory / testCase.__FILENAME__ 

+

68 

+

69 if not file.exists(): 

+

70 print(" {RED}File '{0!s}' does not exist.{NOCOLOR}".format(file, **Console.Foreground)) 

+

71 continue 

+

72 

+

73 with file.open('r') as fileHandle: 

+

74 content = fileHandle.read() 

+

75 

+

76 if runExpectedBlocks: 

+

77 self._RunExpectedBlocks(testCase, content) 

+

78 

+

79 if runExpectedBlocksAfterStrip: 

+

80 self._RunExpectedBlocksAfterStrip(testCase, content) 

+

81 

+

82 if runConnectivity: 

+

83 self._RunConnectivityCheck(testCase, content) 

+

84 

+

85 print(" Testcase: {DARK_CYAN}{name} COMPLETED.{NOCOLOR}".format(name=testCase.__NAME__, **Console.Foreground)) 

+

86 

+

87 

+

88 def _RunExpectedBlocks(self, testCase, content): 

+

89 # History check 

+

90 counter = testCase.GetExpectedBlocks() 

+

91 wordTokenStream = Tokenizer.GetVHDLTokenizer(content, alphaCharacters=self.__ALPHA_CHARACTERS__, numberCharacters="") 

+

92 vhdlBlockStream = TokenToBlockParser(wordTokenStream)() 

+

93 

+

94 try: 

+

95 for vhdlBlock in vhdlBlockStream: 

+

96 counter.Count(vhdlBlock.__class__) 

+

97 

+

98 if counter.Check(): 

+

99 print(" Expected blocks check - {GREEN}PASSED{NOCOLOR}".format(**Console.Foreground)) 

+

100 else: 

+

101 print(" Expected blocks check - {RED}FAILED{NOCOLOR}".format(**Console.Foreground)) 

+

102 counter.PrintReport() 

+

103 

+

104 except ParserException as ex: print("{RED}ERROR: {0!s}{NOCOLOR}".format(ex, **Console.Foreground)) 

+

105 except NotImplementedError as ex: print("{RED}NotImplementedError: {0!s}{NOCOLOR}".format(ex, **Console.Foreground)) 

+

106 

+

107 def _RunExpectedBlocksAfterStrip(self, testCase, content): 

+

108 # History check 

+

109 

+

110 counter = testCase.GetExpectedBlocksAfterStrip() 

+

111 wordTokenStream = Tokenizer.GetVHDLTokenizer(content, alphaCharacters=self.__ALPHA_CHARACTERS__, numberCharacters="") 

+

112 vhdlBlockStream = TokenToBlockParser(wordTokenStream)() 

+

113 strippedBlockStream = StripAndFuse(vhdlBlockStream) 

+

114 

+

115 try: 

+

116 for vhdlBlock in strippedBlockStream: 

+

117 counter.Count(vhdlBlock.__class__) 

+

118 

+

119 if counter.Check(): 

+

120 print(" Expected blocks after strip check - {GREEN}PASSED{NOCOLOR}".format(**Console.Foreground)) 

+

121 else: 

+

122 print(" Expected blocks after strip check - {RED}FAILED{NOCOLOR}".format(**Console.Foreground)) 

+

123 counter.PrintReport() 

+

124 

+

125 

+

126 except ParserException as ex: print("{RED}ERROR: {0!s}{NOCOLOR}".format(ex, **Console.Foreground)) 

+

127 except NotImplementedError as ex: print("{RED}NotImplementedError: {0!s}{NOCOLOR}".format(ex, **Console.Foreground)) 

+

128 

+

129 def _RunConnectivityCheck(self, testCase, content): 

+

130 # Connectivity check 

+

131 wordTokenStream = Tokenizer.GetVHDLTokenizer(content, alphaCharacters=self.__ALPHA_CHARACTERS__, numberCharacters="") 

+

132 vhdlBlockStream = TokenToBlockParser(wordTokenStream)() 

+

133 

+

134 try: 

+

135 blockIterator = iter(vhdlBlockStream) 

+

136 firstBlock = next(blockIterator) 

+

137 if not isinstance(firstBlock, StartOfDocumentBlock): print("{RED}First block is not StartOfDocumentBlock: {block}{NOCOLOR}".format(block=firstBlock, **Console.Foreground)) 

+

138 elif not isinstance(firstBlock.StartToken, StartOfDocumentToken): print("{RED}First token is not StartOfDocumentToken: {token}{NOCOLOR}".format(token=firstBlock.StartToken, **Console.Foreground)) 

+

139 

+

140 lastBlock = None 

+

141 lastToken = firstBlock.StartToken 

+

142 for vhdlBlock in blockIterator: 

+

143 if isinstance(vhdlBlock, EndOfDocumentBlock): 

+

144 lastBlock = vhdlBlock 

+

145 break 

+

146 tokenIterator = iter(vhdlBlock) 

+

147 

+

148 for token in tokenIterator: 

+

149 if token.NextToken is None: print("{RED}Token has an open end.{NOCOLOR}".format(**Console.Foreground)) 

+

150 elif lastToken.NextToken is not token: print("{RED}Last token is not connected to the current one.{NOCOLOR}".format(**Console.Foreground)) 

+

151 elif token.PreviousToken is not lastToken: print("{RED}Current token is not connected to lastToken.{NOCOLOR}".format(**Console.Foreground)) 

+

152 lastToken = token 

+

153 else: 

+

154 print("{RED}No EndOfDocumentBlock found.{NOCOLOR}".format(**Console.Foreground)) 

+

155 

+

156 if not isinstance(lastBlock, EndOfDocumentBlock): print("{RED}Last block is not EndOfDocumentBlock: {block}{NOCOLOR}".format(block=lastBlock, **Console.Foreground)) 

+

157 elif not isinstance(lastBlock.StartToken, EndOfDocumentToken): print("{RED}Last block is not EndOfDocumentToken: {token}{NOCOLOR}".format(token=lastBlock.StartToken, **Console.Foreground)) 

+

158 

+

159 except ParserException as ex: print("{RED}ERROR: {0!s}{NOCOLOR}".format(ex, **Console.Foreground)) 

+

160 except NotImplementedError as ex: print("{RED}NotImplementedError: {0!s}{NOCOLOR}".format(ex, **Console.Foreground)) 

+
+ + + diff --git a/coverage/d_7b29d5beff92d7fe_UseTest_py.html b/coverage/d_7b29d5beff92d7fe_UseTest_py.html new file mode 100644 index 000000000..cab469b16 --- /dev/null +++ b/coverage/d_7b29d5beff92d7fe_UseTest_py.html @@ -0,0 +1,161 @@ + + + + + Coverage for test/BlockParserTests/UseTest.py: 0% + + + + + +
+
+

+ Coverage for test/BlockParserTests/UseTest.py: + 0% +

+ +

+ 29 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ============================================================================== 

+

2# Authors: Patrick Lehmann 

+

3# 

+

4# Python functions: A streaming VHDL parser 

+

5# 

+

6# Description: 

+

7# ------------------------------------ 

+

8# TODO: 

+

9# 

+

10# License: 

+

11# ============================================================================== 

+

12# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany 

+

13# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany 

+

14# 

+

15# Licensed under the Apache License, Version 2.0 (the "License"); 

+

16# you may not use this file except in compliance with the License. 

+

17# You may obtain a copy of the License at 

+

18# 

+

19# http://www.apache.org/licenses/LICENSE-2.0 

+

20# 

+

21# Unless required by applicable law or agreed to in writing, software 

+

22# distributed under the License is distributed on an "AS IS" BASIS, 

+

23# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 

+

24# See the License for the specific language governing permissions and 

+

25# limitations under the License. 

+

26# ============================================================================== 

+

27# 

+

28# load dependencies 

+

29from pyVHDLParser.Blocks import StartOfDocumentBlock, EndOfDocumentBlock 

+

30from pyVHDLParser.Blocks.Common import LinebreakBlock, EmptyLineBlock, WhitespaceBlock, IndentationBlock 

+

31from pyVHDLParser.Blocks.Reference import Use 

+

32from test.TestCase import TestCase as TestCaseBase 

+

33from test.Counter import Counter 

+

34 

+

35 

+

36class TestCase(TestCaseBase): 

+

37 __NAME__ = "Use clauses" 

+

38 __FILENAME__ = "Use.vhdl" 

+

39 

+

40 def __init__(self): 

+

41 pass 

+

42 

+

43 @classmethod 

+

44 def GetExpectedBlocks(cls): 

+

45 counter = cls.GetExpectedBlocksAfterStrip() 

+

46 counter.AddType(EmptyLineBlock, 8) 

+

47 counter.AddType(LinebreakBlock, 16) 

+

48 counter.AddType(IndentationBlock, 1) 

+

49 counter.AddType(WhitespaceBlock, 5) 

+

50 counter.AddType(SingleLineCommentBlock, 1) 

+

51 return counter 

+

52 

+

53 @classmethod 

+

54 def GetExpectedBlocksAfterStrip(cls): 

+

55 counter = Counter() 

+

56 counter.AddType(StartOfDocumentBlock, 1) 

+

57 counter.AddType(StartBlock, 10) 

+

58 counter.AddType(ReferenceNameBlock, 17) 

+

59 counter.AddType(DelimiterBlock, 3) 

+

60 counter.AddType(EndBlock, 10) 

+

61 counter.AddType(EndOfDocumentBlock, 1) 

+

62 return counter 

+
+ + + diff --git a/coverage/d_9714dbcb4984d12f_Test_py.html b/coverage/d_9714dbcb4984d12f_Test_py.html new file mode 100644 index 000000000..b7e0afefe --- /dev/null +++ b/coverage/d_9714dbcb4984d12f_Test_py.html @@ -0,0 +1,170 @@ + + + + + Coverage for test/SimulationModel/Test.py: 0% + + + + + +
+
+

+ Coverage for test/SimulationModel/Test.py: + 0% +

+ +

+ 26 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ============================================================================== 

+

2# Authors: Patrick Lehmann 

+

3# 

+

4# Python functions: A streaming VHDL parser 

+

5# 

+

6# Description: 

+

7# ------------------------------------ 

+

8# TODO: 

+

9# 

+

10# License: 

+

11# ============================================================================== 

+

12# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany 

+

13# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany 

+

14# 

+

15# Licensed under the Apache License, Version 2.0 (the "License"); 

+

16# you may not use this file except in compliance with the License. 

+

17# You may obtain a copy of the License at 

+

18# 

+

19# http://www.apache.org/licenses/LICENSE-2.0 

+

20# 

+

21# Unless required by applicable law or agreed to in writing, software 

+

22# distributed under the License is distributed on an "AS IS" BASIS, 

+

23# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 

+

24# See the License for the specific language governing permissions and 

+

25# limitations under the License. 

+

26# ============================================================================== 

+

27# 

+

28# load dependencies 

+

29from pyVHDLParser.SimulationModel.SimulationModel import Simulation, Path, Signal, Process 

+

30from pyVHDLParser.TypeSystem.std_logic_1164 import Std_Logic 

+

31 

+

32 

+

33sim = Simulation() 

+

34 

+

35sig1 = Signal(Path("signal1", "/signal1"), Std_Logic) 

+

36sig2 = Signal(Path("signal2", "/signal2"), Std_Logic) 

+

37 

+

38sim.AddSignal(sig1) 

+

39sim.AddSignal(sig2) 

+

40 

+

41def p1(): 

+

42 zero = Std_Logic.Attributes.Value("0") 

+

43 one = Std_Logic.Attributes.Value("1") 

+

44 for i in range(10): 

+

45 yield ([ 

+

46 (sig1, zero) 

+

47 ], 10) 

+

48 yield ([ 

+

49 (sig1, one) 

+

50 ], 10) 

+

51 

+

52def p2(): 

+

53 zero = Std_Logic.Attributes.Value("0") 

+

54 one = Std_Logic.Attributes.Value("1") 

+

55 for i in range(20): 

+

56 yield ([ 

+

57 (sig2, one) 

+

58 ], 5) 

+

59 yield ([ 

+

60 (sig2, zero) 

+

61 ], 5) 

+

62 

+

63proc1 = Process(Path("proc1", "/proc1"), p1) 

+

64proc2 = Process(Path("proc2", "/proc2"), p2) 

+

65 

+

66sim.AddProcess(proc1) 

+

67sim.AddProcess(proc2) 

+

68 

+

69sim.Initialize() 

+

70sim.Run() 

+

71sim.ExportVCD("wave.vcd") 

+
+ + + diff --git a/coverage/d_9eec94a2c84e7a59_Architecture_py.html b/coverage/d_9eec94a2c84e7a59_Architecture_py.html new file mode 100644 index 000000000..e87e256f2 --- /dev/null +++ b/coverage/d_9eec94a2c84e7a59_Architecture_py.html @@ -0,0 +1,218 @@ + + + + + Coverage for pyVHDLParser/DocumentModel/DesignUnit/Architecture.py: 33% + + + + + +
+
+

+ Coverage for pyVHDLParser/DocumentModel/DesignUnit/Architecture.py: + 33% +

+ +

+ 57 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31from typing import List 

+

32 

+

33from pyVHDLModel.DesignUnit import Architecture as ArchitectureVHDLModel 

+

34 

+

35from pyVHDLParser.Token.Keywords import IdentifierToken 

+

36from pyVHDLParser.Blocks import BlockParserException 

+

37from pyVHDLParser.Blocks.Object.Constant import ConstantDeclarationBlock 

+

38from pyVHDLParser.Blocks.Structural import Architecture as ArchitectureBlocks 

+

39from pyVHDLParser.Groups import BlockToGroupParser 

+

40from pyVHDLParser.DocumentModel.Reference import LibraryClause, PackageReference 

+

41 

+

42 

+

43DEBUG = True 

+

44 

+

45@export 

+

46class Architecture(ArchitectureVHDLModel): 

+

47 def __init__(self, architectureName, entityName): 

+

48 super().__init__() 

+

49 self._name = architectureName 

+

50 self._entity = entityName 

+

51 

+

52 @classmethod 

+

53 def stateParse(cls, parserState: BlockToGroupParser): #document, group): 

+

54 # cls.stateParseArchitectureName(parserState) 

+

55 # 

+

56 # for block in parserState.GroupIterator: 

+

57 # if isinstance(block, Constant.ConstantBlock): 

+

58 # raise NotImplementedError() 

+

59 # # elif isinstance(block, ArchitectureBlock.ConcurrentBeginBlock): 

+

60 # # raise NotImplementedError() 

+

61 # elif isinstance(block, ArchitectureBlock.EndBlock): 

+

62 # break 

+

63 # else: 

+

64 # raise BlockParserException("", None) 

+

65 

+

66 parserState.Pop() 

+

67 # parserState.CurrentBlock = None 

+

68 

+

69 @classmethod 

+

70 def stateParseArchitectureName(cls, parserState: BlockToGroupParser): #document, group): 

+

71 assert isinstance(parserState.CurrentGroup, ArchitectureBlock.NameBlock) 

+

72 

+

73 tokenIterator = iter(parserState) 

+

74 

+

75 # iterate architetures NameBlock to find the architecture name 

+

76 for token in tokenIterator: 

+

77 if isinstance(token, IdentifierToken): 

+

78 architectureName = token.Value 

+

79 break 

+

80 else: 

+

81 raise BlockParserException("", None) # FIXME: change to DOMParserException 

+

82 

+

83 for token in tokenIterator: 

+

84 if isinstance(token, IdentifierToken): 

+

85 entityName = token.Value 

+

86 break 

+

87 else: 

+

88 raise BlockParserException("", None) # FIXME: change to DOMParserException 

+

89 

+

90 oldNode = parserState.CurrentNode 

+

91 architecture = cls(architectureName, entityName) 

+

92 

+

93 parserState.CurrentNode.AddArchitecture(architecture) 

+

94 parserState.CurrentNode = architecture 

+

95 parserState.CurrentNode.AddLibraryReferences(oldNode.Libraries) 

+

96 parserState.CurrentNode.AddUses(oldNode.PackageReferences) 

+

97 

+

98 oldNode.Libraries.clear() 

+

99 oldNode.PackageReferences.clear() 

+

100 

+

101 def AddLibraries(self, libraries): 

+

102 for library in libraries: 

+

103 self._libraryReferences.append(library) 

+

104 

+

105 def AddUses(self, uses): 

+

106 for use in uses: 

+

107 self._packageReferences.append(use) 

+

108 

+

109 

+

110 def Print(self, indent=0): 

+

111 indentation = " "*indent 

+

112 for lib in self._libraryReferences: 

+

113 print("{indent}{DARK_CYAN}LIBRARY{NOCOLOR} {GREEN}{lib}{NOCOLOR};".format(indent=indentation, lib=lib, **Console.Foreground)) 

+

114 for lib, pack, obj in self._packageReferences: 

+

115 print("{indent}{DARK_CYAN}USE {GREEN}{lib}{NOCOLOR}.{GREEN}{pack}{NOCOLOR}.{GREEN}{obj}{NOCOLOR};".format(indent=indentation, lib=lib, pack=pack, obj=obj, **Console.Foreground)) 

+

116 print() 

+

117 print("{indent}{DARK_CYAN}ARCHITECTURE {YELLOW}{name}{NOCOLOR} {DARK_CYAN}OF{NOCOLOR} {GREEN}{entity}{NOCOLOR} {DARK_CYAN}IS{NOCOLOR}".format(indent=indentation, name=self._name, entity=self._entity, **Console.Foreground)) 

+

118 print("{indent}{DARK_CYAN}BEGIN{NOCOLOR}".format(indent=indentation, **Console.Foreground)) 

+

119 print("{indent}{DARK_CYAN}END ARCHITECTURE{NOCOLOR};".format(indent=indentation, name=self._name, **Console.Foreground)) 

+
+ + + diff --git a/coverage/d_9eec94a2c84e7a59_Context_py.html b/coverage/d_9eec94a2c84e7a59_Context_py.html new file mode 100644 index 000000000..33fb4ab99 --- /dev/null +++ b/coverage/d_9eec94a2c84e7a59_Context_py.html @@ -0,0 +1,274 @@ + + + + + Coverage for pyVHDLParser/DocumentModel/DesignUnit/Context.py: 24% + + + + + +
+
+

+ Coverage for pyVHDLParser/DocumentModel/DesignUnit/Context.py: + 24% +

+ +

+ 99 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLModel.DesignUnit import Context as ContextVHDLModel 

+

33 

+

34from pyVHDLParser.Token.Keywords import IdentifierToken 

+

35from pyVHDLParser.Blocks import BlockParserException 

+

36from pyVHDLParser.Blocks.Reference import Context as ContextBlocks 

+

37from pyVHDLParser.Groups import BlockToGroupParser 

+

38from pyVHDLParser.DocumentModel.Reference import LibraryClause, PackageReference 

+

39 

+

40 

+

41DEBUG = True 

+

42 

+

43@export 

+

44class Context(ContextVHDLModel): 

+

45 def __init__(self, contextName): 

+

46 super().__init__(contextName) 

+

47 

+

48 @classmethod 

+

49 def stateParse(cls, document, group): 

+

50 # iterate blocks to find the contexts name 

+

51 for block in group: 

+

52 if isinstance(block, ContextBlocks.NameBlock): 

+

53 for token in block: 

+

54 if isinstance(token, IdentifierToken): 

+

55 contextName = token.Value 

+

56 break 

+

57 else: 

+

58 raise BlockParserException("ContextName not found.", None) # FIXME: change to DOMParserException 

+

59 

+

60 if len(document.Libraries) != 0: 

+

61 raise BlockParserException("A context (library statements) is not allowed for a context declaration.", None) # FIXME: change to DOMParserException 

+

62 if len(document.PackageReferences) != 0: 

+

63 raise BlockParserException("A context (use statements) is not allowed for a context declaration.", None) # FIXME: change to DOMParserException 

+

64 

+

65 context = cls(contextName) 

+

66 print("Found context '{name}'. Adding to current node '{node!s}'.".format(name=contextName, node=document)) 

+

67 document.AddContext(context) 

+

68 break 

+

69 

+

70 

+

71 subGroupIterator = iter(group.GetSubGroups()) 

+

72 # subGroup = next(subGroupIterator) 

+

73 # 

+

74 # if isinstance(subGroup, GenericListGroup): 

+

75 # cls.stateParseGenericList(document, subGroup) 

+

76 # subGroup = next(subGroupIterator) 

+

77 # 

+

78 # if isinstance(subGroup, PortListGroup): 

+

79 # cls.stateParsePortList(document, subGroup) 

+

80 # subGroup = next(subGroupIterator) 

+

81 

+

82 # FIXME: how to check if everthing is consumed? 

+

83 

+

84 

+

85 @classmethod 

+

86 def stateParseGenericList(cls, parserState: BlockToGroupParser): #document, group): 

+

87 assert isinstance(parserState.CurrentGroup, GenericListBlocks.OpenBlock) 

+

88 

+

89 for block in parserState.GroupIterator: 

+

90 if isinstance(block, pyVHDLParser.Blocks.InterfaceObject.InterfaceConstantBlock): 

+

91 cls.stateParseGeneric(parserState) 

+

92 elif isinstance(block, GenericListBlocks.CloseBlock): 

+

93 break 

+

94 else: 

+

95 raise BlockParserException("", None) # FIXME: change to DOMParserException 

+

96 

+

97 parserState.Pop() 

+

98 

+

99 @classmethod 

+

100 def stateParseGeneric(cls, parserState: BlockToGroupParser): #document, group): 

+

101 assert isinstance(parserState.CurrentGroup, pyVHDLParser.Blocks.InterfaceObject.InterfaceConstantBlock) 

+

102 

+

103 tokenIterator = iter(parserState) 

+

104 

+

105 for token in tokenIterator: 

+

106 if isinstance(token, IdentifierToken): 

+

107 genericName = token.Value 

+

108 break 

+

109 else: 

+

110 raise BlockParserException("", None) # FIXME: change to DOMParserException 

+

111 

+

112 parserState.CurrentNode.AddGeneric(genericName) 

+

113 

+

114 @classmethod 

+

115 def stateParsePortList(cls, parserState: BlockToGroupParser): #document, group): 

+

116 assert isinstance(parserState.CurrentGroup, PortListBlocks.OpenBlock) 

+

117 

+

118 for block in parserState.GroupIterator: 

+

119 if isinstance(block, pyVHDLParser.Blocks.InterfaceObject.InterfaceSignalBlock): 

+

120 cls.stateParsePort(parserState) 

+

121 elif isinstance(block, PortListBlocks.CloseBlock): 

+

122 break 

+

123 else: 

+

124 raise BlockParserException("", None) # FIXME: change to DOMParserException 

+

125 

+

126 parserState.Pop() 

+

127 

+

128 @classmethod 

+

129 def stateParsePort(cls, parserState: BlockToGroupParser): #document, group): 

+

130 assert isinstance(parserState.CurrentGroup, pyVHDLParser.Blocks.InterfaceObject.InterfaceSignalBlock) 

+

131 

+

132 tokenIterator = iter(parserState) 

+

133 

+

134 for token in tokenIterator: 

+

135 if isinstance(token, IdentifierToken): 

+

136 portName = token.Value 

+

137 break 

+

138 else: 

+

139 raise BlockParserException("", None) # FIXME: change to DOMParserException 

+

140 

+

141 parserState.CurrentNode.AddPort(portName) 

+

142 

+

143 def AddLibraries(self, libraries): 

+

144 for library in libraries: 

+

145 self._libraries.append(library) 

+

146 

+

147 def AddUses(self, uses): 

+

148 for use in uses: 

+

149 self._packageReferences.append(use) 

+

150 

+

151 def AddGeneric(self, generic): 

+

152 self._genericItems.append(generic) 

+

153 

+

154 def AddPort(self, port): 

+

155 self._portItems.append(port) 

+

156 

+

157 def Print(self, indent=0): 

+

158 indentation = " "*indent 

+

159 for lib in self._libraries: 

+

160 print("{indent}{DARK_CYAN}LIBRARY{NOCOLOR} {GREEN}{lib}{NOCOLOR};".format(indent=indentation, lib=lib, **Console.Foreground)) 

+

161 for lib, pack, obj in self._packageReferences: 

+

162 print("{indent}{DARK_CYAN}USE {GREEN}{lib}{NOCOLOR}.{GREEN}{pack}{NOCOLOR}.{GREEN}{obj}{NOCOLOR};".format(indent=indentation, lib=lib, pack=pack, obj=obj, **Console.Foreground)) 

+

163 print() 

+

164 print("{indent}{DARK_CYAN}ENTITY{NOCOLOR} {YELLOW}{name}{NOCOLOR} {DARK_CYAN}IS{NOCOLOR}".format(name=self._name, indent=indentation, **Console.Foreground)) 

+

165 if len(self._genericItems) > 0: 

+

166 print("{indent} {DARK_CYAN}GENERIC{NOCOLOR} (".format(indent=indentation, **Console.Foreground)) 

+

167 for generic in self._genericItems: 

+

168 print("{indent} {YELLOW}{name}{NOCOLOR} : {GREEN}{type}{NOCOLOR}".format(indent=indentation, name=generic, type="", **Console.Foreground)) 

+

169 print("{indent} );".format(indent=indentation, **Console.Foreground)) 

+

170 if len(self._portItems) > 0: 

+

171 print("{indent} {DARK_CYAN}PORT{NOCOLOR} (".format(indent=indentation, **Console.Foreground)) 

+

172 for port in self._portItems: 

+

173 print("{indent} {YELLOW}{name}{NOCOLOR} : {GREEN}{type}{NOCOLOR}".format(indent=indentation, name=port, type="", **Console.Foreground)) 

+

174 print("{indent} );".format(indent=indentation, **Console.Foreground)) 

+

175 print("{indent}{DARK_CYAN}END ENTITY{NOCOLOR};".format(name=self._name, indent=indentation, **Console.Foreground)) 

+
+ + + diff --git a/coverage/d_9eec94a2c84e7a59_Entity_py.html b/coverage/d_9eec94a2c84e7a59_Entity_py.html new file mode 100644 index 000000000..3a50e80d2 --- /dev/null +++ b/coverage/d_9eec94a2c84e7a59_Entity_py.html @@ -0,0 +1,285 @@ + + + + + Coverage for pyVHDLParser/DocumentModel/DesignUnit/Entity.py: 25% + + + + + +
+
+

+ Coverage for pyVHDLParser/DocumentModel/DesignUnit/Entity.py: + 25% +

+ +

+ 109 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31from typing import List 

+

32 

+

33from pyVHDLModel.DesignUnit import Entity as EntityVHDLModel 

+

34 

+

35from pyVHDLParser.Token.Keywords import IdentifierToken 

+

36from pyVHDLParser.Blocks import BlockParserException 

+

37from pyVHDLParser.Blocks.List import GenericList as GenericListBlocks, PortList as PortListBlocks 

+

38from pyVHDLParser.Blocks.Object.Constant import ConstantDeclarationBlock 

+

39import pyVHDLParser.Blocks.InterfaceObject 

+

40from pyVHDLParser.Blocks.Structural import Entity as EntityBlocks 

+

41from pyVHDLParser.Groups import BlockToGroupParser 

+

42from pyVHDLParser.Groups.List import GenericListGroup, PortListGroup 

+

43from pyVHDLParser.DocumentModel.Reference import LibraryClause, PackageReference 

+

44 

+

45 

+

46DEBUG = True 

+

47 

+

48@export 

+

49class Entity(EntityVHDLModel): 

+

50 def __init__(self, entityName): 

+

51 super().__init__(entityName) 

+

52 

+

53 @classmethod 

+

54 def stateParse(cls, parserState: BlockToGroupParser): #document, group): 

+

55 for block in parserState.CurrentGroup: 

+

56 if isinstance(block, EntityBlocks.NameBlock): 

+

57 for token in block: 

+

58 if isinstance(token, IdentifierToken): 

+

59 entityName = token.Value 

+

60 break 

+

61 else: 

+

62 raise BlockParserException("EntityName not found.", None) # FIXME: change to DOMParserException 

+

63 

+

64 entity = cls(entityName) 

+

65 entity.AddLibraryReferences(document.Libraries) 

+

66 entity.AddUses(document.PackageReferences) 

+

67 

+

68 print("Found library '{0}'. Adding to current node '{1!s}'.".format(entityName, document)) 

+

69 document.AddEntity(entity) 

+

70 break 

+

71 

+

72 subGroupIterator = iter(parserState.CurrentGroup.GetSubGroups()) 

+

73 subGroup = next(subGroupIterator) 

+

74 

+

75 if isinstance(subGroup, GenericListGroup): 

+

76 cls.stateParseGenericList(document, subGroup) 

+

77 subGroup = next(subGroupIterator) 

+

78 

+

79 if isinstance(subGroup, PortListGroup): 

+

80 cls.stateParsePortList(document, subGroup) 

+

81 subGroup = next(subGroupIterator) 

+

82 

+

83 # FIXME entity declarative region 

+

84 # if isinstance(subGroup, ): 

+

85 # cls.stateParsePortList(document, subGroup) 

+

86 # subGroup = next(subGroupIterator) 

+

87 

+

88 # FIXME entity statements 

+

89 # if isinstance(subGroup, ): 

+

90 # cls.stateParsePortList(document, subGroup) 

+

91 # subGroup = next(subGroupIterator) 

+

92 

+

93 # FIXME: how to check if everthing is consumed? 

+

94 

+

95 

+

96 @classmethod 

+

97 def stateParseGenericList(cls, parserState: BlockToGroupParser): #document, group): 

+

98 assert isinstance(parserState.CurrentGroup, GenericListBlocks.OpenBlock) 

+

99 

+

100 for block in parserState.GroupIterator: 

+

101 if isinstance(block, pyVHDLParser.Blocks.InterfaceObject.InterfaceConstantBlock): 

+

102 cls.stateParseGeneric(parserState) 

+

103 elif isinstance(block, GenericListBlocks.CloseBlock): 

+

104 break 

+

105 else: 

+

106 raise BlockParserException("", None) # FIXME: change to DOMParserException 

+

107 

+

108 parserState.Pop() 

+

109 

+

110 @classmethod 

+

111 def stateParseGeneric(cls, parserState: BlockToGroupParser): #document, group): 

+

112 assert isinstance(parserState.CurrentGroup, pyVHDLParser.Blocks.InterfaceObject.InterfaceConstantBlock) 

+

113 

+

114 tokenIterator = iter(parserState) 

+

115 

+

116 for token in tokenIterator: 

+

117 if isinstance(token, IdentifierToken): 

+

118 genericName = token.Value 

+

119 break 

+

120 else: 

+

121 raise BlockParserException("", None) # FIXME: change to DOMParserException 

+

122 

+

123 parserState.CurrentNode.AddGeneric(genericName) 

+

124 

+

125 @classmethod 

+

126 def stateParsePortList(cls, parserState: BlockToGroupParser): #document, group): 

+

127 assert isinstance(parserState.CurrentGroup, PortListBlocks.OpenBlock) 

+

128 

+

129 for block in parserState.GroupIterator: 

+

130 if isinstance(block, pyVHDLParser.Blocks.InterfaceObject.InterfaceSignalBlock): 

+

131 cls.stateParsePort(parserState) 

+

132 elif isinstance(block, PortListBlocks.CloseBlock): 

+

133 break 

+

134 else: 

+

135 raise BlockParserException("", None) # FIXME: change to DOMParserException 

+

136 

+

137 parserState.Pop() 

+

138 

+

139 @classmethod 

+

140 def stateParsePort(cls, parserState: BlockToGroupParser): #document, group): 

+

141 assert isinstance(parserState.CurrentGroup, pyVHDLParser.Blocks.InterfaceObject.InterfaceSignalBlock) 

+

142 

+

143 tokenIterator = iter(parserState) 

+

144 

+

145 for token in tokenIterator: 

+

146 if isinstance(token, IdentifierToken): 

+

147 portName = token.Value 

+

148 break 

+

149 else: 

+

150 raise BlockParserException("", None) # FIXME: change to DOMParserException 

+

151 

+

152 parserState.CurrentNode.AddPort(portName) 

+

153 

+

154 def AddLibraries(self, libraries): 

+

155 for library in libraries: 

+

156 self._libraries.append(library) 

+

157 

+

158 def AddUses(self, uses): 

+

159 for use in uses: 

+

160 self._packageReferences.append(use) 

+

161 

+

162 def AddGeneric(self, generic): 

+

163 self._genericItems.append(generic) 

+

164 

+

165 def AddPort(self, port): 

+

166 self._portItems.append(port) 

+

167 

+

168 def Print(self, indent=0): 

+

169 indentation = " "*indent 

+

170 for lib in self._libraries: 

+

171 print("{indent}{DARK_CYAN}LIBRARY{NOCOLOR} {GREEN}{lib}{NOCOLOR};".format(indent=indentation, lib=lib, **Console.Foreground)) 

+

172 for lib, pack, obj in self._packageReferences: 

+

173 print("{indent}{DARK_CYAN}USE {GREEN}{lib}{NOCOLOR}.{GREEN}{pack}{NOCOLOR}.{GREEN}{obj}{NOCOLOR};".format(indent=indentation, lib=lib, pack=pack, obj=obj, **Console.Foreground)) 

+

174 print() 

+

175 print("{indent}{DARK_CYAN}ENTITY{NOCOLOR} {YELLOW}{name}{NOCOLOR} {DARK_CYAN}IS{NOCOLOR}".format(name=self._name, indent=indentation, **Console.Foreground)) 

+

176 if len(self._genericItems) > 0: 

+

177 print("{indent} {DARK_CYAN}GENERIC{NOCOLOR} (".format(indent=indentation, **Console.Foreground)) 

+

178 for generic in self._genericItems: 

+

179 print("{indent} {YELLOW}{name}{NOCOLOR} : {GREEN}{type}{NOCOLOR}".format(indent=indentation, name=generic, type="", **Console.Foreground)) 

+

180 print("{indent} );".format(indent=indentation, **Console.Foreground)) 

+

181 if len(self._portItems) > 0: 

+

182 print("{indent} {DARK_CYAN}PORT{NOCOLOR} (".format(indent=indentation, **Console.Foreground)) 

+

183 for port in self._portItems: 

+

184 print("{indent} {YELLOW}{name}{NOCOLOR} : {GREEN}{type}{NOCOLOR}".format(indent=indentation, name=port, type="", **Console.Foreground)) 

+

185 print("{indent} );".format(indent=indentation, **Console.Foreground)) 

+

186 print("{indent}{DARK_CYAN}END ENTITY{NOCOLOR};".format(name=self._name, indent=indentation, **Console.Foreground)) 

+
+ + + diff --git a/coverage/d_9eec94a2c84e7a59_PackageBody_py.html b/coverage/d_9eec94a2c84e7a59_PackageBody_py.html new file mode 100644 index 000000000..a36a780b5 --- /dev/null +++ b/coverage/d_9eec94a2c84e7a59_PackageBody_py.html @@ -0,0 +1,289 @@ + + + + + Coverage for pyVHDLParser/DocumentModel/DesignUnit/PackageBody.py: 25% + + + + + +
+
+

+ Coverage for pyVHDLParser/DocumentModel/DesignUnit/PackageBody.py: + 25% +

+ +

+ 121 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from typing import List 

+

31 

+

32from pyTooling.Decorators import export 

+

33from pyVHDLModel.DesignUnit import PackageBody as PackageBodyVHDLModel 

+

34 

+

35import pyVHDLParser.Blocks.InterfaceObject 

+

36from pyVHDLParser.Token.Keywords import IdentifierToken 

+

37from pyVHDLParser.Blocks import BlockParserException 

+

38from pyVHDLParser.Blocks.List import GenericList as GenericListBlocks, PortList as PortListBlocks 

+

39from pyVHDLParser.Blocks.Object.Constant import ConstantDeclarationBlock 

+

40from pyVHDLParser.Blocks.Sequential import PackageBody as PackageBodyBlock 

+

41from pyVHDLParser.Groups import BlockToGroupParser 

+

42from pyVHDLParser.DocumentModel.Reference import LibraryClause, PackageReference 

+

43 

+

44 

+

45DEBUG = True 

+

46 

+

47@export 

+

48class PackageBody(PackageBodyVHDLModel): 

+

49 def __init__(self, packageBodyName): 

+

50 super().__init__() 

+

51 self._name = packageBodyName 

+

52 

+

53 @classmethod 

+

54 def stateParse(cls, parserState: BlockToGroupParser): #document, group): 

+

55 assert isinstance(parserState.CurrentGroup, PackageBodyBlock.NameBlock) 

+

56 cls.stateParsePackageBodyName(parserState) 

+

57 

+

58 for block in parserState.GroupIterator: 

+

59 if isinstance(block, GenericListBlocks.OpenBlock): 

+

60 parserState.PushState = cls.stateParseGenericList 

+

61 parserState.ReIssue() 

+

62 elif isinstance(block, PortListBlocks.OpenBlock): 

+

63 parserState.PushState = cls.stateParsePortList 

+

64 parserState.ReIssue() 

+

65 elif isinstance(block, ConstantBlock): 

+

66 parserState.PushState = Constant.stateParse 

+

67 parserState.ReIssue() 

+

68 elif isinstance(block, Function.BeginBlock): 

+

69 parserState.PushState = Function.stateParse 

+

70 parserState.ReIssue() 

+

71 elif isinstance(block, PackageBodyBlock.EndBlock): 

+

72 break 

+

73 else: 

+

74 raise BlockParserException("Block '{0!r}' not supported in a package body.".format(block), block) # FIXME: change to DOMParserException 

+

75 else: 

+

76 raise BlockParserException("", None) # FIXME: change to DOMParserException 

+

77 

+

78 parserState.Pop() 

+

79 # parserState.CurrentBlock = None 

+

80 

+

81 @classmethod 

+

82 def stateParsePackageBodyName(cls, parserState: BlockToGroupParser): #document, group): 

+

83 assert isinstance(parserState.CurrentGroup, PackageBodyBlock.NameBlock) 

+

84 

+

85 tokenIterator = iter(parserState) 

+

86 

+

87 for token in tokenIterator: 

+

88 if isinstance(token, IdentifierToken): 

+

89 packageName = token.Value 

+

90 break 

+

91 else: 

+

92 raise BlockParserException("", None) # FIXME: change to DOMParserException 

+

93 

+

94 oldNode = parserState.CurrentNode 

+

95 packageBody = cls(packageName) 

+

96 

+

97 parserState.CurrentNode.AddPackageBody(packageBody) 

+

98 parserState.CurrentNode = packageBody 

+

99 parserState.CurrentNode.AddLibraryReferences(oldNode.Libraries) 

+

100 parserState.CurrentNode.AddUses(oldNode.PackageReferences) 

+

101 

+

102 oldNode.Libraries.clear() 

+

103 oldNode.PackageReferences.clear() 

+

104 

+

105 @classmethod 

+

106 def stateParseGenericList(cls, parserState: BlockToGroupParser): #document, group): 

+

107 assert isinstance(parserState.CurrentGroup, GenericListBlocks.OpenBlock) 

+

108 

+

109 for block in parserState.GroupIterator: 

+

110 if isinstance(block, pyVHDLParser.Blocks.InterfaceObject.InterfaceConstantBlock): 

+

111 cls.stateParseGeneric(parserState) 

+

112 elif isinstance(block, GenericListBlocks.CloseBlock): 

+

113 break 

+

114 else: 

+

115 raise BlockParserException("", None) # FIXME: change to DOMParserException 

+

116 

+

117 parserState.Pop() 

+

118 

+

119 @classmethod 

+

120 def stateParseGeneric(cls, parserState: BlockToGroupParser): #document, group): 

+

121 assert isinstance(parserState.CurrentGroup, pyVHDLParser.Blocks.InterfaceObject.InterfaceConstantBlock) 

+

122 

+

123 tokenIterator = iter(parserState) 

+

124 

+

125 for token in tokenIterator: 

+

126 if isinstance(token, IdentifierToken): 

+

127 genericName = token.Value 

+

128 break 

+

129 else: 

+

130 raise BlockParserException("", None) # FIXME: change to DOMParserException 

+

131 

+

132 parserState.CurrentNode.AddGeneric(genericName) 

+

133 

+

134 @classmethod 

+

135 def stateParsePortList(cls, parserState: BlockToGroupParser): #document, group): 

+

136 assert isinstance(parserState.CurrentGroup, PortListBlocks.OpenBlock) 

+

137 

+

138 for block in parserState.GroupIterator: 

+

139 if isinstance(block, pyVHDLParser.Blocks.InterfaceObject.InterfaceSignalBlock): 

+

140 cls.stateParsePort(parserState) 

+

141 elif isinstance(block, PortListBlocks.CloseBlock): 

+

142 break 

+

143 else: 

+

144 raise BlockParserException("", None) # FIXME: change to DOMParserException 

+

145 

+

146 parserState.Pop() 

+

147 

+

148 @classmethod 

+

149 def stateParsePort(cls, parserState: BlockToGroupParser): #document, group): 

+

150 assert isinstance(parserState.CurrentGroup, pyVHDLParser.Blocks.InterfaceObject.InterfaceSignalBlock) 

+

151 

+

152 tokenIterator = iter(parserState) 

+

153 

+

154 for token in tokenIterator: 

+

155 if isinstance(token, IdentifierToken): 

+

156 portName = token.Value 

+

157 break 

+

158 else: 

+

159 raise BlockParserException("", None) # FIXME: change to DOMParserException 

+

160 

+

161 parserState.CurrentNode.AddPort(portName) 

+

162 

+

163 def AddLibraries(self, libraries: List[LibraryClause]): 

+

164 if (DEBUG is True) and (len(libraries) > 0): print("{DARK_CYAN}Adding libraries to package body {GREEN}{0}{NOCOLOR}:".format(self._name, **Console.Foreground)) 

+

165 for library in libraries: 

+

166 if DEBUG: print(" {GREEN}{0!s}{NOCOLOR}".format(library, **Console.Foreground)) 

+

167 self._libraries.append(library._library) 

+

168 

+

169 def AddUses(self, uses: List[PackageReference]): 

+

170 if (DEBUG is True) and (len(uses) > 0): print("{DARK_CYAN}Adding uses to package body {GREEN}{0}{NOCOLOR}:".format(self._name, **Console.Foreground)) 

+

171 for use in uses: 

+

172 if DEBUG: print(" {GREEN}{0!s}{NOCOLOR}".format(use, **Console.Foreground)) 

+

173 self._packageReferences.append(use) 

+

174 

+

175 def AddConstant(self, constant): 

+

176 if DEBUG: print("{DARK_CYAN}Adding constant to package body {GREEN}{0}{NOCOLOR}:\n {1!s}".format(self._name, constant, **Console.Foreground)) 

+

177 self._declaredItems.append(constant) 

+

178 

+

179 def Print(self, indent=0): 

+

180 indentation = " "*indent 

+

181 for lib in self._libraries: 

+

182 print("{indent}{DARK_CYAN}LIBRARY{NOCOLOR} {GREEN}{lib}{NOCOLOR};".format(indent=indentation, lib=lib, **Console.Foreground)) 

+

183 for lib, pack, obj in self._packageReferences: 

+

184 print("{indent}{DARK_CYAN}USE {GREEN}{lib}{NOCOLOR}.{GREEN}{pack}{NOCOLOR}.{GREEN}{obj}{NOCOLOR};".format(indent=indentation, lib=lib, pack=pack, obj=obj, **Console.Foreground)) 

+

185 print() 

+

186 print("{indent}{DARK_CYAN}PACKAGE BODY{NOCOLOR} {GREEN}{name}{NOCOLOR} {DARK_CYAN}IS{NOCOLOR}".format(indent=indentation, name=self._name, **Console.Foreground)) 

+

187 if len(self._declaredItems) > 0: 

+

188 for item in self._declaredItems: 

+

189 item.Print(indent+1) 

+

190 print("{indent}{DARK_CYAN}END PACKAGE BODY{NOCOLOR};".format(indent=indentation, name=self._name, **Console.Foreground)) 

+
+ + + diff --git a/coverage/d_9eec94a2c84e7a59_Package_py.html b/coverage/d_9eec94a2c84e7a59_Package_py.html new file mode 100644 index 000000000..d737ecae0 --- /dev/null +++ b/coverage/d_9eec94a2c84e7a59_Package_py.html @@ -0,0 +1,273 @@ + + + + + Coverage for pyVHDLParser/DocumentModel/DesignUnit/Package.py: 26% + + + + + +
+
+

+ Coverage for pyVHDLParser/DocumentModel/DesignUnit/Package.py: + 26% +

+ +

+ 113 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31from typing import List 

+

32 

+

33from pyVHDLModel.DesignUnit import Package as PackageVHDLModel 

+

34 

+

35import pyVHDLParser.Blocks.InterfaceObject 

+

36from pyVHDLParser.Token.Keywords import IdentifierToken 

+

37from pyVHDLParser.Blocks import BlockParserException 

+

38from pyVHDLParser.Blocks.List import GenericList as GenericListBlocks 

+

39from pyVHDLParser.Blocks.Object.Constant import ConstantDeclarationBlock 

+

40from pyVHDLParser.Blocks.Sequential import Package as PackageBlock 

+

41from pyVHDLParser.Groups import BlockToGroupParser 

+

42from pyVHDLParser.Groups.List import GenericListGroup 

+

43from pyVHDLParser.DocumentModel.Reference import LibraryClause, PackageReference 

+

44 

+

45 

+

46DEBUG = True 

+

47 

+

48@export 

+

49class Package(PackageVHDLModel): 

+

50 def __init__(self, packageName): 

+

51 super().__init__() 

+

52 self._name = packageName 

+

53 

+

54 @classmethod 

+

55 def stateParse(cls, document, group): 

+

56 assert isinstance(group, PackageBlock.NameBlock) 

+

57 cls.stateParsePackageName(parserState) 

+

58 

+

59 for block in group: 

+

60 if isinstance(block, GenericListBlocks.OpenBlock): 

+

61 parserState.PushState = cls.stateParseGenericList 

+

62 parserState.ReIssue() 

+

63 elif isinstance(block, ConstantBlock): 

+

64 parserState.PushState = Constant.stateParse 

+

65 parserState.ReIssue() 

+

66 elif isinstance(block, FunctionBlock.NameBlock): 

+

67 parserState.PushState = Function.stateParse 

+

68 parserState.ReIssue() 

+

69 elif isinstance(block, PackageBlock.EndBlock): 

+

70 break 

+

71 else: 

+

72 raise BlockParserException("Block '{0!r}' not supported in a package.".format(block), block) # FIXME: change to DOMParserException 

+

73 else: 

+

74 raise BlockParserException("", None) # FIXME: change to DOMParserException 

+

75 

+

76 parserState.Pop() 

+

77 # parserState.CurrentBlock = None 

+

78 

+

79 @classmethod 

+

80 def stateParsePackageName(cls, parserState: BlockToGroupParser): #document, group): 

+

81 assert isinstance(parserState.CurrentGroup, PackageBlock.NameBlock) 

+

82 

+

83 tokenIterator = iter(parserState) 

+

84 for token in tokenIterator: 

+

85 if isinstance(token, IdentifierToken): 

+

86 packageName = token.Value 

+

87 break 

+

88 else: 

+

89 raise BlockParserException("", None) # FIXME: change to DOMParserException 

+

90 

+

91 oldNode = parserState.CurrentNode 

+

92 package = cls(packageName) 

+

93 

+

94 parserState.CurrentNode.AddPackage(package) 

+

95 parserState.CurrentNode = package 

+

96 parserState.CurrentNode.AddLibraryReferences(oldNode.Libraries) 

+

97 parserState.CurrentNode.AddUses(oldNode.PackageReferences) 

+

98 

+

99 oldNode.Libraries.clear() 

+

100 oldNode.PackageReferences.clear() 

+

101 

+

102 @classmethod 

+

103 def stateParseGenericList(cls, parserState: BlockToGroupParser): #document, group): 

+

104 assert isinstance(parserState.CurrentGroup, GenericListBlocks.OpenBlock) 

+

105 

+

106 for block in parserState.GroupIterator: 

+

107 if isinstance(block, pyVHDLParser.Blocks.InterfaceObject.InterfaceConstantBlock): 

+

108 cls.stateParseGeneric(parserState) 

+

109 elif isinstance(block, GenericListBlocks.CloseBlock): 

+

110 break 

+

111 else: 

+

112 raise BlockParserException("", None) # FIXME: change to DOMParserException 

+

113 

+

114 parserState.Pop() 

+

115 

+

116 @classmethod 

+

117 def stateParseGeneric(cls, parserState: BlockToGroupParser): #document, group): 

+

118 assert isinstance(parserState.CurrentGroup, pyVHDLParser.Blocks.InterfaceObject.InterfaceConstantBlock) 

+

119 

+

120 tokenIterator = iter(parserState) 

+

121 for token in tokenIterator: 

+

122 if isinstance(token, IdentifierToken): 

+

123 genericName = token.Value 

+

124 break 

+

125 else: 

+

126 raise BlockParserException("", None) # FIXME: change to DOMParserException 

+

127 

+

128 parserState.CurrentNode.AddGeneric(genericName) 

+

129 

+

130 def AddLibraryReferences(self, libraries : List[LibraryClause]): 

+

131 if (DEBUG is True) and (len(libraries) > 0): print("{DARK_CYAN}Adding libraries to package {GREEN}{0}{NOCOLOR}:".format(self._name, **Console.Foreground)) 

+

132 for library in libraries: 

+

133 if DEBUG: print(" {GREEN}{0!s}{NOCOLOR}".format(library, **Console.Foreground)) 

+

134 self._libraryReferences.append(library._library) 

+

135 

+

136 def AddUses(self, uses : List[PackageReference]): 

+

137 if (DEBUG is True) and (len(uses) > 0): print("{DARK_CYAN}Adding uses to package {GREEN}{0}{NOCOLOR}:".format(self._name, **Console.Foreground)) 

+

138 for use in uses: 

+

139 if DEBUG: print(" {GREEN}{0!s}{NOCOLOR}".format(use, **Console.Foreground)) 

+

140 self._packageReferences.append(use) 

+

141 

+

142 def AddGeneric(self, generic): 

+

143 if DEBUG: print("{DARK_CYAN}Adding generic to package {GREEN}{0}{NOCOLOR}:\n {YELLOW}{1}{NOCOLOR} : {2}".format(self._name, generic, "", **Console.Foreground)) 

+

144 self._genericItems.append(generic) 

+

145 

+

146 def AddConstant(self, constant): 

+

147 if DEBUG: print("{DARK_CYAN}Adding constant to package {GREEN}{0}{NOCOLOR}:\n {1!s}".format(self._name, constant, **Console.Foreground)) 

+

148 self._declaredItems.append(constant) 

+

149 

+

150 def AddFunction(self, function): 

+

151 if DEBUG: print("{DARK_CYAN}Adding function to package {GREEN}{0}{NOCOLOR}:\n {1!s}".format(self._name, function, **Console.Foreground)) 

+

152 self._declaredItems.append(function) 

+

153 

+

154 def AddProcedure(self, procedure): 

+

155 if DEBUG: print("{DARK_CYAN}Adding procedure to package {GREEN}{0}{NOCOLOR}:\n {1!s}".format(self._name, procedure, **Console.Foreground)) 

+

156 self._declaredItems.append(procedure) 

+

157 

+

158 def Print(self, indent=0): 

+

159 indentation = " "*indent 

+

160 for lib in self._libraries: 

+

161 print("{indent}{DARK_CYAN}LIBRARY{NOCOLOR} {GREEN}{lib}{NOCOLOR};".format(indent=indentation, lib=lib, **Console.Foreground)) 

+

162 for use in self._packageReferences: 

+

163 print("{indent}{DARK_CYAN}USE {GREEN}{lib}{NOCOLOR}.{GREEN}{pack}{NOCOLOR}.{GREEN}{item}{NOCOLOR};".format(indent=indentation, lib=use._library, pack=use._package, item=use._item, **Console.Foreground)) 

+

164 print() 

+

165 print("{indent}{DARK_CYAN}PACKAGE{NOCOLOR} {YELLOW}{name}{NOCOLOR} {DARK_CYAN}IS{NOCOLOR}".format(indent=indentation, name=self._name, **Console.Foreground)) 

+

166 if len(self._genericItems) > 0: 

+

167 print("{indent} {DARK_CYAN}GENERIC{NOCOLOR} (".format(indent=indentation, **Console.Foreground)) 

+

168 for generic in self._genericItems: 

+

169 print("{indent} {YELLOW}{name}{NOCOLOR} : {GREEN}{type}{NOCOLOR}".format(indent=indentation, name=generic, type="", **Console.Foreground)) 

+

170 print("{indent} );".format(indent=indentation)) 

+

171 if len(self._declaredItems) > 0: 

+

172 for item in self._declaredItems: 

+

173 item.Print(indent+1) 

+

174 print("{indent}{DARK_CYAN}END PACKAGE{NOCOLOR};".format(indent=indentation, name=self._name, **Console.Foreground)) 

+
+ + + diff --git a/coverage/d_c650c0c44533ccba_Comment_py.html b/coverage/d_c650c0c44533ccba_Comment_py.html new file mode 100644 index 000000000..693d4d752 --- /dev/null +++ b/coverage/d_c650c0c44533ccba_Comment_py.html @@ -0,0 +1,212 @@ + + + + + Coverage for pyVHDLParser/Blocks/Comment.py: 0% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/Comment.py: + 0% +

+ +

+ 65 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Token import CharacterToken, SpaceToken, IndentationToken 

+

33from pyVHDLParser.Token.Keywords import SingleLineCommentKeyword, MultiLineCommentStartKeyword, MultiLineCommentEndKeyword 

+

34from pyVHDLParser.Blocks import CommentBlock, TokenToBlockParser 

+

35from pyVHDLParser.Blocks.Common import IndentationBlock 

+

36 

+

37 

+

38@export 

+

39class SingleLineCommentBlock(CommentBlock): 

+

40 @classmethod 

+

41 def statePossibleCommentStart(cls, parserState: TokenToBlockParser): 

+

42 token = parserState.Token 

+

43 if isinstance(token, CharacterToken) and (token == "-"): 

+

44 parserState.NewToken = SingleLineCommentKeyword(parserState.TokenMarker) 

+

45 parserState.TokenMarker = parserState.NewToken 

+

46 parserState.NextState = cls.stateConsumeComment 

+

47 return 

+

48 

+

49 raise NotImplementedError("State=PossibleCommentStart: {0!r}".format(token)) 

+

50 

+

51 @classmethod 

+

52 def stateConsumeComment(cls, parserState: TokenToBlockParser): 

+

53 token = parserState.Token 

+

54 if isinstance(token, CharacterToken)and (token == "\n"): 

+

55 parserState.NewBlock = SingleLineCommentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.Token) 

+

56 parserState.NextState = cls.stateLinebreak 

+

57 return 

+

58 else: 

+

59 pass # consume everything until "\n" 

+

60 

+

61 @classmethod 

+

62 def stateLinebreak(cls, parserState: TokenToBlockParser): 

+

63 token = parserState.Token 

+

64 if isinstance(token, SpaceToken): 

+

65 parserState.NewToken = IndentationToken(fromExistingToken=token) 

+

66 parserState.NewBlock = IndentationBlock(parserState.LastBlock, parserState.NewToken) 

+

67 parserState.Pop() 

+

68 else: 

+

69 parserState.Pop() 

+

70 if parserState.TokenMarker is None: 

+

71 # print(" new marker: None -> {0!s}".format(token)) 

+

72 parserState.TokenMarker = token 

+

73 # print(" {DARK_GREEN}re-issue: {GREEN}{state!s} {DARK_GREEN}token={GREEN}{token}{NOCOLOR}".format(state=parserState, token=parserState.Token, **Console.Foreground)) 

+

74 parserState.NextState(parserState) 

+

75 

+

76 

+

77@export 

+

78class MultiLineCommentBlock(CommentBlock): 

+

79 @classmethod 

+

80 def statePossibleCommentStart(cls, parserState: TokenToBlockParser): 

+

81 token = parserState.Token 

+

82 if isinstance(token, CharacterToken) and (token == "*"): 

+

83 parserState.NewToken = MultiLineCommentStartKeyword(parserState.TokenMarker) 

+

84 parserState.TokenMarker = parserState.NewToken 

+

85 parserState.NextState = cls.stateConsumeComment 

+

86 return 

+

87 else: 

+

88 parserState.Pop() 

+

89 # print(" {DARK_GREEN}re-issue: {GREEN}{state!s} {DARK_GREEN}token={GREEN}{token}{NOCOLOR}".format(state=parserState, token=parserState.Token, **Console.Foreground)) 

+

90 parserState.NextState(parserState) 

+

91 

+

92 @classmethod 

+

93 def stateConsumeComment(cls, parserState: TokenToBlockParser): 

+

94 token = parserState.Token 

+

95 if isinstance(token, CharacterToken) and (token == "*"): 

+

96 parserState.PushState = cls.statePossibleCommentEnd 

+

97 parserState.TokenMarker = token 

+

98 return 

+

99 else: 

+

100 pass # consume everything until "*/" 

+

101 

+

102 @classmethod 

+

103 def statePossibleCommentEnd(cls, parserState: TokenToBlockParser): 

+

104 token = parserState.Token 

+

105 if isinstance(token, CharacterToken) and (token == "/"): 

+

106 parserState.NewToken = MultiLineCommentEndKeyword(parserState.TokenMarker) 

+

107 parserState.Pop() 

+

108 parserState.NewBlock = MultiLineCommentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

109 parserState.Pop() 

+

110 return 

+

111 else: 

+

112 parserState.Pop() 

+

113 parserState.NextState(parserState) 

+
+ + + diff --git a/coverage/d_c650c0c44533ccba_Common_py.html b/coverage/d_c650c0c44533ccba_Common_py.html new file mode 100644 index 000000000..881965ff1 --- /dev/null +++ b/coverage/d_c650c0c44533ccba_Common_py.html @@ -0,0 +1,189 @@ + + + + + Coverage for pyVHDLParser/Blocks/Common.py: 60% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/Common.py: + 60% +

+ +

+ 32 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Token import SpaceToken, IndentationToken 

+

33from pyVHDLParser.Blocks import TokenToBlockParser, SkipableBlock 

+

34 

+

35 

+

36@export 

+

37class WhitespaceBlock(SkipableBlock): 

+

38 def __init__(self, previousBlock, startToken): 

+

39 super().__init__(previousBlock, startToken, startToken) 

+

40 

+

41 def __repr__(self): 

+

42 return "[{blockName: <50s} {stream} at {start!s} .. {end!s}]".format( 

+

43 blockName=type(self).__name__, 

+

44 stream=" "*61, 

+

45 start=self.StartToken.Start, 

+

46 end=self.EndToken.End 

+

47 ) 

+

48 

+

49 

+

50@export 

+

51class LinebreakBlock(WhitespaceBlock): 

+

52 @classmethod 

+

53 def stateLinebreak(cls, parserState: TokenToBlockParser): 

+

54 token = parserState.Token 

+

55 if isinstance(token, SpaceToken): 

+

56 parserState.NewToken = IndentationToken(fromExistingToken=token) 

+

57 parserState.NewBlock = IndentationBlock(parserState.LastBlock, parserState.NewToken) 

+

58 parserState.Pop() 

+

59 # print(" {GREEN}continue: {0!s}{NOCOLOR}".format(parserState, **Console.Foreground)) 

+

60 else: 

+

61 parserState.Pop() 

+

62 if parserState.TokenMarker is None: 

+

63 # print(" {DARK_GREEN}set marker: {GREEN}LinebreakBlock.stateLinebreak {DARK_GREEN}marker {GREEN}{0!s}{NOCOLOR}".format(token, **Console.Foreground)) 

+

64 parserState.TokenMarker = token 

+

65 # print(" {DARK_GREEN}re-issue: {GREEN}{state!s: <20s} {DARK_GREEN}token {GREEN}{token}{NOCOLOR}".format(state=parserState, token=parserState.Token, **Console.Foreground)) 

+

66 parserState.NextState(parserState) 

+

67 

+

68 

+

69@export 

+

70class EmptyLineBlock(LinebreakBlock): 

+

71 pass 

+

72 

+

73 

+

74@export 

+

75class IndentationBlock(WhitespaceBlock): 

+

76 __TABSIZE__ = 2 

+

77 

+

78 def __repr__(self): 

+

79 length = len(self.StartToken.Value) 

+

80 actual = sum([(self.__TABSIZE__ if (c == "\t") else 1) for c in self.StartToken.Value]) 

+

81 

+

82 return "[{blockName: <50s} length={len: <53} at {start!s} .. {end!s}]".format( 

+

83 blockName=type(self).__name__, 

+

84 len="{len} ({actual}) ".format( 

+

85 len=length, 

+

86 actual=actual 

+

87 ), 

+

88 start=self.StartToken.Start, 

+

89 end=self.EndToken.End 

+

90 ) 

+
+ + + diff --git a/coverage/d_c650c0c44533ccba_Expression_py.html b/coverage/d_c650c0c44533ccba_Expression_py.html new file mode 100644 index 000000000..708928305 --- /dev/null +++ b/coverage/d_c650c0c44533ccba_Expression_py.html @@ -0,0 +1,913 @@ + + + + + Coverage for pyVHDLParser/Blocks/Expression.py: 13% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/Expression.py: + 13% +

+ +

+ 667 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Token import FusedCharacterToken, CharacterToken, WordToken, LiteralToken, SpaceToken, LinebreakToken 

+

33from pyVHDLParser.Token import CommentToken, Token, MultiLineCommentToken, IndentationToken, SingleLineCommentToken 

+

34from pyVHDLParser.Token.Keywords import EqualOperator, PlusOperator, MinusOperator, MultiplyOperator, DivideOperator, ConcatOperator, LessThanOperator 

+

35from pyVHDLParser.Token.Keywords import GreaterThanOperator, DelimiterToken, PowerOperator, UnequalOperator, LessThanOrEqualOperator 

+

36from pyVHDLParser.Token.Keywords import GreaterThanOrEqualOperator, MatchingEqualOperator, MatchingUnequalOperator, MatchingLessThanOperator 

+

37from pyVHDLParser.Token.Keywords import MatchingLessThanOrEqualOperator, MatchingGreaterThanOperator, MatchingGreaterThanOrEqualOperator, OrOperator 

+

38from pyVHDLParser.Token.Keywords import NorOperator, AndOperator, NandOperator, XorOperator, XnorOperator, SlaOperator, SllOperator, SraOperator, SrlOperator 

+

39from pyVHDLParser.Token.Keywords import NotOperator, AbsOperator, OpeningRoundBracketToken, BoundaryToken, ClosingRoundBracketToken, IdentifierToken 

+

40from pyVHDLParser.Token.Keywords import LoopKeyword, ToKeyword, DowntoKeyword, EndToken 

+

41from pyVHDLParser.Blocks import Block, TokenToBlockParser, BlockParserException, CommentBlock 

+

42from pyVHDLParser.Blocks.Common import LinebreakBlock, WhitespaceBlock 

+

43 

+

44 

+

45@export 

+

46class ExpressionBlock(Block): 

+

47 CHARACTER_TRANSLATION = { 

+

48 "=": EqualOperator, 

+

49 "+": PlusOperator, 

+

50 "-": MinusOperator, 

+

51 "*": MultiplyOperator, 

+

52 "/": DivideOperator, 

+

53 "&": ConcatOperator, 

+

54 "<": LessThanOperator, 

+

55 ">": GreaterThanOperator, 

+

56 ",": DelimiterToken 

+

57 # ";": EndToken 

+

58 } 

+

59 FUSED_CHARACTER_TRANSLATION = { 

+

60 "**": PowerOperator, 

+

61 "/=": UnequalOperator, 

+

62 "<=": LessThanOrEqualOperator, 

+

63 ">=": GreaterThanOrEqualOperator, 

+

64 "?=": MatchingEqualOperator, 

+

65 "?/=": MatchingUnequalOperator, 

+

66 "?<": MatchingLessThanOperator, 

+

67 "?<=": MatchingLessThanOrEqualOperator, 

+

68 "?>": MatchingGreaterThanOperator, 

+

69 "?>=": MatchingGreaterThanOrEqualOperator 

+

70 # "=>": MapAssociationKeyword, 

+

71 # "<=>": SignalAssociationKeyword 

+

72 } 

+

73 OPERATOR_TRANSLATIONS = { 

+

74 "or": OrOperator, 

+

75 "nor": NorOperator, 

+

76 "and": AndOperator, 

+

77 "nand": NandOperator, 

+

78 "xor": XorOperator, 

+

79 "xnor": XnorOperator, 

+

80 "sla": SlaOperator, 

+

81 "sll": SllOperator, 

+

82 "sra": SraOperator, 

+

83 "srl": SrlOperator, 

+

84 "not": NotOperator, 

+

85 "abs": AbsOperator 

+

86 } 

+

87 

+

88 

+

89@export 

+

90class ExpressionBlockEndedByCharORClosingRoundBracket(ExpressionBlock): 

+

91 EXIT_CHAR: str 

+

92 EXIT_TOKEN: Token 

+

93 EXIT_BLOCK: Block 

+

94 

+

95 @classmethod 

+

96 def stateBeforeExpression(cls, parserState: TokenToBlockParser): 

+

97 token = parserState.Token 

+

98 if isinstance(token, CharacterToken): 

+

99 if token == "(": 

+

100 parserState.NewToken = OpeningRoundBracketToken(fromExistingToken=token) 

+

101 parserState.Counter += 1 

+

102 parserState.NextState = cls.stateExpression 

+

103 return 

+

104 else: 

+

105 parserState.NewToken = cls.CHARACTER_TRANSLATION[token.Value](fromExistingToken=token) 

+

106 parserState.NextState = cls.stateExpression 

+

107 return 

+

108 elif isinstance(token, WordToken): 

+

109 try: 

+

110 parserState.NewToken = cls.OPERATOR_TRANSLATIONS[token.Value](fromExistingToken=token) 

+

111 except KeyError: 

+

112 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

113 parserState.NextState = cls.stateExpression 

+

114 return 

+

115 elif isinstance(token, LiteralToken): 

+

116 parserState.NextState = cls.stateExpression 

+

117 return 

+

118 elif isinstance(token, LinebreakToken): 

+

119 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

120 parserState.TokenMarker = None 

+

121 return 

+

122 elif isinstance(token, CommentToken): 

+

123 parserState.NewBlock = CommentBlock(parserState.NewBlock, token) 

+

124 parserState.TokenMarker = None 

+

125 return 

+

126 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

127 return 

+

128 elif isinstance(token, SpaceToken): 

+

129 parserState.NextState = cls.stateWhitespace1 

+

130 return 

+

131 

+

132 raise BlockParserException("Expected '(', unary operator, identifier, literal or whitespace.", token) 

+

133 

+

134 @classmethod 

+

135 def stateExpression(cls, parserState: TokenToBlockParser): 

+

136 token = parserState.Token 

+

137 if isinstance(token, FusedCharacterToken): 

+

138 try: 

+

139 parserState.NewToken = cls.FUSED_CHARACTER_TRANSLATION[token.Value](fromExistingToken=token) 

+

140 return 

+

141 except KeyError: 

+

142 if token == cls.EXIT_CHAR: 

+

143 if parserState.Counter == 0: 

+

144 parserState.NewToken = cls.EXIT_TOKEN(fromExistingToken=token) 

+

145 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

146 _ = cls.EXIT_BLOCK(parserState.NewBlock, parserState.NewToken, endToken=parserState.NewToken) 

+

147 parserState.Pop(2) 

+

148 return 

+

149 else: 

+

150 raise BlockParserException("Mismatch in opening and closing parenthesis. Counter={0}".format(parserState.Counter), token) 

+

151 elif isinstance(token, CharacterToken): 

+

152 if token == cls.EXIT_CHAR: 

+

153 if parserState.Counter == 0: 

+

154 parserState.NewToken = cls.EXIT_TOKEN(fromExistingToken=token) 

+

155 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

156 _ = cls.EXIT_BLOCK(parserState.NewBlock, parserState.NewToken, endToken=parserState.NewToken) 

+

157 parserState.Pop(2) 

+

158 return 

+

159 else: 

+

160 raise BlockParserException("Mismatch in opening and closing parenthesis. Counter={0}".format(parserState.Counter), token) 

+

161 elif token == "(": 

+

162 parserState.NewToken = OpeningRoundBracketToken(fromExistingToken=token) 

+

163 parserState.Counter += 1 

+

164 return 

+

165 elif token == ")": 

+

166 if parserState.Counter == 0: 

+

167 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

168 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

169 parserState.Pop(3, parserState.NewToken) 

+

170 return 

+

171 else: 

+

172 parserState.NewToken = ClosingRoundBracketToken(fromExistingToken=token) 

+

173 parserState.Counter -= 1 

+

174 return 

+

175 else: 

+

176 parserState.NewToken = cls.CHARACTER_TRANSLATION[token.Value](fromExistingToken=token) 

+

177 return 

+

178 elif isinstance(token, WordToken): 

+

179 try: 

+

180 parserState.NewToken = cls.OPERATOR_TRANSLATIONS[token.Value](fromExistingToken=token) 

+

181 except KeyError: 

+

182 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

183 return 

+

184 elif isinstance(token, LiteralToken): 

+

185 return 

+

186 elif isinstance(token, SpaceToken): 

+

187 parserState.NextState = cls.stateWhitespace1 

+

188 return 

+

189 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

190 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

191 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

192 _ = block(parserState.NewBlock, token) 

+

193 parserState.TokenMarker = None 

+

194 parserState.NextState = cls.stateWhitespace1 

+

195 return 

+

196 

+

197 raise BlockParserException("Expected ?????????????.", token) 

+

198 

+

199 @classmethod 

+

200 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

201 token = parserState.Token 

+

202 if isinstance(token, FusedCharacterToken): 

+

203 try: 

+

204 parserState.NewToken = cls.FUSED_CHARACTER_TRANSLATION[token.Value](fromExistingToken=token) 

+

205 parserState.NextState = cls.stateExpression 

+

206 return 

+

207 except KeyError: 

+

208 if token == cls.EXIT_CHAR: 

+

209 if parserState.Counter == 0: 

+

210 parserState.NewToken = cls.EXIT_TOKEN(fromExistingToken=token) 

+

211 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

212 _ = cls.EXIT_BLOCK(parserState.NewBlock, parserState.NewToken, endToken=parserState.NewToken) 

+

213 parserState.Pop(1) 

+

214 return 

+

215 else: 

+

216 raise BlockParserException("Mismatch in opening and closing parenthesis. Counter={0}".format(parserState.Counter), token) 

+

217 elif isinstance(token, CharacterToken): 

+

218 if token == cls.EXIT_CHAR: 

+

219 if parserState.Counter == 0: 

+

220 parserState.NewToken = cls.EXIT_TOKEN(fromExistingToken=token) 

+

221 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

222 _ = cls.EXIT_BLOCK(parserState.NewBlock, parserState.NewToken, endToken=parserState.NewToken) 

+

223 parserState.Pop(2) 

+

224 return 

+

225 else: 

+

226 raise BlockParserException("Mismatch in opening and closing parenthesis. Counter={0}".format(parserState.Counter), token) 

+

227 elif token == "(": 

+

228 parserState.NewToken = OpeningRoundBracketToken(fromExistingToken=token) 

+

229 parserState.Counter += 1 

+

230 parserState.NextState = cls.stateExpression 

+

231 return 

+

232 elif token == ")": 

+

233 if parserState.Counter == 0: 

+

234 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

235 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

236 

+

237 parserState.Pop(3, tokenMarker=parserState.NewToken) 

+

238 return 

+

239 else: 

+

240 parserState.NewToken = ClosingRoundBracketToken(fromExistingToken=token) 

+

241 parserState.Counter -= 1 

+

242 parserState.NextState = cls.stateExpression 

+

243 return 

+

244 else: 

+

245 parserState.NewToken = cls.CHARACTER_TRANSLATION[token.Value](fromExistingToken=token) 

+

246 parserState.NextState = cls.stateExpression 

+

247 return 

+

248 elif isinstance(token, WordToken): 

+

249 try: 

+

250 parserState.NewToken = cls.OPERATOR_TRANSLATIONS[token.Value](fromExistingToken=token) 

+

251 except KeyError: 

+

252 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

253 parserState.NextState = cls.stateExpression 

+

254 return 

+

255 elif isinstance(token, LiteralToken): 

+

256 parserState.NextState = cls.stateExpression 

+

257 return 

+

258 elif isinstance(token, LinebreakToken): 

+

259 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

260 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

261 _ = LinebreakBlock(parserState.NewBlock, token) 

+

262 else: 

+

263 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

264 parserState.TokenMarker = None 

+

265 return 

+

266 elif isinstance(token, CommentToken): 

+

267 if not isinstance(parserState.LastBlock, LinebreakBlock): 

+

268 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

269 _ = CommentBlock(parserState.NewBlock, token) 

+

270 else: 

+

271 parserState.NewBlock = CommentBlock(parserState.LastBlock, token) 

+

272 parserState.TokenMarker = None 

+

273 return 

+

274 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

275 return 

+

276 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

277 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

278 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

279 parserState.TokenMarker = None 

+

280 return 

+

281 

+

282 raise BlockParserException("Expected ????????????.", token) 

+

283 

+

284 

+

285@export 

+

286class ExpressionBlockEndedByKeywordORClosingRoundBracket(ExpressionBlock): 

+

287 EXIT_KEYWORD = None 

+

288 EXIT_BLOCK = None 

+

289 

+

290 @classmethod 

+

291 def stateExpression(cls, parserState: TokenToBlockParser): 

+

292 token = parserState.Token 

+

293 if isinstance(token, FusedCharacterToken): 

+

294 parserState.NewToken = cls.FUSED_CHARACTER_TRANSLATION[token.Value](fromExistingToken=token) 

+

295 return 

+

296 elif isinstance(token, CharacterToken): 

+

297 if token == "(": 

+

298 parserState.NewToken = OpeningRoundBracketToken(fromExistingToken=token) 

+

299 parserState.Counter += 1 

+

300 return 

+

301 elif token == ")": 

+

302 parserState.NewToken = ClosingRoundBracketToken(fromExistingToken=token) 

+

303 parserState.Counter -= 1 

+

304 return 

+

305 else: 

+

306 parserState.NewToken = cls.CHARACTER_TRANSLATION[token.Value](fromExistingToken=token) 

+

307 return 

+

308 elif isinstance(token, WordToken): 

+

309 if token <= cls.EXIT_KEYWORD.__KEYWORD__: 

+

310 parserState.NewToken = cls.EXIT_KEYWORD(token) 

+

311 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

312 _ = cls.EXIT_BLOCK(parserState.NewBlock, parserState.NewToken) 

+

313 parserState.Pop() 

+

314 return 

+

315 else: 

+

316 try: 

+

317 parserState.NewToken = cls.OPERATOR_TRANSLATIONS[token.Value](fromExistingToken=token) 

+

318 except KeyError: 

+

319 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

320 return 

+

321 elif isinstance(token, LiteralToken): 

+

322 return 

+

323 elif isinstance(token, SpaceToken): 

+

324 parserState.NextState = cls.stateWhitespace1 

+

325 return 

+

326 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

327 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

328 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

329 _ = block(parserState.NewBlock, token) 

+

330 parserState.TokenMarker = None 

+

331 parserState.NextState = cls.stateWhitespace1 

+

332 return 

+

333 

+

334 raise BlockParserException("Expected '(' or whitespace after keyword GENERIC.", token) 

+

335 

+

336 @classmethod 

+

337 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

338 token = parserState.Token 

+

339 if isinstance(token, FusedCharacterToken): 

+

340 parserState.NewToken = cls.FUSED_CHARACTER_TRANSLATION[token.Value](fromExistingToken=token) 

+

341 parserState.NextState = cls.stateExpression 

+

342 return 

+

343 elif isinstance(token, CharacterToken): 

+

344 if token == "(": 

+

345 parserState.NewToken = OpeningRoundBracketToken(fromExistingToken=token) 

+

346 parserState.Counter += 1 

+

347 parserState.NextState = cls.stateExpression 

+

348 return 

+

349 elif token == ")": 

+

350 parserState.NewToken = ClosingRoundBracketToken(fromExistingToken=token) 

+

351 parserState.Counter -= 1 

+

352 parserState.NextState = cls.stateExpression 

+

353 return 

+

354 else: 

+

355 parserState.NewToken = cls.CHARACTER_TRANSLATION[token.Value](fromExistingToken=token) 

+

356 parserState.NextState = cls.stateExpression 

+

357 return 

+

358 elif isinstance(token, WordToken): 

+

359 if token <= cls.EXIT_KEYWORD.__KEYWORD__: 

+

360 parserState.NewToken = cls.EXIT_KEYWORD(fromExistingToken=token) 

+

361 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

362 _ = cls.EXIT_BLOCK(parserState.NewBlock, parserState.NewToken) 

+

363 parserState.Pop() 

+

364 return 

+

365 else: 

+

366 try: 

+

367 parserState.NewToken = cls.OPERATOR_TRANSLATIONS[token.Value](fromExistingToken=token) 

+

368 except KeyError: 

+

369 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

370 parserState.NextState = cls.stateExpression 

+

371 return 

+

372 elif isinstance(token, LiteralToken): 

+

373 parserState.NextState = cls.stateExpression 

+

374 return 

+

375 elif isinstance(token, LinebreakToken): 

+

376 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

377 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

378 _ = LinebreakBlock(parserState.NewBlock, token) 

+

379 else: 

+

380 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

381 parserState.TokenMarker = None 

+

382 return 

+

383 elif isinstance(token, CommentToken): 

+

384 if not isinstance(parserState.LastBlock, LinebreakBlock): 

+

385 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

386 _ = CommentBlock(parserState.NewBlock, token) 

+

387 else: 

+

388 parserState.NewBlock = CommentBlock(parserState.LastBlock, token) 

+

389 parserState.TokenMarker = None 

+

390 return 

+

391 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

392 return 

+

393 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

394 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

395 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

396 parserState.TokenMarker = None 

+

397 return 

+

398 

+

399 raise BlockParserException("Expected ????????????.", token) 

+

400 

+

401 

+

402@export 

+

403class ExpressionBlockEndedByToOrDownto(ExpressionBlock): 

+

404 EXIT_BLOCK = None 

+

405 

+

406 @classmethod 

+

407 def stateExpression(cls, parserState: TokenToBlockParser): 

+

408 token = parserState.Token 

+

409 if isinstance(token, FusedCharacterToken): 

+

410 parserState.NewToken = cls.FUSED_CHARACTER_TRANSLATION[token.Value](fromExistingToken=token) 

+

411 return 

+

412 elif isinstance(token, CharacterToken): 

+

413 if token == "(": 

+

414 parserState.NewToken = OpeningRoundBracketToken(fromExistingToken=token) 

+

415 parserState.Counter += 1 

+

416 return 

+

417 elif token == ")": 

+

418 parserState.NewToken = ClosingRoundBracketToken(fromExistingToken=token) 

+

419 parserState.Counter -= 1 

+

420 return 

+

421 else: 

+

422 parserState.NewToken = cls.CHARACTER_TRANSLATION[token.Value](fromExistingToken=token) 

+

423 return 

+

424 elif isinstance(token, WordToken): 

+

425 tokenValue = token.Value.lower() 

+

426 if tokenValue == "to": 

+

427 from pyVHDLParser.Blocks.ControlStructure.ForLoop import LoopIterationDirectionBlock 

+

428 

+

429 parserState.NewToken = ToKeyword(fromExistingToken=token) 

+

430 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

431 _ = LoopIterationDirectionBlock(parserState.NewBlock, parserState.NewToken) 

+

432 parserState.Pop(1, parserState.NewToken) 

+

433 return 

+

434 elif tokenValue == "downto": 

+

435 from pyVHDLParser.Blocks.ControlStructure.ForLoop import LoopIterationDirectionBlock 

+

436 

+

437 parserState.NewToken = DowntoKeyword(fromExistingToken=token) 

+

438 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

439 _ = LoopIterationDirectionBlock(parserState.NewBlock, parserState.NewToken) 

+

440 parserState.Pop(1, parserState.NewToken) 

+

441 return 

+

442 else: 

+

443 try: 

+

444 parserState.NewToken = cls.OPERATOR_TRANSLATIONS[token.Value](fromExistingToken=token) 

+

445 except KeyError: 

+

446 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

447 return 

+

448 elif isinstance(token, LiteralToken): 

+

449 return 

+

450 elif isinstance(token, SpaceToken): 

+

451 parserState.NextState = cls.stateWhitespace1 

+

452 return 

+

453 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

454 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

455 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

456 _ = block(parserState.NewBlock, token) 

+

457 parserState.TokenMarker = None 

+

458 parserState.NextState = cls.stateWhitespace1 

+

459 return 

+

460 

+

461 raise BlockParserException("Expected '(' or whitespace after keyword GENERIC.", token) 

+

462 

+

463 @classmethod 

+

464 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

465 token = parserState.Token 

+

466 if isinstance(token, FusedCharacterToken): 

+

467 parserState.NewToken = cls.FUSED_CHARACTER_TRANSLATION[token.Value](fromExistingToken=token) 

+

468 parserState.NextState = cls.stateExpression 

+

469 return 

+

470 elif isinstance(token, CharacterToken): 

+

471 if token == "(": 

+

472 parserState.NewToken = OpeningRoundBracketToken(fromExistingToken=token) 

+

473 parserState.Counter += 1 

+

474 parserState.NextState = cls.stateExpression 

+

475 return 

+

476 elif token == ")": 

+

477 parserState.NewToken = ClosingRoundBracketToken(fromExistingToken=token) 

+

478 parserState.Counter -= 1 

+

479 parserState.NextState = cls.stateExpression 

+

480 return 

+

481 else: 

+

482 parserState.NewToken = cls.CHARACTER_TRANSLATION[token.Value](fromExistingToken=token) 

+

483 parserState.NextState = cls.stateExpression 

+

484 return 

+

485 elif isinstance(token, WordToken): 

+

486 tokenValue = token.Value.lower() 

+

487 if tokenValue == "to": 

+

488 from pyVHDLParser.Blocks.ControlStructure.ForLoop import LoopIterationDirectionBlock 

+

489 

+

490 parserState.NewToken = ToKeyword(fromExistingToken=token) 

+

491 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

492 _ = LoopIterationDirectionBlock(parserState.NewBlock, parserState.NewToken) 

+

493 parserState.Pop() 

+

494 return 

+

495 elif tokenValue == "downto": 

+

496 from pyVHDLParser.Blocks.ControlStructure.ForLoop import LoopIterationDirectionBlock 

+

497 

+

498 parserState.NewToken = DowntoKeyword(fromExistingToken=token) 

+

499 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

500 _ = LoopIterationDirectionBlock(parserState.NewBlock, parserState.NewToken) 

+

501 parserState.Pop() 

+

502 return 

+

503 else: 

+

504 try: 

+

505 parserState.NewToken = cls.OPERATOR_TRANSLATIONS[token.Value](fromExistingToken=token) 

+

506 except KeyError: 

+

507 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

508 parserState.NextState = cls.stateExpression 

+

509 return 

+

510 elif isinstance(token, LiteralToken): 

+

511 parserState.NextState = cls.stateExpression 

+

512 return 

+

513 elif isinstance(token, LinebreakToken): 

+

514 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

515 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

516 _ = LinebreakBlock(parserState.NewBlock, token) 

+

517 else: 

+

518 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

519 parserState.TokenMarker = None 

+

520 return 

+

521 elif isinstance(token, CommentToken): 

+

522 if not isinstance(parserState.LastBlock, LinebreakBlock): 

+

523 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

524 _ = CommentBlock(parserState.NewBlock, token) 

+

525 else: 

+

526 parserState.NewBlock = CommentBlock(parserState.LastBlock, token) 

+

527 parserState.TokenMarker = None 

+

528 return 

+

529 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

530 return 

+

531 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

532 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

533 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

534 parserState.TokenMarker = None 

+

535 return 

+

536 

+

537 raise BlockParserException("Expected ????????????.", token) 

+

538 

+

539 

+

540@export 

+

541class ExpressionBlockEndedByKeywordOrToOrDownto(ExpressionBlock): 

+

542 EXIT_KEYWORD = None 

+

543 EXIT_BLOCK = None 

+

544 

+

545 @classmethod 

+

546 def stateExpression(cls, parserState: TokenToBlockParser): 

+

547 token = parserState.Token 

+

548 if isinstance(token, FusedCharacterToken): 

+

549 parserState.NewToken = cls.FUSED_CHARACTER_TRANSLATION[token.Value](fromExistingToken=token) 

+

550 return 

+

551 elif isinstance(token, CharacterToken): 

+

552 if token == "(": 

+

553 parserState.NewToken = OpeningRoundBracketToken(fromExistingToken=token) 

+

554 parserState.Counter += 1 

+

555 return 

+

556 elif token == ")": 

+

557 parserState.NewToken = ClosingRoundBracketToken(fromExistingToken=token) 

+

558 parserState.Counter -= 1 

+

559 return 

+

560 else: 

+

561 parserState.NewToken = cls.CHARACTER_TRANSLATION[token.Value](fromExistingToken=token) 

+

562 return 

+

563 elif isinstance(token, WordToken): 

+

564 tokenValue = token.Value.lower() 

+

565 if tokenValue == cls.EXIT_KEYWORD.__KEYWORD__: 

+

566 parserState.NewToken = LoopKeyword(fromExistingToken=token) 

+

567 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

568 _ = cls.EXIT_BLOCK(parserState.NewBlock, parserState.NewToken) 

+

569 parserState.Pop(2, parserState.NewToken) 

+

570 return 

+

571 elif tokenValue == "to": 

+

572 from pyVHDLParser.Blocks.ControlStructure.ForLoop import LoopIterationDirectionBlock 

+

573 

+

574 parserState.NewToken = ToKeyword(fromExistingToken=token) 

+

575 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

576 _ = LoopIterationDirectionBlock(parserState.NewBlock, parserState.NewToken) 

+

577 parserState.Pop(1, parserState.NewToken) 

+

578 return 

+

579 elif tokenValue == "downto": 

+

580 from pyVHDLParser.Blocks.ControlStructure.ForLoop import LoopIterationDirectionBlock 

+

581 

+

582 parserState.NewToken = DowntoKeyword(fromExistingToken=token) 

+

583 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

584 _ = LoopIterationDirectionBlock(parserState.NewBlock, parserState.NewToken) 

+

585 parserState.Pop(1, parserState.NewToken) 

+

586 return 

+

587 else: 

+

588 try: 

+

589 parserState.NewToken = cls.OPERATOR_TRANSLATIONS[token.Value](fromExistingToken=token) 

+

590 except KeyError: 

+

591 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

592 return 

+

593 elif isinstance(token, LiteralToken): 

+

594 return 

+

595 elif isinstance(token, SpaceToken): 

+

596 parserState.NextState = cls.stateWhitespace1 

+

597 return 

+

598 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

599 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

600 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

601 _ = block(parserState.NewBlock, token) 

+

602 parserState.TokenMarker = None 

+

603 parserState.NextState = cls.stateWhitespace1 

+

604 return 

+

605 

+

606 raise BlockParserException("Expected '(' or whitespace after keyword GENERIC.", token) 

+

607 

+

608 @classmethod 

+

609 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

610 token = parserState.Token 

+

611 if isinstance(token, FusedCharacterToken): 

+

612 parserState.NewToken = cls.FUSED_CHARACTER_TRANSLATION[token.Value](fromExistingToken=token) 

+

613 parserState.NextState = cls.stateExpression 

+

614 return 

+

615 elif isinstance(token, CharacterToken): 

+

616 if token == "(": 

+

617 parserState.NewToken = OpeningRoundBracketToken(fromExistingToken=token) 

+

618 parserState.Counter += 1 

+

619 parserState.NextState = cls.stateExpression 

+

620 return 

+

621 elif token == ")": 

+

622 parserState.NewToken = ClosingRoundBracketToken(fromExistingToken=token) 

+

623 parserState.Counter -= 1 

+

624 parserState.NextState = cls.stateExpression 

+

625 return 

+

626 else: 

+

627 parserState.NewToken = cls.CHARACTER_TRANSLATION[token.Value](fromExistingToken=token) 

+

628 parserState.NextState = cls.stateExpression 

+

629 return 

+

630 elif isinstance(token, WordToken): 

+

631 tokenValue = token.Value.lower() 

+

632 if tokenValue == cls.EXIT_KEYWORD.__KEYWORD__: 

+

633 parserState.NewToken = LoopKeyword(fromExistingToken=token) 

+

634 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

635 _ = cls.EXIT_BLOCK(parserState.NewBlock, parserState.NewToken) 

+

636 parserState.Pop(1, parserState.NewToken) 

+

637 return 

+

638 elif tokenValue == "to": 

+

639 from pyVHDLParser.Blocks.ControlStructure.ForLoop import LoopIterationDirectionBlock 

+

640 

+

641 parserState.NewToken = ToKeyword(fromExistingToken=token) 

+

642 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

643 _ = LoopIterationDirectionBlock(parserState.NewBlock, parserState.NewToken) 

+

644 parserState.Pop() 

+

645 return 

+

646 elif tokenValue == "downto": 

+

647 from pyVHDLParser.Blocks.ControlStructure.ForLoop import LoopIterationDirectionBlock 

+

648 

+

649 parserState.NewToken = DowntoKeyword(fromExistingToken=token) 

+

650 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

651 _ = LoopIterationDirectionBlock(parserState.NewBlock, parserState.NewToken) 

+

652 parserState.Pop() 

+

653 return 

+

654 else: 

+

655 try: 

+

656 parserState.NewToken = cls.OPERATOR_TRANSLATIONS[token.Value](fromExistingToken=token) 

+

657 except KeyError: 

+

658 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

659 parserState.NextState = cls.stateExpression 

+

660 return 

+

661 elif isinstance(token, LiteralToken): 

+

662 parserState.NextState = cls.stateExpression 

+

663 return 

+

664 elif isinstance(token, LinebreakToken): 

+

665 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

666 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

667 _ = LinebreakBlock(parserState.NewBlock, token) 

+

668 else: 

+

669 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

670 parserState.TokenMarker = None 

+

671 return 

+

672 elif isinstance(token, CommentToken): 

+

673 if not isinstance(parserState.LastBlock, LinebreakBlock): 

+

674 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

675 _ = CommentBlock(parserState.NewBlock, token) 

+

676 else: 

+

677 parserState.NewBlock = CommentBlock(parserState.LastBlock, token) 

+

678 parserState.TokenMarker = None 

+

679 return 

+

680 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

681 return 

+

682 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

683 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

684 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

685 parserState.TokenMarker = None 

+

686 return 

+

687 

+

688 raise BlockParserException("Expected ????????????.", token) 

+

689 

+

690 

+

691@export 

+

692class ExpressionBlockEndedBySemicolon(ExpressionBlock): 

+

693 END_BLOCK = None 

+

694 

+

695 @classmethod 

+

696 def stateExpression(cls, parserState: TokenToBlockParser): 

+

697 token = parserState.Token 

+

698 if isinstance(token, FusedCharacterToken): 698 ↛ 699line 698 didn't jump to line 699, because the condition on line 698 was never true

+

699 parserState.NewToken = cls.FUSED_CHARACTER_TRANSLATION[token.Value](fromExistingToken=token) 

+

700 return 

+

701 elif isinstance(token, CharacterToken): 

+

702 if token == ";": 702 ↛ 711line 702 didn't jump to line 711, because the condition on line 702 was never false

+

703 if parserState.Counter == 0: 703 ↛ 710line 703 didn't jump to line 710, because the condition on line 703 was never false

+

704 parserState.NewToken = EndToken(fromExistingToken=token) 

+

705 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

706 _ = cls.END_BLOCK(parserState.NewBlock, parserState.NewToken, endToken=parserState.NewToken) 

+

707 parserState.Pop(2) 

+

708 return 

+

709 else: 

+

710 raise BlockParserException("Mismatch in opening and closing parenthesis. Counter={0}".format(parserState.Counter), token) 

+

711 elif token == "(": 

+

712 parserState.NewToken = OpeningRoundBracketToken(fromExistingToken=token) 

+

713 parserState.Counter += 1 

+

714 return 

+

715 elif token == ")": 

+

716 if parserState.Counter == -1: 

+

717 raise BlockParserException("Mismatch in opening and closing parenthesis. Counter={0}".format(parserState.Counter), token) 

+

718 else: 

+

719 parserState.NewToken = ClosingRoundBracketToken(fromExistingToken=token) 

+

720 parserState.Counter -= 1 

+

721 return 

+

722 else: 

+

723 parserState.NewToken = cls.CHARACTER_TRANSLATION[token.Value](fromExistingToken=token) 

+

724 return 

+

725 elif isinstance(token, WordToken): 725 ↛ 726line 725 didn't jump to line 726, because the condition on line 725 was never true

+

726 try: 

+

727 parserState.NewToken = cls.OPERATOR_TRANSLATIONS[token.Value](fromExistingToken=token) 

+

728 except KeyError: 

+

729 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

730 return 

+

731 elif isinstance(token, LiteralToken): 731 ↛ 732line 731 didn't jump to line 732, because the condition on line 731 was never true

+

732 return 

+

733 elif isinstance(token, SpaceToken): 733 ↛ 736line 733 didn't jump to line 736, because the condition on line 733 was never false

+

734 parserState.NextState = cls.stateWhitespace1 

+

735 return 

+

736 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

737 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

738 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

739 _ = block(parserState.NewBlock, token) 

+

740 parserState.TokenMarker = None 

+

741 parserState.NextState = cls.stateWhitespace1 

+

742 return 

+

743 

+

744 raise BlockParserException("Expected operator, '(', ')', ';' or whitespace.", token) 

+

745 

+

746 @classmethod 

+

747 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

748 token = parserState.Token 

+

749 if isinstance(token, FusedCharacterToken): 749 ↛ 750line 749 didn't jump to line 750, because the condition on line 749 was never true

+

750 parserState.NewToken = cls.FUSED_CHARACTER_TRANSLATION[token.Value](fromExistingToken=token) 

+

751 parserState.NextState = cls.stateExpression 

+

752 return 

+

753 elif isinstance(token, CharacterToken): 753 ↛ 754line 753 didn't jump to line 754, because the condition on line 753 was never true

+

754 if token == ";": 

+

755 if parserState.Counter == 0: 

+

756 parserState.NewToken = EndToken(fromExistingToken=token) 

+

757 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

758 _ = cls.END_BLOCK(parserState.NewBlock, parserState.NewToken, endToken=parserState.NewToken) 

+

759 parserState.Pop(2) 

+

760 return 

+

761 else: 

+

762 raise BlockParserException("Mismatch in opening and closing parenthesis. Counter={0}".format(parserState.Counter), token) 

+

763 elif token == "(": 

+

764 parserState.NewToken = OpeningRoundBracketToken(fromExistingToken=token) 

+

765 parserState.Counter += 1 

+

766 parserState.NextState = cls.stateExpression 

+

767 return 

+

768 elif token == ")": 

+

769 if parserState.Counter == -1: 

+

770 raise BlockParserException("Mismatch in opening and closing parenthesis. Counter={0}".format(parserState.Counter), token) 

+

771 else: 

+

772 parserState.NewToken = ClosingRoundBracketToken(fromExistingToken=token) 

+

773 parserState.Counter -= 1 

+

774 parserState.NextState = cls.stateExpression 

+

775 return 

+

776 else: 

+

777 parserState.NewToken = cls.CHARACTER_TRANSLATION[token.Value](fromExistingToken=token) 

+

778 parserState.NextState = cls.stateExpression 

+

779 return 

+

780 elif isinstance(token, WordToken): 780 ↛ 781line 780 didn't jump to line 781, because the condition on line 780 was never true

+

781 try: 

+

782 parserState.NewToken = cls.OPERATOR_TRANSLATIONS[token.Value](fromExistingToken=token) 

+

783 except KeyError: 

+

784 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

785 parserState.NextState = cls.stateExpression 

+

786 return 

+

787 elif isinstance(token, LiteralToken): 787 ↛ 790line 787 didn't jump to line 790, because the condition on line 787 was never false

+

788 parserState.NextState = cls.stateExpression 

+

789 return 

+

790 elif isinstance(token, LinebreakToken): 

+

791 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

792 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

793 _ = LinebreakBlock(parserState.NewBlock, token) 

+

794 else: 

+

795 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

796 parserState.TokenMarker = None 

+

797 return 

+

798 elif isinstance(token, CommentToken): 

+

799 if not isinstance(parserState.LastBlock, LinebreakBlock): 

+

800 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

801 _ = CommentBlock(parserState.NewBlock, token) 

+

802 else: 

+

803 parserState.NewBlock = CommentBlock(parserState.LastBlock, token) 

+

804 parserState.TokenMarker = None 

+

805 return 

+

806 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

807 return 

+

808 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

809 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

810 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

811 parserState.TokenMarker = None 

+

812 return 

+

813 

+

814 raise BlockParserException("Expected identifier, literal, operator, '(', ')' or ';'.", token) 

+
+ + + diff --git a/coverage/d_c650c0c44533ccba_Generic1_py.html b/coverage/d_c650c0c44533ccba_Generic1_py.html new file mode 100644 index 000000000..76cc9e73c --- /dev/null +++ b/coverage/d_c650c0c44533ccba_Generic1_py.html @@ -0,0 +1,494 @@ + + + + + Coverage for pyVHDLParser/Blocks/Generic1.py: 55% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/Generic1.py: + 55% +

+ +

+ 321 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from typing import Any 

+

31 

+

32from pyTooling.Decorators import export 

+

33 

+

34from pyVHDLParser.Token import CharacterToken, SpaceToken, LinebreakToken, CommentToken, WordToken, MultiLineCommentToken, IndentationToken 

+

35from pyVHDLParser.Token import SingleLineCommentToken, ExtendedIdentifier 

+

36from pyVHDLParser.Token.Keywords import EndToken, BoundaryToken, LabelToken, IdentifierToken 

+

37from pyVHDLParser.Blocks import FinalBlock, TokenToBlockParser, CommentBlock, BlockParserException, Block 

+

38from pyVHDLParser.Blocks.Common import LinebreakBlock, WhitespaceBlock 

+

39 

+

40 

+

41@export 

+

42class EndBlock(FinalBlock): 

+

43 KEYWORD = None 

+

44 KEYWORD_IS_OPTIONAL = False 

+

45 EXPECTED_NAME = "" 

+

46 EXPECTED_NAME_KIND = "keyword" # keyword label 

+

47 

+

48 @classmethod 

+

49 def stateEndKeyword(cls, parserState: TokenToBlockParser): 

+

50 token = parserState.Token 

+

51 if isinstance(token, CharacterToken): 

+

52 if (cls.KEYWORD_IS_OPTIONAL is True) and (token == ";"): 52 ↛ 73line 52 didn't jump to line 73, because the condition on line 52 was never false

+

53 parserState.NewToken = EndToken(fromExistingToken=token) 

+

54 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

55 parserState.Pop() 

+

56 return 

+

57 elif isinstance(token, SpaceToken): 

+

58 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

59 parserState.NextState = cls.stateWhitespace1 

+

60 return 

+

61 elif isinstance(token, LinebreakToken): 

+

62 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token, multiPart=True) 

+

63 parserState.TokenMarker = None 

+

64 parserState.NextState = cls.stateWhitespace1 

+

65 return 

+

66 elif isinstance(token, CommentToken): 66 ↛ 73line 66 didn't jump to line 73, because the condition on line 66 was never false

+

67 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

68 _ = CommentBlock(parserState.NewBlock, token) 

+

69 parserState.TokenMarker = None 

+

70 parserState.NextState = cls.stateWhitespace1 

+

71 return 

+

72 

+

73 raise BlockParserException("Expected ';' or whitespace.", token) 

+

74 

+

75 @classmethod 

+

76 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

77 token = parserState.Token 

+

78 if isinstance(token, CharacterToken): 78 ↛ 79line 78 didn't jump to line 79, because the condition on line 78 was never true

+

79 if (cls.KEYWORD_IS_OPTIONAL is True) and (token == ";"): 

+

80 parserState.NewToken = EndToken(fromExistingToken=token) 

+

81 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

82 parserState.Pop() 

+

83 return 

+

84 elif isinstance(token, WordToken): 

+

85 IS_SINGLE_KEYWORD = isinstance(cls.KEYWORD, tuple) 

+

86 KW = cls.KEYWORD[0] if IS_SINGLE_KEYWORD else cls.KEYWORD 

+

87 if token <= KW.__KEYWORD__: 

+

88 parserState.NewToken = KW(fromExistingToken=token) 

+

89 parserState.NextState = cls.stateKeyword1 

+

90 elif cls.EXPECTED_NAME_KIND == "label": 90 ↛ 91line 90 didn't jump to line 91, because the condition on line 90 was never true

+

91 parserState.NewToken = LabelToken(fromExistingToken=token) 

+

92 parserState.NextState = cls.stateSimpleName 

+

93 else: 

+

94 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

95 parserState.NextState = cls.stateSimpleName 

+

96 return 

+

97 elif isinstance(token, LinebreakToken): 97 ↛ 98line 97 didn't jump to line 98, because the condition on line 97 was never true

+

98 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

99 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

100 _ = LinebreakBlock(parserState.NewBlock, token) 

+

101 else: 

+

102 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

103 parserState.TokenMarker = None 

+

104 return 

+

105 elif isinstance(token, CommentToken): 

+

106 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

107 _ = CommentBlock(parserState.NewBlock, token) 

+

108 parserState.TokenMarker = None 

+

109 return 

+

110 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 110 ↛ 112line 110 didn't jump to line 112, because the condition on line 110 was never false

+

111 return 

+

112 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

113 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

114 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

115 parserState.TokenMarker = None 

+

116 return 

+

117 

+

118 if cls.KEYWORD_IS_OPTIONAL is True: 

+

119 if cls.EXPECTED_NAME_KIND == "label": 

+

120 errorMessage = "Expected ';', {0} keyword or {1} label.".format(cls.EXPECTED_NAME.upper(), cls.EXPECTED_NAME) 

+

121 else: 

+

122 errorMessage = "Expected ';', {0} keyword or {1} name.".format(cls.EXPECTED_NAME.upper(), cls.EXPECTED_NAME) 

+

123 else: 

+

124 if cls.EXPECTED_NAME_KIND == "label": 

+

125 errorMessage = "Expected {0} keyword or {1} label.".format(cls.EXPECTED_NAME.upper(), cls.EXPECTED_NAME) 

+

126 else: 

+

127 errorMessage = "Expected {0} keyword or {1} name.".format(cls.EXPECTED_NAME.upper(), cls.EXPECTED_NAME) 

+

128 

+

129 raise BlockParserException(errorMessage, token) 

+

130 

+

131 @classmethod 

+

132 def stateKeyword1(cls, parserState: TokenToBlockParser): 

+

133 IS_DOUBLE_KEYWORD = isinstance(cls.KEYWORD, tuple) 

+

134 nextState = cls.stateWhitespace2 if IS_DOUBLE_KEYWORD else cls.stateWhitespace3; 

+

135 token = parserState.Token 

+

136 if isinstance(token, CharacterToken): 

+

137 if not isinstance(cls.KEYWORD, tuple) and (token == ";"): 137 ↛ 158line 137 didn't jump to line 158, because the condition on line 137 was never false

+

138 parserState.NewToken = EndToken(fromExistingToken=token) 

+

139 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

140 parserState.Pop() 

+

141 return 

+

142 elif isinstance(token, SpaceToken): 

+

143 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

144 parserState.NextState = nextState 

+

145 return 

+

146 elif isinstance(token, LinebreakToken): 

+

147 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token, multiPart=True) 

+

148 parserState.TokenMarker = None 

+

149 parserState.NextState = cls.stateWhitespace3 

+

150 return 

+

151 elif isinstance(token, CommentToken): 151 ↛ 158line 151 didn't jump to line 158, because the condition on line 151 was never false

+

152 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

153 _ = CommentBlock(parserState.NewBlock, token) 

+

154 parserState.TokenMarker = None 

+

155 parserState.NextState = cls.stateWhitespace3 

+

156 return 

+

157 

+

158 raise BlockParserException("Expected ';' or whitespace.", token) 

+

159 

+

160 @classmethod 

+

161 def stateWhitespace2(cls, parserState: TokenToBlockParser): 

+

162 token = parserState.Token 

+

163 if isinstance(token, CharacterToken): 163 ↛ 164line 163 didn't jump to line 164, because the condition on line 163 was never true

+

164 if (cls.KEYWORD_IS_OPTIONAL is True) and (not isinstance(cls.KEYWORD, tuple)) and (token == ";"): 

+

165 parserState.NewToken = EndToken(fromExistingToken=token) 

+

166 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

167 parserState.Pop() 

+

168 return 

+

169 elif isinstance(token, WordToken) and (token <= cls.KEYWORD[1].__KEYWORD__): 169 ↛ 173line 169 didn't jump to line 173, because the condition on line 169 was never false

+

170 parserState.NewToken = cls.KEYWORD[1](fromExistingToken=token) 

+

171 parserState.NextState = cls.stateKeyword2 

+

172 return 

+

173 elif isinstance(token, LinebreakToken): 

+

174 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

175 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

176 _ = LinebreakBlock(parserState.NewBlock, token) 

+

177 else: 

+

178 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

179 parserState.TokenMarker = None 

+

180 return 

+

181 elif isinstance(token, CommentToken): 

+

182 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

183 _ = CommentBlock(parserState.NewBlock, token) 

+

184 parserState.TokenMarker = None 

+

185 return 

+

186 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

187 return 

+

188 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

189 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

190 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

191 parserState.TokenMarker = None 

+

192 return 

+

193 

+

194 if cls.KEYWORD_IS_OPTIONAL is True: 

+

195 if cls.EXPECTED_NAME_KIND == "label": 

+

196 errorMessage = "Expected ';', {0} keyword or {1} label.".format(cls.EXPECTED_NAME.upper(), cls.EXPECTED_NAME) 

+

197 else: 

+

198 errorMessage = "Expected ';', {0} keyword or {1} name.".format(cls.EXPECTED_NAME.upper(), cls.EXPECTED_NAME) 

+

199 else: 

+

200 if cls.EXPECTED_NAME_KIND == "label": 

+

201 errorMessage = "Expected {0} keyword or {1} label.".format(cls.EXPECTED_NAME.upper(), cls.EXPECTED_NAME) 

+

202 else: 

+

203 errorMessage = "Expected {0} keyword or {1} name.".format(cls.EXPECTED_NAME.upper(), cls.EXPECTED_NAME) 

+

204 

+

205 raise BlockParserException(errorMessage, token) 

+

206 

+

207 @classmethod 

+

208 def stateKeyword2(cls, parserState: TokenToBlockParser): 

+

209 token = parserState.Token 

+

210 if isinstance(token, CharacterToken)and (token == ";"): 

+

211 parserState.NewToken = EndToken(fromExistingToken=token) 

+

212 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

213 parserState.Pop() 

+

214 return 

+

215 elif isinstance(token, SpaceToken): 215 ↛ 219line 215 didn't jump to line 219, because the condition on line 215 was never false

+

216 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

217 parserState.NextState = cls.stateWhitespace3 

+

218 return 

+

219 elif isinstance(token, LinebreakToken): 

+

220 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token, multiPart=True) 

+

221 parserState.TokenMarker = None 

+

222 parserState.NextState = cls.stateWhitespace3 

+

223 return 

+

224 elif isinstance(token, CommentToken): 

+

225 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

226 _ = CommentBlock(parserState.NewBlock, token) 

+

227 parserState.TokenMarker = None 

+

228 parserState.NextState = cls.stateWhitespace3 

+

229 return 

+

230 

+

231 raise BlockParserException("Expected ';' or whitespace.", token) 

+

232 

+

233 @classmethod 

+

234 def stateWhitespace3(cls, parserState: TokenToBlockParser): 

+

235 token = parserState.Token 

+

236 if isinstance(token, CharacterToken): 236 ↛ 237line 236 didn't jump to line 237, because the condition on line 236 was never true

+

237 if token == ";": 

+

238 parserState.NewToken = EndToken(fromExistingToken=token) 

+

239 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

240 parserState.Pop() 

+

241 return 

+

242 elif isinstance(token, WordToken): 

+

243 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

244 parserState.NextState = cls.stateSimpleName 

+

245 return 

+

246 elif isinstance(token, ExtendedIdentifier): 246 ↛ 247line 246 didn't jump to line 247, because the condition on line 246 was never true

+

247 parserState.NextState = cls.stateSimpleName 

+

248 return 

+

249 elif isinstance(token, LinebreakToken): 249 ↛ 250line 249 didn't jump to line 250, because the condition on line 249 was never true

+

250 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

251 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

252 _ = LinebreakBlock(parserState.NewBlock, token) 

+

253 else: 

+

254 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

255 parserState.TokenMarker = None 

+

256 return 

+

257 elif isinstance(token, CommentToken): 

+

258 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

259 _ = CommentBlock(parserState.NewBlock, token) 

+

260 parserState.TokenMarker = None 

+

261 return 

+

262 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 262 ↛ 264line 262 didn't jump to line 264, because the condition on line 262 was never false

+

263 return 

+

264 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

265 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

266 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

267 parserState.TokenMarker = None 

+

268 return 

+

269 

+

270 raise BlockParserException("Expected ';' or {0} name.".format(cls.EXPECTED_NAME), token) 

+

271 

+

272 @classmethod 

+

273 def stateSimpleName(cls, parserState: TokenToBlockParser): 

+

274 token = parserState.Token 

+

275 if isinstance(token, CharacterToken) and (token == ";"): 

+

276 parserState.NewToken = EndToken(fromExistingToken=token) 

+

277 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

278 parserState.Pop() 

+

279 return 

+

280 elif isinstance(token, SpaceToken): 

+

281 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

282 parserState.NextState = cls.stateWhitespace4 

+

283 return 

+

284 elif isinstance(token, LinebreakToken): 

+

285 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token, multiPart=True) 

+

286 parserState.TokenMarker = None 

+

287 parserState.NextState = cls.stateWhitespace4 

+

288 return 

+

289 elif isinstance(token, CommentToken): 289 ↛ 296line 289 didn't jump to line 296, because the condition on line 289 was never false

+

290 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

291 _ = CommentBlock(parserState.NewBlock, token) 

+

292 parserState.TokenMarker = None 

+

293 parserState.NextState = cls.stateWhitespace4 

+

294 return 

+

295 

+

296 raise BlockParserException("Expected ';' or whitespace.", token) 

+

297 

+

298 @classmethod 

+

299 def stateWhitespace4(cls, parserState: TokenToBlockParser): 

+

300 token = parserState.Token 

+

301 if isinstance(token, CharacterToken): 

+

302 if token == ";": 302 ↛ 328line 302 didn't jump to line 328, because the condition on line 302 was never false

+

303 parserState.NewToken = EndToken(fromExistingToken=token) 

+

304 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

305 parserState.Pop() 

+

306 return 

+

307 elif isinstance(token, LinebreakToken): 307 ↛ 308line 307 didn't jump to line 308, because the condition on line 307 was never true

+

308 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

309 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

310 _ = LinebreakBlock(parserState.NewBlock, token) 

+

311 else: 

+

312 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

313 parserState.TokenMarker = None 

+

314 return 

+

315 elif isinstance(token, CommentToken): 

+

316 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

317 _ = CommentBlock(parserState.NewBlock, token) 

+

318 parserState.TokenMarker = None 

+

319 return 

+

320 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 320 ↛ 322line 320 didn't jump to line 322, because the condition on line 320 was never false

+

321 return 

+

322 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

323 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

324 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

325 parserState.TokenMarker = None 

+

326 return 

+

327 

+

328 raise BlockParserException("Expected ';'.", token) 

+

329 

+

330 

+

331@export 

+

332class BeginBlock(Block): 

+

333 END_BLOCK: EndBlock 

+

334 

+

335 KEYWORDS: Any # TODO: what type? 

+

336 

+

337 @classmethod 

+

338 def stateStatementRegion(cls, parserState: TokenToBlockParser): 

+

339 pass 

+

340 

+

341 

+

342@export 

+

343class CloseBlock(Block): 

+

344 @classmethod 

+

345 def stateClosingParenthesis(cls, parserState: TokenToBlockParser): 

+

346 token = parserState.Token 

+

347 if isinstance(token, CharacterToken) and (token == ";"): 347 ↛ 352line 347 didn't jump to line 352, because the condition on line 347 was never false

+

348 parserState.NewToken = EndToken(fromExistingToken=token) 

+

349 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

350 parserState.Pop() 

+

351 return 

+

352 elif isinstance(token, SpaceToken): 

+

353 parserState.NextState = cls.stateWhitespace1 

+

354 return 

+

355 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

356 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

357 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

358 _ = block(parserState.NewBlock, token) 

+

359 parserState.TokenMarker = None 

+

360 parserState.NextState = cls.stateWhitespace1 

+

361 return 

+

362 

+

363 raise BlockParserException("Expected ';' or whitespace.", token) 

+

364 

+

365 @classmethod 

+

366 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

367 token = parserState.Token 

+

368 if isinstance(token, CharacterToken)and (token == ";"): 

+

369 parserState.NewToken = EndToken(fromExistingToken=token) 

+

370 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

371 parserState.Pop() 

+

372 return 

+

373 elif isinstance(token, LinebreakToken): 

+

374 # TODO: review this linebreak case 

+

375 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

376 parserState.TokenMarker = None 

+

377 return 

+

378 elif isinstance(token, CommentToken): 

+

379 parserState.NewBlock = CommentBlock(parserState.LastBlock, token) 

+

380 parserState.TokenMarker = token 

+

381 return 

+

382 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

383 return 

+

384 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

385 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

386 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

387 parserState.TokenMarker = None 

+

388 return 

+

389 

+

390 raise BlockParserException("Expected ';'.", token) 

+

391 

+

392 

+

393@export 

+

394class EndOfStatementBlock(Block): 

+

395 pass 

+
+ + + diff --git a/coverage/d_c650c0c44533ccba_Generic_py.html b/coverage/d_c650c0c44533ccba_Generic_py.html new file mode 100644 index 000000000..d662082e5 --- /dev/null +++ b/coverage/d_c650c0c44533ccba_Generic_py.html @@ -0,0 +1,377 @@ + + + + + Coverage for pyVHDLParser/Blocks/Generic.py: 91% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/Generic.py: + 91% +

+ +

+ 154 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from typing import Any 

+

31 

+

32from pyTooling.Decorators import export 

+

33 

+

34from pyVHDLParser.Token import LinebreakToken, WordToken, SpaceToken, CommentToken, IndentationToken 

+

35from pyVHDLParser.Token.Keywords import AssertKeyword, EndKeyword, ProcessKeyword, ReportKeyword, IfKeyword, ForKeyword, ReturnKeyword, NextKeyword, NullKeyword 

+

36from pyVHDLParser.Token.Keywords import ExitKeyword, UseKeyword, SignalKeyword, ConstantKeyword, SharedKeyword, FunctionKeyword, ProcedureKeyword 

+

37from pyVHDLParser.Token.Keywords import ImpureKeyword, PureKeyword, VariableKeyword, BeginKeyword, CaseKeyword 

+

38from pyVHDLParser.Blocks import BlockParserException, CommentBlock, TokenToBlockParser, MetaBlock 

+

39from pyVHDLParser.Blocks.Common import LinebreakBlock, WhitespaceBlock, IndentationBlock 

+

40from pyVHDLParser.Blocks.Object.Variable import VariableDeclarationBlock 

+

41from pyVHDLParser.Blocks.Generic1 import EndBlock, BeginBlock 

+

42 

+

43 

+

44@export 

+

45class DeclarativeRegion(metaclass=MetaBlock): 

+

46 """Base-class for all declarative region blocks.""" 

+

47 

+

48 BEGIN_BLOCK: BeginBlock 

+

49 END_BLOCK: EndBlock 

+

50 

+

51 KEYWORDS: Any # TODO: what type? 

+

52 

+

53 @classmethod 

+

54 def __cls_init__(cls): 

+

55 from pyVHDLParser.Blocks.Reference import Use 

+

56 from pyVHDLParser.Blocks.Object.Constant import ConstantDeclarationBlock 

+

57 from pyVHDLParser.Blocks.Sequential import Procedure, Function 

+

58 

+

59 cls.KEYWORDS = { 

+

60 # Keyword Transition 

+

61 UseKeyword: Use.StartBlock.stateUseKeyword, 

+

62 ConstantKeyword: ConstantDeclarationBlock.stateConstantKeyword, 

+

63 FunctionKeyword: Function.NameBlock.stateFunctionKeyword, 

+

64 ProcedureKeyword: Procedure.NameBlock.stateProcedureKeyword, 

+

65 ImpureKeyword: Function.NameBlock.stateImpureKeyword, 

+

66 PureKeyword: Function.NameBlock.statePureKeyword, 

+

67 # AliasKeyword: Alias.NameBlock.stateAliasKeyword 

+

68 } 

+

69 

+

70 

+

71 @classmethod 

+

72 def stateDeclarativeRegion(cls, parserState: TokenToBlockParser): 

+

73 token = parserState.Token 

+

74 if isinstance(token, SpaceToken): 

+

75 blockType = IndentationBlock if isinstance(token, IndentationToken) else WhitespaceBlock 

+

76 parserState.NewBlock = blockType(parserState.LastBlock, token) 

+

77 parserState.TokenMarker = None 

+

78 return 

+

79 elif isinstance(token, LinebreakToken): 

+

80 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

81 parserState.TokenMarker = None 

+

82 return 

+

83 elif isinstance(token, CommentToken): 

+

84 parserState.NewBlock = CommentBlock(parserState.LastBlock, token) 

+

85 parserState.TokenMarker = None 

+

86 return 

+

87 elif isinstance(token, WordToken): 

+

88 tokenValue = token.Value.lower() 

+

89 

+

90 for keyword in cls.KEYWORDS: 

+

91 if tokenValue == keyword.__KEYWORD__: 

+

92 newToken = keyword(fromExistingToken=token) 

+

93 parserState.PushState = cls.KEYWORDS[keyword] 

+

94 parserState.NewToken = newToken 

+

95 parserState.TokenMarker = newToken 

+

96 return 

+

97 

+

98 if tokenValue == "begin": 

+

99 parserState.NewToken = BeginKeyword(fromExistingToken=token) 

+

100 parserState.NewBlock = cls.BEGIN_BLOCK(parserState.LastBlock, parserState.NewToken) 

+

101 parserState.NextState = cls.BEGIN_BLOCK.stateStatementRegion 

+

102 return 

+

103 elif tokenValue == "end": 

+

104 parserState.NewToken = EndKeyword(fromExistingToken=token) 

+

105 parserState.NextState = cls.END_BLOCK.stateEndKeyword 

+

106 return 

+

107 

+

108 raise BlockParserException( 

+

109 "Expected one of these keywords: BEGIN, END, {keywords}. Found: '{tokenValue}'.".format( 

+

110 keywords=", ".join( 

+

111 [kw.__KEYWORD__.upper() for kw in cls.KEYWORDS] 

+

112 ), 

+

113 tokenValue=token.Value 

+

114 ), token) 

+

115 

+

116 

+

117@export 

+

118class ConcurrentDeclarativeRegion(DeclarativeRegion): 

+

119 """Base-class for all concurrent declarative region blocks.""" 

+

120 

+

121 @classmethod 

+

122 def __cls_init__(cls): 

+

123 super().__cls_init__() 

+

124 

+

125 from pyVHDLParser.Blocks.Object.Signal import SignalDeclarationBlock 

+

126 from pyVHDLParser.Blocks.Object.SharedVariable import SharedVariableDeclarationBlock 

+

127 

+

128 cls.KEYWORDS.update({ 

+

129 # Keyword Transition 

+

130 SignalKeyword: SignalDeclarationBlock.stateSignalKeyword, 

+

131 SharedKeyword: SharedVariableDeclarationBlock.stateSharedKeyword 

+

132 }) 

+

133 

+

134 

+

135@export 

+

136class SequentialDeclarativeRegion(DeclarativeRegion): 

+

137 """Base-class for all sequential declarative region blocks.""" 

+

138 

+

139 @classmethod 

+

140 def __cls_init__(cls): 

+

141 super().__cls_init__() 

+

142 

+

143 # TODO: use key assignment: a[b] = c 

+

144 cls.KEYWORDS.update({ 

+

145 # Keyword Transition 

+

146 VariableKeyword: VariableDeclarationBlock.stateVariableKeyword 

+

147 }) 

+

148 

+

149 

+

150@export 

+

151class ConcurrentBeginBlock(BeginBlock): 

+

152 @classmethod 

+

153 def __cls_init__(cls): 

+

154 from pyVHDLParser.Blocks.Sequential import Process 

+

155 from pyVHDLParser.Blocks.Reporting.Assert import AssertBlock 

+

156 

+

157 cls.KEYWORDS = { 

+

158 # Keyword Transition 

+

159 AssertKeyword: AssertBlock.stateAssertKeyword, 

+

160 ProcessKeyword: Process.OpenBlock.stateProcessKeyword, 

+

161 } 

+

162 

+

163 @classmethod 

+

164 def stateStatementRegion(cls, parserState: TokenToBlockParser): 

+

165 parserState.NextState = cls.stateConcurrentRegion 

+

166 parserState.NextState(parserState) 

+

167 

+

168 @classmethod 

+

169 def stateConcurrentRegion(cls, parserState: TokenToBlockParser): 

+

170 token = parserState.Token 

+

171 if isinstance(token, SpaceToken): 

+

172 blockType = IndentationBlock if isinstance(token, IndentationToken) else WhitespaceBlock 

+

173 parserState.NewBlock = blockType(parserState.LastBlock, token) 

+

174 parserState.TokenMarker = None 

+

175 return 

+

176 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

177 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

178 parserState.NewBlock = block(parserState.LastBlock, token) 

+

179 parserState.TokenMarker = None 

+

180 return 

+

181 elif isinstance(token, WordToken): 181 ↛ 197line 181 didn't jump to line 197, because the condition on line 181 was never false

+

182 tokenValue = token.Value.lower() 

+

183 

+

184 for keyword in cls.KEYWORDS: 

+

185 if tokenValue == keyword.__KEYWORD__: 

+

186 newToken = keyword(fromExistingToken=token) 

+

187 parserState.PushState = cls.KEYWORDS[keyword] 

+

188 parserState.NewToken = newToken 

+

189 parserState.TokenMarker = newToken 

+

190 return 

+

191 

+

192 if tokenValue == "end": 192 ↛ 197line 192 didn't jump to line 197, because the condition on line 192 was never false

+

193 parserState.NewToken = EndKeyword(fromExistingToken=token) 

+

194 parserState.NextState = cls.END_BLOCK.stateEndKeyword 

+

195 return 

+

196 

+

197 raise BlockParserException( 

+

198 "Expected one of these keywords: END, {keywords}. Found: '{tokenValue}'.".format( 

+

199 keywords=", ".join( 

+

200 [kw.__KEYWORD__.upper() for kw in cls.KEYWORDS] 

+

201 ), 

+

202 tokenValue=token.Value 

+

203 ), token) 

+

204 

+

205 

+

206@export 

+

207class SequentialBeginBlock(BeginBlock): 

+

208 @classmethod 

+

209 def __cls_init__(cls): 

+

210 from pyVHDLParser.Blocks.ControlStructure.If import IfConditionBlock 

+

211 from pyVHDLParser.Blocks.ControlStructure.Case import CaseBlock 

+

212 from pyVHDLParser.Blocks.ControlStructure.Exit import ExitBlock 

+

213 from pyVHDLParser.Blocks.ControlStructure.Next import NextBlock 

+

214 from pyVHDLParser.Blocks.ControlStructure.Return import ReturnBlock 

+

215 from pyVHDLParser.Blocks.ControlStructure.ForLoop import IteratorBlock 

+

216 # from pyVHDLParser.Blocks.ControlStructure.WhileLoop import ConditionBlock 

+

217 from pyVHDLParser.Blocks.Reporting.Report import ReportBlock 

+

218 from pyVHDLParser.Blocks.ControlStructure.Null import NullBlock 

+

219 

+

220 cls.KEYWORDS = { 

+

221 # Keyword Transition 

+

222 IfKeyword: IfConditionBlock.stateIfKeyword, 

+

223 CaseKeyword: CaseBlock.stateCaseKeyword, 

+

224 ForKeyword: IteratorBlock.stateForKeyword, 

+

225 # WhileKeyword: ConditionBlock.stateWhileKeyword, 

+

226 ReturnKeyword: ReturnBlock.stateReturnKeyword, 

+

227 NextKeyword: NextBlock.stateNextKeyword, 

+

228 ExitKeyword: ExitBlock.stateExitKeyword, 

+

229 ReportKeyword: ReportBlock.stateReportKeyword, 

+

230 NullKeyword: NullBlock.stateNullKeyword 

+

231 } 

+

232 

+

233 @classmethod 

+

234 def stateStatementRegion(cls, parserState: TokenToBlockParser): 

+

235 cls.stateAnyRegion(parserState) 

+

236 

+

237 @classmethod 

+

238 def stateSequentialRegion(cls, parserState: TokenToBlockParser): 

+

239 cls.stateAnyRegion(parserState) 

+

240 

+

241 @classmethod 

+

242 def stateAnyRegion(cls, parserState: TokenToBlockParser): 

+

243 token = parserState.Token 

+

244 if isinstance(token, SpaceToken): 

+

245 blockType = IndentationBlock if isinstance(token, IndentationToken) else WhitespaceBlock 

+

246 parserState.NewBlock = blockType(parserState.LastBlock, token) 

+

247 parserState.TokenMarker = None 

+

248 return 

+

249 elif isinstance(token, (LinebreakToken, CommentToken)): 249 ↛ 250line 249 didn't jump to line 250, because the condition on line 249 was never true

+

250 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

251 parserState.NewBlock = block(parserState.LastBlock, token) 

+

252 parserState.TokenMarker = None 

+

253 return 

+

254 elif isinstance(token, WordToken): 254 ↛ 270line 254 didn't jump to line 270, because the condition on line 254 was never false

+

255 tokenValue = token.Value.lower() 

+

256 

+

257 for keyword in cls.KEYWORDS: 

+

258 if tokenValue == keyword.__KEYWORD__: 258 ↛ 259line 258 didn't jump to line 259, because the condition on line 258 was never true

+

259 newToken = keyword(fromExistingToken=token) 

+

260 parserState.PushState = cls.KEYWORDS[keyword] 

+

261 parserState.NewToken = newToken 

+

262 parserState.TokenMarker = newToken 

+

263 return 

+

264 

+

265 if tokenValue == "end": 265 ↛ 270line 265 didn't jump to line 270, because the condition on line 265 was never false

+

266 parserState.NewToken = EndKeyword(fromExistingToken=token) 

+

267 parserState.NextState = cls.END_BLOCK.stateEndKeyword 

+

268 return 

+

269 

+

270 raise BlockParserException( 

+

271 "Expected one of these keywords: END, {keywords}. Found: '{tokenValue}' at line {tokenPositionRow}:{tokenPositionColumn}.".format( 

+

272 keywords=", ".join( 

+

273 [kw.__KEYWORD__.upper() for kw in cls.KEYWORDS] 

+

274 ), 

+

275 tokenValue=token.Value, 

+

276 tokenPositionRow=token.Start.Row, 

+

277 tokenPositionColumn=token.Start.Column 

+

278 ), token) 

+
+ + + diff --git a/coverage/d_c650c0c44533ccba_InterfaceObject_py.html b/coverage/d_c650c0c44533ccba_InterfaceObject_py.html new file mode 100644 index 000000000..556df8d1f --- /dev/null +++ b/coverage/d_c650c0c44533ccba_InterfaceObject_py.html @@ -0,0 +1,637 @@ + + + + + Coverage for pyVHDLParser/Blocks/InterfaceObject.py: 29% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/InterfaceObject.py: + 29% +

+ +

+ 438 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Blocks.Type.ResolutionIndication import RecordResolutionIndicationBlock, \ 

+

33 SimpleResolutionIndicationBlock 

+

34from pyVHDLParser.Token import SpaceToken, LinebreakToken, CommentToken, WordToken, ExtendedIdentifier, MultiLineCommentToken 

+

35from pyVHDLParser.Token import IndentationToken, SingleLineCommentToken, CharacterToken, FusedCharacterToken 

+

36from pyVHDLParser.Token.Keywords import InKeyword, VariableAssignmentKeyword, OutKeyword, InoutKeyword, BufferKeyword, LinkageKeyword 

+

37from pyVHDLParser.Token.Keywords import IdentifierToken, BoundaryToken, DelimiterToken 

+

38from pyVHDLParser.Blocks import Block, TokenToBlockParser, CommentBlock, BlockParserException 

+

39from pyVHDLParser.Blocks.Common import LinebreakBlock, WhitespaceBlock 

+

40from pyVHDLParser.Blocks.Expression import ExpressionBlockEndedByCharORClosingRoundBracket 

+

41 

+

42 

+

43@export 

+

44class InterfaceObjectBlock(Block): 

+

45 OBJECT_KIND = "" 

+

46 MODES = {} 

+

47 EXPRESSION = None 

+

48 DELIMITER_BLOCK = None 

+

49 

+

50 @classmethod 

+

51 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

52 token = parserState.Token 

+

53 if isinstance(token, WordToken): 

+

54 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

55 parserState.NextState = cls.stateObjectName 

+

56 return 

+

57 elif isinstance(token, ExtendedIdentifier): 

+

58 parserState.NextState = cls.stateObjectName 

+

59 return 

+

60 elif isinstance(token, LinebreakToken): 

+

61 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

62 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

63 _ = LinebreakBlock(parserState.NewBlock, token) 

+

64 else: 

+

65 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

66 parserState.TokenMarker = None 

+

67 return 

+

68 elif isinstance(token, CommentToken): 

+

69 parserState.NewBlock = CommentBlock(parserState.LastBlock, token) 

+

70 parserState.TokenMarker = None 

+

71 return 

+

72 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

73 return 

+

74 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

75 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

76 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

77 parserState.TokenMarker = None 

+

78 return 

+

79 

+

80 raise BlockParserException("Expected interface {0} name (identifier).".format(cls.OBJECT_KIND), token) 

+

81 

+

82 @classmethod 

+

83 def stateObjectName(cls, parserState: TokenToBlockParser): 

+

84 token = parserState.Token 

+

85 if isinstance(token, SpaceToken): 85 ↛ 89line 85 didn't jump to line 89, because the condition on line 85 was never false

+

86 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

87 parserState.NextState = cls.stateWhitespace2 

+

88 return 

+

89 elif isinstance(token, CharacterToken) and (token == ":"): 

+

90 parserState.NewToken = DelimiterToken(fromExistingToken=token) 

+

91 parserState.NextState = cls.stateColon1 

+

92 return 

+

93 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

94 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

95 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

96 _ = block(parserState.NewBlock, token) 

+

97 parserState.TokenMarker = None 

+

98 parserState.NextState = cls.stateWhitespace2 

+

99 return 

+

100 

+

101 raise BlockParserException("Expected whitespace after interface {0} name.".format(cls.OBJECT_KIND), token) 

+

102 

+

103 @classmethod 

+

104 def stateWhitespace2(cls, parserState: TokenToBlockParser): 

+

105 token = parserState.Token 

+

106 if isinstance(token, CharacterToken) and (token == ":"): 106 ↛ 110line 106 didn't jump to line 110, because the condition on line 106 was never false

+

107 parserState.NewToken = DelimiterToken(fromExistingToken=token) 

+

108 parserState.NextState = cls.stateColon1 

+

109 return 

+

110 elif isinstance(token, LinebreakToken): 

+

111 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

112 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

113 _ = LinebreakBlock(parserState.NewBlock, token) 

+

114 else: 

+

115 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

116 parserState.TokenMarker = None 

+

117 return 

+

118 elif isinstance(token, CommentToken): 

+

119 parserState.NewBlock = CommentBlock(parserState.LastBlock, token) 

+

120 parserState.TokenMarker = None 

+

121 return 

+

122 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

123 return 

+

124 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

125 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

126 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

127 parserState.TokenMarker = None 

+

128 return 

+

129 

+

130 raise BlockParserException("Expected ':' after interface {0} name.".format(cls.OBJECT_KIND), token) 

+

131 

+

132 @classmethod 

+

133 def stateColon1(cls, parserState: TokenToBlockParser): 

+

134 token = parserState.Token 

+

135 if isinstance(token, WordToken): 135 ↛ 136line 135 didn't jump to line 136, because the condition on line 135 was never true

+

136 try: 

+

137 parserState.NewToken = cls.MODES[token.Value.lower()](fromExistingToken=token) 

+

138 parserState.NextState = cls.stateModeKeyword 

+

139 return 

+

140 except KeyError: 

+

141 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

142 parserState.NextState = cls.stateSubtypeIndication 

+

143 return 

+

144 elif isinstance(token, SpaceToken): 144 ↛ 148line 144 didn't jump to line 148, because the condition on line 144 was never false

+

145 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

146 parserState.NextState = cls.stateWhitespace3 

+

147 return 

+

148 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

149 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

150 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

151 _ = block(parserState.NewBlock, token) 

+

152 parserState.TokenMarker = None 

+

153 parserState.NextState = cls.stateWhitespace3 

+

154 return 

+

155 

+

156 raise BlockParserException("Expected subtype indication or whitespace after colon.", token) 

+

157 

+

158 @classmethod 

+

159 def stateWhitespace3(cls, parserState: TokenToBlockParser): 

+

160 token = parserState.Token 

+

161 if isinstance(token, WordToken): 161 ↛ 171line 161 didn't jump to line 171, because the condition on line 161 was never false

+

162 tokenValue = token.Value.lower() 

+

163 try: 

+

164 parserState.NewToken = cls.MODES[tokenValue](fromExistingToken=token) 

+

165 parserState.NextState = cls.stateModeKeyword 

+

166 return 

+

167 except KeyError: 

+

168 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

169 parserState.NextState = cls.stateSubtypeIndication 

+

170 return 

+

171 elif isinstance(token, ExtendedIdentifier): 

+

172 parserState.NextState = cls.stateSubtypeIndication 

+

173 return 

+

174 elif isinstance(token, LinebreakToken): 

+

175 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

176 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

177 _ = LinebreakBlock(parserState.NewBlock, token) 

+

178 else: 

+

179 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

180 parserState.TokenMarker = None 

+

181 return 

+

182 elif isinstance(token, CommentToken): 

+

183 parserState.NewBlock = CommentBlock(parserState.LastBlock, token) 

+

184 parserState.TokenMarker = None 

+

185 return 

+

186 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

187 return 

+

188 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

189 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

190 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

191 parserState.TokenMarker = None 

+

192 return 

+

193 

+

194 raise BlockParserException("Expected subtype indication or keyword IN.", token) 

+

195 

+

196 @classmethod 

+

197 def stateModeKeyword(cls, parserState: TokenToBlockParser): 

+

198 token = parserState.Token 

+

199 if isinstance(token, SpaceToken): 

+

200 parserState.NextState = cls.stateSubtypeIndication 

+

201 parserState.PushState = SimpleResolutionIndicationBlock.stateResolutionFunction 

+

202 return 

+

203 elif isinstance(token, CharacterToken) and (token == "("): 

+

204 parserState.NextState = cls.stateSubtypeIndication 

+

205 parserState.PushState = RecordResolutionIndicationBlock.stateOpeningParentesis 

+

206 return 

+

207 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

208 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

209 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

210 _ = block(parserState.NewBlock, token) 

+

211 parserState.TokenMarker = None 

+

212 parserState.NextState = cls.stateWhitespace4 

+

213 return 

+

214 

+

215 raise BlockParserException("Expected whitespace after keyword CONSTANT.", token) 

+

216 

+

217 @classmethod 

+

218 def stateWhitespace4(cls, parserState: TokenToBlockParser): 

+

219 token = parserState.Token 

+

220 if isinstance(token, WordToken): 

+

221 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

222 parserState.NextState = cls.stateSubtypeIndication 

+

223 return 

+

224 elif isinstance(token, ExtendedIdentifier): 

+

225 parserState.NextState = cls.stateSubtypeIndication 

+

226 return 

+

227 elif isinstance(token, LinebreakToken): 

+

228 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

229 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

230 _ = LinebreakBlock(parserState.NewBlock, token) 

+

231 else: 

+

232 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

233 parserState.TokenMarker = None 

+

234 return 

+

235 elif isinstance(token, CommentToken): 

+

236 parserState.NewBlock = CommentBlock(parserState.LastBlock, token) 

+

237 parserState.TokenMarker = None 

+

238 return 

+

239 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

240 return 

+

241 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

242 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

243 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

244 parserState.TokenMarker = None 

+

245 return 

+

246 

+

247 raise BlockParserException("Expected subtype indication (name).", token) 

+

248 

+

249 @classmethod 

+

250 def stateSubtypeIndication(cls, parserState: TokenToBlockParser): 

+

251 token = parserState.Token 

+

252 if isinstance(token, FusedCharacterToken) and (token == ":="): 252 ↛ 253line 252 didn't jump to line 253, because the condition on line 252 was never true

+

253 parserState.NewToken = VariableAssignmentKeyword(fromExistingToken=token) 

+

254 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

255 parserState.NextState = cls.DELIMITER_BLOCK.stateItemDelimiter 

+

256 parserState.PushState = cls.EXPRESSION.stateBeforeExpression 

+

257 parserState.TokenMarker = None 

+

258 parserState.Counter = 0 

+

259 return 

+

260 elif isinstance(token, CharacterToken): 

+

261 if token == '(': 261 ↛ 270line 261 didn't jump to line 270, because the condition on line 261 was never true

+

262 # parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

263 # parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, 

+

264 # endToken=parserState.NewToken.PreviousToken) 

+

265 # parserState.TokenMarker = parserState.NewToken 

+

266 # parserState.NextState = LoopBlock.stateSequentialRegion 

+

267 # parserState.PushState = ExpressionBlockEndedByLoopORToORDownto.stateExpression 

+

268 # return 

+

269 # elif token == ';': 

+

270 parserState.NewToken = DelimiterToken(fromExistingToken=token) 

+

271 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

272 _ = cls.DELIMITER_BLOCK(parserState.NewBlock, parserState.NewToken) 

+

273 parserState.Pop() 

+

274 return 

+

275 elif token == ')': 

+

276 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

277 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

278 parserState.Pop(2) 

+

279 parserState.TokenMarker = parserState.NewToken 

+

280 return 

+

281 elif isinstance(token, SpaceToken): 281 ↛ 282line 281 didn't jump to line 282, because the condition on line 281 was never true

+

282 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

283 parserState.NextState = cls.stateWhitespace5 

+

284 return 

+

285 elif isinstance(token, (LinebreakToken, CommentToken)): 285 ↛ 293line 285 didn't jump to line 293, because the condition on line 285 was never false

+

286 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

287 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

288 _ = block(parserState.NewBlock, token) 

+

289 parserState.TokenMarker = None 

+

290 parserState.NextState = cls.stateWhitespace5 

+

291 return 

+

292 

+

293 raise BlockParserException("Expected ';', ':=' or whitespace after subtype indication.", token) 

+

294 

+

295 @classmethod 

+

296 def stateWhitespace5(cls, parserState: TokenToBlockParser): 

+

297 token = parserState.Token 

+

298 if isinstance(token, FusedCharacterToken) and (token == ":="): 298 ↛ 299line 298 didn't jump to line 299, because the condition on line 298 was never true

+

299 parserState.NewToken = VariableAssignmentKeyword(fromExistingToken=token) 

+

300 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

301 parserState.NextState = cls.DELIMITER_BLOCK.stateItemDelimiter 

+

302 parserState.PushState = cls.EXPRESSION.stateBeforeExpression 

+

303 parserState.Counter = 0 

+

304 return 

+

305 elif isinstance(token, CharacterToken): 

+

306 if token == ';': 306 ↛ 307line 306 didn't jump to line 307, because the condition on line 306 was never true

+

307 parserState.NewToken = DelimiterToken(fromExistingToken=token) 

+

308 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

309 _ = cls.DELIMITER_BLOCK(parserState.NewBlock, parserState.NewToken) 

+

310 parserState.Pop() 

+

311 return 

+

312 elif token == ')': 312 ↛ 339line 312 didn't jump to line 339, because the condition on line 312 was never false

+

313 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

314 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

315 parserState.Pop(2) 

+

316 parserState.TokenMarker = parserState.NewToken 

+

317 return 

+

318 elif isinstance(token, LinebreakToken): 318 ↛ 319line 318 didn't jump to line 319, because the condition on line 318 was never true

+

319 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

320 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

321 _ = LinebreakBlock(parserState.NewBlock, token) 

+

322 else: 

+

323 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

324 parserState.TokenMarker = None 

+

325 return 

+

326 elif isinstance(token, CommentToken): 326 ↛ 327line 326 didn't jump to line 327, because the condition on line 326 was never true

+

327 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

328 _ = CommentBlock(parserState.LastBlock, token) 

+

329 parserState.TokenMarker = None 

+

330 return 

+

331 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 331 ↛ 333line 331 didn't jump to line 333, because the condition on line 331 was never false

+

332 return 

+

333 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

334 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

335 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

336 parserState.TokenMarker = None 

+

337 return 

+

338 

+

339 raise BlockParserException("Expected ';' or ':='.", token) 

+

340 

+

341 

+

342@export 

+

343class InterfaceConstantBlock(InterfaceObjectBlock): 

+

344 OBJECT_KIND = "constant" 

+

345 MODES = { 

+

346 "in": InKeyword 

+

347 } 

+

348 

+

349 @classmethod 

+

350 def stateConstantKeyword(cls, parserState: TokenToBlockParser): 

+

351 token = parserState.Token 

+

352 if isinstance(token, SpaceToken): 

+

353 parserState.NextState = cls.stateWhitespace1 

+

354 return 

+

355 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

356 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

357 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

358 _ = block(parserState.NewBlock, token) 

+

359 parserState.TokenMarker = None 

+

360 parserState.NextState = cls.stateWhitespace1 

+

361 return 

+

362 

+

363 raise BlockParserException("Expected whitespace after keyword CONSTANT.", token) 

+

364 

+

365 

+

366@export 

+

367class InterfaceVariableBlock(InterfaceObjectBlock): 

+

368 OBJECT_KIND = "variable" 

+

369 MODES = { 

+

370 "in": InKeyword, 

+

371 "out": OutKeyword, 

+

372 "inout": InoutKeyword 

+

373 } 

+

374 

+

375 @classmethod 

+

376 def stateVariableKeyword(cls, parserState: TokenToBlockParser): 

+

377 token = parserState.Token 

+

378 if isinstance(token, SpaceToken): 

+

379 parserState.NextState = cls.stateWhitespace1 

+

380 return 

+

381 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

382 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

383 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

384 _ = block(parserState.NewBlock, token) 

+

385 parserState.TokenMarker = None 

+

386 parserState.NextState = cls.stateWhitespace1 

+

387 return 

+

388 

+

389 raise BlockParserException("Expected whitespace after keyword VARIABLE.", token) 

+

390 

+

391 

+

392@export 

+

393class InterfaceSignalBlock(InterfaceObjectBlock): 

+

394 OBJECT_KIND = "signal" 

+

395 MODES = { 

+

396 "in": InKeyword, 

+

397 "out": OutKeyword, 

+

398 "inout": InoutKeyword, 

+

399 "buffer": BufferKeyword, 

+

400 "linkage": LinkageKeyword 

+

401 } 

+

402 

+

403 @classmethod 

+

404 def stateSignalKeyword(cls, parserState: TokenToBlockParser): 

+

405 token = parserState.Token 

+

406 if isinstance(token, SpaceToken): 

+

407 parserState.NextState = cls.stateWhitespace1 

+

408 return 

+

409 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

410 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

411 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

412 _ = block(parserState.NewBlock, token) 

+

413 parserState.TokenMarker = None 

+

414 parserState.NextState = cls.stateWhitespace1 

+

415 return 

+

416 

+

417 raise BlockParserException("Expected whitespace after keyword SIGNAL.", token) 

+

418 

+

419 

+

420@export 

+

421class InterfaceTypeBlock(Block): 

+

422 DELIMITER_BLOCK = None 

+

423 

+

424 @classmethod 

+

425 def stateTypeKeyword(cls, parserState: TokenToBlockParser): 

+

426 token = parserState.Token 

+

427 if isinstance(token, SpaceToken): 

+

428 parserState.NextState = cls.stateWhitespace1 

+

429 return 

+

430 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

431 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

432 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

433 _ = block(parserState.NewBlock, token) 

+

434 parserState.TokenMarker = None 

+

435 parserState.NextState = cls.stateWhitespace1 

+

436 return 

+

437 

+

438 raise BlockParserException("Expected whitespace after keyword CONSTANT.", token) 

+

439 

+

440 @classmethod 

+

441 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

442 token = parserState.Token 

+

443 if isinstance(token, WordToken): 

+

444 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

445 parserState.NextState = cls.stateTypeName 

+

446 return 

+

447 elif isinstance(token, ExtendedIdentifier): 

+

448 parserState.NextState = cls.stateTypeName 

+

449 return 

+

450 elif isinstance(token, LinebreakToken): 

+

451 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

452 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

453 _ = LinebreakBlock(parserState.NewBlock, token) 

+

454 else: 

+

455 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

456 parserState.TokenMarker = None 

+

457 return 

+

458 elif isinstance(token, CommentToken): 

+

459 parserState.NewBlock = CommentBlock(parserState.LastBlock, token) 

+

460 parserState.TokenMarker = None 

+

461 return 

+

462 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

463 return 

+

464 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

465 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

466 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

467 parserState.TokenMarker = None 

+

468 return 

+

469 

+

470 raise BlockParserException("Expected interface type name (identifier).", token) 

+

471 

+

472 @classmethod 

+

473 def stateTypeName(cls, parserState: TokenToBlockParser): 

+

474 token = parserState.Token 

+

475 if isinstance(token, CharacterToken): 

+

476 if token == ';': 

+

477 parserState.NewToken = DelimiterToken(fromExistingToken=token) 

+

478 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

479 _ = cls.DELIMITER_BLOCK(parserState.NewBlock, parserState.NewToken) 

+

480 parserState.Pop() 

+

481 return 

+

482 elif token == ')': 

+

483 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

484 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

485 parserState.Pop(2) 

+

486 parserState.TokenMarker = parserState.NewToken 

+

487 return 

+

488 elif isinstance(token, SpaceToken): 

+

489 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

490 parserState.NextState = cls.stateWhitespace2 

+

491 return 

+

492 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

493 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

494 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

495 _ = block(parserState.NewBlock, token) 

+

496 parserState.TokenMarker = None 

+

497 parserState.NextState = cls.stateWhitespace2 

+

498 return 

+

499 

+

500 raise BlockParserException("Expected ';', ')' or whitespace after interface type name.", token) 

+

501 

+

502 @classmethod 

+

503 def stateWhitespace2(cls, parserState: TokenToBlockParser): 

+

504 token = parserState.Token 

+

505 if isinstance(token, CharacterToken): 

+

506 if token == ';': 

+

507 parserState.NewToken = DelimiterToken(fromExistingToken=token) 

+

508 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

509 _ = cls.DELIMITER_BLOCK(parserState.NewBlock, parserState.NewToken) 

+

510 parserState.Pop() 

+

511 return 

+

512 elif token == ')': 

+

513 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

514 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

515 parserState.Pop(2) 

+

516 parserState.TokenMarker = parserState.NewToken 

+

517 return 

+

518 elif isinstance(token, LinebreakToken): 

+

519 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

520 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

521 _ = LinebreakBlock(parserState.NewBlock, token) 

+

522 else: 

+

523 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

524 parserState.TokenMarker = None 

+

525 return 

+

526 elif isinstance(token, CommentToken): 

+

527 parserState.NewBlock = CommentBlock(parserState.LastBlock, token) 

+

528 parserState.TokenMarker = None 

+

529 return 

+

530 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

531 return 

+

532 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

533 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

534 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

535 parserState.TokenMarker = None 

+

536 return 

+

537 

+

538 raise BlockParserException("Expected ';' or ')'.", token) 

+
+ + + diff --git a/coverage/d_c650c0c44533ccba___init___py.html b/coverage/d_c650c0c44533ccba___init___py.html new file mode 100644 index 000000000..d879bc10e --- /dev/null +++ b/coverage/d_c650c0c44533ccba___init___py.html @@ -0,0 +1,645 @@ + + + + + Coverage for pyVHDLParser/Blocks/__init__.py: 78% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/__init__.py: + 78% +

+ +

+ 313 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from types import FunctionType 

+

31from typing import List, Callable, Iterator, Generator, Tuple, Any 

+

32 

+

33from pyTooling.Decorators import export 

+

34from pyTooling.MetaClasses import ExtendedType 

+

35from pyTooling.TerminalUI import LineTerminal 

+

36 

+

37from pyVHDLParser import StartOfDocument, EndOfDocument, StartOfSnippet, EndOfSnippet 

+

38from pyVHDLParser.Base import ParserException 

+

39from pyVHDLParser.Token import CharacterToken, Token, SpaceToken, IndentationToken, LinebreakToken, CommentToken, TokenIterator 

+

40from pyVHDLParser.Token import WordToken, EndOfDocumentToken, StartOfDocumentToken 

+

41from pyVHDLParser.Token.Keywords import LibraryKeyword, UseKeyword, ContextKeyword, EntityKeyword, ArchitectureKeyword, PackageKeyword 

+

42 

+

43 

+

44@export 

+

45class BlockParserException(ParserException): 

+

46 """Base-class for exceptions when reading tokens and generating blocks.""" 

+

47 

+

48 _token: Token #: Token that was involved in an exception situation 

+

49 

+

50 def __init__(self, message, token): 

+

51 super().__init__(message) 

+

52 self._token = token 

+

53 

+

54 @property 

+

55 def Token(self) -> Token: 

+

56 """Returns the token involved in an exception situation.""" 

+

57 return self._token 

+

58 

+

59 

+

60@export 

+

61class TokenToBlockParser(metaclass=ExtendedType, useSlots=True): 

+

62 """Represents the current state of a token-to-block parser.""" 

+

63 

+

64 _iterator: Iterator[Token] 

+

65 _stack: List[Tuple[Callable[['TokenToBlockParser'], None], int]] 

+

66 _tokenMarker: Token 

+

67 

+

68 Token: Token 

+

69 NextState: Callable[['TokenToBlockParser'], None] 

+

70 # ReIssue: bool 

+

71 NewToken: Token 

+

72 NewBlock: 'Block' 

+

73 LastBlock: 'Block' 

+

74 Counter: int 

+

75 

+

76 def __init__(self, tokenGenerator: Iterator[Token]): 

+

77 """Initializes the parser state.""" 

+

78 

+

79 self._iterator = iter(tokenGenerator) 

+

80 self._stack = [] 

+

81 self._tokenMarker = None 

+

82 

+

83 startToken = next(self._iterator) 

+

84 

+

85 if not isinstance(startToken, StartOfDocumentToken): 85 ↛ 86line 85 didn't jump to line 86, because the condition on line 85 was never true

+

86 raise BlockParserException("First token is not a StartOfDocumentToken.", startToken) 

+

87 

+

88 startBlock = StartOfDocumentBlock(startToken) 

+

89 

+

90 self.Token = startBlock.StartToken 

+

91 self.NextState = StartOfDocumentBlock.stateDocument 

+

92 # self.ReIssue = False 

+

93 self.NewToken = None 

+

94 self.NewBlock = startBlock 

+

95 self.LastBlock = None 

+

96 self.Counter = 0 

+

97 

+

98 @property 

+

99 def PushState(self) -> Callable[['TokenToBlockParser'], None]: 

+

100 return self.NextState 

+

101 

+

102 @PushState.setter 

+

103 def PushState(self, value: Callable[['TokenToBlockParser'], None]): 

+

104 self._stack.append(( 

+

105 self.NextState, 

+

106 self.Counter 

+

107 )) 

+

108 LineTerminal().WriteDebug(" pushed: " + str(self.NextState)) 

+

109 self.NextState = value 

+

110 self._tokenMarker = None 

+

111 

+

112 @property 

+

113 def TokenMarker(self) -> Token: 

+

114 if (self.NewToken is not None) and (self._tokenMarker is self.Token): 

+

115 LineTerminal().WriteDebug(" {DARK_GREEN}@TokenMarker: {0!s} => {GREEN}{1!s}{NOCOLOR}".format(self._tokenMarker, self.NewToken, **LineTerminal.Foreground)) 

+

116 self._tokenMarker = self.NewToken 

+

117 return self._tokenMarker 

+

118 

+

119 @TokenMarker.setter 

+

120 def TokenMarker(self, value: Token): 

+

121 self._tokenMarker = value 

+

122 

+

123 def __eq__(self, other: Any) -> bool: 

+

124 """Implement a '==' operator for the current state.""" 

+

125 return self.NextState is other 

+

126 

+

127 def __ne__(self, other: Any) -> bool: 

+

128 """Implement a '!=' operator for the current state.""" 

+

129 return self.NextState is not other 

+

130 

+

131 def __str__(self) -> str: 

+

132 """Returns the current state (function name) as str.""" 

+

133 return f"{self.NextState.__func__.__qualname__}" 

+

134 

+

135 def __repr__(self) -> str: 

+

136 """Returns the current state (full) as str.""" 

+

137 return "{state}\n token: {token}\n Marker: {marker}\n NewToken: {newToken}\n newBlock: {newBlock}".format( 

+

138 state=self.NextState.__func__.__qualname__, 

+

139 token=self.Token, 

+

140 marker=self.TokenMarker, 

+

141 newToken=self.NewToken, 

+

142 newBlock=self.NewBlock, 

+

143 ) 

+

144 

+

145 def Pop(self, n: int = 1, tokenMarker: Token = None) -> None: 

+

146 for i in range(n): 

+

147 top = self._stack.pop() 

+

148 LineTerminal().WriteDebug("popped: " + str(top[0])) 

+

149 self.NextState, self.Counter = top 

+

150 self._tokenMarker = tokenMarker 

+

151 

+

152 def __call__(self) -> Generator['Block', Token, None]: 

+

153 from pyVHDLParser.Token import EndOfDocumentToken 

+

154 from pyVHDLParser.Blocks.Common import LinebreakBlock, EmptyLineBlock 

+

155 

+

156 for token in self._iterator: 

+

157 # set parserState.Token to current token 

+

158 self.Token = token 

+

159 

+

160 # overwrite an existing token and connect the next token with the new one 

+

161 if self.NewToken is not None: 

+

162 # print("{MAGENTA}NewToken: {token}{NOCOLOR}".format(token=self.NewToken, **Console.Foreground)) 

+

163 # update topmost TokenMarker 

+

164 if self._tokenMarker is token.PreviousToken: 

+

165 # XXX: LineTerminal().WriteDebug(" update token marker: {0!s} -> {1!s}".format(self._tokenMarker, self.NewToken)) 

+

166 self._tokenMarker = self.NewToken 

+

167 

+

168 token.PreviousToken = self.NewToken 

+

169 self.NewToken = None 

+

170 

+

171 # an empty marker means: fill on next yield run 

+

172 if self._tokenMarker is None: 

+

173 LineTerminal().WriteDebug(" new token marker: None -> {0!s}".format(token)) 

+

174 self._tokenMarker = token 

+

175 

+

176 # a new block is assembled 

+

177 while self.NewBlock is not None: 

+

178 if isinstance(self.NewBlock, LinebreakBlock) and isinstance(self.LastBlock, (LinebreakBlock, EmptyLineBlock)): 178 ↛ 179line 178 didn't jump to line 179, because the condition on line 178 was never true

+

179 self.LastBlock = EmptyLineBlock(self.LastBlock, self.NewBlock.StartToken) 

+

180 self.LastBlock.NextBlock = self.NewBlock.NextBlock 

+

181 else: 

+

182 self.LastBlock = self.NewBlock 

+

183 

+

184 self.NewBlock = self.NewBlock.NextBlock 

+

185 yield self.LastBlock 

+

186 

+

187 # if self.debug: print("{MAGENTA}------ iteration end ------{NOCOLOR}".format(**Console.Foreground)) 

+

188 # XXX: LineTerminal().WriteDebug(" {DARK_GRAY}state={state!s: <50} token={token!s: <40}{NOCOLOR} ".format(state=self, token=token, **LineTerminal.Foreground)) 

+

189 # execute a state 

+

190 self.NextState(self) 

+

191 

+

192 else: 

+

193 if isinstance(self.Token, EndOfDocumentToken) and isinstance(self.NewBlock, EndOfDocumentBlock): 193 ↛ 196line 193 didn't jump to line 196, because the condition on line 193 was never false

+

194 yield self.NewBlock 

+

195 else: 

+

196 raise BlockParserException("Unexpected end of document.", self.Token) 

+

197 

+

198 

+

199@export 

+

200class MetaBlock(ExtendedType): 

+

201 """ 

+

202 A :term:`meta-class` to construct *Block* classes. 

+

203 

+

204 Modifications done by this meta-class: 

+

205 

+

206 * Register all classes of type :class:`Block` or derived variants in a class field :attr:`Block.BLOCKS` in this meta-class. 

+

207 * Register all method of name `state....` in the constructed class' attribute :attr:`Block.__STATES__`. 

+

208 """ 

+

209 

+

210 BLOCKS: List['Block'] = [] #: List of all classes of type :class:`Block` or derived variants 

+

211 

+

212 def __new__(cls, className, baseClasses, classMembers: dict): 

+

213 # """Register all state*** methods in a list called `__STATES__`.""" 

+

214 states = [] 

+

215 for memberName, memberObject in classMembers.items(): 

+

216 if isinstance(memberObject, FunctionType) and (memberName[:5] == "state"): 

+

217 states.append(memberObject) 

+

218 

+

219 block = super().__new__(cls, className, baseClasses, classMembers, useSlots=True) 

+

220 block.__STATES__ = states 

+

221 

+

222 cls.BLOCKS.append(block) 

+

223 

+

224 return block 

+

225 

+

226 

+

227@export 

+

228class BlockIterator: 

+

229 _startBlock: 'Block' 

+

230 _currentBlock: 'Block' 

+

231 _stopBlock: 'Block' 

+

232 _inclusiveStopBlock: bool 

+

233 

+

234 _state: int #: internal states: 0 = normal, 1 = reached stopBlock, 2 = reached EndOfBlock 

+

235 

+

236 def __init__(self, startBlock: 'Block', inclusiveStartBlock: bool=False, inclusiveStopBlock: bool=True, stopBlock: 'Block'=None): 

+

237 self._startBlock = startBlock if inclusiveStartBlock else startBlock.NextBlock 

+

238 self._currentBlock = self._startBlock 

+

239 self._stopBlock = stopBlock 

+

240 self._inclusiveStopBlock = inclusiveStopBlock 

+

241 

+

242 self._state = 0 

+

243 

+

244 def __iter__(self) -> 'BlockIterator': 

+

245 return self 

+

246 

+

247 def __next__(self) -> 'Block': 

+

248 # in last call of '__next__', the last block in the sequence was returned 

+

249 if self._state > 0: 

+

250 raise StopIteration(self._state) 

+

251 

+

252 block = self._currentBlock 

+

253 if block is self._stopBlock: 

+

254 if not self._inclusiveStopBlock: 

+

255 raise StopIteration(1) 

+

256 else: 

+

257 self._currentBlock = None 

+

258 self._state = 1 

+

259 elif isinstance(self._currentBlock, EndOfBlock): 

+

260 if not self._inclusiveStopBlock: 

+

261 raise StopIteration(2) 

+

262 else: 

+

263 self._currentBlock = None 

+

264 self._state = 2 

+

265 else: 

+

266 self._currentBlock = block.NextBlock 

+

267 if self._currentBlock is None: 

+

268 raise ParserException("Found open end while iterating block sequence.") # FIXME: how to append last block? 

+

269 

+

270 return block 

+

271 

+

272 @property 

+

273 def StartBlock(self) -> 'Block': 

+

274 return self._startBlock 

+

275 

+

276 @property 

+

277 def CurrentBlock(self) -> 'Block': 

+

278 return self._currentBlock 

+

279 

+

280 @property 

+

281 def StopBlock(self) -> 'Block': 

+

282 return self._stopBlock 

+

283 

+

284 def Reset(self): 

+

285 self._currentBlock = self._startBlock 

+

286 

+

287 

+

288@export 

+

289class BlockReverseIterator: 

+

290 startBlock: 'Block' 

+

291 currentBlock: 'Block' 

+

292 stopBlock: 'Block' 

+

293 

+

294 state: int #: internal states: 0 = normal, 1 = reached stopBlock, 2 = reached StartOfBlock 

+

295 

+

296 def __init__(self, startBlock: 'Block', inclusiveStartBlock: bool=False, stopBlock: 'Block'=None): 

+

297 self.startBlock = startBlock 

+

298 self.currentBlock = startBlock if inclusiveStartBlock else startBlock.NextBlock 

+

299 self.stopBlock = stopBlock 

+

300 

+

301 self.state = 0 

+

302 

+

303 def __iter__(self) -> 'BlockReverseIterator': 

+

304 return self 

+

305 

+

306 def __next__(self) -> 'Block': 

+

307 # in last call of '__next__', the last block in the sequence was returned 

+

308 if self.state > 0: 

+

309 raise StopIteration(self.state) 

+

310 

+

311 block = self.currentBlock 

+

312 if block is self.stopToken: 

+

313 self.currentBlock = None 

+

314 self.state = 1 

+

315 elif isinstance(self.currentBlock, EndOfBlock): 

+

316 self.currentBlock = None 

+

317 self.state = 2 

+

318 else: 

+

319 self.currentBlock = block.PreviousBlock 

+

320 if self.currentBlock is None: 

+

321 raise ParserException("Found open end while iterating block sequence.") # FIXME: how to append last block? 

+

322 

+

323 return block 

+

324 

+

325 

+

326@export 

+

327class Block(metaclass=MetaBlock): 

+

328 """ 

+

329 Base-class for all :term:`block` classes. 

+

330 """ 

+

331 

+

332 __STATES__: List #: List of all `state...` methods in this class. 

+

333 

+

334 _previousBlock: 'Block' #: Reference to the previous block. 

+

335 NextBlock: 'Block' #: Reference to the next block. 

+

336 StartToken: Token #: Reference to the first token in the scope of this block. 

+

337 EndToken: Token #: Reference to the last token in the scope of this block. 

+

338 MultiPart: bool #: True, if this block has multiple parts. 

+

339 

+

340 def __init__(self, previousBlock: 'Block', startToken: Token, endToken: Token = None, multiPart: bool = False): 

+

341 """Base-class constructor for a new block instance.""" 

+

342 

+

343 previousBlock.NextBlock = self 

+

344 self._previousBlock = previousBlock 

+

345 self.NextBlock = None 

+

346 self.StartToken = startToken 

+

347 self.EndToken = startToken if (endToken is None) else endToken 

+

348 self.MultiPart = multiPart 

+

349 

+

350 def __len__(self) -> int: 

+

351 """Returns the length of a block in characters from :attr:`~Block.StartToken` to :attr:`~Block.EndToken`.""" 

+

352 return self.EndToken.End.Absolute - self.StartToken.Start.Absolute + 1 

+

353 

+

354 def __iter__(self) -> TokenIterator: 

+

355 """Returns a token iterator that iterates from :attr:`~Block.StartToken` to :attr:`~Block.EndToken`.""" 

+

356 return TokenIterator(self.StartToken, inclusiveStartToken=True, stopToken=self.EndToken) 

+

357 

+

358 def GetIterator(self, inclusiveStartBlock: bool = False, inclusiveStopBlock: bool = True, stopBlock: 'Block'=None) -> BlockIterator: 

+

359 return BlockIterator(self, inclusiveStartBlock=inclusiveStartBlock, inclusiveStopBlock=inclusiveStopBlock, stopBlock=stopBlock) 

+

360 

+

361 def GetReverseIterator(self, inclusiveStartBlock: bool = False, inclusiveStopBlock: bool = True, stopBlock: 'Block'=None) -> BlockReverseIterator: 

+

362 return BlockReverseIterator(self, inclusiveStartBlock=inclusiveStartBlock, inclusiveStopBlock=inclusiveStopBlock, stopBlock=stopBlock) 

+

363 

+

364 def __str__(self) -> str: 

+

365 buffer = "" 

+

366 for token in self: 

+

367 if isinstance(token, CharacterToken): 367 ↛ 368line 367 didn't jump to line 368, because the condition on line 367 was never true

+

368 buffer += repr(token) 

+

369 else: 

+

370 try: 

+

371 buffer += token.Value 

+

372 except AttributeError: 

+

373 pass 

+

374 

+

375 return buffer 

+

376 

+

377 def __repr__(self) -> str: 

+

378 return "[{blockName: <50s} {stream: <62s} at {start!s} .. {end!s}]".format( 

+

379 blockName="{module}.{classname}{multiparted}".format( 

+

380 module=self.__module__.rpartition(".")[2], 

+

381 classname=self.__class__.__name__, 

+

382 multiparted=("*" if self.MultiPart else "") 

+

383 ), 

+

384 stream="'" + self.__str__() + "'", 

+

385 start=self.StartToken.Start, 

+

386 end=self.EndToken.End 

+

387 ) 

+

388 

+

389 @property 

+

390 def PreviousBlock(self) -> 'Block': 

+

391 return self._previousBlock 

+

392 @PreviousBlock.setter 

+

393 def PreviousBlock(self, value: 'Block'): 

+

394 self._previousBlock = value 

+

395 value.NextBlock = self 

+

396 

+

397 @property 

+

398 def Length(self) -> int: 

+

399 """Returns the length of a block in characters from :attr:`~Block.StartToken` to :attr:`~Block.EndToken`.""" 

+

400 return len(self) 

+

401 

+

402 @property 

+

403 def States(self) -> List[Callable]: 

+

404 """Returns a list of all `state...` methods in this class.""" 

+

405 return self.__STATES__ 

+

406 

+

407 @classmethod 

+

408 def stateError(cls, parserState: TokenToBlockParser): 

+

409 """Predefined state to catch error situations.""" 

+

410 raise BlockParserException("Reached unreachable state!") 

+

411 

+

412 

+

413@export 

+

414class SkipableBlock(Block): 

+

415 """Base-class for blocks that can be skipped in fast-forward scanning.""" 

+

416 pass 

+

417 

+

418@export 

+

419class FinalBlock(Block): 

+

420 """Base-class for blocks that are final in a fast-forward scanning.""" 

+

421 pass 

+

422 

+

423@export 

+

424class CommentBlock(SkipableBlock): 

+

425 """Base-class for all comment blocks.""" 

+

426 pass 

+

427 

+

428 

+

429@export 

+

430class StartOfBlock(Block): 

+

431 """Base-class for a first block in a sequence of double-linked blocks.""" 

+

432 

+

433 def __init__(self, startToken): 

+

434 self._previousBlock = None 

+

435 self.NextBlock = None 

+

436 self.StartToken = startToken 

+

437 self.EndToken = None 

+

438 self.MultiPart = False 

+

439 

+

440 # TODO: needs review: should TokenIterator be used? 

+

441 def __iter__(self): 

+

442 yield self.StartToken 

+

443 

+

444 def __len__(self) -> int: 

+

445 return 0 

+

446 

+

447 def __repr__(self) -> str: 

+

448 return "[{name}]".format( 

+

449 name=self.__class__.__name__ 

+

450 ) 

+

451 

+

452 

+

453@export 

+

454class EndOfBlock(Block): 

+

455 """Base-class for a last block in a sequence of double-linked blocks.""" 

+

456 

+

457 def __init__(self, previousBlock, endToken): 

+

458 super().__init__(previousBlock, endToken) 

+

459 

+

460 # TODO: needs review: should TokenIterator be used? 

+

461 def __iter__(self) -> Iterator[Token]: 

+

462 yield self.StartToken 

+

463 

+

464 def __len__(self) -> int: 

+

465 return 0 

+

466 

+

467 def __repr__(self) -> str: 

+

468 return "[{name}]".format( 

+

469 name=self.__class__.__name__ 

+

470 ) 

+

471 

+

472 

+

473@export 

+

474class StartOfDocumentBlock(StartOfBlock, StartOfDocument): 

+

475 """First block in a sequence of double-linked blocks.""" 

+

476 

+

477 KEYWORDS = None 

+

478 

+

479 @classmethod 

+

480 def __cls_init__(cls): 

+

481 from pyVHDLParser.Blocks.Common import IndentationBlock, WhitespaceBlock, LinebreakBlock 

+

482 from pyVHDLParser.Blocks.Reference import Library, Use, Context 

+

483 from pyVHDLParser.Blocks.Sequential import Package 

+

484 from pyVHDLParser.Blocks.Structural import Entity, Architecture 

+

485 

+

486 cls.KEYWORDS = { 

+

487 # Keyword Transition 

+

488 LibraryKeyword: Library.StartBlock.stateLibraryKeyword, 

+

489 UseKeyword: Use.StartBlock.stateUseKeyword, 

+

490 ContextKeyword: Context.NameBlock.stateContextKeyword, 

+

491 EntityKeyword: Entity.NameBlock.stateEntityKeyword, 

+

492 ArchitectureKeyword: Architecture.NameBlock.stateArchitectureKeyword, 

+

493 PackageKeyword: Package.NameBlock.statePackageKeyword 

+

494 } 

+

495 

+

496 @classmethod 

+

497 def stateDocument(cls, parserState: TokenToBlockParser): 

+

498 from pyVHDLParser.Blocks.Common import IndentationBlock, WhitespaceBlock, LinebreakBlock 

+

499 

+

500 token = parserState.Token 

+

501 if isinstance(token, SpaceToken): 

+

502 blockType = IndentationBlock if isinstance(token, IndentationToken) else WhitespaceBlock 

+

503 parserState.NewBlock = blockType(parserState.LastBlock, token) 

+

504 parserState.TokenMarker = None 

+

505 return 

+

506 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

507 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

508 parserState.NewBlock = block(parserState.LastBlock, token) 

+

509 parserState.TokenMarker = None 

+

510 return 

+

511 elif isinstance(token, WordToken): 

+

512 tokenValue = token.Value.lower() 

+

513 

+

514 for keyword in cls.KEYWORDS: 514 ↛ 526line 514 didn't jump to line 526, because the loop on line 514 didn't complete

+

515 if tokenValue == keyword.__KEYWORD__: 

+

516 newToken = keyword(fromExistingToken=token) 

+

517 parserState.PushState = cls.KEYWORDS[keyword] 

+

518 parserState.NewToken = newToken 

+

519 parserState.TokenMarker = newToken 

+

520 return 

+

521 

+

522 elif isinstance(token, EndOfDocumentToken): 522 ↛ 526line 522 didn't jump to line 526, because the condition on line 522 was never false

+

523 parserState.NewBlock = EndOfDocumentBlock(parserState.LastBlock, token) 

+

524 return 

+

525 

+

526 raise BlockParserException( 

+

527 "Expected one of these keywords: {keywords}. Found: '{tokenValue}'.".format( 

+

528 keywords=", ".join( 

+

529 [kw.__KEYWORD__.upper() for kw in cls.KEYWORDS] 

+

530 ), 

+

531 tokenValue=token.Value 

+

532 ), token) 

+

533 

+

534 

+

535@export 

+

536class EndOfDocumentBlock(EndOfBlock, EndOfDocument): 

+

537 """Last block in a sequence of double-linked blocks.""" 

+

538 pass 

+

539 

+

540@export 

+

541class StartOfSnippetBlock(StartOfBlock, StartOfSnippet): 

+

542 pass 

+

543 

+

544@export 

+

545class EndOfSnippetBlock(EndOfBlock, EndOfSnippet): 

+

546 pass 

+
+ + + diff --git a/coverage/d_c9b97ba0573833c3___init___py.html b/coverage/d_c9b97ba0573833c3___init___py.html new file mode 100644 index 000000000..e19252fc3 --- /dev/null +++ b/coverage/d_c9b97ba0573833c3___init___py.html @@ -0,0 +1,217 @@ + + + + + Coverage for pyVHDLParser/DocumentModel/Reference/__init__.py: 17% + + + + + +
+
+

+ Coverage for pyVHDLParser/DocumentModel/Reference/__init__.py: + 17% +

+ +

+ 67 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyVHDLModel.DesignUnit import LibraryClause as VHDLModel_LibraryClause, UseClause as VHDLModel_UseClause 

+

31 

+

32from pyVHDLParser.Token.Keywords import IdentifierToken, AllKeyword 

+

33from pyVHDLParser.Blocks import BlockParserException 

+

34from pyVHDLParser.Blocks.Reference import Library as LibraryBlocks, Use as UseBlocks 

+

35 

+

36 

+

37class LibraryClause(VHDLModel_LibraryClause): 

+

38 def __init__(self, libraryName): 

+

39 super().__init__() 

+

40 self._library = libraryName 

+

41 

+

42 @classmethod 

+

43 def stateParse(cls, currentNode, group): 

+

44 from pyVHDLParser.DocumentModel import DOMParserException 

+

45 

+

46 for block in group: 

+

47 if isinstance(block, LibraryBlocks.StartBlock): 

+

48 pass 

+

49 elif isinstance(block, LibraryBlocks.LibraryNameBlock): 

+

50 libraryName = block.StartToken.Value 

+

51 library = cls(libraryName) 

+

52 print("Found library '{0}'. Adding to current node '{1!s}'.".format(libraryName, currentNode)) 

+

53 currentNode.AddLibrary(library) 

+

54 elif isinstance(block, LibraryBlocks.DelimiterBlock): 

+

55 pass 

+

56 elif isinstance(block, LibraryBlocks.EndBlock): 

+

57 return 

+

58 else: 

+

59 raise DOMParserException("Unexpected block type in LibraryGroup.") 

+

60 

+

61 raise DOMParserException("End of use clause not found.") 

+

62 

+

63 def __str__(self): 

+

64 return self._library 

+

65 

+

66 

+

67class PackageReference(VHDLModel_UseClause): 

+

68 def __init__(self, libraryName, packageName, itemName): 

+

69 super().__init__() 

+

70 self._library = libraryName 

+

71 self._package = packageName 

+

72 self._item = itemName 

+

73 

+

74 @classmethod 

+

75 def stateParse(cls, currentNode, group): 

+

76 from pyVHDLParser.DocumentModel import DOMParserException 

+

77 

+

78 for block in group: 

+

79 if isinstance(block, UseBlocks.StartBlock): 

+

80 pass 

+

81 elif isinstance(block, UseBlocks.ReferenceNameBlock): 

+

82 tokenIterator = iter(block) 

+

83 

+

84 for token in tokenIterator: 

+

85 if isinstance(token, IdentifierToken): 

+

86 libraryName = token.Value 

+

87 break 

+

88 else: 

+

89 raise BlockParserException("", None) # FIXME: change to DOMParserException 

+

90 

+

91 for token in tokenIterator: 

+

92 if isinstance(token, IdentifierToken): 

+

93 packageName = token.Value 

+

94 break 

+

95 else: 

+

96 raise BlockParserException("", None) # FIXME: change to DOMParserException 

+

97 

+

98 for token in tokenIterator: 

+

99 if isinstance(token, IdentifierToken): 

+

100 objectName = token.Value 

+

101 break 

+

102 elif isinstance(token, AllKeyword): 

+

103 objectName = "ALL" 

+

104 break 

+

105 else: 

+

106 raise BlockParserException("", None) # FIXME: change to DOMParserException 

+

107 

+

108 use = cls(libraryName, packageName, objectName) 

+

109 currentNode.AddUse(use) 

+

110 elif isinstance(block, UseBlocks.EndBlock): 

+

111 return 

+

112 else: 

+

113 raise DOMParserException("Unexpected block type in LibraryGroup.") 

+

114 

+

115 raise DOMParserException("End of use clause not found.") 

+

116 

+

117 def __str__(self): 

+

118 return "{0}.{1}".format(self._library, self._package) 

+
+ + + diff --git a/coverage/d_cb482dc298bd8d7f_Case_py.html b/coverage/d_cb482dc298bd8d7f_Case_py.html new file mode 100644 index 000000000..a72363ffb --- /dev/null +++ b/coverage/d_cb482dc298bd8d7f_Case_py.html @@ -0,0 +1,366 @@ + + + + + Coverage for pyVHDLParser/Blocks/ControlStructure/Case.py: 27% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/ControlStructure/Case.py: + 27% +

+ +

+ 206 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Token import CharacterToken, LinebreakToken, SpaceToken, IndentationToken, CommentToken, MultiLineCommentToken, SingleLineCommentToken 

+

33from pyVHDLParser.Token.Keywords import WordToken, BoundaryToken, CaseKeyword, WhenKeyword, IsKeyword, EndKeyword, MapAssociationKeyword 

+

34from pyVHDLParser.Blocks import BlockParserException, Block, CommentBlock, TokenToBlockParser 

+

35from pyVHDLParser.Blocks.Common import LinebreakBlock, IndentationBlock, WhitespaceBlock 

+

36from pyVHDLParser.Blocks.Generic import SequentialBeginBlock 

+

37from pyVHDLParser.Blocks.Generic1 import EndBlock as EndBlockBase 

+

38from pyVHDLParser.Blocks.Expression import ExpressionBlockEndedByCharORClosingRoundBracket, ExpressionBlockEndedByKeywordORClosingRoundBracket 

+

39 

+

40 

+

41@export 

+

42class EndBlock(EndBlockBase): 

+

43 KEYWORD = CaseKeyword 

+

44 EXPECTED_NAME = KEYWORD.__KEYWORD__ 

+

45 

+

46 

+

47@export 

+

48class ArrowBlock(SequentialBeginBlock): 

+

49 END_BLOCK = EndBlock 

+

50 

+

51 @classmethod 

+

52 def stateArrowKeyword(cls, parserState: TokenToBlockParser): 

+

53 cls.stateSequentialRegion(parserState) 

+

54 

+

55 @classmethod 

+

56 def stateSequentialRegion(cls, parserState: TokenToBlockParser): 

+

57 token = parserState.Token 

+

58 if isinstance(token, WordToken) and (token <= "when"): 

+

59 newToken = WhenKeyword(fromExistingToken=token) 

+

60 parserState.NewToken = newToken 

+

61 parserState.TokenMarker = newToken 

+

62 parserState.NextState = WhenBlock.stateWhenKeyword 

+

63 return 

+

64 

+

65 super().stateSequentialRegion(parserState) 

+

66 

+

67 

+

68@export 

+

69class WhenExpressionBlock(ExpressionBlockEndedByCharORClosingRoundBracket): 

+

70 EXIT_CHAR = "=>" 

+

71 EXIT_TOKEN = MapAssociationKeyword 

+

72 EXIT_BLOCK = ArrowBlock 

+

73 

+

74 

+

75@export 

+

76class WhenBlock(SequentialBeginBlock): 

+

77 END_BLOCK = EndBlock 

+

78 

+

79 @classmethod 

+

80 def stateWhenKeyword(cls, parserState: TokenToBlockParser): 

+

81 token = parserState.Token 

+

82 if isinstance(token, CharacterToken) and (token == "("): 

+

83 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

84 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

85 parserState.TokenMarker = parserState.NewToken 

+

86 parserState.NextState = ArrowBlock.stateArrowKeyword 

+

87 parserState.PushState = WhenExpressionBlock.stateExpression 

+

88 return 

+

89 elif isinstance(token, SpaceToken): 

+

90 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

91 parserState.NextState = cls.stateWhitespace1 

+

92 return 

+

93 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

94 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

95 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

96 _ = block(parserState.NewBlock, token) 

+

97 parserState.TokenMarker = None 

+

98 parserState.NextState = cls.stateWhitespace1 

+

99 return 

+

100 else: 

+

101 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken) 

+

102 parserState.NextState = ArrowBlock.stateArrowKeyword 

+

103 parserState.PushState = WhenExpressionBlock.stateExpression 

+

104 parserState.TokenMarker = parserState.Token 

+

105 parserState.NextState(parserState) 

+

106 return 

+

107 

+

108 @classmethod 

+

109 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

110 token = parserState.Token 

+

111 if isinstance(token, LinebreakToken): 

+

112 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

113 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

114 _ = LinebreakBlock(parserState.NewBlock, token) 

+

115 else: 

+

116 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

117 parserState.TokenMarker = None 

+

118 return 

+

119 elif isinstance(token, CommentToken): 

+

120 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

121 _ = CommentBlock(parserState.NewBlock, token) 

+

122 parserState.TokenMarker = None 

+

123 return 

+

124 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

125 return 

+

126 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

127 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

128 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

129 parserState.TokenMarker = None 

+

130 return 

+

131 else: 

+

132 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken) 

+

133 parserState.NextState = ArrowBlock.stateArrowKeyword 

+

134 parserState.PushState = WhenExpressionBlock.stateExpression 

+

135 parserState.TokenMarker = parserState.Token 

+

136 parserState.NextState(parserState) 

+

137 return 

+

138 

+

139 

+

140@export 

+

141class IsBlock(SequentialBeginBlock): 

+

142 END_BLOCK = None 

+

143 

+

144 @classmethod 

+

145 def stateIsKeyword(cls, parserState: TokenToBlockParser): 

+

146 token = parserState.Token 

+

147 if isinstance(token, SpaceToken): 

+

148 blockType = IndentationBlock if isinstance(token, IndentationToken) else WhitespaceBlock 

+

149 parserState.NewBlock = blockType(parserState.LastBlock, token) 

+

150 parserState.TokenMarker = None 

+

151 parserState.NextState = cls.stateWhitespace1 

+

152 return 

+

153 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

154 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

155 parserState.NewBlock = block(parserState.LastBlock, token) 

+

156 parserState.TokenMarker = None 

+

157 parserState.NextState = cls.stateWhitespace1 

+

158 return 

+

159 

+

160 raise BlockParserException("Expected whitespace after keyword IS.", token) 

+

161 

+

162 @classmethod 

+

163 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

164 token = parserState.Token 

+

165 if isinstance(token, WordToken): 

+

166 tokenValue = token.Value.lower() 

+

167 if tokenValue == "when": 

+

168 newToken = WhenKeyword(fromExistingToken=token) 

+

169 parserState.NewToken = newToken 

+

170 parserState.TokenMarker = newToken 

+

171 parserState.NextState = WhenBlock.stateWhenKeyword 

+

172 return 

+

173 elif tokenValue == "end": 

+

174 parserState.NewToken = EndKeyword(fromExistingToken=token) 

+

175 parserState.NextState = cls.END_BLOCK.stateEndKeyword 

+

176 return 

+

177 elif isinstance(token, LinebreakToken): 

+

178 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

179 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

180 _ = LinebreakBlock(parserState.NewBlock, token) 

+

181 else: 

+

182 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

183 parserState.TokenMarker = None 

+

184 return 

+

185 elif isinstance(token, CommentToken): 

+

186 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

187 _ = CommentBlock(parserState.NewBlock, token) 

+

188 parserState.TokenMarker = None 

+

189 return 

+

190 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

191 return 

+

192 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

193 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

194 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

195 parserState.TokenMarker = None 

+

196 return 

+

197 

+

198 raise BlockParserException("Expected one of these keywords: WHEN or END. Found: '{tokenValue}'.".format(tokenValue=token.Value), token) 

+

199 

+

200 

+

201@export 

+

202class CaseExpressionBlock(ExpressionBlockEndedByKeywordORClosingRoundBracket): 

+

203 EXIT_KEYWORD = IsKeyword 

+

204 EXIT_BLOCK = IsBlock 

+

205 

+

206 

+

207@export 

+

208class CaseBlock(Block): 

+

209 @classmethod 

+

210 def stateCaseKeyword(cls, parserState: TokenToBlockParser): 

+

211 token = parserState.Token 

+

212 if isinstance(token, CharacterToken) and (token == "("): 

+

213 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

214 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

215 parserState.TokenMarker = parserState.NewToken 

+

216 parserState.NextState = IsBlock.stateIsKeyword 

+

217 parserState.PushState = CaseExpressionBlock.stateExpression 

+

218 return 

+

219 elif isinstance(token, SpaceToken): 

+

220 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

221 parserState.NextState = cls.stateWhitespace1 

+

222 return 

+

223 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

224 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

225 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

226 _ = block(parserState.NewBlock, token) 

+

227 parserState.TokenMarker = None 

+

228 parserState.NextState = cls.stateWhitespace1 

+

229 return 

+

230 else: 

+

231 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken) 

+

232 parserState.NextState = IsBlock.stateIsKeyword 

+

233 parserState.PushState = CaseExpressionBlock.stateExpression 

+

234 parserState.TokenMarker = parserState.Token 

+

235 parserState.NextState(parserState) 

+

236 return 

+

237 

+

238 @classmethod 

+

239 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

240 token = parserState.Token 

+

241 if isinstance(token, LinebreakToken): 

+

242 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

243 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

244 _ = LinebreakBlock(parserState.NewBlock, token) 

+

245 else: 

+

246 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

247 parserState.TokenMarker = None 

+

248 return 

+

249 elif isinstance(token, CommentToken): 

+

250 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

251 _ = CommentBlock(parserState.NewBlock, token) 

+

252 parserState.TokenMarker = None 

+

253 return 

+

254 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

255 return 

+

256 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

257 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

258 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

259 parserState.TokenMarker = None 

+

260 return 

+

261 else: 

+

262 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken) 

+

263 parserState.NextState = IsBlock.stateIsKeyword 

+

264 parserState.PushState = CaseExpressionBlock.stateExpression 

+

265 parserState.TokenMarker = parserState.Token 

+

266 parserState.NextState(parserState) 

+

267 return 

+
+ + + diff --git a/coverage/d_cb482dc298bd8d7f_Exit_py.html b/coverage/d_cb482dc298bd8d7f_Exit_py.html new file mode 100644 index 000000000..6618eb226 --- /dev/null +++ b/coverage/d_cb482dc298bd8d7f_Exit_py.html @@ -0,0 +1,328 @@ + + + + + Coverage for pyVHDLParser/Blocks/ControlStructure/Exit.py: 18% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/ControlStructure/Exit.py: + 18% +

+ +

+ 174 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Token import SpaceToken, LinebreakToken, CommentToken, IndentationToken, SingleLineCommentToken, MultiLineCommentToken 

+

33from pyVHDLParser.Token import WordToken, ExtendedIdentifier, CharacterToken 

+

34from pyVHDLParser.Token.Keywords import BoundaryToken, IdentifierToken, EndToken, WhenKeyword 

+

35from pyVHDLParser.Blocks import Block, TokenToBlockParser, CommentBlock, BlockParserException 

+

36from pyVHDLParser.Blocks.Common import LinebreakBlock, WhitespaceBlock 

+

37from pyVHDLParser.Blocks.Generic1 import EndOfStatementBlock 

+

38from pyVHDLParser.Blocks.Expression import ExpressionBlockEndedBySemicolon 

+

39 

+

40 

+

41@export 

+

42class EndBlock(EndOfStatementBlock): 

+

43 pass 

+

44 

+

45 

+

46@export 

+

47class ExitConditionBlock(ExpressionBlockEndedBySemicolon): 

+

48 END_BLOCK = EndBlock 

+

49 

+

50 

+

51@export 

+

52class ExitBlock(Block): 

+

53 @classmethod 

+

54 def stateExitKeyword(cls, parserState: TokenToBlockParser): 

+

55 token = parserState.Token 

+

56 if isinstance(token, CharacterToken) and (token == ";"): 

+

57 parserState.NewToken = EndToken(fromExistingToken=token) 

+

58 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

59 parserState.Pop() 

+

60 return 

+

61 elif isinstance(token, SpaceToken): 

+

62 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

63 # parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken, multiPart=True) 

+

64 # parserState.TokenMarker = None 

+

65 parserState.NextState = cls.stateWhitespace1 

+

66 return 

+

67 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

68 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

69 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

70 _ = block(parserState.NewBlock, token) 

+

71 parserState.TokenMarker = None 

+

72 parserState.NextState = cls.stateWhitespace1 

+

73 return 

+

74 

+

75 raise BlockParserException("Expected ';' or whitespace after keyword EXIT.", token) 

+

76 

+

77 @classmethod 

+

78 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

79 token = parserState.Token 

+

80 if isinstance(token, CharacterToken) and (token == ";"): 

+

81 parserState.NewToken = EndToken(fromExistingToken=token) 

+

82 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

83 parserState.Pop() 

+

84 return 

+

85 elif isinstance(token, WordToken): 

+

86 if token <= "when": 

+

87 parserState.NewToken = WhenKeyword(fromExistingToken=token) 

+

88 parserState.NextState = cls.stateWhenKeyword 

+

89 return 

+

90 else: 

+

91 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

92 # parserState.TokenMarker = parserState.NewToken 

+

93 parserState.NextState = cls.stateExitLoopLabel 

+

94 return 

+

95 elif isinstance(token, ExtendedIdentifier): 

+

96 parserState.NextState = cls.stateExitLoopLabel 

+

97 return 

+

98 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

99 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

100 parserState.NewBlock = block(parserState.LastBlock, token) 

+

101 parserState.TokenMarker = None 

+

102 return 

+

103 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

104 return 

+

105 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

106 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

107 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

108 parserState.TokenMarker = None 

+

109 return 

+

110 

+

111 raise BlockParserException("Expected ';', keyword WHEN or loop label.", token) 

+

112 

+

113 @classmethod 

+

114 def stateExitLoopLabel(cls, parserState: TokenToBlockParser): 

+

115 token = parserState.Token 

+

116 if isinstance(token, CharacterToken) and (token == ";"): 

+

117 parserState.NewToken = EndToken(fromExistingToken=token) 

+

118 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

119 parserState.Pop() 

+

120 return 

+

121 elif isinstance(token, SpaceToken): 

+

122 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

123 # parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token, multiPart=True) 

+

124 # parserState.TokenMarker = None 

+

125 parserState.NextState = cls.stateWhitespace2 

+

126 return 

+

127 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

128 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

129 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

130 _ = block(parserState.NewBlock, token) 

+

131 parserState.TokenMarker = None 

+

132 parserState.NextState = cls.stateWhitespace2 

+

133 return 

+

134 

+

135 raise BlockParserException("Expected ';' or whitespace after loop label.", token) 

+

136 

+

137 @classmethod 

+

138 def stateWhitespace2(cls, parserState: TokenToBlockParser): 

+

139 token = parserState.Token 

+

140 if isinstance(token, CharacterToken) and (token == ";"): 

+

141 parserState.NewToken = EndToken(fromExistingToken=token) 

+

142 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

143 parserState.Pop() 

+

144 return 

+

145 elif isinstance(token, WordToken) and (token <= "when"): 

+

146 parserState.NewToken = WhenKeyword(fromExistingToken=token) 

+

147 parserState.NextState = cls.stateWhenKeyword 

+

148 return 

+

149 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

150 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

151 parserState.NewBlock = block(parserState.LastBlock, token) 

+

152 parserState.TokenMarker = None 

+

153 return 

+

154 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

155 return 

+

156 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

157 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

158 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

159 parserState.TokenMarker = None 

+

160 return 

+

161 

+

162 raise BlockParserException("Expected ';' or keyword WHEN.", token) 

+

163 

+

164 @classmethod 

+

165 def stateWhenKeyword(cls, parserState: TokenToBlockParser): 

+

166 token = parserState.Token 

+

167 if isinstance(token, CharacterToken): 

+

168 if (token == ";"): 

+

169 parserState.NewToken = EndToken(fromExistingToken=token) 

+

170 parserState.NewBlock = EndBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

171 parserState.Pop() 

+

172 return 

+

173 elif (token == "("): 

+

174 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

175 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

176 parserState.TokenMarker = parserState.NewToken 

+

177 parserState.NextState = EndBlock.stateError 

+

178 parserState.PushState = ExitConditionBlock.stateExpression 

+

179 return 

+

180 elif isinstance(token, SpaceToken): 

+

181 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

182 parserState.NextState = cls.stateWhitespace3 

+

183 return 

+

184 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

185 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

186 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

187 _ = block(parserState.NewBlock, token) 

+

188 parserState.TokenMarker = None 

+

189 parserState.NextState = cls.stateWhitespace3 

+

190 return 

+

191 

+

192 raise BlockParserException("Expected ';' or whitespace after keyword RETURN.", token) 

+

193 

+

194 @classmethod 

+

195 def stateWhitespace3(cls, parserState: TokenToBlockParser): 

+

196 token = parserState.Token 

+

197 if isinstance(token, CharacterToken) and (token == ";"): 

+

198 parserState.NewToken = EndToken(fromExistingToken=token) 

+

199 parserState.NewBlock = EndBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

200 parserState.Pop() 

+

201 return 

+

202 elif isinstance(token, LinebreakToken): 

+

203 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

204 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

205 _ = LinebreakBlock(parserState.NewBlock, token) 

+

206 else: 

+

207 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

208 parserState.TokenMarker = None 

+

209 return 

+

210 elif isinstance(token, CommentToken): 

+

211 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

212 _ = CommentBlock(parserState.NewBlock, token) 

+

213 parserState.TokenMarker = None 

+

214 return 

+

215 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

216 return 

+

217 elif (isinstance(token, SpaceToken) and ( 

+

218 isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken))): 

+

219 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

220 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

221 parserState.TokenMarker = None 

+

222 return 

+

223 else: 

+

224 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken) 

+

225 parserState.NextState = EndBlock.stateError 

+

226 parserState.PushState = ExitConditionBlock.stateExpression 

+

227 parserState.TokenMarker = parserState.Token 

+

228 parserState.NextState(parserState) 

+

229 return 

+
+ + + diff --git a/coverage/d_cb482dc298bd8d7f_ForLoop_py.html b/coverage/d_cb482dc298bd8d7f_ForLoop_py.html new file mode 100644 index 000000000..cba0a19bc --- /dev/null +++ b/coverage/d_cb482dc298bd8d7f_ForLoop_py.html @@ -0,0 +1,329 @@ + + + + + Coverage for pyVHDLParser/Blocks/ControlStructure/ForLoop.py: 28% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/ControlStructure/ForLoop.py: + 28% +

+ +

+ 171 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Token import LinebreakToken, CommentToken, MultiLineCommentToken, IndentationToken, SingleLineCommentToken, ExtendedIdentifier, CharacterToken, SpaceToken 

+

33from pyVHDLParser.Token.Keywords import InKeyword, ForKeyword, LoopKeyword, BoundaryToken, IdentifierToken, WordToken 

+

34from pyVHDLParser.Blocks import BlockParserException, Block, CommentBlock, TokenToBlockParser 

+

35from pyVHDLParser.Blocks.Common import LinebreakBlock, WhitespaceBlock 

+

36from pyVHDLParser.Blocks.Generic import SequentialBeginBlock 

+

37from pyVHDLParser.Blocks.Generic1 import EndBlock as EndBlockBase 

+

38from pyVHDLParser.Blocks.Expression import ExpressionBlockEndedByKeywordORClosingRoundBracket, ExpressionBlockEndedByKeywordOrToOrDownto 

+

39 

+

40 

+

41@export 

+

42class IteratorBlock(Block): 

+

43 @classmethod 

+

44 def stateForKeyword(cls, parserState: TokenToBlockParser): 

+

45 token = parserState.Token 

+

46 if isinstance(token, SpaceToken): 

+

47 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

48 parserState.NextState = cls.stateWhitespace1 

+

49 return 

+

50 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

51 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

52 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

53 _ = block(parserState.NewBlock, token) 

+

54 parserState.TokenMarker = None 

+

55 parserState.NextState = cls.stateWhitespace1 

+

56 return 

+

57 

+

58 raise BlockParserException("Expected whitespace after keyword FOR.", token) 

+

59 

+

60 @classmethod 

+

61 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

62 token = parserState.Token 

+

63 if isinstance(token, WordToken): 

+

64 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

65 parserState.NextState = cls.stateIteratorName 

+

66 return 

+

67 elif isinstance(token, ExtendedIdentifier): 

+

68 parserState.NextState = cls.stateIteratorName 

+

69 return 

+

70 elif isinstance(token, LinebreakToken): 

+

71 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

72 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

73 _ = LinebreakBlock(parserState.NewBlock, token) 

+

74 else: 

+

75 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

76 parserState.TokenMarker = None 

+

77 return 

+

78 elif isinstance(token, CommentToken): 

+

79 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

80 _ = CommentBlock(parserState.NewBlock, token) 

+

81 parserState.TokenMarker = None 

+

82 return 

+

83 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

84 return 

+

85 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

86 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

87 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

88 parserState.TokenMarker = None 

+

89 return 

+

90 

+

91 raise BlockParserException("Expected iterator name (identifier).", token) 

+

92 

+

93 @classmethod 

+

94 def stateIteratorName(cls, parserState: TokenToBlockParser): 

+

95 token = parserState.Token 

+

96 if isinstance(token, SpaceToken): 

+

97 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

98 parserState.NextState = cls.stateWhitespace2 

+

99 return 

+

100 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

101 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

102 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

103 _ = block(parserState.NewBlock, token) 

+

104 parserState.TokenMarker = None 

+

105 parserState.NextState = cls.stateWhitespace2 

+

106 return 

+

107 

+

108 raise BlockParserException("Expected whitespace after iterator name.", token) 

+

109 

+

110 @classmethod 

+

111 def stateWhitespace2(cls, parserState: TokenToBlockParser): 

+

112 token = parserState.Token 

+

113 if isinstance(token, WordToken) and (token <= "in"): 

+

114 parserState.NewToken = InKeyword(fromExistingToken=token) 

+

115 # parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

116 # parserState.TokenMarker = None 

+

117 parserState.NextState = cls.stateInKeyword 

+

118 return 

+

119 elif isinstance(token, LinebreakToken): 

+

120 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

121 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

122 _ = LinebreakBlock(parserState.NewBlock, token) 

+

123 else: 

+

124 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

125 parserState.TokenMarker = None 

+

126 return 

+

127 elif isinstance(token, CommentToken): 

+

128 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

129 _ = CommentBlock(parserState.NewBlock, token) 

+

130 parserState.TokenMarker = None 

+

131 return 

+

132 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

133 return 

+

134 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

135 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

136 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

137 parserState.TokenMarker = None 

+

138 return 

+

139 

+

140 raise BlockParserException("Expected keyword IN after iterator name.", token) 

+

141 

+

142 @classmethod 

+

143 def stateInKeyword(cls, parserState: TokenToBlockParser): 

+

144 token = parserState.Token 

+

145 if isinstance(token, CharacterToken) and (token == "("): 

+

146 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

147 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

148 parserState.TokenMarker = parserState.NewToken 

+

149 parserState.NextState = LoopBlock.stateSequentialRegion 

+

150 parserState.PushState = ExpressionBlockEndedByLoopORToORDownto.stateExpression 

+

151 return 

+

152 elif isinstance(token, SpaceToken): 

+

153 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

154 parserState.NextState = cls.stateWhitespace3 

+

155 return 

+

156 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

157 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

158 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

159 _ = block(parserState.NewBlock, token) 

+

160 parserState.TokenMarker = None 

+

161 parserState.NextState = cls.stateWhitespace3 

+

162 return 

+

163 

+

164 raise BlockParserException("Expected '(' or whitespace after keyword IN.", token) 

+

165 

+

166 @classmethod 

+

167 def stateWhitespace3(cls, parserState: TokenToBlockParser): 

+

168 token = parserState.Token 

+

169 if isinstance(token, LinebreakToken): 

+

170 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

171 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

172 _ = LinebreakBlock(parserState.NewBlock, token) 

+

173 else: 

+

174 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

175 parserState.TokenMarker = None 

+

176 return 

+

177 elif isinstance(token, CommentToken): 

+

178 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

179 _ = CommentBlock(parserState.NewBlock, token) 

+

180 parserState.TokenMarker = None 

+

181 return 

+

182 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

183 return 

+

184 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

185 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

186 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

187 parserState.TokenMarker = None 

+

188 return 

+

189 else: 

+

190 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken) 

+

191 parserState.NextState = LoopBlock.stateLoopKeyword 

+

192 parserState.PushState = ExpressionBlockEndedByLoop.stateExpression 

+

193 parserState.PushState = ExpressionBlockEndedByLoopORToORDownto.stateExpression 

+

194 parserState.TokenMarker = parserState.Token 

+

195 parserState.NextState(parserState) 

+

196 return 

+

197 

+

198 

+

199@export 

+

200class EndBlock(EndBlockBase): 

+

201 KEYWORD = ForKeyword 

+

202 KEYWORD_IS_OPTIONAL = False 

+

203 EXPECTED_NAME = KEYWORD.__KEYWORD__ 

+

204 

+

205 

+

206@export 

+

207class LoopBlock(SequentialBeginBlock): 

+

208 END_BLOCK = EndBlock 

+

209 

+

210 @classmethod 

+

211 def stateLoopKeyword(cls, parserState: TokenToBlockParser): 

+

212 parserState.NextState = cls.stateSequentialRegion 

+

213 parserState.NextState(parserState) 

+

214 

+

215 

+

216@export 

+

217class ExpressionBlockEndedByLoopORToORDownto(ExpressionBlockEndedByKeywordOrToOrDownto): 

+

218 EXIT_KEYWORD = LoopKeyword 

+

219 EXIT_BLOCK = LoopBlock 

+

220 

+

221 

+

222@export 

+

223class ExpressionBlockEndedByLoop(ExpressionBlockEndedByKeywordORClosingRoundBracket): 

+

224 EXIT_KEYWORD = LoopKeyword 

+

225 EXIT_BLOCK = LoopBlock 

+

226 

+

227 

+

228@export 

+

229class LoopIterationDirectionBlock(Block): 

+

230 pass 

+
+ + + diff --git a/coverage/d_cb482dc298bd8d7f_If_py.html b/coverage/d_cb482dc298bd8d7f_If_py.html new file mode 100644 index 000000000..3e92a7f35 --- /dev/null +++ b/coverage/d_cb482dc298bd8d7f_If_py.html @@ -0,0 +1,315 @@ + + + + + Coverage for pyVHDLParser/Blocks/ControlStructure/If.py: 29% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/ControlStructure/If.py: + 29% +

+ +

+ 161 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Token import CharacterToken, LinebreakToken, SpaceToken, IndentationToken, CommentToken, MultiLineCommentToken, SingleLineCommentToken 

+

33from pyVHDLParser.Token.Keywords import WordToken, BoundaryToken, IfKeyword, ThenKeyword, ElsIfKeyword, ElseKeyword 

+

34from pyVHDLParser.Blocks import Block, CommentBlock, TokenToBlockParser 

+

35from pyVHDLParser.Blocks.Common import LinebreakBlock, WhitespaceBlock 

+

36from pyVHDLParser.Blocks.Generic import SequentialBeginBlock 

+

37from pyVHDLParser.Blocks.Generic1 import EndBlock as EndBlockBase 

+

38from pyVHDLParser.Blocks.Expression import ExpressionBlockEndedByKeywordORClosingRoundBracket 

+

39 

+

40 

+

41@export 

+

42class EndBlock(EndBlockBase): 

+

43 KEYWORD = IfKeyword 

+

44 EXPECTED_NAME = KEYWORD.__KEYWORD__ 

+

45 

+

46 

+

47@export 

+

48class ThenBlock(SequentialBeginBlock): 

+

49 END_BLOCK = EndBlock 

+

50 

+

51 @classmethod 

+

52 def stateThenKeyword(cls, parserState: TokenToBlockParser): 

+

53 cls.stateSequentialRegion(parserState) 

+

54 

+

55 @classmethod 

+

56 def stateSequentialRegion(cls, parserState: TokenToBlockParser): 

+

57 token = parserState.Token 

+

58 if isinstance(token, WordToken): 

+

59 tokenValue = token.Value.lower() 

+

60 

+

61 if tokenValue == "elsif": 

+

62 newToken = ElsIfKeyword(fromExistingToken=token) 

+

63 parserState.NewToken = newToken 

+

64 parserState.TokenMarker = newToken 

+

65 parserState.NextState = ElsIfConditionBlock.stateElsIfKeyword 

+

66 return 

+

67 elif tokenValue == "else": 

+

68 newToken = ElseKeyword(fromExistingToken=token) 

+

69 parserState.NewToken = newToken 

+

70 parserState.NewBlock = ElseBlock(parserState.LastBlock, newToken) 

+

71 parserState.TokenMarker = None 

+

72 parserState.NextState = ElseBlock.stateElseKeyword 

+

73 return 

+

74 

+

75 super().stateSequentialRegion(parserState) 

+

76 

+

77 

+

78@export 

+

79class ElseBlock(SequentialBeginBlock): 

+

80 END_BLOCK = EndBlock 

+

81 

+

82 @classmethod 

+

83 def stateElseKeyword(cls, parserState: TokenToBlockParser): 

+

84 cls.stateSequentialRegion(parserState) 

+

85 

+

86 

+

87@export 

+

88class ExpressionBlockEndedByThen(ExpressionBlockEndedByKeywordORClosingRoundBracket): 

+

89 EXIT_KEYWORD = ThenKeyword 

+

90 EXIT_BLOCK = ThenBlock 

+

91 

+

92 

+

93@export 

+

94class IfConditionBlock(Block): 

+

95 @classmethod 

+

96 def stateIfKeyword(cls, parserState: TokenToBlockParser): 

+

97 token = parserState.Token 

+

98 if isinstance(token, CharacterToken) and (token == "("): 

+

99 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

100 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

101 parserState.TokenMarker = parserState.NewToken 

+

102 parserState.NextState = ThenBlock.stateThenKeyword 

+

103 parserState.PushState = ExpressionBlockEndedByThen.stateExpression 

+

104 return 

+

105 elif isinstance(token, SpaceToken): 

+

106 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

107 parserState.NextState = cls.stateWhitespace1 

+

108 return 

+

109 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

110 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

111 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

112 _ = block(parserState.NewBlock, token) 

+

113 parserState.TokenMarker = None 

+

114 parserState.NextState = cls.stateWhitespace1 

+

115 return 

+

116 else: 

+

117 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken) 

+

118 parserState.NextState = ThenBlock.stateThenKeyword 

+

119 parserState.PushState = ExpressionBlockEndedByThen.stateExpression 

+

120 parserState.TokenMarker = parserState.Token 

+

121 parserState.NextState(parserState) 

+

122 return 

+

123 

+

124 @classmethod 

+

125 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

126 token = parserState.Token 

+

127 if isinstance(token, LinebreakToken): 

+

128 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

129 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

130 _ = LinebreakBlock(parserState.NewBlock, token) 

+

131 else: 

+

132 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

133 parserState.TokenMarker = None 

+

134 return 

+

135 elif isinstance(token, CommentToken): 

+

136 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

137 _ = CommentBlock(parserState.NewBlock, token) 

+

138 parserState.TokenMarker = None 

+

139 return 

+

140 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

141 return 

+

142 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

143 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

144 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

145 parserState.TokenMarker = None 

+

146 return 

+

147 else: 

+

148 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken) 

+

149 parserState.NextState = ThenBlock.stateThenKeyword 

+

150 parserState.PushState = ExpressionBlockEndedByThen.stateExpression 

+

151 parserState.TokenMarker = parserState.Token 

+

152 parserState.NextState(parserState) 

+

153 return 

+

154 

+

155 

+

156@export 

+

157class ElsIfConditionBlock(Block): 

+

158 @classmethod 

+

159 def stateElsIfKeyword(cls, parserState: TokenToBlockParser): 

+

160 token = parserState.Token 

+

161 if isinstance(token, CharacterToken) and (token == "("): 

+

162 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

163 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

164 parserState.TokenMarker = parserState.NewToken 

+

165 parserState.NextState = ThenBlock.stateThenKeyword 

+

166 parserState.PushState = ExpressionBlockEndedByThen.stateExpression 

+

167 return 

+

168 elif isinstance(token, SpaceToken): 

+

169 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

170 parserState.NextState = cls.stateWhitespace1 

+

171 return 

+

172 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

173 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

174 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

175 _ = block(parserState.NewBlock, token) 

+

176 parserState.TokenMarker = None 

+

177 parserState.NextState = cls.stateWhitespace1 

+

178 return 

+

179 else: 

+

180 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken) 

+

181 parserState.NextState = ThenBlock.stateThenKeyword 

+

182 parserState.PushState = ExpressionBlockEndedByThen.stateExpression 

+

183 parserState.TokenMarker = parserState.Token 

+

184 parserState.NextState(parserState) 

+

185 return 

+

186 

+

187 @classmethod 

+

188 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

189 token = parserState.Token 

+

190 if isinstance(token, LinebreakToken): 

+

191 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

192 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

193 _ = LinebreakBlock(parserState.NewBlock, token) 

+

194 else: 

+

195 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

196 parserState.TokenMarker = None 

+

197 return 

+

198 elif isinstance(token, CommentToken): 

+

199 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

200 _ = CommentBlock(parserState.NewBlock, token) 

+

201 parserState.TokenMarker = None 

+

202 return 

+

203 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

204 return 

+

205 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

206 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

207 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

208 parserState.TokenMarker = None 

+

209 return 

+

210 else: 

+

211 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken) 

+

212 parserState.NextState = ThenBlock.stateThenKeyword 

+

213 parserState.PushState = ExpressionBlockEndedByThen.stateExpression 

+

214 parserState.TokenMarker = parserState.Token 

+

215 parserState.NextState(parserState) 

+

216 return 

+
+ + + diff --git a/coverage/d_cb482dc298bd8d7f_Next_py.html b/coverage/d_cb482dc298bd8d7f_Next_py.html new file mode 100644 index 000000000..b3ff36310 --- /dev/null +++ b/coverage/d_cb482dc298bd8d7f_Next_py.html @@ -0,0 +1,328 @@ + + + + + Coverage for pyVHDLParser/Blocks/ControlStructure/Next.py: 18% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/ControlStructure/Next.py: + 18% +

+ +

+ 174 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Token import SpaceToken, LinebreakToken, CommentToken, IndentationToken, SingleLineCommentToken, MultiLineCommentToken 

+

33from pyVHDLParser.Token import WordToken, ExtendedIdentifier, CharacterToken 

+

34from pyVHDLParser.Token.Keywords import BoundaryToken, IdentifierToken, EndToken, WhenKeyword 

+

35from pyVHDLParser.Blocks import Block, TokenToBlockParser, CommentBlock, BlockParserException 

+

36from pyVHDLParser.Blocks.Common import LinebreakBlock, WhitespaceBlock 

+

37from pyVHDLParser.Blocks.Generic1 import EndOfStatementBlock 

+

38from pyVHDLParser.Blocks.Expression import ExpressionBlockEndedBySemicolon 

+

39 

+

40 

+

41@export 

+

42class EndBlock(EndOfStatementBlock): 

+

43 pass 

+

44 

+

45 

+

46@export 

+

47class NextConditionBlock(ExpressionBlockEndedBySemicolon): 

+

48 END_BLOCK = EndBlock 

+

49 

+

50 

+

51@export 

+

52class NextBlock(Block): 

+

53 @classmethod 

+

54 def stateNextKeyword(cls, parserState: TokenToBlockParser): 

+

55 token = parserState.Token 

+

56 if isinstance(token, CharacterToken) and (token == ";"): 

+

57 parserState.NewToken = EndToken(fromExistingToken=token) 

+

58 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

59 parserState.Pop() 

+

60 return 

+

61 elif isinstance(token, SpaceToken): 

+

62 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

63 # parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken, multiPart=True) 

+

64 # parserState.TokenMarker = None 

+

65 parserState.NextState = cls.stateWhitespace1 

+

66 return 

+

67 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

68 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

69 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

70 _ = block(parserState.NewBlock, token) 

+

71 parserState.TokenMarker = None 

+

72 parserState.NextState = cls.stateWhitespace1 

+

73 return 

+

74 

+

75 raise BlockParserException("Expected ';' or whitespace after keyword EXIT.", token) 

+

76 

+

77 @classmethod 

+

78 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

79 token = parserState.Token 

+

80 if isinstance(token, CharacterToken) and (token == ";"): 

+

81 parserState.NewToken = EndToken(fromExistingToken=token) 

+

82 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

83 parserState.Pop() 

+

84 return 

+

85 elif isinstance(token, WordToken): 

+

86 if token <= "when": 

+

87 parserState.NewToken = WhenKeyword(fromExistingToken=token) 

+

88 parserState.NextState = cls.stateWhenKeyword 

+

89 return 

+

90 else: 

+

91 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

92 # parserState.TokenMarker = parserState.NewToken 

+

93 parserState.NextState = cls.stateNextLoopLabel 

+

94 return 

+

95 elif isinstance(token, ExtendedIdentifier): 

+

96 parserState.NextState = cls.stateNextLoopLabel 

+

97 return 

+

98 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

99 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

100 parserState.NewBlock = block(parserState.LastBlock, token) 

+

101 parserState.TokenMarker = None 

+

102 return 

+

103 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

104 return 

+

105 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

106 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

107 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

108 parserState.TokenMarker = None 

+

109 return 

+

110 

+

111 raise BlockParserException("Expected ';', keyword WHEN or loop label.", token) 

+

112 

+

113 @classmethod 

+

114 def stateNextLoopLabel(cls, parserState: TokenToBlockParser): 

+

115 token = parserState.Token 

+

116 if isinstance(token, CharacterToken) and (token == ";"): 

+

117 parserState.NewToken = EndToken(fromExistingToken=token) 

+

118 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

119 parserState.Pop() 

+

120 return 

+

121 elif isinstance(token, SpaceToken): 

+

122 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

123 # parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token, multiPart=True) 

+

124 # parserState.TokenMarker = None 

+

125 parserState.NextState = cls.stateWhitespace2 

+

126 return 

+

127 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

128 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

129 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

130 _ = block(parserState.NewBlock, token) 

+

131 parserState.TokenMarker = None 

+

132 parserState.NextState = cls.stateWhitespace2 

+

133 return 

+

134 

+

135 raise BlockParserException("Expected ';' or whitespace after loop label.", token) 

+

136 

+

137 @classmethod 

+

138 def stateWhitespace2(cls, parserState: TokenToBlockParser): 

+

139 token = parserState.Token 

+

140 if isinstance(token, CharacterToken) and (token == ";"): 

+

141 parserState.NewToken = EndToken(fromExistingToken=token) 

+

142 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

143 parserState.Pop() 

+

144 return 

+

145 elif isinstance(token, WordToken) and (token <= "when"): 

+

146 parserState.NewToken = WhenKeyword(fromExistingToken=token) 

+

147 parserState.NextState = cls.stateWhenKeyword 

+

148 return 

+

149 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

150 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

151 parserState.NewBlock = block(parserState.LastBlock, token) 

+

152 parserState.TokenMarker = None 

+

153 return 

+

154 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

155 return 

+

156 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

157 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

158 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

159 parserState.TokenMarker = None 

+

160 return 

+

161 

+

162 raise BlockParserException("Expected ';' or keyword WHEN.", token) 

+

163 

+

164 @classmethod 

+

165 def stateWhenKeyword(cls, parserState: TokenToBlockParser): 

+

166 token = parserState.Token 

+

167 if isinstance(token, CharacterToken): 

+

168 if (token == ";"): 

+

169 parserState.NewToken = EndToken(fromExistingToken=token) 

+

170 parserState.NewBlock = EndBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

171 parserState.Pop() 

+

172 return 

+

173 elif (token == "("): 

+

174 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

175 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

176 parserState.TokenMarker = parserState.NewToken 

+

177 parserState.NextState = EndBlock.stateError 

+

178 parserState.PushState = NextConditionBlock.stateExpression 

+

179 return 

+

180 elif isinstance(token, SpaceToken): 

+

181 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

182 parserState.NextState = cls.stateWhitespace3 

+

183 return 

+

184 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

185 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

186 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

187 _ = block(parserState.NewBlock, token) 

+

188 parserState.TokenMarker = None 

+

189 parserState.NextState = cls.stateWhitespace3 

+

190 return 

+

191 

+

192 raise BlockParserException("Expected ';' or whitespace after keyword RETURN.", token) 

+

193 

+

194 @classmethod 

+

195 def stateWhitespace3(cls, parserState: TokenToBlockParser): 

+

196 token = parserState.Token 

+

197 if isinstance(token, CharacterToken) and (token == ";"): 

+

198 parserState.NewToken = EndToken(fromExistingToken=token) 

+

199 parserState.NewBlock = EndBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

200 parserState.Pop() 

+

201 return 

+

202 elif isinstance(token, LinebreakToken): 

+

203 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

204 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

205 _ = LinebreakBlock(parserState.NewBlock, token) 

+

206 else: 

+

207 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

208 parserState.TokenMarker = None 

+

209 return 

+

210 elif isinstance(token, CommentToken): 

+

211 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

212 _ = CommentBlock(parserState.NewBlock, token) 

+

213 parserState.TokenMarker = None 

+

214 return 

+

215 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

216 return 

+

217 elif (isinstance(token, SpaceToken) and ( 

+

218 isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken))): 

+

219 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

220 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

221 parserState.TokenMarker = None 

+

222 return 

+

223 else: 

+

224 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken) 

+

225 parserState.NextState = EndBlock.stateError 

+

226 parserState.PushState = NextConditionBlock.stateExpression 

+

227 parserState.TokenMarker = parserState.Token 

+

228 parserState.NextState(parserState) 

+

229 return 

+
+ + + diff --git a/coverage/d_cb482dc298bd8d7f_Null_py.html b/coverage/d_cb482dc298bd8d7f_Null_py.html new file mode 100644 index 000000000..2ee166dfb --- /dev/null +++ b/coverage/d_cb482dc298bd8d7f_Null_py.html @@ -0,0 +1,188 @@ + + + + + Coverage for pyVHDLParser/Blocks/ControlStructure/Null.py: 32% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/ControlStructure/Null.py: + 32% +

+ +

+ 52 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Token import SpaceToken, LinebreakToken, CommentToken, IndentationToken, SingleLineCommentToken, MultiLineCommentToken 

+

33from pyVHDLParser.Token import CharacterToken 

+

34from pyVHDLParser.Token.Keywords import BoundaryToken, EndToken 

+

35from pyVHDLParser.Blocks import Block, TokenToBlockParser, CommentBlock, BlockParserException 

+

36from pyVHDLParser.Blocks.Common import LinebreakBlock, WhitespaceBlock 

+

37from pyVHDLParser.Blocks.Generic1 import EndOfStatementBlock 

+

38 

+

39 

+

40@export 

+

41class EndBlock(EndOfStatementBlock): 

+

42 pass 

+

43 

+

44 

+

45@export 

+

46class NullBlock(Block): 

+

47 @classmethod 

+

48 def stateNullKeyword(cls, parserState: TokenToBlockParser): 

+

49 token = parserState.Token 

+

50 if isinstance(token, CharacterToken) and (token == ";"): 

+

51 parserState.NewToken = EndToken(fromExistingToken=token) 

+

52 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

53 parserState.Pop() 

+

54 return 

+

55 elif isinstance(token, SpaceToken): 

+

56 parserState.NextState = cls.stateWhitespace1 

+

57 return 

+

58 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

59 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

60 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

61 _ = block(parserState.NewBlock, token) 

+

62 parserState.TokenMarker = None 

+

63 parserState.NextState = cls.stateWhitespace1 

+

64 return 

+

65 

+

66 raise BlockParserException("Expected ';' or whitespace after keyword NULL.", token) 

+

67 

+

68 @classmethod 

+

69 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

70 token = parserState.Token 

+

71 if isinstance(token, CharacterToken) and (token == ";"): 

+

72 parserState.NewToken = EndToken(fromExistingToken=token) 

+

73 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

74 parserState.Pop() 

+

75 return 

+

76 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

77 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

78 parserState.NewBlock = block(parserState.LastBlock, token) 

+

79 parserState.TokenMarker = None 

+

80 return 

+

81 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

82 return 

+

83 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

84 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

85 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

86 parserState.TokenMarker = None 

+

87 return 

+

88 

+

89 raise BlockParserException("Expected ';'.", token) 

+
+ + + diff --git a/coverage/d_cb482dc298bd8d7f_Return_py.html b/coverage/d_cb482dc298bd8d7f_Return_py.html new file mode 100644 index 000000000..faaa2c398 --- /dev/null +++ b/coverage/d_cb482dc298bd8d7f_Return_py.html @@ -0,0 +1,216 @@ + + + + + Coverage for pyVHDLParser/Blocks/ControlStructure/Return.py: 27% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/ControlStructure/Return.py: + 27% +

+ +

+ 76 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Token import CommentToken, CharacterToken, SpaceToken, LinebreakToken, IndentationToken, SingleLineCommentToken, MultiLineCommentToken 

+

33from pyVHDLParser.Token.Keywords import BoundaryToken, EndToken 

+

34from pyVHDLParser.Blocks import Block, TokenToBlockParser, BlockParserException, CommentBlock 

+

35from pyVHDLParser.Blocks.Generic1 import EndOfStatementBlock 

+

36from pyVHDLParser.Blocks.Common import LinebreakBlock, WhitespaceBlock 

+

37from pyVHDLParser.Blocks.Expression import ExpressionBlockEndedBySemicolon 

+

38 

+

39 

+

40@export 

+

41class EndBlock(EndOfStatementBlock): 

+

42 pass 

+

43 

+

44 

+

45@export 

+

46class ReturnExpressionBlock(ExpressionBlockEndedBySemicolon): 

+

47 END_BLOCK = EndBlock 

+

48 

+

49 

+

50@export 

+

51class ReturnBlock(Block): 

+

52 @classmethod 

+

53 def stateReturnKeyword(cls, parserState: TokenToBlockParser): 

+

54 token = parserState.Token 

+

55 if isinstance(token, CharacterToken): 

+

56 if (token == ";"): 

+

57 parserState.NewToken = EndToken(fromExistingToken=token) 

+

58 parserState.NewBlock = EndBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

59 parserState.Pop() 

+

60 return 

+

61 elif (token == "("): 

+

62 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

63 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

64 parserState.TokenMarker = parserState.NewToken 

+

65 parserState.NextState = EndBlock.stateError 

+

66 parserState.PushState = ReturnExpressionBlock.stateExpression 

+

67 return 

+

68 elif isinstance(token, SpaceToken): 

+

69 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

70 parserState.NextState = cls.stateWhitespace1 

+

71 return 

+

72 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

73 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

74 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

75 _ = block(parserState.NewBlock, token) 

+

76 parserState.TokenMarker = None 

+

77 parserState.NextState = cls.stateWhitespace1 

+

78 return 

+

79 

+

80 raise BlockParserException("Expected ';' or whitespace after keyword RETURN.", token) 

+

81 

+

82 @classmethod 

+

83 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

84 token = parserState.Token 

+

85 if isinstance(token, CharacterToken) and (token == ";"): 

+

86 parserState.NewToken = EndToken(fromExistingToken=token) 

+

87 parserState.NewBlock = EndBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

88 parserState.Pop() 

+

89 return 

+

90 elif isinstance(token, LinebreakToken): 

+

91 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

92 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

93 _ = LinebreakBlock(parserState.NewBlock, token) 

+

94 else: 

+

95 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

96 parserState.TokenMarker = None 

+

97 return 

+

98 elif isinstance(token, CommentToken): 

+

99 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

100 _ = CommentBlock(parserState.NewBlock, token) 

+

101 parserState.TokenMarker = None 

+

102 return 

+

103 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

104 return 

+

105 elif (isinstance(token, SpaceToken) and ( 

+

106 isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken))): 

+

107 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

108 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

109 parserState.TokenMarker = None 

+

110 return 

+

111 else: 

+

112 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken) 

+

113 parserState.NextState = EndBlock.stateError 

+

114 parserState.PushState = ReturnExpressionBlock.stateExpression 

+

115 parserState.TokenMarker = parserState.Token 

+

116 parserState.NextState(parserState) 

+

117 return 

+
+ + + diff --git a/coverage/d_cb482dc298bd8d7f_WhileLoop_py.html b/coverage/d_cb482dc298bd8d7f_WhileLoop_py.html new file mode 100644 index 000000000..dbe2db9c9 --- /dev/null +++ b/coverage/d_cb482dc298bd8d7f_WhileLoop_py.html @@ -0,0 +1,336 @@ + + + + + Coverage for pyVHDLParser/Blocks/ControlStructure/WhileLoop.py: 0% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/ControlStructure/WhileLoop.py: + 0% +

+ +

+ 190 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Token import CharacterToken, LinebreakToken, IndentationToken 

+

33from pyVHDLParser.Token.Keywords import BoundaryToken, IdentifierToken, LoopKeyword 

+

34from pyVHDLParser.Token.Keywords import IsKeyword, EndKeyword, GenericKeyword, PortKeyword 

+

35from pyVHDLParser.Token.Parser import SpaceToken, WordToken 

+

36from pyVHDLParser.Blocks import BlockParserException, Block, TokenToBlockParser 

+

37from pyVHDLParser.Blocks.Common import LinebreakBlock, IndentationBlock, WhitespaceBlock 

+

38from pyVHDLParser.Blocks.Comment import SingleLineCommentBlock, MultiLineCommentBlock 

+

39from pyVHDLParser.Blocks.Generic import EndBlock as EndBlockBase 

+

40from pyVHDLParser.Blocks.List import GenericList, PortList 

+

41 

+

42 

+

43@export 

+

44class ConditionBlock(Block): 

+

45 @classmethod 

+

46 def stateWhileKeyword(cls, parserState: TokenToBlockParser): 

+

47 token = parserState.Token 

+

48 errorMessage = "Expected whitespace after keyword WHILE." 

+

49 if isinstance(token, CharacterToken): 

+

50 if token == "\n": 

+

51 parserState.NewBlock = ConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

52 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

53 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

54 parserState.TokenMarker = None 

+

55 parserState.NextState = cls.stateWhitespace1 

+

56 parserState.PushState = LinebreakBlock.stateLinebreak 

+

57 return 

+

58 elif token == "-": 

+

59 parserState.NewBlock = ConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

60 parserState.TokenMarker = None 

+

61 parserState.NextState = cls.stateWhitespace1 

+

62 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

63 parserState.TokenMarker = token 

+

64 return 

+

65 elif token == "/": 

+

66 parserState.NewBlock = ConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

67 parserState.TokenMarker = None 

+

68 parserState.NextState = cls.stateWhitespace1 

+

69 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

70 parserState.TokenMarker = token 

+

71 return 

+

72 elif isinstance(token, SpaceToken): 

+

73 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

74 parserState.NextState = cls.stateWhitespace1 

+

75 return 

+

76 

+

77 raise BlockParserException(errorMessage, token) 

+

78 

+

79 @classmethod 

+

80 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

81 token = parserState.Token 

+

82 errorMessage = "Expected while name (identifier)." 

+

83 if isinstance(token, CharacterToken): 

+

84 if token == "\n": 

+

85 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

86 if not isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

87 parserState.NewBlock = ConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) 

+

88 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

89 else: 

+

90 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

91 parserState.TokenMarker = None 

+

92 parserState.PushState = LinebreakBlock.stateLinebreak 

+

93 return 

+

94 elif token == "-": 

+

95 parserState.NewBlock = ConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

96 parserState.TokenMarker = None 

+

97 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

98 parserState.TokenMarker = token 

+

99 return 

+

100 elif token == "/": 

+

101 parserState.NewBlock = ConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

102 parserState.TokenMarker = None 

+

103 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

104 parserState.TokenMarker = token 

+

105 return 

+

106 elif isinstance(token, WordToken): 

+

107 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

108 parserState.NextState = cls.stateWhileName 

+

109 return 

+

110 elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

111 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

112 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

113 parserState.TokenMarker = None 

+

114 return 

+

115 

+

116 raise BlockParserException(errorMessage, token) 

+

117 

+

118 @classmethod 

+

119 def stateWhileName(cls, parserState: TokenToBlockParser): 

+

120 token = parserState.Token 

+

121 errorMessage = "Expected whitespace after keyword WHILE." 

+

122 if isinstance(token, CharacterToken): 

+

123 if token == "\n": 

+

124 parserState.NewBlock = ConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

125 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

126 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

127 parserState.TokenMarker = None 

+

128 parserState.NextState = cls.stateWhitespace1 

+

129 parserState.PushState = LinebreakBlock.stateLinebreak 

+

130 return 

+

131 elif token == "-": 

+

132 parserState.NewBlock = ConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

133 parserState.TokenMarker = None 

+

134 parserState.NextState = cls.stateWhitespace2 

+

135 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

136 parserState.TokenMarker = token 

+

137 return 

+

138 elif token == "/": 

+

139 parserState.NewBlock = ConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

140 parserState.TokenMarker = None 

+

141 parserState.NextState = cls.stateWhitespace2 

+

142 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

143 parserState.TokenMarker = token 

+

144 return 

+

145 elif isinstance(token, SpaceToken): 

+

146 parserState.NextState = cls.stateWhitespace2 

+

147 return 

+

148 

+

149 raise BlockParserException(errorMessage, token) 

+

150 

+

151 @classmethod 

+

152 def stateWhitespace2(cls, parserState: TokenToBlockParser): 

+

153 token = parserState.Token 

+

154 errorMessage = "Expected keyword IS after while name." 

+

155 if isinstance(token, CharacterToken): 

+

156 if token == "\n": 

+

157 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

158 if not isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

159 parserState.NewBlock = ConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) 

+

160 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

161 else: 

+

162 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

163 parserState.TokenMarker = None 

+

164 parserState.PushState = LinebreakBlock.stateLinebreak 

+

165 return 

+

166 elif token == "-": 

+

167 parserState.NewBlock = ConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

168 parserState.TokenMarker = None 

+

169 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

170 parserState.TokenMarker = token 

+

171 return 

+

172 elif token == "/": 

+

173 parserState.NewBlock = ConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

174 parserState.TokenMarker = None 

+

175 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

176 parserState.TokenMarker = token 

+

177 return 

+

178 elif isinstance(token, WordToken) and (token <= "is"): 

+

179 parserState.NewToken = IsKeyword(fromExistingToken=token) 

+

180 parserState.NewBlock = ConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

181 parserState.NextState = cls.stateDeclarativeRegion 

+

182 return 

+

183 elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

184 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

185 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

186 parserState.TokenMarker = None 

+

187 return 

+

188 

+

189 raise BlockParserException(errorMessage, token) 

+

190 

+

191 @classmethod 

+

192 def stateDeclarativeRegion(cls, parserState: TokenToBlockParser): 

+

193 errorMessage = "Expected one of these keywords: generic, port, begin, end." 

+

194 token = parserState.Token 

+

195 if isinstance(parserState.Token, CharacterToken): 

+

196 if token == "\n": 

+

197 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

198 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

199 parserState.TokenMarker = parserState.NewToken 

+

200 return 

+

201 elif token == "-": 

+

202 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

203 parserState.TokenMarker = token 

+

204 return 

+

205 elif token == "/": 

+

206 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

207 parserState.TokenMarker = token 

+

208 return 

+

209 elif isinstance(token, SpaceToken): 

+

210 parserState.NewToken = IndentationToken(fromExistingToken=token) 

+

211 parserState.NewBlock = IndentationBlock(parserState.LastBlock, parserState.NewToken) 

+

212 return 

+

213 elif isinstance(token, WordToken): 

+

214 keyword = token.Value.lower() 

+

215 if keyword == "generic": 

+

216 newToken = GenericKeyword(fromExistingToken=token) 

+

217 parserState.PushState = GenericList.OpenBlock.stateGenericKeyword 

+

218 elif keyword == "port": 

+

219 newToken = PortKeyword(fromExistingToken=token) 

+

220 parserState.PushState = PortList.OpenBlock.statePortKeyword 

+

221 elif keyword == "end": 

+

222 newToken = EndKeyword(fromExistingToken=token) 

+

223 parserState.NextState = EndBlock.stateEndKeyword 

+

224 else: 

+

225 raise BlockParserException(errorMessage, token) 

+

226 

+

227 parserState.NewToken = newToken 

+

228 parserState.TokenMarker = newToken 

+

229 return 

+

230 

+

231 raise BlockParserException(errorMessage, token) 

+

232 

+

233 

+

234@export 

+

235class EndBlock(EndBlockBase): 

+

236 KEYWORD = LoopKeyword 

+

237 EXPECTED_NAME = KEYWORD.__KEYWORD__ 

+
+ + + diff --git a/coverage/d_ccdd3719749ebe9e_Assert_py.html b/coverage/d_ccdd3719749ebe9e_Assert_py.html new file mode 100644 index 000000000..1eeb16be7 --- /dev/null +++ b/coverage/d_ccdd3719749ebe9e_Assert_py.html @@ -0,0 +1,436 @@ + + + + + Coverage for pyVHDLParser/Blocks/Reporting/Assert.py: 14% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/Reporting/Assert.py: + 14% +

+ +

+ 276 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Token import SpaceToken, LinebreakToken, WordToken, IndentationToken, CharacterToken 

+

33from pyVHDLParser.Token import CommentToken, SingleLineCommentToken, MultiLineCommentToken 

+

34from pyVHDLParser.Token.Keywords import BoundaryToken, IdentifierToken, ReportKeyword, EndToken, SeverityKeyword 

+

35from pyVHDLParser.Blocks import Block, CommentBlock, TokenToBlockParser, BlockParserException 

+

36from pyVHDLParser.Blocks.Common import LinebreakBlock, WhitespaceBlock 

+

37 

+

38 

+

39@export 

+

40class AssertBlock(Block): 

+

41 @classmethod 

+

42 def stateAssertKeyword(cls, parserState: TokenToBlockParser): 

+

43 token = parserState.Token 

+

44 if isinstance(token, SpaceToken): 

+

45 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

46 parserState.NextState = cls.stateWhitespace1 

+

47 return 

+

48 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

49 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

50 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

51 _ = block(parserState.NewBlock, token) 

+

52 parserState.TokenMarker = None 

+

53 parserState.NextState = cls.stateWhitespace1 

+

54 return 

+

55 

+

56 raise BlockParserException("Expected whitespace after keyword ASSERT.", token) 

+

57 

+

58 @classmethod 

+

59 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

60 token = parserState.Token 

+

61 if isinstance(token, WordToken): 

+

62 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

63 parserState.NextState = cls.stateAssertion 

+

64 return 

+

65 elif isinstance(token, LinebreakToken): 

+

66 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

67 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

68 _ = LinebreakBlock(parserState.NewBlock, token) 

+

69 else: 

+

70 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

71 parserState.TokenMarker = None 

+

72 return 

+

73 elif isinstance(token, CommentToken): 

+

74 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

75 _ = CommentBlock(parserState.NewBlock, token) 

+

76 parserState.TokenMarker = None 

+

77 return 

+

78 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

79 return 

+

80 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

81 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

82 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

83 parserState.TokenMarker = None 

+

84 return 

+

85 

+

86 raise BlockParserException("Expected assertion (expression).", token) 

+

87 

+

88 @classmethod 

+

89 def stateAssertion(cls, parserState: TokenToBlockParser): 

+

90 token = parserState.Token 

+

91 if isinstance(token, SpaceToken): 

+

92 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

93 parserState.NextState = cls.stateWhitespace2 

+

94 return 

+

95 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

96 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

97 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

98 _ = block(parserState.NewBlock, token) 

+

99 parserState.TokenMarker = None 

+

100 parserState.NextState = cls.stateWhitespace2 

+

101 return 

+

102 

+

103 raise BlockParserException("Expected whitespace after assertion (expression).", token) 

+

104 

+

105 @classmethod 

+

106 def stateWhitespace2(cls, parserState: TokenToBlockParser): 

+

107 token = parserState.Token 

+

108 if isinstance(token, WordToken) and (token <= "report"): 

+

109 parserState.NewToken = ReportKeyword(fromExistingToken=token) 

+

110 parserState.NextState = cls.stateReportKeyword 

+

111 return 

+

112 elif isinstance(token, LinebreakToken): 

+

113 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

114 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

115 _ = LinebreakBlock(parserState.NewBlock, token) 

+

116 else: 

+

117 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

118 parserState.TokenMarker = None 

+

119 return 

+

120 elif isinstance(token, CommentToken): 

+

121 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

122 _ = CommentBlock(parserState.NewBlock, token) 

+

123 parserState.TokenMarker = None 

+

124 return 

+

125 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

126 return 

+

127 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

128 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

129 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

130 parserState.TokenMarker = None 

+

131 return 

+

132 

+

133 raise BlockParserException("Expected keyword REPORT after assertion (expression).", token) 

+

134 

+

135 @classmethod 

+

136 def stateReportKeyword(cls, parserState: TokenToBlockParser): 

+

137 token = parserState.Token 

+

138 if isinstance(token, SpaceToken): 

+

139 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

140 parserState.NextState = cls.stateWhitespace3 

+

141 return 

+

142 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

143 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

144 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

145 _ = block(parserState.NewBlock, token) 

+

146 parserState.TokenMarker = None 

+

147 parserState.NextState = cls.stateWhitespace3 

+

148 return 

+

149 

+

150 raise BlockParserException("Expected whitespace after keyword REPORT.", token) 

+

151 

+

152 @classmethod 

+

153 def stateWhitespace3(cls, parserState: TokenToBlockParser): 

+

154 token = parserState.Token 

+

155 if isinstance(token, WordToken): 

+

156 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

157 parserState.NextState = cls.stateMessage 

+

158 return 

+

159 elif isinstance(token, LinebreakToken): 

+

160 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

161 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

162 _ = LinebreakBlock(parserState.NewBlock, token) 

+

163 else: 

+

164 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

165 parserState.TokenMarker = None 

+

166 return 

+

167 elif isinstance(token, CommentToken): 

+

168 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

169 _ = CommentBlock(parserState.NewBlock, token) 

+

170 parserState.TokenMarker = None 

+

171 return 

+

172 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

173 return 

+

174 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

175 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

176 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

177 parserState.TokenMarker = None 

+

178 return 

+

179 

+

180 raise BlockParserException("Expected report message (expression) after keyword REPORT.", token) 

+

181 

+

182 @classmethod 

+

183 def stateMessage(cls, parserState: TokenToBlockParser): 

+

184 token = parserState.Token 

+

185 if isinstance(token, CharacterToken)and (token == ";"): 

+

186 parserState.NewToken = EndToken(fromExistingToken=token) 

+

187 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

188 parserState.Pop() 

+

189 return 

+

190 elif isinstance(token, SpaceToken): 

+

191 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

192 parserState.NextState = cls.stateWhitespace4 

+

193 return 

+

194 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

195 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

196 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

197 _ = block(parserState.NewBlock, token) 

+

198 parserState.TokenMarker = None 

+

199 parserState.NextState = cls.stateWhitespace4 

+

200 return 

+

201 

+

202 raise BlockParserException("Expected whitespace after report message (expression).", token) 

+

203 

+

204 @classmethod 

+

205 def stateWhitespace4(cls, parserState: TokenToBlockParser): 

+

206 token = parserState.Token 

+

207 if isinstance(token, CharacterToken)and (token == ";"): 

+

208 parserState.NewToken = EndToken(fromExistingToken=token) 

+

209 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

210 parserState.Pop() 

+

211 return 

+

212 elif isinstance(token, WordToken) and (token <= "severity"): 

+

213 parserState.NewToken = SeverityKeyword(fromExistingToken=token) 

+

214 parserState.NextState = cls.stateSeverityKeyword 

+

215 return 

+

216 elif isinstance(token, LinebreakToken): 

+

217 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

218 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

219 _ = LinebreakBlock(parserState.NewBlock, token) 

+

220 else: 

+

221 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

222 parserState.TokenMarker = None 

+

223 return 

+

224 elif isinstance(token, CommentToken): 

+

225 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

226 _ = CommentBlock(parserState.NewBlock, token) 

+

227 parserState.TokenMarker = None 

+

228 return 

+

229 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

230 return 

+

231 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

232 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

233 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

234 parserState.TokenMarker = None 

+

235 return 

+

236 

+

237 raise BlockParserException("Expected keyword SEVERITY after report message (expression).", token) 

+

238 

+

239 @classmethod 

+

240 def stateSeverityKeyword(cls, parserState: TokenToBlockParser): 

+

241 token = parserState.Token 

+

242 if isinstance(token, SpaceToken): 

+

243 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

244 parserState.NextState = cls.stateWhitespace5 

+

245 return 

+

246 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

247 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

248 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

249 _ = block(parserState.NewBlock, token) 

+

250 parserState.TokenMarker = None 

+

251 parserState.NextState = cls.stateWhitespace5 

+

252 return 

+

253 

+

254 raise BlockParserException("Expected whitespace after keyword SEVERITY.", token) 

+

255 

+

256 @classmethod 

+

257 def stateWhitespace5(cls, parserState: TokenToBlockParser): 

+

258 token = parserState.Token 

+

259 if isinstance(token, WordToken): 

+

260 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

261 parserState.NextState = cls.stateSeverityLevel 

+

262 return 

+

263 elif isinstance(token, LinebreakToken): 

+

264 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

265 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

266 _ = LinebreakBlock(parserState.NewBlock, token) 

+

267 else: 

+

268 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

269 parserState.TokenMarker = None 

+

270 return 

+

271 elif isinstance(token, CommentToken): 

+

272 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

273 _ = CommentBlock(parserState.NewBlock, token) 

+

274 parserState.TokenMarker = None 

+

275 return 

+

276 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

277 return 

+

278 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

279 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

280 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

281 parserState.TokenMarker = None 

+

282 return 

+

283 

+

284 raise BlockParserException("Expected severity level (expression) after keyword SEVERITY.", token) 

+

285 

+

286 @classmethod 

+

287 def stateSeverityLevel(cls, parserState: TokenToBlockParser): 

+

288 token = parserState.Token 

+

289 if isinstance(token, CharacterToken) and (token == ";"): 

+

290 parserState.NewToken = EndToken(fromExistingToken=token) 

+

291 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

292 parserState.Pop() 

+

293 return 

+

294 elif isinstance(token, SpaceToken): 

+

295 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

296 parserState.NextState = cls.stateWhitespace6 

+

297 return 

+

298 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

299 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

300 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

301 _ = block(parserState.NewBlock, token) 

+

302 parserState.TokenMarker = None 

+

303 parserState.NextState = cls.stateWhitespace6 

+

304 return 

+

305 

+

306 raise BlockParserException("Expected ';' or whitespace after severity level (expression).", token) 

+

307 

+

308 @classmethod 

+

309 def stateWhitespace6(cls, parserState: TokenToBlockParser): 

+

310 token = parserState.Token 

+

311 if isinstance(token, CharacterToken)and (token == ";"): 

+

312 parserState.NewToken = EndToken(fromExistingToken=token) 

+

313 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

314 parserState.Pop() 

+

315 return 

+

316 elif isinstance(token, LinebreakToken): 

+

317 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

318 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

319 _ = LinebreakBlock(parserState.NewBlock, token) 

+

320 else: 

+

321 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

322 parserState.TokenMarker = None 

+

323 return 

+

324 elif isinstance(token, CommentToken): 

+

325 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

326 _ = CommentBlock(parserState.NewBlock, token) 

+

327 parserState.TokenMarker = None 

+

328 return 

+

329 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

330 return 

+

331 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

332 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

333 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

334 parserState.TokenMarker = None 

+

335 return 

+

336 

+

337 raise BlockParserException("Expected ';'.", token) 

+
+ + + diff --git a/coverage/d_ccdd3719749ebe9e_Report_py.html b/coverage/d_ccdd3719749ebe9e_Report_py.html new file mode 100644 index 000000000..dc75bb254 --- /dev/null +++ b/coverage/d_ccdd3719749ebe9e_Report_py.html @@ -0,0 +1,343 @@ + + + + + Coverage for pyVHDLParser/Blocks/Reporting/Report.py: 15% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/Reporting/Report.py: + 15% +

+ +

+ 193 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Token import SpaceToken, LinebreakToken, WordToken, IndentationToken, CharacterToken 

+

33from pyVHDLParser.Token import CommentToken, SingleLineCommentToken, MultiLineCommentToken 

+

34from pyVHDLParser.Token.Keywords import BoundaryToken, IdentifierToken, EndToken, SeverityKeyword 

+

35from pyVHDLParser.Blocks import Block, CommentBlock, TokenToBlockParser, BlockParserException 

+

36from pyVHDLParser.Blocks.Common import LinebreakBlock, WhitespaceBlock 

+

37 

+

38 

+

39@export 

+

40class ReportBlock(Block): 

+

41 @classmethod 

+

42 def stateReportKeyword(cls, parserState: TokenToBlockParser): 

+

43 token = parserState.Token 

+

44 if isinstance(token, SpaceToken): 

+

45 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

46 parserState.NextState = cls.stateWhitespace3 

+

47 return 

+

48 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

49 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

50 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

51 _ = block(parserState.NewBlock, token) 

+

52 parserState.TokenMarker = None 

+

53 parserState.NextState = cls.stateWhitespace3 

+

54 return 

+

55 

+

56 raise BlockParserException("Expected whitespace after keyword ARCHITECTURE.", token) 

+

57 

+

58 @classmethod 

+

59 def stateWhitespace3(cls, parserState: TokenToBlockParser): 

+

60 token = parserState.Token 

+

61 if isinstance(token, WordToken): 

+

62 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

63 parserState.NextState = cls.stateMessage 

+

64 return 

+

65 elif isinstance(token, LinebreakToken): 

+

66 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

67 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

68 _ = LinebreakBlock(parserState.NewBlock, token) 

+

69 else: 

+

70 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

71 parserState.TokenMarker = None 

+

72 return 

+

73 elif isinstance(token, CommentToken): 

+

74 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

75 _ = CommentBlock(parserState.NewBlock, token) 

+

76 parserState.TokenMarker = None 

+

77 return 

+

78 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

79 return 

+

80 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

81 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

82 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

83 parserState.TokenMarker = None 

+

84 return 

+

85 

+

86 raise BlockParserException("Expected keyword REPORT after assertion.", token) 

+

87 

+

88 @classmethod 

+

89 def stateMessage(cls, parserState: TokenToBlockParser): 

+

90 token = parserState.Token 

+

91 if isinstance(token, CharacterToken)and (token == ";"): 

+

92 parserState.NewToken = EndToken(fromExistingToken=token) 

+

93 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

94 parserState.Pop() 

+

95 return 

+

96 elif isinstance(token, SpaceToken): 

+

97 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

98 parserState.NextState = cls.stateWhitespace4 

+

99 return 

+

100 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

101 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

102 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

103 _ = block(parserState.NewBlock, token) 

+

104 parserState.TokenMarker = None 

+

105 parserState.NextState = cls.stateWhitespace4 

+

106 return 

+

107 

+

108 raise BlockParserException("Expected whitespace after assertion.", token) 

+

109 

+

110 @classmethod 

+

111 def stateWhitespace4(cls, parserState: TokenToBlockParser): 

+

112 token = parserState.Token 

+

113 if isinstance(token, CharacterToken)and (token == ";"): 

+

114 parserState.NewToken = EndToken(fromExistingToken=token) 

+

115 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

116 parserState.Pop() 

+

117 return 

+

118 elif isinstance(token, WordToken) and (token <= "severity"): 

+

119 parserState.NewToken = SeverityKeyword(fromExistingToken=token) 

+

120 parserState.NextState = cls.stateSeverityKeyword 

+

121 return 

+

122 elif isinstance(token, LinebreakToken): 

+

123 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

124 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

125 _ = LinebreakBlock(parserState.NewBlock, token) 

+

126 else: 

+

127 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

128 parserState.TokenMarker = None 

+

129 return 

+

130 elif isinstance(token, CommentToken): 

+

131 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

132 _ = CommentBlock(parserState.NewBlock, token) 

+

133 parserState.TokenMarker = None 

+

134 return 

+

135 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

136 return 

+

137 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

138 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

139 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

140 parserState.TokenMarker = None 

+

141 return 

+

142 

+

143 raise BlockParserException("Expected keyword SEVERITY after message.", token) 

+

144 

+

145 @classmethod 

+

146 def stateSeverityKeyword(cls, parserState: TokenToBlockParser): 

+

147 token = parserState.Token 

+

148 if isinstance(token, SpaceToken): 

+

149 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

150 parserState.NextState = cls.stateWhitespace5 

+

151 return 

+

152 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

153 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

154 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

155 _ = block(parserState.NewBlock, token) 

+

156 parserState.TokenMarker = None 

+

157 parserState.NextState = cls.stateWhitespace5 

+

158 return 

+

159 

+

160 raise BlockParserException("Expected whitespace after keyword SEVERITY.", token) 

+

161 

+

162 @classmethod 

+

163 def stateWhitespace5(cls, parserState: TokenToBlockParser): 

+

164 token = parserState.Token 

+

165 if isinstance(token, WordToken): 

+

166 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

167 parserState.NextState = cls.stateSeverityLevel 

+

168 return 

+

169 elif isinstance(token, LinebreakToken): 

+

170 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

171 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

172 _ = LinebreakBlock(parserState.NewBlock, token) 

+

173 else: 

+

174 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

175 parserState.TokenMarker = None 

+

176 return 

+

177 elif isinstance(token, CommentToken): 

+

178 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

179 _ = CommentBlock(parserState.NewBlock, token) 

+

180 parserState.TokenMarker = None 

+

181 return 

+

182 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

183 return 

+

184 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

185 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

186 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

187 parserState.TokenMarker = None 

+

188 return 

+

189 

+

190 raise BlockParserException("Expected keyword REPORT after assertion.", token) 

+

191 

+

192 @classmethod 

+

193 def stateSeverityLevel(cls, parserState: TokenToBlockParser): 

+

194 token = parserState.Token 

+

195 if isinstance(token, CharacterToken) and (token == ";"): 

+

196 parserState.NewToken = EndToken(fromExistingToken=token) 

+

197 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

198 parserState.Pop() 

+

199 return 

+

200 elif isinstance(token, SpaceToken): 

+

201 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

202 parserState.NextState = cls.stateWhitespace6 

+

203 return 

+

204 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

205 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

206 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

207 _ = block(parserState.NewBlock, token) 

+

208 parserState.TokenMarker = None 

+

209 parserState.NextState = cls.stateWhitespace6 

+

210 return 

+

211 

+

212 raise BlockParserException("Expected ';' or whitespace after severity level.", token) 

+

213 

+

214 @classmethod 

+

215 def stateWhitespace6(cls, parserState: TokenToBlockParser): 

+

216 token = parserState.Token 

+

217 if isinstance(token, CharacterToken): 

+

218 if token == ";": 

+

219 parserState.NewToken = EndToken(fromExistingToken=token) 

+

220 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

221 parserState.Pop() 

+

222 return 

+

223 elif isinstance(token, LinebreakToken): 

+

224 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

225 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

226 _ = LinebreakBlock(parserState.NewBlock, token) 

+

227 else: 

+

228 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

229 parserState.TokenMarker = None 

+

230 return 

+

231 elif isinstance(token, CommentToken): 

+

232 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

233 _ = CommentBlock(parserState.NewBlock, token) 

+

234 parserState.TokenMarker = None 

+

235 return 

+

236 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

237 return 

+

238 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

239 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

240 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

241 parserState.TokenMarker = None 

+

242 return 

+

243 

+

244 raise BlockParserException("Expected ';'.", token) 

+
+ + + diff --git a/coverage/d_d0663b954b19b372_CaseGenerate_py.html b/coverage/d_d0663b954b19b372_CaseGenerate_py.html new file mode 100644 index 000000000..2fea8a358 --- /dev/null +++ b/coverage/d_d0663b954b19b372_CaseGenerate_py.html @@ -0,0 +1,344 @@ + + + + + Coverage for pyVHDLParser/Blocks/Generate/CaseGenerate.py: 0% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/Generate/CaseGenerate.py: + 0% +

+ +

+ 196 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Token.Keywords import BoundaryToken, IdentifierToken, BeginKeyword 

+

33from pyVHDLParser.Token.Keywords import IsKeyword, EndKeyword, GenericKeyword, PortKeyword 

+

34from pyVHDLParser.Token import CharacterToken, SpaceToken, WordToken, LinebreakToken, IndentationToken 

+

35from pyVHDLParser.Blocks import Block, BlockParserException, TokenToBlockParser 

+

36from pyVHDLParser.Blocks.Common import LinebreakBlock, IndentationBlock, WhitespaceBlock 

+

37from pyVHDLParser.Blocks.Comment import SingleLineCommentBlock, MultiLineCommentBlock 

+

38from pyVHDLParser.Blocks.Generate import EndGenerateBlock as EndGenerateBlockBase 

+

39from pyVHDLParser.Blocks.List import GenericList, PortList 

+

40 

+

41 

+

42@export 

+

43class CaseBlock(Block): 

+

44 @classmethod 

+

45 def stateGenerateKeyword(cls, parserState: TokenToBlockParser): 

+

46 token = parserState.Token 

+

47 errorMessage = "Expected whitespace after keyword GENERATE." 

+

48 if isinstance(token, CharacterToken): 

+

49 if token == "\n": 

+

50 parserState.NewBlock = CaseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

51 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

52 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

53 parserState.TokenMarker = None 

+

54 parserState.NextState = cls.stateWhitespace1 

+

55 parserState.PushState = LinebreakBlock.stateLinebreak 

+

56 return 

+

57 elif token == "-": 

+

58 parserState.NewBlock = CaseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

59 parserState.TokenMarker = None 

+

60 parserState.NextState = cls.stateWhitespace1 

+

61 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

62 parserState.TokenMarker = token 

+

63 return 

+

64 elif token == "/": 

+

65 parserState.NewBlock = CaseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

66 parserState.TokenMarker = None 

+

67 parserState.NextState = cls.stateWhitespace1 

+

68 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

69 parserState.TokenMarker = token 

+

70 return 

+

71 elif isinstance(token, SpaceToken): 

+

72 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

73 parserState.NextState = cls.stateWhitespace1 

+

74 return 

+

75 

+

76 raise BlockParserException(errorMessage, token) 

+

77 

+

78 @classmethod 

+

79 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

80 token = parserState.Token 

+

81 errorMessage = "Expected generate name (identifier)." 

+

82 if isinstance(token, CharacterToken): 

+

83 if token == "\n": 

+

84 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

85 if not isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

86 parserState.NewBlock = CaseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) 

+

87 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

88 else: 

+

89 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

90 parserState.TokenMarker = None 

+

91 parserState.PushState = LinebreakBlock.stateLinebreak 

+

92 return 

+

93 elif token == "-": 

+

94 parserState.NewBlock = CaseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

95 parserState.TokenMarker = None 

+

96 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

97 parserState.TokenMarker = token 

+

98 return 

+

99 elif token == "/": 

+

100 parserState.NewBlock = CaseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

101 parserState.TokenMarker = None 

+

102 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

103 parserState.TokenMarker = token 

+

104 return 

+

105 elif isinstance(token, WordToken): 

+

106 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

107 parserState.NextState = cls.stateGenerateName 

+

108 return 

+

109 elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

110 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

111 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

112 parserState.TokenMarker = None 

+

113 return 

+

114 

+

115 raise BlockParserException(errorMessage, token) 

+

116 

+

117 @classmethod 

+

118 def stateGenerateName(cls, parserState: TokenToBlockParser): 

+

119 token = parserState.Token 

+

120 errorMessage = "Expected whitespace after keyword GENERATE." 

+

121 if isinstance(token, CharacterToken): 

+

122 if token == "\n": 

+

123 parserState.NewBlock = CaseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

124 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

125 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

126 parserState.TokenMarker = None 

+

127 parserState.NextState = cls.stateWhitespace2 

+

128 parserState.PushState = LinebreakBlock.stateLinebreak 

+

129 return 

+

130 elif token == "-": 

+

131 parserState.NewBlock = CaseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

132 parserState.TokenMarker = None 

+

133 parserState.NextState = cls.stateWhitespace2 

+

134 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

135 parserState.TokenMarker = token 

+

136 return 

+

137 elif token == "/": 

+

138 parserState.NewBlock = CaseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

139 parserState.TokenMarker = None 

+

140 parserState.NextState = cls.stateWhitespace2 

+

141 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

142 parserState.TokenMarker = token 

+

143 return 

+

144 elif isinstance(token, SpaceToken): 

+

145 parserState.NextState = cls.stateWhitespace2 

+

146 return 

+

147 

+

148 raise BlockParserException(errorMessage, token) 

+

149 

+

150 @classmethod 

+

151 def stateWhitespace2(cls, parserState: TokenToBlockParser): 

+

152 token = parserState.Token 

+

153 errorMessage = "Expected keyword IS after generate name." 

+

154 if isinstance(token, CharacterToken): 

+

155 if token == "\n": 

+

156 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

157 if not isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

158 parserState.NewBlock = CaseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) 

+

159 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

160 else: 

+

161 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

162 parserState.TokenMarker = None 

+

163 parserState.PushState = LinebreakBlock.stateLinebreak 

+

164 return 

+

165 elif token == "-": 

+

166 parserState.NewBlock = CaseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

167 parserState.TokenMarker = None 

+

168 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

169 parserState.TokenMarker = token 

+

170 return 

+

171 elif token == "/": 

+

172 parserState.NewBlock = CaseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

173 parserState.TokenMarker = None 

+

174 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

175 parserState.TokenMarker = token 

+

176 return 

+

177 elif isinstance(token, WordToken) and (token <= "is"): 

+

178 parserState.NewToken = IsKeyword(fromExistingToken=token) 

+

179 parserState.NewBlock = CaseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

180 parserState.NextState = cls.stateDeclarativeRegion 

+

181 return 

+

182 elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

183 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

184 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

185 parserState.TokenMarker = None 

+

186 return 

+

187 

+

188 raise BlockParserException(errorMessage, token) 

+

189 

+

190 @classmethod 

+

191 def stateDeclarativeRegion(cls, parserState: TokenToBlockParser): 

+

192 errorMessage = "Expected one of these keywords: generic, port, begin, end." 

+

193 token = parserState.Token 

+

194 if isinstance(parserState.Token, CharacterToken): 

+

195 if token == "\n": 

+

196 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

197 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

198 parserState.TokenMarker = parserState.NewToken 

+

199 return 

+

200 elif token == "-": 

+

201 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

202 parserState.TokenMarker = token 

+

203 return 

+

204 elif token == "/": 

+

205 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

206 parserState.TokenMarker = token 

+

207 return 

+

208 elif isinstance(token, SpaceToken): 

+

209 parserState.NewToken = IndentationToken(fromExistingToken=token) 

+

210 parserState.NewBlock = IndentationBlock(parserState.LastBlock, parserState.NewToken) 

+

211 return 

+

212 elif isinstance(token, WordToken): 

+

213 keyword = token.Value.lower() 

+

214 if keyword == "generic": 

+

215 newToken = GenericKeyword(fromExistingToken=token) 

+

216 parserState.PushState = GenericList.OpenBlock.stateGenericKeyword 

+

217 elif keyword == "port": 

+

218 newToken = PortKeyword(fromExistingToken=token) 

+

219 parserState.PushState = PortList.OpenBlock.statePortKeyword 

+

220 elif keyword == "end": 

+

221 newToken = EndKeyword(fromExistingToken=token) 

+

222 parserState.NextState = EndGenerateBlock.stateEndKeyword 

+

223 elif keyword == "begin": 

+

224 parserState.NewToken = BeginKeyword(fromExistingToken=token) 

+

225 parserState.NewBlock = BeginBlock(parserState.LastBlock, parserState.NewToken) 

+

226 parserState.NextState = BeginBlock.stateBeginKeyword 

+

227 return 

+

228 else: 

+

229 raise BlockParserException(errorMessage, token) 

+

230 

+

231 parserState.NewToken = newToken 

+

232 parserState.TokenMarker = newToken 

+

233 return 

+

234 

+

235 raise BlockParserException(errorMessage, token) 

+

236 

+

237 

+

238@export 

+

239class BeginBlock(Block): 

+

240 pass 

+

241 

+

242 

+

243@export 

+

244class EndGenerateBlock(EndGenerateBlockBase): 

+

245 pass 

+
+ + + diff --git a/coverage/d_d0663b954b19b372_ForGenerate_py.html b/coverage/d_d0663b954b19b372_ForGenerate_py.html new file mode 100644 index 000000000..342b80fa1 --- /dev/null +++ b/coverage/d_d0663b954b19b372_ForGenerate_py.html @@ -0,0 +1,387 @@ + + + + + Coverage for pyVHDLParser/Blocks/Generate/ForGenerate.py: 0% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/Generate/ForGenerate.py: + 0% +

+ +

+ 233 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Token import CharacterToken, SpaceToken, WordToken, LinebreakToken, IndentationToken 

+

33from pyVHDLParser.Token.Keywords import BoundaryToken, IdentifierToken, BeginKeyword, ProcessKeyword, AssertKeyword 

+

34from pyVHDLParser.Token.Keywords import IsKeyword, EndKeyword, GenericKeyword, PortKeyword 

+

35from pyVHDLParser.Blocks import Block, BlockParserException, TokenToBlockParser 

+

36from pyVHDLParser.Blocks.Common import LinebreakBlock, IndentationBlock, WhitespaceBlock 

+

37from pyVHDLParser.Blocks.Comment import SingleLineCommentBlock, MultiLineCommentBlock 

+

38from pyVHDLParser.Blocks.Generate import EndGenerateBlock as EndGenerateBlockBase 

+

39from pyVHDLParser.Blocks.List import GenericList, PortList 

+

40from pyVHDLParser.Blocks.Reporting.Assert import AssertBlock 

+

41from pyVHDLParser.Blocks.Sequential import Process 

+

42 

+

43 

+

44@export 

+

45class RangeBlock(Block): 

+

46 @classmethod 

+

47 def stateGenerateKeyword(cls, parserState: TokenToBlockParser): 

+

48 token = parserState.Token 

+

49 errorMessage = "Expected whitespace after keyword GENERATE." 

+

50 if isinstance(token, CharacterToken): 

+

51 if token == "\n": 

+

52 parserState.NewBlock = RangeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

53 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

54 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

55 parserState.TokenMarker = None 

+

56 parserState.NextState = cls.stateWhitespace1 

+

57 parserState.PushState = LinebreakBlock.stateLinebreak 

+

58 return 

+

59 elif token == "-": 

+

60 parserState.NewBlock = RangeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

61 parserState.TokenMarker = None 

+

62 parserState.NextState = cls.stateWhitespace1 

+

63 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

64 parserState.TokenMarker = token 

+

65 return 

+

66 elif token == "/": 

+

67 parserState.NewBlock = RangeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

68 parserState.TokenMarker = None 

+

69 parserState.NextState = cls.stateWhitespace1 

+

70 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

71 parserState.TokenMarker = token 

+

72 return 

+

73 elif isinstance(token, SpaceToken): 

+

74 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

75 parserState.NextState = cls.stateWhitespace1 

+

76 return 

+

77 

+

78 raise BlockParserException(errorMessage, token) 

+

79 

+

80 @classmethod 

+

81 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

82 token = parserState.Token 

+

83 errorMessage = "Expected generate name (identifier)." 

+

84 if isinstance(token, CharacterToken): 

+

85 if token == "\n": 

+

86 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

87 if not isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

88 parserState.NewBlock = RangeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) 

+

89 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

90 else: 

+

91 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

92 parserState.TokenMarker = None 

+

93 parserState.PushState = LinebreakBlock.stateLinebreak 

+

94 return 

+

95 elif token == "-": 

+

96 parserState.NewBlock = RangeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

97 parserState.TokenMarker = None 

+

98 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

99 parserState.TokenMarker = token 

+

100 return 

+

101 elif token == "/": 

+

102 parserState.NewBlock = RangeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

103 parserState.TokenMarker = None 

+

104 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

105 parserState.TokenMarker = token 

+

106 return 

+

107 elif isinstance(token, WordToken): 

+

108 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

109 parserState.NextState = cls.stateGenerateName 

+

110 return 

+

111 elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

112 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

113 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

114 parserState.TokenMarker = None 

+

115 return 

+

116 

+

117 raise BlockParserException(errorMessage, token) 

+

118 

+

119 @classmethod 

+

120 def stateGenerateName(cls, parserState: TokenToBlockParser): 

+

121 token = parserState.Token 

+

122 errorMessage = "Expected whitespace after keyword GENERATE." 

+

123 if isinstance(token, CharacterToken): 

+

124 if token == "\n": 

+

125 parserState.NewBlock = RangeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

126 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

127 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

128 parserState.TokenMarker = None 

+

129 parserState.NextState = cls.stateWhitespace2 

+

130 parserState.PushState = LinebreakBlock.stateLinebreak 

+

131 return 

+

132 elif token == "-": 

+

133 parserState.NewBlock = RangeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

134 parserState.TokenMarker = None 

+

135 parserState.NextState = cls.stateWhitespace2 

+

136 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

137 parserState.TokenMarker = token 

+

138 return 

+

139 elif token == "/": 

+

140 parserState.NewBlock = RangeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

141 parserState.TokenMarker = None 

+

142 parserState.NextState = cls.stateWhitespace2 

+

143 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

144 parserState.TokenMarker = token 

+

145 return 

+

146 elif isinstance(token, SpaceToken): 

+

147 parserState.NextState = cls.stateWhitespace2 

+

148 return 

+

149 

+

150 raise BlockParserException(errorMessage, token) 

+

151 

+

152 @classmethod 

+

153 def stateWhitespace2(cls, parserState: TokenToBlockParser): 

+

154 token = parserState.Token 

+

155 errorMessage = "Expected keyword IS after generate name." 

+

156 if isinstance(token, CharacterToken): 

+

157 if token == "\n": 

+

158 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

159 if not isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

160 parserState.NewBlock = RangeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) 

+

161 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

162 else: 

+

163 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

164 parserState.TokenMarker = None 

+

165 parserState.PushState = LinebreakBlock.stateLinebreak 

+

166 return 

+

167 elif token == "-": 

+

168 parserState.NewBlock = RangeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

169 parserState.TokenMarker = None 

+

170 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

171 parserState.TokenMarker = token 

+

172 return 

+

173 elif token == "/": 

+

174 parserState.NewBlock = RangeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

175 parserState.TokenMarker = None 

+

176 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

177 parserState.TokenMarker = token 

+

178 return 

+

179 elif isinstance(token, WordToken) and (token <= "is"): 

+

180 parserState.NewToken = IsKeyword(fromExistingToken=token) 

+

181 parserState.NewBlock = RangeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

182 parserState.NextState = cls.stateDeclarativeRegion 

+

183 return 

+

184 elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

185 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

186 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

187 parserState.TokenMarker = None 

+

188 return 

+

189 

+

190 raise BlockParserException(errorMessage, token) 

+

191 

+

192 @classmethod 

+

193 def stateDeclarativeRegion(cls, parserState: TokenToBlockParser): 

+

194 errorMessage = "Expected one of these keywords: generic, port, begin, end." 

+

195 token = parserState.Token 

+

196 if isinstance(parserState.Token, CharacterToken): 

+

197 if token == "\n": 

+

198 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

199 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

200 parserState.TokenMarker = parserState.NewToken 

+

201 return 

+

202 elif token == "-": 

+

203 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

204 parserState.TokenMarker = token 

+

205 return 

+

206 elif token == "/": 

+

207 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

208 parserState.TokenMarker = token 

+

209 return 

+

210 elif isinstance(token, SpaceToken): 

+

211 parserState.NewToken = IndentationToken(fromExistingToken=token) 

+

212 parserState.NewBlock = IndentationBlock(parserState.LastBlock, parserState.NewToken) 

+

213 return 

+

214 elif isinstance(token, WordToken): 

+

215 keyword = token.Value.lower() 

+

216 if keyword == "generic": 

+

217 newToken = GenericKeyword(fromExistingToken=token) 

+

218 parserState.PushState = GenericList.OpenBlock.stateGenericKeyword 

+

219 elif keyword == "port": 

+

220 newToken = PortKeyword(fromExistingToken=token) 

+

221 parserState.PushState = PortList.OpenBlock.statePortKeyword 

+

222 elif keyword == "end": 

+

223 newToken = EndKeyword(fromExistingToken=token) 

+

224 parserState.NextState = EndGenerateBlock.stateEndKeyword 

+

225 elif keyword == "begin": 

+

226 parserState.NewToken = BeginKeyword(fromExistingToken=token) 

+

227 parserState.NewBlock = BeginBlock(parserState.LastBlock, parserState.NewToken) 

+

228 parserState.NextState = BeginBlock.stateBeginKeyword 

+

229 return 

+

230 else: 

+

231 raise BlockParserException(errorMessage, token) 

+

232 

+

233 parserState.NewToken = newToken 

+

234 parserState.TokenMarker = newToken 

+

235 return 

+

236 

+

237 raise BlockParserException(errorMessage, token) 

+

238 

+

239 

+

240@export 

+

241class BeginBlock(Block): 

+

242 @classmethod 

+

243 def stateBeginKeyword(cls, parserState: TokenToBlockParser): 

+

244 token = parserState.Token 

+

245 errorMessage = "Expected label or one of these keywords: assert, process." 

+

246 if isinstance(token, CharacterToken): 

+

247 if token == "\n": 

+

248 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

249 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

250 parserState.TokenMarker = parserState.NewToken 

+

251 return 

+

252 elif token == "-": 

+

253 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

254 parserState.TokenMarker = token 

+

255 return 

+

256 elif token == "/": 

+

257 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

258 parserState.TokenMarker = token 

+

259 return 

+

260 elif isinstance(token, SpaceToken): 

+

261 return 

+

262 # parserState.NewToken = IndentationToken(fromExistingToken=token) 

+

263 # parserState.NewBlock = IndentationBlock(parserState.LastBlock, parserState.NewToken) 

+

264 # return 

+

265 elif isinstance(token, WordToken): 

+

266 keyword = token.Value.lower() 

+

267 if keyword == "process": 

+

268 newToken = ProcessKeyword(fromExistingToken=token) 

+

269 parserState.PushState = Process.OpenBlock.stateProcessKeyword 

+

270 elif keyword == "assert": 

+

271 newToken = AssertKeyword(fromExistingToken=token) 

+

272 parserState.PushState = AssertBlock.stateAssertKeyword 

+

273 elif keyword == "end": 

+

274 newToken = EndKeyword(fromExistingToken=token) 

+

275 parserState.NextState = EndGenerateBlock.stateEndKeyword 

+

276 else: 

+

277 raise BlockParserException(errorMessage, token) 

+

278 

+

279 parserState.NewToken = newToken 

+

280 parserState.TokenMarker = newToken 

+

281 return 

+

282 

+

283 raise BlockParserException(errorMessage, token) 

+

284 

+

285 

+

286@export 

+

287class EndGenerateBlock(EndGenerateBlockBase): 

+

288 pass 

+
+ + + diff --git a/coverage/d_d0663b954b19b372_IfGenerate_py.html b/coverage/d_d0663b954b19b372_IfGenerate_py.html new file mode 100644 index 000000000..be6ada992 --- /dev/null +++ b/coverage/d_d0663b954b19b372_IfGenerate_py.html @@ -0,0 +1,872 @@ + + + + + Coverage for pyVHDLParser/Blocks/Generate/IfGenerate.py: 0% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/Generate/IfGenerate.py: + 0% +

+ +

+ 672 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Token import CharacterToken, SpaceToken, WordToken, LinebreakToken, IndentationToken 

+

33from pyVHDLParser.Token.Keywords import BoundaryToken, IdentifierToken 

+

34from pyVHDLParser.Token.Keywords import BeginKeyword, ProcessKeyword, AssertKeyword 

+

35from pyVHDLParser.Token.Keywords import IsKeyword, EndKeyword, GenericKeyword, PortKeyword 

+

36from pyVHDLParser.Blocks import Block, BlockParserException, TokenToBlockParser 

+

37from pyVHDLParser.Blocks.Common import LinebreakBlock, IndentationBlock, WhitespaceBlock 

+

38from pyVHDLParser.Blocks.Comment import SingleLineCommentBlock, MultiLineCommentBlock 

+

39from pyVHDLParser.Blocks.Generate import EndGenerateBlock as EndGenerateBlockBase 

+

40from pyVHDLParser.Blocks.List import GenericList, PortList 

+

41from pyVHDLParser.Blocks.Reporting.Assert import AssertBlock 

+

42from pyVHDLParser.Blocks.Sequential import Process 

+

43 

+

44 

+

45@export 

+

46class IfConditionBlock(Block): 

+

47 @classmethod 

+

48 def stateGenerateKeyword(cls, parserState: TokenToBlockParser): 

+

49 token = parserState.Token 

+

50 errorMessage = "Expected whitespace after keyword GENERATE." 

+

51 if isinstance(token, CharacterToken): 

+

52 if token == "\n": 

+

53 parserState.NewBlock = IfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

54 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

55 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

56 parserState.TokenMarker = None 

+

57 parserState.NextState = cls.stateWhitespace1 

+

58 parserState.PushState = LinebreakBlock.stateLinebreak 

+

59 return 

+

60 elif token == "-": 

+

61 parserState.NewBlock = IfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

62 parserState.TokenMarker = None 

+

63 parserState.NextState = cls.stateWhitespace1 

+

64 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

65 parserState.TokenMarker = token 

+

66 return 

+

67 elif token == "/": 

+

68 parserState.NewBlock = IfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

69 parserState.TokenMarker = None 

+

70 parserState.NextState = cls.stateWhitespace1 

+

71 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

72 parserState.TokenMarker = token 

+

73 return 

+

74 elif isinstance(token, SpaceToken): 

+

75 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

76 parserState.NextState = cls.stateWhitespace1 

+

77 return 

+

78 

+

79 raise BlockParserException(errorMessage, token) 

+

80 

+

81 @classmethod 

+

82 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

83 token = parserState.Token 

+

84 errorMessage = "Expected generate name (identifier)." 

+

85 if isinstance(token, CharacterToken): 

+

86 if token == "\n": 

+

87 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

88 if not isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

89 parserState.NewBlock = IfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) 

+

90 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

91 else: 

+

92 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

93 parserState.TokenMarker = None 

+

94 parserState.PushState = LinebreakBlock.stateLinebreak 

+

95 return 

+

96 elif token == "-": 

+

97 parserState.NewBlock = IfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

98 parserState.TokenMarker = None 

+

99 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

100 parserState.TokenMarker = token 

+

101 return 

+

102 elif token == "/": 

+

103 parserState.NewBlock = IfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

104 parserState.TokenMarker = None 

+

105 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

106 parserState.TokenMarker = token 

+

107 return 

+

108 elif isinstance(token, WordToken): 

+

109 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

110 parserState.NextState = cls.stateGenerateName 

+

111 return 

+

112 elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

113 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

114 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

115 parserState.TokenMarker = None 

+

116 return 

+

117 

+

118 raise BlockParserException(errorMessage, token) 

+

119 

+

120 @classmethod 

+

121 def stateGenerateName(cls, parserState: TokenToBlockParser): 

+

122 token = parserState.Token 

+

123 errorMessage = "Expected whitespace after keyword GENERATE." 

+

124 if isinstance(token, CharacterToken): 

+

125 if token == "\n": 

+

126 parserState.NewBlock = IfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

127 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

128 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

129 parserState.TokenMarker = None 

+

130 parserState.NextState = cls.stateWhitespace2 

+

131 parserState.PushState = LinebreakBlock.stateLinebreak 

+

132 return 

+

133 elif token == "-": 

+

134 parserState.NewBlock = IfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

135 parserState.TokenMarker = None 

+

136 parserState.NextState = cls.stateWhitespace2 

+

137 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

138 parserState.TokenMarker = token 

+

139 return 

+

140 elif token == "/": 

+

141 parserState.NewBlock = IfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

142 parserState.TokenMarker = None 

+

143 parserState.NextState = cls.stateWhitespace2 

+

144 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

145 parserState.TokenMarker = token 

+

146 return 

+

147 elif isinstance(token, SpaceToken): 

+

148 parserState.NextState = cls.stateWhitespace2 

+

149 return 

+

150 

+

151 raise BlockParserException(errorMessage, token) 

+

152 

+

153 @classmethod 

+

154 def stateWhitespace2(cls, parserState: TokenToBlockParser): 

+

155 token = parserState.Token 

+

156 errorMessage = "Expected keyword IS after generate name." 

+

157 if isinstance(token, CharacterToken): 

+

158 if token == "\n": 

+

159 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

160 if not isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

161 parserState.NewBlock = IfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) 

+

162 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

163 else: 

+

164 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

165 parserState.TokenMarker = None 

+

166 parserState.PushState = LinebreakBlock.stateLinebreak 

+

167 return 

+

168 elif token == "-": 

+

169 parserState.NewBlock = IfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

170 parserState.TokenMarker = None 

+

171 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

172 parserState.TokenMarker = token 

+

173 return 

+

174 elif token == "/": 

+

175 parserState.NewBlock = IfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

176 parserState.TokenMarker = None 

+

177 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

178 parserState.TokenMarker = token 

+

179 return 

+

180 elif isinstance(token, WordToken) and (token <= "is"): 

+

181 parserState.NewToken = IsKeyword(fromExistingToken=token) 

+

182 parserState.NewBlock = IfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

183 parserState.NextState = cls.stateDeclarativeRegion 

+

184 return 

+

185 elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

186 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

187 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

188 parserState.TokenMarker = None 

+

189 return 

+

190 

+

191 raise BlockParserException(errorMessage, token) 

+

192 

+

193 @classmethod 

+

194 def stateDeclarativeRegion(cls, parserState: TokenToBlockParser): 

+

195 errorMessage = "Expected one of these keywords: generic, port, begin, end." 

+

196 token = parserState.Token 

+

197 if isinstance(parserState.Token, CharacterToken): 

+

198 if token == "\n": 

+

199 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

200 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

201 parserState.TokenMarker = parserState.NewToken 

+

202 return 

+

203 elif token == "-": 

+

204 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

205 parserState.TokenMarker = token 

+

206 return 

+

207 elif token == "/": 

+

208 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

209 parserState.TokenMarker = token 

+

210 return 

+

211 elif isinstance(token, SpaceToken): 

+

212 parserState.NewToken = IndentationToken(fromExistingToken=token) 

+

213 parserState.NewBlock = IndentationBlock(parserState.LastBlock, parserState.NewToken) 

+

214 return 

+

215 elif isinstance(token, WordToken): 

+

216 keyword = token.Value.lower() 

+

217 if keyword == "generic": 

+

218 newToken = GenericKeyword(fromExistingToken=token) 

+

219 parserState.PushState = GenericList.OpenBlock.stateGenericKeyword 

+

220 elif keyword == "port": 

+

221 newToken = PortKeyword(fromExistingToken=token) 

+

222 parserState.PushState = PortList.OpenBlock.statePortKeyword 

+

223 elif keyword == "end": 

+

224 newToken = EndKeyword(fromExistingToken=token) 

+

225 parserState.NextState = EndGenerateBlock.stateEndKeyword 

+

226 elif keyword == "begin": 

+

227 parserState.NewToken = BeginKeyword(fromExistingToken=token) 

+

228 parserState.NewBlock = BeginBlock(parserState.LastBlock, parserState.NewToken) 

+

229 parserState.NextState = BeginBlock.stateBeginKeyword 

+

230 return 

+

231 else: 

+

232 raise BlockParserException(errorMessage, token) 

+

233 

+

234 parserState.NewToken = newToken 

+

235 parserState.TokenMarker = newToken 

+

236 return 

+

237 

+

238 raise BlockParserException(errorMessage, token) 

+

239 

+

240 

+

241@export 

+

242class BeginBlock(Block): 

+

243 @classmethod 

+

244 def stateBeginKeyword(cls, parserState: TokenToBlockParser): 

+

245 token = parserState.Token 

+

246 errorMessage = "Expected label or one of these keywords: assert, process." 

+

247 if isinstance(token, CharacterToken): 

+

248 if token == "\n": 

+

249 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

250 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

251 parserState.TokenMarker = parserState.NewToken 

+

252 return 

+

253 elif token == "-": 

+

254 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

255 parserState.TokenMarker = token 

+

256 return 

+

257 elif token == "/": 

+

258 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

259 parserState.TokenMarker = token 

+

260 return 

+

261 elif isinstance(token, SpaceToken): 

+

262 return 

+

263 # parserState.NewToken = IndentationToken(fromExistingToken=token) 

+

264 # parserState.NewBlock = IndentationBlock(parserState.LastBlock, parserState.NewToken) 

+

265 # return 

+

266 elif isinstance(token, WordToken): 

+

267 keyword = token.Value.lower() 

+

268 if keyword == "process": 

+

269 newToken = ProcessKeyword(fromExistingToken=token) 

+

270 parserState.PushState = Process.OpenBlock.stateProcessKeyword 

+

271 elif keyword == "assert": 

+

272 newToken = AssertKeyword(fromExistingToken=token) 

+

273 parserState.PushState = AssertBlock.stateAssertKeyword 

+

274 elif keyword == "end": 

+

275 newToken = EndKeyword(fromExistingToken=token) 

+

276 parserState.NextState = EndGenerateBlock.stateEndKeyword 

+

277 else: 

+

278 raise BlockParserException(errorMessage, token) 

+

279 

+

280 parserState.NewToken = newToken 

+

281 parserState.TokenMarker = newToken 

+

282 return 

+

283 

+

284 raise BlockParserException(errorMessage, token) 

+

285 

+

286 

+

287@export 

+

288class ElsIfConditionBlock(Block): 

+

289 @classmethod 

+

290 def stateGenerateKeyword(cls, parserState: TokenToBlockParser): 

+

291 token = parserState.Token 

+

292 errorMessage = "Expected whitespace after keyword GENERATE." 

+

293 if isinstance(token, CharacterToken): 

+

294 if token == "\n": 

+

295 parserState.NewBlock = ElsIfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

296 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

297 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

298 parserState.TokenMarker = None 

+

299 parserState.NextState = cls.stateWhitespace1 

+

300 parserState.PushState = LinebreakBlock.stateLinebreak 

+

301 return 

+

302 elif token == "-": 

+

303 parserState.NewBlock = ElsIfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

304 parserState.TokenMarker = None 

+

305 parserState.NextState = cls.stateWhitespace1 

+

306 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

307 parserState.TokenMarker = token 

+

308 return 

+

309 elif token == "/": 

+

310 parserState.NewBlock = ElsIfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

311 parserState.TokenMarker = None 

+

312 parserState.NextState = cls.stateWhitespace1 

+

313 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

314 parserState.TokenMarker = token 

+

315 return 

+

316 elif isinstance(token, SpaceToken): 

+

317 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

318 parserState.NextState = cls.stateWhitespace1 

+

319 return 

+

320 

+

321 raise BlockParserException(errorMessage, token) 

+

322 

+

323 @classmethod 

+

324 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

325 token = parserState.Token 

+

326 errorMessage = "Expected generate name (identifier)." 

+

327 if isinstance(token, CharacterToken): 

+

328 if token == "\n": 

+

329 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

330 if not isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

331 parserState.NewBlock = ElsIfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) 

+

332 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

333 else: 

+

334 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

335 parserState.TokenMarker = None 

+

336 parserState.PushState = LinebreakBlock.stateLinebreak 

+

337 return 

+

338 elif token == "-": 

+

339 parserState.NewBlock = ElsIfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

340 parserState.TokenMarker = None 

+

341 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

342 parserState.TokenMarker = token 

+

343 return 

+

344 elif token == "/": 

+

345 parserState.NewBlock = ElsIfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

346 parserState.TokenMarker = None 

+

347 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

348 parserState.TokenMarker = token 

+

349 return 

+

350 elif isinstance(token, WordToken): 

+

351 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

352 parserState.NextState = cls.stateGenerateName 

+

353 return 

+

354 elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

355 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

356 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

357 parserState.TokenMarker = None 

+

358 return 

+

359 

+

360 raise BlockParserException(errorMessage, token) 

+

361 

+

362 @classmethod 

+

363 def stateGenerateName(cls, parserState: TokenToBlockParser): 

+

364 token = parserState.Token 

+

365 errorMessage = "Expected whitespace after keyword GENERATE." 

+

366 if isinstance(token, CharacterToken): 

+

367 if token == "\n": 

+

368 parserState.NewBlock = ElsIfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

369 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

370 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

371 parserState.TokenMarker = None 

+

372 parserState.NextState = cls.stateWhitespace2 

+

373 parserState.PushState = LinebreakBlock.stateLinebreak 

+

374 return 

+

375 elif token == "-": 

+

376 parserState.NewBlock = ElsIfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

377 parserState.TokenMarker = None 

+

378 parserState.NextState = cls.stateWhitespace2 

+

379 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

380 parserState.TokenMarker = token 

+

381 return 

+

382 elif token == "/": 

+

383 parserState.NewBlock = ElsIfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

384 parserState.TokenMarker = None 

+

385 parserState.NextState = cls.stateWhitespace2 

+

386 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

387 parserState.TokenMarker = token 

+

388 return 

+

389 elif isinstance(token, SpaceToken): 

+

390 parserState.NextState = cls.stateWhitespace2 

+

391 return 

+

392 

+

393 raise BlockParserException(errorMessage, token) 

+

394 

+

395 @classmethod 

+

396 def stateWhitespace2(cls, parserState: TokenToBlockParser): 

+

397 token = parserState.Token 

+

398 errorMessage = "Expected keyword IS after generate name." 

+

399 if isinstance(token, CharacterToken): 

+

400 if token == "\n": 

+

401 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

402 if not isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

403 parserState.NewBlock = ElsIfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) 

+

404 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

405 else: 

+

406 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

407 parserState.TokenMarker = None 

+

408 parserState.PushState = LinebreakBlock.stateLinebreak 

+

409 return 

+

410 elif token == "-": 

+

411 parserState.NewBlock = ElsIfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

412 parserState.TokenMarker = None 

+

413 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

414 parserState.TokenMarker = token 

+

415 return 

+

416 elif token == "/": 

+

417 parserState.NewBlock = ElsIfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

418 parserState.TokenMarker = None 

+

419 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

420 parserState.TokenMarker = token 

+

421 return 

+

422 elif isinstance(token, WordToken) and (token <= "is"): 

+

423 parserState.NewToken = IsKeyword(fromExistingToken=token) 

+

424 parserState.NewBlock = ElsIfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

425 parserState.NextState = cls.stateDeclarativeRegion 

+

426 return 

+

427 elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

428 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

429 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

430 parserState.TokenMarker = None 

+

431 return 

+

432 

+

433 raise BlockParserException(errorMessage, token) 

+

434 

+

435 @classmethod 

+

436 def stateDeclarativeRegion(cls, parserState: TokenToBlockParser): 

+

437 errorMessage = "Expected one of these keywords: generic, port, begin, end." 

+

438 token = parserState.Token 

+

439 if isinstance(parserState.Token, CharacterToken): 

+

440 if token == "\n": 

+

441 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

442 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

443 parserState.TokenMarker = parserState.NewToken 

+

444 return 

+

445 elif token == "-": 

+

446 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

447 parserState.TokenMarker = token 

+

448 return 

+

449 elif token == "/": 

+

450 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

451 parserState.TokenMarker = token 

+

452 return 

+

453 elif isinstance(token, SpaceToken): 

+

454 parserState.NewToken = IndentationToken(fromExistingToken=token) 

+

455 parserState.NewBlock = IndentationBlock(parserState.LastBlock, parserState.NewToken) 

+

456 return 

+

457 elif isinstance(token, WordToken): 

+

458 keyword = token.Value.lower() 

+

459 if keyword == "generic": 

+

460 newToken = GenericKeyword(fromExistingToken=token) 

+

461 parserState.PushState = GenericList.OpenBlock.stateGenericKeyword 

+

462 elif keyword == "port": 

+

463 newToken = PortKeyword(fromExistingToken=token) 

+

464 parserState.PushState = PortList.OpenBlock.statePortKeyword 

+

465 elif keyword == "end": 

+

466 newToken = EndKeyword(fromExistingToken=token) 

+

467 parserState.NextState = EndGenerateBlock.stateEndKeyword 

+

468 elif keyword == "begin": 

+

469 parserState.NewToken = BeginKeyword(fromExistingToken=token) 

+

470 parserState.NewBlock = ElsIfBeginBlock(parserState.LastBlock, parserState.NewToken) 

+

471 parserState.NextState = ElsIfBeginBlock.stateBeginKeyword 

+

472 return 

+

473 else: 

+

474 raise BlockParserException(errorMessage, token) 

+

475 

+

476 parserState.NewToken = newToken 

+

477 parserState.TokenMarker = newToken 

+

478 return 

+

479 

+

480 raise BlockParserException(errorMessage, token) 

+

481 

+

482 

+

483@export 

+

484class ElsIfBeginBlock(Block): 

+

485 @classmethod 

+

486 def stateBeginKeyword(cls, parserState: TokenToBlockParser): 

+

487 token = parserState.Token 

+

488 errorMessage = "Expected label or one of these keywords: assert, process." 

+

489 if isinstance(token, CharacterToken): 

+

490 if token == "\n": 

+

491 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

492 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

493 parserState.TokenMarker = parserState.NewToken 

+

494 return 

+

495 elif token == "-": 

+

496 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

497 parserState.TokenMarker = token 

+

498 return 

+

499 elif token == "/": 

+

500 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

501 parserState.TokenMarker = token 

+

502 return 

+

503 elif isinstance(token, SpaceToken): 

+

504 return 

+

505 # parserState.NewToken = IndentationToken(fromExistingToken=token) 

+

506 # parserState.NewBlock = IndentationBlock(parserState.LastBlock, parserState.NewToken) 

+

507 # return 

+

508 elif isinstance(token, WordToken): 

+

509 keyword = token.Value.lower() 

+

510 if keyword == "process": 

+

511 newToken = ProcessKeyword(fromExistingToken=token) 

+

512 parserState.PushState = Process.OpenBlock.stateProcessKeyword 

+

513 elif keyword == "assert": 

+

514 newToken = AssertKeyword(fromExistingToken=token) 

+

515 parserState.PushState = AssertBlock.stateAssertKeyword 

+

516 elif keyword == "end": 

+

517 newToken = EndKeyword(fromExistingToken=token) 

+

518 parserState.NextState = EndGenerateBlock.stateEndKeyword 

+

519 else: 

+

520 raise BlockParserException(errorMessage, token) 

+

521 

+

522 parserState.NewToken = newToken 

+

523 parserState.TokenMarker = newToken 

+

524 return 

+

525 

+

526 raise BlockParserException(errorMessage, token) 

+

527 

+

528 

+

529@export 

+

530class ElseGenerateBlock(Block): 

+

531 @classmethod 

+

532 def stateGenerateKeyword(cls, parserState: TokenToBlockParser): 

+

533 token = parserState.Token 

+

534 errorMessage = "Expected whitespace after keyword GENERATE." 

+

535 if isinstance(token, CharacterToken): 

+

536 if token == "\n": 

+

537 parserState.NewBlock = ElseGenerateBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

538 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

539 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

540 parserState.TokenMarker = None 

+

541 parserState.NextState = cls.stateWhitespace1 

+

542 parserState.PushState = LinebreakBlock.stateLinebreak 

+

543 return 

+

544 elif token == "-": 

+

545 parserState.NewBlock = ElseGenerateBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

546 parserState.TokenMarker = None 

+

547 parserState.NextState = cls.stateWhitespace1 

+

548 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

549 parserState.TokenMarker = token 

+

550 return 

+

551 elif token == "/": 

+

552 parserState.NewBlock = ElseGenerateBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

553 parserState.TokenMarker = None 

+

554 parserState.NextState = cls.stateWhitespace1 

+

555 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

556 parserState.TokenMarker = token 

+

557 return 

+

558 elif isinstance(token, SpaceToken): 

+

559 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

560 parserState.NextState = cls.stateWhitespace1 

+

561 return 

+

562 

+

563 raise BlockParserException(errorMessage, token) 

+

564 

+

565 @classmethod 

+

566 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

567 token = parserState.Token 

+

568 errorMessage = "Expected generate name (identifier)." 

+

569 if isinstance(token, CharacterToken): 

+

570 if token == "\n": 

+

571 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

572 if not isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

573 parserState.NewBlock = ElseGenerateBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) 

+

574 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

575 else: 

+

576 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

577 parserState.TokenMarker = None 

+

578 parserState.PushState = LinebreakBlock.stateLinebreak 

+

579 return 

+

580 elif token == "-": 

+

581 parserState.NewBlock = ElseGenerateBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

582 parserState.TokenMarker = None 

+

583 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

584 parserState.TokenMarker = token 

+

585 return 

+

586 elif token == "/": 

+

587 parserState.NewBlock = ElseGenerateBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

588 parserState.TokenMarker = None 

+

589 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

590 parserState.TokenMarker = token 

+

591 return 

+

592 elif isinstance(token, WordToken): 

+

593 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

594 parserState.NextState = cls.stateGenerateName 

+

595 return 

+

596 elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

597 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

598 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

599 parserState.TokenMarker = None 

+

600 return 

+

601 

+

602 raise BlockParserException(errorMessage, token) 

+

603 

+

604 @classmethod 

+

605 def stateGenerateName(cls, parserState: TokenToBlockParser): 

+

606 token = parserState.Token 

+

607 errorMessage = "Expected whitespace after keyword GENERATE." 

+

608 if isinstance(token, CharacterToken): 

+

609 if token == "\n": 

+

610 parserState.NewBlock = ElseGenerateBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

611 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

612 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

613 parserState.TokenMarker = None 

+

614 parserState.NextState = cls.stateWhitespace2 

+

615 parserState.PushState = LinebreakBlock.stateLinebreak 

+

616 return 

+

617 elif token == "-": 

+

618 parserState.NewBlock = ElseGenerateBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

619 parserState.TokenMarker = None 

+

620 parserState.NextState = cls.stateWhitespace2 

+

621 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

622 parserState.TokenMarker = token 

+

623 return 

+

624 elif token == "/": 

+

625 parserState.NewBlock = ElseGenerateBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

626 parserState.TokenMarker = None 

+

627 parserState.NextState = cls.stateWhitespace2 

+

628 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

629 parserState.TokenMarker = token 

+

630 return 

+

631 elif isinstance(token, SpaceToken): 

+

632 parserState.NextState = cls.stateWhitespace2 

+

633 return 

+

634 

+

635 raise BlockParserException(errorMessage, token) 

+

636 

+

637 @classmethod 

+

638 def stateWhitespace2(cls, parserState: TokenToBlockParser): 

+

639 token = parserState.Token 

+

640 errorMessage = "Expected keyword IS after generate name." 

+

641 if isinstance(token, CharacterToken): 

+

642 if token == "\n": 

+

643 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

644 if not isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

645 parserState.NewBlock = ElseGenerateBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) 

+

646 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

647 else: 

+

648 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

649 parserState.TokenMarker = None 

+

650 parserState.PushState = LinebreakBlock.stateLinebreak 

+

651 return 

+

652 elif token == "-": 

+

653 parserState.NewBlock = ElseGenerateBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

654 parserState.TokenMarker = None 

+

655 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

656 parserState.TokenMarker = token 

+

657 return 

+

658 elif token == "/": 

+

659 parserState.NewBlock = ElseGenerateBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

660 parserState.TokenMarker = None 

+

661 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

662 parserState.TokenMarker = token 

+

663 return 

+

664 elif isinstance(token, WordToken) and (token <= "is"): 

+

665 parserState.NewToken = IsKeyword(fromExistingToken=token) 

+

666 parserState.NewBlock = ElseGenerateBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

667 parserState.NextState = cls.stateDeclarativeRegion 

+

668 return 

+

669 elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

670 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

671 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

672 parserState.TokenMarker = None 

+

673 return 

+

674 

+

675 raise BlockParserException(errorMessage, token) 

+

676 

+

677 @classmethod 

+

678 def stateDeclarativeRegion(cls, parserState: TokenToBlockParser): 

+

679 errorMessage = "Expected one of these keywords: generic, port, begin, end." 

+

680 token = parserState.Token 

+

681 if isinstance(parserState.Token, CharacterToken): 

+

682 if token == "\n": 

+

683 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

684 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

685 parserState.TokenMarker = parserState.NewToken 

+

686 return 

+

687 elif token == "-": 

+

688 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

689 parserState.TokenMarker = token 

+

690 return 

+

691 elif token == "/": 

+

692 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

693 parserState.TokenMarker = token 

+

694 return 

+

695 elif isinstance(token, SpaceToken): 

+

696 parserState.NewToken = IndentationToken(fromExistingToken=token) 

+

697 parserState.NewBlock = IndentationBlock(parserState.LastBlock, parserState.NewToken) 

+

698 return 

+

699 elif isinstance(token, WordToken): 

+

700 keyword = token.Value.lower() 

+

701 if keyword == "generic": 

+

702 newToken = GenericKeyword(fromExistingToken=token) 

+

703 parserState.PushState = GenericList.OpenBlock.stateGenericKeyword 

+

704 elif keyword == "port": 

+

705 newToken = PortKeyword(fromExistingToken=token) 

+

706 parserState.PushState = PortList.OpenBlock.statePortKeyword 

+

707 elif keyword == "end": 

+

708 newToken = EndKeyword(fromExistingToken=token) 

+

709 parserState.NextState = EndGenerateBlock.stateEndKeyword 

+

710 elif keyword == "begin": 

+

711 parserState.NewToken = BeginKeyword(fromExistingToken=token) 

+

712 parserState.NewBlock = ElseGenerateBeginBlock(parserState.LastBlock, parserState.NewToken) 

+

713 parserState.NextState = ElseGenerateBeginBlock.stateBeginKeyword 

+

714 return 

+

715 else: 

+

716 raise BlockParserException(errorMessage, token) 

+

717 

+

718 parserState.NewToken = newToken 

+

719 parserState.TokenMarker = newToken 

+

720 return 

+

721 

+

722 raise BlockParserException(errorMessage, token) 

+

723 

+

724 

+

725@export 

+

726class ElseGenerateBeginBlock(Block): 

+

727 @classmethod 

+

728 def stateBeginKeyword(cls, parserState: TokenToBlockParser): 

+

729 token = parserState.Token 

+

730 errorMessage = "Expected label or one of these keywords: assert, process." 

+

731 if isinstance(token, CharacterToken): 

+

732 if token == "\n": 

+

733 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

734 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

735 parserState.TokenMarker = parserState.NewToken 

+

736 return 

+

737 elif token == "-": 

+

738 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

739 parserState.TokenMarker = token 

+

740 return 

+

741 elif token == "/": 

+

742 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

743 parserState.TokenMarker = token 

+

744 return 

+

745 elif isinstance(token, SpaceToken): 

+

746 return 

+

747 # parserState.NewToken = IndentationToken(fromExistingToken=token) 

+

748 # parserState.NewBlock = IndentationBlock(parserState.LastBlock, parserState.NewToken) 

+

749 # return 

+

750 elif isinstance(token, WordToken): 

+

751 keyword = token.Value.lower() 

+

752 if keyword == "process": 

+

753 newToken = ProcessKeyword(fromExistingToken=token) 

+

754 parserState.PushState = Process.OpenBlock.stateProcessKeyword 

+

755 elif keyword == "assert": 

+

756 newToken = AssertKeyword(fromExistingToken=token) 

+

757 parserState.PushState = AssertBlock.stateAssertKeyword 

+

758 elif keyword == "end": 

+

759 newToken = EndKeyword(fromExistingToken=token) 

+

760 parserState.NextState = EndGenerateBlock.stateEndKeyword 

+

761 else: 

+

762 raise BlockParserException(errorMessage, token) 

+

763 

+

764 parserState.NewToken = newToken 

+

765 parserState.TokenMarker = newToken 

+

766 return 

+

767 

+

768 raise BlockParserException(errorMessage, token) 

+

769 

+

770 

+

771@export 

+

772class EndGenerateBlock(EndGenerateBlockBase): 

+

773 pass 

+
+ + + diff --git a/coverage/d_d0663b954b19b372___init___py.html b/coverage/d_d0663b954b19b372___init___py.html new file mode 100644 index 000000000..38898b2b6 --- /dev/null +++ b/coverage/d_d0663b954b19b372___init___py.html @@ -0,0 +1,139 @@ + + + + + Coverage for pyVHDLParser/Blocks/Generate/__init__.py: 0% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/Generate/__init__.py: + 0% +

+ +

+ 8 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Token.Keywords import GenerateKeyword 

+

33from pyVHDLParser.Blocks.Generic import EndBlock 

+

34 

+

35 

+

36@export 

+

37class EndGenerateBlock(EndBlock): 

+

38 KEYWORD = GenerateKeyword 

+

39 KEYWORD_IS_OPTIONAL = True 

+

40 EXPECTED_NAME = KEYWORD.__KEYWORD__ 

+
+ + + diff --git a/coverage/d_defb5b8fc10f8036_Base_py.html b/coverage/d_defb5b8fc10f8036_Base_py.html new file mode 100644 index 000000000..364aa8b52 --- /dev/null +++ b/coverage/d_defb5b8fc10f8036_Base_py.html @@ -0,0 +1,143 @@ + + + + + Coverage for pyVHDLParser/Base.py: 100% + + + + + +
+
+

+ Coverage for pyVHDLParser/Base.py: + 100% +

+ +

+ 10 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32 

+

33@export 

+

34class ExceptionBase(Exception): 

+

35 def __init__(self, message: str): 

+

36 self._message = message 

+

37 

+

38 def __str__(self) -> str: 

+

39 return self._message 

+

40 

+

41 

+

42@export 

+

43class ParserException(ExceptionBase): 

+

44 pass 

+
+ + + diff --git a/coverage/d_defb5b8fc10f8036_Decorators_py.html b/coverage/d_defb5b8fc10f8036_Decorators_py.html new file mode 100644 index 000000000..4ff2cafc0 --- /dev/null +++ b/coverage/d_defb5b8fc10f8036_Decorators_py.html @@ -0,0 +1,220 @@ + + + + + Coverage for pyVHDLParser/Decorators.py: 0% + + + + + +
+
+

+ Coverage for pyVHDLParser/Decorators.py: + 0% +

+ +

+ 39 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30import functools 

+

31import time 

+

32from typing import Dict 

+

33 

+

34 

+

35class ExecutionTimer: 

+

36 _times: Dict = None 

+

37 

+

38 def __init__(self): 

+

39 self._times = {} 

+

40 

+

41 def AddExecutionTime(self, function, executionTime): 

+

42 try: 

+

43 self._times[function].append(executionTime) 

+

44 except ValueError: 

+

45 self._times[function] = [ executionTime ] 

+

46 

+

47 

+

48class ExecutionCounter: 

+

49 _counts: Dict = None 

+

50 

+

51 def __init__(self): 

+

52 self._counts = {} 

+

53 

+

54 def IncrementCallCounter(self, function): 

+

55 try: 

+

56 self._counts[function] += 1 

+

57 except ValueError: 

+

58 self._counts[function] = 1 

+

59 

+

60 

+

61def LogExecutionTime(function): 

+

62 """Measure the runtime execution time of functions and methods.""" 

+

63 

+

64 @functools.wraps(function) 

+

65 def wrapper(*args, **kwargs): 

+

66 start_time = time.perf_counter() 

+

67 value = function(*args, **kwargs) 

+

68 end_time = time.perf_counter() 

+

69 

+

70 __TIMER__.AddExecutionTime(function, end_time - start_time) 

+

71 

+

72 return value 

+

73 

+

74 return wrapper 

+

75 

+

76def LogExecutionCount(function): 

+

77 """Count how often a functions or methods was called.""" 

+

78 

+

79 @functools.wraps(function) 

+

80 def wrapper(*args, **kwargs): 

+

81 value = function(*args, **kwargs) 

+

82 

+

83 __COUNTER__.IncrementCallCounter(function) 

+

84 

+

85 return value 

+

86 

+

87 return wrapper 

+

88 

+

89__TIMER__ = ExecutionTimer() 

+

90__COUNTER__ = ExecutionCounter() 

+

91 

+

92# def debug(func): 

+

93# """Print the function signature and return value""" 

+

94# @functools.wraps(func) 

+

95# def wrapper_debug(*args, **kwargs): 

+

96# args_repr = [repr(a) for a in args] # 1 

+

97# kwargs_repr = [f"{k}={v!r}" for k, v in kwargs.items()] # 2 

+

98# signature = ", ".join(args_repr + kwargs_repr) # 3 

+

99# print(f"Calling {func.__name__}({signature})") 

+

100# value = func(*args, **kwargs) 

+

101# print(f"{func.__name__!r} returned {value!r}") # 4 

+

102# return value 

+

103# return wrapper_debug 

+

104 

+

105# class CountCalls: 

+

106# def __init__(self, func): 

+

107# functools.update_wrapper(self, func) 

+

108# self.func = func 

+

109# self.num_calls = 0 

+

110# 

+

111# def __call__(self, *args, **kwargs): 

+

112# self.num_calls += 1 

+

113# print(f"Call {self.num_calls} of {self.func.__name__!r}") 

+

114# return self.func(*args, **kwargs) 

+

115# 

+

116# def set_unit(unit): 

+

117# """Register a unit on a function""" 

+

118# def decorator_set_unit(func): 

+

119# func.unit = unit 

+

120# return func 

+

121# return decorator_set_unit 

+
+ + + diff --git a/coverage/d_defb5b8fc10f8036___init___py.html b/coverage/d_defb5b8fc10f8036___init___py.html new file mode 100644 index 000000000..19e611c65 --- /dev/null +++ b/coverage/d_defb5b8fc10f8036___init___py.html @@ -0,0 +1,192 @@ + + + + + Coverage for pyVHDLParser/__init__.py: 100% + + + + + +
+
+

+ Coverage for pyVHDLParser/__init__.py: + 100% +

+ +

+ 34 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30"""\ 

+

31A streaming-based VHDL parser. 

+

32""" 

+

33__author__ = "Patrick Lehmann" 

+

34__email__ = "Paebbels@gmail.com" 

+

35__copyright__ = "Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany\nCopyright 2016-2017 Patrick Lehmann - Dresden, Germany" 

+

36__license__ = "Apache License, Version 2.0" 

+

37__version__ = "0.8.0" 

+

38__keywords__ = ["parser", "vhdl", "code generator", "hdl"] 

+

39 

+

40from pyTooling.Decorators import export 

+

41from pyTooling.MetaClasses import ExtendedType 

+

42 

+

43 

+

44@export 

+

45class SourceCodePosition(metaclass=ExtendedType, useSlots=True): 

+

46 """Represent a position (row, column, absolute) in a source code file.""" 

+

47 

+

48 Row: int #: Row in the source code file 

+

49 Column: int #: Column (character) in the source code file's line 

+

50 Absolute: int #: Absolute character position regardless of linebreaks. 

+

51 

+

52 def __init__(self, row: int, column: int, absolute: int): 

+

53 """Initializes a SourceCodePosition object.""" 

+

54 

+

55 self.Row = row 

+

56 self.Column = column 

+

57 self.Absolute = absolute 

+

58 

+

59 def __repr__(self) -> str: 

+

60 return "{0}:{1}".format(self.Row, self.Column) 

+

61 

+

62 def __str__(self) -> str: 

+

63 return "(line: {0: >3}, col: {1: >2})".format(self.Row, self.Column) 

+

64 

+

65 

+

66@export 

+

67class StartOf(metaclass=ExtendedType, useSlots=True): 

+

68 """Base-class (mixin) for all StartOf*** classes.""" 

+

69 

+

70 

+

71@export 

+

72class StartOfDocument(StartOf): 

+

73 """Base-class (mixin) for all StartOf***Document classes.""" 

+

74 

+

75 

+

76@export 

+

77class StartOfSnippet(StartOf): 

+

78 """Base-class (mixin) for all StartOf***Snippet classes.""" 

+

79 

+

80 

+

81@export 

+

82class EndOf(metaclass=ExtendedType, useSlots=True): 

+

83 """Base-class (mixin) for all EndOf*** classes.""" 

+

84 

+

85 

+

86@export 

+

87class EndOfDocument(EndOf): 

+

88 """Base-class (mixin) for all EndOf***Document classes.""" 

+

89 

+

90 

+

91@export 

+

92class EndOfSnippet(EndOf): 

+

93 """Base-class (mixin) for all EndOf***Snippet classes.""" 

+
+ + + diff --git a/coverage/d_e250293a46335217_GenericList_py.html b/coverage/d_e250293a46335217_GenericList_py.html new file mode 100644 index 000000000..93b33ff50 --- /dev/null +++ b/coverage/d_e250293a46335217_GenericList_py.html @@ -0,0 +1,325 @@ + + + + + Coverage for pyVHDLParser/Blocks/List/GenericList.py: 45% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/List/GenericList.py: + 45% +

+ +

+ 162 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Token import CharacterToken, LinebreakToken, IndentationToken, CommentToken, MultiLineCommentToken, SingleLineCommentToken, ExtendedIdentifier 

+

33from pyVHDLParser.Token.Keywords import BoundaryToken, ConstantKeyword, TypeKeyword, DelimiterToken 

+

34from pyVHDLParser.Token.Keywords import IdentifierToken 

+

35from pyVHDLParser.Token.Parser import SpaceToken, WordToken 

+

36from pyVHDLParser.Blocks import BlockParserException, Block, CommentBlock, TokenToBlockParser, SkipableBlock 

+

37from pyVHDLParser.Blocks.Common import LinebreakBlock, IndentationBlock, WhitespaceBlock 

+

38from pyVHDLParser.Blocks.Generic1 import CloseBlock as CloseBlockBase 

+

39from pyVHDLParser.Blocks.Expression import ExpressionBlockEndedByCharORClosingRoundBracket 

+

40from pyVHDLParser.Blocks.InterfaceObject import InterfaceConstantBlock, InterfaceTypeBlock 

+

41 

+

42 

+

43@export 

+

44class CloseBlock(CloseBlockBase): 

+

45 pass 

+

46 

+

47 

+

48@export 

+

49class DelimiterBlock(SkipableBlock): 

+

50 @classmethod 

+

51 def stateItemDelimiter(cls, parserState: TokenToBlockParser): 

+

52 token = parserState.Token 

+

53 if isinstance(token, WordToken): 

+

54 if token <= "constant": 

+

55 parserState.NewToken = ConstantKeyword(fromExistingToken=token) 

+

56 parserState.PushState = GenericListInterfaceConstantBlock.stateConstantKeyword 

+

57 parserState.TokenMarker = parserState.NewToken 

+

58 return 

+

59 elif token <= "type": 

+

60 parserState.NewToken = TypeKeyword(fromExistingToken=token) 

+

61 parserState.PushState = GenericListInterfaceTypeBlock.stateTypeKeyword 

+

62 parserState.TokenMarker = parserState.NewToken 

+

63 return 

+

64 elif token <= "procedure": 

+

65 raise NotImplementedError("Generic procedures are not supported.") 

+

66 elif token <= "function": 

+

67 raise NotImplementedError("Generic functions are not supported.") 

+

68 elif token <= "impure": 

+

69 raise NotImplementedError("Generic impure functions are not supported.") 

+

70 elif token <= "pure": 

+

71 raise NotImplementedError("Generic pure functions are not supported.") 

+

72 else: 

+

73 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

74 parserState.PushState = GenericListInterfaceConstantBlock.stateObjectName 

+

75 parserState.TokenMarker = parserState.NewToken 

+

76 return 

+

77 elif isinstance(token, ExtendedIdentifier): 

+

78 parserState.NextState = GenericListInterfaceConstantBlock.stateObjectName 

+

79 return 

+

80 elif isinstance(token, SpaceToken): 

+

81 parserState.NextState = OpenBlock.stateOpeningParenthesis 

+

82 return 

+

83 elif isinstance(token, LinebreakToken): 

+

84 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

85 parserState.TokenMarker = token 

+

86 parserState.NextState = OpenBlock.stateOpeningParenthesis 

+

87 return 

+

88 elif isinstance(token, CommentToken): 

+

89 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

90 _ = CommentBlock(parserState.NewBlock, token) 

+

91 parserState.TokenMarker = None 

+

92 # parserState.NextState = cls.stateWhitespace1 

+

93 return 

+

94 

+

95 raise BlockParserException("Expected generic name (identifier).", token) 

+

96 

+

97 

+

98@export 

+

99class DefaultValueExpressionBlock(ExpressionBlockEndedByCharORClosingRoundBracket): 

+

100 EXIT_CHAR = ";" 

+

101 EXIT_TOKEN = DelimiterToken 

+

102 EXIT_BLOCK = DelimiterBlock 

+

103 

+

104 

+

105@export 

+

106class GenericListInterfaceConstantBlock(InterfaceConstantBlock): 

+

107 DELIMITER_BLOCK = DelimiterBlock 

+

108 EXPRESSION = DefaultValueExpressionBlock 

+

109 

+

110 

+

111@export 

+

112class GenericListInterfaceTypeBlock(InterfaceTypeBlock): 

+

113 DELIMITER_BLOCK = DelimiterBlock 

+

114 

+

115 

+

116@export 

+

117class OpenBlock(Block): 

+

118 @classmethod 

+

119 def stateGenericKeyword(cls, parserState: TokenToBlockParser): 

+

120 token = parserState.Token 

+

121 if isinstance(token, CharacterToken)and (token == "("): 121 ↛ 122line 121 didn't jump to line 122, because the condition on line 121 was never true

+

122 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

123 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

124 parserState.NextState = CloseBlock.stateClosingParenthesis 

+

125 parserState.PushState = cls.stateOpeningParenthesis 

+

126 return 

+

127 elif isinstance(token, SpaceToken): 127 ↛ 130line 127 didn't jump to line 130, because the condition on line 127 was never false

+

128 parserState.NextState = cls.stateWhitespace1 

+

129 return 

+

130 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

131 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

132 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

133 _ = block(parserState.NewBlock, token) 

+

134 parserState.TokenMarker = None 

+

135 parserState.NextState = cls.stateWhitespace1 

+

136 return 

+

137 

+

138 raise BlockParserException("Expected '(' or whitespace after keyword GENERIC.", token) 

+

139 

+

140 @classmethod 

+

141 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

142 token = parserState.Token 

+

143 if isinstance(token, CharacterToken)and (token == "("): 143 ↛ 149line 143 didn't jump to line 149, because the condition on line 143 was never false

+

144 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

145 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

146 parserState.NextState = CloseBlock.stateClosingParenthesis 

+

147 parserState.PushState = cls.stateOpeningParenthesis 

+

148 return 

+

149 elif isinstance(token, LinebreakToken): 

+

150 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

151 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

152 _ = LinebreakBlock(parserState.NewBlock, token) 

+

153 else: 

+

154 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

155 parserState.TokenMarker = None 

+

156 return 

+

157 elif isinstance(token, CommentToken): 

+

158 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

159 _ = CommentBlock(parserState.NewBlock, token) 

+

160 parserState.TokenMarker = None 

+

161 return 

+

162 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

163 return 

+

164 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

165 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

166 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

167 parserState.TokenMarker = None 

+

168 return 

+

169 

+

170 raise BlockParserException("Expected '(' after keyword GENERIC.", token) 

+

171 

+

172 @classmethod 

+

173 def stateOpeningParenthesis(cls, parserState: TokenToBlockParser): 

+

174 token = parserState.Token 

+

175 if isinstance(token, CharacterToken) and (token == ")"): 175 ↛ 178line 175 didn't jump to line 178, because the condition on line 175 was never true

+

176 # if parserState.TokenMarker != token: 

+

177 # parserState.NewBlock = IndentationBlock(parserState.LastBlock, parserState.TokenMarker, token.PreviousToken) 

+

178 parserState.Pop(1, token) 

+

179 return 

+

180 elif isinstance(token, WordToken): 

+

181 if token <= "constant": 181 ↛ 182line 181 didn't jump to line 182, because the condition on line 181 was never true

+

182 parserState.NewToken = ConstantKeyword(fromExistingToken=token) 

+

183 parserState.NextState = DelimiterBlock.stateItemDelimiter 

+

184 parserState.PushState = GenericListInterfaceConstantBlock.stateConstantKeyword 

+

185 parserState.TokenMarker = parserState.NewToken 

+

186 return 

+

187 elif token <= "type": 187 ↛ 188line 187 didn't jump to line 188, because the condition on line 187 was never true

+

188 parserState.NewToken = TypeKeyword(fromExistingToken=token) 

+

189 parserState.NextState = DelimiterBlock.stateItemDelimiter 

+

190 parserState.PushState = GenericListInterfaceTypeBlock.stateTypeKeyword 

+

191 parserState.TokenMarker = parserState.NewToken 

+

192 return 

+

193 elif token <= "procedure": 

+

194 raise NotImplementedError("Generic procedures are not supported.") 

+

195 elif token <= "function": 

+

196 raise NotImplementedError("Generic functions are not supported.") 

+

197 elif token <= "impure": 

+

198 raise NotImplementedError("Generic impure functions are not supported.") 

+

199 elif token <= "pure": 

+

200 raise NotImplementedError("Generic pure functions are not supported.") 

+

201 else: 

+

202 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

203 parserState.NextState = DelimiterBlock.stateItemDelimiter 

+

204 parserState.PushState = GenericListInterfaceConstantBlock.stateObjectName 

+

205 parserState.TokenMarker = parserState.NewToken 

+

206 return 

+

207 elif isinstance(token, ExtendedIdentifier): 207 ↛ 208line 207 didn't jump to line 208, because the condition on line 207 was never true

+

208 parserState.NextState = GenericListInterfaceConstantBlock.stateObjectName 

+

209 return 

+

210 elif isinstance(token, SpaceToken): 

+

211 blockType = IndentationBlock if isinstance(token, IndentationToken) else WhitespaceBlock 

+

212 parserState.NewBlock = blockType(parserState.LastBlock, token) 

+

213 return 

+

214 elif isinstance(token, LinebreakToken): 214 ↛ 219line 214 didn't jump to line 219, because the condition on line 214 was never false

+

215 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

216 parserState.TokenMarker = token 

+

217 # parserState.NextState = cls.stateWhitespace1 

+

218 return 

+

219 elif isinstance(token, CommentToken): 

+

220 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

221 _ = CommentBlock(parserState.NewBlock, token) 

+

222 parserState.TokenMarker = None 

+

223 # parserState.NextState = cls.stateWhitespace1 

+

224 return 

+

225 

+

226 raise BlockParserException("Expected interface constant name (identifier) or keyword: CONSTANT, TYPE, PROCEDURE, FUNCTION, PURE, IMPURE.", token) 

+
+ + + diff --git a/coverage/d_e250293a46335217_GenericMapList_py.html b/coverage/d_e250293a46335217_GenericMapList_py.html new file mode 100644 index 000000000..8c6db001d --- /dev/null +++ b/coverage/d_e250293a46335217_GenericMapList_py.html @@ -0,0 +1,393 @@ + + + + + Coverage for pyVHDLParser/Blocks/List/GenericMapList.py: 0% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/List/GenericMapList.py: + 0% +

+ +

+ 237 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Token import CharacterToken, SpaceToken, WordToken, LinebreakToken, IndentationToken 

+

33from pyVHDLParser.Token.Keywords import BoundaryToken, IdentifierToken, EndToken, DelimiterToken, OpeningRoundBracketToken, ClosingRoundBracketToken 

+

34from pyVHDLParser.Blocks import BlockParserException, Block, TokenToBlockParser, SkipableBlock 

+

35from pyVHDLParser.Blocks.Common import LinebreakBlock, IndentationBlock, WhitespaceBlock 

+

36from pyVHDLParser.Blocks.Comment import SingleLineCommentBlock, MultiLineCommentBlock 

+

37 

+

38 

+

39@export 

+

40class OpenBlock(Block): 

+

41 @classmethod 

+

42 def stateGenericKeyword(cls, parserState: TokenToBlockParser): 

+

43 token = parserState.Token 

+

44 errorMessage = "Expected whitespace or '(' after keyword GENERIC." 

+

45 if isinstance(token, CharacterToken): 

+

46 if token == "(": 

+

47 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

48 parserState.NewBlock = OpenBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

49 parserState.NextState = CloseBlock.stateClosingParenthesis 

+

50 parserState.PushState = OpenBlock.stateOpeningParenthesis 

+

51 parserState.Counter = 1 

+

52 return 

+

53 elif token == "\n": 

+

54 parserState.NewBlock = OpenBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

55 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

56 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

57 parserState.TokenMarker = None 

+

58 parserState.NextState = cls.stateWhitespace1 

+

59 parserState.PushState = LinebreakBlock.stateLinebreak 

+

60 return 

+

61 elif token == "-": 

+

62 parserState.NewBlock = OpenBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

63 parserState.TokenMarker = None 

+

64 parserState.NextState = cls.stateWhitespace1 

+

65 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

66 parserState.TokenMarker = token 

+

67 return 

+

68 elif token == "/": 

+

69 parserState.NewBlock = OpenBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

70 parserState.TokenMarker = None 

+

71 parserState.NextState = cls.stateWhitespace1 

+

72 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

73 parserState.TokenMarker = token 

+

74 return 

+

75 elif isinstance(token, SpaceToken): 

+

76 parserState.NextState = cls.stateWhitespace1 

+

77 return 

+

78 

+

79 raise BlockParserException(errorMessage, token) 

+

80 

+

81 @classmethod 

+

82 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

83 token = parserState.Token 

+

84 errorMessage = "Expected '(' after keyword GENERIC." 

+

85 if isinstance(token, CharacterToken): 

+

86 if token == "(": 

+

87 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

88 parserState.NewBlock = OpenBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

89 parserState.NextState = CloseBlock.stateClosingParenthesis 

+

90 parserState.PushState = OpenBlock.stateOpeningParenthesis 

+

91 parserState.Counter = 1 

+

92 return 

+

93 elif token == "\n": 

+

94 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

95 if not isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

96 parserState.NewBlock = OpenBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) 

+

97 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

98 else: 

+

99 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

100 parserState.TokenMarker = None 

+

101 parserState.NextState = cls.stateWhitespace1 

+

102 parserState.PushState = LinebreakBlock.stateLinebreak 

+

103 return 

+

104 elif token == "-": 

+

105 parserState.NewBlock = OpenBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

106 parserState.TokenMarker = None 

+

107 parserState.NextState = cls.stateWhitespace1 

+

108 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

109 parserState.TokenMarker = token 

+

110 return 

+

111 elif token == "/": 

+

112 parserState.NewBlock = OpenBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

113 parserState.TokenMarker = None 

+

114 parserState.NextState = cls.stateWhitespace1 

+

115 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

116 parserState.TokenMarker = token 

+

117 return 

+

118 elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

119 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

120 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

121 parserState.TokenMarker = None 

+

122 return 

+

123 

+

124 raise BlockParserException(errorMessage, token) 

+

125 

+

126 @classmethod 

+

127 def stateOpeningParenthesis(cls, parserState: TokenToBlockParser): 

+

128 token = parserState.Token 

+

129 errorMessage = "Expected generic name (identifier)." 

+

130 if isinstance(token, CharacterToken): 

+

131 if token == ")": 

+

132 # if parserState.TokenMarker != token: 

+

133 # parserState.NewBlock = IndentationBlock(parserState.LastBlock, parserState.TokenMarker, token.PreviousToken) 

+

134 parserState.Pop() 

+

135 parserState.TokenMarker = token 

+

136 return 

+

137 elif token == "\n": 

+

138 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

139 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

140 parserState.TokenMarker = None 

+

141 parserState.PushState = LinebreakBlock.stateLinebreak 

+

142 return 

+

143 elif token == "-": 

+

144 parserState.TokenMarker = None 

+

145 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

146 parserState.TokenMarker = token 

+

147 return 

+

148 elif token == "/": 

+

149 parserState.TokenMarker = None 

+

150 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

151 parserState.TokenMarker = token 

+

152 return 

+

153 elif isinstance(token, SpaceToken): 

+

154 parserState.NewToken = IndentationToken(fromExistingToken=token) 

+

155 parserState.NewBlock = IndentationBlock(parserState.LastBlock, parserState.NewToken) 

+

156 return 

+

157 elif isinstance(token, WordToken): 

+

158 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

159 parserState.TokenMarker = parserState.NewToken 

+

160 parserState.NextState = ItemBlock.stateItemRemainder 

+

161 

+

162 # if parserState.TokenMarker != token: 

+

163 # parserState.NewBlock = IndentationBlock(parserState.LastBlock, parserState.TokenMarker, token) 

+

164 return 

+

165 

+

166 raise BlockParserException(errorMessage, token) 

+

167 

+

168 

+

169@export 

+

170class ItemBlock(Block): 

+

171 @classmethod 

+

172 def stateItemRemainder(cls, parserState: TokenToBlockParser): 

+

173 token = parserState.Token 

+

174 if isinstance(token, CharacterToken): 

+

175 if token == "(": 

+

176 parserState.NewToken = OpeningRoundBracketToken(fromExistingToken=token) 

+

177 parserState.Counter += 1 

+

178 elif token == ")": 

+

179 parserState.Counter -= 1 

+

180 if parserState.Counter == 0: 

+

181 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

182 parserState.NewBlock = ItemBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

183 parserState.Pop() 

+

184 parserState.TokenMarker = parserState.NewToken 

+

185 else: 

+

186 parserState.NewToken = ClosingRoundBracketToken(fromExistingToken=token) 

+

187 elif token == ";": 

+

188 if parserState.Counter == 1: 

+

189 parserState.NewToken = DelimiterToken(fromExistingToken=token) 

+

190 parserState.NewBlock = ItemBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

191 _ = DelimiterBlock(parserState.NewBlock, parserState.NewToken) 

+

192 parserState.NextState = DelimiterBlock.stateItemDelimiter 

+

193 else: 

+

194 raise BlockParserException("Mismatch in opening and closing parenthesis: open={0}".format(parserState.Counter), token) 

+

195 

+

196 

+

197@export 

+

198class DelimiterBlock(SkipableBlock): 

+

199 @classmethod 

+

200 def stateItemDelimiter(cls, parserState: TokenToBlockParser): 

+

201 token = parserState.Token 

+

202 errorMessage = "Expected generic name (identifier)." 

+

203 

+

204 if isinstance(token, CharacterToken) and (token == "\n"): 

+

205 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

206 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

207 parserState.TokenMarker = None 

+

208 parserState.NextState = OpenBlock.stateOpeningParenthesis 

+

209 parserState.PushState = LinebreakBlock.stateLinebreak 

+

210 return 

+

211 elif isinstance(token, SpaceToken): 

+

212 parserState.NextState = OpenBlock.stateOpeningParenthesis 

+

213 return 

+

214 elif isinstance(token, WordToken): 

+

215 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

216 parserState.TokenMarker = parserState.NewToken 

+

217 parserState.NextState = ItemBlock.stateItemRemainder 

+

218 return 

+

219 

+

220 raise BlockParserException(errorMessage, token) 

+

221 

+

222 

+

223@export 

+

224class CloseBlock(Block): 

+

225 @classmethod 

+

226 def stateClosingParenthesis(cls, parserState: TokenToBlockParser): 

+

227 token = parserState.Token 

+

228 errorMessage = "Expected ';' or whitespace." 

+

229 if isinstance(token, CharacterToken): 

+

230 if token == ";": 

+

231 parserState.NewToken = EndToken(fromExistingToken=token) 

+

232 parserState.NewBlock = CloseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

233 parserState.Pop() 

+

234 return 

+

235 elif token == "\n": 

+

236 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

237 parserState.PushState = LinebreakBlock.stateLinebreak 

+

238 parserState.TokenMarker = parserState.NewToken 

+

239 return 

+

240 elif token == "-": 

+

241 parserState.NewBlock = CloseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

242 parserState.TokenMarker = None 

+

243 parserState.NextState = cls.stateWhitespace1 

+

244 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

245 parserState.TokenMarker = token 

+

246 return 

+

247 elif token == "/": 

+

248 parserState.NewBlock = CloseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

249 parserState.TokenMarker = None 

+

250 parserState.NextState = cls.stateWhitespace1 

+

251 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

252 parserState.TokenMarker = token 

+

253 return 

+

254 elif isinstance(token, SpaceToken): 

+

255 parserState.NextState = cls.stateWhitespace1 

+

256 return 

+

257 

+

258 raise BlockParserException(errorMessage, token) 

+

259 

+

260 @classmethod 

+

261 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

262 token = parserState.Token 

+

263 errorMessage = "Expected ';'." 

+

264 if isinstance(token, CharacterToken): 

+

265 if token == ";": 

+

266 parserState.NewToken = EndToken(fromExistingToken=token) 

+

267 parserState.NewBlock = CloseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

268 parserState.Pop() 

+

269 return 

+

270 elif token == "\n": 

+

271 # TODO: review this linebreak case 

+

272 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

273 parserState.PushState = LinebreakBlock.stateLinebreak 

+

274 parserState.TokenMarker = parserState.NewToken 

+

275 return 

+

276 elif token == "-": 

+

277 parserState.NewBlock = CloseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

278 parserState.TokenMarker = None 

+

279 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

280 parserState.TokenMarker = token 

+

281 return 

+

282 elif token == "/": 

+

283 parserState.NewBlock = CloseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

284 parserState.TokenMarker = None 

+

285 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

286 parserState.TokenMarker = token 

+

287 return 

+

288 elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

289 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

290 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

291 parserState.TokenMarker = None 

+

292 return 

+

293 

+

294 raise BlockParserException(errorMessage, token) 

+
+ + + diff --git a/coverage/d_e250293a46335217_ParameterList_py.html b/coverage/d_e250293a46335217_ParameterList_py.html new file mode 100644 index 000000000..a2e7ca6a7 --- /dev/null +++ b/coverage/d_e250293a46335217_ParameterList_py.html @@ -0,0 +1,355 @@ + + + + + Coverage for pyVHDLParser/Blocks/List/ParameterList.py: 22% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/List/ParameterList.py: + 22% +

+ +

+ 194 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Token import CharacterToken, WordToken, SpaceToken, LinebreakToken, IndentationToken, CommentToken, MultiLineCommentToken, SingleLineCommentToken, ExtendedIdentifier 

+

33from pyVHDLParser.Token.Keywords import BoundaryToken, DelimiterToken, ClosingRoundBracketToken, IdentifierToken 

+

34from pyVHDLParser.Token.Keywords import ConstantKeyword, SignalKeyword, VariableKeyword, TypeKeyword 

+

35from pyVHDLParser.Blocks import BlockParserException, Block, CommentBlock, TokenToBlockParser, SkipableBlock 

+

36from pyVHDLParser.Blocks.Common import LinebreakBlock, IndentationBlock, WhitespaceBlock 

+

37from pyVHDLParser.Blocks.Generic1 import CloseBlock as CloseBlockBase 

+

38from pyVHDLParser.Blocks.InterfaceObject import InterfaceSignalBlock, InterfaceConstantBlock, InterfaceVariableBlock 

+

39 

+

40 

+

41@export 

+

42class OpenBlock(Block): 

+

43 @classmethod 

+

44 def stateParameterKeyword(cls, parserState: TokenToBlockParser): 

+

45 token = parserState.Token 

+

46 if isinstance(token, CharacterToken) and (token == "("): 

+

47 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

48 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

49 parserState.NextState = CloseBlock.stateClosingParenthesis 

+

50 parserState.PushState = cls.stateOpeningParenthesis 

+

51 parserState.Counter = 1 

+

52 return 

+

53 elif isinstance(token, SpaceToken): 

+

54 parserState.NextState = cls.stateWhitespace1 

+

55 return 

+

56 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

57 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

58 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

59 _ = block(parserState.NewBlock, token) 

+

60 parserState.TokenMarker = None 

+

61 parserState.NextState = cls.stateWhitespace1 

+

62 return 

+

63 

+

64 raise BlockParserException("Expected '(' or whitespace after keyword PARAMETER.", token) 

+

65 

+

66 @classmethod 

+

67 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

68 token = parserState.Token 

+

69 if isinstance(token, CharacterToken) and (token == "("): 

+

70 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

71 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

72 parserState.PushState = cls.stateOpeningParenthesis 

+

73 parserState.Counter = 1 

+

74 return 

+

75 elif isinstance(token, LinebreakToken): 

+

76 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

77 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

78 _ = LinebreakBlock(parserState.NewBlock, token) 

+

79 else: 

+

80 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

81 parserState.TokenMarker = None 

+

82 return 

+

83 elif isinstance(token, CommentToken): 

+

84 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

85 _ = CommentBlock(parserState.NewBlock, token) 

+

86 parserState.TokenMarker = None 

+

87 return 

+

88 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

89 return 

+

90 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

91 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

92 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

93 parserState.TokenMarker = None 

+

94 return 

+

95 

+

96 raise BlockParserException("Expected '(' after keyword PARAMETER.", token) 

+

97 

+

98 @classmethod 

+

99 def stateOpeningParenthesis(cls, parserState: TokenToBlockParser): 

+

100 token = parserState.Token 

+

101 if isinstance(token, WordToken): 

+

102 if token <= "constant": 

+

103 parserState.NewToken = ConstantKeyword(fromExistingToken=token) 

+

104 parserState.NextState = DelimiterBlock.stateItemDelimiter 

+

105 parserState.PushState = ParameterListInterfaceConstantBlock.stateConstantKeyword 

+

106 parserState.TokenMarker = parserState.NewToken 

+

107 return 

+

108 elif token <= "variable": 

+

109 parserState.NewToken = VariableKeyword(fromExistingToken=token) 

+

110 parserState.NextState = DelimiterBlock.stateItemDelimiter 

+

111 parserState.PushState = ParameterListInterfaceVariableBlock.stateVariableKeyword 

+

112 parserState.TokenMarker = parserState.NewToken 

+

113 return 

+

114 elif token <= "signal": 

+

115 parserState.NewToken = SignalKeyword(fromExistingToken=token) 

+

116 parserState.NextState = DelimiterBlock.stateItemDelimiter 

+

117 parserState.PushState = ParameterListInterfaceSignalBlock.stateSignalKeyword 

+

118 parserState.TokenMarker = parserState.NewToken 

+

119 return 

+

120 else: 

+

121 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

122 parserState.PushState = ParameterListInterfaceConstantBlock.stateObjectName 

+

123 parserState.TokenMarker = parserState.NewToken 

+

124 return 

+

125 elif isinstance(token, ExtendedIdentifier): 

+

126 parserState.NextState = ParameterListInterfaceConstantBlock.stateObjectName 

+

127 return 

+

128 elif isinstance(token, SpaceToken): 

+

129 blockType = IndentationBlock if isinstance(token, IndentationToken) else WhitespaceBlock 

+

130 parserState.NewBlock = blockType(parserState.LastBlock, token) 

+

131 return 

+

132 elif isinstance(token, LinebreakToken): 

+

133 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

134 parserState.TokenMarker = token 

+

135 return 

+

136 elif isinstance(token, CommentToken): 

+

137 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

138 _ = CommentBlock(parserState.NewBlock, token) 

+

139 parserState.TokenMarker = None 

+

140 return 

+

141 

+

142 raise BlockParserException("Expected interface element name (identifier).", token) 

+

143 

+

144 

+

145@export 

+

146class ItemBlock(Block): 

+

147 @classmethod 

+

148 def stateItemRemainder(cls, parserState: TokenToBlockParser): 

+

149 token = parserState.Token 

+

150 if isinstance(token, CharacterToken): 

+

151 if token == "(": 

+

152 parserState.Counter += 1 

+

153 elif token == ")": 

+

154 parserState.Counter -= 1 

+

155 if parserState.Counter == 0: 

+

156 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

157 parserState.NewBlock = ItemBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

158 _ = CloseBlock(parserState.NewBlock, parserState.NewToken) 

+

159 parserState.Pop() 

+

160 parserState.TokenMarker = None 

+

161 else: 

+

162 parserState.NewToken = ClosingRoundBracketToken(fromExistingToken=token) 

+

163 # parserState.NewBlock = CloseBlock(parserState.LastBlock, parserState.NewToken) 

+

164 # parserState.Pop() 

+

165 elif token == ";": 

+

166 if parserState.Counter == 1: 

+

167 parserState.NewToken = DelimiterToken(fromExistingToken=token) 

+

168 parserState.NewBlock = ItemBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

169 _ = DelimiterBlock(parserState.NewBlock, parserState.NewToken) 

+

170 parserState.NextState = DelimiterBlock.stateItemDelimiter 

+

171 else: 

+

172 raise BlockParserException("Mismatch in opening and closing parenthesis: open={0}".format(parserState.Counter), token) 

+

173 

+

174 

+

175@export 

+

176class DelimiterBlock(SkipableBlock): 

+

177 def __init__(self, previousBlock, startToken): 

+

178 super().__init__(previousBlock, startToken, startToken) 

+

179 

+

180 @classmethod 

+

181 def stateItemDelimiter(cls, parserState: TokenToBlockParser): 

+

182 token = parserState.Token 

+

183 if isinstance(token, WordToken): 

+

184 tokenValue = token.Value.lower() 

+

185 if tokenValue == "constant": 

+

186 parserState.NewToken = ConstantKeyword(fromExistingToken=token) 

+

187 parserState.PushState = ParameterListInterfaceConstantBlock.stateConstantKeyword 

+

188 parserState.TokenMarker = parserState.NewToken 

+

189 return 

+

190 elif tokenValue == "variable": 

+

191 parserState.NewToken = VariableKeyword(fromExistingToken=token) 

+

192 parserState.PushState = ParameterListInterfaceVariableBlock.stateVariableKeyword 

+

193 parserState.TokenMarker = parserState.NewToken 

+

194 return 

+

195 elif tokenValue == "signal": 

+

196 parserState.NewToken = SignalKeyword(fromExistingToken=token) 

+

197 parserState.PushState = ParameterListInterfaceSignalBlock.stateSignalKeyword 

+

198 parserState.TokenMarker = parserState.NewToken 

+

199 return 

+

200 elif tokenValue == "type": 

+

201 parserState.NewToken = TypeKeyword(fromExistingToken=token) 

+

202 parserState.PushState = ParameterListInterfaceTypeBlock.stateTypeKeyword 

+

203 parserState.TokenMarker = parserState.NewToken 

+

204 return 

+

205 elif tokenValue == "procedure": 

+

206 raise NotImplementedError("Generic procedures are not supported.") 

+

207 elif tokenValue == "function": 

+

208 raise NotImplementedError("Generic functions are not supported.") 

+

209 elif tokenValue == "impure": 

+

210 raise NotImplementedError("Generic impure functions are not supported.") 

+

211 elif tokenValue == "pure": 

+

212 raise NotImplementedError("Generic pure functions are not supported.") 

+

213 else: 

+

214 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

215 parserState.PushState = ParameterListInterfaceConstantBlock.stateObjectName 

+

216 parserState.TokenMarker = parserState.NewToken 

+

217 return 

+

218 elif isinstance(token, ExtendedIdentifier): 

+

219 parserState.NextState = ParameterListInterfaceConstantBlock.stateObjectName 

+

220 return 

+

221 elif isinstance(token, SpaceToken): 

+

222 parserState.TokenMarker = token 

+

223 parserState.NextState = ItemBlock.stateItemRemainder 

+

224 return 

+

225 elif isinstance(token, LinebreakToken): 

+

226 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

227 parserState.TokenMarker = token 

+

228 parserState.NextState = ItemBlock.stateItemRemainder 

+

229 return 

+

230 elif isinstance(token, CommentToken): 

+

231 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

232 _ = CommentBlock(parserState.NewBlock, token) 

+

233 parserState.TokenMarker = None 

+

234 return 

+

235 

+

236 raise BlockParserException("Expected parameter name (identifier).", token) 

+

237 

+

238 

+

239@export 

+

240class CloseBlock(CloseBlockBase): 

+

241 pass 

+

242 

+

243 

+

244@export 

+

245class ParameterListInterfaceConstantBlock(InterfaceConstantBlock): 

+

246 DELIMITER_BLOCK = DelimiterBlock 

+

247 

+

248 

+

249@export 

+

250class ParameterListInterfaceVariableBlock(InterfaceVariableBlock): 

+

251 DELIMITER_BLOCK = DelimiterBlock 

+

252 

+

253 

+

254@export 

+

255class ParameterListInterfaceSignalBlock(InterfaceSignalBlock): 

+

256 DELIMITER_BLOCK = DelimiterBlock 

+
+ + + diff --git a/coverage/d_e250293a46335217_PortList_py.html b/coverage/d_e250293a46335217_PortList_py.html new file mode 100644 index 000000000..835cb043d --- /dev/null +++ b/coverage/d_e250293a46335217_PortList_py.html @@ -0,0 +1,293 @@ + + + + + Coverage for pyVHDLParser/Blocks/List/PortList.py: 39% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/List/PortList.py: + 39% +

+ +

+ 140 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Token import CharacterToken, WordToken, SpaceToken, LinebreakToken, IndentationToken, CommentToken, MultiLineCommentToken, SingleLineCommentToken, ExtendedIdentifier 

+

33from pyVHDLParser.Token.Keywords import BoundaryToken, SignalKeyword, DelimiterToken 

+

34from pyVHDLParser.Token.Keywords import IdentifierToken 

+

35from pyVHDLParser.Blocks import BlockParserException, Block, CommentBlock, TokenToBlockParser, SkipableBlock 

+

36from pyVHDLParser.Blocks.Common import LinebreakBlock, IndentationBlock, WhitespaceBlock 

+

37from pyVHDLParser.Blocks.Generic1 import CloseBlock as CloseBlockBase 

+

38from pyVHDLParser.Blocks.Expression import ExpressionBlockEndedByCharORClosingRoundBracket 

+

39from pyVHDLParser.Blocks.InterfaceObject import InterfaceSignalBlock 

+

40 

+

41 

+

42@export 

+

43class CloseBlock(CloseBlockBase): 

+

44 pass 

+

45 

+

46 

+

47@export 

+

48class DelimiterBlock(SkipableBlock): 

+

49 @classmethod 

+

50 def stateItemDelimiter(cls, parserState: TokenToBlockParser): 

+

51 token = parserState.Token 

+

52 if isinstance(token, WordToken): 

+

53 if token <= "signal": 

+

54 parserState.NewToken = SignalKeyword(fromExistingToken=token) 

+

55 parserState.PushState = PortListInterfaceSignalBlock.stateSignalKeyword 

+

56 parserState.TokenMarker = parserState.NewToken 

+

57 return 

+

58 else: 

+

59 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

60 parserState.PushState = PortListInterfaceSignalBlock.stateObjectName 

+

61 parserState.TokenMarker = parserState.NewToken 

+

62 return 

+

63 elif isinstance(token, ExtendedIdentifier): 

+

64 parserState.NextState = PortListInterfaceSignalBlock.stateObjectName 

+

65 return 

+

66 elif isinstance(token, SpaceToken): 

+

67 parserState.NextState = OpenBlock.stateOpeningParenthesis 

+

68 return 

+

69 elif isinstance(token, LinebreakToken): 

+

70 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

71 parserState.TokenMarker = token 

+

72 parserState.NextState = OpenBlock.stateOpeningParenthesis 

+

73 return 

+

74 elif isinstance(token, CommentToken): 

+

75 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

76 _ = CommentBlock(parserState.NewBlock, token) 

+

77 parserState.TokenMarker = None 

+

78 # parserState.NextState = cls.stateWhitespace1 

+

79 return 

+

80 

+

81 raise BlockParserException("Expected port name (identifier).", token) 

+

82 

+

83 

+

84@export 

+

85class DefaultValueExpressionBlock(ExpressionBlockEndedByCharORClosingRoundBracket): 

+

86 EXIT_CHAR = ";" 

+

87 EXIT_TOKEN = DelimiterToken 

+

88 EXIT_BLOCK = DelimiterBlock 

+

89 

+

90 

+

91@export 

+

92class PortListInterfaceSignalBlock(InterfaceSignalBlock): 

+

93 DELIMITER_BLOCK = DelimiterBlock 

+

94 EXPRESSION = DefaultValueExpressionBlock 

+

95 

+

96 

+

97@export 

+

98class OpenBlock(Block): 

+

99 @classmethod 

+

100 def statePortKeyword(cls, parserState: TokenToBlockParser): 

+

101 token = parserState.Token 

+

102 if isinstance(token, CharacterToken)and (token == "("): 102 ↛ 103line 102 didn't jump to line 103, because the condition on line 102 was never true

+

103 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

104 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

105 parserState.NextState = CloseBlock.stateClosingParenthesis 

+

106 parserState.PushState = cls.stateOpeningParenthesis 

+

107 return 

+

108 elif isinstance(token, SpaceToken): 108 ↛ 111line 108 didn't jump to line 111, because the condition on line 108 was never false

+

109 parserState.NextState = cls.stateWhitespace1 

+

110 return 

+

111 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

112 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

113 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

114 _ = block(parserState.NewBlock, token) 

+

115 parserState.TokenMarker = None 

+

116 parserState.NextState = cls.stateWhitespace1 

+

117 return 

+

118 

+

119 raise BlockParserException("Expected '(' or whitespace after keyword PORT.", token) 

+

120 

+

121 @classmethod 

+

122 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

123 token = parserState.Token 

+

124 if isinstance(token, CharacterToken)and (token == "("): 124 ↛ 130line 124 didn't jump to line 130, because the condition on line 124 was never false

+

125 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

126 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

127 parserState.NextState = CloseBlock.stateClosingParenthesis 

+

128 parserState.PushState = cls.stateOpeningParenthesis 

+

129 return 

+

130 elif isinstance(token, LinebreakToken): 

+

131 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

132 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

133 _ = LinebreakBlock(parserState.NewBlock, token) 

+

134 else: 

+

135 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

136 parserState.TokenMarker = None 

+

137 return 

+

138 elif isinstance(token, CommentToken): 

+

139 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

140 _ = CommentBlock(parserState.NewBlock, token) 

+

141 parserState.TokenMarker = None 

+

142 return 

+

143 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

144 return 

+

145 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

146 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

147 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

148 parserState.TokenMarker = None 

+

149 return 

+

150 

+

151 raise BlockParserException("Expected '(' after keyword PORT.", token) 

+

152 

+

153 @classmethod 

+

154 def stateOpeningParenthesis(cls, parserState: TokenToBlockParser): 

+

155 token = parserState.Token 

+

156 if isinstance(token, CharacterToken) and (token == ")"): 156 ↛ 159line 156 didn't jump to line 159, because the condition on line 156 was never true

+

157 # if parserState.TokenMarker != token: 

+

158 # parserState.NewBlock = IndentationBlock(parserState.LastBlock, parserState.TokenMarker, token.PreviousToken) 

+

159 parserState.Pop() 

+

160 parserState.TokenMarker = token 

+

161 return 

+

162 elif isinstance(token, WordToken): 162 ↛ 175line 162 didn't jump to line 175, because the condition on line 162 was never false

+

163 if token <= "signal": 163 ↛ 164line 163 didn't jump to line 164, because the condition on line 163 was never true

+

164 parserState.NewToken = SignalKeyword(fromExistingToken=token) 

+

165 parserState.NextState = DelimiterBlock.stateItemDelimiter 

+

166 parserState.PushState = PortListInterfaceSignalBlock.stateSignalKeyword 

+

167 parserState.TokenMarker = parserState.NewToken 

+

168 return 

+

169 else: 

+

170 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

171 parserState.NextState = DelimiterBlock.stateItemDelimiter 

+

172 parserState.PushState = PortListInterfaceSignalBlock.stateObjectName 

+

173 parserState.TokenMarker = parserState.NewToken 

+

174 return 

+

175 elif isinstance(token, ExtendedIdentifier): 

+

176 parserState.NextState = PortListInterfaceSignalBlock.stateObjectName 

+

177 return 

+

178 elif isinstance(token, SpaceToken): 

+

179 blockType = IndentationBlock if isinstance(token, IndentationToken) else WhitespaceBlock 

+

180 parserState.NewBlock = blockType(parserState.LastBlock, token) 

+

181 return 

+

182 elif isinstance(token, LinebreakToken): 

+

183 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

184 parserState.TokenMarker = token 

+

185 # parserState.NextState = cls.stateWhitespace1 

+

186 return 

+

187 elif isinstance(token, CommentToken): 

+

188 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

189 _ = CommentBlock(parserState.NewBlock, token) 

+

190 parserState.TokenMarker = None 

+

191 # parserState.NextState = cls.stateWhitespace1 

+

192 return 

+

193 

+

194 raise BlockParserException("Expected interface signal name (identifier) or keyword: SIGNAL.", token) 

+
+ + + diff --git a/coverage/d_e250293a46335217_PortMapList_py.html b/coverage/d_e250293a46335217_PortMapList_py.html new file mode 100644 index 000000000..738e27b0d --- /dev/null +++ b/coverage/d_e250293a46335217_PortMapList_py.html @@ -0,0 +1,396 @@ + + + + + Coverage for pyVHDLParser/Blocks/List/PortMapList.py: 0% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/List/PortMapList.py: + 0% +

+ +

+ 238 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Token import CharacterToken, SpaceToken, WordToken, LinebreakToken, IndentationToken 

+

33from pyVHDLParser.Token.Keywords import BoundaryToken, IdentifierToken, EndToken, DelimiterToken, OpeningRoundBracketToken, ClosingRoundBracketToken 

+

34from pyVHDLParser.Blocks import BlockParserException, Block, TokenToBlockParser, SkipableBlock 

+

35from pyVHDLParser.Blocks.Common import LinebreakBlock, IndentationBlock, WhitespaceBlock 

+

36from pyVHDLParser.Blocks.Comment import SingleLineCommentBlock, MultiLineCommentBlock 

+

37 

+

38 

+

39@export 

+

40class OpenBlock(Block): 

+

41 @classmethod 

+

42 def statePortKeyword(cls, parserState: TokenToBlockParser): 

+

43 token = parserState.Token 

+

44 errorMessage = "Expected whitespace or '(' after keyword PORT." 

+

45 if isinstance(token, CharacterToken): 

+

46 if token == "(": 

+

47 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

48 parserState.NewBlock = OpenBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

49 parserState.NextState = CloseBlock.stateClosingParenthesis 

+

50 parserState.PushState = OpenBlock.stateOpeningParenthesis 

+

51 parserState.Counter = 1 

+

52 return 

+

53 elif token == "\n": 

+

54 parserState.NewBlock = OpenBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

55 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

56 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

57 parserState.TokenMarker = None 

+

58 parserState.NextState = cls.stateWhitespace1 

+

59 parserState.PushState = LinebreakBlock.stateLinebreak 

+

60 return 

+

61 elif token == "-": 

+

62 parserState.NewBlock = OpenBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

63 parserState.TokenMarker = None 

+

64 parserState.NextState = cls.stateWhitespace1 

+

65 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

66 parserState.TokenMarker = token 

+

67 return 

+

68 elif token == "/": 

+

69 parserState.NewBlock = OpenBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

70 parserState.TokenMarker = None 

+

71 parserState.NextState = cls.stateWhitespace1 

+

72 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

73 parserState.TokenMarker = token 

+

74 return 

+

75 elif isinstance(token, SpaceToken): 

+

76 parserState.NextState = cls.stateWhitespace1 

+

77 return 

+

78 

+

79 raise BlockParserException(errorMessage, token) 

+

80 

+

81 @classmethod 

+

82 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

83 token = parserState.Token 

+

84 

+

85 errorMessage = "Expected '(' after keyword PORT." 

+

86 if isinstance(token, CharacterToken): 

+

87 if token == "(": 

+

88 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

89 parserState.NewBlock = OpenBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

90 parserState.NextState = CloseBlock.stateClosingParenthesis 

+

91 parserState.PushState = OpenBlock.stateOpeningParenthesis 

+

92 parserState.Counter = 1 

+

93 return 

+

94 elif token == "\n": 

+

95 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

96 if not isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

97 parserState.NewBlock = OpenBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True) 

+

98 _ = LinebreakBlock(parserState.NewBlock, parserState.NewToken) 

+

99 else: 

+

100 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

101 parserState.TokenMarker = None 

+

102 parserState.NextState = cls.stateWhitespace1 

+

103 parserState.PushState = LinebreakBlock.stateLinebreak 

+

104 return 

+

105 elif token == "-": 

+

106 parserState.NewBlock = OpenBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

107 parserState.TokenMarker = None 

+

108 parserState.NextState = cls.stateWhitespace1 

+

109 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

110 parserState.TokenMarker = token 

+

111 return 

+

112 elif token == "/": 

+

113 parserState.NewBlock = OpenBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

114 parserState.TokenMarker = None 

+

115 parserState.NextState = cls.stateWhitespace1 

+

116 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

117 parserState.TokenMarker = token 

+

118 return 

+

119 elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

120 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

121 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

122 parserState.TokenMarker = None 

+

123 return 

+

124 

+

125 raise BlockParserException(errorMessage, token) 

+

126 

+

127 @classmethod 

+

128 def stateOpeningParenthesis(cls, parserState: TokenToBlockParser): 

+

129 token = parserState.Token 

+

130 errorMessage = "Expected port name (identifier)." 

+

131 if isinstance(token, CharacterToken): 

+

132 if token == ")": 

+

133 # if parserState.TokenMarker != token: 

+

134 # parserState.NewBlock = IndentationBlock(parserState.LastBlock, parserState.TokenMarker, token.PreviousToken) 

+

135 parserState.Pop(1, token) 

+

136 return 

+

137 elif token == "\n": 

+

138 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

139 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

140 parserState.TokenMarker = None 

+

141 parserState.PushState = LinebreakBlock.stateLinebreak 

+

142 return 

+

143 elif token == "-": 

+

144 parserState.TokenMarker = None 

+

145 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

146 parserState.TokenMarker = token 

+

147 return 

+

148 elif token == "/": 

+

149 parserState.TokenMarker = None 

+

150 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

151 parserState.TokenMarker = token 

+

152 return 

+

153 elif isinstance(token, SpaceToken): 

+

154 parserState.NewToken = IndentationToken(fromExistingToken=token) 

+

155 parserState.NewBlock = IndentationBlock(parserState.LastBlock, parserState.NewToken) 

+

156 return 

+

157 elif isinstance(token, WordToken): 

+

158 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

159 parserState.TokenMarker = parserState.NewToken 

+

160 parserState.NextState = ItemBlock.stateItemRemainder 

+

161 

+

162 # if parserState.TokenMarker != token: 

+

163 # parserState.NewBlock = IndentationBlock(parserState.LastBlock, parserState.TokenMarker, token) 

+

164 return 

+

165 

+

166 raise BlockParserException(errorMessage, token) 

+

167 

+

168 

+

169@export 

+

170class ItemBlock(Block): 

+

171 @classmethod 

+

172 def stateItemRemainder(cls, parserState: TokenToBlockParser): 

+

173 token = parserState.Token 

+

174 if isinstance(token, CharacterToken): 

+

175 if token == "(": 

+

176 parserState.NewToken = OpeningRoundBracketToken(fromExistingToken=token) 

+

177 parserState.Counter += 1 

+

178 elif token == ")": 

+

179 parserState.Counter -= 1 

+

180 if parserState.Counter == 0: 

+

181 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

182 parserState.NewBlock = ItemBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

183 parserState.Pop() 

+

184 parserState.TokenMarker = parserState.NewToken 

+

185 else: 

+

186 parserState.NewToken = ClosingRoundBracketToken(fromExistingToken=token) 

+

187 elif token == ";": 

+

188 if parserState.Counter == 1: 

+

189 parserState.NewToken = DelimiterToken(fromExistingToken=token) 

+

190 parserState.NewBlock = ItemBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

191 _ = DelimiterBlock(parserState.NewBlock, parserState.NewToken) 

+

192 parserState.NextState = DelimiterBlock.stateItemDelimiter 

+

193 else: 

+

194 raise BlockParserException("Mismatch in opening and closing parenthesis: open={0}".format(parserState.Counter), token) 

+

195 

+

196 

+

197@export 

+

198class DelimiterBlock(SkipableBlock): 

+

199 def __init__(self, previousBlock, startToken): 

+

200 super().__init__(previousBlock, startToken, startToken) 

+

201 

+

202 @classmethod 

+

203 def stateItemDelimiter(cls, parserState: TokenToBlockParser): 

+

204 token = parserState.Token 

+

205 errorMessage = "Expected port name (identifier)." 

+

206 

+

207 if isinstance(token, CharacterToken) and (token == "\n"): 

+

208 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

209 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken) 

+

210 parserState.TokenMarker = None 

+

211 parserState.NextState = OpenBlock.stateOpeningParenthesis 

+

212 parserState.PushState = LinebreakBlock.stateLinebreak 

+

213 return 

+

214 elif isinstance(token, SpaceToken): 

+

215 parserState.NextState = OpenBlock.stateOpeningParenthesis 

+

216 return 

+

217 elif isinstance(token, WordToken): 

+

218 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

219 parserState.TokenMarker = parserState.NewToken 

+

220 parserState.NextState = ItemBlock.stateItemRemainder 

+

221 return 

+

222 

+

223 raise BlockParserException(errorMessage, token) 

+

224 

+

225 

+

226@export 

+

227class CloseBlock(Block): 

+

228 @classmethod 

+

229 def stateClosingParenthesis(cls, parserState: TokenToBlockParser): 

+

230 token = parserState.Token 

+

231 errorMessage = "Expected ';' or whitespace." 

+

232 if isinstance(token, CharacterToken): 

+

233 if token == ";": 

+

234 parserState.NewToken = EndToken(fromExistingToken=token) 

+

235 parserState.NewBlock = CloseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

236 parserState.Pop() 

+

237 return 

+

238 elif token == "\n": 

+

239 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

240 parserState.PushState = LinebreakBlock.stateLinebreak 

+

241 parserState.TokenMarker = parserState.NewToken 

+

242 return 

+

243 elif token == "-": 

+

244 parserState.NewBlock = CloseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

245 parserState.TokenMarker = None 

+

246 parserState.NextState = cls.stateWhitespace1 

+

247 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

248 parserState.TokenMarker = token 

+

249 return 

+

250 elif token == "/": 

+

251 parserState.NewBlock = CloseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

252 parserState.TokenMarker = None 

+

253 parserState.NextState = cls.stateWhitespace1 

+

254 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

255 parserState.TokenMarker = token 

+

256 return 

+

257 elif isinstance(token, SpaceToken): 

+

258 parserState.NextState = cls.stateWhitespace1 

+

259 return 

+

260 

+

261 raise BlockParserException(errorMessage, token) 

+

262 

+

263 @classmethod 

+

264 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

265 token = parserState.Token 

+

266 errorMessage = "Expected ';'." 

+

267 if isinstance(token, CharacterToken): 

+

268 if token == ";": 

+

269 parserState.NewToken = EndToken(fromExistingToken=token) 

+

270 parserState.NewBlock = CloseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) 

+

271 parserState.Pop() 

+

272 return 

+

273 elif token == "\n": 

+

274 # TODO: review this linebreak case 

+

275 parserState.NewToken = LinebreakToken(fromExistingToken=token) 

+

276 parserState.PushState = LinebreakBlock.stateLinebreak 

+

277 parserState.TokenMarker = parserState.NewToken 

+

278 return 

+

279 elif token == "-": 

+

280 parserState.NewBlock = CloseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

281 parserState.TokenMarker = None 

+

282 parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart 

+

283 parserState.TokenMarker = token 

+

284 return 

+

285 elif token == "/": 

+

286 parserState.NewBlock = CloseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

287 parserState.TokenMarker = None 

+

288 parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart 

+

289 parserState.TokenMarker = token 

+

290 return 

+

291 elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock): 

+

292 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

293 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

294 parserState.TokenMarker = None 

+

295 return 

+

296 

+

297 raise BlockParserException(errorMessage, token) 

+
+ + + diff --git a/coverage/d_e250293a46335217_SensitivityList_py.html b/coverage/d_e250293a46335217_SensitivityList_py.html new file mode 100644 index 000000000..1b9ab99a3 --- /dev/null +++ b/coverage/d_e250293a46335217_SensitivityList_py.html @@ -0,0 +1,290 @@ + + + + + Coverage for pyVHDLParser/Blocks/List/SensitivityList.py: 21% + + + + + +
+
+

+ Coverage for pyVHDLParser/Blocks/List/SensitivityList.py: + 21% +

+ +

+ 143 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.Token import CharacterToken, WordToken, SpaceToken, LinebreakToken, IndentationToken, ExtendedIdentifier 

+

33from pyVHDLParser.Token import CommentToken, MultiLineCommentToken, SingleLineCommentToken 

+

34from pyVHDLParser.Token.Keywords import BoundaryToken, DelimiterToken, OpeningRoundBracketToken, ClosingRoundBracketToken 

+

35from pyVHDLParser.Token.Keywords import IdentifierToken, AllKeyword 

+

36from pyVHDLParser.Blocks import BlockParserException, Block, CommentBlock, TokenToBlockParser, SkipableBlock 

+

37from pyVHDLParser.Blocks.Common import LinebreakBlock, IndentationBlock, WhitespaceBlock 

+

38 

+

39 

+

40@export 

+

41class OpenBlock(Block): 

+

42 @classmethod 

+

43 def stateOpeningParenthesis(cls, parserState: TokenToBlockParser): 

+

44 token = parserState.Token 

+

45 if isinstance(token, WordToken): 

+

46 if token <= "all": 

+

47 parserState.NewToken = AllKeyword(fromExistingToken=token) 

+

48 parserState.NewBlock = ItemBlock(parserState.LastBlock, parserState.NewToken, endToken=parserState.NewToken) 

+

49 parserState.TokenMarker = None 

+

50 parserState.NextState = CloseBlock.stateAllKeyword 

+

51 else: 

+

52 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

53 parserState.TokenMarker = parserState.NewToken 

+

54 parserState.NextState = ItemBlock.stateItemRemainder 

+

55 return 

+

56 elif isinstance(token, ExtendedIdentifier): 

+

57 parserState.NextState = ItemBlock.stateItemRemainder 

+

58 return 

+

59 elif isinstance(token, SpaceToken): 

+

60 blockType = IndentationBlock if isinstance(token, IndentationToken) else WhitespaceBlock 

+

61 parserState.NewBlock = blockType(parserState.LastBlock, token) 

+

62 parserState.TokenMarker = None 

+

63 return 

+

64 elif isinstance(token, LinebreakToken): 

+

65 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

66 parserState.TokenMarker = None 

+

67 return 

+

68 elif isinstance(token, CommentToken): 

+

69 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

70 _ = CommentBlock(parserState.NewBlock, token) 

+

71 parserState.TokenMarker = None 

+

72 return 

+

73 

+

74 raise BlockParserException("Expected keyword ALL or signal name (identifier).", token) 

+

75 

+

76 

+

77@export 

+

78class ItemBlock(Block): 

+

79 @classmethod 

+

80 def stateItemRemainder(cls, parserState: TokenToBlockParser): 

+

81 token = parserState.Token 

+

82 if isinstance(token, CharacterToken): 

+

83 if token == "(": 

+

84 parserState.Counter += 1 

+

85 elif token == ")": 

+

86 parserState.NewToken = OpeningRoundBracketToken(fromExistingToken=token) 

+

87 parserState.Counter -= 1 

+

88 if parserState.Counter == 0: 

+

89 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

90 parserState.NewBlock = ItemBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

91 parserState.Pop() 

+

92 parserState.TokenMarker = parserState.NewToken 

+

93 else: 

+

94 parserState.NewToken = ClosingRoundBracketToken(fromExistingToken=token) 

+

95 elif token == ";": 

+

96 if parserState.Counter == 1: 

+

97 parserState.NewToken = DelimiterToken(fromExistingToken=token) 

+

98 parserState.NewBlock = ItemBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken) 

+

99 _ = DelimiterBlock(parserState.NewBlock, parserState.NewToken) 

+

100 parserState.NextState = DelimiterBlock.stateItemDelimiter 

+

101 else: 

+

102 raise BlockParserException("Mismatch in opening and closing parenthesis: open={0}".format(parserState.Counter), token) 

+

103 

+

104 

+

105@export 

+

106class DelimiterBlock(SkipableBlock): 

+

107 def __init__(self, previousBlock, startToken): 

+

108 super().__init__(previousBlock, startToken, startToken) 

+

109 

+

110 @classmethod 

+

111 def stateItemDelimiter(cls, parserState: TokenToBlockParser): 

+

112 token = parserState.Token 

+

113 if isinstance(token, WordToken): 

+

114 parserState.NewToken = IdentifierToken(fromExistingToken=token) 

+

115 parserState.TokenMarker = parserState.NewToken 

+

116 parserState.NextState = ItemBlock.stateItemRemainder 

+

117 return 

+

118 elif isinstance(token, ExtendedIdentifier): 

+

119 parserState.NextState = ItemBlock.stateItemRemainder 

+

120 return 

+

121 elif isinstance(token, SpaceToken): 

+

122 parserState.NextState = OpenBlock.stateOpeningParenthesis 

+

123 return 

+

124 elif isinstance(token, LinebreakToken): 

+

125 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

126 parserState.TokenMarker = token 

+

127 parserState.NextState = OpenBlock.stateOpeningParenthesis 

+

128 return 

+

129 elif isinstance(token, CommentToken): 

+

130 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

131 _ = CommentBlock(parserState.NewBlock, token) 

+

132 parserState.TokenMarker = None 

+

133 return 

+

134 

+

135 raise BlockParserException("Expected signal name (identifier).", token) 

+

136 

+

137 

+

138@export 

+

139class CloseBlock(Block): 

+

140 @classmethod 

+

141 def stateAllKeyword(cls, parserState: TokenToBlockParser): 

+

142 token = parserState.Token 

+

143 if isinstance(token, CharacterToken) and (token == ")"): 

+

144 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

145 parserState.NewBlock = CloseBlock(parserState.LastBlock, parserState.NewToken, endToken=parserState.NewToken) 

+

146 parserState.Pop() 

+

147 return 

+

148 elif isinstance(token, SpaceToken): 

+

149 parserState.NextState = cls.stateWhitespace1 

+

150 return 

+

151 elif isinstance(token, (LinebreakToken, CommentToken)): 

+

152 block = LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock 

+

153 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

154 _ = block(parserState.NewBlock, token) 

+

155 parserState.TokenMarker = None 

+

156 parserState.NextState = cls.stateWhitespace1 

+

157 return 

+

158 

+

159 raise BlockParserException("Expected ')' or whitespace after keyword ALL.", token) 

+

160 

+

161 @classmethod 

+

162 def stateWhitespace1(cls, parserState: TokenToBlockParser): 

+

163 token = parserState.Token 

+

164 errorMessage = "Expected '(' after keyword PROCESS." 

+

165 if isinstance(token, CharacterToken) and (token == ")"): 

+

166 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

167 parserState.NewBlock = cls(parserState.LastBlock, parserState.NewToken, endToken=parserState.NewToken) 

+

168 parserState.Pop() 

+

169 return 

+

170 elif isinstance(token, LinebreakToken): 

+

171 if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

172 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

173 _ = LinebreakBlock(parserState.NewBlock, token) 

+

174 else: 

+

175 parserState.NewBlock = LinebreakBlock(parserState.LastBlock, token) 

+

176 parserState.TokenMarker = None 

+

177 return 

+

178 elif isinstance(token, CommentToken): 

+

179 parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True) 

+

180 _ = CommentBlock(parserState.NewBlock, token) 

+

181 parserState.TokenMarker = None 

+

182 return 

+

183 elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)): 

+

184 return 

+

185 elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)): 

+

186 parserState.NewToken = BoundaryToken(fromExistingToken=token) 

+

187 parserState.NewBlock = WhitespaceBlock(parserState.LastBlock, parserState.NewToken) 

+

188 parserState.TokenMarker = None 

+

189 return 

+

190 

+

191 raise BlockParserException(errorMessage, token) 

+
+ + + diff --git a/coverage/d_ea370b35f18cdba0_Function_py.html b/coverage/d_ea370b35f18cdba0_Function_py.html new file mode 100644 index 000000000..94f01da27 --- /dev/null +++ b/coverage/d_ea370b35f18cdba0_Function_py.html @@ -0,0 +1,260 @@ + + + + + Coverage for pyVHDLParser/DocumentModel/Sequential/Function.py: 0% + + + + + +
+
+

+ Coverage for pyVHDLParser/DocumentModel/Sequential/Function.py: + 0% +

+ +

+ 98 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from typing import List 

+

31 

+

32from pyTooling.TerminalUI import LineTerminal 

+

33from pyVHDLModel.Subprogram import Function as FunctionModel 

+

34 

+

35from pyVHDLParser.Token.Keywords import IdentifierToken 

+

36from pyVHDLParser.Blocks import BlockParserException 

+

37from pyVHDLParser.Blocks.List import GenericList as GenericListBlocks 

+

38from pyVHDLParser.Blocks.Object.Constant import ConstantDeclarationBlock 

+

39import pyVHDLParser.Blocks.InterfaceObject 

+

40from pyVHDLParser.Blocks.Sequential import Function as FunctionBlock 

+

41from pyVHDLParser.DocumentModel.ObjectDeclaration import Constant 

+

42from pyVHDLParser.DocumentModel.Reference import LibraryClause, PackageReference 

+

43 

+

44# Type alias for type hinting 

+

45class ParserState: 

+

46 pass 

+

47# ParserState = GroupToModelParser.GroupParserState 

+

48 

+

49 

+

50class Function(FunctionModel): 

+

51 def __init__(self, functionName): 

+

52 super().__init__() 

+

53 self._name = functionName 

+

54 

+

55 @classmethod 

+

56 def stateParse(cls, parserState: ParserState): 

+

57 assert isinstance(parserState.CurrentGroup, FunctionBlock.NameBlock) 

+

58 cls.stateParseFunctionName(parserState) 

+

59 

+

60 # if isinstance(block, GenericListBlocks.OpenBlock): 

+

61 # parserState.PushState = cls.stateParseGenericList 

+

62 # parserState.ReIssue() 

+

63 # el 

+

64 for block in parserState.CurrentGroup: 

+

65 if isinstance(block, ConstantDeclarationBlock): 

+

66 parserState.PushState = Constant.stateParse 

+

67 parserState.ReIssue() 

+

68 elif isinstance(block, FunctionBlock.NameBlock): 

+

69 parserState.PushState = Function.stateParse 

+

70 parserState.ReIssue() 

+

71 elif isinstance(block, FunctionBlock.EndBlock): 

+

72 break 

+

73 else: 

+

74 raise BlockParserException("Block '{0!r}' not supported in a function.".format(block), block) 

+

75 else: 

+

76 raise BlockParserException("", None) 

+

77 

+

78 parserState.Pop() 

+

79 

+

80 @classmethod 

+

81 def stateParseFunctionName(cls, parserState: ParserState): 

+

82 assert isinstance(parserState.CurrentGroup, FunctionBlock.NameBlock) 

+

83 

+

84 tokenIterator = iter(parserState) 

+

85 for token in tokenIterator: 

+

86 if isinstance(token, IdentifierToken): 

+

87 functionName = token.Value 

+

88 break 

+

89 else: 

+

90 raise BlockParserException("", None) 

+

91 

+

92 function = cls(functionName) 

+

93 parserState.CurrentNode.AddFunction(function) 

+

94 parserState.CurrentNode = function 

+

95 

+

96 @classmethod 

+

97 def stateParseGenericList(cls, parserState: ParserState): 

+

98 assert isinstance(parserState.CurrentGroup, GenericListBlocks.OpenBlock) 

+

99 

+

100 for block in parserState.GroupIterator: 

+

101 if isinstance(block, pyVHDLParser.Blocks.InterfaceObject.InterfaceConstantBlock): 

+

102 cls.stateParseGeneric(parserState) 

+

103 elif isinstance(block, GenericListBlocks.CloseBlock): 

+

104 break 

+

105 else: 

+

106 raise BlockParserException("", None) 

+

107 

+

108 parserState.Pop() 

+

109 

+

110 @classmethod 

+

111 def stateParseGeneric(cls, parserState: ParserState): 

+

112 assert isinstance(parserState.CurrentGroup, pyVHDLParser.Blocks.InterfaceObject.InterfaceConstantBlock) 

+

113 

+

114 tokenIterator = iter(parserState) 

+

115 for token in tokenIterator: 

+

116 if isinstance(token, IdentifierToken): 

+

117 genericName = token.Value 

+

118 break 

+

119 else: 

+

120 raise BlockParserException("", None) 

+

121 

+

122 parserState.CurrentNode.AddGeneric(genericName) 

+

123 

+

124 def AddLibraries(self, libraries: List[LibraryClause]): 

+

125 if (DEBUG is True) and (len(libraries) > 0): print("{DARK_CYAN}Adding libraries to function {GREEN}{0}{NOCOLOR}:".format(self._name, **LineTerminal().Foreground)) 

+

126 for library in libraries: 

+

127 if DEBUG: print(" {GREEN}{0!s}{NOCOLOR}".format(library, **LineTerminal().Foreground)) 

+

128 self._libraries.append(library._library) 

+

129 

+

130 def AddUses(self, uses: List[PackageReference]): 

+

131 if (DEBUG is True) and (len(uses) > 0): print("{DARK_CYAN}Adding uses to function {GREEN}{0}{NOCOLOR}:".format(self._name, **LineTerminal().Foreground)) 

+

132 for use in uses: 

+

133 if DEBUG: print(" {GREEN}{0!s}{NOCOLOR}".format(use, **LineTerminal().Foreground)) 

+

134 self._uses.append(use) 

+

135 

+

136 def AddGeneric(self, generic): 

+

137 if DEBUG: print("{DARK_CYAN}Adding generic to function {GREEN}{0}{NOCOLOR}:\n {YELLOW}{1}{NOCOLOR} : {2}".format(self._name, generic, "", **LineTerminal().Foreground)) 

+

138 self._genericItems.append(generic) 

+

139 

+

140 def AddConstant(self, constant): 

+

141 if DEBUG: print("{DARK_CYAN}Adding constant to function {GREEN}{0}{NOCOLOR}:\n {1!s}".format(self._name, constant, **LineTerminal().Foreground)) 

+

142 self._declaredItems.append(constant) 

+

143 

+

144 def Print(self, indent=0): 

+

145 indentation = " "*indent 

+

146 for lib in self._libraries: 

+

147 print("{indent}{DARK_CYAN}LIBRARY{NOCOLOR} {GREEN}{lib}{NOCOLOR};".format(indent=indentation, lib=lib, **LineTerminal().Foreground)) 

+

148 for use in self._uses: 

+

149 print("{indent}{DARK_CYAN}USE {GREEN}{lib}{NOCOLOR}.{GREEN}{pack}{NOCOLOR}.{GREEN}{item}{NOCOLOR};".format(indent=indentation, lib=use._configuration, pack=use._function, item=use._item, **LineTerminal().Foreground)) 

+

150 print() 

+

151 print("{indent}{DARK_CYAN}FUNCTION{NOCOLOR} {YELLOW}{name}{NOCOLOR} {DARK_CYAN}IS{NOCOLOR}".format(indent=indentation, name=self._name, **LineTerminal().Foreground)) 

+

152 if len(self._genericItems) > 0: 

+

153 print("{indent} {DARK_CYAN}GENERIC{NOCOLOR} (".format(indent=indentation, **LineTerminal().Foreground)) 

+

154 for generic in self._genericItems: 

+

155 print("{indent} {YELLOW}{name}{NOCOLOR} : {GREEN}{type}{NOCOLOR}".format(indent=indentation, name=generic, type="", **LineTerminal().Foreground)) 

+

156 print("{indent} );".format(indent=indentation)) 

+

157 if len(self._declaredItems) > 0: 

+

158 for item in self._declaredItems: 

+

159 item.Print(indent+1) 

+

160 print("{indent}{DARK_CYAN}END FUNCTION{NOCOLOR};".format(indent=indentation, name=self._name, **LineTerminal().Foreground)) 

+

161 

+
+ + + diff --git a/coverage/d_f47952d394f3d296_EventSystem_py.html b/coverage/d_f47952d394f3d296_EventSystem_py.html new file mode 100644 index 000000000..5a814af4e --- /dev/null +++ b/coverage/d_f47952d394f3d296_EventSystem_py.html @@ -0,0 +1,194 @@ + + + + + Coverage for pyVHDLParser/SimulationModel/EventSystem.py: 0% + + + + + +
+
+

+ Coverage for pyVHDLParser/SimulationModel/EventSystem.py: + 0% +

+ +

+ 46 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32 

+

33@export 

+

34class Scheduler: 

+

35 def __init__(self): 

+

36 self._now = 0 

+

37 self._globalTimeLine = TimeLine() 

+

38 

+

39 def AddEvent(self, relTime): 

+

40 pass 

+

41 

+

42 def GetNextTime(self): 

+

43 return None 

+

44 

+

45 

+

46@export 

+

47class Event: 

+

48 def __init__(self, time, process): 

+

49 self._previous = None 

+

50 self._next = None 

+

51 self._time = time 

+

52 self.WakeList = [process] 

+

53 

+

54 def AddProcess(self, process): 

+

55 self.WakeList.append(process) 

+

56 

+

57 

+

58@export 

+

59class Transaction: 

+

60 def __init__(self, time, value): 

+

61 self._time = time 

+

62 self._value = value 

+

63 

+

64 def __str__(self): 

+

65 return "({time}, {value})".format(time=self._time, value=self._value) 

+

66 

+

67 __repr__ = __str__ 

+

68 

+

69 

+

70@export 

+

71class TimeLine: 

+

72 def __init__(self): 

+

73 self._transactions = [] 

+

74 

+

75 def AddTransaction(self, transaction): 

+

76 pass 

+

77 

+

78 

+

79@export 

+

80class Waveform: 

+

81 def __init__(self, signal): 

+

82 self._signal = signal 

+

83 self._transactions = [] 

+

84 

+

85 def Initialize(self, value): 

+

86 self._transactions.append(Transaction(0, value)) 

+

87 

+

88 def AddEvent(self, time, value): 

+

89 self._transactions.append(Transaction(time, value)) 

+

90 

+

91 

+

92@export 

+

93class ProjectedWaveform(TimeLine): 

+

94 def __init__(self, signal): 

+

95 self._signal = signal 

+
+ + + diff --git a/coverage/d_f47952d394f3d296_SimulationModel_py.html b/coverage/d_f47952d394f3d296_SimulationModel_py.html new file mode 100644 index 000000000..3d4003f57 --- /dev/null +++ b/coverage/d_f47952d394f3d296_SimulationModel_py.html @@ -0,0 +1,255 @@ + + + + + Coverage for pyVHDLParser/SimulationModel/SimulationModel.py: 0% + + + + + +
+
+

+ Coverage for pyVHDLParser/SimulationModel/SimulationModel.py: + 0% +

+ +

+ 88 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# __ ___ _ ____ _ ____ # 

+

3# _ __ _ \ \ / / | | | _ \| | | _ \ __ _ _ __ ___ ___ _ __ # 

+

4# | '_ \| | | \ \ / /| |_| | | | | | | |_) / _` | '__/ __|/ _ \ '__| # 

+

5# | |_) | |_| |\ V / | _ | |_| | |___| __/ (_| | | \__ \ __/ | # 

+

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| \__,_|_| |___/\___|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# ==================================================================================================================== # 

+

29# 

+

30from pyTooling.Decorators import export 

+

31 

+

32from pyVHDLParser.SimulationModel.EventSystem import ProjectedWaveform, Waveform, Scheduler, Event 

+

33 

+

34 

+

35@export 

+

36class Simulation: 

+

37 def __init__(self): 

+

38 self._signals = [] 

+

39 self._processes = [] 

+

40 self._scheduler = Scheduler() 

+

41 

+

42 def AddSignal(self, signal): 

+

43 self._signals.append(signal) 

+

44 signal.Simulator = self 

+

45 

+

46 def AddProcess(self, process): 

+

47 self._processes.append(process) 

+

48 

+

49 def Initialize(self): 

+

50 for signal in self._signals: 

+

51 signal.Initialize() 

+

52 for process in self._processes: 

+

53 process.Initialize() 

+

54 

+

55 def Run(self): 

+

56 iterators = [(p,iter(p._generator())) for p in self._processes] 

+

57 

+

58 for process,iterator in iterators: 

+

59 signalChanges,time = next(iterator) 

+

60 for signal,value in signalChanges: 

+

61 signal.SetValue(value) 

+

62 

+

63 self._scheduler.AddEvent(Event(self._scheduler._now + time, process)) 

+

64 

+

65 

+

66 print(time) 

+

67 

+

68 

+

69 

+

70 for signal in self._signals: 

+

71 print("{signal!s}: {wave}".format(signal=signal, wave=signal._waveform._transactions)) 

+

72 

+

73 @property 

+

74 def Now(self): 

+

75 return self._scheduler._now 

+

76 

+

77 

+

78 def ExportVCD(self, filename): 

+

79 pass 

+

80 

+

81 

+

82@export 

+

83class Path: 

+

84 def __init__(self, name, path): 

+

85 self._name = name 

+

86 self._path = path 

+

87 

+

88 def __repr__(self): 

+

89 return self._path 

+

90 

+

91 def __str__(self): 

+

92 return self._name 

+

93 

+

94 

+

95@export 

+

96class Signal: 

+

97 def __init__(self, path, subtype, initializer=None): 

+

98 self._path = path 

+

99 self._subtype = subtype 

+

100 self._initializer = initializer 

+

101 self._drivingValue = None 

+

102 self._projectedWaveform = ProjectedWaveform(self) 

+

103 self._waveform = Waveform(self) 

+

104 self.Simulator = None 

+

105 

+

106 def Initialize(self): 

+

107 if self._initializer is not None: 

+

108 result = self._initializer() 

+

109 else: 

+

110 result = self._subtype.Attributes.Low() 

+

111 self._waveform.Initialize(result) 

+

112 

+

113 def SetValue(self, value): 

+

114 self._waveform.AddEvent(self.Simulator.Now, value) 

+

115 

+

116 def __repr__(self): 

+

117 return "{path!r}: {value}".format(path=self._path, value="------") 

+

118 

+

119 def __str__(self): 

+

120 return "{path!s}: {value}".format(path=self._path, value="------") 

+

121 

+

122 

+

123@export 

+

124class Process: 

+

125 def __init__(self, path, generator, sensitivityList=None): 

+

126 self._path = path 

+

127 self._sensitivityList = sensitivityList 

+

128 self._generator = generator 

+

129 self._constants = [] 

+

130 self._variables = [] 

+

131 self._outputs = [] 

+

132 self._instructions = [] 

+

133 

+

134 def Initialize(self): 

+

135 pass 

+

136 

+

137 

+

138@export 

+

139class Source: 

+

140 pass 

+

141 

+

142 

+

143@export 

+

144class Driver(Source): 

+

145 pass 

+

146 

+

147 

+

148@export 

+

149class ResolutionFunction: 

+

150 def __init__(self): 

+

151 self._function = None 

+

152 

+

153 

+

154@export 

+

155class DrivingValue: 

+

156 pass 

+
+ + + diff --git a/coverage/favicon_32.png b/coverage/favicon_32.png new file mode 100644 index 000000000..8649f0475 Binary files /dev/null and b/coverage/favicon_32.png differ diff --git a/coverage/index.html b/coverage/index.html new file mode 100644 index 000000000..b63472fa9 --- /dev/null +++ b/coverage/index.html @@ -0,0 +1,1191 @@ + + + + + Code Coverage of pyVHDLParser + + + + + +
+
+

Code Coverage of pyVHDLParser: + 15% +

+ +
+ +
+

+ coverage.py v7.4.0, + created at 2024-01-12 01:03 +0000 +

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Modulestatementsmissingexcludedbranchespartialcoverage
pyVHDLParser/ANTLR4/VHDLLexer.py1861860200%
pyVHDLParser/ANTLR4/VHDLParser.py15602156020229600%
pyVHDLParser/ANTLR4/VHDLParserVisitor.py5385380000%
pyVHDLParser/ANTLR4/Visitor.py11611604400%
pyVHDLParser/ANTLR4/__init__.py505002400%
pyVHDLParser/Base.py100040100%
pyVHDLParser/Blocks/Assignment/SignalAssignment.py14914906000%
pyVHDLParser/Blocks/Assignment/VariableAssignment.py14914906000%
pyVHDLParser/Blocks/Attribute/AttributeDeclaration.py391391116200%
pyVHDLParser/Blocks/Attribute/AttributeSpecification.py391391116200%
pyVHDLParser/Blocks/Comment.py656512800%
pyVHDLParser/Blocks/Common.py3213016060%
pyVHDLParser/Blocks/ControlStructure/Case.py206158084027%
pyVHDLParser/Blocks/ControlStructure/Exit.py174146076018%
pyVHDLParser/Blocks/ControlStructure/ForLoop.py171128076028%
pyVHDLParser/Blocks/ControlStructure/If.py161121064029%
pyVHDLParser/Blocks/ControlStructure/Next.py174146076018%
pyVHDLParser/Blocks/ControlStructure/Null.py5236022032%
pyVHDLParser/Blocks/ControlStructure/Return.py7657032027%
pyVHDLParser/Blocks/ControlStructure/WhileLoop.py19019008000%
pyVHDLParser/Blocks/Expression.py66758703061013%
pyVHDLParser/Blocks/Generate/CaseGenerate.py19619608400%
pyVHDLParser/Blocks/Generate/ForGenerate.py233233010400%
pyVHDLParser/Blocks/Generate/IfGenerate.py672672030800%
pyVHDLParser/Blocks/Generate/__init__.py880200%
pyVHDLParser/Blocks/Generic.py15412078691%
pyVHDLParser/Blocks/Generic1.py32113801622055%
pyVHDLParser/Blocks/Instantiation/EntityInstantiation.py15215206200%
pyVHDLParser/Blocks/Instantiation/FunctionInstantiation.py17617607800%
pyVHDLParser/Blocks/Instantiation/PackageInstantiation.py17617607800%
pyVHDLParser/Blocks/Instantiation/ProcedureInstantiation.py17617607800%
pyVHDLParser/Blocks/InterfaceObject.py43831802001529%
pyVHDLParser/Blocks/List/GenericList.py16290868845%
pyVHDLParser/Blocks/List/GenericMapList.py237237010400%
pyVHDLParser/Blocks/List/ParameterList.py194157488022%
pyVHDLParser/Blocks/List/PortList.py14086062639%
pyVHDLParser/Blocks/List/PortMapList.py238238010400%
pyVHDLParser/Blocks/List/SensitivityList.py143117070021%
pyVHDLParser/Blocks/Object/Constant.py338012176%
pyVHDLParser/Blocks/Object/SharedVariable.py11793050023%
pyVHDLParser/Blocks/Object/Signal.py338012176%
pyVHDLParser/Blocks/Object/Variable.py3313012062%
pyVHDLParser/Blocks/Object/__init__.py1881120821039%
pyVHDLParser/Blocks/Reference/Context.py13260064652%
pyVHDLParser/Blocks/Reference/Library.py165800781251%
pyVHDLParser/Blocks/Reference/Use.py38719201882649%
pyVHDLParser/Blocks/Reporting/Assert.py2762440128014%
pyVHDLParser/Blocks/Reporting/Report.py193169090015%
pyVHDLParser/Blocks/Sequential/Function.py33624001441030%
pyVHDLParser/Blocks/Sequential/Package.py11134046668%
pyVHDLParser/Blocks/Sequential/PackageBody.py10148044653%
pyVHDLParser/Blocks/Sequential/Procedure.py202147088528%
pyVHDLParser/Blocks/Sequential/Process.py1831190801037%
pyVHDLParser/Blocks/Structural/Architecture.py197560921470%
pyVHDLParser/Blocks/Structural/Block.py16216206400%
pyVHDLParser/Blocks/Structural/Component.py133104064023%
pyVHDLParser/Blocks/Structural/Configuration.py141108068024%
pyVHDLParser/Blocks/Structural/Entity.py11740052764%
pyVHDLParser/Blocks/Type/ResolutionIndication.py13206089%
pyVHDLParser/Blocks/Type/Subtype.py391391116200%
pyVHDLParser/Blocks/Type/SubtypeIndication.py11110600%
pyVHDLParser/Blocks/Type/Type.py391391116200%
pyVHDLParser/Blocks/__init__.py313680122678%
pyVHDLParser/CLI/ANTLR.py10410406600%
pyVHDLParser/CLI/Block.py13713707000%
pyVHDLParser/CLI/CodeDOM.py242401200%
pyVHDLParser/CLI/GraphML.py10910901600%
pyVHDLParser/CLI/Group.py797904200%
pyVHDLParser/CLI/Token.py12012006400%
pyVHDLParser/CLI/VHDLParser.py10910904400%
pyVHDLParser/CLI/__init__.py31310000%
pyVHDLParser/Decorators.py39390400%
pyVHDLParser/DocumentModel/DesignUnit/Architecture.py5737222033%
pyVHDLParser/DocumentModel/DesignUnit/Context.py9973060024%
pyVHDLParser/DocumentModel/DesignUnit/Entity.py10978060025%
pyVHDLParser/DocumentModel/DesignUnit/Package.py11381050026%
pyVHDLParser/DocumentModel/DesignUnit/PackageBody.py12190062025%
pyVHDLParser/DocumentModel/ObjectDeclaration/__init__.py33330800%
pyVHDLParser/DocumentModel/Reference/__init__.py6753036017%
pyVHDLParser/DocumentModel/Sequential/Function.py989804600%
pyVHDLParser/DocumentModel/__init__.py112450561054%
pyVHDLParser/Filters/Comment.py323201600%
pyVHDLParser/Groups/Comment.py247016170%
pyVHDLParser/Groups/Concurrent.py3923124044%
pyVHDLParser/Groups/DesignUnit.py46530602281034%
pyVHDLParser/Groups/List.py1971307122039%
pyVHDLParser/Groups/Object.py5233030038%
pyVHDLParser/Groups/Reference.py232016290%
pyVHDLParser/Groups/Sequential/Function.py176136078022%
pyVHDLParser/Groups/Sequential/Procedure.py160127070020%
pyVHDLParser/Groups/Sequential/Process.py19311013108048%
pyVHDLParser/Groups/__init__.py25339086885%
pyVHDLParser/LanguageModel/DesignUnit.py222201200%
pyVHDLParser/LanguageModel/Expression.py330000%
pyVHDLParser/LanguageModel/InterfaceItem.py13130000%
pyVHDLParser/LanguageModel/Reference.py880000%
pyVHDLParser/LanguageModel/__init__.py10100000%
pyVHDLParser/NetlistModel/NetlistModel.py13130800%
pyVHDLParser/SimulationModel/EventSystem.py464601200%
pyVHDLParser/SimulationModel/SimulationModel.py888803200%
pyVHDLParser/Token/Keywords.py50660348399%
pyVHDLParser/Token/Parser.py39412202962965%
pyVHDLParser/Token/__init__.py286620106677%
pyVHDLParser/TypeSystem/Package.py494902000%
pyVHDLParser/TypeSystem/TypeSystem.py15815826900%
pyVHDLParser/TypeSystem/std.py15150000%
pyVHDLParser/TypeSystem/std_logic_1164.py25250400%
pyVHDLParser/__init__.py3400140100%
test/BlockParserTests/ArchitectureTest.py27270400%
test/BlockParserTests/EntityTest.py29290400%
test/BlockParserTests/GenericListTest.py32320400%
test/BlockParserTests/LibraryTest.py31310400%
test/BlockParserTests/PackageBodyTest.py29290400%
test/BlockParserTests/PackageTest.py29290400%
test/BlockParserTests/PortListTest.py33330400%
test/BlockParserTests/ProcessTest.py38380400%
test/BlockParserTests/TestSuite.py868604000%
test/BlockParserTests/UseTest.py29290400%
test/Counter.py343401400%
test/SimulationModel/Test.py26260400%
test/TestCase.py550000%
Total329982865442984725415%
+

+ No items found using the specified filter. +

+

23 empty files skipped.

+
+ + + diff --git a/coverage/keybd_closed.png b/coverage/keybd_closed.png new file mode 100644 index 000000000..ba119c47d Binary files /dev/null and b/coverage/keybd_closed.png differ diff --git a/coverage/keybd_open.png b/coverage/keybd_open.png new file mode 100644 index 000000000..a8bac6c9d Binary files /dev/null and b/coverage/keybd_open.png differ diff --git a/coverage/status.json b/coverage/status.json new file mode 100644 index 000000000..54f3f8339 --- /dev/null +++ b/coverage/status.json @@ -0,0 +1 @@ +{"format":2,"version":"7.4.0","globals":"bc15926b13ff1ced14e65648419b51ec","files":{"d_2b67a29648fff107_VHDLLexer_py":{"hash":"44291d7e2fb58243106426153b8e73f8","index":{"nums":[0,1,186,0,186,2,0,2],"html_filename":"d_2b67a29648fff107_VHDLLexer_py.html","relative_filename":"pyVHDLParser/ANTLR4/VHDLLexer.py"}},"d_2b67a29648fff107_VHDLParser_py":{"hash":"dbe23f95dc990b0d0e1bc40a7c551ef4","index":{"nums":[0,1,15602,0,15602,2296,0,2296],"html_filename":"d_2b67a29648fff107_VHDLParser_py.html","relative_filename":"pyVHDLParser/ANTLR4/VHDLParser.py"}},"d_2b67a29648fff107_VHDLParserVisitor_py":{"hash":"9a46e821e21f86a44d580c568fe78ddd","index":{"nums":[0,1,538,0,538,0,0,0],"html_filename":"d_2b67a29648fff107_VHDLParserVisitor_py.html","relative_filename":"pyVHDLParser/ANTLR4/VHDLParserVisitor.py"}},"d_2b67a29648fff107_Visitor_py":{"hash":"3e2b862de3af661298a4b1ea859ab16c","index":{"nums":[0,1,116,0,116,44,0,44],"html_filename":"d_2b67a29648fff107_Visitor_py.html","relative_filename":"pyVHDLParser/ANTLR4/Visitor.py"}},"d_2b67a29648fff107___init___py":{"hash":"d6798b145db4b40be3abd2c234d521b0","index":{"nums":[0,1,50,0,50,24,0,24],"html_filename":"d_2b67a29648fff107___init___py.html","relative_filename":"pyVHDLParser/ANTLR4/__init__.py"}},"d_defb5b8fc10f8036_Base_py":{"hash":"a16c44b2f0a38beea64508109fe5e68d","index":{"nums":[0,1,10,0,0,4,0,0],"html_filename":"d_defb5b8fc10f8036_Base_py.html","relative_filename":"pyVHDLParser/Base.py"}},"d_1582d9098c720d29_SignalAssignment_py":{"hash":"188a91987dfccc9820f5ebfdbea39632","index":{"nums":[0,1,149,0,149,60,0,60],"html_filename":"d_1582d9098c720d29_SignalAssignment_py.html","relative_filename":"pyVHDLParser/Blocks/Assignment/SignalAssignment.py"}},"d_1582d9098c720d29_VariableAssignment_py":{"hash":"188a91987dfccc9820f5ebfdbea39632","index":{"nums":[0,1,149,0,149,60,0,60],"html_filename":"d_1582d9098c720d29_VariableAssignment_py.html","relative_filename":"pyVHDLParser/Blocks/Assignment/VariableAssignment.py"}},"d_522569d2cb39496b_AttributeDeclaration_py":{"hash":"1c08803cd07703528a3761f016f4e403","index":{"nums":[0,1,391,1,391,162,0,162],"html_filename":"d_522569d2cb39496b_AttributeDeclaration_py.html","relative_filename":"pyVHDLParser/Blocks/Attribute/AttributeDeclaration.py"}},"d_522569d2cb39496b_AttributeSpecification_py":{"hash":"86f486bf9f473736c7c637a5f8ad3102","index":{"nums":[0,1,391,1,391,162,0,162],"html_filename":"d_522569d2cb39496b_AttributeSpecification_py.html","relative_filename":"pyVHDLParser/Blocks/Attribute/AttributeSpecification.py"}},"d_c650c0c44533ccba_Comment_py":{"hash":"81463734e438bd200f403c3962458778","index":{"nums":[0,1,65,1,65,28,0,28],"html_filename":"d_c650c0c44533ccba_Comment_py.html","relative_filename":"pyVHDLParser/Blocks/Comment.py"}},"d_c650c0c44533ccba_Common_py":{"hash":"39cf69ad4d7c5f3e29bd490a7b3930ab","index":{"nums":[0,1,32,0,13,16,0,6],"html_filename":"d_c650c0c44533ccba_Common_py.html","relative_filename":"pyVHDLParser/Blocks/Common.py"}},"d_cb482dc298bd8d7f_Case_py":{"hash":"dc6c42213d47e20f73e945449e055953","index":{"nums":[0,1,206,0,158,84,0,54],"html_filename":"d_cb482dc298bd8d7f_Case_py.html","relative_filename":"pyVHDLParser/Blocks/ControlStructure/Case.py"}},"d_cb482dc298bd8d7f_Exit_py":{"hash":"6262627c091de5aca60ece341c5718ba","index":{"nums":[0,1,174,0,146,76,0,58],"html_filename":"d_cb482dc298bd8d7f_Exit_py.html","relative_filename":"pyVHDLParser/Blocks/ControlStructure/Exit.py"}},"d_cb482dc298bd8d7f_ForLoop_py":{"hash":"550f78502c8112b94ee16dda741f8c47","index":{"nums":[0,1,171,0,128,76,0,50],"html_filename":"d_cb482dc298bd8d7f_ForLoop_py.html","relative_filename":"pyVHDLParser/Blocks/ControlStructure/ForLoop.py"}},"d_cb482dc298bd8d7f_If_py":{"hash":"4a537d53fa99bf5ad725a8c3ff34138a","index":{"nums":[0,1,161,0,121,64,0,38],"html_filename":"d_cb482dc298bd8d7f_If_py.html","relative_filename":"pyVHDLParser/Blocks/ControlStructure/If.py"}},"d_cb482dc298bd8d7f_Next_py":{"hash":"922b1ca9eb3fa2edea3020702abfe6f3","index":{"nums":[0,1,174,0,146,76,0,58],"html_filename":"d_cb482dc298bd8d7f_Next_py.html","relative_filename":"pyVHDLParser/Blocks/ControlStructure/Next.py"}},"d_cb482dc298bd8d7f_Null_py":{"hash":"f35cb30babe3d45561a25ba5028654c6","index":{"nums":[0,1,52,0,36,22,0,14],"html_filename":"d_cb482dc298bd8d7f_Null_py.html","relative_filename":"pyVHDLParser/Blocks/ControlStructure/Null.py"}},"d_cb482dc298bd8d7f_Return_py":{"hash":"6fa54b75eb83867993e939adedf9d324","index":{"nums":[0,1,76,0,57,32,0,22],"html_filename":"d_cb482dc298bd8d7f_Return_py.html","relative_filename":"pyVHDLParser/Blocks/ControlStructure/Return.py"}},"d_cb482dc298bd8d7f_WhileLoop_py":{"hash":"bce32039fe2a228b89e802abc5cc5fe9","index":{"nums":[0,1,190,0,190,80,0,80],"html_filename":"d_cb482dc298bd8d7f_WhileLoop_py.html","relative_filename":"pyVHDLParser/Blocks/ControlStructure/WhileLoop.py"}},"d_c650c0c44533ccba_Expression_py":{"hash":"313defa02bc7c12504eaadf381dbcfad","index":{"nums":[0,1,667,0,587,306,10,260],"html_filename":"d_c650c0c44533ccba_Expression_py.html","relative_filename":"pyVHDLParser/Blocks/Expression.py"}},"d_d0663b954b19b372_CaseGenerate_py":{"hash":"1d79407ef4be5b7d105ca5abc27c5b53","index":{"nums":[0,1,196,0,196,84,0,84],"html_filename":"d_d0663b954b19b372_CaseGenerate_py.html","relative_filename":"pyVHDLParser/Blocks/Generate/CaseGenerate.py"}},"d_d0663b954b19b372_ForGenerate_py":{"hash":"24052c20cb9faeedd829f06cd155d3de","index":{"nums":[0,1,233,0,233,104,0,104],"html_filename":"d_d0663b954b19b372_ForGenerate_py.html","relative_filename":"pyVHDLParser/Blocks/Generate/ForGenerate.py"}},"d_d0663b954b19b372_IfGenerate_py":{"hash":"0eeacc21108a7d383d122a0ce2e2d164","index":{"nums":[0,1,672,0,672,308,0,308],"html_filename":"d_d0663b954b19b372_IfGenerate_py.html","relative_filename":"pyVHDLParser/Blocks/Generate/IfGenerate.py"}},"d_d0663b954b19b372___init___py":{"hash":"599f63f6c473e8607fe80c982cd6ac71","index":{"nums":[0,1,8,0,8,2,0,2],"html_filename":"d_d0663b954b19b372___init___py.html","relative_filename":"pyVHDLParser/Blocks/Generate/__init__.py"}},"d_c650c0c44533ccba_Generic_py":{"hash":"98dc98ce569f35da205fc1a841fc9039","index":{"nums":[0,1,154,0,12,78,6,10],"html_filename":"d_c650c0c44533ccba_Generic_py.html","relative_filename":"pyVHDLParser/Blocks/Generic.py"}},"d_c650c0c44533ccba_Generic1_py":{"hash":"f880b8d47c6eddc38bbedaeb5b13afb8","index":{"nums":[0,1,321,0,138,162,20,78],"html_filename":"d_c650c0c44533ccba_Generic1_py.html","relative_filename":"pyVHDLParser/Blocks/Generic1.py"}},"d_491c058ff3048dbd_EntityInstantiation_py":{"hash":"e7645ef4c9aed9508f62733b05a941e2","index":{"nums":[0,1,152,0,152,62,0,62],"html_filename":"d_491c058ff3048dbd_EntityInstantiation_py.html","relative_filename":"pyVHDLParser/Blocks/Instantiation/EntityInstantiation.py"}},"d_491c058ff3048dbd_FunctionInstantiation_py":{"hash":"e3c6e7ba2166c751aa8bbd87ad138695","index":{"nums":[0,1,176,0,176,78,0,78],"html_filename":"d_491c058ff3048dbd_FunctionInstantiation_py.html","relative_filename":"pyVHDLParser/Blocks/Instantiation/FunctionInstantiation.py"}},"d_491c058ff3048dbd_PackageInstantiation_py":{"hash":"e3c6e7ba2166c751aa8bbd87ad138695","index":{"nums":[0,1,176,0,176,78,0,78],"html_filename":"d_491c058ff3048dbd_PackageInstantiation_py.html","relative_filename":"pyVHDLParser/Blocks/Instantiation/PackageInstantiation.py"}},"d_491c058ff3048dbd_ProcedureInstantiation_py":{"hash":"e3c6e7ba2166c751aa8bbd87ad138695","index":{"nums":[0,1,176,0,176,78,0,78],"html_filename":"d_491c058ff3048dbd_ProcedureInstantiation_py.html","relative_filename":"pyVHDLParser/Blocks/Instantiation/ProcedureInstantiation.py"}},"d_c650c0c44533ccba_InterfaceObject_py":{"hash":"07c01047523d2b4ff2ea8aba9d438a35","index":{"nums":[0,1,438,0,318,200,15,137],"html_filename":"d_c650c0c44533ccba_InterfaceObject_py.html","relative_filename":"pyVHDLParser/Blocks/InterfaceObject.py"}},"d_e250293a46335217_GenericList_py":{"hash":"8fc0bbeaf3bc06d1bffbe09b796ef372","index":{"nums":[0,1,162,8,90,68,8,36],"html_filename":"d_e250293a46335217_GenericList_py.html","relative_filename":"pyVHDLParser/Blocks/List/GenericList.py"}},"d_e250293a46335217_GenericMapList_py":{"hash":"6ab19fa3fe946b2d1704f12ba0163881","index":{"nums":[0,1,237,0,237,104,0,104],"html_filename":"d_e250293a46335217_GenericMapList_py.html","relative_filename":"pyVHDLParser/Blocks/List/GenericMapList.py"}},"d_e250293a46335217_ParameterList_py":{"hash":"3d08ea463f1d22609b33da6b0c613544","index":{"nums":[0,1,194,4,157,88,0,64],"html_filename":"d_e250293a46335217_ParameterList_py.html","relative_filename":"pyVHDLParser/Blocks/List/ParameterList.py"}},"d_e250293a46335217_PortList_py":{"hash":"9d7aa0bc25db0cbc1edf8440c34a7126","index":{"nums":[0,1,140,0,86,62,6,38],"html_filename":"d_e250293a46335217_PortList_py.html","relative_filename":"pyVHDLParser/Blocks/List/PortList.py"}},"d_e250293a46335217_PortMapList_py":{"hash":"f900e744650833bff3d14dacc17b41e4","index":{"nums":[0,1,238,0,238,104,0,104],"html_filename":"d_e250293a46335217_PortMapList_py.html","relative_filename":"pyVHDLParser/Blocks/List/PortMapList.py"}},"d_e250293a46335217_SensitivityList_py":{"hash":"a1d9b9ed7036ffe8ddeee9a6b2c5b565","index":{"nums":[0,1,143,0,117,70,0,52],"html_filename":"d_e250293a46335217_SensitivityList_py.html","relative_filename":"pyVHDLParser/Blocks/List/SensitivityList.py"}},"d_331d1eb816eb5c25_Constant_py":{"hash":"fa061f50098a9f7c765f5d6ed907187e","index":{"nums":[0,1,33,0,8,12,1,3],"html_filename":"d_331d1eb816eb5c25_Constant_py.html","relative_filename":"pyVHDLParser/Blocks/Object/Constant.py"}},"d_331d1eb816eb5c25_SharedVariable_py":{"hash":"db266c5cebef07a796ef897126a0b607","index":{"nums":[0,1,117,0,93,50,0,36],"html_filename":"d_331d1eb816eb5c25_SharedVariable_py.html","relative_filename":"pyVHDLParser/Blocks/Object/SharedVariable.py"}},"d_331d1eb816eb5c25_Signal_py":{"hash":"8d08384242685959f2b9902817b5b470","index":{"nums":[0,1,33,0,8,12,1,3],"html_filename":"d_331d1eb816eb5c25_Signal_py.html","relative_filename":"pyVHDLParser/Blocks/Object/Signal.py"}},"d_331d1eb816eb5c25_Variable_py":{"hash":"ce92f908f13355cb28205c079d37101a","index":{"nums":[0,1,33,0,13,12,0,4],"html_filename":"d_331d1eb816eb5c25_Variable_py.html","relative_filename":"pyVHDLParser/Blocks/Object/Variable.py"}},"d_331d1eb816eb5c25___init___py":{"hash":"7ef67c003bb7426f33b0a28c72873723","index":{"nums":[0,1,188,0,112,82,10,52],"html_filename":"d_331d1eb816eb5c25___init___py.html","relative_filename":"pyVHDLParser/Blocks/Object/__init__.py"}},"d_6f6172e54b92c588_Context_py":{"hash":"23729440b71feef95ec3bcad7994502e","index":{"nums":[0,1,132,0,60,64,6,34],"html_filename":"d_6f6172e54b92c588_Context_py.html","relative_filename":"pyVHDLParser/Blocks/Reference/Context.py"}},"d_6f6172e54b92c588_Library_py":{"hash":"c132b7127004fb8ea1cff12f0cb4d02a","index":{"nums":[0,1,165,0,80,78,12,40],"html_filename":"d_6f6172e54b92c588_Library_py.html","relative_filename":"pyVHDLParser/Blocks/Reference/Library.py"}},"d_6f6172e54b92c588_Use_py":{"hash":"0d37a4733e8a8e766c64c713e5b0a5b4","index":{"nums":[0,1,387,0,192,188,26,100],"html_filename":"d_6f6172e54b92c588_Use_py.html","relative_filename":"pyVHDLParser/Blocks/Reference/Use.py"}},"d_ccdd3719749ebe9e_Assert_py":{"hash":"d3a31ebdb68ba8ccd19958674585e195","index":{"nums":[0,1,276,0,244,128,0,102],"html_filename":"d_ccdd3719749ebe9e_Assert_py.html","relative_filename":"pyVHDLParser/Blocks/Reporting/Assert.py"}},"d_ccdd3719749ebe9e_Report_py":{"hash":"c9a704bb25a5a7acdd113c3e6db9a84f","index":{"nums":[0,1,193,0,169,90,0,72],"html_filename":"d_ccdd3719749ebe9e_Report_py.html","relative_filename":"pyVHDLParser/Blocks/Reporting/Report.py"}},"d_07f20d4589d19dfa_Function_py":{"hash":"ced2b3e408d5cfeb72f2f16554d02343","index":{"nums":[0,1,336,0,240,144,10,98],"html_filename":"d_07f20d4589d19dfa_Function_py.html","relative_filename":"pyVHDLParser/Blocks/Sequential/Function.py"}},"d_07f20d4589d19dfa_Package_py":{"hash":"3ab2ba7db5a708c671eafe62841ef9c3","index":{"nums":[0,1,111,0,34,46,6,16],"html_filename":"d_07f20d4589d19dfa_Package_py.html","relative_filename":"pyVHDLParser/Blocks/Sequential/Package.py"}},"d_07f20d4589d19dfa_PackageBody_py":{"hash":"a6d1318870acc52863b540a9512dbcee","index":{"nums":[0,1,101,0,48,44,6,20],"html_filename":"d_07f20d4589d19dfa_PackageBody_py.html","relative_filename":"pyVHDLParser/Blocks/Sequential/PackageBody.py"}},"d_07f20d4589d19dfa_Procedure_py":{"hash":"402ea1cd05fdb0df05e780c9c0a0cbeb","index":{"nums":[0,1,202,0,147,88,5,61],"html_filename":"d_07f20d4589d19dfa_Procedure_py.html","relative_filename":"pyVHDLParser/Blocks/Sequential/Procedure.py"}},"d_07f20d4589d19dfa_Process_py":{"hash":"a51f7fe5698328869455298e49574219","index":{"nums":[0,1,183,0,119,80,10,48],"html_filename":"d_07f20d4589d19dfa_Process_py.html","relative_filename":"pyVHDLParser/Blocks/Sequential/Process.py"}},"d_04128728490d4342_Architecture_py":{"hash":"9aed4a79865b00e31675b0760f1b7e3f","index":{"nums":[0,1,197,0,56,92,14,30],"html_filename":"d_04128728490d4342_Architecture_py.html","relative_filename":"pyVHDLParser/Blocks/Structural/Architecture.py"}},"d_04128728490d4342_Block_py":{"hash":"b5820df1af089dee0b3e5464fd4f1b31","index":{"nums":[0,1,162,0,162,64,0,64],"html_filename":"d_04128728490d4342_Block_py.html","relative_filename":"pyVHDLParser/Blocks/Structural/Block.py"}},"d_04128728490d4342_Component_py":{"hash":"03edb9f77cc89c8423fcfb18c5888385","index":{"nums":[0,1,133,0,104,64,0,48],"html_filename":"d_04128728490d4342_Component_py.html","relative_filename":"pyVHDLParser/Blocks/Structural/Component.py"}},"d_04128728490d4342_Configuration_py":{"hash":"859e1293f63551a5209582f102c56895","index":{"nums":[0,1,141,0,108,68,0,50],"html_filename":"d_04128728490d4342_Configuration_py.html","relative_filename":"pyVHDLParser/Blocks/Structural/Configuration.py"}},"d_04128728490d4342_Entity_py":{"hash":"50bc8c237028e31b1a3a53c1731c58e8","index":{"nums":[0,1,117,0,40,52,7,21],"html_filename":"d_04128728490d4342_Entity_py.html","relative_filename":"pyVHDLParser/Blocks/Structural/Entity.py"}},"d_763895e6faf625b1_ResolutionIndication_py":{"hash":"6cb11554d85c667331c7ea464220075d","index":{"nums":[0,1,13,0,2,6,0,0],"html_filename":"d_763895e6faf625b1_ResolutionIndication_py.html","relative_filename":"pyVHDLParser/Blocks/Type/ResolutionIndication.py"}},"d_763895e6faf625b1_Subtype_py":{"hash":"763c4623d0f30f0905209d23a6d7fdb3","index":{"nums":[0,1,391,1,391,162,0,162],"html_filename":"d_763895e6faf625b1_Subtype_py.html","relative_filename":"pyVHDLParser/Blocks/Type/Subtype.py"}},"d_763895e6faf625b1_SubtypeIndication_py":{"hash":"1741c0a2fb92917cc718817774ec2637","index":{"nums":[0,1,11,0,11,6,0,6],"html_filename":"d_763895e6faf625b1_SubtypeIndication_py.html","relative_filename":"pyVHDLParser/Blocks/Type/SubtypeIndication.py"}},"d_763895e6faf625b1_Type_py":{"hash":"2970ec7de18c34bf59827b08d6ba8a8e","index":{"nums":[0,1,391,1,391,162,0,162],"html_filename":"d_763895e6faf625b1_Type_py.html","relative_filename":"pyVHDLParser/Blocks/Type/Type.py"}},"d_c650c0c44533ccba___init___py":{"hash":"1ae88b27171e9e84fe91c600d2e46d2d","index":{"nums":[0,1,313,0,68,122,6,28],"html_filename":"d_c650c0c44533ccba___init___py.html","relative_filename":"pyVHDLParser/Blocks/__init__.py"}},"d_038a1401f996c67d_ANTLR_py":{"hash":"ce4fb85d75bed597006569dbc5f50ae5","index":{"nums":[0,1,104,0,104,66,0,66],"html_filename":"d_038a1401f996c67d_ANTLR_py.html","relative_filename":"pyVHDLParser/CLI/ANTLR.py"}},"d_038a1401f996c67d_Block_py":{"hash":"67c0b394b7c405aea55b18e9ac04660a","index":{"nums":[0,1,137,0,137,70,0,70],"html_filename":"d_038a1401f996c67d_Block_py.html","relative_filename":"pyVHDLParser/CLI/Block.py"}},"d_038a1401f996c67d_CodeDOM_py":{"hash":"ef02fb23ff612d3a92fe90a2abfbfa3f","index":{"nums":[0,1,24,0,24,12,0,12],"html_filename":"d_038a1401f996c67d_CodeDOM_py.html","relative_filename":"pyVHDLParser/CLI/CodeDOM.py"}},"d_038a1401f996c67d_GraphML_py":{"hash":"921f299693c670352182ef454fce6572","index":{"nums":[0,1,109,0,109,16,0,16],"html_filename":"d_038a1401f996c67d_GraphML_py.html","relative_filename":"pyVHDLParser/CLI/GraphML.py"}},"d_038a1401f996c67d_Group_py":{"hash":"8db4abfe7d99379c075bb5e75e9a963d","index":{"nums":[0,1,79,0,79,42,0,42],"html_filename":"d_038a1401f996c67d_Group_py.html","relative_filename":"pyVHDLParser/CLI/Group.py"}},"d_038a1401f996c67d_Token_py":{"hash":"43bbd815b87bd14bc41763863885687e","index":{"nums":[0,1,120,0,120,64,0,64],"html_filename":"d_038a1401f996c67d_Token_py.html","relative_filename":"pyVHDLParser/CLI/Token.py"}},"d_038a1401f996c67d_VHDLParser_py":{"hash":"5a81ae495a13aa107dc70e1352da994a","index":{"nums":[0,1,109,0,109,44,0,44],"html_filename":"d_038a1401f996c67d_VHDLParser_py.html","relative_filename":"pyVHDLParser/CLI/VHDLParser.py"}},"d_038a1401f996c67d___init___py":{"hash":"a67c33b36f6cc0a34e6c691af3aad927","index":{"nums":[0,1,31,0,31,0,0,0],"html_filename":"d_038a1401f996c67d___init___py.html","relative_filename":"pyVHDLParser/CLI/__init__.py"}},"d_defb5b8fc10f8036_Decorators_py":{"hash":"bb6bffe0e8902c08f027077ac14f1979","index":{"nums":[0,1,39,0,39,4,0,4],"html_filename":"d_defb5b8fc10f8036_Decorators_py.html","relative_filename":"pyVHDLParser/Decorators.py"}},"d_9eec94a2c84e7a59_Architecture_py":{"hash":"e99badf5b131e2bc907369cb074f26cb","index":{"nums":[0,1,57,2,37,22,0,16],"html_filename":"d_9eec94a2c84e7a59_Architecture_py.html","relative_filename":"pyVHDLParser/DocumentModel/DesignUnit/Architecture.py"}},"d_9eec94a2c84e7a59_Context_py":{"hash":"1fa6618aef1d0f72d943258671ae5837","index":{"nums":[0,1,99,0,73,60,0,48],"html_filename":"d_9eec94a2c84e7a59_Context_py.html","relative_filename":"pyVHDLParser/DocumentModel/DesignUnit/Context.py"}},"d_9eec94a2c84e7a59_Entity_py":{"hash":"ef1b27feb17f61b9586052746304385c","index":{"nums":[0,1,109,0,78,60,0,48],"html_filename":"d_9eec94a2c84e7a59_Entity_py.html","relative_filename":"pyVHDLParser/DocumentModel/DesignUnit/Entity.py"}},"d_9eec94a2c84e7a59_Package_py":{"hash":"db80e281cb2b027d6d6eeaf5d6385bca","index":{"nums":[0,1,113,0,81,50,0,40],"html_filename":"d_9eec94a2c84e7a59_Package_py.html","relative_filename":"pyVHDLParser/DocumentModel/DesignUnit/Package.py"}},"d_9eec94a2c84e7a59_PackageBody_py":{"hash":"f6f3ec90d4d4c39063762f6b9cad19e4","index":{"nums":[0,1,121,0,90,62,0,48],"html_filename":"d_9eec94a2c84e7a59_PackageBody_py.html","relative_filename":"pyVHDLParser/DocumentModel/DesignUnit/PackageBody.py"}},"d_144afdd2475fd7ef___init___py":{"hash":"e02c87a06e5c02f9ddee1800ae9d929c","index":{"nums":[0,1,33,0,33,8,0,8],"html_filename":"d_144afdd2475fd7ef___init___py.html","relative_filename":"pyVHDLParser/DocumentModel/ObjectDeclaration/__init__.py"}},"d_c9b97ba0573833c3___init___py":{"hash":"03b5156f5d4007629ba7fba29c4de258","index":{"nums":[0,1,67,0,53,36,0,32],"html_filename":"d_c9b97ba0573833c3___init___py.html","relative_filename":"pyVHDLParser/DocumentModel/Reference/__init__.py"}},"d_ea370b35f18cdba0_Function_py":{"hash":"09ade7f964e87ae6cad5dc52152aab7d","index":{"nums":[0,1,98,0,98,46,0,46],"html_filename":"d_ea370b35f18cdba0_Function_py.html","relative_filename":"pyVHDLParser/DocumentModel/Sequential/Function.py"}},"d_6d556a8728c616ef___init___py":{"hash":"731e7a8e21bca23c466d4c24105618a2","index":{"nums":[0,1,112,0,45,56,10,32],"html_filename":"d_6d556a8728c616ef___init___py.html","relative_filename":"pyVHDLParser/DocumentModel/__init__.py"}},"d_59d4892145d5c009_Comment_py":{"hash":"6d53dc1decf39d2ab17b2040e62e6ee8","index":{"nums":[0,1,32,0,32,16,0,16],"html_filename":"d_59d4892145d5c009_Comment_py.html","relative_filename":"pyVHDLParser/Filters/Comment.py"}},"d_16378e9cfef5f3d4_Comment_py":{"hash":"cf67a4561a2f13c1b57d58826cee676e","index":{"nums":[0,1,24,0,7,16,1,5],"html_filename":"d_16378e9cfef5f3d4_Comment_py.html","relative_filename":"pyVHDLParser/Groups/Comment.py"}},"d_16378e9cfef5f3d4_Concurrent_py":{"hash":"bc53d1cafb066874e572a99357877d18","index":{"nums":[0,1,39,1,23,24,0,12],"html_filename":"d_16378e9cfef5f3d4_Concurrent_py.html","relative_filename":"pyVHDLParser/Groups/Concurrent.py"}},"d_16378e9cfef5f3d4_DesignUnit_py":{"hash":"82988d858a09ad8d343d78e8701a8f3a","index":{"nums":[0,1,465,0,306,228,10,148],"html_filename":"d_16378e9cfef5f3d4_DesignUnit_py.html","relative_filename":"pyVHDLParser/Groups/DesignUnit.py"}},"d_16378e9cfef5f3d4_List_py":{"hash":"0841e6dc01045763af1309c084bfb90c","index":{"nums":[0,1,197,7,130,122,0,66],"html_filename":"d_16378e9cfef5f3d4_List_py.html","relative_filename":"pyVHDLParser/Groups/List.py"}},"d_16378e9cfef5f3d4_Object_py":{"hash":"d69bc489fad1d3715815a85762105f7b","index":{"nums":[0,1,52,0,33,30,0,18],"html_filename":"d_16378e9cfef5f3d4_Object_py.html","relative_filename":"pyVHDLParser/Groups/Object.py"}},"d_16378e9cfef5f3d4_Reference_py":{"hash":"625feed636729b669a53e71914abff94","index":{"nums":[0,1,23,0,2,16,2,2],"html_filename":"d_16378e9cfef5f3d4_Reference_py.html","relative_filename":"pyVHDLParser/Groups/Reference.py"}},"d_752c0c85f0e99b08_Function_py":{"hash":"aab274b1a92fcc7ec680c785c1ee3cd4","index":{"nums":[0,1,176,0,136,78,0,62],"html_filename":"d_752c0c85f0e99b08_Function_py.html","relative_filename":"pyVHDLParser/Groups/Sequential/Function.py"}},"d_752c0c85f0e99b08_Procedure_py":{"hash":"530226a38d6aa17f3ea6021accf83f5d","index":{"nums":[0,1,160,0,127,70,0,58],"html_filename":"d_752c0c85f0e99b08_Procedure_py.html","relative_filename":"pyVHDLParser/Groups/Sequential/Procedure.py"}},"d_752c0c85f0e99b08_Process_py":{"hash":"5f482d4884474470ac64a1191fd21771","index":{"nums":[0,1,193,13,110,108,0,46],"html_filename":"d_752c0c85f0e99b08_Process_py.html","relative_filename":"pyVHDLParser/Groups/Sequential/Process.py"}},"d_16378e9cfef5f3d4___init___py":{"hash":"f6b7d83f23a25b5baf5f485ccc976088","index":{"nums":[0,1,253,0,39,86,8,12],"html_filename":"d_16378e9cfef5f3d4___init___py.html","relative_filename":"pyVHDLParser/Groups/__init__.py"}},"d_2ec5d9f57d6cf7d0_DesignUnit_py":{"hash":"5b15c9ade863d1a159a2db8d380eca38","index":{"nums":[0,1,22,0,22,12,0,12],"html_filename":"d_2ec5d9f57d6cf7d0_DesignUnit_py.html","relative_filename":"pyVHDLParser/LanguageModel/DesignUnit.py"}},"d_2ec5d9f57d6cf7d0_Expression_py":{"hash":"e9d0e3fcfefed32b98fe353e2e898529","index":{"nums":[0,1,3,0,3,0,0,0],"html_filename":"d_2ec5d9f57d6cf7d0_Expression_py.html","relative_filename":"pyVHDLParser/LanguageModel/Expression.py"}},"d_2ec5d9f57d6cf7d0_InterfaceItem_py":{"hash":"6671d641f0ea62edecdb19fcbbe8a3cb","index":{"nums":[0,1,13,0,13,0,0,0],"html_filename":"d_2ec5d9f57d6cf7d0_InterfaceItem_py.html","relative_filename":"pyVHDLParser/LanguageModel/InterfaceItem.py"}},"d_2ec5d9f57d6cf7d0_Reference_py":{"hash":"92089a19fed4bcc81ecac9c389199153","index":{"nums":[0,1,8,0,8,0,0,0],"html_filename":"d_2ec5d9f57d6cf7d0_Reference_py.html","relative_filename":"pyVHDLParser/LanguageModel/Reference.py"}},"d_2ec5d9f57d6cf7d0___init___py":{"hash":"5e98321956ed495699c1aab059cd65f5","index":{"nums":[0,1,10,0,10,0,0,0],"html_filename":"d_2ec5d9f57d6cf7d0___init___py.html","relative_filename":"pyVHDLParser/LanguageModel/__init__.py"}},"d_7088383a3b8e3502_NetlistModel_py":{"hash":"0bf4663747a6e77f8cdc71f4de004d50","index":{"nums":[0,1,13,0,13,8,0,8],"html_filename":"d_7088383a3b8e3502_NetlistModel_py.html","relative_filename":"pyVHDLParser/NetlistModel/NetlistModel.py"}},"d_f47952d394f3d296_EventSystem_py":{"hash":"9e2471da1b852525e28bee9c92f93c04","index":{"nums":[0,1,46,0,46,12,0,12],"html_filename":"d_f47952d394f3d296_EventSystem_py.html","relative_filename":"pyVHDLParser/SimulationModel/EventSystem.py"}},"d_f47952d394f3d296_SimulationModel_py":{"hash":"1b49b6137e20279c51efbc5f788ee571","index":{"nums":[0,1,88,0,88,32,0,32],"html_filename":"d_f47952d394f3d296_SimulationModel_py.html","relative_filename":"pyVHDLParser/SimulationModel/SimulationModel.py"}},"d_17500e2f8d5544af_Keywords_py":{"hash":"0974cf0915efef0ec679d904e7c36a57","index":{"nums":[0,1,506,0,6,348,3,5],"html_filename":"d_17500e2f8d5544af_Keywords_py.html","relative_filename":"pyVHDLParser/Token/Keywords.py"}},"d_17500e2f8d5544af_Parser_py":{"hash":"225f78370d74c88ccb7c71eba8eb57e7","index":{"nums":[0,1,394,0,122,296,29,121],"html_filename":"d_17500e2f8d5544af_Parser_py.html","relative_filename":"pyVHDLParser/Token/Parser.py"}},"d_17500e2f8d5544af___init___py":{"hash":"a9e02383bbd0ae657f2c643ffb2ded67","index":{"nums":[0,1,286,0,62,106,6,28],"html_filename":"d_17500e2f8d5544af___init___py.html","relative_filename":"pyVHDLParser/Token/__init__.py"}},"d_401f91dc6b2d969a_Package_py":{"hash":"7d1e4fe7a726083139c92f8e9b3e3470","index":{"nums":[0,1,49,0,49,20,0,20],"html_filename":"d_401f91dc6b2d969a_Package_py.html","relative_filename":"pyVHDLParser/TypeSystem/Package.py"}},"d_401f91dc6b2d969a_TypeSystem_py":{"hash":"f28cc02c5397ef0e5b1bf90fe4842e27","index":{"nums":[0,1,158,2,158,69,0,69],"html_filename":"d_401f91dc6b2d969a_TypeSystem_py.html","relative_filename":"pyVHDLParser/TypeSystem/TypeSystem.py"}},"d_401f91dc6b2d969a_std_py":{"hash":"443adf10f87304df7618cff171c303a0","index":{"nums":[0,1,15,0,15,0,0,0],"html_filename":"d_401f91dc6b2d969a_std_py.html","relative_filename":"pyVHDLParser/TypeSystem/std.py"}},"d_401f91dc6b2d969a_std_logic_1164_py":{"hash":"37a557b835ff78f666f07ab3e187de51","index":{"nums":[0,1,25,0,25,4,0,4],"html_filename":"d_401f91dc6b2d969a_std_logic_1164_py.html","relative_filename":"pyVHDLParser/TypeSystem/std_logic_1164.py"}},"d_defb5b8fc10f8036___init___py":{"hash":"25dd4bd3caa0689541cbeb105dd55991","index":{"nums":[0,1,34,0,0,14,0,0],"html_filename":"d_defb5b8fc10f8036___init___py.html","relative_filename":"pyVHDLParser/__init__.py"}},"d_7b29d5beff92d7fe_ArchitectureTest_py":{"hash":"621a78c80c0d612252cd896a9292e951","index":{"nums":[0,1,27,0,27,4,0,4],"html_filename":"d_7b29d5beff92d7fe_ArchitectureTest_py.html","relative_filename":"test/BlockParserTests/ArchitectureTest.py"}},"d_7b29d5beff92d7fe_EntityTest_py":{"hash":"6848dd5529a2922f1c8743d5cfee5a02","index":{"nums":[0,1,29,0,29,4,0,4],"html_filename":"d_7b29d5beff92d7fe_EntityTest_py.html","relative_filename":"test/BlockParserTests/EntityTest.py"}},"d_7b29d5beff92d7fe_GenericListTest_py":{"hash":"fe63a861de4186265c4fb31fb5008feb","index":{"nums":[0,1,32,0,32,4,0,4],"html_filename":"d_7b29d5beff92d7fe_GenericListTest_py.html","relative_filename":"test/BlockParserTests/GenericListTest.py"}},"d_7b29d5beff92d7fe_LibraryTest_py":{"hash":"2e2c01969c7d57d536afc03d8e4e8a4a","index":{"nums":[0,1,31,0,31,4,0,4],"html_filename":"d_7b29d5beff92d7fe_LibraryTest_py.html","relative_filename":"test/BlockParserTests/LibraryTest.py"}},"d_7b29d5beff92d7fe_PackageBodyTest_py":{"hash":"4656b2edee3faab9bd339b38e32c2f74","index":{"nums":[0,1,29,0,29,4,0,4],"html_filename":"d_7b29d5beff92d7fe_PackageBodyTest_py.html","relative_filename":"test/BlockParserTests/PackageBodyTest.py"}},"d_7b29d5beff92d7fe_PackageTest_py":{"hash":"2dd031451d72ce6d2b2d4e7cf85aaff4","index":{"nums":[0,1,29,0,29,4,0,4],"html_filename":"d_7b29d5beff92d7fe_PackageTest_py.html","relative_filename":"test/BlockParserTests/PackageTest.py"}},"d_7b29d5beff92d7fe_PortListTest_py":{"hash":"38285b7fb591cb5a104b9a08b8a52e19","index":{"nums":[0,1,33,0,33,4,0,4],"html_filename":"d_7b29d5beff92d7fe_PortListTest_py.html","relative_filename":"test/BlockParserTests/PortListTest.py"}},"d_7b29d5beff92d7fe_ProcessTest_py":{"hash":"a1de5048709c32a6ff28219789b83ef0","index":{"nums":[0,1,38,0,38,4,0,4],"html_filename":"d_7b29d5beff92d7fe_ProcessTest_py.html","relative_filename":"test/BlockParserTests/ProcessTest.py"}},"d_7b29d5beff92d7fe_TestSuite_py":{"hash":"f13f18f6a0f12df1cce0d064a3a36e7c","index":{"nums":[0,1,86,0,86,40,0,40],"html_filename":"d_7b29d5beff92d7fe_TestSuite_py.html","relative_filename":"test/BlockParserTests/TestSuite.py"}},"d_7b29d5beff92d7fe_UseTest_py":{"hash":"59f12ea155e5fc4a693090742f71b628","index":{"nums":[0,1,29,0,29,4,0,4],"html_filename":"d_7b29d5beff92d7fe_UseTest_py.html","relative_filename":"test/BlockParserTests/UseTest.py"}},"d_36f028580bb02cc8_Counter_py":{"hash":"62b39c12a30939af7fa7df862b770b34","index":{"nums":[0,1,34,0,34,14,0,14],"html_filename":"d_36f028580bb02cc8_Counter_py.html","relative_filename":"test/Counter.py"}},"d_9714dbcb4984d12f_Test_py":{"hash":"dc602ca73948d1debe91a6057ce5b078","index":{"nums":[0,1,26,0,26,4,0,4],"html_filename":"d_9714dbcb4984d12f_Test_py.html","relative_filename":"test/SimulationModel/Test.py"}},"d_36f028580bb02cc8_TestCase_py":{"hash":"8abf9565704a701dc9464cfc0c97e0c1","index":{"nums":[0,1,5,0,5,0,0,0],"html_filename":"d_36f028580bb02cc8_TestCase_py.html","relative_filename":"test/TestCase.py"}}}} \ No newline at end of file diff --git a/coverage/style.css b/coverage/style.css new file mode 100644 index 000000000..2555fdfee --- /dev/null +++ b/coverage/style.css @@ -0,0 +1,309 @@ +@charset "UTF-8"; +/* Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0 */ +/* For details: https://github.com/nedbat/coveragepy/blob/master/NOTICE.txt */ +/* Don't edit this .css file. Edit the .scss file instead! */ +html, body, h1, h2, h3, p, table, td, th { margin: 0; padding: 0; border: 0; font-weight: inherit; font-style: inherit; font-size: 100%; font-family: inherit; vertical-align: baseline; } + +body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 1em; background: #fff; color: #000; } + +@media (prefers-color-scheme: dark) { body { background: #1e1e1e; } } + +@media (prefers-color-scheme: dark) { body { color: #eee; } } + +html > body { font-size: 16px; } + +a:active, a:focus { outline: 2px dashed #007acc; } + +p { font-size: .875em; line-height: 1.4em; } + +table { border-collapse: collapse; } + +td { vertical-align: top; } + +table tr.hidden { display: none !important; } + +p#no_rows { display: none; font-size: 1.2em; } + +a.nav { text-decoration: none; color: inherit; } + +a.nav:hover { text-decoration: underline; color: inherit; } + +.hidden { display: none; } + +header { background: #f8f8f8; width: 100%; z-index: 2; border-bottom: 1px solid #ccc; } + +@media (prefers-color-scheme: dark) { header { background: black; } } + +@media (prefers-color-scheme: dark) { header { border-color: #333; } } + +header .content { padding: 1rem 3.5rem; } + +header h2 { margin-top: .5em; font-size: 1em; } + +header p.text { margin: .5em 0 -.5em; color: #666; font-style: italic; } + +@media (prefers-color-scheme: dark) { header p.text { color: #aaa; } } + +header.sticky { position: fixed; left: 0; right: 0; height: 2.5em; } + +header.sticky .text { display: none; } + +header.sticky h1, header.sticky h2 { font-size: 1em; margin-top: 0; display: inline-block; } + +header.sticky .content { padding: 0.5rem 3.5rem; } + +header.sticky .content p { font-size: 1em; } + +header.sticky ~ #source { padding-top: 6.5em; } + +main { position: relative; z-index: 1; } + +footer { margin: 1rem 3.5rem; } + +footer .content { padding: 0; color: #666; font-style: italic; } + +@media (prefers-color-scheme: dark) { footer .content { color: #aaa; } } + +#index { margin: 1rem 0 0 3.5rem; } + +h1 { font-size: 1.25em; display: inline-block; } + +#filter_container { float: right; margin: 0 2em 0 0; } + +#filter_container input { width: 10em; padding: 0.2em 0.5em; border: 2px solid #ccc; background: #fff; color: #000; } + +@media (prefers-color-scheme: dark) { #filter_container input { border-color: #444; } } + +@media (prefers-color-scheme: dark) { #filter_container input { background: #1e1e1e; } } + +@media (prefers-color-scheme: dark) { #filter_container input { color: #eee; } } + +#filter_container input:focus { border-color: #007acc; } + +header button { font-family: inherit; font-size: inherit; border: 1px solid; border-radius: .2em; color: inherit; padding: .1em .5em; margin: 1px calc(.1em + 1px); cursor: pointer; border-color: #ccc; } + +@media (prefers-color-scheme: dark) { header button { border-color: #444; } } + +header button:active, header button:focus { outline: 2px dashed #007acc; } + +header button.run { background: #eeffee; } + +@media (prefers-color-scheme: dark) { header button.run { background: #373d29; } } + +header button.run.show_run { background: #dfd; border: 2px solid #00dd00; margin: 0 .1em; } + +@media (prefers-color-scheme: dark) { header button.run.show_run { background: #373d29; } } + +header button.mis { background: #ffeeee; } + +@media (prefers-color-scheme: dark) { header button.mis { background: #4b1818; } } + +header button.mis.show_mis { background: #fdd; border: 2px solid #ff0000; margin: 0 .1em; } + +@media (prefers-color-scheme: dark) { header button.mis.show_mis { background: #4b1818; } } + +header button.exc { background: #f7f7f7; } + +@media (prefers-color-scheme: dark) { header button.exc { background: #333; } } + +header button.exc.show_exc { background: #eee; border: 2px solid #808080; margin: 0 .1em; } + +@media (prefers-color-scheme: dark) { header button.exc.show_exc { background: #333; } } + +header button.par { background: #ffffd5; } + +@media (prefers-color-scheme: dark) { header button.par { background: #650; } } + +header button.par.show_par { background: #ffa; border: 2px solid #bbbb00; margin: 0 .1em; } + +@media (prefers-color-scheme: dark) { header button.par.show_par { background: #650; } } + +#help_panel, #source p .annotate.long { display: none; position: absolute; z-index: 999; background: #ffffcc; border: 1px solid #888; border-radius: .2em; color: #333; padding: .25em .5em; } + +#source p .annotate.long { white-space: normal; float: right; top: 1.75em; right: 1em; height: auto; } + +#help_panel_wrapper { float: right; position: relative; } + +#keyboard_icon { margin: 5px; } + +#help_panel_state { display: none; } + +#help_panel { top: 25px; right: 0; padding: .75em; border: 1px solid #883; color: #333; } + +#help_panel .keyhelp p { margin-top: .75em; } + +#help_panel .legend { font-style: italic; margin-bottom: 1em; } + +.indexfile #help_panel { width: 25em; } + +.pyfile #help_panel { width: 18em; } + +#help_panel_state:checked ~ #help_panel { display: block; } + +kbd { border: 1px solid black; border-color: #888 #333 #333 #888; padding: .1em .35em; font-family: SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-weight: bold; background: #eee; border-radius: 3px; } + +#source { padding: 1em 0 1em 3.5rem; font-family: SFMono-Regular, Menlo, Monaco, Consolas, monospace; } + +#source p { position: relative; white-space: pre; } + +#source p * { box-sizing: border-box; } + +#source p .n { float: left; text-align: right; width: 3.5rem; box-sizing: border-box; margin-left: -3.5rem; padding-right: 1em; color: #999; user-select: none; } + +@media (prefers-color-scheme: dark) { #source p .n { color: #777; } } + +#source p .n.highlight { background: #ffdd00; } + +#source p .n a { margin-top: -4em; padding-top: 4em; text-decoration: none; color: #999; } + +@media (prefers-color-scheme: dark) { #source p .n a { color: #777; } } + +#source p .n a:hover { text-decoration: underline; color: #999; } + +@media (prefers-color-scheme: dark) { #source p .n a:hover { color: #777; } } + +#source p .t { display: inline-block; width: 100%; box-sizing: border-box; margin-left: -.5em; padding-left: 0.3em; border-left: 0.2em solid #fff; } + +@media (prefers-color-scheme: dark) { #source p .t { border-color: #1e1e1e; } } + +#source p .t:hover { background: #f2f2f2; } + +@media (prefers-color-scheme: dark) { #source p .t:hover { background: #282828; } } + +#source p .t:hover ~ .r .annotate.long { display: block; } + +#source p .t .com { color: #008000; font-style: italic; line-height: 1px; } + +@media (prefers-color-scheme: dark) { #source p .t .com { color: #6a9955; } } + +#source p .t .key { font-weight: bold; line-height: 1px; } + +#source p .t .str { color: #0451a5; } + +@media (prefers-color-scheme: dark) { #source p .t .str { color: #9cdcfe; } } + +#source p.mis .t { border-left: 0.2em solid #ff0000; } + +#source p.mis.show_mis .t { background: #fdd; } + +@media (prefers-color-scheme: dark) { #source p.mis.show_mis .t { background: #4b1818; } } + +#source p.mis.show_mis .t:hover { background: #f2d2d2; } + +@media (prefers-color-scheme: dark) { #source p.mis.show_mis .t:hover { background: #532323; } } + +#source p.run .t { border-left: 0.2em solid #00dd00; } + +#source p.run.show_run .t { background: #dfd; } + +@media (prefers-color-scheme: dark) { #source p.run.show_run .t { background: #373d29; } } + +#source p.run.show_run .t:hover { background: #d2f2d2; } + +@media (prefers-color-scheme: dark) { #source p.run.show_run .t:hover { background: #404633; } } + +#source p.exc .t { border-left: 0.2em solid #808080; } + +#source p.exc.show_exc .t { background: #eee; } + +@media (prefers-color-scheme: dark) { #source p.exc.show_exc .t { background: #333; } } + +#source p.exc.show_exc .t:hover { background: #e2e2e2; } + +@media (prefers-color-scheme: dark) { #source p.exc.show_exc .t:hover { background: #3c3c3c; } } + +#source p.par .t { border-left: 0.2em solid #bbbb00; } + +#source p.par.show_par .t { background: #ffa; } + +@media (prefers-color-scheme: dark) { #source p.par.show_par .t { background: #650; } } + +#source p.par.show_par .t:hover { background: #f2f2a2; } + +@media (prefers-color-scheme: dark) { #source p.par.show_par .t:hover { background: #6d5d0c; } } + +#source p .r { position: absolute; top: 0; right: 2.5em; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; } + +#source p .annotate { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; color: #666; padding-right: .5em; } + +@media (prefers-color-scheme: dark) { #source p .annotate { color: #ddd; } } + +#source p .annotate.short:hover ~ .long { display: block; } + +#source p .annotate.long { width: 30em; right: 2.5em; } + +#source p input { display: none; } + +#source p input ~ .r label.ctx { cursor: pointer; border-radius: .25em; } + +#source p input ~ .r label.ctx::before { content: "▶ "; } + +#source p input ~ .r label.ctx:hover { background: #e8f4ff; color: #666; } + +@media (prefers-color-scheme: dark) { #source p input ~ .r label.ctx:hover { background: #0f3a42; } } + +@media (prefers-color-scheme: dark) { #source p input ~ .r label.ctx:hover { color: #aaa; } } + +#source p input:checked ~ .r label.ctx { background: #d0e8ff; color: #666; border-radius: .75em .75em 0 0; padding: 0 .5em; margin: -.25em 0; } + +@media (prefers-color-scheme: dark) { #source p input:checked ~ .r label.ctx { background: #056; } } + +@media (prefers-color-scheme: dark) { #source p input:checked ~ .r label.ctx { color: #aaa; } } + +#source p input:checked ~ .r label.ctx::before { content: "▼ "; } + +#source p input:checked ~ .ctxs { padding: .25em .5em; overflow-y: scroll; max-height: 10.5em; } + +#source p label.ctx { color: #999; display: inline-block; padding: 0 .5em; font-size: .8333em; } + +@media (prefers-color-scheme: dark) { #source p label.ctx { color: #777; } } + +#source p .ctxs { display: block; max-height: 0; overflow-y: hidden; transition: all .2s; padding: 0 .5em; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; white-space: nowrap; background: #d0e8ff; border-radius: .25em; margin-right: 1.75em; text-align: right; } + +@media (prefers-color-scheme: dark) { #source p .ctxs { background: #056; } } + +#index { font-family: SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-size: 0.875em; } + +#index table.index { margin-left: -.5em; } + +#index td, #index th { text-align: right; width: 5em; padding: .25em .5em; border-bottom: 1px solid #eee; } + +@media (prefers-color-scheme: dark) { #index td, #index th { border-color: #333; } } + +#index td.name, #index th.name { text-align: left; width: auto; } + +#index th { font-style: italic; color: #333; cursor: pointer; } + +@media (prefers-color-scheme: dark) { #index th { color: #ddd; } } + +#index th:hover { background: #eee; } + +@media (prefers-color-scheme: dark) { #index th:hover { background: #333; } } + +#index th[aria-sort="ascending"], #index th[aria-sort="descending"] { white-space: nowrap; background: #eee; padding-left: .5em; } + +@media (prefers-color-scheme: dark) { #index th[aria-sort="ascending"], #index th[aria-sort="descending"] { background: #333; } } + +#index th[aria-sort="ascending"]::after { font-family: sans-serif; content: " ↑"; } + +#index th[aria-sort="descending"]::after { font-family: sans-serif; content: " ↓"; } + +#index td.name a { text-decoration: none; color: inherit; } + +#index tr.total td, #index tr.total_dynamic td { font-weight: bold; border-top: 1px solid #ccc; border-bottom: none; } + +#index tr.file:hover { background: #eee; } + +@media (prefers-color-scheme: dark) { #index tr.file:hover { background: #333; } } + +#index tr.file:hover td.name { text-decoration: underline; color: inherit; } + +#scroll_marker { position: fixed; z-index: 3; right: 0; top: 0; width: 16px; height: 100%; background: #fff; border-left: 1px solid #eee; will-change: transform; } + +@media (prefers-color-scheme: dark) { #scroll_marker { background: #1e1e1e; } } + +@media (prefers-color-scheme: dark) { #scroll_marker { border-color: #333; } } + +#scroll_marker .marker { background: #ccc; position: absolute; min-height: 3px; width: 100%; } + +@media (prefers-color-scheme: dark) { #scroll_marker .marker { background: #444; } } diff --git a/genindex.html b/genindex.html new file mode 100644 index 000000000..1dd600e1c --- /dev/null +++ b/genindex.html @@ -0,0 +1,15552 @@ + + + + + + Index — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ + +

Index

+ +
+ Symbols + | _ + | A + | B + | C + | D + | E + | F + | G + | H + | I + | K + | L + | M + | N + | O + | P + | Q + | R + | S + | T + | U + | V + | W + | X + +
+

Symbols

+ + + +
+ +

_

+ + + +
+ +

A

+ + + +
+ +

B

+ + + +
+ +

C

+ + + +
+ +

D

+ + + +
+ +

E

+ + + +
+ +

F

+ + + +
+ +

G

+ + + +
+ +

H

+ + + +
+ +

I

+ + + +
+ +

K

+ + + +
+ +

L

+ + + +
+ +

M

+ + + +
+ +

N

+ + + +
+ +

O

+ + + +
+ +

P

+ + + +
    +
  • + pyVHDLParser.Blocks.List.GenericMapList + +
  • +
  • + pyVHDLParser.Blocks.List.ParameterList + +
  • +
  • + pyVHDLParser.Blocks.List.PortList + +
  • +
  • + pyVHDLParser.Blocks.List.PortMapList + +
  • +
  • + pyVHDLParser.Blocks.List.SensitivityList + +
  • +
  • + pyVHDLParser.Blocks.Object + +
  • +
  • + pyVHDLParser.Blocks.Object.Constant + +
  • +
  • + pyVHDLParser.Blocks.Object.File + +
  • +
  • + pyVHDLParser.Blocks.Object.SharedVariable + +
  • +
  • + pyVHDLParser.Blocks.Object.Signal + +
  • +
  • + pyVHDLParser.Blocks.Object.Variable + +
  • +
  • + pyVHDLParser.Blocks.Reference + +
  • +
  • + pyVHDLParser.Blocks.Reference.Context + +
  • +
  • + pyVHDLParser.Blocks.Reference.Library + +
  • +
  • + pyVHDLParser.Blocks.Reference.Use + +
  • +
  • + pyVHDLParser.Blocks.Reporting + +
  • +
  • + pyVHDLParser.Blocks.Reporting.Assert + +
  • +
  • + pyVHDLParser.Blocks.Reporting.Report + +
  • +
  • + pyVHDLParser.Blocks.Sequential + +
  • +
  • + pyVHDLParser.Blocks.Sequential.Function + +
  • +
  • + pyVHDLParser.Blocks.Sequential.Package + +
  • +
  • + pyVHDLParser.Blocks.Sequential.PackageBody + +
  • +
  • + pyVHDLParser.Blocks.Sequential.Procedure + +
  • +
  • + pyVHDLParser.Blocks.Sequential.Process + +
  • +
  • + pyVHDLParser.Blocks.Structural + +
  • +
  • + pyVHDLParser.Blocks.Structural.Architecture + +
  • +
  • + pyVHDLParser.Blocks.Structural.Block + +
  • +
  • + pyVHDLParser.Blocks.Structural.Component + +
  • +
  • + pyVHDLParser.Blocks.Structural.Configuration + +
  • +
  • + pyVHDLParser.Blocks.Structural.Entity + +
  • +
  • + pyVHDLParser.Blocks.Type + +
  • +
  • + pyVHDLParser.Blocks.Type.ResolutionIndication + +
  • +
  • + pyVHDLParser.Blocks.Type.Subtype + +
  • +
  • + pyVHDLParser.Blocks.Type.SubtypeIndication + +
  • +
  • + pyVHDLParser.Blocks.Type.Type + +
  • +
  • + pyVHDLParser.CLI + +
  • +
  • + pyVHDLParser.CLI.ANTLR + +
  • +
  • + pyVHDLParser.CLI.Block + +
  • +
  • + pyVHDLParser.CLI.CodeDOM + +
  • +
  • + pyVHDLParser.CLI.GraphML + +
  • +
  • + pyVHDLParser.CLI.Group + +
  • +
  • + pyVHDLParser.CLI.Token + +
  • +
  • + pyVHDLParser.CLI.VHDLParser + +
  • +
  • + pyVHDLParser.Decorators + +
  • +
  • + pyVHDLParser.DocumentModel + +
  • +
  • + pyVHDLParser.DocumentModel.DesignUnit + +
  • +
  • + pyVHDLParser.DocumentModel.DesignUnit.Architecture + +
  • +
  • + pyVHDLParser.DocumentModel.DesignUnit.Context + +
  • +
  • + pyVHDLParser.DocumentModel.DesignUnit.Entity + +
  • +
  • + pyVHDLParser.DocumentModel.DesignUnit.Package + +
  • +
  • + pyVHDLParser.DocumentModel.DesignUnit.PackageBody + +
  • +
  • + pyVHDLParser.DocumentModel.ObjectDeclaration + +
  • +
  • + pyVHDLParser.DocumentModel.Reference + +
  • +
  • + pyVHDLParser.DocumentModel.Sequential + +
  • +
  • + pyVHDLParser.DocumentModel.Sequential.Function + +
  • +
  • + pyVHDLParser.Filters + +
  • +
  • + pyVHDLParser.Filters.Comment + +
  • +
  • + pyVHDLParser.Groups + +
  • +
  • + pyVHDLParser.Groups.Comment + +
  • +
  • + pyVHDLParser.Groups.Concurrent + +
  • +
  • + pyVHDLParser.Groups.DesignUnit + +
  • +
  • + pyVHDLParser.Groups.List + +
  • +
  • + pyVHDLParser.Groups.Object + +
  • +
  • + pyVHDLParser.Groups.Reference + +
  • +
  • + pyVHDLParser.Groups.Sequential + +
  • +
  • + pyVHDLParser.Groups.Sequential.Function + +
  • +
  • + pyVHDLParser.Groups.Sequential.Procedure + +
  • +
  • + pyVHDLParser.Groups.Sequential.Process + +
  • +
  • + pyVHDLParser.LanguageModel + +
  • +
  • + pyVHDLParser.LanguageModel.DesignUnit + +
  • +
  • + pyVHDLParser.LanguageModel.Expression + +
  • +
  • + pyVHDLParser.LanguageModel.InterfaceItem + +
  • +
  • + pyVHDLParser.LanguageModel.Reference + +
  • +
  • + pyVHDLParser.NetlistModel + +
  • +
  • + pyVHDLParser.NetlistModel.NetlistModel + +
  • +
  • + pyVHDLParser.SimulationModel + +
  • +
  • + pyVHDLParser.SimulationModel.EventSystem + +
  • +
  • + pyVHDLParser.SimulationModel.SimulationModel + +
  • +
  • + pyVHDLParser.StyleChecks + +
  • +
  • + pyVHDLParser.Token + +
  • +
  • + pyVHDLParser.Token.Keywords + +
  • +
  • + pyVHDLParser.Token.Parser + +
  • +
  • + pyVHDLParser.TypeSystem + +
  • +
  • + pyVHDLParser.TypeSystem.Package + +
  • +
  • + pyVHDLParser.TypeSystem.std + +
  • +
  • + pyVHDLParser.TypeSystem.std_logic_1164 + +
  • +
  • + pyVHDLParser.TypeSystem.TypeSystem + +
  • +
+ +

Q

+ + +
+ +

R

+ + + +
+ +

S

+ + + +
+ +

T

+ + + +
+ +

U

+ + + +
+ +

V

+ + + +
+ +

W

+ + + +
+ +

X

+ + + +
+ + + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 000000000..843f625aa --- /dev/null +++ b/index.html @@ -0,0 +1,292 @@ + + + + + + + The pyVHDLParser Documentation — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+
+ +

Sourcecode on GitHub GitHub tag (latest SemVer incl. pre-release GitHub release (latest SemVer incl. including pre-releases GitHub release date
+Libraries.io status for latest release Dependent repos (via libraries.io)
+Travis - Build on 'master' PyPI - Tag PyPI - Status PyPI - Python Version
+Codacy - Quality Codacy - Line Coverage Codecov - Branch Coverage Libraries.io SourceRank
+Read the Docs License

+
+
+

The pyVHDLParser Documentation

+

This is a token-stream based parser for VHDL-2008 creating a document object model (DOM).

+
+

Important

+

This package requires Python 3.8+, because it uses some of the latest Python feature for effective code writing:

+ +
+
+

Main Goals

+
    +
  • Parsing

    +
      +
    • Slice an input document into tokens and text blocks which are categorized in groups for fast indexing

    • +
    • Preserve case, whitespace and comments

    • +
    • Recover on parsing errors

    • +
    • Good error reporting / throw exceptions

    • +
    +
  • +
  • Fast Processing

    +
      +
    • Multi-pass parsing and analysis

    • +
    • Delay analysis if not needed for current pass

    • +
    • Link tokens and blocks for fast-forward scanning (triple helix)

    • +
    +
  • +
  • Generic VHDL Language Model

    +
      +
    • Assemble a sourcecode document-object-model (Code-DOM)

    • +
    • Provide an API for code introspection

    • +
    • Provide an API for code modification / transformation

    • +
    +
  • +
+

See chapter Project Goals for details.

+
+
+

Use Cases

+ +
+

See also

+

See chapter Use Cases for details.

+
+
+
+

Parsing Approach

+
    +
  1. Slice an input document into tokens

  2. +
  3. Assemble tokens to text blocks which are categorized

  4. +
  5. Assemble text blocks for fast-forward scanning into groups (indexing)

  6. +
  7. Translate groups into a sourcecode document-object-model (Code-DOM)

  8. +
  9. Provide a generic VHDL language model

  10. +
+
+

See also

+

See chapter Concepts for details.

+
+
+
+

Additional Aims

+
    +
  • A VHDL domain for Sphinx

    +
      +
    • A autodoc plugin for the VHDL domain in Sphinx

    • +
    +
  • +
  • VHDL plugins/extensions for style checkers supported by CI environments

  • +
  • Testing new VHDL language features beyond VHDL-2008/VHDL-2019

  • +
+
+
+

News

+
+

Mar. 2023 - Enhancements

+
+
    +
  • Bumped dependencies to pyVHDLModel and updated interfaces.

  • +
  • CLI entrypoint will be installed as a binary.

  • +
+
+

Jun. 2021 - Enhancements

+
+
    +
  • Added infrastructure to run example code provided in issues as testcase.

  • +
  • New Single-File GitHub Action workflow (pipeline).

  • +
  • Added Dependabot configuration file.

  • +
  • Updated dependencies

    +
      +
    • Sphinx uses now v4.0.2

    • +
    • Removed 2 patched Sphinx extensions &rarr; now using original extensions.

    • +
    +
  • +
  • +
+
+

Nov. 2020 - Test cases

+
+
    +
  • Added testcases for Tokenizer and block generation.

  • +
  • Added first testcases for pass 4 (Code-DOM)

  • +
  • Collect code and branch coverage.

  • +
  • Frontend.py → pyVHDLParser executable installed via pip

  • +
+
+

Dec. 2019 - Major reworks

+
+
    +
  • Reworked and updated documentation.

  • +
  • Implemented a new test frontend.

  • +
+
+

Dec. 2018 - Minor updates

+
+

Fixed some NextToken linking problems.

+
+

Nov. 2017 - New features

+
+

Implemented new features like case statements.

+
+

20.09.2017 - Project started

+
+

Let’s create a new parser in Python to process VHDL code.

+
+
+

Contributors

+ +
+
+

License

+

This library is licensed under Apache License 2.0.

+
+

This document was generated on 12.Jan 2024 - 01:04.

+
+
+
+
+
+
+
+
+
+
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/objects.inv b/objects.inv new file mode 100644 index 000000000..de1494e43 Binary files /dev/null and b/objects.inv differ diff --git a/py-modindex.html b/py-modindex.html new file mode 100644 index 000000000..1e817a0f9 --- /dev/null +++ b/py-modindex.html @@ -0,0 +1,858 @@ + + + + + + Python Module Index — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+
    +
  • »
  • +
  • Python Module Index
  • +
  • +
  • +
+
+
+ +
+
+ + +

Python Module Index

+ +
+ a | + b | + c | + d | + f | + g | + l | + n | + p | + s | + t +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 
+ a
+ pyVHDLParser.ANTLR3 +
    + pyVHDLParser.ANTLR3.VHDLLexer +
    + pyVHDLParser.ANTLR3.VHDLParser +
+ pyVHDLParser.ANTLR4 +
    + pyVHDLParser.ANTLR4.VHDLLexer +
    + pyVHDLParser.ANTLR4.VHDLParser +
    + pyVHDLParser.ANTLR4.VHDLParserVisitor +
    + pyVHDLParser.ANTLR4.Visitor +
 
+ b
+ pyVHDLParser.Base +
+ pyVHDLParser.Blocks +
    + pyVHDLParser.Blocks.Assignment +
    + pyVHDLParser.Blocks.Assignment.SignalAssignment +
    + pyVHDLParser.Blocks.Assignment.VariableAssignment +
    + pyVHDLParser.Blocks.Attribute +
    + pyVHDLParser.Blocks.Attribute.AttributeDeclaration +
    + pyVHDLParser.Blocks.Attribute.AttributeSpecification +
    + pyVHDLParser.Blocks.Comment +
    + pyVHDLParser.Blocks.Common +
    + pyVHDLParser.Blocks.ControlStructure +
    + pyVHDLParser.Blocks.ControlStructure.Case +
    + pyVHDLParser.Blocks.ControlStructure.Exit +
    + pyVHDLParser.Blocks.ControlStructure.ForLoop +
    + pyVHDLParser.Blocks.ControlStructure.If +
    + pyVHDLParser.Blocks.ControlStructure.Next +
    + pyVHDLParser.Blocks.ControlStructure.Null +
    + pyVHDLParser.Blocks.ControlStructure.Return +
    + pyVHDLParser.Blocks.ControlStructure.WhileLoop +
    + pyVHDLParser.Blocks.Exception +
    + pyVHDLParser.Blocks.Expression +
    + pyVHDLParser.Blocks.Generate +
    + pyVHDLParser.Blocks.Generate.CaseGenerate +
    + pyVHDLParser.Blocks.Generate.ForGenerate +
    + pyVHDLParser.Blocks.Generate.IfGenerate +
    + pyVHDLParser.Blocks.Generic +
    + pyVHDLParser.Blocks.Generic1 +
    + pyVHDLParser.Blocks.Instantiation +
    + pyVHDLParser.Blocks.Instantiation.EntityInstantiation +
    + pyVHDLParser.Blocks.Instantiation.FunctionInstantiation +
    + pyVHDLParser.Blocks.Instantiation.PackageInstantiation +
    + pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation +
    + pyVHDLParser.Blocks.InterfaceObject +
    + pyVHDLParser.Blocks.List +
    + pyVHDLParser.Blocks.List.GenericList +
    + pyVHDLParser.Blocks.List.GenericMapList +
    + pyVHDLParser.Blocks.List.ParameterList +
    + pyVHDLParser.Blocks.List.PortList +
    + pyVHDLParser.Blocks.List.PortMapList +
    + pyVHDLParser.Blocks.List.SensitivityList +
    + pyVHDLParser.Blocks.Object +
    + pyVHDLParser.Blocks.Object.Constant +
    + pyVHDLParser.Blocks.Object.File +
    + pyVHDLParser.Blocks.Object.SharedVariable +
    + pyVHDLParser.Blocks.Object.Signal +
    + pyVHDLParser.Blocks.Object.Variable +
    + pyVHDLParser.Blocks.Reference +
    + pyVHDLParser.Blocks.Reference.Context +
    + pyVHDLParser.Blocks.Reference.Library +
    + pyVHDLParser.Blocks.Reference.Use +
    + pyVHDLParser.Blocks.Reporting +
    + pyVHDLParser.Blocks.Reporting.Assert +
    + pyVHDLParser.Blocks.Reporting.Report +
    + pyVHDLParser.Blocks.Sequential +
    + pyVHDLParser.Blocks.Sequential.Function +
    + pyVHDLParser.Blocks.Sequential.Package +
    + pyVHDLParser.Blocks.Sequential.PackageBody +
    + pyVHDLParser.Blocks.Sequential.Procedure +
    + pyVHDLParser.Blocks.Sequential.Process +
    + pyVHDLParser.Blocks.Structural +
    + pyVHDLParser.Blocks.Structural.Architecture +
    + pyVHDLParser.Blocks.Structural.Block +
    + pyVHDLParser.Blocks.Structural.Component +
    + pyVHDLParser.Blocks.Structural.Configuration +
    + pyVHDLParser.Blocks.Structural.Entity +
    + pyVHDLParser.Blocks.Type +
    + pyVHDLParser.Blocks.Type.ResolutionIndication +
    + pyVHDLParser.Blocks.Type.Subtype +
    + pyVHDLParser.Blocks.Type.SubtypeIndication +
    + pyVHDLParser.Blocks.Type.Type +
 
+ c
+ pyVHDLParser.CLI +
    + pyVHDLParser.CLI.ANTLR +
    + pyVHDLParser.CLI.Block +
    + pyVHDLParser.CLI.CodeDOM +
    + pyVHDLParser.CLI.GraphML +
    + pyVHDLParser.CLI.Group +
    + pyVHDLParser.CLI.Token +
    + pyVHDLParser.CLI.VHDLParser +
 
+ d
+ pyVHDLParser.Decorators +
+ pyVHDLParser.DocumentModel +
    + pyVHDLParser.DocumentModel.DesignUnit +
    + pyVHDLParser.DocumentModel.DesignUnit.Architecture +
    + pyVHDLParser.DocumentModel.DesignUnit.Context +
    + pyVHDLParser.DocumentModel.DesignUnit.Entity +
    + pyVHDLParser.DocumentModel.DesignUnit.Package +
    + pyVHDLParser.DocumentModel.DesignUnit.PackageBody +
    + pyVHDLParser.DocumentModel.ObjectDeclaration +
    + pyVHDLParser.DocumentModel.Reference +
    + pyVHDLParser.DocumentModel.Sequential +
    + pyVHDLParser.DocumentModel.Sequential.Function +
 
+ f
+ pyVHDLParser.Filters +
    + pyVHDLParser.Filters.Comment +
 
+ g
+ pyVHDLParser.Groups +
    + pyVHDLParser.Groups.Comment +
    + pyVHDLParser.Groups.Concurrent +
    + pyVHDLParser.Groups.DesignUnit +
    + pyVHDLParser.Groups.List +
    + pyVHDLParser.Groups.Object +
    + pyVHDLParser.Groups.Reference +
    + pyVHDLParser.Groups.Sequential +
    + pyVHDLParser.Groups.Sequential.Function +
    + pyVHDLParser.Groups.Sequential.Procedure +
    + pyVHDLParser.Groups.Sequential.Process +
 
+ l
+ pyVHDLParser.LanguageModel +
    + pyVHDLParser.LanguageModel.DesignUnit +
    + pyVHDLParser.LanguageModel.Expression +
    + pyVHDLParser.LanguageModel.InterfaceItem +
    + pyVHDLParser.LanguageModel.Reference +
 
+ n
+ pyVHDLParser.NetlistModel +
    + pyVHDLParser.NetlistModel.NetlistModel +
 
+ p
+ pyVHDLParser +
 
+ s
+ pyVHDLParser.SimulationModel +
    + pyVHDLParser.SimulationModel.EventSystem +
    + pyVHDLParser.SimulationModel.SimulationModel +
+ pyVHDLParser.StyleChecks +
 
+ t
+ pyVHDLParser.Token +
    + pyVHDLParser.Token.Keywords +
    + pyVHDLParser.Token.Parser +
+ pyVHDLParser.TypeSystem +
    + pyVHDLParser.TypeSystem.Package +
    + pyVHDLParser.TypeSystem.std +
    + pyVHDLParser.TypeSystem.std_logic_1164 +
    + pyVHDLParser.TypeSystem.TypeSystem +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.ANTLR3.VHDLLexer.html b/pyVHDLParser/pyVHDLParser.ANTLR3.VHDLLexer.html new file mode 100644 index 000000000..d586ddbbc --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.ANTLR3.VHDLLexer.html @@ -0,0 +1,142 @@ + + + + + + + pyVHDLParser.ANTLR3.VHDLLexer — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.ANTLR3.VHDLLexer

+
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.ANTLR3.VHDLParser.html b/pyVHDLParser/pyVHDLParser.ANTLR3.VHDLParser.html new file mode 100644 index 000000000..578732dd6 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.ANTLR3.VHDLParser.html @@ -0,0 +1,142 @@ + + + + + + + pyVHDLParser.ANTLR3.VHDLParser — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.ANTLR3.VHDLParser

+
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.ANTLR3.html b/pyVHDLParser/pyVHDLParser.ANTLR3.html new file mode 100644 index 000000000..187db52f8 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.ANTLR3.html @@ -0,0 +1,149 @@ + + + + + + + pyVHDLParser.ANTLR3 — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.ANTLR3

+

Submodules

+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.ANTLR4.VHDLLexer.html b/pyVHDLParser/pyVHDLParser.ANTLR4.VHDLLexer.html new file mode 100644 index 000000000..649efdea7 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.ANTLR4.VHDLLexer.html @@ -0,0 +1,171 @@ + + + + + + + pyVHDLParser.ANTLR4.VHDLLexer — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.ANTLR4.VHDLLexer

+
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.ANTLR4.VHDLParser.html b/pyVHDLParser/pyVHDLParser.ANTLR4.VHDLParser.html new file mode 100644 index 000000000..998853d68 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.ANTLR4.VHDLParser.html @@ -0,0 +1,171 @@ + + + + + + + pyVHDLParser.ANTLR4.VHDLParser — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.ANTLR4.VHDLParser

+
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.ANTLR4.VHDLParserVisitor.html b/pyVHDLParser/pyVHDLParser.ANTLR4.VHDLParserVisitor.html new file mode 100644 index 000000000..7ded51470 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.ANTLR4.VHDLParserVisitor.html @@ -0,0 +1,171 @@ + + + + + + + pyVHDLParser.ANTLR4.VHDLParserVisitor — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.ANTLR4.VHDLParserVisitor

+
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.ANTLR4.Visitor.html b/pyVHDLParser/pyVHDLParser.ANTLR4.Visitor.html new file mode 100644 index 000000000..110c7b3a4 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.ANTLR4.Visitor.html @@ -0,0 +1,171 @@ + + + + + + + pyVHDLParser.ANTLR4.Visitor — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.ANTLR4.Visitor

+
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.ANTLR4.html b/pyVHDLParser/pyVHDLParser.ANTLR4.html new file mode 100644 index 000000000..4ee71febe --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.ANTLR4.html @@ -0,0 +1,179 @@ + + + + + + + pyVHDLParser.ANTLR4 — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.ANTLR4

+

Submodules

+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Base.html b/pyVHDLParser/pyVHDLParser.Base.html new file mode 100644 index 000000000..c5cdd6b7a --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Base.html @@ -0,0 +1,169 @@ + + + + + + + Python Class Reference — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Python Class Reference

+

Reference of all packages and modules:

+
+
+
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.Assignment.SignalAssignment.html b/pyVHDLParser/pyVHDLParser.Blocks.Assignment.SignalAssignment.html new file mode 100644 index 000000000..438d2d81d --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.Assignment.SignalAssignment.html @@ -0,0 +1,340 @@ + + + + + + + pyVHDLParser.Blocks.Assignment.SignalAssignment — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.Assignment.SignalAssignment

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Blocks.Assignment.SignalAssignment.SignalAssignmentBlock[source]
+

Inheritance

+
+

Inheritance diagram of SignalAssignmentBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.Assignment.VariableAssignment.html b/pyVHDLParser/pyVHDLParser.Blocks.Assignment.VariableAssignment.html new file mode 100644 index 000000000..06d2f87db --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.Assignment.VariableAssignment.html @@ -0,0 +1,340 @@ + + + + + + + pyVHDLParser.Blocks.Assignment.VariableAssignment — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.Assignment.VariableAssignment

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Blocks.Assignment.VariableAssignment.SignalAssignmentBlock[source]
+

Inheritance

+
+

Inheritance diagram of SignalAssignmentBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.Assignment.html b/pyVHDLParser/pyVHDLParser.Blocks.Assignment.html new file mode 100644 index 000000000..0e12f20d2 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.Assignment.html @@ -0,0 +1,212 @@ + + + + + + + pyVHDLParser.Blocks.Assignment — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.Assignment

+

Submodules

+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.Attribute.AttributeDeclaration.html b/pyVHDLParser/pyVHDLParser.Blocks.Attribute.AttributeDeclaration.html new file mode 100644 index 000000000..768c73028 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.Attribute.AttributeDeclaration.html @@ -0,0 +1,340 @@ + + + + + + + pyVHDLParser.Blocks.Attribute.AttributeDeclaration — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.Attribute.AttributeDeclaration

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Blocks.Attribute.AttributeDeclaration.AttributeDeclarationBlock[source]
+

Inheritance

+
+

Inheritance diagram of AttributeDeclarationBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.Attribute.AttributeSpecification.html b/pyVHDLParser/pyVHDLParser.Blocks.Attribute.AttributeSpecification.html new file mode 100644 index 000000000..3acd84331 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.Attribute.AttributeSpecification.html @@ -0,0 +1,340 @@ + + + + + + + pyVHDLParser.Blocks.Attribute.AttributeSpecification — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.Attribute.AttributeSpecification

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Blocks.Attribute.AttributeSpecification.AttributeSpecificationBlock[source]
+

Inheritance

+
+

Inheritance diagram of AttributeSpecificationBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.Attribute.html b/pyVHDLParser/pyVHDLParser.Blocks.Attribute.html new file mode 100644 index 000000000..569ad191f --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.Attribute.html @@ -0,0 +1,212 @@ + + + + + + + pyVHDLParser.Blocks.Attribute — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.Attribute

+

Submodules

+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.Comment.html b/pyVHDLParser/pyVHDLParser.Blocks.Comment.html new file mode 100644 index 000000000..47c573b1f --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.Comment.html @@ -0,0 +1,468 @@ + + + + + + + pyVHDLParser.Blocks.Comment — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.Comment

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Blocks.Comment.SingleLineCommentBlock[source]
+

Inheritance

+
+

Inheritance diagram of SingleLineCommentBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Comment.MultiLineCommentBlock[source]
+

Inheritance

+
+

Inheritance diagram of MultiLineCommentBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.Common.html b/pyVHDLParser/pyVHDLParser.Blocks.Common.html new file mode 100644 index 000000000..15ea8ffb2 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.Common.html @@ -0,0 +1,668 @@ + + + + + + + pyVHDLParser.Blocks.Common — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.Common

+

Classes

+
    +
  • WhitespaceBlock: +Base-class for blocks that can be skipped in fast-forward scanning.

  • +
  • LinebreakBlock: +Base-class for blocks that can be skipped in fast-forward scanning.

  • +
  • EmptyLineBlock: +Base-class for blocks that can be skipped in fast-forward scanning.

  • +
  • IndentationBlock: +Base-class for blocks that can be skipped in fast-forward scanning.

  • +
+
+

Classes

+
+
+class pyVHDLParser.Blocks.Common.WhitespaceBlock[source]
+

Inheritance

+
+

Inheritance diagram of WhitespaceBlock

+
+
+__init__(previousBlock, startToken)[source]
+

Base-class constructor for a new block instance.

+
+ +
+
+__repr__()[source]
+

Return repr(self).

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Common.LinebreakBlock[source]
+

Inheritance

+
+

Inheritance diagram of LinebreakBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken)
+

Base-class constructor for a new block instance.

+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Common.EmptyLineBlock[source]
+

Inheritance

+
+

Inheritance diagram of EmptyLineBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken)
+

Base-class constructor for a new block instance.

+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Common.IndentationBlock[source]
+

Inheritance

+
+

Inheritance diagram of IndentationBlock

+
+
+__repr__()[source]
+

Return repr(self).

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken)
+

Base-class constructor for a new block instance.

+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.Case.html b/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.Case.html new file mode 100644 index 000000000..8b4d6923f --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.Case.html @@ -0,0 +1,1162 @@ + + + + + + + pyVHDLParser.Blocks.ControlStructure.Case — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.ControlStructure.Case

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Blocks.ControlStructure.Case.EndBlock[source]
+

Inheritance

+
+

Inheritance diagram of EndBlock

+
+
+KEYWORD
+

alias of CaseKeyword

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.ControlStructure.Case.ArrowBlock[source]
+

Inheritance

+
+

Inheritance diagram of ArrowBlock

+
+
+END_BLOCK
+

alias of EndBlock

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.ControlStructure.Case.WhenExpressionBlock[source]
+

Inheritance

+
+

Inheritance diagram of WhenExpressionBlock

+
+
+EXIT_TOKEN
+

alias of MapAssociationKeyword

+
+ +
+
+EXIT_BLOCK
+

alias of ArrowBlock

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.ControlStructure.Case.WhenBlock[source]
+

Inheritance

+
+

Inheritance diagram of WhenBlock

+
+
+END_BLOCK
+

alias of EndBlock

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.ControlStructure.Case.IsBlock[source]
+

Inheritance

+
+

Inheritance diagram of IsBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.ControlStructure.Case.CaseExpressionBlock[source]
+

Inheritance

+
+

Inheritance diagram of CaseExpressionBlock

+
+
+EXIT_KEYWORD
+

alias of IsKeyword

+
+ +
+
+EXIT_BLOCK
+

alias of IsBlock

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.ControlStructure.Case.CaseBlock[source]
+

Inheritance

+
+

Inheritance diagram of CaseBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.Exit.html b/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.Exit.html new file mode 100644 index 000000000..d13d50eb6 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.Exit.html @@ -0,0 +1,610 @@ + + + + + + + pyVHDLParser.Blocks.ControlStructure.Exit — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.ControlStructure.Exit

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Blocks.ControlStructure.Exit.EndBlock[source]
+

Inheritance

+
+

Inheritance diagram of EndBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.ControlStructure.Exit.ExitConditionBlock[source]
+

Inheritance

+
+

Inheritance diagram of ExitConditionBlock

+
+
+END_BLOCK
+

alias of EndBlock

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.ControlStructure.Exit.ExitBlock[source]
+

Inheritance

+
+

Inheritance diagram of ExitBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.ForLoop.html b/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.ForLoop.html new file mode 100644 index 000000000..c7051e309 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.ForLoop.html @@ -0,0 +1,1027 @@ + + + + + + + pyVHDLParser.Blocks.ControlStructure.ForLoop — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.ControlStructure.ForLoop

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Blocks.ControlStructure.ForLoop.IteratorBlock[source]
+

Inheritance

+
+

Inheritance diagram of IteratorBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.ControlStructure.ForLoop.EndBlock[source]
+

Inheritance

+
+

Inheritance diagram of EndBlock

+
+
+KEYWORD
+

alias of ForKeyword

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.ControlStructure.ForLoop.LoopBlock[source]
+

Inheritance

+
+

Inheritance diagram of LoopBlock

+
+
+END_BLOCK
+

alias of EndBlock

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.ControlStructure.ForLoop.ExpressionBlockEndedByLoopORToORDownto[source]
+

Inheritance

+
+

Inheritance diagram of ExpressionBlockEndedByLoopORToORDownto

+
+
+EXIT_KEYWORD
+

alias of LoopKeyword

+
+ +
+
+EXIT_BLOCK
+

alias of LoopBlock

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.ControlStructure.ForLoop.ExpressionBlockEndedByLoop[source]
+

Inheritance

+
+

Inheritance diagram of ExpressionBlockEndedByLoop

+
+
+EXIT_KEYWORD
+

alias of LoopKeyword

+
+ +
+
+EXIT_BLOCK
+

alias of LoopBlock

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.ControlStructure.ForLoop.LoopIterationDirectionBlock[source]
+

Inheritance

+
+

Inheritance diagram of LoopIterationDirectionBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.If.html b/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.If.html new file mode 100644 index 000000000..95a81bb47 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.If.html @@ -0,0 +1,1021 @@ + + + + + + + pyVHDLParser.Blocks.ControlStructure.If — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.ControlStructure.If

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Blocks.ControlStructure.If.EndBlock[source]
+

Inheritance

+
+

Inheritance diagram of EndBlock

+
+
+KEYWORD
+

alias of IfKeyword

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.ControlStructure.If.ThenBlock[source]
+

Inheritance

+
+

Inheritance diagram of ThenBlock

+
+
+END_BLOCK
+

alias of EndBlock

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.ControlStructure.If.ElseBlock[source]
+

Inheritance

+
+

Inheritance diagram of ElseBlock

+
+
+END_BLOCK
+

alias of EndBlock

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.ControlStructure.If.ExpressionBlockEndedByThen[source]
+

Inheritance

+
+

Inheritance diagram of ExpressionBlockEndedByThen

+
+
+EXIT_KEYWORD
+

alias of ThenKeyword

+
+ +
+
+EXIT_BLOCK
+

alias of ThenBlock

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.ControlStructure.If.IfConditionBlock[source]
+

Inheritance

+
+

Inheritance diagram of IfConditionBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.ControlStructure.If.ElsIfConditionBlock[source]
+

Inheritance

+
+

Inheritance diagram of ElsIfConditionBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.Next.html b/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.Next.html new file mode 100644 index 000000000..9e53a7619 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.Next.html @@ -0,0 +1,610 @@ + + + + + + + pyVHDLParser.Blocks.ControlStructure.Next — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.ControlStructure.Next

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Blocks.ControlStructure.Next.EndBlock[source]
+

Inheritance

+
+

Inheritance diagram of EndBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.ControlStructure.Next.NextConditionBlock[source]
+

Inheritance

+
+

Inheritance diagram of NextConditionBlock

+
+
+END_BLOCK
+

alias of EndBlock

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.ControlStructure.Next.NextBlock[source]
+

Inheritance

+
+

Inheritance diagram of NextBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.Null.html b/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.Null.html new file mode 100644 index 000000000..f6dee752c --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.Null.html @@ -0,0 +1,475 @@ + + + + + + + pyVHDLParser.Blocks.ControlStructure.Null — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.ControlStructure.Null

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Blocks.ControlStructure.Null.EndBlock[source]
+

Inheritance

+
+

Inheritance diagram of EndBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.ControlStructure.Null.NullBlock[source]
+

Inheritance

+
+

Inheritance diagram of NullBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.Return.html b/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.Return.html new file mode 100644 index 000000000..13173de58 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.Return.html @@ -0,0 +1,610 @@ + + + + + + + pyVHDLParser.Blocks.ControlStructure.Return — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.ControlStructure.Return

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Blocks.ControlStructure.Return.EndBlock[source]
+

Inheritance

+
+

Inheritance diagram of EndBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.ControlStructure.Return.ReturnExpressionBlock[source]
+

Inheritance

+
+

Inheritance diagram of ReturnExpressionBlock

+
+
+END_BLOCK
+

alias of EndBlock

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.ControlStructure.Return.ReturnBlock[source]
+

Inheritance

+
+

Inheritance diagram of ReturnBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.WhileLoop.html b/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.WhileLoop.html new file mode 100644 index 000000000..a00721a2b --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.WhileLoop.html @@ -0,0 +1,481 @@ + + + + + + + pyVHDLParser.Blocks.ControlStructure.WhileLoop — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.ControlStructure.WhileLoop

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Blocks.ControlStructure.WhileLoop.ConditionBlock[source]
+

Inheritance

+
+

Inheritance diagram of ConditionBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.ControlStructure.WhileLoop.EndBlock[source]
+

Inheritance

+
+

Inheritance diagram of EndBlock

+
+
+KEYWORD
+

alias of LoopKeyword

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.html b/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.html new file mode 100644 index 000000000..2ce241fa9 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.html @@ -0,0 +1,224 @@ + + + + + + + pyVHDLParser.Blocks.ControlStructure — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ + +
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.Exception.html b/pyVHDLParser/pyVHDLParser.Blocks.Exception.html new file mode 100644 index 000000000..a353eab5a --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.Exception.html @@ -0,0 +1,201 @@ + + + + + + + pyVHDLParser.Blocks.Exception — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.Exception

+
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.Expression.html b/pyVHDLParser/pyVHDLParser.Blocks.Expression.html new file mode 100644 index 000000000..7d0e08081 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.Expression.html @@ -0,0 +1,988 @@ + + + + + + + pyVHDLParser.Blocks.Expression — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.Expression

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Blocks.Expression.ExpressionBlock[source]
+

Inheritance

+
+

Inheritance diagram of ExpressionBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByCharORClosingRoundBracket[source]
+

Inheritance

+
+

Inheritance diagram of ExpressionBlockEndedByCharORClosingRoundBracket

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByKeywordORClosingRoundBracket[source]
+

Inheritance

+
+

Inheritance diagram of ExpressionBlockEndedByKeywordORClosingRoundBracket

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByToOrDownto[source]
+

Inheritance

+
+

Inheritance diagram of ExpressionBlockEndedByToOrDownto

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByKeywordOrToOrDownto[source]
+

Inheritance

+
+

Inheritance diagram of ExpressionBlockEndedByKeywordOrToOrDownto

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Expression.ExpressionBlockEndedBySemicolon[source]
+

Inheritance

+
+

Inheritance diagram of ExpressionBlockEndedBySemicolon

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.Generate.CaseGenerate.html b/pyVHDLParser/pyVHDLParser.Blocks.Generate.CaseGenerate.html new file mode 100644 index 000000000..332c1a7e0 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.Generate.CaseGenerate.html @@ -0,0 +1,606 @@ + + + + + + + pyVHDLParser.Blocks.Generate.CaseGenerate — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.Generate.CaseGenerate

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Blocks.Generate.CaseGenerate.CaseBlock[source]
+

Inheritance

+
+

Inheritance diagram of CaseBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Generate.CaseGenerate.BeginBlock[source]
+

Inheritance

+
+

Inheritance diagram of BeginBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Generate.CaseGenerate.EndGenerateBlock[source]
+

Inheritance

+
+

Inheritance diagram of EndGenerateBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+KEYWORD
+

alias of GenerateKeyword

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.Generate.ForGenerate.html b/pyVHDLParser/pyVHDLParser.Blocks.Generate.ForGenerate.html new file mode 100644 index 000000000..a6417833e --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.Generate.ForGenerate.html @@ -0,0 +1,606 @@ + + + + + + + pyVHDLParser.Blocks.Generate.ForGenerate — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.Generate.ForGenerate

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Blocks.Generate.ForGenerate.RangeBlock[source]
+

Inheritance

+
+

Inheritance diagram of RangeBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Generate.ForGenerate.BeginBlock[source]
+

Inheritance

+
+

Inheritance diagram of BeginBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Generate.ForGenerate.EndGenerateBlock[source]
+

Inheritance

+
+

Inheritance diagram of EndGenerateBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+KEYWORD
+

alias of GenerateKeyword

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.Generate.IfGenerate.html b/pyVHDLParser/pyVHDLParser.Blocks.Generate.IfGenerate.html new file mode 100644 index 000000000..1d08cc8ef --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.Generate.IfGenerate.html @@ -0,0 +1,1122 @@ + + + + + + + pyVHDLParser.Blocks.Generate.IfGenerate — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.Generate.IfGenerate

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Blocks.Generate.IfGenerate.IfConditionBlock[source]
+

Inheritance

+
+

Inheritance diagram of IfConditionBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Generate.IfGenerate.BeginBlock[source]
+

Inheritance

+
+

Inheritance diagram of BeginBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Generate.IfGenerate.ElsIfConditionBlock[source]
+

Inheritance

+
+

Inheritance diagram of ElsIfConditionBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Generate.IfGenerate.ElsIfBeginBlock[source]
+

Inheritance

+
+

Inheritance diagram of ElsIfBeginBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Generate.IfGenerate.ElseGenerateBlock[source]
+

Inheritance

+
+

Inheritance diagram of ElseGenerateBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Generate.IfGenerate.ElseGenerateBeginBlock[source]
+

Inheritance

+
+

Inheritance diagram of ElseGenerateBeginBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Generate.IfGenerate.EndGenerateBlock[source]
+

Inheritance

+
+

Inheritance diagram of EndGenerateBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+KEYWORD
+

alias of GenerateKeyword

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.Generate.html b/pyVHDLParser/pyVHDLParser.Blocks.Generate.html new file mode 100644 index 000000000..01579930c --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.Generate.html @@ -0,0 +1,355 @@ + + + + + + + pyVHDLParser.Blocks.Generate — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.Generate

+

Submodules

+ +

Classes

+
    +
  • EndGenerateBlock: +Base-class for blocks that are final in a fast-forward scanning.

  • +
+
+

Classes

+
+
+class pyVHDLParser.Blocks.Generate.EndGenerateBlock[source]
+

Inheritance

+
+

Inheritance diagram of EndGenerateBlock

+
+
+KEYWORD
+

alias of GenerateKeyword

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.Generic.html b/pyVHDLParser/pyVHDLParser.Blocks.Generic.html new file mode 100644 index 000000000..abbd26a32 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.Generic.html @@ -0,0 +1,504 @@ + + + + + + + pyVHDLParser.Blocks.Generic — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.Generic

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Blocks.Generic.DeclarativeRegion[source]
+

Base-class for all declarative region blocks.

+

Inheritance

+
+

Inheritance diagram of DeclarativeRegion

+
+ +
+
+class pyVHDLParser.Blocks.Generic.ConcurrentDeclarativeRegion[source]
+

Base-class for all concurrent declarative region blocks.

+

Inheritance

+
+

Inheritance diagram of ConcurrentDeclarativeRegion

+
+ +
+
+class pyVHDLParser.Blocks.Generic.SequentialDeclarativeRegion[source]
+

Base-class for all sequential declarative region blocks.

+

Inheritance

+
+

Inheritance diagram of SequentialDeclarativeRegion

+
+ +
+
+class pyVHDLParser.Blocks.Generic.ConcurrentBeginBlock[source]
+

Inheritance

+
+

Inheritance diagram of ConcurrentBeginBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Generic.SequentialBeginBlock[source]
+

Inheritance

+
+

Inheritance diagram of SequentialBeginBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.Generic1.html b/pyVHDLParser/pyVHDLParser.Blocks.Generic1.html new file mode 100644 index 000000000..71ead9a50 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.Generic1.html @@ -0,0 +1,728 @@ + + + + + + + pyVHDLParser.Blocks.Generic1 — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.Generic1

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Blocks.Generic1.EndBlock[source]
+

Inheritance

+
+

Inheritance diagram of EndBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Generic1.BeginBlock[source]
+

Inheritance

+
+

Inheritance diagram of BeginBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Generic1.CloseBlock[source]
+

Inheritance

+
+

Inheritance diagram of CloseBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Generic1.EndOfStatementBlock[source]
+

Inheritance

+
+

Inheritance diagram of EndOfStatementBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.Instantiation.EntityInstantiation.html b/pyVHDLParser/pyVHDLParser.Blocks.Instantiation.EntityInstantiation.html new file mode 100644 index 000000000..219b629d1 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.Instantiation.EntityInstantiation.html @@ -0,0 +1,471 @@ + + + + + + + pyVHDLParser.Blocks.Instantiation.EntityInstantiation — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.Instantiation.EntityInstantiation

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Blocks.Instantiation.EntityInstantiation.EntityInstantiationBlock[source]
+

Inheritance

+
+

Inheritance diagram of EntityInstantiationBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Instantiation.EntityInstantiation.EndBlock[source]
+

Inheritance

+
+

Inheritance diagram of EndBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.html b/pyVHDLParser/pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.html new file mode 100644 index 000000000..ee449a75c --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.html @@ -0,0 +1,1503 @@ + + + + + + + pyVHDLParser.Blocks.Instantiation.FunctionInstantiation — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.Instantiation.FunctionInstantiation

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.EntityInstantiationBlock[source]
+

Inheritance

+
+

Inheritance diagram of EntityInstantiationBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapBeginBlock[source]
+

Inheritance

+
+

Inheritance diagram of GenericMapBeginBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapItemBlock[source]
+

Inheritance

+
+

Inheritance diagram of GenericMapItemBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapDelimiterBlock[source]
+

Inheritance

+
+

Inheritance diagram of GenericMapDelimiterBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapEndBlock[source]
+

Inheritance

+
+

Inheritance diagram of GenericMapEndBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapBeginBlock[source]
+

Inheritance

+
+

Inheritance diagram of PortMapBeginBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapItemBlock[source]
+

Inheritance

+
+

Inheritance diagram of PortMapItemBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapDelimiterBlock[source]
+

Inheritance

+
+

Inheritance diagram of PortMapDelimiterBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapEndBlock[source]
+

Inheritance

+
+

Inheritance diagram of PortMapEndBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.EndBlock[source]
+

Inheritance

+
+

Inheritance diagram of EndBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.Instantiation.PackageInstantiation.html b/pyVHDLParser/pyVHDLParser.Blocks.Instantiation.PackageInstantiation.html new file mode 100644 index 000000000..a1344513d --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.Instantiation.PackageInstantiation.html @@ -0,0 +1,1503 @@ + + + + + + + pyVHDLParser.Blocks.Instantiation.PackageInstantiation — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.Instantiation.PackageInstantiation

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Blocks.Instantiation.PackageInstantiation.EntityInstantiationBlock[source]
+

Inheritance

+
+

Inheritance diagram of EntityInstantiationBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapBeginBlock[source]
+

Inheritance

+
+

Inheritance diagram of GenericMapBeginBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapItemBlock[source]
+

Inheritance

+
+

Inheritance diagram of GenericMapItemBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapDelimiterBlock[source]
+

Inheritance

+
+

Inheritance diagram of GenericMapDelimiterBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapEndBlock[source]
+

Inheritance

+
+

Inheritance diagram of GenericMapEndBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapBeginBlock[source]
+

Inheritance

+
+

Inheritance diagram of PortMapBeginBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapItemBlock[source]
+

Inheritance

+
+

Inheritance diagram of PortMapItemBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapDelimiterBlock[source]
+

Inheritance

+
+

Inheritance diagram of PortMapDelimiterBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapEndBlock[source]
+

Inheritance

+
+

Inheritance diagram of PortMapEndBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Instantiation.PackageInstantiation.EndBlock[source]
+

Inheritance

+
+

Inheritance diagram of EndBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.html b/pyVHDLParser/pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.html new file mode 100644 index 000000000..31cc8f715 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.html @@ -0,0 +1,1503 @@ + + + + + + + pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.EntityInstantiationBlock[source]
+

Inheritance

+
+

Inheritance diagram of EntityInstantiationBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapBeginBlock[source]
+

Inheritance

+
+

Inheritance diagram of GenericMapBeginBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapItemBlock[source]
+

Inheritance

+
+

Inheritance diagram of GenericMapItemBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapDelimiterBlock[source]
+

Inheritance

+
+

Inheritance diagram of GenericMapDelimiterBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapEndBlock[source]
+

Inheritance

+
+

Inheritance diagram of GenericMapEndBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapBeginBlock[source]
+

Inheritance

+
+

Inheritance diagram of PortMapBeginBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapItemBlock[source]
+

Inheritance

+
+

Inheritance diagram of PortMapItemBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapDelimiterBlock[source]
+

Inheritance

+
+

Inheritance diagram of PortMapDelimiterBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapEndBlock[source]
+

Inheritance

+
+

Inheritance diagram of PortMapEndBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.EndBlock[source]
+

Inheritance

+
+

Inheritance diagram of EndBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.Instantiation.html b/pyVHDLParser/pyVHDLParser.Blocks.Instantiation.html new file mode 100644 index 000000000..585e823c8 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.Instantiation.html @@ -0,0 +1,216 @@ + + + + + + + pyVHDLParser.Blocks.Instantiation — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.Instantiation

+

Submodules

+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.InterfaceObject.html b/pyVHDLParser/pyVHDLParser.Blocks.InterfaceObject.html new file mode 100644 index 000000000..85f5c7e58 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.InterfaceObject.html @@ -0,0 +1,858 @@ + + + + + + + pyVHDLParser.Blocks.InterfaceObject — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.InterfaceObject

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Blocks.InterfaceObject.InterfaceObjectBlock[source]
+

Inheritance

+
+

Inheritance diagram of InterfaceObjectBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.InterfaceObject.InterfaceConstantBlock[source]
+

Inheritance

+
+

Inheritance diagram of InterfaceConstantBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.InterfaceObject.InterfaceVariableBlock[source]
+

Inheritance

+
+

Inheritance diagram of InterfaceVariableBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.InterfaceObject.InterfaceSignalBlock[source]
+

Inheritance

+
+

Inheritance diagram of InterfaceSignalBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.InterfaceObject.InterfaceTypeBlock[source]
+

Inheritance

+
+

Inheritance diagram of InterfaceTypeBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.List.GenericList.html b/pyVHDLParser/pyVHDLParser.Blocks.List.GenericList.html new file mode 100644 index 000000000..40828fb16 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.List.GenericList.html @@ -0,0 +1,1019 @@ + + + + + + + pyVHDLParser.Blocks.List.GenericList — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.List.GenericList

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Blocks.List.GenericList.CloseBlock[source]
+

Inheritance

+
+

Inheritance diagram of CloseBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.List.GenericList.DelimiterBlock[source]
+

Inheritance

+
+

Inheritance diagram of DelimiterBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.List.GenericList.DefaultValueExpressionBlock[source]
+

Inheritance

+
+

Inheritance diagram of DefaultValueExpressionBlock

+
+
+EXIT_TOKEN
+

alias of DelimiterToken

+
+ +
+
+EXIT_BLOCK
+

alias of DelimiterBlock

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.List.GenericList.GenericListInterfaceConstantBlock[source]
+

Inheritance

+
+

Inheritance diagram of GenericListInterfaceConstantBlock

+
+
+DELIMITER_BLOCK
+

alias of DelimiterBlock

+
+ +
+
+EXPRESSION
+

alias of DefaultValueExpressionBlock

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.List.GenericList.GenericListInterfaceTypeBlock[source]
+

Inheritance

+
+

Inheritance diagram of GenericListInterfaceTypeBlock

+
+
+DELIMITER_BLOCK
+

alias of DelimiterBlock

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.List.GenericList.OpenBlock[source]
+

Inheritance

+
+

Inheritance diagram of OpenBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.List.GenericMapList.html b/pyVHDLParser/pyVHDLParser.Blocks.List.GenericMapList.html new file mode 100644 index 000000000..75e801116 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.List.GenericMapList.html @@ -0,0 +1,731 @@ + + + + + + + pyVHDLParser.Blocks.List.GenericMapList — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.List.GenericMapList

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Blocks.List.GenericMapList.OpenBlock[source]
+

Inheritance

+
+

Inheritance diagram of OpenBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.List.GenericMapList.ItemBlock[source]
+

Inheritance

+
+

Inheritance diagram of ItemBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.List.GenericMapList.DelimiterBlock[source]
+

Inheritance

+
+

Inheritance diagram of DelimiterBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.List.GenericMapList.CloseBlock[source]
+

Inheritance

+
+

Inheritance diagram of CloseBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.List.ParameterList.html b/pyVHDLParser/pyVHDLParser.Blocks.List.ParameterList.html new file mode 100644 index 000000000..caadf5d5d --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.List.ParameterList.html @@ -0,0 +1,1126 @@ + + + + + + + pyVHDLParser.Blocks.List.ParameterList — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.List.ParameterList

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Blocks.List.ParameterList.OpenBlock[source]
+

Inheritance

+
+

Inheritance diagram of OpenBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.List.ParameterList.ItemBlock[source]
+

Inheritance

+
+

Inheritance diagram of ItemBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.List.ParameterList.DelimiterBlock[source]
+

Inheritance

+
+

Inheritance diagram of DelimiterBlock

+
+
+__init__(previousBlock, startToken)[source]
+

Base-class constructor for a new block instance.

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.List.ParameterList.CloseBlock[source]
+

Inheritance

+
+

Inheritance diagram of CloseBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceConstantBlock[source]
+

Inheritance

+
+

Inheritance diagram of ParameterListInterfaceConstantBlock

+
+
+DELIMITER_BLOCK
+

alias of DelimiterBlock

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceVariableBlock[source]
+

Inheritance

+
+

Inheritance diagram of ParameterListInterfaceVariableBlock

+
+
+DELIMITER_BLOCK
+

alias of DelimiterBlock

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceSignalBlock[source]
+

Inheritance

+
+

Inheritance diagram of ParameterListInterfaceSignalBlock

+
+
+DELIMITER_BLOCK
+

alias of DelimiterBlock

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.List.PortList.html b/pyVHDLParser/pyVHDLParser.Blocks.List.PortList.html new file mode 100644 index 000000000..d1a090740 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.List.PortList.html @@ -0,0 +1,884 @@ + + + + + + + pyVHDLParser.Blocks.List.PortList — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.List.PortList

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Blocks.List.PortList.CloseBlock[source]
+

Inheritance

+
+

Inheritance diagram of CloseBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.List.PortList.DelimiterBlock[source]
+

Inheritance

+
+

Inheritance diagram of DelimiterBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.List.PortList.DefaultValueExpressionBlock[source]
+

Inheritance

+
+

Inheritance diagram of DefaultValueExpressionBlock

+
+
+EXIT_TOKEN
+

alias of DelimiterToken

+
+ +
+
+EXIT_BLOCK
+

alias of DelimiterBlock

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.List.PortList.PortListInterfaceSignalBlock[source]
+

Inheritance

+
+

Inheritance diagram of PortListInterfaceSignalBlock

+
+
+DELIMITER_BLOCK
+

alias of DelimiterBlock

+
+ +
+
+EXPRESSION
+

alias of DefaultValueExpressionBlock

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.List.PortList.OpenBlock[source]
+

Inheritance

+
+

Inheritance diagram of OpenBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.List.PortMapList.html b/pyVHDLParser/pyVHDLParser.Blocks.List.PortMapList.html new file mode 100644 index 000000000..a4466ceef --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.List.PortMapList.html @@ -0,0 +1,721 @@ + + + + + + + pyVHDLParser.Blocks.List.PortMapList — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.List.PortMapList

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Blocks.List.PortMapList.OpenBlock[source]
+

Inheritance

+
+

Inheritance diagram of OpenBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.List.PortMapList.ItemBlock[source]
+

Inheritance

+
+

Inheritance diagram of ItemBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.List.PortMapList.DelimiterBlock[source]
+

Inheritance

+
+

Inheritance diagram of DelimiterBlock

+
+
+__init__(previousBlock, startToken)[source]
+

Base-class constructor for a new block instance.

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.List.PortMapList.CloseBlock[source]
+

Inheritance

+
+

Inheritance diagram of CloseBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.List.SensitivityList.html b/pyVHDLParser/pyVHDLParser.Blocks.List.SensitivityList.html new file mode 100644 index 000000000..caa1115e2 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.List.SensitivityList.html @@ -0,0 +1,721 @@ + + + + + + + pyVHDLParser.Blocks.List.SensitivityList — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.List.SensitivityList

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Blocks.List.SensitivityList.OpenBlock[source]
+

Inheritance

+
+

Inheritance diagram of OpenBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.List.SensitivityList.ItemBlock[source]
+

Inheritance

+
+

Inheritance diagram of ItemBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.List.SensitivityList.DelimiterBlock[source]
+

Inheritance

+
+

Inheritance diagram of DelimiterBlock

+
+
+__init__(previousBlock, startToken)[source]
+

Base-class constructor for a new block instance.

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.List.SensitivityList.CloseBlock[source]
+

Inheritance

+
+

Inheritance diagram of CloseBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.List.html b/pyVHDLParser/pyVHDLParser.Blocks.List.html new file mode 100644 index 000000000..23f3080ca --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.List.html @@ -0,0 +1,220 @@ + + + + + + + pyVHDLParser.Blocks.List — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.List

+

Submodules

+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.Object.Constant.html b/pyVHDLParser/pyVHDLParser.Blocks.Object.Constant.html new file mode 100644 index 000000000..aeddbbd8d --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.Object.Constant.html @@ -0,0 +1,621 @@ + + + + + + + pyVHDLParser.Blocks.Object.Constant — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.Object.Constant

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationEndMarkerBlock[source]
+

Inheritance

+
+

Inheritance diagram of ConstantDeclarationEndMarkerBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationDefaultExpressionBlock[source]
+

Inheritance

+
+

Inheritance diagram of ConstantDeclarationDefaultExpressionBlock

+
+
+END_BLOCK
+

alias of ConstantDeclarationEndMarkerBlock

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationBlock[source]
+

Inheritance

+
+

Inheritance diagram of ConstantDeclarationBlock

+
+
+EXPRESSION_BLOCK
+

alias of ConstantDeclarationDefaultExpressionBlock

+
+ +
+
+END_BLOCK
+

alias of ConstantDeclarationEndMarkerBlock

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.Object.File.html b/pyVHDLParser/pyVHDLParser.Blocks.Object.File.html new file mode 100644 index 000000000..19921114f --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.Object.File.html @@ -0,0 +1,211 @@ + + + + + + + pyVHDLParser.Blocks.Object.File — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.Object.File

+
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.Object.SharedVariable.html b/pyVHDLParser/pyVHDLParser.Blocks.Object.SharedVariable.html new file mode 100644 index 000000000..f38988454 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.Object.SharedVariable.html @@ -0,0 +1,480 @@ + + + + + + + pyVHDLParser.Blocks.Object.SharedVariable — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.Object.SharedVariable

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Blocks.Object.SharedVariable.SharedVariableDeclarationEndMarkerBlock[source]
+

Inheritance

+
+

Inheritance diagram of SharedVariableDeclarationEndMarkerBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Object.SharedVariable.SharedVariableDeclarationBlock[source]
+

Inheritance

+
+

Inheritance diagram of SharedVariableDeclarationBlock

+
+
+END_BLOCK
+

alias of SharedVariableDeclarationEndMarkerBlock

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.Object.Signal.html b/pyVHDLParser/pyVHDLParser.Blocks.Object.Signal.html new file mode 100644 index 000000000..f2fd209a9 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.Object.Signal.html @@ -0,0 +1,621 @@ + + + + + + + pyVHDLParser.Blocks.Object.Signal — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.Object.Signal

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Blocks.Object.Signal.SignalDeclarationEndMarkerBlock[source]
+

Inheritance

+
+

Inheritance diagram of SignalDeclarationEndMarkerBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Object.Signal.SignalDeclarationDefaultExpressionBlock[source]
+

Inheritance

+
+

Inheritance diagram of SignalDeclarationDefaultExpressionBlock

+
+
+END_BLOCK
+

alias of SignalDeclarationEndMarkerBlock

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Object.Signal.SignalDeclarationBlock[source]
+

Inheritance

+
+

Inheritance diagram of SignalDeclarationBlock

+
+
+EXPRESSION_BLOCK
+

alias of SignalDeclarationDefaultExpressionBlock

+
+ +
+
+END_BLOCK
+

alias of SignalDeclarationEndMarkerBlock

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.Object.Variable.html b/pyVHDLParser/pyVHDLParser.Blocks.Object.Variable.html new file mode 100644 index 000000000..aa20f8cad --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.Object.Variable.html @@ -0,0 +1,621 @@ + + + + + + + pyVHDLParser.Blocks.Object.Variable — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.Object.Variable

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Blocks.Object.Variable.VariableDeclarationEndMarkerBlock[source]
+

Inheritance

+
+

Inheritance diagram of VariableDeclarationEndMarkerBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Object.Variable.VariableDeclarationDefaultExpressionBlock[source]
+

Inheritance

+
+

Inheritance diagram of VariableDeclarationDefaultExpressionBlock

+
+
+END_BLOCK
+

alias of VariableDeclarationEndMarkerBlock

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Object.Variable.VariableDeclarationBlock[source]
+

Inheritance

+
+

Inheritance diagram of VariableDeclarationBlock

+
+
+EXPRESSION_BLOCK
+

alias of VariableDeclarationDefaultExpressionBlock

+
+ +
+
+END_BLOCK
+

alias of VariableDeclarationEndMarkerBlock

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.Object.html b/pyVHDLParser/pyVHDLParser.Blocks.Object.html new file mode 100644 index 000000000..359d7da55 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.Object.html @@ -0,0 +1,483 @@ + + + + + + + pyVHDLParser.Blocks.Object — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.Object

+

Submodules

+ +

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Blocks.Object.ObjectDeclarationBlock[source]
+

Inheritance

+
+

Inheritance diagram of ObjectDeclarationBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Object.ObjectDeclarationEndMarkerBlock[source]
+

Inheritance

+
+

Inheritance diagram of ObjectDeclarationEndMarkerBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.Reference.Context.html b/pyVHDLParser/pyVHDLParser.Blocks.Reference.Context.html new file mode 100644 index 000000000..e57d72b3d --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.Reference.Context.html @@ -0,0 +1,476 @@ + + + + + + + pyVHDLParser.Blocks.Reference.Context — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.Reference.Context

+

Classes

+
    +
  • NameBlock: +Base-class for all block classes.

  • +
  • EndBlock: +Base-class for blocks that are final in a fast-forward scanning.

  • +
+
+

Classes

+
+
+class pyVHDLParser.Blocks.Reference.Context.NameBlock[source]
+

Inheritance

+
+

Inheritance diagram of NameBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Reference.Context.EndBlock[source]
+

Inheritance

+
+

Inheritance diagram of EndBlock

+
+
+KEYWORD
+

alias of ContextKeyword

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.Reference.Library.html b/pyVHDLParser/pyVHDLParser.Blocks.Reference.Library.html new file mode 100644 index 000000000..20c37b9a2 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.Reference.Library.html @@ -0,0 +1,728 @@ + + + + + + + pyVHDLParser.Blocks.Reference.Library — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.Reference.Library

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Blocks.Reference.Library.StartBlock[source]
+

Inheritance

+
+

Inheritance diagram of StartBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Reference.Library.LibraryNameBlock[source]
+

Inheritance

+
+

Inheritance diagram of LibraryNameBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Reference.Library.DelimiterBlock[source]
+

Inheritance

+
+

Inheritance diagram of DelimiterBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Reference.Library.EndBlock[source]
+

Inheritance

+
+

Inheritance diagram of EndBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.Reference.Use.html b/pyVHDLParser/pyVHDLParser.Blocks.Reference.Use.html new file mode 100644 index 000000000..b30fcd5fd --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.Reference.Use.html @@ -0,0 +1,728 @@ + + + + + + + pyVHDLParser.Blocks.Reference.Use — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.Reference.Use

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Blocks.Reference.Use.StartBlock[source]
+

Inheritance

+
+

Inheritance diagram of StartBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Reference.Use.ReferenceNameBlock[source]
+

Inheritance

+
+

Inheritance diagram of ReferenceNameBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Reference.Use.DelimiterBlock[source]
+

Inheritance

+
+

Inheritance diagram of DelimiterBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Reference.Use.EndBlock[source]
+

Inheritance

+
+

Inheritance diagram of EndBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.Reference.html b/pyVHDLParser/pyVHDLParser.Blocks.Reference.html new file mode 100644 index 000000000..701539f82 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.Reference.html @@ -0,0 +1,214 @@ + + + + + + + pyVHDLParser.Blocks.Reference — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.Reference

+

Submodules

+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.Reporting.Assert.html b/pyVHDLParser/pyVHDLParser.Blocks.Reporting.Assert.html new file mode 100644 index 000000000..98c75e652 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.Reporting.Assert.html @@ -0,0 +1,340 @@ + + + + + + + pyVHDLParser.Blocks.Reporting.Assert — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.Reporting.Assert

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Blocks.Reporting.Assert.AssertBlock[source]
+

Inheritance

+
+

Inheritance diagram of AssertBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.Reporting.Report.html b/pyVHDLParser/pyVHDLParser.Blocks.Reporting.Report.html new file mode 100644 index 000000000..694d2c5b0 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.Reporting.Report.html @@ -0,0 +1,340 @@ + + + + + + + pyVHDLParser.Blocks.Reporting.Report — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.Reporting.Report

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Blocks.Reporting.Report.ReportBlock[source]
+

Inheritance

+
+

Inheritance diagram of ReportBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.Reporting.html b/pyVHDLParser/pyVHDLParser.Blocks.Reporting.html new file mode 100644 index 000000000..1dc662fd8 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.Reporting.html @@ -0,0 +1,212 @@ + + + + + + + pyVHDLParser.Blocks.Reporting — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.Reporting

+

Submodules

+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.Sequential.Function.html b/pyVHDLParser/pyVHDLParser.Blocks.Sequential.Function.html new file mode 100644 index 000000000..189df1c49 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.Sequential.Function.html @@ -0,0 +1,764 @@ + + + + + + + pyVHDLParser.Blocks.Sequential.Function — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.Sequential.Function

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Blocks.Sequential.Function.EndBlock[source]
+

Inheritance

+
+

Inheritance diagram of EndBlock

+
+
+KEYWORD
+

alias of FunctionKeyword

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Sequential.Function.BeginBlock[source]
+

Inheritance

+
+

Inheritance diagram of BeginBlock

+
+
+END_BLOCK
+

alias of EndBlock

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Sequential.Function.DeclarativeRegion[source]
+

Inheritance

+
+

Inheritance diagram of DeclarativeRegion

+
+
+BEGIN_BLOCK
+

alias of BeginBlock

+
+ +
+
+END_BLOCK
+

alias of EndBlock

+
+ +
+ +
+
+class pyVHDLParser.Blocks.Sequential.Function.NameBlock[source]
+

Inheritance

+
+

Inheritance diagram of NameBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Sequential.Function.ReturnTypeBlock[source]
+

Inheritance

+
+

Inheritance diagram of ReturnTypeBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.Sequential.Package.html b/pyVHDLParser/pyVHDLParser.Blocks.Sequential.Package.html new file mode 100644 index 000000000..687ab0152 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.Sequential.Package.html @@ -0,0 +1,494 @@ + + + + + + + pyVHDLParser.Blocks.Sequential.Package — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.Sequential.Package

+

Classes

+
    +
  • EndBlock: +Base-class for blocks that are final in a fast-forward scanning.

  • +
  • DeclarativeRegion: +Base-class for all sequential declarative region blocks.

  • +
  • NameBlock: +Base-class for all block classes.

  • +
+
+

Classes

+
+
+class pyVHDLParser.Blocks.Sequential.Package.EndBlock[source]
+

Inheritance

+
+

Inheritance diagram of EndBlock

+
+
+KEYWORD
+

alias of PackageKeyword

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Sequential.Package.DeclarativeRegion[source]
+

Inheritance

+
+

Inheritance diagram of DeclarativeRegion

+
+
+END_BLOCK
+

alias of EndBlock

+
+ +
+ +
+
+class pyVHDLParser.Blocks.Sequential.Package.NameBlock[source]
+

Inheritance

+
+

Inheritance diagram of NameBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.Sequential.PackageBody.html b/pyVHDLParser/pyVHDLParser.Blocks.Sequential.PackageBody.html new file mode 100644 index 000000000..52b19c375 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.Sequential.PackageBody.html @@ -0,0 +1,488 @@ + + + + + + + pyVHDLParser.Blocks.Sequential.PackageBody — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.Sequential.PackageBody

+

Classes

+
    +
  • EndBlock: +Base-class for blocks that are final in a fast-forward scanning.

  • +
  • DeclarativeRegion: +Base-class for all sequential declarative region blocks.

  • +
  • NameBlock: +Base-class for all block classes.

  • +
+
+

Classes

+
+
+class pyVHDLParser.Blocks.Sequential.PackageBody.EndBlock[source]
+

Inheritance

+
+

Inheritance diagram of EndBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Sequential.PackageBody.DeclarativeRegion[source]
+

Inheritance

+
+

Inheritance diagram of DeclarativeRegion

+
+
+END_BLOCK
+

alias of EndBlock

+
+ +
+ +
+
+class pyVHDLParser.Blocks.Sequential.PackageBody.NameBlock[source]
+

Inheritance

+
+

Inheritance diagram of NameBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.Sequential.Procedure.html b/pyVHDLParser/pyVHDLParser.Blocks.Sequential.Procedure.html new file mode 100644 index 000000000..05059fde9 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.Sequential.Procedure.html @@ -0,0 +1,764 @@ + + + + + + + pyVHDLParser.Blocks.Sequential.Procedure — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.Sequential.Procedure

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Blocks.Sequential.Procedure.EndBlock[source]
+

Inheritance

+
+

Inheritance diagram of EndBlock

+
+
+KEYWORD
+

alias of ProcedureKeyword

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Sequential.Procedure.BeginBlock[source]
+

Inheritance

+
+

Inheritance diagram of BeginBlock

+
+
+END_BLOCK
+

alias of EndBlock

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Sequential.Procedure.DeclarativeRegion[source]
+

Inheritance

+
+

Inheritance diagram of DeclarativeRegion

+
+
+BEGIN_BLOCK
+

alias of BeginBlock

+
+ +
+
+END_BLOCK
+

alias of EndBlock

+
+ +
+ +
+
+class pyVHDLParser.Blocks.Sequential.Procedure.NameBlock[source]
+

Inheritance

+
+

Inheritance diagram of NameBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Sequential.Procedure.VoidBlock[source]
+

Inheritance

+
+

Inheritance diagram of VoidBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.Sequential.Process.html b/pyVHDLParser/pyVHDLParser.Blocks.Sequential.Process.html new file mode 100644 index 000000000..b1782884c --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.Sequential.Process.html @@ -0,0 +1,764 @@ + + + + + + + pyVHDLParser.Blocks.Sequential.Process — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.Sequential.Process

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Blocks.Sequential.Process.EndBlock[source]
+

Inheritance

+
+

Inheritance diagram of EndBlock

+
+
+KEYWORD
+

alias of ProcessKeyword

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Sequential.Process.BeginBlock[source]
+

Inheritance

+
+

Inheritance diagram of BeginBlock

+
+
+END_BLOCK
+

alias of EndBlock

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Sequential.Process.DeclarativeRegion[source]
+

Inheritance

+
+

Inheritance diagram of DeclarativeRegion

+
+
+BEGIN_BLOCK
+

alias of BeginBlock

+
+ +
+
+END_BLOCK
+

alias of EndBlock

+
+ +
+ +
+
+class pyVHDLParser.Blocks.Sequential.Process.OpenBlock[source]
+

Inheritance

+
+

Inheritance diagram of OpenBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Sequential.Process.OpenBlock2[source]
+

Inheritance

+
+

Inheritance diagram of OpenBlock2

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.Sequential.html b/pyVHDLParser/pyVHDLParser.Blocks.Sequential.html new file mode 100644 index 000000000..0303f225b --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.Sequential.html @@ -0,0 +1,218 @@ + + + + + + + pyVHDLParser.Blocks.Sequential — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.Sequential

+

Submodules

+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.Structural.Architecture.html b/pyVHDLParser/pyVHDLParser.Blocks.Structural.Architecture.html new file mode 100644 index 000000000..d9500ad5f --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.Structural.Architecture.html @@ -0,0 +1,635 @@ + + + + + + + pyVHDLParser.Blocks.Structural.Architecture — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.Structural.Architecture

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Blocks.Structural.Architecture.EndBlock[source]
+

Inheritance

+
+

Inheritance diagram of EndBlock

+
+
+KEYWORD
+

alias of ArchitectureKeyword

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Structural.Architecture.BeginBlock[source]
+

Inheritance

+
+

Inheritance diagram of BeginBlock

+
+
+END_BLOCK
+

alias of EndBlock

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Structural.Architecture.DeclarativeRegion[source]
+

Inheritance

+
+

Inheritance diagram of DeclarativeRegion

+
+
+BEGIN_BLOCK
+

alias of BeginBlock

+
+ +
+
+END_BLOCK
+

alias of EndBlock

+
+ +
+ +
+
+class pyVHDLParser.Blocks.Structural.Architecture.NameBlock[source]
+

Inheritance

+
+

Inheritance diagram of NameBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.Structural.Block.html b/pyVHDLParser/pyVHDLParser.Blocks.Structural.Block.html new file mode 100644 index 000000000..8bc61ecda --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.Structural.Block.html @@ -0,0 +1,635 @@ + + + + + + + pyVHDLParser.Blocks.Structural.Block — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.Structural.Block

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Blocks.Structural.Block.EndBlock[source]
+

Inheritance

+
+

Inheritance diagram of EndBlock

+
+
+KEYWORD
+

alias of BlockKeyword

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Structural.Block.BeginBlock[source]
+

Inheritance

+
+

Inheritance diagram of BeginBlock

+
+
+END_BLOCK
+

alias of EndBlock

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Structural.Block.DeclarativeRegion[source]
+

Inheritance

+
+

Inheritance diagram of DeclarativeRegion

+
+
+BEGIN_BLOCK
+

alias of BeginBlock

+
+ +
+
+END_BLOCK
+

alias of EndBlock

+
+ +
+ +
+
+class pyVHDLParser.Blocks.Structural.Block.NameBlock[source]
+

Inheritance

+
+

Inheritance diagram of NameBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.Structural.Component.html b/pyVHDLParser/pyVHDLParser.Blocks.Structural.Component.html new file mode 100644 index 000000000..40ef5e2f3 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.Structural.Component.html @@ -0,0 +1,478 @@ + + + + + + + pyVHDLParser.Blocks.Structural.Component — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.Structural.Component

+

Classes

+
    +
  • NameBlock: +Base-class for all block classes.

  • +
  • EndBlock: +Base-class for blocks that are final in a fast-forward scanning.

  • +
+
+

Classes

+
+
+class pyVHDLParser.Blocks.Structural.Component.NameBlock[source]
+

Inheritance

+
+

Inheritance diagram of NameBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Structural.Component.EndBlock[source]
+

Inheritance

+
+

Inheritance diagram of EndBlock

+
+
+KEYWORD
+

alias of ComponentKeyword

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.Structural.Configuration.html b/pyVHDLParser/pyVHDLParser.Blocks.Structural.Configuration.html new file mode 100644 index 000000000..b57b0d686 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.Structural.Configuration.html @@ -0,0 +1,613 @@ + + + + + + + pyVHDLParser.Blocks.Structural.Configuration — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.Structural.Configuration

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Blocks.Structural.Configuration.NameBlock[source]
+

Inheritance

+
+

Inheritance diagram of NameBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Structural.Configuration.EndBlock[source]
+

Inheritance

+
+

Inheritance diagram of EndBlock

+
+
+KEYWORD
+

alias of ConfigurationKeyword

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Structural.Configuration.BeginBlock[source]
+

Inheritance

+
+

Inheritance diagram of BeginBlock

+
+
+END_BLOCK
+

alias of EndBlock

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.Structural.Entity.html b/pyVHDLParser/pyVHDLParser.Blocks.Structural.Entity.html new file mode 100644 index 000000000..7b9767d55 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.Structural.Entity.html @@ -0,0 +1,635 @@ + + + + + + + pyVHDLParser.Blocks.Structural.Entity — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.Structural.Entity

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Blocks.Structural.Entity.EndBlock[source]
+

Inheritance

+
+

Inheritance diagram of EndBlock

+
+
+KEYWORD
+

alias of EntityKeyword

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Structural.Entity.BeginBlock[source]
+

Inheritance

+
+

Inheritance diagram of BeginBlock

+
+
+END_BLOCK
+

alias of EndBlock

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Structural.Entity.DeclarativeRegion[source]
+

Inheritance

+
+

Inheritance diagram of DeclarativeRegion

+
+
+BEGIN_BLOCK
+

alias of BeginBlock

+
+ +
+
+END_BLOCK
+

alias of EndBlock

+
+ +
+ +
+
+class pyVHDLParser.Blocks.Structural.Entity.NameBlock[source]
+

Inheritance

+
+

Inheritance diagram of NameBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.Structural.html b/pyVHDLParser/pyVHDLParser.Blocks.Structural.html new file mode 100644 index 000000000..e74917ae7 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.Structural.html @@ -0,0 +1,218 @@ + + + + + + + pyVHDLParser.Blocks.Structural — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.Structural

+

Submodules

+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.Type.ResolutionIndication.html b/pyVHDLParser/pyVHDLParser.Blocks.Type.ResolutionIndication.html new file mode 100644 index 000000000..d16438f51 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.Type.ResolutionIndication.html @@ -0,0 +1,600 @@ + + + + + + + pyVHDLParser.Blocks.Type.ResolutionIndication — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.Type.ResolutionIndication

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Blocks.Type.ResolutionIndication.SimpleResolutionIndicationBlock[source]
+

Inheritance

+
+

Inheritance diagram of SimpleResolutionIndicationBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = [<function SimpleResolutionIndicationBlock.stateResolutionFunction>]
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Type.ResolutionIndication.ArrayResolutionIndicationBlock[source]
+

Inheritance

+
+

Inheritance diagram of ArrayResolutionIndicationBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Type.ResolutionIndication.RecordResolutionIndicationBlock[source]
+

Inheritance

+
+

Inheritance diagram of RecordResolutionIndicationBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = [<function RecordResolutionIndicationBlock.stateOpeningParentesis>]
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.Type.Subtype.html b/pyVHDLParser/pyVHDLParser.Blocks.Type.Subtype.html new file mode 100644 index 000000000..8451856c6 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.Type.Subtype.html @@ -0,0 +1,342 @@ + + + + + + + pyVHDLParser.Blocks.Type.Subtype — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.Type.Subtype

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Blocks.Type.Subtype.SubtypeBlock[source]
+

Inheritance

+
+

Inheritance diagram of SubtypeBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.Type.SubtypeIndication.html b/pyVHDLParser/pyVHDLParser.Blocks.Type.SubtypeIndication.html new file mode 100644 index 000000000..06d90d054 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.Type.SubtypeIndication.html @@ -0,0 +1,600 @@ + + + + + + + pyVHDLParser.Blocks.Type.SubtypeIndication — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.Type.SubtypeIndication

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Blocks.Type.SubtypeIndication.SubtypeIndicationBlock[source]
+

Inheritance

+
+

Inheritance diagram of SubtypeIndicationBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Type.SubtypeIndication.ArrayConstrainedSubtypeIndicationBlock[source]
+

Inheritance

+
+

Inheritance diagram of ArrayConstrainedSubtypeIndicationBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.Type.SubtypeIndication.RecordConstrainedSubtypeIndicationBlock[source]
+

Inheritance

+
+

Inheritance diagram of RecordConstrainedSubtypeIndicationBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.Type.Type.html b/pyVHDLParser/pyVHDLParser.Blocks.Type.Type.html new file mode 100644 index 000000000..ad33b3577 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.Type.Type.html @@ -0,0 +1,342 @@ + + + + + + + pyVHDLParser.Blocks.Type.Type — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.Type.Type

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Blocks.Type.Type.TypeBlock[source]
+

Inheritance

+
+

Inheritance diagram of TypeBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.Type.html b/pyVHDLParser/pyVHDLParser.Blocks.Type.html new file mode 100644 index 000000000..d68acdc0a --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.Type.html @@ -0,0 +1,216 @@ + + + + + + + pyVHDLParser.Blocks.Type — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks.Type

+

Submodules

+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Blocks.html b/pyVHDLParser/pyVHDLParser.Blocks.html new file mode 100644 index 000000000..1c9e036d5 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Blocks.html @@ -0,0 +1,2037 @@ + + + + + + + pyVHDLParser.Blocks — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Blocks

+

Submodules

+ +

Exceptions

+ +

Classes

+ +
+

Exceptions

+
+
+exception pyVHDLParser.Blocks.BlockParserException[source]
+

Base-class for exceptions when reading tokens and generating blocks.

+

Inheritance

+
+

Inheritance diagram of BlockParserException

+
+
+__init__(message, token)[source]
+
+ +
+
+__new__(**kwargs)
+
+ +
+ +
+

Classes

+
+
+class pyVHDLParser.Blocks.TokenToBlockParser[source]
+

Represents the current state of a token-to-block parser.

+

Inheritance

+
+

Inheritance diagram of TokenToBlockParser

+
+
+__init__(tokenGenerator)[source]
+

Initializes the parser state.

+
+
Parameters:
+

tokenGenerator (Iterator[Token]) –

+
+
+
+ +
+
+__eq__(other)[source]
+

Implement a ‘==’ operator for the current state.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (Any) –

+
+
+
+ +
+
+__ne__(other)[source]
+

Implement a ‘!=’ operator for the current state.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (Any) –

+
+
+
+ +
+
+__str__()[source]
+

Returns the current state (function name) as str.

+
+
Return type:
+

str

+
+
+
+ +
+
+__repr__()[source]
+

Returns the current state (full) as str.

+
+
Return type:
+

str

+
+
+
+ +
+
+__call__()[source]
+

Call self as a function.

+
+
Return type:
+

Generator[Block, Token, None]

+
+
+
+ +
+
+__hash__ = None
+
+ +
+ +
+
+class pyVHDLParser.Blocks.MetaBlock[source]
+

A meta-class to construct Block classes.

+

Modifications done by this meta-class:

+
    +
  • Register all classes of type Block or derived variants in a class field Block.BLOCKS in this meta-class.

  • +
  • Register all method of name state…. in the constructed class’ attribute Block.__STATES__.

  • +
+

Inheritance

+
+

Inheritance diagram of MetaBlock

+
+
+BLOCKS: List[Block] = [<class 'pyVHDLParser.Blocks.Block'>, <class 'pyVHDLParser.Blocks.SkipableBlock'>, <class 'pyVHDLParser.Blocks.FinalBlock'>, <class 'pyVHDLParser.Blocks.CommentBlock'>, <class 'pyVHDLParser.Blocks.StartOfBlock'>, <class 'pyVHDLParser.Blocks.EndOfBlock'>, <class 'pyVHDLParser.Blocks.StartOfDocumentBlock'>, <class 'pyVHDLParser.Blocks.EndOfDocumentBlock'>, <class 'pyVHDLParser.Blocks.StartOfSnippetBlock'>, <class 'pyVHDLParser.Blocks.EndOfSnippetBlock'>, <class 'pyVHDLParser.Blocks.Common.WhitespaceBlock'>, <class 'pyVHDLParser.Blocks.Common.LinebreakBlock'>, <class 'pyVHDLParser.Blocks.Common.EmptyLineBlock'>, <class 'pyVHDLParser.Blocks.Common.IndentationBlock'>, <class 'pyVHDLParser.Blocks.Comment.SingleLineCommentBlock'>, <class 'pyVHDLParser.Blocks.Comment.MultiLineCommentBlock'>, <class 'pyVHDLParser.Blocks.Assignment.SignalAssignment.SignalAssignmentBlock'>, <class 'pyVHDLParser.Blocks.Assignment.VariableAssignment.SignalAssignmentBlock'>, <class 'pyVHDLParser.Blocks.Attribute.AttributeDeclaration.AttributeDeclarationBlock'>, <class 'pyVHDLParser.Blocks.Attribute.AttributeSpecification.AttributeSpecificationBlock'>, <class 'pyVHDLParser.Blocks.Generic1.EndBlock'>, <class 'pyVHDLParser.Blocks.Generic1.BeginBlock'>, <class 'pyVHDLParser.Blocks.Generic1.CloseBlock'>, <class 'pyVHDLParser.Blocks.Generic1.EndOfStatementBlock'>, <class 'pyVHDLParser.Blocks.Object.ObjectDeclarationBlock'>, <class 'pyVHDLParser.Blocks.Object.ObjectDeclarationEndMarkerBlock'>, <class 'pyVHDLParser.Blocks.Expression.ExpressionBlock'>, <class 'pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByCharORClosingRoundBracket'>, <class 'pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByKeywordORClosingRoundBracket'>, <class 'pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByToOrDownto'>, <class 'pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByKeywordOrToOrDownto'>, <class 'pyVHDLParser.Blocks.Expression.ExpressionBlockEndedBySemicolon'>, <class 'pyVHDLParser.Blocks.Object.Variable.VariableDeclarationEndMarkerBlock'>, <class 'pyVHDLParser.Blocks.Object.Variable.VariableDeclarationDefaultExpressionBlock'>, <class 'pyVHDLParser.Blocks.Object.Variable.VariableDeclarationBlock'>, <class 'pyVHDLParser.Blocks.Generic.DeclarativeRegion'>, <class 'pyVHDLParser.Blocks.Generic.ConcurrentDeclarativeRegion'>, <class 'pyVHDLParser.Blocks.Generic.SequentialDeclarativeRegion'>, <class 'pyVHDLParser.Blocks.Generic.ConcurrentBeginBlock'>, <class 'pyVHDLParser.Blocks.Generic.SequentialBeginBlock'>, <class 'pyVHDLParser.Blocks.ControlStructure.Case.EndBlock'>, <class 'pyVHDLParser.Blocks.ControlStructure.Case.ArrowBlock'>, <class 'pyVHDLParser.Blocks.ControlStructure.Case.WhenExpressionBlock'>, <class 'pyVHDLParser.Blocks.ControlStructure.Case.WhenBlock'>, <class 'pyVHDLParser.Blocks.ControlStructure.Case.IsBlock'>, <class 'pyVHDLParser.Blocks.ControlStructure.Case.CaseExpressionBlock'>, <class 'pyVHDLParser.Blocks.ControlStructure.Case.CaseBlock'>, <class 'pyVHDLParser.Blocks.ControlStructure.Exit.EndBlock'>, <class 'pyVHDLParser.Blocks.ControlStructure.Exit.ExitConditionBlock'>, <class 'pyVHDLParser.Blocks.ControlStructure.Exit.ExitBlock'>, <class 'pyVHDLParser.Blocks.ControlStructure.ForLoop.IteratorBlock'>, <class 'pyVHDLParser.Blocks.ControlStructure.ForLoop.EndBlock'>, <class 'pyVHDLParser.Blocks.ControlStructure.ForLoop.LoopBlock'>, <class 'pyVHDLParser.Blocks.ControlStructure.ForLoop.ExpressionBlockEndedByLoopORToORDownto'>, <class 'pyVHDLParser.Blocks.ControlStructure.ForLoop.ExpressionBlockEndedByLoop'>, <class 'pyVHDLParser.Blocks.ControlStructure.ForLoop.LoopIterationDirectionBlock'>, <class 'pyVHDLParser.Blocks.ControlStructure.If.EndBlock'>, <class 'pyVHDLParser.Blocks.ControlStructure.If.ThenBlock'>, <class 'pyVHDLParser.Blocks.ControlStructure.If.ElseBlock'>, <class 'pyVHDLParser.Blocks.ControlStructure.If.ExpressionBlockEndedByThen'>, <class 'pyVHDLParser.Blocks.ControlStructure.If.IfConditionBlock'>, <class 'pyVHDLParser.Blocks.ControlStructure.If.ElsIfConditionBlock'>, <class 'pyVHDLParser.Blocks.ControlStructure.Next.EndBlock'>, <class 'pyVHDLParser.Blocks.ControlStructure.Next.NextConditionBlock'>, <class 'pyVHDLParser.Blocks.ControlStructure.Next.NextBlock'>, <class 'pyVHDLParser.Blocks.ControlStructure.Null.EndBlock'>, <class 'pyVHDLParser.Blocks.ControlStructure.Null.NullBlock'>, <class 'pyVHDLParser.Blocks.ControlStructure.Return.EndBlock'>, <class 'pyVHDLParser.Blocks.ControlStructure.Return.ReturnExpressionBlock'>, <class 'pyVHDLParser.Blocks.ControlStructure.Return.ReturnBlock'>, <class 'pyVHDLParser.Blocks.Type.ResolutionIndication.SimpleResolutionIndicationBlock'>, <class 'pyVHDLParser.Blocks.Type.ResolutionIndication.ArrayResolutionIndicationBlock'>, <class 'pyVHDLParser.Blocks.Type.ResolutionIndication.RecordResolutionIndicationBlock'>, <class 'pyVHDLParser.Blocks.InterfaceObject.InterfaceObjectBlock'>, <class 'pyVHDLParser.Blocks.InterfaceObject.InterfaceConstantBlock'>, <class 'pyVHDLParser.Blocks.InterfaceObject.InterfaceVariableBlock'>, <class 'pyVHDLParser.Blocks.InterfaceObject.InterfaceSignalBlock'>, <class 'pyVHDLParser.Blocks.InterfaceObject.InterfaceTypeBlock'>, <class 'pyVHDLParser.Blocks.List.GenericList.CloseBlock'>, <class 'pyVHDLParser.Blocks.List.GenericList.DelimiterBlock'>, <class 'pyVHDLParser.Blocks.List.GenericList.DefaultValueExpressionBlock'>, <class 'pyVHDLParser.Blocks.List.GenericList.GenericListInterfaceConstantBlock'>, <class 'pyVHDLParser.Blocks.List.GenericList.GenericListInterfaceTypeBlock'>, <class 'pyVHDLParser.Blocks.List.GenericList.OpenBlock'>, <class 'pyVHDLParser.Blocks.List.PortList.CloseBlock'>, <class 'pyVHDLParser.Blocks.List.PortList.DelimiterBlock'>, <class 'pyVHDLParser.Blocks.List.PortList.DefaultValueExpressionBlock'>, <class 'pyVHDLParser.Blocks.List.PortList.PortListInterfaceSignalBlock'>, <class 'pyVHDLParser.Blocks.List.PortList.OpenBlock'>, <class 'pyVHDLParser.Blocks.ControlStructure.WhileLoop.ConditionBlock'>, <class 'pyVHDLParser.Blocks.ControlStructure.WhileLoop.EndBlock'>, <class 'pyVHDLParser.Blocks.Generate.EndGenerateBlock'>, <class 'pyVHDLParser.Blocks.Generate.CaseGenerate.CaseBlock'>, <class 'pyVHDLParser.Blocks.Generate.CaseGenerate.BeginBlock'>, <class 'pyVHDLParser.Blocks.Generate.CaseGenerate.EndGenerateBlock'>, <class 'pyVHDLParser.Blocks.Reporting.Assert.AssertBlock'>, <class 'pyVHDLParser.Blocks.List.SensitivityList.OpenBlock'>, <class 'pyVHDLParser.Blocks.List.SensitivityList.ItemBlock'>, <class 'pyVHDLParser.Blocks.List.SensitivityList.DelimiterBlock'>, <class 'pyVHDLParser.Blocks.List.SensitivityList.CloseBlock'>, <class 'pyVHDLParser.Blocks.Sequential.Process.EndBlock'>, <class 'pyVHDLParser.Blocks.Sequential.Process.BeginBlock'>, <class 'pyVHDLParser.Blocks.Sequential.Process.DeclarativeRegion'>, <class 'pyVHDLParser.Blocks.Sequential.Process.OpenBlock'>, <class 'pyVHDLParser.Blocks.Sequential.Process.OpenBlock2'>, <class 'pyVHDLParser.Blocks.Generate.ForGenerate.RangeBlock'>, <class 'pyVHDLParser.Blocks.Generate.ForGenerate.BeginBlock'>, <class 'pyVHDLParser.Blocks.Generate.ForGenerate.EndGenerateBlock'>, <class 'pyVHDLParser.Blocks.Generate.IfGenerate.IfConditionBlock'>, <class 'pyVHDLParser.Blocks.Generate.IfGenerate.BeginBlock'>, <class 'pyVHDLParser.Blocks.Generate.IfGenerate.ElsIfConditionBlock'>, <class 'pyVHDLParser.Blocks.Generate.IfGenerate.ElsIfBeginBlock'>, <class 'pyVHDLParser.Blocks.Generate.IfGenerate.ElseGenerateBlock'>, <class 'pyVHDLParser.Blocks.Generate.IfGenerate.ElseGenerateBeginBlock'>, <class 'pyVHDLParser.Blocks.Generate.IfGenerate.EndGenerateBlock'>, <class 'pyVHDLParser.Blocks.Instantiation.EntityInstantiation.EntityInstantiationBlock'>, <class 'pyVHDLParser.Blocks.Instantiation.EntityInstantiation.EndBlock'>, <class 'pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.EntityInstantiationBlock'>, <class 'pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapBeginBlock'>, <class 'pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapItemBlock'>, <class 'pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapDelimiterBlock'>, <class 'pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapEndBlock'>, <class 'pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapBeginBlock'>, <class 'pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapItemBlock'>, <class 'pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapDelimiterBlock'>, <class 'pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapEndBlock'>, <class 'pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.EndBlock'>, <class 'pyVHDLParser.Blocks.Instantiation.PackageInstantiation.EntityInstantiationBlock'>, <class 'pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapBeginBlock'>, <class 'pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapItemBlock'>, <class 'pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapDelimiterBlock'>, <class 'pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapEndBlock'>, <class 'pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapBeginBlock'>, <class 'pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapItemBlock'>, <class 'pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapDelimiterBlock'>, <class 'pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapEndBlock'>, <class 'pyVHDLParser.Blocks.Instantiation.PackageInstantiation.EndBlock'>, <class 'pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.EntityInstantiationBlock'>, <class 'pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapBeginBlock'>, <class 'pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapItemBlock'>, <class 'pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapDelimiterBlock'>, <class 'pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapEndBlock'>, <class 'pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapBeginBlock'>, <class 'pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapItemBlock'>, <class 'pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapDelimiterBlock'>, <class 'pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapEndBlock'>, <class 'pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.EndBlock'>, <class 'pyVHDLParser.Blocks.List.GenericMapList.OpenBlock'>, <class 'pyVHDLParser.Blocks.List.GenericMapList.ItemBlock'>, <class 'pyVHDLParser.Blocks.List.GenericMapList.DelimiterBlock'>, <class 'pyVHDLParser.Blocks.List.GenericMapList.CloseBlock'>, <class 'pyVHDLParser.Blocks.List.ParameterList.OpenBlock'>, <class 'pyVHDLParser.Blocks.List.ParameterList.ItemBlock'>, <class 'pyVHDLParser.Blocks.List.ParameterList.DelimiterBlock'>, <class 'pyVHDLParser.Blocks.List.ParameterList.CloseBlock'>, <class 'pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceConstantBlock'>, <class 'pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceVariableBlock'>, <class 'pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceSignalBlock'>, <class 'pyVHDLParser.Blocks.List.PortMapList.OpenBlock'>, <class 'pyVHDLParser.Blocks.List.PortMapList.ItemBlock'>, <class 'pyVHDLParser.Blocks.List.PortMapList.DelimiterBlock'>, <class 'pyVHDLParser.Blocks.List.PortMapList.CloseBlock'>, <class 'pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationEndMarkerBlock'>, <class 'pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationDefaultExpressionBlock'>, <class 'pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationBlock'>, <class 'pyVHDLParser.Blocks.Object.SharedVariable.SharedVariableDeclarationEndMarkerBlock'>, <class 'pyVHDLParser.Blocks.Object.SharedVariable.SharedVariableDeclarationBlock'>, <class 'pyVHDLParser.Blocks.Object.Signal.SignalDeclarationEndMarkerBlock'>, <class 'pyVHDLParser.Blocks.Object.Signal.SignalDeclarationDefaultExpressionBlock'>, <class 'pyVHDLParser.Blocks.Object.Signal.SignalDeclarationBlock'>, <class 'pyVHDLParser.Blocks.Reference.Context.NameBlock'>, <class 'pyVHDLParser.Blocks.Reference.Context.EndBlock'>, <class 'pyVHDLParser.Blocks.Reference.Library.StartBlock'>, <class 'pyVHDLParser.Blocks.Reference.Library.LibraryNameBlock'>, <class 'pyVHDLParser.Blocks.Reference.Library.DelimiterBlock'>, <class 'pyVHDLParser.Blocks.Reference.Library.EndBlock'>, <class 'pyVHDLParser.Blocks.Reference.Use.StartBlock'>, <class 'pyVHDLParser.Blocks.Reference.Use.ReferenceNameBlock'>, <class 'pyVHDLParser.Blocks.Reference.Use.DelimiterBlock'>, <class 'pyVHDLParser.Blocks.Reference.Use.EndBlock'>, <class 'pyVHDLParser.Blocks.Reporting.Report.ReportBlock'>, <class 'pyVHDLParser.Blocks.Sequential.Function.EndBlock'>, <class 'pyVHDLParser.Blocks.Sequential.Function.BeginBlock'>, <class 'pyVHDLParser.Blocks.Sequential.Function.DeclarativeRegion'>, <class 'pyVHDLParser.Blocks.Sequential.Function.NameBlock'>, <class 'pyVHDLParser.Blocks.Sequential.Function.ReturnTypeBlock'>, <class 'pyVHDLParser.Blocks.Sequential.PackageBody.EndBlock'>, <class 'pyVHDLParser.Blocks.Sequential.PackageBody.DeclarativeRegion'>, <class 'pyVHDLParser.Blocks.Sequential.PackageBody.NameBlock'>, <class 'pyVHDLParser.Blocks.Sequential.Package.EndBlock'>, <class 'pyVHDLParser.Blocks.Sequential.Package.DeclarativeRegion'>, <class 'pyVHDLParser.Blocks.Sequential.Package.NameBlock'>, <class 'pyVHDLParser.Blocks.Sequential.Procedure.EndBlock'>, <class 'pyVHDLParser.Blocks.Sequential.Procedure.BeginBlock'>, <class 'pyVHDLParser.Blocks.Sequential.Procedure.DeclarativeRegion'>, <class 'pyVHDLParser.Blocks.Sequential.Procedure.NameBlock'>, <class 'pyVHDLParser.Blocks.Sequential.Procedure.VoidBlock'>, <class 'pyVHDLParser.Blocks.Structural.Architecture.EndBlock'>, <class 'pyVHDLParser.Blocks.Structural.Architecture.BeginBlock'>, <class 'pyVHDLParser.Blocks.Structural.Architecture.DeclarativeRegion'>, <class 'pyVHDLParser.Blocks.Structural.Architecture.NameBlock'>, <class 'pyVHDLParser.Blocks.Structural.Block.EndBlock'>, <class 'pyVHDLParser.Blocks.Structural.Block.BeginBlock'>, <class 'pyVHDLParser.Blocks.Structural.Block.DeclarativeRegion'>, <class 'pyVHDLParser.Blocks.Structural.Block.NameBlock'>, <class 'pyVHDLParser.Blocks.Structural.Component.NameBlock'>, <class 'pyVHDLParser.Blocks.Structural.Component.EndBlock'>, <class 'pyVHDLParser.Blocks.Structural.Configuration.NameBlock'>, <class 'pyVHDLParser.Blocks.Structural.Configuration.EndBlock'>, <class 'pyVHDLParser.Blocks.Structural.Configuration.BeginBlock'>, <class 'pyVHDLParser.Blocks.Structural.Entity.EndBlock'>, <class 'pyVHDLParser.Blocks.Structural.Entity.BeginBlock'>, <class 'pyVHDLParser.Blocks.Structural.Entity.DeclarativeRegion'>, <class 'pyVHDLParser.Blocks.Structural.Entity.NameBlock'>, <class 'pyVHDLParser.Blocks.Type.Subtype.SubtypeBlock'>, <class 'pyVHDLParser.Blocks.Type.SubtypeIndication.SubtypeIndicationBlock'>, <class 'pyVHDLParser.Blocks.Type.SubtypeIndication.ArrayConstrainedSubtypeIndicationBlock'>, <class 'pyVHDLParser.Blocks.Type.SubtypeIndication.RecordConstrainedSubtypeIndicationBlock'>, <class 'pyVHDLParser.Blocks.Type.Type.TypeBlock'>]
+

List of all classes of type Block or derived variants

+
+ +
+
+static __new__(cls, className, baseClasses, classMembers)[source]
+

Construct a new class using this meta-class.

+
+
Parameters:
+
    +
  • className – The name of the class to construct.

  • +
  • baseClasses – The tuple of base-classes the class is derived from.

  • +
  • members – The dictionary of members for the constructed class.

  • +
  • singleton – If true, make the class a Singleton.

  • +
  • useSlots – If true, store object attributes in __slots__ instead of __dict__.

  • +
  • classMembers (dict) –

  • +
+
+
Returns:
+

The new class.

+
+
Raises:
+
+
+
+
+ +
+
+__base__
+

alias of ExtendedType

+
+ +
+
+__call__(*args, **kwargs)
+

Call self as a function.

+
+ +
+
+__delattr__(name, /)
+

Implement delattr(self, name).

+
+ +
+
+__dir__()
+

Specialized __dir__ implementation for types.

+
+ +
+
+__getattribute__(name, /)
+

Return getattr(self, name).

+
+ +
+
+__init__(*args, **kwargs)
+
+ +
+
+__instancecheck__(instance, /)
+

Check if an object is an instance.

+
+ +
+
+__or__(value, /)
+

Return self|value.

+
+ +
+
+__prepare__() dict
+

used to create the namespace for the class statement

+
+ +
+
+__repr__()
+

Return repr(self).

+
+ +
+
+__ror__(value, /)
+

Return value|self.

+
+ +
+
+__setattr__(name, value, /)
+

Implement setattr(self, name, value).

+
+ +
+
+__sizeof__()
+

Return memory consumption of the type object.

+
+ +
+
+__subclasscheck__(subclass, /)
+

Check if a class is a subclass.

+
+ +
+
+__subclasses__()
+

Return a list of immediate subclasses.

+
+ +
+
+__text_signature__ = None
+
+ +
+
+classmethod _checkForAbstractMethods(baseClasses, members)
+

Check if the current class contains abstract methods and return a tuple of them.

+

These abstract methods might be inherited from any base-class. If there are inherited abstract methods, check if +they are now implemented (overridden) by the current class that’s right now constructed.

+
+
Parameters:
+
    +
  • baseClasses (Tuple[type]) – The tuple of base-classes the class is derived from.

  • +
  • members (Dict[str, Any]) – The dictionary of members for the constructed class.

  • +
+
+
Return type:
+

Tuple[Dict[str, Callable], Dict[str, Any]]

+
+
Returns:
+

A tuple of abstract method’s names.

+
+
+
+ +
+
+static _wrapNewMethodIfAbstract(newClass)
+

If the class has abstract methods, replace the _new__ method, so it raises an exception.

+
+
Parameters:
+

newClass – The newly constructed class for further modifications.

+
+
Return type:
+

bool

+
+
Returns:
+

True, if the class is abstract.

+
+
Raises:
+

AbstractClassError – If the class is abstract and can’t be instantiated.

+
+
+
+ +
+
+static _wrapNewMethodIfSingleton(newClass, singleton)
+

If a class is a singleton, wrap the _new__ method, so it returns a cached object, if a first object was created.

+

Only the first object creation initializes the object.

+

This implementation is threadsafe.

+
+
Parameters:
+
    +
  • newClass – The newly constructed class for further modifications.

  • +
  • singleton (bool) – If True, the class allows only a single instance to exist.

  • +
+
+
Return type:
+

bool

+
+
Returns:
+

True, if the class is a singleton.

+
+
+
+ +
+
+mro()
+

Return a type’s method resolution order.

+
+ +
+ +
+
+class pyVHDLParser.Blocks.BlockIterator[source]
+

Inheritance

+
+

Inheritance diagram of BlockIterator

+
+
+__init__(startBlock, inclusiveStartBlock=False, inclusiveStopBlock=True, stopBlock=None)[source]
+
+
Parameters:
+
    +
  • startBlock (Block) –

  • +
  • inclusiveStartBlock (bool) –

  • +
  • inclusiveStopBlock (bool) –

  • +
  • stopBlock (Block) –

  • +
+
+
+
+ +
+
+_state: int
+

internal states: 0 = normal, 1 = reached stopBlock, 2 = reached EndOfBlock

+
+ +
+ +
+
+class pyVHDLParser.Blocks.BlockReverseIterator[source]
+

Inheritance

+
+

Inheritance diagram of BlockReverseIterator

+
+
+__init__(startBlock, inclusiveStartBlock=False, stopBlock=None)[source]
+
+
Parameters:
+
    +
  • startBlock (Block) –

  • +
  • inclusiveStartBlock (bool) –

  • +
  • stopBlock (Block) –

  • +
+
+
+
+ +
+
+state: int
+

internal states: 0 = normal, 1 = reached stopBlock, 2 = reached StartOfBlock

+
+ +
+ +
+
+class pyVHDLParser.Blocks.Block[source]
+

Base-class for all block classes.

+

Inheritance

+
+

Inheritance diagram of Block

+
+
+__STATES__: List
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)[source]
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+__len__()[source]
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__iter__()[source]
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__str__()[source]
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__repr__()[source]
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+classmethod stateError(parserState)[source]
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.SkipableBlock[source]
+

Base-class for blocks that can be skipped in fast-forward scanning.

+

Inheritance

+
+

Inheritance diagram of SkipableBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.FinalBlock[source]
+

Base-class for blocks that are final in a fast-forward scanning.

+

Inheritance

+
+

Inheritance diagram of FinalBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.CommentBlock[source]
+

Base-class for all comment blocks.

+

Inheritance

+
+

Inheritance diagram of CommentBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, startToken, endToken=None, multiPart=False)
+

Base-class constructor for a new block instance.

+
+
Parameters:
+
    +
  • previousBlock (Block) –

  • +
  • startToken (Token) –

  • +
  • endToken (Token) –

  • +
  • multiPart (bool) –

  • +
+
+
+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

TokenIterator

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.StartOfBlock[source]
+

Base-class for a first block in a sequence of double-linked blocks.

+

Inheritance

+
+

Inheritance diagram of StartOfBlock

+
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+
+__init__(startToken)[source]
+

Base-class constructor for a new block instance.

+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+__iter__()[source]
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+ +
+
+__len__()[source]
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()[source]
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.EndOfBlock[source]
+

Base-class for a last block in a sequence of double-linked blocks.

+

Inheritance

+
+

Inheritance diagram of EndOfBlock

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+
+__init__(previousBlock, endToken)[source]
+

Base-class constructor for a new block instance.

+
+ +
+
+__iter__()[source]
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

Iterator[Token]

+
+
+
+ +
+
+__len__()[source]
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()[source]
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.StartOfDocumentBlock[source]
+

First block in a sequence of double-linked blocks.

+

Inheritance

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(startToken)
+

Base-class constructor for a new block instance.

+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.EndOfDocumentBlock[source]
+

Last block in a sequence of double-linked blocks.

+

Inheritance

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, endToken)
+

Base-class constructor for a new block instance.

+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

Iterator[Token]

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.StartOfSnippetBlock[source]
+

Inheritance

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(startToken)
+

Base-class constructor for a new block instance.

+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Blocks.EndOfSnippetBlock[source]
+

Inheritance

+
+
+EndToken: Token
+

Reference to the last token in the scope of this block.

+
+ +
+
+property Length: int
+

Returns the length of a block in characters from StartToken to EndToken.

+
+ +
+
+MultiPart: bool
+

True, if this block has multiple parts.

+
+ +
+
+NextBlock: Block
+

Reference to the next block.

+
+ +
+
+StartToken: Token
+

Reference to the first token in the scope of this block.

+
+ +
+
+property States: List[Callable]
+

Returns a list of all state… methods in this class.

+
+ +
+
+__STATES__: List = []
+

List of all state… methods in this class.

+
+ +
+
+__init__(previousBlock, endToken)
+

Base-class constructor for a new block instance.

+
+ +
+
+__iter__()
+

Returns a token iterator that iterates from StartToken to EndToken.

+
+
Return type:
+

Iterator[Token]

+
+
+
+ +
+
+__len__()
+

Returns the length of a block in characters from StartToken to EndToken.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousBlock: Block
+

Reference to the previous block.

+
+ +
+
+classmethod stateError(parserState)
+

Predefined state to catch error situations.

+
+
Parameters:
+

parserState (TokenToBlockParser) –

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.CLI.ANTLR.html b/pyVHDLParser/pyVHDLParser.CLI.ANTLR.html new file mode 100644 index 000000000..1606a2c50 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.CLI.ANTLR.html @@ -0,0 +1,174 @@ + + + + + + + pyVHDLParser.CLI.ANTLR — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.CLI.ANTLR

+
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.CLI.Block.html b/pyVHDLParser/pyVHDLParser.CLI.Block.html new file mode 100644 index 000000000..016d2958b --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.CLI.Block.html @@ -0,0 +1,174 @@ + + + + + + + pyVHDLParser.CLI.Block — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.CLI.Block

+
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.CLI.CodeDOM.html b/pyVHDLParser/pyVHDLParser.CLI.CodeDOM.html new file mode 100644 index 000000000..d891c690c --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.CLI.CodeDOM.html @@ -0,0 +1,174 @@ + + + + + + + pyVHDLParser.CLI.CodeDOM — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.CLI.CodeDOM

+
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.CLI.GraphML.html b/pyVHDLParser/pyVHDLParser.CLI.GraphML.html new file mode 100644 index 000000000..5d6971e47 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.CLI.GraphML.html @@ -0,0 +1,174 @@ + + + + + + + pyVHDLParser.CLI.GraphML — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.CLI.GraphML

+
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.CLI.Group.html b/pyVHDLParser/pyVHDLParser.CLI.Group.html new file mode 100644 index 000000000..5e77084fe --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.CLI.Group.html @@ -0,0 +1,174 @@ + + + + + + + pyVHDLParser.CLI.Group — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.CLI.Group

+
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.CLI.Token.html b/pyVHDLParser/pyVHDLParser.CLI.Token.html new file mode 100644 index 000000000..e915233f3 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.CLI.Token.html @@ -0,0 +1,174 @@ + + + + + + + pyVHDLParser.CLI.Token — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.CLI.Token

+
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.CLI.VHDLParser.html b/pyVHDLParser/pyVHDLParser.CLI.VHDLParser.html new file mode 100644 index 000000000..36a36279e --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.CLI.VHDLParser.html @@ -0,0 +1,624 @@ + + + + + + + pyVHDLParser.CLI.VHDLParser — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.CLI.VHDLParser

+

Functions

+ +

Classes

+
    +
  • Application: +A mixin class (interface) to provide class-local terminal writing methods.

  • +
+
+

Functions

+
+
+pyVHDLParser.CLI.VHDLParser.printImportError(ex)[source]
+
+
Return type:
+

NoReturn

+
+
+
+ +
+

Classes

+
+
+class pyVHDLParser.CLI.VHDLParser.Application[source]
+

Inheritance

+
+
+__init__()[source]
+

Initializer of a line based terminal interface.

+
+ +
+
+_width: int
+

Terminal width in characters

+
+ +
+
+_height: int
+

Terminal height in characters

+
+ +
+
+property Debug: bool
+

Returns true, if debug messages are enabled.

+
+ +
+
+ExitOnPreviousErrors()
+

Exit application if errors have been printed.

+
+
Return type:
+

None

+
+
+
+ +
+
+ExitOnPreviousWarnings()
+

Exit application if warnings have been printed.

+
+
Return type:
+

None

+
+
+
+ +
+
+Foreground = {'BLUE': '\x1b[94m', 'CYAN': '\x1b[96m', 'DARK_BLUE': '\x1b[34m', 'DARK_CYAN': '\x1b[36m', 'DARK_GRAY': '\x1b[90m', 'DARK_GREEN': '\x1b[32m', 'DARK_RED': '\x1b[31m', 'DARK_YELLOW': '\x1b[33m', 'ERROR': '\x1b[91m', 'GRAY': '\x1b[37m', 'GREEN': '\x1b[92m', 'HEADLINE': '\x1b[95m', 'MAGENTA': '\x1b[95m', 'NOCOLOR': '\x1b[39m', 'RED': '\x1b[91m', 'WARNING': '\x1b[93m', 'WHITE': '\x1b[97m', 'YELLOW': '\x1b[93m'}
+

Terminal colors

+
+ +
+
+static GetAttributes(method, filter=<class 'pyAttributes.Attribute'>)
+

Returns a list of pyAttributes attached to the given method.

+
+
Return type:
+

List[TypeVar(TAttr, bound= Attribute)]

+
+
Parameters:
+
+
+
+
+ +
+
+static GetTerminalSize()
+

Returns the terminal size as tuple (width, height) for Windows, Mac OS (Darwin), Linux, cygwin (Windows), MinGW32/64 (Windows).

+
+
Return type:
+

Tuple[int, int]

+
+
+
+ +
+
+static HasAttribute(method, filter=<class 'pyAttributes.Attribute'>)
+

Returns true, if the given method has pyAttributes attached.

+
+
Return type:
+

bool

+
+
Parameters:
+
+
+
+
+ +
+
+property Height: int
+

Returns the current terminal window’s height.

+
+ +
+
+property LogLevel: Severity
+

Return the current minimal severity level for writing.

+
+ +
+
+property MainParser: ArgumentParser
+

Returns the main parser.

+
+ +
+
+property Quiet: bool
+

Returns true, if quiet mode is enabled.

+
+ +
+
+property SubParsers
+

Returns the sub-parsers.

+
+ +
+
+property Terminal: Terminal
+

Return the local terminal instance.

+
+ +
+
+property Verbose: bool
+

Returns true, if verbose messages are enabled.

+
+ +
+
+property Width: int
+

Returns the current terminal window’s width.

+
+ +
+
+WriteDebug(message, indent=2, appendLinebreak=True)
+

Write a debug message if condition is true.

+
+
Return type:
+

bool

+
+
Parameters:
+
    +
  • message (str) –

  • +
  • indent (int) –

  • +
  • appendLinebreak (bool) –

  • +
+
+
+
+ +
+
+WriteDryRun(message, indent=2, appendLinebreak=True)
+

Write a dry-run message if condition is true.

+
+
Return type:
+

bool

+
+
Parameters:
+
    +
  • message (str) –

  • +
  • indent (int) –

  • +
  • appendLinebreak (bool) –

  • +
+
+
+
+ +
+
+WriteError(message, indent=0, appendLinebreak=True)
+

Write an error message if condition is true.

+
+
Return type:
+

bool

+
+
Parameters:
+
    +
  • message (str) –

  • +
  • indent (int) –

  • +
  • appendLinebreak (bool) –

  • +
+
+
+
+ +
+
+WriteFatal(message, indent=0, appendLinebreak=True, immediateExit=True)
+

Write a fatal message if condition is true.

+
+
Return type:
+

bool

+
+
Parameters:
+
    +
  • message (str) –

  • +
  • indent (int) –

  • +
  • appendLinebreak (bool) –

  • +
  • immediateExit (bool) –

  • +
+
+
+
+ +
+
+WriteInfo(message, indent=0, appendLinebreak=True)
+

Write an info message if condition is true.

+
+
Return type:
+

bool

+
+
Parameters:
+
    +
  • message (str) –

  • +
  • indent (int) –

  • +
  • appendLinebreak (bool) –

  • +
+
+
+
+ +
+
+WriteLine(line)
+

Print a formatted line to the underlying terminal/console offered by the operating system.

+
+
Return type:
+

bool

+
+
Parameters:
+

line (Line) –

+
+
+
+ +
+
+WriteNormal(message, indent=0, appendLinebreak=True)
+

Write a normal message if condition is true.

+
+
Return type:
+

bool

+
+
Parameters:
+
    +
  • message (str) –

  • +
  • indent (int) –

  • +
  • appendLinebreak (bool) –

  • +
+
+
+
+ +
+
+WriteQuiet(message, indent=0, appendLinebreak=True)
+

Write a message even in quiet mode if condition is true.

+
+
Return type:
+

bool

+
+
Parameters:
+
    +
  • message (str) –

  • +
  • indent (int) –

  • +
  • appendLinebreak (bool) –

  • +
+
+
+
+ +
+
+WriteVerbose(message, indent=1, appendLinebreak=True)
+

Write a verbose message if condition is true.

+
+
Return type:
+

bool

+
+
Parameters:
+
    +
  • message (str) –

  • +
  • indent (int) –

  • +
  • appendLinebreak (bool) –

  • +
+
+
+
+ +
+
+WriteWarning(message, indent=0, appendLinebreak=True)
+

Write a warning message if condition is true.

+
+
Return type:
+

bool

+
+
Parameters:
+
    +
  • message (str) –

  • +
  • indent (int) –

  • +
  • appendLinebreak (bool) –

  • +
+
+
+
+ +
+
+_LOG_MESSAGE_FORMAT__ = {Severity.Debug: '{DARK_GRAY}{message}{NOCOLOR}', Severity.Verbose: '{GRAY}{message}{NOCOLOR}', Severity.Normal: '{GRAY}{message}{NOCOLOR}', Severity.DryRun: '{DARK_CYAN}[DRY] {message}{NOCOLOR}', Severity.Info: '{WHITE}{message}{NOCOLOR}', Severity.Warning: '{YELLOW}[WARNING] {message}{NOCOLOR}', Severity.Quiet: '{WHITE}{message}{NOCOLOR}', Severity.Error: '{RED}[ERROR] {message}{NOCOLOR}', Severity.Fatal: '{DARK_RED}[FATAL] {message}{NOCOLOR}'}
+

Message formatting rules.

+
+ +
+
+__new__(**kwargs)
+
+ +
+
+classmethod deinitColors()
+

Uninitialize the terminal for color support by colorama.

+
+
Return type:
+

None

+
+
+
+ +
+
+classmethod exit(returnCode=0)
+

Exit the terminal application by uninitializing color support and returning an exit code.

+
+
Return type:
+

NoReturn

+
+
Parameters:
+

returnCode (int) –

+
+
+
+ +
+
+classmethod fatalExit(returnCode=0)
+

Exit the terminal application by uninitializing color support and returning a fatal exit code.

+
+
Return type:
+

NoReturn

+
+
Parameters:
+

returnCode (int) –

+
+
+
+ +
+
+classmethod initColors()
+

Initialize the terminal for color support by colorama.

+
+
Return type:
+

None

+
+
+
+ +
+
+classmethod printException(ex)
+

Prints an exception of type Exception.

+
+
Return type:
+

NoReturn

+
+
+
+ +
+
+classmethod printNotImplementedError(ex)
+

Prints a not-implemented exception of type NotImplementedError.

+
+
Return type:
+

NoReturn

+
+
+
+ +
+
+classmethod versionCheck(version)
+

Check if the used Python interpreter fulfills the minimum version requirements.

+
+
Return type:
+

None

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.CLI.html b/pyVHDLParser/pyVHDLParser.CLI.html new file mode 100644 index 000000000..87fe6a69c --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.CLI.html @@ -0,0 +1,185 @@ + + + + + + + pyVHDLParser.CLI — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.CLI

+

Submodules

+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Decorators.html b/pyVHDLParser/pyVHDLParser.Decorators.html new file mode 100644 index 000000000..ad23596b2 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Decorators.html @@ -0,0 +1,169 @@ + + + + + + + Python Class Reference — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Python Class Reference

+

Reference of all packages and modules:

+
+
+
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.DocumentModel.DesignUnit.Architecture.html b/pyVHDLParser/pyVHDLParser.DocumentModel.DesignUnit.Architecture.html new file mode 100644 index 000000000..ddd0f887f --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.DocumentModel.DesignUnit.Architecture.html @@ -0,0 +1,404 @@ + + + + + + + pyVHDLParser.DocumentModel.DesignUnit.Architecture — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.DocumentModel.DesignUnit.Architecture

+

Classes

+
    +
  • Architecture: +A SecondaryUnit is a base-class for all secondary units.

  • +
+
+

Classes

+
+
+class pyVHDLParser.DocumentModel.DesignUnit.Architecture.Architecture[source]
+

Inheritance

+
+
+__init__(architectureName, entityName)[source]
+

Initializes a design unit.

+
+
Parameters:
+
    +
  • identifier – Identifier (name) of the design unit.

  • +
  • contextItems – A sequence of library, use or context clauses.

  • +
  • documentation – Associated documentation of the design unit.

  • +
+
+
+
+ +
+
+_parent: ModelEntity
+

Reference to a parent entity in the model.

+
+ +
+
+property ContextItems: List[Union[LibraryClause, UseClause, ContextReference]]
+

Read-only property to access the sequence of all context items comprising library, use and context clauses +(_contextItems).

+
+
Returns:
+

Sequence of context items.

+
+
+
+ +
+
+property ContextReferences: List[ContextReference]
+

Read-only property to access the sequence of context clauses (_contextReferences).

+
+
Returns:
+

Sequence of context clauses.

+
+
+
+ +
+
+property Documentation: Optional[str]
+

Returns a model entity’s associated documentation.

+
+
Returns:
+

Associated documentation of a model entity.

+
+
+
+ +
+
+property Identifier: str
+

Returns a model entity’s identifier (name).

+
+
Returns:
+

Name of a model entity.

+
+
+
+ +
+
+property LibraryReferences: List[LibraryClause]
+

Read-only property to access the sequence of library clauses (_libraryReferences).

+
+
Returns:
+

Sequence of library clauses.

+
+
+
+ +
+
+property NormalizedIdentifier: str
+

Returns a model entity’s normalized identifier (lower case name).

+
+
Returns:
+

Normalized name of a model entity.

+
+
+
+ +
+
+property PackageReferences: List[UseClause]
+

Read-only property to access the sequence of use clauses (_packageReferences).

+
+
Returns:
+

Sequence of use clauses.

+
+
+
+ +
+
+property Parent: ModelEntity
+

Returns a reference to the parent entity.

+
+
Returns:
+

Parent entity.

+
+
+
+ +
+
+__repr__()[source]
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()[source]
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_library: Library = None
+

The VHDL library, the design unit was analyzed into.

+
+ +
+
+_contextItems: List['ContextUnion']
+

List of all context items (library, use and context clauses).

+
+ +
+
+_libraryReferences: List['LibraryClause']
+

List of library clauses.

+
+ +
+
+_packageReferences: List['UseClause']
+

List of use clauses.

+
+ +
+
+_contextReferences: List['ContextReference']
+

List of context clauses.

+
+ +
+
+_referencedLibraries: Dict[str, 'Library']
+

Referenced libraries based on explicit library clauses or implicit inheritance

+
+ +
+
+_referencedPackages: Dict[str, Dict[str, 'Package']]
+

Referenced packages based on explicit use clauses or implicit inheritance

+
+ +
+
+_referencedContexts: Dict[str, 'Context']
+

Referenced contexts based on explicit context references or implicit inheritance

+
+ +
+
+_dependencyVertex: Vertex[None, None, str, 'DesignUnit', None, None, None, None, None, None, None, None, None, None, None, None, None]
+

The vertex in the dependency graph

+
+ +
+
+_hierarchyVertex: Vertex[None, None, str, 'DesignUnit', None, None, None, None, None, None, None, None, None, None, None, None, None]
+

The vertex in the hierarchy graph

+
+ +
+
+_identifier: str
+

The identifier of a model entity.

+
+ +
+
+_normalizedIdentifier: str
+

The normalized (lower case) identifier of a model entity.

+
+ +
+
+_documentation: Nullable[str]
+

The associated documentation of a model entity.

+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.DocumentModel.DesignUnit.Context.html b/pyVHDLParser/pyVHDLParser.DocumentModel.DesignUnit.Context.html new file mode 100644 index 000000000..93221b713 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.DocumentModel.DesignUnit.Context.html @@ -0,0 +1,388 @@ + + + + + + + pyVHDLParser.DocumentModel.DesignUnit.Context — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.DocumentModel.DesignUnit.Context

+

Classes

+
    +
  • Context: +A PrimaryUnit is a base-class for all primary units.

  • +
+
+

Classes

+
+
+class pyVHDLParser.DocumentModel.DesignUnit.Context.Context[source]
+

Inheritance

+
+
+__init__(contextName)[source]
+

Initializes a design unit.

+
+
Parameters:
+
    +
  • identifier – Identifier (name) of the design unit.

  • +
  • contextItems – A sequence of library, use or context clauses.

  • +
  • documentation – Associated documentation of the design unit.

  • +
+
+
+
+ +
+
+_parent: ModelEntity
+

Reference to a parent entity in the model.

+
+ +
+
+property ContextItems: List[Union[LibraryClause, UseClause, ContextReference]]
+

Read-only property to access the sequence of all context items comprising library, use and context clauses +(_contextItems).

+
+
Returns:
+

Sequence of context items.

+
+
+
+ +
+
+property ContextReferences: List[ContextReference]
+

Read-only property to access the sequence of context clauses (_contextReferences).

+
+
Returns:
+

Sequence of context clauses.

+
+
+
+ +
+
+property Documentation: Optional[str]
+

Returns a model entity’s associated documentation.

+
+
Returns:
+

Associated documentation of a model entity.

+
+
+
+ +
+
+property Identifier: str
+

Returns a model entity’s identifier (name).

+
+
Returns:
+

Name of a model entity.

+
+
+
+ +
+
+property LibraryReferences: List[LibraryClause]
+

Read-only property to access the sequence of library clauses (_libraryReferences).

+
+
Returns:
+

Sequence of library clauses.

+
+
+
+ +
+
+property NormalizedIdentifier: str
+

Returns a model entity’s normalized identifier (lower case name).

+
+
Returns:
+

Normalized name of a model entity.

+
+
+
+ +
+
+property PackageReferences: List[UseClause]
+

Read-only property to access the sequence of use clauses (_packageReferences).

+
+
Returns:
+

Sequence of use clauses.

+
+
+
+ +
+
+property Parent: ModelEntity
+

Returns a reference to the parent entity.

+
+
Returns:
+

Parent entity.

+
+
+
+ +
+
+__str__()[source]
+

Return str(self).

+
+ +
+
+_libraryReferences: List[LibraryClause]
+

List of library clauses.

+
+ +
+
+_packageReferences: List[UseClause]
+

List of use clauses.

+
+ +
+
+_contextReferences: List[ContextReference]
+

List of context clauses.

+
+ +
+
+_library: Library
+

The VHDL library, the design unit was analyzed into.

+
+ +
+
+_contextItems: List['ContextUnion']
+

List of all context items (library, use and context clauses).

+
+ +
+
+_referencedLibraries: Dict[str, 'Library']
+

Referenced libraries based on explicit library clauses or implicit inheritance

+
+ +
+
+_referencedPackages: Dict[str, Dict[str, 'Package']]
+

Referenced packages based on explicit use clauses or implicit inheritance

+
+ +
+
+_referencedContexts: Dict[str, 'Context']
+

Referenced contexts based on explicit context references or implicit inheritance

+
+ +
+
+_dependencyVertex: Vertex[None, None, str, 'DesignUnit', None, None, None, None, None, None, None, None, None, None, None, None, None]
+

The vertex in the dependency graph

+
+ +
+
+_hierarchyVertex: Vertex[None, None, str, 'DesignUnit', None, None, None, None, None, None, None, None, None, None, None, None, None]
+

The vertex in the hierarchy graph

+
+ +
+
+_identifier: str
+

The identifier of a model entity.

+
+ +
+
+_normalizedIdentifier: str
+

The normalized (lower case) identifier of a model entity.

+
+ +
+
+_documentation: Nullable[str]
+

The associated documentation of a model entity.

+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.DocumentModel.DesignUnit.Entity.html b/pyVHDLParser/pyVHDLParser.DocumentModel.DesignUnit.Entity.html new file mode 100644 index 000000000..14001c3c9 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.DocumentModel.DesignUnit.Entity.html @@ -0,0 +1,406 @@ + + + + + + + pyVHDLParser.DocumentModel.DesignUnit.Entity — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.DocumentModel.DesignUnit.Entity

+

Classes

+
    +
  • Entity: +A PrimaryUnit is a base-class for all primary units.

  • +
+
+

Classes

+
+
+class pyVHDLParser.DocumentModel.DesignUnit.Entity.Entity[source]
+

Inheritance

+
+

Inheritance diagram of Entity

+
+
+__init__(entityName)[source]
+

Initializes a design unit.

+
+
Parameters:
+
    +
  • identifier – Identifier (name) of the design unit.

  • +
  • contextItems – A sequence of library, use or context clauses.

  • +
  • documentation – Associated documentation of the design unit.

  • +
+
+
+
+ +
+
+_parent: ModelEntity
+

Reference to a parent entity in the model.

+
+ +
+
+property ContextItems: List[Union[LibraryClause, UseClause, ContextReference]]
+

Read-only property to access the sequence of all context items comprising library, use and context clauses +(_contextItems).

+
+
Returns:
+

Sequence of context items.

+
+
+
+ +
+
+property ContextReferences: List[ContextReference]
+

Read-only property to access the sequence of context clauses (_contextReferences).

+
+
Returns:
+

Sequence of context clauses.

+
+
+
+ +
+
+property Documentation: Optional[str]
+

Returns a model entity’s associated documentation.

+
+
Returns:
+

Associated documentation of a model entity.

+
+
+
+ +
+
+property Identifier: str
+

Returns a model entity’s identifier (name).

+
+
Returns:
+

Name of a model entity.

+
+
+
+ +
+
+property LibraryReferences: List[LibraryClause]
+

Read-only property to access the sequence of library clauses (_libraryReferences).

+
+
Returns:
+

Sequence of library clauses.

+
+
+
+ +
+
+property NormalizedIdentifier: str
+

Returns a model entity’s normalized identifier (lower case name).

+
+
Returns:
+

Normalized name of a model entity.

+
+
+
+ +
+
+property PackageReferences: List[UseClause]
+

Read-only property to access the sequence of use clauses (_packageReferences).

+
+
Returns:
+

Sequence of use clauses.

+
+
+
+ +
+
+property Parent: ModelEntity
+

Returns a reference to the parent entity.

+
+
Returns:
+

Parent entity.

+
+
+
+ +
+
+__repr__()[source]
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()[source]
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_library: Library
+

The VHDL library, the design unit was analyzed into.

+
+ +
+
+_contextItems: List['ContextUnion']
+

List of all context items (library, use and context clauses).

+
+ +
+
+_libraryReferences: List['LibraryClause']
+

List of library clauses.

+
+ +
+
+_packageReferences: List['UseClause']
+

List of use clauses.

+
+ +
+
+_contextReferences: List['ContextReference']
+

List of context clauses.

+
+ +
+
+_referencedLibraries: Dict[str, 'Library']
+

Referenced libraries based on explicit library clauses or implicit inheritance

+
+ +
+
+_referencedPackages: Dict[str, Dict[str, 'Package']]
+

Referenced packages based on explicit use clauses or implicit inheritance

+
+ +
+
+_referencedContexts: Dict[str, 'Context']
+

Referenced contexts based on explicit context references or implicit inheritance

+
+ +
+
+_dependencyVertex: Vertex[None, None, str, 'DesignUnit', None, None, None, None, None, None, None, None, None, None, None, None, None]
+

The vertex in the dependency graph

+
+ +
+
+_hierarchyVertex: Vertex[None, None, str, 'DesignUnit', None, None, None, None, None, None, None, None, None, None, None, None, None]
+

The vertex in the hierarchy graph

+
+ +
+
+_identifier: str
+

The identifier of a model entity.

+
+ +
+
+_normalizedIdentifier: str
+

The normalized (lower case) identifier of a model entity.

+
+ +
+
+_documentation: Nullable[str]
+

The associated documentation of a model entity.

+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.DocumentModel.DesignUnit.Package.html b/pyVHDLParser/pyVHDLParser.DocumentModel.DesignUnit.Package.html new file mode 100644 index 000000000..9b06fa8d8 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.DocumentModel.DesignUnit.Package.html @@ -0,0 +1,404 @@ + + + + + + + pyVHDLParser.DocumentModel.DesignUnit.Package — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.DocumentModel.DesignUnit.Package

+

Classes

+
    +
  • Package: +A PrimaryUnit is a base-class for all primary units.

  • +
+
+

Classes

+
+
+class pyVHDLParser.DocumentModel.DesignUnit.Package.Package[source]
+

Inheritance

+
+
+__init__(packageName)[source]
+

Initializes a design unit.

+
+
Parameters:
+
    +
  • identifier – Identifier (name) of the design unit.

  • +
  • contextItems – A sequence of library, use or context clauses.

  • +
  • documentation – Associated documentation of the design unit.

  • +
+
+
+
+ +
+
+_parent: ModelEntity
+

Reference to a parent entity in the model.

+
+ +
+
+property ContextItems: List[Union[LibraryClause, UseClause, ContextReference]]
+

Read-only property to access the sequence of all context items comprising library, use and context clauses +(_contextItems).

+
+
Returns:
+

Sequence of context items.

+
+
+
+ +
+
+property ContextReferences: List[ContextReference]
+

Read-only property to access the sequence of context clauses (_contextReferences).

+
+
Returns:
+

Sequence of context clauses.

+
+
+
+ +
+
+property Documentation: Optional[str]
+

Returns a model entity’s associated documentation.

+
+
Returns:
+

Associated documentation of a model entity.

+
+
+
+ +
+
+property Identifier: str
+

Returns a model entity’s identifier (name).

+
+
Returns:
+

Name of a model entity.

+
+
+
+ +
+
+property LibraryReferences: List[LibraryClause]
+

Read-only property to access the sequence of library clauses (_libraryReferences).

+
+
Returns:
+

Sequence of library clauses.

+
+
+
+ +
+
+property NormalizedIdentifier: str
+

Returns a model entity’s normalized identifier (lower case name).

+
+
Returns:
+

Normalized name of a model entity.

+
+
+
+ +
+
+property PackageReferences: List[UseClause]
+

Read-only property to access the sequence of use clauses (_packageReferences).

+
+
Returns:
+

Sequence of use clauses.

+
+
+
+ +
+
+property Parent: ModelEntity
+

Returns a reference to the parent entity.

+
+
Returns:
+

Parent entity.

+
+
+
+ +
+
+__repr__()[source]
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()[source]
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_library: Library
+

The VHDL library, the design unit was analyzed into.

+
+ +
+
+_contextItems: List['ContextUnion']
+

List of all context items (library, use and context clauses).

+
+ +
+
+_libraryReferences: List['LibraryClause']
+

List of library clauses.

+
+ +
+
+_packageReferences: List['UseClause']
+

List of use clauses.

+
+ +
+
+_contextReferences: List['ContextReference']
+

List of context clauses.

+
+ +
+
+_referencedLibraries: Dict[str, 'Library']
+

Referenced libraries based on explicit library clauses or implicit inheritance

+
+ +
+
+_referencedPackages: Dict[str, Dict[str, 'Package']]
+

Referenced packages based on explicit use clauses or implicit inheritance

+
+ +
+
+_referencedContexts: Dict[str, 'Context']
+

Referenced contexts based on explicit context references or implicit inheritance

+
+ +
+
+_dependencyVertex: Vertex[None, None, str, 'DesignUnit', None, None, None, None, None, None, None, None, None, None, None, None, None]
+

The vertex in the dependency graph

+
+ +
+
+_hierarchyVertex: Vertex[None, None, str, 'DesignUnit', None, None, None, None, None, None, None, None, None, None, None, None, None]
+

The vertex in the hierarchy graph

+
+ +
+
+_identifier: str
+

The identifier of a model entity.

+
+ +
+
+_normalizedIdentifier: str
+

The normalized (lower case) identifier of a model entity.

+
+ +
+
+_documentation: Nullable[str]
+

The associated documentation of a model entity.

+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.DocumentModel.DesignUnit.PackageBody.html b/pyVHDLParser/pyVHDLParser.DocumentModel.DesignUnit.PackageBody.html new file mode 100644 index 000000000..3b7146505 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.DocumentModel.DesignUnit.PackageBody.html @@ -0,0 +1,404 @@ + + + + + + + pyVHDLParser.DocumentModel.DesignUnit.PackageBody — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.DocumentModel.DesignUnit.PackageBody

+

Classes

+
    +
  • PackageBody: +A SecondaryUnit is a base-class for all secondary units.

  • +
+
+

Classes

+
+
+class pyVHDLParser.DocumentModel.DesignUnit.PackageBody.PackageBody[source]
+

Inheritance

+
+
+__init__(packageBodyName)[source]
+

Initializes a design unit.

+
+
Parameters:
+
    +
  • identifier – Identifier (name) of the design unit.

  • +
  • contextItems – A sequence of library, use or context clauses.

  • +
  • documentation – Associated documentation of the design unit.

  • +
+
+
+
+ +
+
+_parent: ModelEntity
+

Reference to a parent entity in the model.

+
+ +
+
+property ContextItems: List[Union[LibraryClause, UseClause, ContextReference]]
+

Read-only property to access the sequence of all context items comprising library, use and context clauses +(_contextItems).

+
+
Returns:
+

Sequence of context items.

+
+
+
+ +
+
+property ContextReferences: List[ContextReference]
+

Read-only property to access the sequence of context clauses (_contextReferences).

+
+
Returns:
+

Sequence of context clauses.

+
+
+
+ +
+
+property Documentation: Optional[str]
+

Returns a model entity’s associated documentation.

+
+
Returns:
+

Associated documentation of a model entity.

+
+
+
+ +
+
+property Identifier: str
+

Returns a model entity’s identifier (name).

+
+
Returns:
+

Name of a model entity.

+
+
+
+ +
+
+property LibraryReferences: List[LibraryClause]
+

Read-only property to access the sequence of library clauses (_libraryReferences).

+
+
Returns:
+

Sequence of library clauses.

+
+
+
+ +
+
+property NormalizedIdentifier: str
+

Returns a model entity’s normalized identifier (lower case name).

+
+
Returns:
+

Normalized name of a model entity.

+
+
+
+ +
+
+property PackageReferences: List[UseClause]
+

Read-only property to access the sequence of use clauses (_packageReferences).

+
+
Returns:
+

Sequence of use clauses.

+
+
+
+ +
+
+property Parent: ModelEntity
+

Returns a reference to the parent entity.

+
+
Returns:
+

Parent entity.

+
+
+
+ +
+
+__repr__()[source]
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()[source]
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_library: Library
+

The VHDL library, the design unit was analyzed into.

+
+ +
+
+_contextItems: List['ContextUnion']
+

List of all context items (library, use and context clauses).

+
+ +
+
+_libraryReferences: List['LibraryClause']
+

List of library clauses.

+
+ +
+
+_packageReferences: List['UseClause']
+

List of use clauses.

+
+ +
+
+_contextReferences: List['ContextReference']
+

List of context clauses.

+
+ +
+
+_referencedLibraries: Dict[str, 'Library']
+

Referenced libraries based on explicit library clauses or implicit inheritance

+
+ +
+
+_referencedPackages: Dict[str, Dict[str, 'Package']]
+

Referenced packages based on explicit use clauses or implicit inheritance

+
+ +
+
+_referencedContexts: Dict[str, 'Context']
+

Referenced contexts based on explicit context references or implicit inheritance

+
+ +
+
+_dependencyVertex: Vertex[None, None, str, 'DesignUnit', None, None, None, None, None, None, None, None, None, None, None, None, None]
+

The vertex in the dependency graph

+
+ +
+
+_hierarchyVertex: Vertex[None, None, str, 'DesignUnit', None, None, None, None, None, None, None, None, None, None, None, None, None]
+

The vertex in the hierarchy graph

+
+ +
+
+_identifier: str
+

The identifier of a model entity.

+
+ +
+
+_normalizedIdentifier: str
+

The normalized (lower case) identifier of a model entity.

+
+ +
+
+_documentation: Nullable[str]
+

The associated documentation of a model entity.

+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.DocumentModel.DesignUnit.html b/pyVHDLParser/pyVHDLParser.DocumentModel.DesignUnit.html new file mode 100644 index 000000000..9d690f920 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.DocumentModel.DesignUnit.html @@ -0,0 +1,190 @@ + + + + + + + pyVHDLParser.DocumentModel.DesignUnit — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.DocumentModel.DesignUnit

+

Submodules

+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.DocumentModel.ObjectDeclaration.html b/pyVHDLParser/pyVHDLParser.DocumentModel.ObjectDeclaration.html new file mode 100644 index 000000000..227debca4 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.DocumentModel.ObjectDeclaration.html @@ -0,0 +1,173 @@ + + + + + + + pyVHDLParser.DocumentModel.ObjectDeclaration — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.DocumentModel.ObjectDeclaration

+
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.DocumentModel.Reference.html b/pyVHDLParser/pyVHDLParser.DocumentModel.Reference.html new file mode 100644 index 000000000..88e9464f8 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.DocumentModel.Reference.html @@ -0,0 +1,173 @@ + + + + + + + pyVHDLParser.DocumentModel.Reference — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.DocumentModel.Reference

+
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.DocumentModel.Sequential.Function.html b/pyVHDLParser/pyVHDLParser.DocumentModel.Sequential.Function.html new file mode 100644 index 000000000..0330726e4 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.DocumentModel.Sequential.Function.html @@ -0,0 +1,177 @@ + + + + + + + pyVHDLParser.DocumentModel.Sequential.Function — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.DocumentModel.Sequential.Function

+
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.DocumentModel.Sequential.html b/pyVHDLParser/pyVHDLParser.DocumentModel.Sequential.html new file mode 100644 index 000000000..452a8887b --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.DocumentModel.Sequential.html @@ -0,0 +1,182 @@ + + + + + + + pyVHDLParser.DocumentModel.Sequential — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.DocumentModel.Sequential

+

Submodules

+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.DocumentModel.html b/pyVHDLParser/pyVHDLParser.DocumentModel.html new file mode 100644 index 000000000..b09df6e8e --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.DocumentModel.html @@ -0,0 +1,424 @@ + + + + + + + pyVHDLParser.DocumentModel — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.DocumentModel

+

Submodules

+ +

Exceptions

+ +

Classes

+
    +
  • Document: +A Document represents a sourcefile. It contains primary and secondary design units.

  • +
+
+

Exceptions

+
+
+exception pyVHDLParser.DocumentModel.DOMParserException[source]
+

Inheritance

+
+

Inheritance diagram of DOMParserException

+
+
+__init__(message, group)[source]
+
+ +
+
+__new__(**kwargs)
+
+ +
+ +
+

Classes

+
+
+class pyVHDLParser.DocumentModel.Document[source]
+

Inheritance

+
+

Inheritance diagram of Document

+
+
+__init__(file)[source]
+

Initializes a VHDL model entity.

+
+
Parameters:
+

file (Union[Path, str]) –

+
+
+
+ +
+
+_parent: ModelEntity
+

Reference to a parent entity in the model.

+
+ +
+
+property Architectures: Dict[str, Dict[str, Architecture]]
+

Returns a list of all architecture declarations found in this document.

+
+ +
+
+property Configurations: Dict[str, Configuration]
+

Returns a list of all configuration declarations found in this document.

+
+ +
+
+property Contexts: Dict[str, Context]
+

Returns a list of all context declarations found in this document.

+
+ +
+
+property DesignUnits: List[DesignUnit]
+

Returns a list of all design units declarations found in this document.

+
+ +
+
+property Documentation: Optional[str]
+

Returns a model entity’s associated documentation.

+
+
Returns:
+

Associated documentation of a model entity.

+
+
+
+ +
+
+property Entities: Dict[str, Entity]
+

Returns a list of all entity declarations found in this document.

+
+ +
+
+property PackageBodies: Dict[str, PackageBody]
+

Returns a list of all package body declarations found in this document.

+
+ +
+
+property Packages: Dict[str, Package]
+

Returns a list of all package declarations found in this document.

+
+ +
+
+property Parent: ModelEntity
+

Returns a reference to the parent entity.

+
+
Returns:
+

Parent entity.

+
+
+
+ +
+
+property VerificationModes: Dict[str, VerificationMode]
+

Returns a list of all verification mode declarations found in this document.

+
+ +
+
+property VerificationProperties: Dict[str, VerificationProperty]
+

Returns a list of all verification property declarations found in this document.

+
+ +
+
+property VerificationUnits: Dict[str, VerificationUnit]
+

Returns a list of all verification unit declarations found in this document.

+
+ +
+
+_path: Path
+

path to the document. None if virtual document.

+
+ +
+
+_designUnits: List[DesignUnit]
+

List of all design units defined in a document.

+
+ +
+
+_contexts: Dict[str, Context]
+

Dictionary of all contexts defined in a document.

+
+ +
+
+_configurations: Dict[str, Configuration]
+

Dictionary of all configurations defined in a document.

+
+ +
+
+_entities: Dict[str, Entity]
+

Dictionary of all entities defined in a document.

+
+ +
+
+_architectures: Dict[str, Dict[str, Architecture]]
+

Dictionary of all architectures defined in a document.

+
+ +
+
+_packages: Dict[str, Package]
+

Dictionary of all packages defined in a document.

+
+ +
+
+_packageBodies: Dict[str, PackageBody]
+

Dictionary of all package bodies defined in a document.

+
+ +
+
+_verificationUnits: Dict[str, VerificationUnit]
+

Dictionary of all PSL verification units defined in a document.

+
+ +
+
+_verificationProperties: Dict[str, VerificationProperty]
+

Dictionary of all PSL verification properties defined in a document.

+
+ +
+
+_verificationModes: Dict[str, VerificationMode]
+

Dictionary of all PSL verification modes defined in a document.

+
+ +
+
+_documentation: Nullable[str]
+

The associated documentation of a model entity.

+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Filters.Comment.html b/pyVHDLParser/pyVHDLParser.Filters.Comment.html new file mode 100644 index 000000000..06497bb2a --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Filters.Comment.html @@ -0,0 +1,168 @@ + + + + + + + pyVHDLParser.Filters.Comment — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Filters.Comment

+
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Filters.html b/pyVHDLParser/pyVHDLParser.Filters.html new file mode 100644 index 000000000..495fd9e9f --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Filters.html @@ -0,0 +1,173 @@ + + + + + + + pyVHDLParser.Filters — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Filters

+

Submodules

+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Groups.Comment.html b/pyVHDLParser/pyVHDLParser.Groups.Comment.html new file mode 100644 index 000000000..1a4985300 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Groups.Comment.html @@ -0,0 +1,370 @@ + + + + + + + pyVHDLParser.Groups.Comment — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Groups.Comment

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Groups.Comment.CommentGroup[source]
+

Inheritance

+
+

Inheritance diagram of CommentGroup

+
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+__init__(previousGroup, startBlock, endBlock=None)
+
+
Parameters:
+
    +
  • previousGroup (Group) –

  • +
  • startBlock (Block) –

  • +
  • endBlock (Block) –

  • +
+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+ +
+
+class pyVHDLParser.Groups.Comment.WhitespaceGroup[source]
+

Inheritance

+
+

Inheritance diagram of WhitespaceGroup

+
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+__init__(previousGroup, startBlock, endBlock=None)
+
+
Parameters:
+
    +
  • previousGroup (Group) –

  • +
  • startBlock (Block) –

  • +
  • endBlock (Block) –

  • +
+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Groups.Concurrent.html b/pyVHDLParser/pyVHDLParser.Groups.Concurrent.html new file mode 100644 index 000000000..4d2cd1413 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Groups.Concurrent.html @@ -0,0 +1,459 @@ + + + + + + + pyVHDLParser.Groups.Concurrent — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Groups.Concurrent

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Groups.Concurrent.AssertGroup[source]
+

Inheritance

+
+

Inheritance diagram of AssertGroup

+
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+__init__(previousGroup, startBlock, endBlock=None)
+
+
Parameters:
+
    +
  • previousGroup (Group) –

  • +
  • startBlock (Block) –

  • +
  • endBlock (Block) –

  • +
+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+ +
+
+class pyVHDLParser.Groups.Concurrent.ReportGroup[source]
+

Inheritance

+
+

Inheritance diagram of ReportGroup

+
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+__init__(previousGroup, startBlock, endBlock=None)
+
+
Parameters:
+
    +
  • previousGroup (Group) –

  • +
  • startBlock (Block) –

  • +
  • endBlock (Block) –

  • +
+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+ +
+
+class pyVHDLParser.Groups.Concurrent.SignalAssignmentGroup[source]
+

Inheritance

+
+

Inheritance diagram of SignalAssignmentGroup

+
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+__init__(previousGroup, startBlock, endBlock=None)
+
+
Parameters:
+
    +
  • previousGroup (Group) –

  • +
  • startBlock (Block) –

  • +
  • endBlock (Block) –

  • +
+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Groups.DesignUnit.html b/pyVHDLParser/pyVHDLParser.Groups.DesignUnit.html new file mode 100644 index 000000000..c1ab28400 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Groups.DesignUnit.html @@ -0,0 +1,752 @@ + + + + + + + pyVHDLParser.Groups.DesignUnit — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Groups.DesignUnit

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Groups.DesignUnit.ContextGroup[source]
+

Inheritance

+
+

Inheritance diagram of ContextGroup

+
+
+__init__(previousGroup, startBlock, endBlock=None)[source]
+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+ +
+
+class pyVHDLParser.Groups.DesignUnit.EntityGroup[source]
+

Inheritance

+
+

Inheritance diagram of EntityGroup

+
+
+__init__(previousGroup, startBlock, endBlock=None)[source]
+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+ +
+
+class pyVHDLParser.Groups.DesignUnit.ArchitectureGroup[source]
+

Inheritance

+
+

Inheritance diagram of ArchitectureGroup

+
+
+__init__(previousGroup, startBlock, endBlock=None)[source]
+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+ +
+
+class pyVHDLParser.Groups.DesignUnit.PackageGroup[source]
+

Inheritance

+
+

Inheritance diagram of PackageGroup

+
+
+__init__(previousGroup, startBlock, endBlock=None)[source]
+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+ +
+
+class pyVHDLParser.Groups.DesignUnit.PackageBodyGroup[source]
+

Inheritance

+
+

Inheritance diagram of PackageBodyGroup

+
+
+__init__(previousGroup, startBlock, endBlock=None)[source]
+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+ +
+
+class pyVHDLParser.Groups.DesignUnit.ComponentGroup[source]
+

Inheritance

+
+

Inheritance diagram of ComponentGroup

+
+
+__init__(previousGroup, startBlock, endBlock=None)[source]
+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+ +
+
+class pyVHDLParser.Groups.DesignUnit.ConfigurationGroup[source]
+

Inheritance

+
+

Inheritance diagram of ConfigurationGroup

+
+
+__init__(previousGroup, startBlock, endBlock=None)[source]
+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Groups.List.html b/pyVHDLParser/pyVHDLParser.Groups.List.html new file mode 100644 index 000000000..73f7e7e20 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Groups.List.html @@ -0,0 +1,1402 @@ + + + + + + + pyVHDLParser.Groups.List — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Groups.List

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Groups.List.GenericListGroup[source]
+

Inheritance

+
+

Inheritance diagram of GenericListGroup

+
+
+__init__(previousGroup, startBlock, endBlock=None)[source]
+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+ +
+
+class pyVHDLParser.Groups.List.GenericListItemGroup[source]
+

Inheritance

+
+

Inheritance diagram of GenericListItemGroup

+
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+__init__(previousGroup, startBlock, endBlock=None)
+
+
Parameters:
+
    +
  • previousGroup (Group) –

  • +
  • startBlock (Block) –

  • +
  • endBlock (Block) –

  • +
+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+ +
+
+class pyVHDLParser.Groups.List.GenericMapGroup[source]
+

Inheritance

+
+

Inheritance diagram of GenericMapGroup

+
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+__init__(previousGroup, startBlock, endBlock=None)
+
+
Parameters:
+
    +
  • previousGroup (Group) –

  • +
  • startBlock (Block) –

  • +
  • endBlock (Block) –

  • +
+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+ +
+
+class pyVHDLParser.Groups.List.GenericMapItemGroup[source]
+

Inheritance

+
+

Inheritance diagram of GenericMapItemGroup

+
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+__init__(previousGroup, startBlock, endBlock=None)
+
+
Parameters:
+
    +
  • previousGroup (Group) –

  • +
  • startBlock (Block) –

  • +
  • endBlock (Block) –

  • +
+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+ +
+
+class pyVHDLParser.Groups.List.PortListGroup[source]
+

Inheritance

+
+

Inheritance diagram of PortListGroup

+
+
+__init__(previousGroup, startBlock, endBlock=None)[source]
+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+ +
+
+class pyVHDLParser.Groups.List.PortListItemGroup[source]
+

Inheritance

+
+

Inheritance diagram of PortListItemGroup

+
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+__init__(previousGroup, startBlock, endBlock=None)
+
+
Parameters:
+
    +
  • previousGroup (Group) –

  • +
  • startBlock (Block) –

  • +
  • endBlock (Block) –

  • +
+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+ +
+
+class pyVHDLParser.Groups.List.PortMapGroup[source]
+

Inheritance

+
+

Inheritance diagram of PortMapGroup

+
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+__init__(previousGroup, startBlock, endBlock=None)
+
+
Parameters:
+
    +
  • previousGroup (Group) –

  • +
  • startBlock (Block) –

  • +
  • endBlock (Block) –

  • +
+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+ +
+
+class pyVHDLParser.Groups.List.PortMapItemGroup[source]
+

Inheritance

+
+

Inheritance diagram of PortMapItemGroup

+
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+__init__(previousGroup, startBlock, endBlock=None)
+
+
Parameters:
+
    +
  • previousGroup (Group) –

  • +
  • startBlock (Block) –

  • +
  • endBlock (Block) –

  • +
+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+ +
+
+class pyVHDLParser.Groups.List.ParameterListGroup[source]
+

Inheritance

+
+

Inheritance diagram of ParameterListGroup

+
+
+__init__(previousGroup, startBlock, endBlock=None)[source]
+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+ +
+
+class pyVHDLParser.Groups.List.ParameterListItemGroup[source]
+

Inheritance

+
+

Inheritance diagram of ParameterListItemGroup

+
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+__init__(previousGroup, startBlock, endBlock=None)
+
+
Parameters:
+
    +
  • previousGroup (Group) –

  • +
  • startBlock (Block) –

  • +
  • endBlock (Block) –

  • +
+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+ +
+
+class pyVHDLParser.Groups.List.ParameterMapGroup[source]
+

Inheritance

+
+

Inheritance diagram of ParameterMapGroup

+
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+__init__(previousGroup, startBlock, endBlock=None)
+
+
Parameters:
+
    +
  • previousGroup (Group) –

  • +
  • startBlock (Block) –

  • +
  • endBlock (Block) –

  • +
+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+ +
+
+class pyVHDLParser.Groups.List.ParameterMapItemGroup[source]
+

Inheritance

+
+

Inheritance diagram of ParameterMapItemGroup

+
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+__init__(previousGroup, startBlock, endBlock=None)
+
+
Parameters:
+
    +
  • previousGroup (Group) –

  • +
  • startBlock (Block) –

  • +
  • endBlock (Block) –

  • +
+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+ +
+
+class pyVHDLParser.Groups.List.SensitivityListGroup[source]
+

Inheritance

+
+

Inheritance diagram of SensitivityListGroup

+
+
+__init__(previousGroup, startBlock, endBlock=None)[source]
+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+ +
+
+class pyVHDLParser.Groups.List.SensitivityListItemGroup[source]
+

Inheritance

+
+

Inheritance diagram of SensitivityListItemGroup

+
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+__init__(previousGroup, startBlock, endBlock=None)
+
+
Parameters:
+
    +
  • previousGroup (Group) –

  • +
  • startBlock (Block) –

  • +
  • endBlock (Block) –

  • +
+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Groups.Object.html b/pyVHDLParser/pyVHDLParser.Groups.Object.html new file mode 100644 index 000000000..b887d6bba --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Groups.Object.html @@ -0,0 +1,459 @@ + + + + + + + pyVHDLParser.Groups.Object — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Groups.Object

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Groups.Object.ConstantGroup[source]
+

Inheritance

+
+

Inheritance diagram of ConstantGroup

+
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+__init__(previousGroup, startBlock, endBlock=None)
+
+
Parameters:
+
    +
  • previousGroup (Group) –

  • +
  • startBlock (Block) –

  • +
  • endBlock (Block) –

  • +
+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+ +
+
+class pyVHDLParser.Groups.Object.VariableGroup[source]
+

Inheritance

+
+

Inheritance diagram of VariableGroup

+
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+__init__(previousGroup, startBlock, endBlock=None)
+
+
Parameters:
+
    +
  • previousGroup (Group) –

  • +
  • startBlock (Block) –

  • +
  • endBlock (Block) –

  • +
+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+ +
+
+class pyVHDLParser.Groups.Object.SignalGroup[source]
+

Inheritance

+
+

Inheritance diagram of SignalGroup

+
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+__init__(previousGroup, startBlock, endBlock=None)
+
+
Parameters:
+
    +
  • previousGroup (Group) –

  • +
  • startBlock (Block) –

  • +
  • endBlock (Block) –

  • +
+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Groups.Reference.html b/pyVHDLParser/pyVHDLParser.Groups.Reference.html new file mode 100644 index 000000000..9e4760b0e --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Groups.Reference.html @@ -0,0 +1,370 @@ + + + + + + + pyVHDLParser.Groups.Reference — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Groups.Reference

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Groups.Reference.LibraryGroup[source]
+

Inheritance

+
+

Inheritance diagram of LibraryGroup

+
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+__init__(previousGroup, startBlock, endBlock=None)
+
+
Parameters:
+
    +
  • previousGroup (Group) –

  • +
  • startBlock (Block) –

  • +
  • endBlock (Block) –

  • +
+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+ +
+
+class pyVHDLParser.Groups.Reference.UseGroup[source]
+

Inheritance

+
+

Inheritance diagram of UseGroup

+
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+__init__(previousGroup, startBlock, endBlock=None)
+
+
Parameters:
+
    +
  • previousGroup (Group) –

  • +
  • startBlock (Block) –

  • +
  • endBlock (Block) –

  • +
+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Groups.Sequential.Function.html b/pyVHDLParser/pyVHDLParser.Groups.Sequential.Function.html new file mode 100644 index 000000000..f1c5e03b4 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Groups.Sequential.Function.html @@ -0,0 +1,363 @@ + + + + + + + pyVHDLParser.Groups.Sequential.Function — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Groups.Sequential.Function

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Groups.Sequential.Function.FunctionGroup[source]
+

Inheritance

+
+

Inheritance diagram of FunctionGroup

+
+
+__init__(previousGroup, startBlock, endBlock=None)[source]
+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+ +
+
+class pyVHDLParser.Groups.Sequential.Function.ReturnTypeGroup[source]
+

Inheritance

+
+

Inheritance diagram of ReturnTypeGroup

+
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+__init__(previousGroup, startBlock, endBlock=None)
+
+
Parameters:
+
    +
  • previousGroup (Group) –

  • +
  • startBlock (Block) –

  • +
  • endBlock (Block) –

  • +
+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Groups.Sequential.Procedure.html b/pyVHDLParser/pyVHDLParser.Groups.Sequential.Procedure.html new file mode 100644 index 000000000..fe2d96534 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Groups.Sequential.Procedure.html @@ -0,0 +1,275 @@ + + + + + + + pyVHDLParser.Groups.Sequential.Procedure — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Groups.Sequential.Procedure

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Groups.Sequential.Procedure.ProcedureGroup[source]
+

Inheritance

+
+

Inheritance diagram of ProcedureGroup

+
+
+__init__(previousGroup, startBlock, endBlock=None)[source]
+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Groups.Sequential.Process.html b/pyVHDLParser/pyVHDLParser.Groups.Sequential.Process.html new file mode 100644 index 000000000..da9fd3ebc --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Groups.Sequential.Process.html @@ -0,0 +1,1419 @@ + + + + + + + pyVHDLParser.Groups.Sequential.Process — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Groups.Sequential.Process

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Groups.Sequential.Process.ProcessGroup[source]
+

Inheritance

+
+

Inheritance diagram of ProcessGroup

+
+
+__init__(previousGroup, startBlock, endBlock=None)[source]
+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+ +
+
+class pyVHDLParser.Groups.Sequential.Process.IfGroup[source]
+

Inheritance

+
+

Inheritance diagram of IfGroup

+
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+__init__(previousGroup, startBlock, endBlock=None)
+
+
Parameters:
+
    +
  • previousGroup (Group) –

  • +
  • startBlock (Block) –

  • +
  • endBlock (Block) –

  • +
+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+ +
+
+class pyVHDLParser.Groups.Sequential.Process.IfBranchGroup[source]
+

Inheritance

+
+

Inheritance diagram of IfBranchGroup

+
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+__init__(previousGroup, startBlock, endBlock=None)
+
+
Parameters:
+
    +
  • previousGroup (Group) –

  • +
  • startBlock (Block) –

  • +
  • endBlock (Block) –

  • +
+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+ +
+
+class pyVHDLParser.Groups.Sequential.Process.ElsIfBranchGroup[source]
+

Inheritance

+
+

Inheritance diagram of ElsIfBranchGroup

+
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+__init__(previousGroup, startBlock, endBlock=None)
+
+
Parameters:
+
    +
  • previousGroup (Group) –

  • +
  • startBlock (Block) –

  • +
  • endBlock (Block) –

  • +
+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+ +
+
+class pyVHDLParser.Groups.Sequential.Process.ElseBranchGroup[source]
+

Inheritance

+
+

Inheritance diagram of ElseBranchGroup

+
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+__init__(previousGroup, startBlock, endBlock=None)
+
+
Parameters:
+
    +
  • previousGroup (Group) –

  • +
  • startBlock (Block) –

  • +
  • endBlock (Block) –

  • +
+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+ +
+
+class pyVHDLParser.Groups.Sequential.Process.CaseGroup[source]
+

Inheritance

+
+

Inheritance diagram of CaseGroup

+
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+__init__(previousGroup, startBlock, endBlock=None)
+
+
Parameters:
+
    +
  • previousGroup (Group) –

  • +
  • startBlock (Block) –

  • +
  • endBlock (Block) –

  • +
+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+ +
+
+class pyVHDLParser.Groups.Sequential.Process.ChoiceGroup[source]
+

Inheritance

+
+

Inheritance diagram of ChoiceGroup

+
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+__init__(previousGroup, startBlock, endBlock=None)
+
+
Parameters:
+
    +
  • previousGroup (Group) –

  • +
  • startBlock (Block) –

  • +
  • endBlock (Block) –

  • +
+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+ +
+
+class pyVHDLParser.Groups.Sequential.Process.ForLoopGroup[source]
+

Inheritance

+
+

Inheritance diagram of ForLoopGroup

+
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+__init__(previousGroup, startBlock, endBlock=None)
+
+
Parameters:
+
    +
  • previousGroup (Group) –

  • +
  • startBlock (Block) –

  • +
  • endBlock (Block) –

  • +
+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+ +
+
+class pyVHDLParser.Groups.Sequential.Process.WhileLoopGroup[source]
+

Inheritance

+
+

Inheritance diagram of WhileLoopGroup

+
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+__init__(previousGroup, startBlock, endBlock=None)
+
+
Parameters:
+
    +
  • previousGroup (Group) –

  • +
  • startBlock (Block) –

  • +
  • endBlock (Block) –

  • +
+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+ +
+
+class pyVHDLParser.Groups.Sequential.Process.NextGroup[source]
+

Inheritance

+
+

Inheritance diagram of NextGroup

+
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+__init__(previousGroup, startBlock, endBlock=None)
+
+
Parameters:
+
    +
  • previousGroup (Group) –

  • +
  • startBlock (Block) –

  • +
  • endBlock (Block) –

  • +
+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+ +
+
+class pyVHDLParser.Groups.Sequential.Process.ExitGroup[source]
+

Inheritance

+
+

Inheritance diagram of ExitGroup

+
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+__init__(previousGroup, startBlock, endBlock=None)
+
+
Parameters:
+
    +
  • previousGroup (Group) –

  • +
  • startBlock (Block) –

  • +
  • endBlock (Block) –

  • +
+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+ +
+
+class pyVHDLParser.Groups.Sequential.Process.ReturnGroup[source]
+

Inheritance

+
+

Inheritance diagram of ReturnGroup

+
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+__init__(previousGroup, startBlock, endBlock=None)
+
+
Parameters:
+
    +
  • previousGroup (Group) –

  • +
  • startBlock (Block) –

  • +
  • endBlock (Block) –

  • +
+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+ +
+
+class pyVHDLParser.Groups.Sequential.Process.VariableAssignmentGroup[source]
+

Inheritance

+
+

Inheritance diagram of VariableAssignmentGroup

+
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+__init__(previousGroup, startBlock, endBlock=None)
+
+
Parameters:
+
    +
  • previousGroup (Group) –

  • +
  • startBlock (Block) –

  • +
  • endBlock (Block) –

  • +
+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+ +
+
+class pyVHDLParser.Groups.Sequential.Process.SignalAssignmentGroup[source]
+

Inheritance

+
+

Inheritance diagram of SignalAssignmentGroup

+
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+__init__(previousGroup, startBlock, endBlock=None)
+
+
Parameters:
+
    +
  • previousGroup (Group) –

  • +
  • startBlock (Block) –

  • +
  • endBlock (Block) –

  • +
+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Groups.Sequential.html b/pyVHDLParser/pyVHDLParser.Groups.Sequential.html new file mode 100644 index 000000000..bb68740fb --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Groups.Sequential.html @@ -0,0 +1,198 @@ + + + + + + + pyVHDLParser.Groups.Sequential — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Groups.Sequential

+

Submodules

+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Groups.html b/pyVHDLParser/pyVHDLParser.Groups.html new file mode 100644 index 000000000..e01a98131 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Groups.html @@ -0,0 +1,1239 @@ + + + + + + + pyVHDLParser.Groups — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Groups

+

Submodules

+ +

Exceptions

+ +

Classes

+ +
+

Exceptions

+
+
+exception pyVHDLParser.Groups.GroupParserException[source]
+

Inheritance

+
+

Inheritance diagram of GroupParserException

+
+
+__init__(message, block)[source]
+
+
Parameters:
+
    +
  • message (str) –

  • +
  • block (Block) –

  • +
+
+
+
+ +
+
+__new__(**kwargs)
+
+ +
+ +
+

Classes

+
+
+class pyVHDLParser.Groups.BlockIterator[source]
+

Inheritance

+
+

Inheritance diagram of BlockIterator

+
+
+__init__(parserState, blockGenerator)[source]
+
+
Parameters:
+

blockGenerator (Iterator) –

+
+
+
+ +
+ +
+
+class pyVHDLParser.Groups.BlockToGroupParser[source]
+

Represents the current state of a block-to-group parser.

+

Inheritance

+
+

Inheritance diagram of BlockToGroupParser

+
+
+__init__(blockGenerator)[source]
+

Initializes the parser state.

+
+
Parameters:
+

blockGenerator (Generator[Block, Any, None]) –

+
+
+
+ +
+
+__eq__(other)[source]
+

Return true if parser state is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (Callable[[ParserState], bool]) –

+
+
+
+ +
+
+__ne__(other)[source]
+

Return true if parser state is not equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (Callable[[ParserState], bool]) –

+
+
+
+ +
+
+__str__()[source]
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__call__()[source]
+

Call self as a function.

+
+
Return type:
+

Generator[Group, None, None]

+
+
+
+ +
+
+__hash__ = None
+
+ +
+ +
+
+class pyVHDLParser.Groups.MetaGroup[source]
+

Register all state*** methods in an array called ‘__STATES__’

+

Inheritance

+
+

Inheritance diagram of MetaGroup

+
+
+static __new__(cls, className, baseClasses, classMembers)[source]
+

Construct a new class using this meta-class.

+
+
Parameters:
+
    +
  • className – The name of the class to construct.

  • +
  • baseClasses – The tuple of base-classes the class is derived from.

  • +
  • members – The dictionary of members for the constructed class.

  • +
  • singleton – If true, make the class a Singleton.

  • +
  • useSlots – If true, store object attributes in __slots__ instead of __dict__.

  • +
  • classMembers (dict) –

  • +
+
+
Returns:
+

The new class.

+
+
Raises:
+
+
+
+
+ +
+
+__base__
+

alias of ExtendedType

+
+ +
+
+__call__(*args, **kwargs)
+

Call self as a function.

+
+ +
+
+__delattr__(name, /)
+

Implement delattr(self, name).

+
+ +
+
+__dir__()
+

Specialized __dir__ implementation for types.

+
+ +
+
+__getattribute__(name, /)
+

Return getattr(self, name).

+
+ +
+
+__init__(*args, **kwargs)
+
+ +
+
+__instancecheck__(instance, /)
+

Check if an object is an instance.

+
+ +
+
+__or__(value, /)
+

Return self|value.

+
+ +
+
+__prepare__() dict
+

used to create the namespace for the class statement

+
+ +
+
+__repr__()
+

Return repr(self).

+
+ +
+
+__ror__(value, /)
+

Return value|self.

+
+ +
+
+__setattr__(name, value, /)
+

Implement setattr(self, name, value).

+
+ +
+
+__sizeof__()
+

Return memory consumption of the type object.

+
+ +
+
+__subclasscheck__(subclass, /)
+

Check if a class is a subclass.

+
+ +
+
+__subclasses__()
+

Return a list of immediate subclasses.

+
+ +
+
+__text_signature__ = None
+
+ +
+
+classmethod _checkForAbstractMethods(baseClasses, members)
+

Check if the current class contains abstract methods and return a tuple of them.

+

These abstract methods might be inherited from any base-class. If there are inherited abstract methods, check if +they are now implemented (overridden) by the current class that’s right now constructed.

+
+
Parameters:
+
    +
  • baseClasses (Tuple[type]) – The tuple of base-classes the class is derived from.

  • +
  • members (Dict[str, Any]) – The dictionary of members for the constructed class.

  • +
+
+
Return type:
+

Tuple[Dict[str, Callable], Dict[str, Any]]

+
+
Returns:
+

A tuple of abstract method’s names.

+
+
+
+ +
+
+static _wrapNewMethodIfAbstract(newClass)
+

If the class has abstract methods, replace the _new__ method, so it raises an exception.

+
+
Parameters:
+

newClass – The newly constructed class for further modifications.

+
+
Return type:
+

bool

+
+
Returns:
+

True, if the class is abstract.

+
+
Raises:
+

AbstractClassError – If the class is abstract and can’t be instantiated.

+
+
+
+ +
+
+static _wrapNewMethodIfSingleton(newClass, singleton)
+

If a class is a singleton, wrap the _new__ method, so it returns a cached object, if a first object was created.

+

Only the first object creation initializes the object.

+

This implementation is threadsafe.

+
+
Parameters:
+
    +
  • newClass – The newly constructed class for further modifications.

  • +
  • singleton (bool) – If True, the class allows only a single instance to exist.

  • +
+
+
Return type:
+

bool

+
+
Returns:
+

True, if the class is a singleton.

+
+
+
+ +
+
+mro()
+

Return a type’s method resolution order.

+
+ +
+ +
+
+class pyVHDLParser.Groups.Group[source]
+

Inheritance

+
+

Inheritance diagram of Group

+
+
+__init__(previousGroup, startBlock, endBlock=None)[source]
+
+
Parameters:
+
    +
  • previousGroup (Group) –

  • +
  • startBlock (Block) –

  • +
  • endBlock (Block) –

  • +
+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+__repr__()[source]
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()[source]
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+ +
+
+class pyVHDLParser.Groups.StartOfGroup[source]
+

Inheritance

+
+

Inheritance diagram of StartOfGroup

+
+
+__init__(startBlock)[source]
+
+
Parameters:
+

startBlock (Block) –

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+__str__()[source]
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+ +
+
+class pyVHDLParser.Groups.EndOfGroup[source]
+

Inheritance

+
+

Inheritance diagram of EndOfGroup

+
+
+__init__(endBlock)[source]
+
+
Parameters:
+

endBlock (Block) –

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+
+__str__()[source]
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+ +
+
+class pyVHDLParser.Groups.StartOfDocumentGroup[source]
+

Inheritance

+
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+
+__init__(startBlock)[source]
+
+
Parameters:
+

startBlock (Block) –

+
+
+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+ +
+
+class pyVHDLParser.Groups.EndOfDocumentGroup[source]
+

Inheritance

+
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+__init__(endBlock)
+
+
Parameters:
+

endBlock (Block) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+ +
+
+class pyVHDLParser.Groups.StartOfSnippetGroup[source]
+

Inheritance

+
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+__init__(startBlock)
+
+
Parameters:
+

startBlock (Block) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+ +
+
+class pyVHDLParser.Groups.EndOfSnippetGroup[source]
+

Inheritance

+
+
+EndBlock: Block
+

Reference to the last block in the scope of this group.

+
+ +
+
+InnerGroup: Group
+

Reference to the first inner group.

+
+ +
+
+MultiPart: bool
+

True, if this group has multiple parts.

+
+ +
+
+NextGroup: Group
+

Reference to the next group.

+
+ +
+
+StartBlock: Block
+

Reference to the first block in the scope of this group.

+
+ +
+
+__init__(endBlock)
+
+
Parameters:
+

endBlock (Block) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousGroup: Group
+

Reference to the previous group.

+
+ +
+
+_subGroups: Dict[MetaGroup, Group]
+

References to all inner groups by group type.

+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.LanguageModel.DesignUnit.html b/pyVHDLParser/pyVHDLParser.LanguageModel.DesignUnit.html new file mode 100644 index 000000000..6689cbbda --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.LanguageModel.DesignUnit.html @@ -0,0 +1,1490 @@ + + + + + + + pyVHDLParser.LanguageModel.DesignUnit — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.LanguageModel.DesignUnit

+

Classes

+
    +
  • Context: +A PrimaryUnit is a base-class for all primary units.

  • +
  • Entity: +A PrimaryUnit is a base-class for all primary units.

  • +
  • Architecture: +A SecondaryUnit is a base-class for all secondary units.

  • +
  • Configuration: +A PrimaryUnit is a base-class for all primary units.

  • +
  • Package: +A PrimaryUnit is a base-class for all primary units.

  • +
  • PackageBody: +A SecondaryUnit is a base-class for all secondary units.

  • +
+
+

Classes

+
+
+class pyVHDLParser.LanguageModel.DesignUnit.Context[source]
+

Inheritance

+
+
+_parent: ModelEntity
+

Reference to a parent entity in the model.

+
+ +
+
+property ContextItems: List[Union[LibraryClause, UseClause, ContextReference]]
+

Read-only property to access the sequence of all context items comprising library, use and context clauses +(_contextItems).

+
+
Returns:
+

Sequence of context items.

+
+
+
+ +
+
+property ContextReferences: List[ContextReference]
+

Read-only property to access the sequence of context clauses (_contextReferences).

+
+
Returns:
+

Sequence of context clauses.

+
+
+
+ +
+
+property Documentation: Optional[str]
+

Returns a model entity’s associated documentation.

+
+
Returns:
+

Associated documentation of a model entity.

+
+
+
+ +
+
+property Identifier: str
+

Returns a model entity’s identifier (name).

+
+
Returns:
+

Name of a model entity.

+
+
+
+ +
+
+property LibraryReferences: List[LibraryClause]
+

Read-only property to access the sequence of library clauses (_libraryReferences).

+
+
Returns:
+

Sequence of library clauses.

+
+
+
+ +
+
+property NormalizedIdentifier: str
+

Returns a model entity’s normalized identifier (lower case name).

+
+
Returns:
+

Normalized name of a model entity.

+
+
+
+ +
+
+property PackageReferences: List[UseClause]
+

Read-only property to access the sequence of use clauses (_packageReferences).

+
+
Returns:
+

Sequence of use clauses.

+
+
+
+ +
+
+property Parent: ModelEntity
+

Returns a reference to the parent entity.

+
+
Returns:
+

Parent entity.

+
+
+
+ +
+
+__init__(identifier, references=None, documentation=None)[source]
+

Initializes a design unit.

+
+
Parameters:
+
    +
  • identifier (str) – Identifier (name) of the design unit.

  • +
  • contextItems – A sequence of library, use or context clauses.

  • +
  • documentation (str) – Associated documentation of the design unit.

  • +
  • references (Iterable[Union[LibraryClause, UseClause, ContextReference]]) –

  • +
+
+
+
+ +
+
+__str__()[source]
+

Return str(self).

+
+ +
+
+_libraryReferences: List[LibraryClause]
+

List of library clauses.

+
+ +
+
+_packageReferences: List[UseClause]
+

List of use clauses.

+
+ +
+
+_contextReferences: List[ContextReference]
+

List of context clauses.

+
+ +
+
+_library: Library
+

The VHDL library, the design unit was analyzed into.

+
+ +
+
+_contextItems: List['ContextUnion']
+

List of all context items (library, use and context clauses).

+
+ +
+
+_referencedLibraries: Dict[str, 'Library']
+

Referenced libraries based on explicit library clauses or implicit inheritance

+
+ +
+
+_referencedPackages: Dict[str, Dict[str, 'Package']]
+

Referenced packages based on explicit use clauses or implicit inheritance

+
+ +
+
+_referencedContexts: Dict[str, 'Context']
+

Referenced contexts based on explicit context references or implicit inheritance

+
+ +
+
+_dependencyVertex: Vertex[None, None, str, 'DesignUnit', None, None, None, None, None, None, None, None, None, None, None, None, None]
+

The vertex in the dependency graph

+
+ +
+
+_hierarchyVertex: Vertex[None, None, str, 'DesignUnit', None, None, None, None, None, None, None, None, None, None, None, None, None]
+

The vertex in the hierarchy graph

+
+ +
+
+_identifier: str
+

The identifier of a model entity.

+
+ +
+
+_normalizedIdentifier: str
+

The normalized (lower case) identifier of a model entity.

+
+ +
+
+_documentation: Nullable[str]
+

The associated documentation of a model entity.

+
+ +
+ +
+
+class pyVHDLParser.LanguageModel.DesignUnit.Entity[source]
+

Inheritance

+
+

Inheritance diagram of Entity

+
+
+_parent: ModelEntity
+

Reference to a parent entity in the model.

+
+ +
+
+property ContextItems: List[Union[LibraryClause, UseClause, ContextReference]]
+

Read-only property to access the sequence of all context items comprising library, use and context clauses +(_contextItems).

+
+
Returns:
+

Sequence of context items.

+
+
+
+ +
+
+property ContextReferences: List[ContextReference]
+

Read-only property to access the sequence of context clauses (_contextReferences).

+
+
Returns:
+

Sequence of context clauses.

+
+
+
+ +
+
+property Documentation: Optional[str]
+

Returns a model entity’s associated documentation.

+
+
Returns:
+

Associated documentation of a model entity.

+
+
+
+ +
+
+property Identifier: str
+

Returns a model entity’s identifier (name).

+
+
Returns:
+

Name of a model entity.

+
+
+
+ +
+
+property LibraryReferences: List[LibraryClause]
+

Read-only property to access the sequence of library clauses (_libraryReferences).

+
+
Returns:
+

Sequence of library clauses.

+
+
+
+ +
+
+property NormalizedIdentifier: str
+

Returns a model entity’s normalized identifier (lower case name).

+
+
Returns:
+

Normalized name of a model entity.

+
+
+
+ +
+
+property PackageReferences: List[UseClause]
+

Read-only property to access the sequence of use clauses (_packageReferences).

+
+
Returns:
+

Sequence of use clauses.

+
+
+
+ +
+
+property Parent: ModelEntity
+

Returns a reference to the parent entity.

+
+
Returns:
+

Parent entity.

+
+
+
+ +
+
+__init__(identifier, contextItems=None, genericItems=None, portItems=None, declaredItems=None, statements=None, documentation=None)[source]
+

Initializes a design unit.

+
+
Parameters:
+
    +
  • identifier (str) – Identifier (name) of the design unit.

  • +
  • contextItems (Iterable[Union[LibraryClause, UseClause, ContextReference]]) – A sequence of library, use or context clauses.

  • +
  • documentation (str) – Associated documentation of the design unit.

  • +
  • genericItems (Iterable[GenericInterfaceItem]) –

  • +
  • portItems (Iterable[PortInterfaceItem]) –

  • +
  • declaredItems (Iterable) –

  • +
  • statements (Iterable[ConcurrentStatement]) –

  • +
+
+
+
+ +
+
+__repr__()[source]
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()[source]
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_library: Library
+

The VHDL library, the design unit was analyzed into.

+
+ +
+
+_contextItems: List['ContextUnion']
+

List of all context items (library, use and context clauses).

+
+ +
+
+_libraryReferences: List['LibraryClause']
+

List of library clauses.

+
+ +
+
+_packageReferences: List['UseClause']
+

List of use clauses.

+
+ +
+
+_contextReferences: List['ContextReference']
+

List of context clauses.

+
+ +
+
+_referencedLibraries: Dict[str, 'Library']
+

Referenced libraries based on explicit library clauses or implicit inheritance

+
+ +
+
+_referencedPackages: Dict[str, Dict[str, 'Package']]
+

Referenced packages based on explicit use clauses or implicit inheritance

+
+ +
+
+_referencedContexts: Dict[str, 'Context']
+

Referenced contexts based on explicit context references or implicit inheritance

+
+ +
+
+_dependencyVertex: Vertex[None, None, str, 'DesignUnit', None, None, None, None, None, None, None, None, None, None, None, None, None]
+

The vertex in the dependency graph

+
+ +
+
+_hierarchyVertex: Vertex[None, None, str, 'DesignUnit', None, None, None, None, None, None, None, None, None, None, None, None, None]
+

The vertex in the hierarchy graph

+
+ +
+
+_identifier: str
+

The identifier of a model entity.

+
+ +
+
+_normalizedIdentifier: str
+

The normalized (lower case) identifier of a model entity.

+
+ +
+
+_documentation: Nullable[str]
+

The associated documentation of a model entity.

+
+ +
+ +
+
+class pyVHDLParser.LanguageModel.DesignUnit.Architecture[source]
+

Inheritance

+
+
+_parent: ModelEntity
+

Reference to a parent entity in the model.

+
+ +
+
+property ContextItems: List[Union[LibraryClause, UseClause, ContextReference]]
+

Read-only property to access the sequence of all context items comprising library, use and context clauses +(_contextItems).

+
+
Returns:
+

Sequence of context items.

+
+
+
+ +
+
+property ContextReferences: List[ContextReference]
+

Read-only property to access the sequence of context clauses (_contextReferences).

+
+
Returns:
+

Sequence of context clauses.

+
+
+
+ +
+
+property Documentation: Optional[str]
+

Returns a model entity’s associated documentation.

+
+
Returns:
+

Associated documentation of a model entity.

+
+
+
+ +
+
+property Identifier: str
+

Returns a model entity’s identifier (name).

+
+
Returns:
+

Name of a model entity.

+
+
+
+ +
+
+property LibraryReferences: List[LibraryClause]
+

Read-only property to access the sequence of library clauses (_libraryReferences).

+
+
Returns:
+

Sequence of library clauses.

+
+
+
+ +
+
+property NormalizedIdentifier: str
+

Returns a model entity’s normalized identifier (lower case name).

+
+
Returns:
+

Normalized name of a model entity.

+
+
+
+ +
+
+property PackageReferences: List[UseClause]
+

Read-only property to access the sequence of use clauses (_packageReferences).

+
+
Returns:
+

Sequence of use clauses.

+
+
+
+ +
+
+property Parent: ModelEntity
+

Returns a reference to the parent entity.

+
+
Returns:
+

Parent entity.

+
+
+
+ +
+
+__init__(identifier, entity, contextItems=None, declaredItems=None, statements=None, documentation=None)[source]
+

Initializes a design unit.

+
+
Parameters:
+
    +
  • identifier (str) – Identifier (name) of the design unit.

  • +
  • contextItems (Iterable[Context]) – A sequence of library, use or context clauses.

  • +
  • documentation (str) – Associated documentation of the design unit.

  • +
  • entity (EntitySymbol) –

  • +
  • declaredItems (Iterable) –

  • +
  • statements (Iterable[ConcurrentStatement]) –

  • +
+
+
+
+ +
+
+__repr__()[source]
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()[source]
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_library: Library = None
+

The VHDL library, the design unit was analyzed into.

+
+ +
+
+_contextItems: List['ContextUnion']
+

List of all context items (library, use and context clauses).

+
+ +
+
+_libraryReferences: List['LibraryClause']
+

List of library clauses.

+
+ +
+
+_packageReferences: List['UseClause']
+

List of use clauses.

+
+ +
+
+_contextReferences: List['ContextReference']
+

List of context clauses.

+
+ +
+
+_referencedLibraries: Dict[str, 'Library']
+

Referenced libraries based on explicit library clauses or implicit inheritance

+
+ +
+
+_referencedPackages: Dict[str, Dict[str, 'Package']]
+

Referenced packages based on explicit use clauses or implicit inheritance

+
+ +
+
+_referencedContexts: Dict[str, 'Context']
+

Referenced contexts based on explicit context references or implicit inheritance

+
+ +
+
+_dependencyVertex: Vertex[None, None, str, 'DesignUnit', None, None, None, None, None, None, None, None, None, None, None, None, None]
+

The vertex in the dependency graph

+
+ +
+
+_hierarchyVertex: Vertex[None, None, str, 'DesignUnit', None, None, None, None, None, None, None, None, None, None, None, None, None]
+

The vertex in the hierarchy graph

+
+ +
+
+_identifier: str
+

The identifier of a model entity.

+
+ +
+
+_normalizedIdentifier: str
+

The normalized (lower case) identifier of a model entity.

+
+ +
+
+_documentation: Nullable[str]
+

The associated documentation of a model entity.

+
+ +
+ +
+
+class pyVHDLParser.LanguageModel.DesignUnit.Configuration[source]
+

Inheritance

+
+
+_parent: ModelEntity
+

Reference to a parent entity in the model.

+
+ +
+
+property ContextItems: List[Union[LibraryClause, UseClause, ContextReference]]
+

Read-only property to access the sequence of all context items comprising library, use and context clauses +(_contextItems).

+
+
Returns:
+

Sequence of context items.

+
+
+
+ +
+
+property ContextReferences: List[ContextReference]
+

Read-only property to access the sequence of context clauses (_contextReferences).

+
+
Returns:
+

Sequence of context clauses.

+
+
+
+ +
+
+property Documentation: Optional[str]
+

Returns a model entity’s associated documentation.

+
+
Returns:
+

Associated documentation of a model entity.

+
+
+
+ +
+
+property Identifier: str
+

Returns a model entity’s identifier (name).

+
+
Returns:
+

Name of a model entity.

+
+
+
+ +
+
+property LibraryReferences: List[LibraryClause]
+

Read-only property to access the sequence of library clauses (_libraryReferences).

+
+
Returns:
+

Sequence of library clauses.

+
+
+
+ +
+
+property NormalizedIdentifier: str
+

Returns a model entity’s normalized identifier (lower case name).

+
+
Returns:
+

Normalized name of a model entity.

+
+
+
+ +
+
+property PackageReferences: List[UseClause]
+

Read-only property to access the sequence of use clauses (_packageReferences).

+
+
Returns:
+

Sequence of use clauses.

+
+
+
+ +
+
+property Parent: ModelEntity
+

Returns a reference to the parent entity.

+
+
Returns:
+

Parent entity.

+
+
+
+ +
+
+__init__(identifier, contextItems=None, documentation=None)[source]
+

Initializes a design unit.

+
+
Parameters:
+
    +
  • identifier (str) – Identifier (name) of the design unit.

  • +
  • contextItems (Iterable[Context]) – A sequence of library, use or context clauses.

  • +
  • documentation (str) – Associated documentation of the design unit.

  • +
+
+
+
+ +
+
+__repr__()[source]
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()[source]
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_library: Library
+

The VHDL library, the design unit was analyzed into.

+
+ +
+
+_contextItems: List[ContextUnion]
+

List of all context items (library, use and context clauses).

+
+ +
+
+_libraryReferences: List[LibraryClause]
+

List of library clauses.

+
+ +
+
+_packageReferences: List[UseClause]
+

List of use clauses.

+
+ +
+
+_contextReferences: List[ContextReference]
+

List of context clauses.

+
+ +
+
+_referencedLibraries: Dict[str, Library]
+

Referenced libraries based on explicit library clauses or implicit inheritance

+
+ +
+
+_referencedPackages: Dict[str, Dict[str, Package]]
+

Referenced packages based on explicit use clauses or implicit inheritance

+
+ +
+
+_referencedContexts: Dict[str, Context]
+

Referenced contexts based on explicit context references or implicit inheritance

+
+ +
+
+_dependencyVertex: Vertex[None, None, str, DesignUnit, None, None, None, None, None, None, None, None, None, None, None, None, None]
+

The vertex in the dependency graph

+
+ +
+
+_hierarchyVertex: Vertex[None, None, str, DesignUnit, None, None, None, None, None, None, None, None, None, None, None, None, None]
+

The vertex in the hierarchy graph

+
+ +
+
+_identifier: str
+

The identifier of a model entity.

+
+ +
+
+_normalizedIdentifier: str
+

The normalized (lower case) identifier of a model entity.

+
+ +
+
+_documentation: Nullable[str]
+

The associated documentation of a model entity.

+
+ +
+ +
+
+class pyVHDLParser.LanguageModel.DesignUnit.Package[source]
+

Inheritance

+
+
+_parent: ModelEntity
+

Reference to a parent entity in the model.

+
+ +
+
+property ContextItems: List[Union[LibraryClause, UseClause, ContextReference]]
+

Read-only property to access the sequence of all context items comprising library, use and context clauses +(_contextItems).

+
+
Returns:
+

Sequence of context items.

+
+
+
+ +
+
+property ContextReferences: List[ContextReference]
+

Read-only property to access the sequence of context clauses (_contextReferences).

+
+
Returns:
+

Sequence of context clauses.

+
+
+
+ +
+
+property Documentation: Optional[str]
+

Returns a model entity’s associated documentation.

+
+
Returns:
+

Associated documentation of a model entity.

+
+
+
+ +
+
+property Identifier: str
+

Returns a model entity’s identifier (name).

+
+
Returns:
+

Name of a model entity.

+
+
+
+ +
+
+property LibraryReferences: List[LibraryClause]
+

Read-only property to access the sequence of library clauses (_libraryReferences).

+
+
Returns:
+

Sequence of library clauses.

+
+
+
+ +
+
+property NormalizedIdentifier: str
+

Returns a model entity’s normalized identifier (lower case name).

+
+
Returns:
+

Normalized name of a model entity.

+
+
+
+ +
+
+property PackageReferences: List[UseClause]
+

Read-only property to access the sequence of use clauses (_packageReferences).

+
+
Returns:
+

Sequence of use clauses.

+
+
+
+ +
+
+property Parent: ModelEntity
+

Returns a reference to the parent entity.

+
+
Returns:
+

Parent entity.

+
+
+
+ +
+
+__init__(identifier, contextItems=None, genericItems=None, declaredItems=None, documentation=None)[source]
+

Initializes a design unit.

+
+
Parameters:
+
    +
  • identifier (str) – Identifier (name) of the design unit.

  • +
  • contextItems (Iterable[Context]) – A sequence of library, use or context clauses.

  • +
  • documentation (str) – Associated documentation of the design unit.

  • +
  • genericItems (Iterable[GenericInterfaceItem]) –

  • +
  • declaredItems (Iterable) –

  • +
+
+
+
+ +
+
+__repr__()[source]
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()[source]
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_library: Library
+

The VHDL library, the design unit was analyzed into.

+
+ +
+
+_contextItems: List['ContextUnion']
+

List of all context items (library, use and context clauses).

+
+ +
+
+_libraryReferences: List['LibraryClause']
+

List of library clauses.

+
+ +
+
+_packageReferences: List['UseClause']
+

List of use clauses.

+
+ +
+
+_contextReferences: List['ContextReference']
+

List of context clauses.

+
+ +
+
+_referencedLibraries: Dict[str, 'Library']
+

Referenced libraries based on explicit library clauses or implicit inheritance

+
+ +
+
+_referencedPackages: Dict[str, Dict[str, 'Package']]
+

Referenced packages based on explicit use clauses or implicit inheritance

+
+ +
+
+_referencedContexts: Dict[str, 'Context']
+

Referenced contexts based on explicit context references or implicit inheritance

+
+ +
+
+_dependencyVertex: Vertex[None, None, str, 'DesignUnit', None, None, None, None, None, None, None, None, None, None, None, None, None]
+

The vertex in the dependency graph

+
+ +
+
+_hierarchyVertex: Vertex[None, None, str, 'DesignUnit', None, None, None, None, None, None, None, None, None, None, None, None, None]
+

The vertex in the hierarchy graph

+
+ +
+
+_identifier: str
+

The identifier of a model entity.

+
+ +
+
+_normalizedIdentifier: str
+

The normalized (lower case) identifier of a model entity.

+
+ +
+
+_documentation: Nullable[str]
+

The associated documentation of a model entity.

+
+ +
+ +
+
+class pyVHDLParser.LanguageModel.DesignUnit.PackageBody[source]
+

Inheritance

+
+
+_parent: ModelEntity
+

Reference to a parent entity in the model.

+
+ +
+
+property ContextItems: List[Union[LibraryClause, UseClause, ContextReference]]
+

Read-only property to access the sequence of all context items comprising library, use and context clauses +(_contextItems).

+
+
Returns:
+

Sequence of context items.

+
+
+
+ +
+
+property ContextReferences: List[ContextReference]
+

Read-only property to access the sequence of context clauses (_contextReferences).

+
+
Returns:
+

Sequence of context clauses.

+
+
+
+ +
+
+property Documentation: Optional[str]
+

Returns a model entity’s associated documentation.

+
+
Returns:
+

Associated documentation of a model entity.

+
+
+
+ +
+
+property Identifier: str
+

Returns a model entity’s identifier (name).

+
+
Returns:
+

Name of a model entity.

+
+
+
+ +
+
+property LibraryReferences: List[LibraryClause]
+

Read-only property to access the sequence of library clauses (_libraryReferences).

+
+
Returns:
+

Sequence of library clauses.

+
+
+
+ +
+
+property NormalizedIdentifier: str
+

Returns a model entity’s normalized identifier (lower case name).

+
+
Returns:
+

Normalized name of a model entity.

+
+
+
+ +
+
+property PackageReferences: List[UseClause]
+

Read-only property to access the sequence of use clauses (_packageReferences).

+
+
Returns:
+

Sequence of use clauses.

+
+
+
+ +
+
+property Parent: ModelEntity
+

Returns a reference to the parent entity.

+
+
Returns:
+

Parent entity.

+
+
+
+ +
+
+__init__(packageSymbol, contextItems=None, declaredItems=None, documentation=None)[source]
+

Initializes a design unit.

+
+
Parameters:
+
    +
  • identifier – Identifier (name) of the design unit.

  • +
  • contextItems (Iterable[Context]) – A sequence of library, use or context clauses.

  • +
  • documentation (str) – Associated documentation of the design unit.

  • +
  • packageSymbol (PackageSymbol) –

  • +
  • declaredItems (Iterable) –

  • +
+
+
+
+ +
+
+__repr__()[source]
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()[source]
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_library: Library
+

The VHDL library, the design unit was analyzed into.

+
+ +
+
+_contextItems: List['ContextUnion']
+

List of all context items (library, use and context clauses).

+
+ +
+
+_libraryReferences: List['LibraryClause']
+

List of library clauses.

+
+ +
+
+_packageReferences: List['UseClause']
+

List of use clauses.

+
+ +
+
+_contextReferences: List['ContextReference']
+

List of context clauses.

+
+ +
+
+_referencedLibraries: Dict[str, 'Library']
+

Referenced libraries based on explicit library clauses or implicit inheritance

+
+ +
+
+_referencedPackages: Dict[str, Dict[str, 'Package']]
+

Referenced packages based on explicit use clauses or implicit inheritance

+
+ +
+
+_referencedContexts: Dict[str, 'Context']
+

Referenced contexts based on explicit context references or implicit inheritance

+
+ +
+
+_dependencyVertex: Vertex[None, None, str, 'DesignUnit', None, None, None, None, None, None, None, None, None, None, None, None, None]
+

The vertex in the dependency graph

+
+ +
+
+_hierarchyVertex: Vertex[None, None, str, 'DesignUnit', None, None, None, None, None, None, None, None, None, None, None, None, None]
+

The vertex in the hierarchy graph

+
+ +
+
+_identifier: str
+

The identifier of a model entity.

+
+ +
+
+_normalizedIdentifier: str
+

The normalized (lower case) identifier of a model entity.

+
+ +
+
+_documentation: Nullable[str]
+

The associated documentation of a model entity.

+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.LanguageModel.Expression.html b/pyVHDLParser/pyVHDLParser.LanguageModel.Expression.html new file mode 100644 index 000000000..4135360a7 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.LanguageModel.Expression.html @@ -0,0 +1,171 @@ + + + + + + + pyVHDLParser.LanguageModel.Expression — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.LanguageModel.Expression

+
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.LanguageModel.InterfaceItem.html b/pyVHDLParser/pyVHDLParser.LanguageModel.InterfaceItem.html new file mode 100644 index 000000000..46a8d919a --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.LanguageModel.InterfaceItem.html @@ -0,0 +1,171 @@ + + + + + + + pyVHDLParser.LanguageModel.InterfaceItem — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.LanguageModel.InterfaceItem

+
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.LanguageModel.Reference.html b/pyVHDLParser/pyVHDLParser.LanguageModel.Reference.html new file mode 100644 index 000000000..06c2b9c21 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.LanguageModel.Reference.html @@ -0,0 +1,171 @@ + + + + + + + pyVHDLParser.LanguageModel.Reference — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.LanguageModel.Reference

+
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.LanguageModel.html b/pyVHDLParser/pyVHDLParser.LanguageModel.html new file mode 100644 index 000000000..7b4250501 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.LanguageModel.html @@ -0,0 +1,179 @@ + + + + + + + pyVHDLParser.LanguageModel — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.LanguageModel

+

Submodules

+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.NetlistModel.NetlistModel.html b/pyVHDLParser/pyVHDLParser.NetlistModel.NetlistModel.html new file mode 100644 index 000000000..f5295204a --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.NetlistModel.NetlistModel.html @@ -0,0 +1,219 @@ + + + + + + + pyVHDLParser.NetlistModel.NetlistModel — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.NetlistModel.NetlistModel

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.NetlistModel.NetlistModel.ModelBase[source]
+

Inheritance

+
+

Inheritance diagram of ModelBase

+
+ +
+
+class pyVHDLParser.NetlistModel.NetlistModel.Netlist[source]
+

Inheritance

+
+

Inheritance diagram of Netlist

+
+ +
+
+class pyVHDLParser.NetlistModel.NetlistModel.Wire[source]
+

Inheritance

+
+

Inheritance diagram of Wire

+
+ +
+
+class pyVHDLParser.NetlistModel.NetlistModel.Primitive[source]
+

Inheritance

+
+

Inheritance diagram of Primitive

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.NetlistModel.html b/pyVHDLParser/pyVHDLParser.NetlistModel.html new file mode 100644 index 000000000..8a94526e8 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.NetlistModel.html @@ -0,0 +1,173 @@ + + + + + + + pyVHDLParser.NetlistModel — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.NetlistModel

+

Submodules

+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.SimulationModel.EventSystem.html b/pyVHDLParser/pyVHDLParser.SimulationModel.EventSystem.html new file mode 100644 index 000000000..d32df518e --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.SimulationModel.EventSystem.html @@ -0,0 +1,284 @@ + + + + + + + pyVHDLParser.SimulationModel.EventSystem — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.SimulationModel.EventSystem

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.SimulationModel.EventSystem.Scheduler[source]
+

Inheritance

+
+

Inheritance diagram of Scheduler

+
+
+__init__()[source]
+
+ +
+ +
+
+class pyVHDLParser.SimulationModel.EventSystem.Event[source]
+

Inheritance

+
+

Inheritance diagram of Event

+
+
+__init__(time, process)[source]
+
+ +
+ +
+
+class pyVHDLParser.SimulationModel.EventSystem.Transaction[source]
+

Inheritance

+
+

Inheritance diagram of Transaction

+
+
+__init__(time, value)[source]
+
+ +
+
+__str__()[source]
+

Return str(self).

+
+ +
+
+__repr__()
+

Return repr(self).

+
+ +
+ +
+
+class pyVHDLParser.SimulationModel.EventSystem.TimeLine[source]
+

Inheritance

+
+

Inheritance diagram of TimeLine

+
+
+__init__()[source]
+
+ +
+ +
+
+class pyVHDLParser.SimulationModel.EventSystem.Waveform[source]
+

Inheritance

+
+

Inheritance diagram of Waveform

+
+
+__init__(signal)[source]
+
+ +
+ +
+
+class pyVHDLParser.SimulationModel.EventSystem.ProjectedWaveform[source]
+

Inheritance

+
+

Inheritance diagram of ProjectedWaveform

+
+
+__init__(signal)[source]
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.SimulationModel.SimulationModel.html b/pyVHDLParser/pyVHDLParser.SimulationModel.SimulationModel.html new file mode 100644 index 000000000..c03197432 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.SimulationModel.SimulationModel.html @@ -0,0 +1,313 @@ + + + + + + + pyVHDLParser.SimulationModel.SimulationModel — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.SimulationModel.SimulationModel

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.SimulationModel.SimulationModel.Simulation[source]
+

Inheritance

+
+

Inheritance diagram of Simulation

+
+
+__init__()[source]
+
+ +
+ +
+
+class pyVHDLParser.SimulationModel.SimulationModel.Path[source]
+

Inheritance

+
+

Inheritance diagram of Path

+
+
+__init__(name, path)[source]
+
+ +
+
+__repr__()[source]
+

Return repr(self).

+
+ +
+
+__str__()[source]
+

Return str(self).

+
+ +
+ +
+
+class pyVHDLParser.SimulationModel.SimulationModel.Signal[source]
+

Inheritance

+
+

Inheritance diagram of Signal

+
+
+__init__(path, subtype, initializer=None)[source]
+
+ +
+
+__repr__()[source]
+

Return repr(self).

+
+ +
+
+__str__()[source]
+

Return str(self).

+
+ +
+ +
+
+class pyVHDLParser.SimulationModel.SimulationModel.Process[source]
+

Inheritance

+
+

Inheritance diagram of Process

+
+
+__init__(path, generator, sensitivityList=None)[source]
+
+ +
+ +
+
+class pyVHDLParser.SimulationModel.SimulationModel.Source[source]
+

Inheritance

+
+

Inheritance diagram of Source

+
+ +
+
+class pyVHDLParser.SimulationModel.SimulationModel.Driver[source]
+

Inheritance

+
+

Inheritance diagram of Driver

+
+ +
+
+class pyVHDLParser.SimulationModel.SimulationModel.ResolutionFunction[source]
+

Inheritance

+
+

Inheritance diagram of ResolutionFunction

+
+
+__init__()[source]
+
+ +
+ +
+
+class pyVHDLParser.SimulationModel.SimulationModel.DrivingValue[source]
+

Inheritance

+
+

Inheritance diagram of DrivingValue

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.SimulationModel.html b/pyVHDLParser/pyVHDLParser.SimulationModel.html new file mode 100644 index 000000000..b48204eb7 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.SimulationModel.html @@ -0,0 +1,175 @@ + + + + + + + pyVHDLParser.SimulationModel — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.SimulationModel

+

Submodules

+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.StyleChecks.html b/pyVHDLParser/pyVHDLParser.StyleChecks.html new file mode 100644 index 000000000..4fa54ed8f --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.StyleChecks.html @@ -0,0 +1,164 @@ + + + + + + + pyVHDLParser.StyleChecks — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.StyleChecks

+
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Token.Keywords.html b/pyVHDLParser/pyVHDLParser.Token.Keywords.html new file mode 100644 index 000000000..ec49c48e3 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Token.Keywords.html @@ -0,0 +1,19578 @@ + + + + + + + pyVHDLParser.Token.Keywords — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Token.Keywords

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.Token.Keywords.SpecificVHDLToken[source]
+

Base-class for all specific tokens.

+

Simple token will be converted to specific tokens while parsing. +The internal data is copied, and the original token is replaced by this token.

+

Inheritance

+
+

Inheritance diagram of SpecificVHDLToken

+
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)[source]
+

Initialize a specific token, by copying the simple token’s data and link +this new token to the previous token as a replacement.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (Token) –

  • +
+
+
+
+ +
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.BoundaryToken[source]
+

Token representing a boundary between (reserved) words.

+

In many cases, a SpaceToken, CommentToken, +LinebreakToken or CharacterToken becomes a BoundaryToken.

+

Inheritance

+
+

Inheritance diagram of BoundaryToken

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initialize a specific token, by copying the simple token’s data and link +this new token to the previous token as a replacement.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (Token) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.BracketToken[source]
+

Base-class for all bracket tokens: (, ), [, ], {, }, < and >.

+

Inheritance

+
+

Inheritance diagram of BracketToken

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initialize a specific token, by copying the simple token’s data and link +this new token to the previous token as a replacement.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (Token) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.RoundBracketToken[source]
+

Base-class for all round bracket tokens: ( and ).

+

Inheritance

+
+

Inheritance diagram of RoundBracketToken

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initialize a specific token, by copying the simple token’s data and link +this new token to the previous token as a replacement.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (Token) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.OpeningRoundBracketToken[source]
+

Token representing an opening round bracket: (.

+

Inheritance

+
+

Inheritance diagram of OpeningRoundBracketToken

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initialize a specific token, by copying the simple token’s data and link +this new token to the previous token as a replacement.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (Token) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.ClosingRoundBracketToken[source]
+

Token representing a closing round bracket: ).

+

Inheritance

+
+

Inheritance diagram of ClosingRoundBracketToken

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initialize a specific token, by copying the simple token’s data and link +this new token to the previous token as a replacement.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (Token) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.SquareBracketToken[source]
+

Base-class for all square bracket tokens: [ and ].

+

Inheritance

+
+

Inheritance diagram of SquareBracketToken

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initialize a specific token, by copying the simple token’s data and link +this new token to the previous token as a replacement.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (Token) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.OpeningSquareBracketToken[source]
+

Token representing an square round bracket: [.

+

Inheritance

+
+

Inheritance diagram of OpeningSquareBracketToken

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initialize a specific token, by copying the simple token’s data and link +this new token to the previous token as a replacement.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (Token) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.ClosingSquareBracketToken[source]
+

Token representing a closing square bracket: ].

+

Inheritance

+
+

Inheritance diagram of ClosingSquareBracketToken

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initialize a specific token, by copying the simple token’s data and link +this new token to the previous token as a replacement.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (Token) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.CurlyBracketToken[source]
+

Base-class for all curly bracket tokens: { and }.

+

Inheritance

+
+

Inheritance diagram of CurlyBracketToken

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initialize a specific token, by copying the simple token’s data and link +this new token to the previous token as a replacement.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (Token) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.OpeningCurlyBracketToken[source]
+

Token representing an opening curly bracket: {.

+

Inheritance

+
+

Inheritance diagram of OpeningCurlyBracketToken

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initialize a specific token, by copying the simple token’s data and link +this new token to the previous token as a replacement.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (Token) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.ClosingCurlyBracketToken[source]
+

Token representing a closing curly bracket: }.

+

Inheritance

+
+

Inheritance diagram of ClosingCurlyBracketToken

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initialize a specific token, by copying the simple token’s data and link +this new token to the previous token as a replacement.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (Token) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.AngleBracketToken[source]
+

Base-class for all angle bracket tokens: < and >.

+

Inheritance

+
+

Inheritance diagram of AngleBracketToken

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initialize a specific token, by copying the simple token’s data and link +this new token to the previous token as a replacement.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (Token) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.OpeningAngleBracketToken[source]
+

Token representing an opening angle bracket: <.

+

Inheritance

+
+

Inheritance diagram of OpeningAngleBracketToken

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initialize a specific token, by copying the simple token’s data and link +this new token to the previous token as a replacement.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (Token) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.ClosingAngleBracketToken[source]
+

Token representing a closing angle bracket: >.

+

Inheritance

+
+

Inheritance diagram of ClosingAngleBracketToken

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initialize a specific token, by copying the simple token’s data and link +this new token to the previous token as a replacement.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (Token) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.OperatorToken[source]
+

Base-class for all operator tokens.

+

Inheritance

+
+

Inheritance diagram of OperatorToken

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initialize a specific token, by copying the simple token’s data and link +this new token to the previous token as a replacement.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (Token) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.PlusOperator[source]
+

Token representing a plus operator: +.

+

Inheritance

+
+

Inheritance diagram of PlusOperator

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initialize a specific token, by copying the simple token’s data and link +this new token to the previous token as a replacement.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (Token) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.MinusOperator[source]
+

Token representing a minus operator: -.

+

Inheritance

+
+

Inheritance diagram of MinusOperator

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initialize a specific token, by copying the simple token’s data and link +this new token to the previous token as a replacement.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (Token) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.MultiplyOperator[source]
+

Token representing a multiply operator: *.

+

Inheritance

+
+

Inheritance diagram of MultiplyOperator

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initialize a specific token, by copying the simple token’s data and link +this new token to the previous token as a replacement.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (Token) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.DivideOperator[source]
+

Token representing a divide operator: /.

+

Inheritance

+
+

Inheritance diagram of DivideOperator

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initialize a specific token, by copying the simple token’s data and link +this new token to the previous token as a replacement.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (Token) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.ModuloOperator[source]
+

Inheritance

+
+

Inheritance diagram of ModuloOperator

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initialize a specific token, by copying the simple token’s data and link +this new token to the previous token as a replacement.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (Token) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.RemainderOperator[source]
+

Inheritance

+
+

Inheritance diagram of RemainderOperator

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initialize a specific token, by copying the simple token’s data and link +this new token to the previous token as a replacement.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (Token) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.PowerOperator[source]
+

Token representing a power operator: **.

+

Inheritance

+
+

Inheritance diagram of PowerOperator

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initialize a specific token, by copying the simple token’s data and link +this new token to the previous token as a replacement.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (Token) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.ConcatOperator[source]
+

Token representing a concat operator: &.

+

Inheritance

+
+

Inheritance diagram of ConcatOperator

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initialize a specific token, by copying the simple token’s data and link +this new token to the previous token as a replacement.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (Token) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.RelationalOperator[source]
+

Base-class for all relational operator tokens.

+

Inheritance

+
+

Inheritance diagram of RelationalOperator

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initialize a specific token, by copying the simple token’s data and link +this new token to the previous token as a replacement.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (Token) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.EqualOperator[source]
+

Inheritance

+
+

Inheritance diagram of EqualOperator

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initialize a specific token, by copying the simple token’s data and link +this new token to the previous token as a replacement.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (Token) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.UnequalOperator[source]
+

Inheritance

+
+

Inheritance diagram of UnequalOperator

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initialize a specific token, by copying the simple token’s data and link +this new token to the previous token as a replacement.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (Token) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.LessThanOperator[source]
+

Inheritance

+
+

Inheritance diagram of LessThanOperator

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initialize a specific token, by copying the simple token’s data and link +this new token to the previous token as a replacement.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (Token) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.LessThanOrEqualOperator[source]
+

Inheritance

+
+

Inheritance diagram of LessThanOrEqualOperator

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initialize a specific token, by copying the simple token’s data and link +this new token to the previous token as a replacement.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (Token) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.GreaterThanOperator[source]
+

Inheritance

+
+

Inheritance diagram of GreaterThanOperator

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initialize a specific token, by copying the simple token’s data and link +this new token to the previous token as a replacement.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (Token) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.GreaterThanOrEqualOperator[source]
+

Inheritance

+
+

Inheritance diagram of GreaterThanOrEqualOperator

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initialize a specific token, by copying the simple token’s data and link +this new token to the previous token as a replacement.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (Token) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.MatchingEqualOperator[source]
+

Inheritance

+
+

Inheritance diagram of MatchingEqualOperator

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initialize a specific token, by copying the simple token’s data and link +this new token to the previous token as a replacement.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (Token) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.MatchingUnequalOperator[source]
+

Inheritance

+
+

Inheritance diagram of MatchingUnequalOperator

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initialize a specific token, by copying the simple token’s data and link +this new token to the previous token as a replacement.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (Token) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.MatchingLessThanOperator[source]
+

Inheritance

+
+

Inheritance diagram of MatchingLessThanOperator

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initialize a specific token, by copying the simple token’s data and link +this new token to the previous token as a replacement.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (Token) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.MatchingLessThanOrEqualOperator[source]
+

Inheritance

+
+

Inheritance diagram of MatchingLessThanOrEqualOperator

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initialize a specific token, by copying the simple token’s data and link +this new token to the previous token as a replacement.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (Token) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.MatchingGreaterThanOperator[source]
+

Inheritance

+
+

Inheritance diagram of MatchingGreaterThanOperator

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initialize a specific token, by copying the simple token’s data and link +this new token to the previous token as a replacement.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (Token) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.MatchingGreaterThanOrEqualOperator[source]
+

Inheritance

+
+

Inheritance diagram of MatchingGreaterThanOrEqualOperator

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initialize a specific token, by copying the simple token’s data and link +this new token to the previous token as a replacement.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (Token) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.DelimiterToken[source]
+

Token representing a delimiter sign in between list items.

+

This token is usually created from a CharacterToken with values , +or ;.

+

Inheritance

+
+

Inheritance diagram of DelimiterToken

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initialize a specific token, by copying the simple token’s data and link +this new token to the previous token as a replacement.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (Token) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.EndToken[source]
+

Token representing an end of a statement.

+

This token is usually created from a CharacterToken with value ;.

+

Inheritance

+
+

Inheritance diagram of EndToken

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initialize a specific token, by copying the simple token’s data and link +this new token to the previous token as a replacement.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (Token) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.IdentifierToken[source]
+

Token representing an identifier.

+

This token is usually created from a WordToken or ExtendedIdentifierToken.

+

Inheritance

+
+

Inheritance diagram of IdentifierToken

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initialize a specific token, by copying the simple token’s data and link +this new token to the previous token as a replacement.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (Token) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.RepeatedIdentifierToken[source]
+

Token representing a repeated identifier.

+

This token is usually created from a WordToken or ExtendedIdentifierToken.

+

Inheritance

+
+

Inheritance diagram of RepeatedIdentifierToken

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initialize a specific token, by copying the simple token’s data and link +this new token to the previous token as a replacement.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (Token) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.SimpleNameToken[source]
+

Inheritance

+
+

Inheritance diagram of SimpleNameToken

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initialize a specific token, by copying the simple token’s data and link +this new token to the previous token as a replacement.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (Token) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.LabelToken[source]
+

Token representing a label.

+

This token is usually created from a WordToken or ExtendedIdentifierToken.

+

Inheritance

+
+

Inheritance diagram of LabelToken

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initialize a specific token, by copying the simple token’s data and link +this new token to the previous token as a replacement.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (Token) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.RepeatedLabelToken[source]
+

Token representing a repeated label.

+

This token is usually created from a WordToken or ExtendedIdentifierToken.

+

Inheritance

+
+

Inheritance diagram of RepeatedLabelToken

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initialize a specific token, by copying the simple token’s data and link +this new token to the previous token as a replacement.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (Token) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.MultiCharKeyword[source]
+

Inheritance

+
+

Inheritance diagram of MultiCharKeyword

+
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)[source]
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (CharacterToken) –

  • +
+
+
+
+ +
+
+__str__()[source]
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.CommentKeyword[source]
+

Base-class for all comment keywords: --, /* and */.

+

Inheritance

+
+

Inheritance diagram of CommentKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (CharacterToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.SingleLineCommentKeyword[source]
+

Token representing a starting sequence for a single-line comment: --.

+

Inheritance

+
+

Inheritance diagram of SingleLineCommentKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (CharacterToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.MultiLineCommentKeyword[source]
+

Base-class for all tokens related to multi-line comments: /* and */.

+

Inheritance

+
+

Inheritance diagram of MultiLineCommentKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (CharacterToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.MultiLineCommentStartKeyword[source]
+

Token representing a starting sequence for a multi-line comment: /*.

+

Inheritance

+
+

Inheritance diagram of MultiLineCommentStartKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (CharacterToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.MultiLineCommentEndKeyword[source]
+

Token representing a closing sequence for a multi-line comment: */.

+

Inheritance

+
+

Inheritance diagram of MultiLineCommentEndKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (CharacterToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.AssignmentKeyword[source]
+

Base-class for all assignment keywords: := and <=.

+

Inheritance

+
+

Inheritance diagram of AssignmentKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (CharacterToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.VariableAssignmentKeyword[source]
+

Token representing a variable assignment: :=.

+

Inheritance

+
+

Inheritance diagram of VariableAssignmentKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (CharacterToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.SignalAssignmentKeyword[source]
+

Token representing a signal assignment: <=.

+

Inheritance

+
+

Inheritance diagram of SignalAssignmentKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (CharacterToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.AssociationKeyword[source]
+

Inheritance

+
+

Inheritance diagram of AssociationKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (CharacterToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.MapAssociationKeyword[source]
+

Inheritance

+
+

Inheritance diagram of MapAssociationKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (CharacterToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.SignalAssociationKeyword[source]
+

Inheritance

+
+

Inheritance diagram of SignalAssociationKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (Any) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (CharacterToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.KeywordToken[source]
+

Inheritance

+
+

Inheritance diagram of KeywordToken

+
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)[source]
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__str__()[source]
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.DirectionKeyword[source]
+

Inheritance

+
+

Inheritance diagram of DirectionKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.Operator[source]
+

Inheritance

+
+

Inheritance diagram of Operator

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.LogicalOperator[source]
+

Inheritance

+
+

Inheritance diagram of LogicalOperator

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.MiscellaneousOperator[source]
+

Inheritance

+
+

Inheritance diagram of MiscellaneousOperator

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.ShiftOperator[source]
+

Inheritance

+
+

Inheritance diagram of ShiftOperator

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.AbsOperator[source]
+

Reserved word ‘abs’ for unary operator absolute value.

+

Inheritance

+
+

Inheritance diagram of AbsOperator

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.AccessKeyword[source]
+

Reserved word ‘access’ to defined access types.

+

Inheritance

+
+

Inheritance diagram of AccessKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.AfterKeyword[source]
+

Reserved word ‘after’.

+

Inheritance

+
+

Inheritance diagram of AfterKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.AliasKeyword[source]
+

Reserved word ‘alias’ to declare aliases.

+

Inheritance

+
+

Inheritance diagram of AliasKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.AllKeyword[source]
+

Reserved word ‘all’.

+

Inheritance

+
+

Inheritance diagram of AllKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.AndOperator[source]
+

Reserved word ‘and’ for binary logical operator and.

+

Inheritance

+
+

Inheritance diagram of AndOperator

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.ArchitectureKeyword[source]
+

Reserved word ‘architecture’ to define architectures.

+

Inheritance

+
+

Inheritance diagram of ArchitectureKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.ArrayKeyword[source]
+

Reserved word ‘array’ to define array types.

+

Inheritance

+
+

Inheritance diagram of ArrayKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.AssertKeyword[source]
+

Reserved word ‘assert’ for assert-statements.

+

Inheritance

+
+

Inheritance diagram of AssertKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.AttributeKeyword[source]
+

Reserved word ‘attribute’.

+

Inheritance

+
+

Inheritance diagram of AttributeKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.BeginKeyword[source]
+

Reserved word ‘begin’ to distinguish declarative regions from statements regions.

+

Inheritance

+
+

Inheritance diagram of BeginKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.BlockKeyword[source]
+

Reserved word ‘block’ for block-statements.

+

Inheritance

+
+

Inheritance diagram of BlockKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.BodyKeyword[source]
+

Reserved word ‘body’ to distinguish declarations from implementations (bodies).

+

Inheritance

+
+

Inheritance diagram of BodyKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.BufferKeyword[source]
+

Reserved word ‘buffer’ for mode buffer.

+

Inheritance

+
+

Inheritance diagram of BufferKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.BusKeyword[source]
+

Reserved word ‘bus’.

+

Inheritance

+
+

Inheritance diagram of BusKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.CaseKeyword[source]
+

Inheritance

+
+

Inheritance diagram of CaseKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.ComponentKeyword[source]
+

Inheritance

+
+

Inheritance diagram of ComponentKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.ConfigurationKeyword[source]
+

Inheritance

+
+

Inheritance diagram of ConfigurationKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.ConstantKeyword[source]
+

Inheritance

+
+

Inheritance diagram of ConstantKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.ContextKeyword[source]
+

Inheritance

+
+

Inheritance diagram of ContextKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.DefaultKeyword[source]
+

Inheritance

+
+

Inheritance diagram of DefaultKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.DisconnectKeyword[source]
+

Inheritance

+
+

Inheritance diagram of DisconnectKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.DowntoKeyword[source]
+

Inheritance

+
+

Inheritance diagram of DowntoKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.ElseKeyword[source]
+

Inheritance

+
+

Inheritance diagram of ElseKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.ElsIfKeyword[source]
+

Inheritance

+
+

Inheritance diagram of ElsIfKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.EndKeyword[source]
+

Inheritance

+
+

Inheritance diagram of EndKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.EntityKeyword[source]
+

Inheritance

+
+

Inheritance diagram of EntityKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.ExitKeyword[source]
+

Inheritance

+
+

Inheritance diagram of ExitKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.FileKeyword[source]
+

Inheritance

+
+

Inheritance diagram of FileKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.ForKeyword[source]
+

Inheritance

+
+

Inheritance diagram of ForKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.ForceKeyword[source]
+

Inheritance

+
+

Inheritance diagram of ForceKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.FunctionKeyword[source]
+

Inheritance

+
+

Inheritance diagram of FunctionKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.GenerateKeyword[source]
+

Inheritance

+
+

Inheritance diagram of GenerateKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.GenericKeyword[source]
+

Inheritance

+
+

Inheritance diagram of GenericKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.GroupKeyword[source]
+

Inheritance

+
+

Inheritance diagram of GroupKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.GuardedKeyword[source]
+

Inheritance

+
+

Inheritance diagram of GuardedKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.IfKeyword[source]
+

Inheritance

+
+

Inheritance diagram of IfKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.IsKeyword[source]
+

Inheritance

+
+

Inheritance diagram of IsKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.InKeyword[source]
+

Inheritance

+
+

Inheritance diagram of InKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.InoutKeyword[source]
+

Inheritance

+
+

Inheritance diagram of InoutKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.ImpureKeyword[source]
+

Inheritance

+
+

Inheritance diagram of ImpureKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.InertialKeyword[source]
+

Inheritance

+
+

Inheritance diagram of InertialKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.LabelKeyword[source]
+

Inheritance

+
+

Inheritance diagram of LabelKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.LibraryKeyword[source]
+

Inheritance

+
+

Inheritance diagram of LibraryKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.LinkageKeyword[source]
+

Inheritance

+
+

Inheritance diagram of LinkageKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.LiteralKeyword[source]
+

Inheritance

+
+

Inheritance diagram of LiteralKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.LoopKeyword[source]
+

Inheritance

+
+

Inheritance diagram of LoopKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.MapKeyword[source]
+

Inheritance

+
+

Inheritance diagram of MapKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.NandOperator[source]
+

Inheritance

+
+

Inheritance diagram of NandOperator

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.NewKeyword[source]
+

Inheritance

+
+

Inheritance diagram of NewKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.NextKeyword[source]
+

Inheritance

+
+

Inheritance diagram of NextKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.NorOperator[source]
+

Inheritance

+
+

Inheritance diagram of NorOperator

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.NotOperator[source]
+

Inheritance

+
+

Inheritance diagram of NotOperator

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.NullKeyword[source]
+

Inheritance

+
+

Inheritance diagram of NullKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.OfKeyword[source]
+

Inheritance

+
+

Inheritance diagram of OfKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.OnKeyword[source]
+

Inheritance

+
+

Inheritance diagram of OnKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.OpenKeyword[source]
+

Inheritance

+
+

Inheritance diagram of OpenKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.OrOperator[source]
+

Inheritance

+
+

Inheritance diagram of OrOperator

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.OthersKeyword[source]
+

Inheritance

+
+

Inheritance diagram of OthersKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.OutKeyword[source]
+

Inheritance

+
+

Inheritance diagram of OutKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.PackageKeyword[source]
+

Inheritance

+
+

Inheritance diagram of PackageKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.ParameterKeyword[source]
+

Inheritance

+
+

Inheritance diagram of ParameterKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.PortKeyword[source]
+

Inheritance

+
+

Inheritance diagram of PortKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.PostponedKeyword[source]
+

Inheritance

+
+

Inheritance diagram of PostponedKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.PrivateKeyword[source]
+

Inheritance

+
+

Inheritance diagram of PrivateKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.ProcedureKeyword[source]
+

Inheritance

+
+

Inheritance diagram of ProcedureKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.ProcessKeyword[source]
+

Inheritance

+
+

Inheritance diagram of ProcessKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.PropertyKeyword[source]
+

Inheritance

+
+

Inheritance diagram of PropertyKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.ProtectedKeyword[source]
+

Inheritance

+
+

Inheritance diagram of ProtectedKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.PureKeyword[source]
+

Inheritance

+
+

Inheritance diagram of PureKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.RangeKeyword[source]
+

Inheritance

+
+

Inheritance diagram of RangeKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.RecordKeyword[source]
+

Inheritance

+
+

Inheritance diagram of RecordKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.RegisterKeyword[source]
+

Inheritance

+
+

Inheritance diagram of RegisterKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.RejectKeyword[source]
+

Inheritance

+
+

Inheritance diagram of RejectKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.ReleaseKeyword[source]
+

Inheritance

+
+

Inheritance diagram of ReleaseKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.ReportKeyword[source]
+

Inheritance

+
+

Inheritance diagram of ReportKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.ReturnKeyword[source]
+

Inheritance

+
+

Inheritance diagram of ReturnKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.RolOperator[source]
+

Inheritance

+
+

Inheritance diagram of RolOperator

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.RorOperator[source]
+

Inheritance

+
+

Inheritance diagram of RorOperator

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.SelectKeyword[source]
+

Inheritance

+
+

Inheritance diagram of SelectKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.SequenceKeyword[source]
+

Inheritance

+
+

Inheritance diagram of SequenceKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.SeverityKeyword[source]
+

Inheritance

+
+

Inheritance diagram of SeverityKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.SharedKeyword[source]
+

Inheritance

+
+

Inheritance diagram of SharedKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.SignalKeyword[source]
+

Inheritance

+
+

Inheritance diagram of SignalKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.SlaOperator[source]
+

Inheritance

+
+

Inheritance diagram of SlaOperator

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.SllOperator[source]
+

Inheritance

+
+

Inheritance diagram of SllOperator

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.SraOperator[source]
+

Inheritance

+
+

Inheritance diagram of SraOperator

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.SrlOperator[source]
+

Inheritance

+
+

Inheritance diagram of SrlOperator

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.SubtypeKeyword[source]
+

Inheritance

+
+

Inheritance diagram of SubtypeKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.ThenKeyword[source]
+

Inheritance

+
+

Inheritance diagram of ThenKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.ToKeyword[source]
+

Inheritance

+
+

Inheritance diagram of ToKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.TransportKeyword[source]
+

Inheritance

+
+

Inheritance diagram of TransportKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.TypeKeyword[source]
+

Inheritance

+
+

Inheritance diagram of TypeKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.UnaffectedKeyword[source]
+

Inheritance

+
+

Inheritance diagram of UnaffectedKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.UnitsKeyword[source]
+

Inheritance

+
+

Inheritance diagram of UnitsKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.UntilKeyword[source]
+

Inheritance

+
+

Inheritance diagram of UntilKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.UseKeyword[source]
+

Inheritance

+
+

Inheritance diagram of UseKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.UnbufferedKeyword[source]
+

Inheritance

+
+

Inheritance diagram of UnbufferedKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.VariableKeyword[source]
+

Inheritance

+
+

Inheritance diagram of VariableKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.ViewKeyword[source]
+

Inheritance

+
+

Inheritance diagram of ViewKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.VunitKeyword[source]
+

Inheritance

+
+

Inheritance diagram of VunitKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.WaitKeyword[source]
+

Inheritance

+
+

Inheritance diagram of WaitKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.WhenKeyword[source]
+

Inheritance

+
+

Inheritance diagram of WhenKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.WhileKeyword[source]
+

Inheritance

+
+

Inheritance diagram of WhileKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.WithKeyword[source]
+

Inheritance

+
+

Inheritance diagram of WithKeyword

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.XorOperator[source]
+

Inheritance

+
+

Inheritance diagram of XorOperator

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.Keywords.XnorOperator[source]
+

Inheritance

+
+

Inheritance diagram of XnorOperator

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken=None, value=None, start=None, end=None, fromExistingToken=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
  • fromExistingToken (WordToken) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Token.Parser.html b/pyVHDLParser/pyVHDLParser.Token.Parser.html new file mode 100644 index 000000000..f35e84ce7 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Token.Parser.html @@ -0,0 +1,796 @@ + + + + + + + pyVHDLParser.Token.Parser — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Token.Parser

+

Exceptions

+ +

Classes

+ +
+

Exceptions

+
+
+exception pyVHDLParser.Token.Parser.TokenizerException[source]
+

A ParserException generated by the Tokenizer.

+

Inheritance

+
+

Inheritance diagram of TokenizerException

+
+
+__init__(message, position)[source]
+
+
Parameters:
+
    +
  • message (str) –

  • +
  • position (SourceCodePosition) –

  • +
+
+
+
+ +
+
+__new__(**kwargs)
+
+ +
+ +
+

Classes

+
+
+class pyVHDLParser.Token.Parser.Tokenizer[source]
+

Inheritance

+
+

Inheritance diagram of Tokenizer

+
+
+class TokenKind[source]
+

Enumeration of all Tokenizer states.

+
+
+SpaceChars = 0
+

Last char was a space

+
+ +
+
+IntegerChars = 1
+

Last char was a digit

+
+ +
+
+RealChars = 2
+

Last char was a digit

+
+ +
+
+AlphaChars = 3
+

Last char was a letter

+
+ +
+
+DelimiterChars = 4
+

Last char was a delimiter character

+
+ +
+
+PossibleSingleLineCommentStart = 5
+

Last char was a dash

+
+ +
+
+PossibleLinebreak = 6
+

Last char was a \r

+
+ +
+
+PossibleRealLiteral = 7
+

Last char was a .

+
+ +
+
+PossibleCharacterLiteral = 8
+

Last char was a '

+
+ +
+
+PossibleStringLiteralStart = 9
+

Last char was a "

+
+ +
+
+PossibleExtendedIdentifierStart = 10
+

Last char was a \

+
+ +
+
+SingleLineComment = 11
+

Found -- before

+
+ +
+
+MultiLineComment = 12
+

Found /* before

+
+ +
+
+Linebreak = 13
+

Last char was a \n

+
+ +
+
+Directive = 14
+

Last char was a `` ` ``

+
+ +
+
+FuseableCharacter = 15
+

Last char was a character that could be fused

+
+ +
+
+OtherChars = 16
+

Anything else

+
+ +
+
+__abs__()
+

abs(self)

+
+ +
+
+__add__(value, /)
+

Return self+value.

+
+ +
+
+__and__(value, /)
+

Return self&value.

+
+ +
+
+__bool__()
+

True if self else False

+
+ +
+
+__ceil__()
+

Ceiling of an Integral returns itself.

+
+ +
+
+__dir__()
+

Returns all members and all public methods

+
+ +
+
+__divmod__(value, /)
+

Return divmod(self, value).

+
+ +
+
+__eq__(value, /)
+

Return self==value.

+
+ +
+
+__float__()
+

float(self)

+
+ +
+
+__floor__()
+

Flooring an Integral returns itself.

+
+ +
+
+__floordiv__(value, /)
+

Return self//value.

+
+ +
+
+__format__(format_spec, /)
+

Default object formatter.

+
+ +
+
+__ge__(value, /)
+

Return self>=value.

+
+ +
+
+__getattribute__(name, /)
+

Return getattr(self, name).

+
+ +
+
+__gt__(value, /)
+

Return self>value.

+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__index__()
+

Return self converted to an integer, if self is suitable for use as an index into a list.

+
+ +
+
+__init__(*args, **kwds)
+
+ +
+
+__int__()
+

int(self)

+
+ +
+
+__invert__()
+

~self

+
+ +
+
+__le__(value, /)
+

Return self<=value.

+
+ +
+
+__lshift__(value, /)
+

Return self<<value.

+
+ +
+
+__lt__(value, /)
+

Return self<value.

+
+ +
+
+__mod__(value, /)
+

Return self%value.

+
+ +
+
+__mul__(value, /)
+

Return self*value.

+
+ +
+
+__ne__(value, /)
+

Return self!=value.

+
+ +
+
+__neg__()
+

-self

+
+ +
+
+__new__(value)
+
+ +
+
+__or__(value, /)
+

Return self|value.

+
+ +
+
+__pos__()
+

+self

+
+ +
+
+__pow__(value, mod=None, /)
+

Return pow(self, value, mod).

+
+ +
+
+__radd__(value, /)
+

Return value+self.

+
+ +
+
+__rand__(value, /)
+

Return value&self.

+
+ +
+
+__rdivmod__(value, /)
+

Return divmod(value, self).

+
+ +
+
+__reduce_ex__(proto)
+

Helper for pickle.

+
+ +
+
+__repr__()
+

Return repr(self).

+
+ +
+
+__rfloordiv__(value, /)
+

Return value//self.

+
+ +
+
+__rlshift__(value, /)
+

Return value<<self.

+
+ +
+
+__rmod__(value, /)
+

Return value%self.

+
+ +
+
+__rmul__(value, /)
+

Return value*self.

+
+ +
+
+__ror__(value, /)
+

Return value|self.

+
+ +
+
+__round__()
+

Rounding an Integral returns itself.

+

Rounding with an ndigits argument also returns an integer.

+
+ +
+
+__rpow__(value, mod=None, /)
+

Return pow(value, self, mod).

+
+ +
+
+__rrshift__(value, /)
+

Return value>>self.

+
+ +
+
+__rshift__(value, /)
+

Return self>>value.

+
+ +
+
+__rsub__(value, /)
+

Return value-self.

+
+ +
+
+__rtruediv__(value, /)
+

Return value/self.

+
+ +
+
+__rxor__(value, /)
+

Return value^self.

+
+ +
+
+__sizeof__()
+

Returns size in memory, in bytes.

+
+ +
+
+__str__()
+

Return repr(self).

+
+ +
+
+__sub__(value, /)
+

Return self-value.

+
+ +
+
+__truediv__(value, /)
+

Return self/value.

+
+ +
+
+__trunc__()
+

Truncating an Integral returns itself.

+
+ +
+
+__xor__(value, /)
+

Return self^value.

+
+ +
+
+as_integer_ratio()
+

Return integer ratio.

+

Return a pair of integers, whose ratio is exactly equal to the original int +and with a positive denominator.

+
>>> (10).as_integer_ratio()
+(10, 1)
+>>> (-10).as_integer_ratio()
+(-10, 1)
+>>> (0).as_integer_ratio()
+(0, 1)
+
+
+
+ +
+
+bit_count()
+

Number of ones in the binary representation of the absolute value of self.

+

Also known as the population count.

+
>>> bin(13)
+'0b1101'
+>>> (13).bit_count()
+3
+
+
+
+ +
+
+bit_length()
+

Number of bits necessary to represent self in binary.

+
>>> bin(37)
+'0b100101'
+>>> (37).bit_length()
+6
+
+
+
+ +
+
+conjugate()
+

Returns self, the complex conjugate of any int.

+
+ +
+
+denominator
+

the denominator of a rational number in lowest terms

+
+ +
+
+from_bytes(byteorder='big', *, signed=False)
+

Return the integer represented by the given array of bytes.

+
+
bytes

Holds the array of bytes to convert. The argument must either +support the buffer protocol or be an iterable object producing bytes. +Bytes and bytearray are examples of built-in objects that support the +buffer protocol.

+
+
byteorder

The byte order used to represent the integer. If byteorder is ‘big’, +the most significant byte is at the beginning of the byte array. If +byteorder is ‘little’, the most significant byte is at the end of the +byte array. To request the native byte order of the host system, use +`sys.byteorder’ as the byte order value. Default is to use ‘big’.

+
+
signed

Indicates whether two’s complement is used to represent the integer.

+
+
+
+ +
+
+imag
+

the imaginary part of a complex number

+
+ +
+
+numerator
+

the numerator of a rational number in lowest terms

+
+ +
+
+real
+

the real part of a complex number

+
+ +
+
+to_bytes(length=1, byteorder='big', *, signed=False)
+

Return an array of bytes representing an integer.

+
+
length

Length of bytes object to use. An OverflowError is raised if the +integer is not representable with the given number of bytes. Default +is length 1.

+
+
byteorder

The byte order used to represent the integer. If byteorder is ‘big’, +the most significant byte is at the beginning of the byte array. If +byteorder is ‘little’, the most significant byte is at the end of the +byte array. To request the native byte order of the host system, use +`sys.byteorder’ as the byte order value. Default is to use ‘big’.

+
+
signed

Determines whether two’s complement is used to represent the integer. +If signed is False and a negative integer is given, an OverflowError +is raised.

+
+
+
+ +
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.Token.html b/pyVHDLParser/pyVHDLParser.Token.html new file mode 100644 index 000000000..a6561df92 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.Token.html @@ -0,0 +1,3295 @@ + + + + + + + pyVHDLParser.Token — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.Token

+

Submodules

+ +

Functions

+ +

Classes

+ +
+

Functions

+
+
+pyVHDLParser.Token.CharacterTranslation(value, oneLiner=False)[source]
+
+
Return type:
+

str

+
+
Parameters:
+
    +
  • value (str) –

  • +
  • oneLiner (bool) –

  • +
+
+
+
+ +
+

Classes

+
+
+class pyVHDLParser.Token.TokenIterator[source]
+

Inheritance

+
+

Inheritance diagram of TokenIterator

+
+
+__init__(startToken, inclusiveStartToken=False, inclusiveStopToken=True, stopToken=None)[source]
+
+
Parameters:
+
    +
  • startToken (Token) –

  • +
  • inclusiveStartToken (bool) –

  • +
  • inclusiveStopToken (bool) –

  • +
  • stopToken (Token) –

  • +
+
+
+
+ +
+
+state: int
+

internal states: 0 = normal, 1 = reached stopToken, 2 = reached EndOfToken

+
+ +
+ +
+
+class pyVHDLParser.Token.TokenReverseIterator[source]
+

Inheritance

+
+

Inheritance diagram of TokenReverseIterator

+
+
+__init__(startToken, inclusiveStartToken=False, inclusiveStopToken=True, stopToken=None)[source]
+
+
Parameters:
+
    +
  • startToken (Token) –

  • +
  • inclusiveStartToken (bool) –

  • +
  • inclusiveStopToken (bool) –

  • +
  • stopToken (Token) –

  • +
+
+
+
+ +
+
+state: int
+

internal states: 0 = normal, 1 = reached stopToken, 2 = reached StartOfToken

+
+ +
+ +
+
+class pyVHDLParser.Token.Token[source]
+

Base-class for all token classes.

+

Inheritance

+
+

Inheritance diagram of Token

+
+
+__init__(previousToken, start, end=None)[source]
+

Initializes a token object.

+

While initialization, the following additional tasks are done:

+
    +
  • link this token to previous token.

  • +
  • link previous token to this token.

  • +
+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
+
+
+
+ +
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__str__()[source]
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__repr__()[source]
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+ +
+
+class pyVHDLParser.Token.ValuedToken[source]
+

Base-class for all valued token.

+

A ValuedToken contains a Value field for the underlying string from the source code file.

+

Inheritance

+
+

Inheritance diagram of ValuedToken

+
+
+__init__(previousToken, value, start, end=None)[source]
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+
+__eq__(other)[source]
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__ne__(other)[source]
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()[source]
+

Return hash(self).

+
+ +
+
+__str__()[source]
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__repr__()[source]
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+ +
+
+class pyVHDLParser.Token.StartOfToken[source]
+

Base-class for meta-tokens representing the start of a token stream.

+

Inheritance

+
+

Inheritance diagram of StartOfToken

+
+
+__init__()[source]
+

Initializes a StartOfToken object.

+
+ +
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__len__()[source]
+

Returns always 0.

+
+
Return type:
+

int

+
+
+
+ +
+
+__str__()[source]
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+ +
+
+class pyVHDLParser.Token.EndOfToken[source]
+

Base-class for meta-tokens representing the end of a token stream.

+

Inheritance

+
+

Inheritance diagram of EndOfToken

+
+
+__init__(previousToken, end)[source]
+

Initializes a EndOfToken object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • end (SourceCodePosition) –

  • +
+
+
+
+ +
+
+__len__()[source]
+

Returns always 0.

+
+
Return type:
+

int

+
+
+
+ +
+
+__str__()[source]
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+ +
+
+class pyVHDLParser.Token.StartOfDocumentToken[source]
+

Inheritance

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__init__()
+

Initializes a StartOfToken object.

+
+ +
+
+__len__()
+

Returns always 0.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+ +
+
+class pyVHDLParser.Token.EndOfDocumentToken[source]
+

Inheritance

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__init__(previousToken, end)
+

Initializes a EndOfToken object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • end (SourceCodePosition) –

  • +
+
+
+
+ +
+
+__len__()
+

Returns always 0.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+ +
+
+class pyVHDLParser.Token.StartOfSnippetToken[source]
+

Inheritance

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__init__()
+

Initializes a StartOfToken object.

+
+ +
+
+__len__()
+

Returns always 0.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+ +
+
+class pyVHDLParser.Token.EndOfSnippetToken[source]
+

Inheritance

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__init__(previousToken, end)
+

Initializes a EndOfToken object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • end (SourceCodePosition) –

  • +
+
+
+
+ +
+
+__len__()
+

Returns always 0.

+
+
Return type:
+

int

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+ +
+
+class pyVHDLParser.Token.CharacterToken[source]
+

Token representing a single character.

+

Inheritance

+
+

Inheritance diagram of CharacterToken

+
+
+__init__(previousToken, value, start)[source]
+

Initializes a CharacterToken object.

+

This class is used for single characters, thus: Start = End.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
+
+
+
+ +
+
+__repr__()[source]
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.FusedCharacterToken[source]
+

Token representing a double (or triple) character.

+

Inheritance

+
+

Inheritance diagram of FusedCharacterToken

+
+
+__init__(previousToken, value, start, end)[source]
+

Initializes a FusedCharacterToken object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
+
+
+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__repr__()[source]
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.SpaceToken[source]
+

Token representing a space (space or tab).

+

Inheritance

+
+

Inheritance diagram of SpaceToken

+
+
+__repr__()[source]
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken, value, start, end=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.WordToken[source]
+

Token representing a string.

+

Inheritance

+
+

Inheritance diagram of WordToken

+
+
+__eq__(other)[source]
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__ne__(other)[source]
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__le__(other)[source]
+

Return true if the internal value is equivalent (lower case, string compare) to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__ge__(other)[source]
+

Return true if the internal value is equivalent (upper case, string compare) to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()[source]
+

Return hash(self).

+
+ +
+
+__repr__()[source]
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__init__(previousToken, value, start, end=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.VHDLToken[source]
+

Base-class for all VHDL specific tokens.

+

Inheritance

+
+

Inheritance diagram of VHDLToken

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken, value, start, end=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.CommentToken[source]
+

Base-class for comment tokens.

+

Inheritance

+
+

Inheritance diagram of CommentToken

+
+
+__repr__()[source]
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken, value, start, end=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.SingleLineCommentToken[source]
+

Token representing a single-line comment.

+

Inheritance

+
+

Inheritance diagram of SingleLineCommentToken

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken, value, start, end=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.MultiLineCommentToken[source]
+

Token representing a multi-line comment.

+

Inheritance

+
+

Inheritance diagram of MultiLineCommentToken

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken, value, start, end=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.LiteralToken[source]
+

Base-class for all literals in VHDL.

+

Inheritance

+
+

Inheritance diagram of LiteralToken

+
+
+__eq__(other)[source]
+

Return true if the internal value is equal to the second operand.

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__ne__(other)[source]
+

Return true if the internal value is unequal to the second operand.

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()[source]
+

Return hash(self).

+
+ +
+
+__repr__()[source]
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__init__(previousToken, value, start, end=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.IntegerLiteralToken[source]
+

Token representing an integer literal.

+

Inheritance

+
+

Inheritance diagram of IntegerLiteralToken

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken, value, start, end=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.RealLiteralToken[source]
+

Token representing a real literal.

+

Inheritance

+
+

Inheritance diagram of RealLiteralToken

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken, value, start, end=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.CharacterLiteralToken[source]
+

Token representing a character literal in VHDL.

+

Inheritance

+
+

Inheritance diagram of CharacterLiteralToken

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+
+__init__(previousToken, value, start, end)[source]
+

Initializes a CharacterLiteralToken object.

+

Single quotes are omitted in the Value.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
+
+
+
+ +
+
+__repr__()[source]
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+ +
+
+class pyVHDLParser.Token.StringLiteralToken[source]
+

Token representing a string literal in VHDL.

+

Inheritance

+
+

Inheritance diagram of StringLiteralToken

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+
+__init__(previousToken, value, start, end)[source]
+

Initializes a CharacterLiteralToken object.

+

Double quotes are omitted in the Value.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
+
+
+
+ +
+
+__repr__()[source]
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+ +
+
+class pyVHDLParser.Token.BitStringLiteralToken[source]
+

Token representing a bit-string literal in VHDL.

+

Inheritance

+
+

Inheritance diagram of BitStringLiteralToken

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+
+__init__(previousToken, value, start, end)[source]
+

Initializes a BitStringLiteralToken object.

+

Double quotes are omitted in the Value.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
+
+
+
+ +
+
+__repr__()[source]
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+ +
+
+class pyVHDLParser.Token.ExtendedIdentifier[source]
+

Token representing an extended identifier in VHDL.

+

Inheritance

+
+

Inheritance diagram of ExtendedIdentifier

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken, value, start, end=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.DirectiveToken[source]
+

Inheritance

+
+

Inheritance diagram of DirectiveToken

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken, value, start, end=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__repr__()
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+ +
+
+class pyVHDLParser.Token.LinebreakToken[source]
+

Token representing a linebreak in the source code file.

+

Inheritance

+
+

Inheritance diagram of LinebreakToken

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken, value, start, end=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+
+__repr__()[source]
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+ +
+
+class pyVHDLParser.Token.IndentationToken[source]
+

Token representing an indentation in a source code line.

+

Inheritance

+
+

Inheritance diagram of IndentationToken

+
+
+_previousToken: Token
+

Reference to the previous token

+
+ +
+
+NextToken: Token
+

Reference to the next token

+
+ +
+
+Start: SourceCodePosition
+

Position for the token start

+
+ +
+
+End: SourceCodePosition
+

Position for the token end

+
+ +
+
+__eq__(other)
+

Return true if the internal value is equal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__hash__()
+

Return hash(self).

+
+ +
+
+__init__(previousToken, value, start, end=None)
+

Initializes a valued token object.

+
+
Parameters:
+
    +
  • previousToken (Token) –

  • +
  • value (str) –

  • +
  • start (SourceCodePosition) –

  • +
  • end (SourceCodePosition) –

  • +
+
+
+
+ +
+
+__ne__(other)
+

Return true if the internal value is unequal to the second operand.

+
+
Return type:
+

bool

+
+
Parameters:
+

other (str) –

+
+
+
+ +
+
+__str__()
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+Value: str
+

String value of this token.

+
+ +
+
+__repr__()[source]
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.TypeSystem.Package.html b/pyVHDLParser/pyVHDLParser.TypeSystem.Package.html new file mode 100644 index 000000000..2e6388c18 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.TypeSystem.Package.html @@ -0,0 +1,338 @@ + + + + + + + pyVHDLParser.TypeSystem.Package — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.TypeSystem.Package

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.TypeSystem.Package.Parameter[source]
+

Inheritance

+
+

Inheritance diagram of Parameter

+
+
+__init__(name, subtype)[source]
+
+ +
+ +
+
+class pyVHDLParser.TypeSystem.Package.SubProgramDeclaration[source]
+

Inheritance

+
+

Inheritance diagram of SubProgramDeclaration

+
+
+__init__(name, parameters)[source]
+
+ +
+ +
+
+class pyVHDLParser.TypeSystem.Package.ProcedureDeclaration[source]
+

Inheritance

+
+

Inheritance diagram of ProcedureDeclaration

+
+
+__init__(name, parameters)
+
+ +
+ +
+
+class pyVHDLParser.TypeSystem.Package.FunctionDeclaration[source]
+

Inheritance

+
+

Inheritance diagram of FunctionDeclaration

+
+
+__init__(name, parameters, returnType)[source]
+
+ +
+ +
+
+class pyVHDLParser.TypeSystem.Package.SubProgram[source]
+

Inheritance

+
+

Inheritance diagram of SubProgram

+
+
+__init__(subprogramDeclaration)[source]
+
+ +
+ +
+
+class pyVHDLParser.TypeSystem.Package.Procedure[source]
+

Inheritance

+
+

Inheritance diagram of Procedure

+
+
+__init__(procedureDeclaration)[source]
+
+ +
+ +
+
+class pyVHDLParser.TypeSystem.Package.Function[source]
+

Inheritance

+
+

Inheritance diagram of Function

+
+
+__init__(functionDeclaration, function)[source]
+
+ +
+ +
+
+class pyVHDLParser.TypeSystem.Package.PackageDeclation[source]
+

Inheritance

+
+

Inheritance diagram of PackageDeclation

+
+
+__init__(name, publicMembers)[source]
+
+ +
+ +
+
+class pyVHDLParser.TypeSystem.Package.PackageBody[source]
+

Inheritance

+
+

Inheritance diagram of PackageBody

+
+
+__init__(declaration, privateMembers)[source]
+
+ +
+ +
+
+class pyVHDLParser.TypeSystem.Package.Package[source]
+

Inheritance

+
+

Inheritance diagram of Package

+
+
+__init__(declaration, body)[source]
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.TypeSystem.TypeSystem.html b/pyVHDLParser/pyVHDLParser.TypeSystem.TypeSystem.html new file mode 100644 index 000000000..0788ccabd --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.TypeSystem.TypeSystem.html @@ -0,0 +1,441 @@ + + + + + + + pyVHDLParser.TypeSystem.TypeSystem — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.TypeSystem.TypeSystem

+

Classes

+ +
+

Classes

+
+
+class pyVHDLParser.TypeSystem.TypeSystem._Attributes[source]
+

Inheritance

+
+ +
+
+class pyVHDLParser.TypeSystem.TypeSystem.Type[source]
+

Inheritance

+
+

Inheritance diagram of Type

+
+
+__init__(name)[source]
+
+ +
+ +
+
+class pyVHDLParser.TypeSystem.TypeSystem.IntegerType[source]
+

Inheritance

+
+

Inheritance diagram of IntegerType

+
+
+__init__(name)[source]
+
+ +
+ +
+
+class pyVHDLParser.TypeSystem.TypeSystem.RealType[source]
+

Inheritance

+
+

Inheritance diagram of RealType

+
+
+__init__(name)[source]
+
+ +
+ +
+
+class pyVHDLParser.TypeSystem.TypeSystem.EnumerationLiteral[source]
+

Inheritance

+
+

Inheritance diagram of EnumerationLiteral

+
+
+__init__(enum, name, pos)[source]
+
+ +
+
+__repr__()[source]
+

Return repr(self).

+
+ +
+
+__str__()[source]
+

Return str(self).

+
+ +
+ +
+
+class pyVHDLParser.TypeSystem.TypeSystem.EnumerationType[source]
+

Inheritance

+
+

Inheritance diagram of EnumerationType

+
+
+__init__(name, enumerationValues)[source]
+
+ +
+
+__repr__()[source]
+

Return repr(self).

+
+ +
+
+__str__()[source]
+

Return str(self).

+
+ +
+ +
+
+class pyVHDLParser.TypeSystem.TypeSystem.ArrayType[source]
+

Inheritance

+
+

Inheritance diagram of ArrayType

+
+
+__init__(name, ranges, elementType)[source]
+
+ +
+ +
+
+class pyVHDLParser.TypeSystem.TypeSystem.RecordMember[source]
+

Inheritance

+
+

Inheritance diagram of RecordMember

+
+
+__init__(name, elementType)[source]
+
+ +
+ +
+
+class pyVHDLParser.TypeSystem.TypeSystem.RecordType[source]
+

Inheritance

+
+

Inheritance diagram of RecordType

+
+
+__init__(name, members)[source]
+
+ +
+ +
+
+class pyVHDLParser.TypeSystem.TypeSystem.Subtype[source]
+

Inheritance

+
+

Inheritance diagram of Subtype

+
+
+__init__(name, subtype, range=None, resolutionFunction=None)[source]
+
+ +
+ +
+
+class pyVHDLParser.TypeSystem.TypeSystem.IntegerSubtype[source]
+

Inheritance

+
+

Inheritance diagram of IntegerSubtype

+
+
+__init__(name, subtype, range=None, resolutionFunction=None)
+
+ +
+ +
+
+class pyVHDLParser.TypeSystem.TypeSystem.EnumerationSubtype[source]
+

Inheritance

+
+

Inheritance diagram of EnumerationSubtype

+
+
+__init__(name, subtype, range=None, resolutionFunction=None)[source]
+
+ +
+ +
+
+class pyVHDLParser.TypeSystem.TypeSystem.Direction[source]
+

Inheritance

+
+

Inheritance diagram of Direction

+
+ +
+
+class pyVHDLParser.TypeSystem.TypeSystem.Range[source]
+

Inheritance

+
+

Inheritance diagram of Range

+
+
+__init__(baseType, direction=None, left=None, right=None)[source]
+
+ +
+ +
+
+class pyVHDLParser.TypeSystem.TypeSystem.TypeInstance[source]
+

Inheritance

+
+

Inheritance diagram of TypeInstance

+
+ +
+
+class pyVHDLParser.TypeSystem.TypeSystem.Array[source]
+

Inheritance

+
+

Inheritance diagram of Array

+
+
+__init__(arrayType)[source]
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.TypeSystem.html b/pyVHDLParser/pyVHDLParser.TypeSystem.html new file mode 100644 index 000000000..03d9a88b9 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.TypeSystem.html @@ -0,0 +1,179 @@ + + + + + + + pyVHDLParser.TypeSystem — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.TypeSystem

+

Submodules

+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.TypeSystem.std.html b/pyVHDLParser/pyVHDLParser.TypeSystem.std.html new file mode 100644 index 000000000..b2de871ff --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.TypeSystem.std.html @@ -0,0 +1,171 @@ + + + + + + + pyVHDLParser.TypeSystem.std — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.TypeSystem.std

+
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.TypeSystem.std_logic_1164.html b/pyVHDLParser/pyVHDLParser.TypeSystem.std_logic_1164.html new file mode 100644 index 000000000..9fc47dffa --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.TypeSystem.std_logic_1164.html @@ -0,0 +1,171 @@ + + + + + + + pyVHDLParser.TypeSystem.std_logic_1164 — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyVHDLParser.TypeSystem.std_logic_1164

+
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyVHDLParser/pyVHDLParser.html b/pyVHDLParser/pyVHDLParser.html new file mode 100644 index 000000000..503651877 --- /dev/null +++ b/pyVHDLParser/pyVHDLParser.html @@ -0,0 +1,183 @@ + + + + + + + Python Class Reference — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Python Class Reference

+

Reference of all packages and modules:

+

A streaming-based VHDL parser.

+ +
+ + +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/search.html b/search.html new file mode 100644 index 000000000..5981c36b4 --- /dev/null +++ b/search.html @@ -0,0 +1,157 @@ + + + + + + Search — pyVHDLParser 0.8.0 documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+
    +
  • »
  • +
  • Search
  • +
  • +
  • +
+
+
+ +
+
+ + + + +
+ +
+ +
+
+
+ +
+ +
+

© Copyright Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany +Copyright 2016-2017 Patrick Lehmann - Dresden, Germany. + Last updated on 12.01.2024. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/searchindex.js b/searchindex.js new file mode 100644 index 000000000..7c9a20d39 --- /dev/null +++ b/searchindex.js @@ -0,0 +1 @@ +Search.setIndex({"docnames": ["BlockStream/Assignments/SignalAssignment", "BlockStream/Assignments/VariableAssignment", "BlockStream/Assignments/index", "BlockStream/Attributes/AttributeDeclaration", "BlockStream/Attributes/AttributeSpecification", "BlockStream/Attributes/index", "BlockStream/BlockGenerator", "BlockStream/CommonBlocks", "BlockStream/ControlStructures/Case", "BlockStream/ControlStructures/Exit", "BlockStream/ControlStructures/For", "BlockStream/ControlStructures/If", "BlockStream/ControlStructures/Next", "BlockStream/ControlStructures/Null", "BlockStream/ControlStructures/Return", "BlockStream/ControlStructures/While", "BlockStream/ControlStructures/index", "BlockStream/Examples", "BlockStream/Expressions", "BlockStream/Generates/CaseGenerate", "BlockStream/Generates/ForGenerate", "BlockStream/Generates/IfGenerate", "BlockStream/Generates/index", "BlockStream/Instantiation/Entity", "BlockStream/Instantiation/Function", "BlockStream/Instantiation/Package", "BlockStream/Instantiation/Procedure", "BlockStream/Instantiation/index", "BlockStream/Lists/GenericList", "BlockStream/Lists/GenericMap", "BlockStream/Lists/ParameterList", "BlockStream/Lists/PortList", "BlockStream/Lists/PortMap", "BlockStream/Lists/SensitivityList", "BlockStream/Lists/index", "BlockStream/MetaBlocks", "BlockStream/Objects/BaseClasses", "BlockStream/Objects/Constant", "BlockStream/Objects/File", "BlockStream/Objects/SharedVariable", "BlockStream/Objects/Signal", "BlockStream/Objects/Variable", "BlockStream/Objects/index", "BlockStream/References/Context", "BlockStream/References/Library", "BlockStream/References/Use", "BlockStream/References/index", "BlockStream/Reporting/Assert", "BlockStream/Reporting/Report", "BlockStream/Reporting/index", "BlockStream/Sequential/Function", "BlockStream/Sequential/Package", "BlockStream/Sequential/PackageBody", "BlockStream/Sequential/Procedure", "BlockStream/Sequential/Process", "BlockStream/Sequential/index", "BlockStream/SpecificBlocks", "BlockStream/Structural/Architecture", "BlockStream/Structural/Block", "BlockStream/Structural/Component", "BlockStream/Structural/Configuration", "BlockStream/Structural/Entity", "BlockStream/Structural/index", "BlockStream/Types/Subtype", "BlockStream/Types/Type", "BlockStream/Types/index", "BlockStream/Usage", "BlockStream/index", "ChangeLog/index", "Concepts", "Dependency", "Doc-License", "DocumentObjectModel/index", "Glossary", "GroupStream/Examples", "GroupStream/GroupGenerator", "GroupStream/MetaGroups", "GroupStream/Usage", "GroupStream/index", "Installation", "LanguageModel/ConcurrentStatements", "LanguageModel/DesignUnits", "LanguageModel/Enumerations", "LanguageModel/InterfaceItems", "LanguageModel/Miscellaneous", "LanguageModel/ObjectDeclarations", "LanguageModel/SequentialStatements", "LanguageModel/SubprogramDefinitions", "LanguageModel/TypeDefinitions", "LanguageModel/index", "License", "Preprocessing/index", "ProjectGoals", "References/index", "TODOs", "TestApplication/VHDLParser", "TestApplication/index", "TokenStream/Examples", "TokenStream/MetaTokens", "TokenStream/SimpleTokens", "TokenStream/SpecificTokens", "TokenStream/Tokenizer", "TokenStream/Usage", "TokenStream/index", "UseCases", "index", "pyVHDLParser/pyVHDLParser", "pyVHDLParser/pyVHDLParser.ANTLR3", "pyVHDLParser/pyVHDLParser.ANTLR3.VHDLLexer", "pyVHDLParser/pyVHDLParser.ANTLR3.VHDLParser", "pyVHDLParser/pyVHDLParser.ANTLR4", "pyVHDLParser/pyVHDLParser.ANTLR4.VHDLLexer", "pyVHDLParser/pyVHDLParser.ANTLR4.VHDLParser", "pyVHDLParser/pyVHDLParser.ANTLR4.VHDLParserVisitor", "pyVHDLParser/pyVHDLParser.ANTLR4.Visitor", "pyVHDLParser/pyVHDLParser.Base", "pyVHDLParser/pyVHDLParser.Blocks", "pyVHDLParser/pyVHDLParser.Blocks.Assignment", "pyVHDLParser/pyVHDLParser.Blocks.Assignment.SignalAssignment", "pyVHDLParser/pyVHDLParser.Blocks.Assignment.VariableAssignment", "pyVHDLParser/pyVHDLParser.Blocks.Attribute", "pyVHDLParser/pyVHDLParser.Blocks.Attribute.AttributeDeclaration", "pyVHDLParser/pyVHDLParser.Blocks.Attribute.AttributeSpecification", "pyVHDLParser/pyVHDLParser.Blocks.Comment", "pyVHDLParser/pyVHDLParser.Blocks.Common", "pyVHDLParser/pyVHDLParser.Blocks.ControlStructure", "pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.Case", "pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.Exit", "pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.ForLoop", "pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.If", "pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.Next", "pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.Null", "pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.Return", "pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.WhileLoop", "pyVHDLParser/pyVHDLParser.Blocks.Exception", "pyVHDLParser/pyVHDLParser.Blocks.Expression", "pyVHDLParser/pyVHDLParser.Blocks.Generate", "pyVHDLParser/pyVHDLParser.Blocks.Generate.CaseGenerate", "pyVHDLParser/pyVHDLParser.Blocks.Generate.ForGenerate", "pyVHDLParser/pyVHDLParser.Blocks.Generate.IfGenerate", "pyVHDLParser/pyVHDLParser.Blocks.Generic", "pyVHDLParser/pyVHDLParser.Blocks.Generic1", "pyVHDLParser/pyVHDLParser.Blocks.Instantiation", "pyVHDLParser/pyVHDLParser.Blocks.Instantiation.EntityInstantiation", "pyVHDLParser/pyVHDLParser.Blocks.Instantiation.FunctionInstantiation", "pyVHDLParser/pyVHDLParser.Blocks.Instantiation.PackageInstantiation", "pyVHDLParser/pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation", "pyVHDLParser/pyVHDLParser.Blocks.InterfaceObject", "pyVHDLParser/pyVHDLParser.Blocks.List", "pyVHDLParser/pyVHDLParser.Blocks.List.GenericList", "pyVHDLParser/pyVHDLParser.Blocks.List.GenericMapList", "pyVHDLParser/pyVHDLParser.Blocks.List.ParameterList", "pyVHDLParser/pyVHDLParser.Blocks.List.PortList", "pyVHDLParser/pyVHDLParser.Blocks.List.PortMapList", "pyVHDLParser/pyVHDLParser.Blocks.List.SensitivityList", "pyVHDLParser/pyVHDLParser.Blocks.Object", "pyVHDLParser/pyVHDLParser.Blocks.Object.Constant", "pyVHDLParser/pyVHDLParser.Blocks.Object.File", "pyVHDLParser/pyVHDLParser.Blocks.Object.SharedVariable", "pyVHDLParser/pyVHDLParser.Blocks.Object.Signal", "pyVHDLParser/pyVHDLParser.Blocks.Object.Variable", "pyVHDLParser/pyVHDLParser.Blocks.Reference", "pyVHDLParser/pyVHDLParser.Blocks.Reference.Context", "pyVHDLParser/pyVHDLParser.Blocks.Reference.Library", "pyVHDLParser/pyVHDLParser.Blocks.Reference.Use", "pyVHDLParser/pyVHDLParser.Blocks.Reporting", "pyVHDLParser/pyVHDLParser.Blocks.Reporting.Assert", "pyVHDLParser/pyVHDLParser.Blocks.Reporting.Report", "pyVHDLParser/pyVHDLParser.Blocks.Sequential", "pyVHDLParser/pyVHDLParser.Blocks.Sequential.Function", "pyVHDLParser/pyVHDLParser.Blocks.Sequential.Package", "pyVHDLParser/pyVHDLParser.Blocks.Sequential.PackageBody", "pyVHDLParser/pyVHDLParser.Blocks.Sequential.Procedure", "pyVHDLParser/pyVHDLParser.Blocks.Sequential.Process", "pyVHDLParser/pyVHDLParser.Blocks.Structural", "pyVHDLParser/pyVHDLParser.Blocks.Structural.Architecture", "pyVHDLParser/pyVHDLParser.Blocks.Structural.Block", "pyVHDLParser/pyVHDLParser.Blocks.Structural.Component", "pyVHDLParser/pyVHDLParser.Blocks.Structural.Configuration", "pyVHDLParser/pyVHDLParser.Blocks.Structural.Entity", "pyVHDLParser/pyVHDLParser.Blocks.Type", "pyVHDLParser/pyVHDLParser.Blocks.Type.ResolutionIndication", "pyVHDLParser/pyVHDLParser.Blocks.Type.Subtype", "pyVHDLParser/pyVHDLParser.Blocks.Type.SubtypeIndication", "pyVHDLParser/pyVHDLParser.Blocks.Type.Type", "pyVHDLParser/pyVHDLParser.CLI", "pyVHDLParser/pyVHDLParser.CLI.ANTLR", "pyVHDLParser/pyVHDLParser.CLI.Block", "pyVHDLParser/pyVHDLParser.CLI.CodeDOM", "pyVHDLParser/pyVHDLParser.CLI.GraphML", "pyVHDLParser/pyVHDLParser.CLI.Group", "pyVHDLParser/pyVHDLParser.CLI.Token", "pyVHDLParser/pyVHDLParser.CLI.VHDLParser", "pyVHDLParser/pyVHDLParser.Decorators", "pyVHDLParser/pyVHDLParser.DocumentModel", "pyVHDLParser/pyVHDLParser.DocumentModel.DesignUnit", "pyVHDLParser/pyVHDLParser.DocumentModel.DesignUnit.Architecture", "pyVHDLParser/pyVHDLParser.DocumentModel.DesignUnit.Context", "pyVHDLParser/pyVHDLParser.DocumentModel.DesignUnit.Entity", "pyVHDLParser/pyVHDLParser.DocumentModel.DesignUnit.Package", "pyVHDLParser/pyVHDLParser.DocumentModel.DesignUnit.PackageBody", "pyVHDLParser/pyVHDLParser.DocumentModel.ObjectDeclaration", "pyVHDLParser/pyVHDLParser.DocumentModel.Reference", "pyVHDLParser/pyVHDLParser.DocumentModel.Sequential", "pyVHDLParser/pyVHDLParser.DocumentModel.Sequential.Function", "pyVHDLParser/pyVHDLParser.Filters", "pyVHDLParser/pyVHDLParser.Filters.Comment", "pyVHDLParser/pyVHDLParser.Groups", "pyVHDLParser/pyVHDLParser.Groups.Comment", "pyVHDLParser/pyVHDLParser.Groups.Concurrent", "pyVHDLParser/pyVHDLParser.Groups.DesignUnit", "pyVHDLParser/pyVHDLParser.Groups.List", "pyVHDLParser/pyVHDLParser.Groups.Object", "pyVHDLParser/pyVHDLParser.Groups.Reference", "pyVHDLParser/pyVHDLParser.Groups.Sequential", "pyVHDLParser/pyVHDLParser.Groups.Sequential.Function", "pyVHDLParser/pyVHDLParser.Groups.Sequential.Procedure", "pyVHDLParser/pyVHDLParser.Groups.Sequential.Process", "pyVHDLParser/pyVHDLParser.LanguageModel", "pyVHDLParser/pyVHDLParser.LanguageModel.DesignUnit", "pyVHDLParser/pyVHDLParser.LanguageModel.Expression", "pyVHDLParser/pyVHDLParser.LanguageModel.InterfaceItem", "pyVHDLParser/pyVHDLParser.LanguageModel.Reference", "pyVHDLParser/pyVHDLParser.NetlistModel", "pyVHDLParser/pyVHDLParser.NetlistModel.NetlistModel", "pyVHDLParser/pyVHDLParser.SimulationModel", "pyVHDLParser/pyVHDLParser.SimulationModel.EventSystem", "pyVHDLParser/pyVHDLParser.SimulationModel.SimulationModel", "pyVHDLParser/pyVHDLParser.StyleChecks", "pyVHDLParser/pyVHDLParser.Token", "pyVHDLParser/pyVHDLParser.Token.Keywords", "pyVHDLParser/pyVHDLParser.Token.Parser", "pyVHDLParser/pyVHDLParser.TypeSystem", "pyVHDLParser/pyVHDLParser.TypeSystem.Package", "pyVHDLParser/pyVHDLParser.TypeSystem.TypeSystem", "pyVHDLParser/pyVHDLParser.TypeSystem.std", "pyVHDLParser/pyVHDLParser.TypeSystem.std_logic_1164"], "filenames": ["BlockStream/Assignments/SignalAssignment.rst", "BlockStream/Assignments/VariableAssignment.rst", "BlockStream/Assignments/index.rst", "BlockStream/Attributes/AttributeDeclaration.rst", "BlockStream/Attributes/AttributeSpecification.rst", "BlockStream/Attributes/index.rst", "BlockStream/BlockGenerator.rst", "BlockStream/CommonBlocks.rst", "BlockStream/ControlStructures/Case.rst", "BlockStream/ControlStructures/Exit.rst", "BlockStream/ControlStructures/For.rst", "BlockStream/ControlStructures/If.rst", "BlockStream/ControlStructures/Next.rst", "BlockStream/ControlStructures/Null.rst", "BlockStream/ControlStructures/Return.rst", "BlockStream/ControlStructures/While.rst", "BlockStream/ControlStructures/index.rst", "BlockStream/Examples.rst", "BlockStream/Expressions.rst", "BlockStream/Generates/CaseGenerate.rst", "BlockStream/Generates/ForGenerate.rst", "BlockStream/Generates/IfGenerate.rst", "BlockStream/Generates/index.rst", "BlockStream/Instantiation/Entity.rst", "BlockStream/Instantiation/Function.rst", "BlockStream/Instantiation/Package.rst", "BlockStream/Instantiation/Procedure.rst", "BlockStream/Instantiation/index.rst", "BlockStream/Lists/GenericList.rst", "BlockStream/Lists/GenericMap.rst", "BlockStream/Lists/ParameterList.rst", "BlockStream/Lists/PortList.rst", "BlockStream/Lists/PortMap.rst", "BlockStream/Lists/SensitivityList.rst", "BlockStream/Lists/index.rst", "BlockStream/MetaBlocks.rst", "BlockStream/Objects/BaseClasses.rst", "BlockStream/Objects/Constant.rst", "BlockStream/Objects/File.rst", "BlockStream/Objects/SharedVariable.rst", "BlockStream/Objects/Signal.rst", "BlockStream/Objects/Variable.rst", "BlockStream/Objects/index.rst", "BlockStream/References/Context.rst", "BlockStream/References/Library.rst", "BlockStream/References/Use.rst", "BlockStream/References/index.rst", "BlockStream/Reporting/Assert.rst", "BlockStream/Reporting/Report.rst", "BlockStream/Reporting/index.rst", "BlockStream/Sequential/Function.rst", "BlockStream/Sequential/Package.rst", "BlockStream/Sequential/PackageBody.rst", "BlockStream/Sequential/Procedure.rst", "BlockStream/Sequential/Process.rst", "BlockStream/Sequential/index.rst", "BlockStream/SpecificBlocks.rst", "BlockStream/Structural/Architecture.rst", "BlockStream/Structural/Block.rst", "BlockStream/Structural/Component.rst", "BlockStream/Structural/Configuration.rst", "BlockStream/Structural/Entity.rst", "BlockStream/Structural/index.rst", "BlockStream/Types/Subtype.rst", "BlockStream/Types/Type.rst", "BlockStream/Types/index.rst", "BlockStream/Usage.rst", "BlockStream/index.rst", "ChangeLog/index.rst", "Concepts.rst", "Dependency.rst", "Doc-License.rst", "DocumentObjectModel/index.rst", "Glossary.rst", "GroupStream/Examples.rst", "GroupStream/GroupGenerator.rst", "GroupStream/MetaGroups.rst", "GroupStream/Usage.rst", "GroupStream/index.rst", "Installation.rst", "LanguageModel/ConcurrentStatements.rst", "LanguageModel/DesignUnits.rst", "LanguageModel/Enumerations.rst", "LanguageModel/InterfaceItems.rst", "LanguageModel/Miscellaneous.rst", "LanguageModel/ObjectDeclarations.rst", "LanguageModel/SequentialStatements.rst", "LanguageModel/SubprogramDefinitions.rst", "LanguageModel/TypeDefinitions.rst", "LanguageModel/index.rst", "License.rst", "Preprocessing/index.rst", "ProjectGoals.rst", "References/index.rst", "TODOs.rst", "TestApplication/VHDLParser.rst", "TestApplication/index.rst", "TokenStream/Examples.rst", "TokenStream/MetaTokens.rst", "TokenStream/SimpleTokens.rst", "TokenStream/SpecificTokens.rst", "TokenStream/Tokenizer.rst", "TokenStream/Usage.rst", "TokenStream/index.rst", "UseCases.rst", "index.rst", "pyVHDLParser/pyVHDLParser.rst", "pyVHDLParser/pyVHDLParser.ANTLR3.rst", "pyVHDLParser/pyVHDLParser.ANTLR3.VHDLLexer.rst", "pyVHDLParser/pyVHDLParser.ANTLR3.VHDLParser.rst", "pyVHDLParser/pyVHDLParser.ANTLR4.rst", "pyVHDLParser/pyVHDLParser.ANTLR4.VHDLLexer.rst", "pyVHDLParser/pyVHDLParser.ANTLR4.VHDLParser.rst", "pyVHDLParser/pyVHDLParser.ANTLR4.VHDLParserVisitor.rst", "pyVHDLParser/pyVHDLParser.ANTLR4.Visitor.rst", "pyVHDLParser/pyVHDLParser.Base.rst", "pyVHDLParser/pyVHDLParser.Blocks.rst", "pyVHDLParser/pyVHDLParser.Blocks.Assignment.rst", "pyVHDLParser/pyVHDLParser.Blocks.Assignment.SignalAssignment.rst", "pyVHDLParser/pyVHDLParser.Blocks.Assignment.VariableAssignment.rst", "pyVHDLParser/pyVHDLParser.Blocks.Attribute.rst", "pyVHDLParser/pyVHDLParser.Blocks.Attribute.AttributeDeclaration.rst", "pyVHDLParser/pyVHDLParser.Blocks.Attribute.AttributeSpecification.rst", "pyVHDLParser/pyVHDLParser.Blocks.Comment.rst", "pyVHDLParser/pyVHDLParser.Blocks.Common.rst", "pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.rst", "pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.Case.rst", "pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.Exit.rst", "pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.ForLoop.rst", "pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.If.rst", "pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.Next.rst", "pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.Null.rst", "pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.Return.rst", "pyVHDLParser/pyVHDLParser.Blocks.ControlStructure.WhileLoop.rst", "pyVHDLParser/pyVHDLParser.Blocks.Exception.rst", "pyVHDLParser/pyVHDLParser.Blocks.Expression.rst", "pyVHDLParser/pyVHDLParser.Blocks.Generate.rst", "pyVHDLParser/pyVHDLParser.Blocks.Generate.CaseGenerate.rst", "pyVHDLParser/pyVHDLParser.Blocks.Generate.ForGenerate.rst", "pyVHDLParser/pyVHDLParser.Blocks.Generate.IfGenerate.rst", "pyVHDLParser/pyVHDLParser.Blocks.Generic.rst", "pyVHDLParser/pyVHDLParser.Blocks.Generic1.rst", "pyVHDLParser/pyVHDLParser.Blocks.Instantiation.rst", "pyVHDLParser/pyVHDLParser.Blocks.Instantiation.EntityInstantiation.rst", "pyVHDLParser/pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.rst", "pyVHDLParser/pyVHDLParser.Blocks.Instantiation.PackageInstantiation.rst", "pyVHDLParser/pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.rst", "pyVHDLParser/pyVHDLParser.Blocks.InterfaceObject.rst", "pyVHDLParser/pyVHDLParser.Blocks.List.rst", "pyVHDLParser/pyVHDLParser.Blocks.List.GenericList.rst", "pyVHDLParser/pyVHDLParser.Blocks.List.GenericMapList.rst", "pyVHDLParser/pyVHDLParser.Blocks.List.ParameterList.rst", "pyVHDLParser/pyVHDLParser.Blocks.List.PortList.rst", "pyVHDLParser/pyVHDLParser.Blocks.List.PortMapList.rst", "pyVHDLParser/pyVHDLParser.Blocks.List.SensitivityList.rst", "pyVHDLParser/pyVHDLParser.Blocks.Object.rst", "pyVHDLParser/pyVHDLParser.Blocks.Object.Constant.rst", "pyVHDLParser/pyVHDLParser.Blocks.Object.File.rst", "pyVHDLParser/pyVHDLParser.Blocks.Object.SharedVariable.rst", "pyVHDLParser/pyVHDLParser.Blocks.Object.Signal.rst", "pyVHDLParser/pyVHDLParser.Blocks.Object.Variable.rst", "pyVHDLParser/pyVHDLParser.Blocks.Reference.rst", "pyVHDLParser/pyVHDLParser.Blocks.Reference.Context.rst", "pyVHDLParser/pyVHDLParser.Blocks.Reference.Library.rst", "pyVHDLParser/pyVHDLParser.Blocks.Reference.Use.rst", "pyVHDLParser/pyVHDLParser.Blocks.Reporting.rst", "pyVHDLParser/pyVHDLParser.Blocks.Reporting.Assert.rst", "pyVHDLParser/pyVHDLParser.Blocks.Reporting.Report.rst", "pyVHDLParser/pyVHDLParser.Blocks.Sequential.rst", "pyVHDLParser/pyVHDLParser.Blocks.Sequential.Function.rst", "pyVHDLParser/pyVHDLParser.Blocks.Sequential.Package.rst", "pyVHDLParser/pyVHDLParser.Blocks.Sequential.PackageBody.rst", "pyVHDLParser/pyVHDLParser.Blocks.Sequential.Procedure.rst", "pyVHDLParser/pyVHDLParser.Blocks.Sequential.Process.rst", "pyVHDLParser/pyVHDLParser.Blocks.Structural.rst", "pyVHDLParser/pyVHDLParser.Blocks.Structural.Architecture.rst", "pyVHDLParser/pyVHDLParser.Blocks.Structural.Block.rst", "pyVHDLParser/pyVHDLParser.Blocks.Structural.Component.rst", "pyVHDLParser/pyVHDLParser.Blocks.Structural.Configuration.rst", "pyVHDLParser/pyVHDLParser.Blocks.Structural.Entity.rst", "pyVHDLParser/pyVHDLParser.Blocks.Type.rst", "pyVHDLParser/pyVHDLParser.Blocks.Type.ResolutionIndication.rst", "pyVHDLParser/pyVHDLParser.Blocks.Type.Subtype.rst", "pyVHDLParser/pyVHDLParser.Blocks.Type.SubtypeIndication.rst", "pyVHDLParser/pyVHDLParser.Blocks.Type.Type.rst", "pyVHDLParser/pyVHDLParser.CLI.rst", "pyVHDLParser/pyVHDLParser.CLI.ANTLR.rst", "pyVHDLParser/pyVHDLParser.CLI.Block.rst", "pyVHDLParser/pyVHDLParser.CLI.CodeDOM.rst", "pyVHDLParser/pyVHDLParser.CLI.GraphML.rst", "pyVHDLParser/pyVHDLParser.CLI.Group.rst", "pyVHDLParser/pyVHDLParser.CLI.Token.rst", "pyVHDLParser/pyVHDLParser.CLI.VHDLParser.rst", "pyVHDLParser/pyVHDLParser.Decorators.rst", "pyVHDLParser/pyVHDLParser.DocumentModel.rst", "pyVHDLParser/pyVHDLParser.DocumentModel.DesignUnit.rst", "pyVHDLParser/pyVHDLParser.DocumentModel.DesignUnit.Architecture.rst", "pyVHDLParser/pyVHDLParser.DocumentModel.DesignUnit.Context.rst", "pyVHDLParser/pyVHDLParser.DocumentModel.DesignUnit.Entity.rst", "pyVHDLParser/pyVHDLParser.DocumentModel.DesignUnit.Package.rst", "pyVHDLParser/pyVHDLParser.DocumentModel.DesignUnit.PackageBody.rst", "pyVHDLParser/pyVHDLParser.DocumentModel.ObjectDeclaration.rst", "pyVHDLParser/pyVHDLParser.DocumentModel.Reference.rst", "pyVHDLParser/pyVHDLParser.DocumentModel.Sequential.rst", "pyVHDLParser/pyVHDLParser.DocumentModel.Sequential.Function.rst", "pyVHDLParser/pyVHDLParser.Filters.rst", "pyVHDLParser/pyVHDLParser.Filters.Comment.rst", "pyVHDLParser/pyVHDLParser.Groups.rst", "pyVHDLParser/pyVHDLParser.Groups.Comment.rst", "pyVHDLParser/pyVHDLParser.Groups.Concurrent.rst", "pyVHDLParser/pyVHDLParser.Groups.DesignUnit.rst", "pyVHDLParser/pyVHDLParser.Groups.List.rst", "pyVHDLParser/pyVHDLParser.Groups.Object.rst", "pyVHDLParser/pyVHDLParser.Groups.Reference.rst", "pyVHDLParser/pyVHDLParser.Groups.Sequential.rst", "pyVHDLParser/pyVHDLParser.Groups.Sequential.Function.rst", "pyVHDLParser/pyVHDLParser.Groups.Sequential.Procedure.rst", "pyVHDLParser/pyVHDLParser.Groups.Sequential.Process.rst", "pyVHDLParser/pyVHDLParser.LanguageModel.rst", "pyVHDLParser/pyVHDLParser.LanguageModel.DesignUnit.rst", "pyVHDLParser/pyVHDLParser.LanguageModel.Expression.rst", "pyVHDLParser/pyVHDLParser.LanguageModel.InterfaceItem.rst", "pyVHDLParser/pyVHDLParser.LanguageModel.Reference.rst", "pyVHDLParser/pyVHDLParser.NetlistModel.rst", "pyVHDLParser/pyVHDLParser.NetlistModel.NetlistModel.rst", "pyVHDLParser/pyVHDLParser.SimulationModel.rst", "pyVHDLParser/pyVHDLParser.SimulationModel.EventSystem.rst", "pyVHDLParser/pyVHDLParser.SimulationModel.SimulationModel.rst", "pyVHDLParser/pyVHDLParser.StyleChecks.rst", "pyVHDLParser/pyVHDLParser.Token.rst", "pyVHDLParser/pyVHDLParser.Token.Keywords.rst", "pyVHDLParser/pyVHDLParser.Token.Parser.rst", "pyVHDLParser/pyVHDLParser.TypeSystem.rst", "pyVHDLParser/pyVHDLParser.TypeSystem.Package.rst", "pyVHDLParser/pyVHDLParser.TypeSystem.TypeSystem.rst", "pyVHDLParser/pyVHDLParser.TypeSystem.std.rst", "pyVHDLParser/pyVHDLParser.TypeSystem.std_logic_1164.rst"], "titles": ["Signal Assignment", "Variable Assignment", "Assignments", "Attribute Declaration", "Attribute Specification", "Attributes", "Block Generator", "Common Blocks", "Case Statement", "Exit Statement", "For Loop", "If Statement", "Next Statement", "Null Statement", "Return Statement", "While Loop", "Control Structures", "Examples", "Expressions", "Case Generate Statement", "For Generate Statement", "If Generate Statement", "Generate Statements", "Entity Instantiation", "Function Instantiation", "Package Instantiation", "Procedure Instantiation", "Instantiations", "Generic List", "Generic Map", "Parameter List", "Port List", "Port Map", "Sensitivity List", "Lists and Maps", "Meta Blocks", "Base Classes", "Constants", "File", "Shared Variables", "Signals", "Variables", "Objects", "Context Statement", "LibraryStatement Statement", "Use Statement", "References", "Assert Statement", "Report Statement", "Reporting", "Function", "Package", "Package Body", "Procedure", "Process", "Sequential", "Specific Blocks", "Architecture", "Block", "Component", "Configuration", "Entity", "Structural", "Subtype", "Type", "Types", "Usage", "2. Pass - Blocks", "ChangeLog", "Concepts", "Dependencies", "Creative Commons Attribution 4.0 International", "4. Pass - Code-DOM", "Glossary", "Examples", "Group Generator", "Meta Groups", "Usage", "3. Pass - Groups", "Installation/Updates", "Concurrent Statements", "Design Units", "Enumerations", "Interface Items", "Concepts not defined by IEEE Std. 1076", "Object Declartions", "Sequential Statements", "Subprogram Declarations", "Type Declarations", "VHDL Language Model", "Apache License 2.0", "0. Pass - Preprocessing", "Project Goals", "Scripts and Applications", "<no title>", "Command Line Interface VHDLParser", "Test Applications", "Examples", "Meta Tokens", "Simple Tokens", "Specific Tokens", "Token Generator (Tokenizer)", "Usage", "1. Pass - Tokens", "Use Cases", "The pyVHDLParser Documentation", "Python Class Reference", "pyVHDLParser.ANTLR3", "pyVHDLParser.ANTLR3.VHDLLexer", "pyVHDLParser.ANTLR3.VHDLParser", "pyVHDLParser.ANTLR4", "pyVHDLParser.ANTLR4.VHDLLexer", "pyVHDLParser.ANTLR4.VHDLParser", "pyVHDLParser.ANTLR4.VHDLParserVisitor", "pyVHDLParser.ANTLR4.Visitor", "Python Class Reference", "pyVHDLParser.Blocks", "pyVHDLParser.Blocks.Assignment", "pyVHDLParser.Blocks.Assignment.SignalAssignment", "pyVHDLParser.Blocks.Assignment.VariableAssignment", "pyVHDLParser.Blocks.Attribute", "pyVHDLParser.Blocks.Attribute.AttributeDeclaration", "pyVHDLParser.Blocks.Attribute.AttributeSpecification", "pyVHDLParser.Blocks.Comment", "pyVHDLParser.Blocks.Common", "pyVHDLParser.Blocks.ControlStructure", "pyVHDLParser.Blocks.ControlStructure.Case", "pyVHDLParser.Blocks.ControlStructure.Exit", "pyVHDLParser.Blocks.ControlStructure.ForLoop", "pyVHDLParser.Blocks.ControlStructure.If", "pyVHDLParser.Blocks.ControlStructure.Next", "pyVHDLParser.Blocks.ControlStructure.Null", "pyVHDLParser.Blocks.ControlStructure.Return", "pyVHDLParser.Blocks.ControlStructure.WhileLoop", "pyVHDLParser.Blocks.Exception", "pyVHDLParser.Blocks.Expression", "pyVHDLParser.Blocks.Generate", "pyVHDLParser.Blocks.Generate.CaseGenerate", "pyVHDLParser.Blocks.Generate.ForGenerate", "pyVHDLParser.Blocks.Generate.IfGenerate", "pyVHDLParser.Blocks.Generic", "pyVHDLParser.Blocks.Generic1", "pyVHDLParser.Blocks.Instantiation", "pyVHDLParser.Blocks.Instantiation.EntityInstantiation", "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation", "pyVHDLParser.Blocks.Instantiation.PackageInstantiation", "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation", "pyVHDLParser.Blocks.InterfaceObject", "pyVHDLParser.Blocks.List", "pyVHDLParser.Blocks.List.GenericList", "pyVHDLParser.Blocks.List.GenericMapList", "pyVHDLParser.Blocks.List.ParameterList", "pyVHDLParser.Blocks.List.PortList", "pyVHDLParser.Blocks.List.PortMapList", "pyVHDLParser.Blocks.List.SensitivityList", "pyVHDLParser.Blocks.Object", "pyVHDLParser.Blocks.Object.Constant", "pyVHDLParser.Blocks.Object.File", "pyVHDLParser.Blocks.Object.SharedVariable", "pyVHDLParser.Blocks.Object.Signal", "pyVHDLParser.Blocks.Object.Variable", "pyVHDLParser.Blocks.Reference", "pyVHDLParser.Blocks.Reference.Context", "pyVHDLParser.Blocks.Reference.Library", "pyVHDLParser.Blocks.Reference.Use", "pyVHDLParser.Blocks.Reporting", "pyVHDLParser.Blocks.Reporting.Assert", "pyVHDLParser.Blocks.Reporting.Report", "pyVHDLParser.Blocks.Sequential", "pyVHDLParser.Blocks.Sequential.Function", "pyVHDLParser.Blocks.Sequential.Package", "pyVHDLParser.Blocks.Sequential.PackageBody", "pyVHDLParser.Blocks.Sequential.Procedure", "pyVHDLParser.Blocks.Sequential.Process", "pyVHDLParser.Blocks.Structural", "pyVHDLParser.Blocks.Structural.Architecture", "pyVHDLParser.Blocks.Structural.Block", "pyVHDLParser.Blocks.Structural.Component", "pyVHDLParser.Blocks.Structural.Configuration", "pyVHDLParser.Blocks.Structural.Entity", "pyVHDLParser.Blocks.Type", "pyVHDLParser.Blocks.Type.ResolutionIndication", "pyVHDLParser.Blocks.Type.Subtype", "pyVHDLParser.Blocks.Type.SubtypeIndication", "pyVHDLParser.Blocks.Type.Type", "pyVHDLParser.CLI", "pyVHDLParser.CLI.ANTLR", "pyVHDLParser.CLI.Block", "pyVHDLParser.CLI.CodeDOM", "pyVHDLParser.CLI.GraphML", "pyVHDLParser.CLI.Group", "pyVHDLParser.CLI.Token", "pyVHDLParser.CLI.VHDLParser", "Python Class Reference", "pyVHDLParser.DocumentModel", "pyVHDLParser.DocumentModel.DesignUnit", "pyVHDLParser.DocumentModel.DesignUnit.Architecture", "pyVHDLParser.DocumentModel.DesignUnit.Context", "pyVHDLParser.DocumentModel.DesignUnit.Entity", "pyVHDLParser.DocumentModel.DesignUnit.Package", "pyVHDLParser.DocumentModel.DesignUnit.PackageBody", "pyVHDLParser.DocumentModel.ObjectDeclaration", "pyVHDLParser.DocumentModel.Reference", "pyVHDLParser.DocumentModel.Sequential", "pyVHDLParser.DocumentModel.Sequential.Function", "pyVHDLParser.Filters", "pyVHDLParser.Filters.Comment", "pyVHDLParser.Groups", "pyVHDLParser.Groups.Comment", "pyVHDLParser.Groups.Concurrent", "pyVHDLParser.Groups.DesignUnit", "pyVHDLParser.Groups.List", "pyVHDLParser.Groups.Object", "pyVHDLParser.Groups.Reference", "pyVHDLParser.Groups.Sequential", "pyVHDLParser.Groups.Sequential.Function", "pyVHDLParser.Groups.Sequential.Procedure", "pyVHDLParser.Groups.Sequential.Process", "pyVHDLParser.LanguageModel", "pyVHDLParser.LanguageModel.DesignUnit", "pyVHDLParser.LanguageModel.Expression", "pyVHDLParser.LanguageModel.InterfaceItem", "pyVHDLParser.LanguageModel.Reference", "pyVHDLParser.NetlistModel", "pyVHDLParser.NetlistModel.NetlistModel", "pyVHDLParser.SimulationModel", "pyVHDLParser.SimulationModel.EventSystem", "pyVHDLParser.SimulationModel.SimulationModel", "pyVHDLParser.StyleChecks", "pyVHDLParser.Token", "pyVHDLParser.Token.Keywords", "pyVHDLParser.Token.Parser", "pyVHDLParser.TypeSystem", "pyVHDLParser.TypeSystem.Package", "pyVHDLParser.TypeSystem.TypeSystem", "pyVHDLParser.TypeSystem.std", "pyVHDLParser.TypeSystem.std_logic_1164"], "terms": {"\u00bd": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "\u00bc": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "\u215b": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "\u00be": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "\u215c": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "\u215d": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "\u215e": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "_": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "\u00b5": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "\u03c9": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "\u00aa": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "\u00ba": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "\u00b9": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "\u00b2": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "\u00b3": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "\u212c": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "\u2145": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "\u212d": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "\u2102": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "\u2146": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "\u03dd": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "\u2130": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "\u2147": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "\u2131": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "\u02c7": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "\u210f": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "\u210b": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "\u2111": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "\u2148": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "\u2110": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "\u2124": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "\u2112": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "\u2133": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "\u2115": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "\u2134": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "\u210c": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "\u2119": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "\u210d": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "\u211a": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "\u211c": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "\u211b": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "\u211d": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "\u03f5": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "\u03d5": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "\u03c5": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "\u03b5": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "\u03f0": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "\u03c6": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "\u03d6": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "\u03f1": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "\u03c2": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "\u03d1": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "\u2128": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "vhdl": [2, 16, 17, 22, 56, 69, 73, 84, 91, 92, 93, 97, 99, 103, 104, 105, 106, 194, 196, 197, 198, 199, 200, 219, 229, 230], "distinguish": [2, 230], "two": [2, 16, 35, 66, 76, 84, 92, 98, 99, 102, 231], "statement": [2, 16, 46, 49, 56, 69, 84, 89, 90, 104, 105, 116, 207, 219, 230], "base": [2, 17, 18, 35, 42, 56, 66, 67, 69, 71, 76, 78, 90, 92, 97, 98, 102, 103, 104, 105, 106, 116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184, 192, 194, 196, 197, 198, 199, 200, 207, 219, 229, 230, 231], "kind": [2, 71, 90, 99], "object": [2, 37, 39, 40, 41, 56, 66, 67, 72, 78, 84, 89, 90, 92, 93, 102, 103, 105, 116, 207, 229, 230, 231], "i": [2, 17, 18, 35, 66, 67, 69, 71, 72, 73, 76, 78, 84, 89, 90, 92, 93, 96, 97, 98, 101, 102, 103, 104, 105, 116, 192, 196, 197, 198, 199, 200, 207, 219, 229, 230, 231], "target": 2, "variabl": [2, 42, 56, 66, 69, 89, 102, 105, 116, 155, 230], "signal": [2, 42, 56, 89, 103, 116, 155, 226, 227, 230], "declar": [5, 56, 69, 83, 89, 140, 169, 170, 171, 172, 173, 175, 176, 179, 194, 230, 233], "specif": [5, 69, 84, 90, 97, 229, 230], "pyvhdlpars": [8, 9, 10, 11, 12, 13, 14, 15, 35, 36, 37, 39, 40, 41, 66, 69, 76, 91, 92, 93, 96, 97, 98, 99, 101, 102, 103, 104, 106], "block": [8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 36, 37, 39, 40, 41, 62, 69, 73, 78, 96, 105, 106, 185, 192, 207, 208, 209, 210, 211, 212, 213, 215, 216, 217, 230], "generic1": [8, 9, 10, 11, 12, 13, 14, 15, 36, 116, 126, 127, 128, 129, 130, 131, 132, 133, 136, 137, 138, 139, 140, 149, 151, 152, 155, 156, 158, 159, 160, 162, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179], "gener": [8, 10, 11, 17, 34, 56, 67, 70, 74, 77, 78, 89, 90, 92, 93, 96, 97, 99, 103, 105, 116, 126, 128, 129, 169, 170, 171, 172, 173, 175, 176, 178, 179, 207, 227, 231], "sequentialbeginblock": [8, 10, 11, 50, 53, 54, 116, 126, 128, 129, 140, 169, 172, 173], "baseexpress": [8, 9, 10, 11, 12, 14, 37, 40, 41], "expressionblockendedbycharorclosingroundbracket": [8, 116, 126, 135, 149, 152], "expressionblockendedbykeywordorclosingroundbracket": [8, 10, 11, 116, 126, 128, 129, 135], "endofstatementblock": [9, 12, 13, 14, 36, 116, 127, 130, 131, 132, 141, 155, 156, 158, 159, 160], "expressionblockendedbysemicolon": [9, 12, 14, 37, 40, 41, 116, 127, 130, 132, 135, 156, 159, 160], "expressionblockendedbykeywordortoordownto": [10, 116, 128, 135], "ha": [16, 67, 69, 71, 78, 84, 90, 99, 101, 104, 116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184, 192, 207, 208, 209, 210, 211, 212, 213, 215, 216, 217], "flow": [16, 69], "case": [16, 22, 56, 69, 71, 89, 91, 92, 97, 103, 116, 125, 196, 197, 198, 199, 200, 219, 229, 230], "loop": [16, 56, 66, 69, 89, 102], "while": [16, 56, 66, 89, 90, 92, 97, 99, 102, 103, 104, 229, 230], "next": [16, 56, 66, 67, 69, 78, 97, 102, 103, 104, 116, 118, 119, 121, 122, 123, 124, 125, 126, 127, 128, 129, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184, 207, 208, 209, 210, 211, 212, 213, 215, 216, 217, 229, 230], "exit": [16, 18, 56, 93, 116, 125, 192, 194, 207], "final": [16, 66, 92, 102, 104, 116, 126, 128, 129, 133, 136, 137, 138, 139, 141, 143, 144, 145, 146, 162, 163, 164, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179], "miscellan": 16, "return": [16, 56, 66, 69, 101, 102, 116, 118, 119, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184, 192, 194, 196, 197, 198, 199, 200, 207, 208, 209, 210, 211, 212, 213, 215, 216, 217, 219, 226, 227, 229, 230, 231, 234], "null": [16, 56, 116, 125], "If": [16, 22, 56, 66, 69, 71, 89, 90, 102, 116, 125, 207, 231], "For": [16, 22, 56, 71, 89, 90, 95], "The": [17, 18, 56, 66, 69, 70, 71, 84, 89, 90, 91, 92, 93, 95, 96, 97, 99, 101, 102, 103, 104, 116, 194, 196, 197, 198, 199, 200, 207, 219, 230, 231], "follow": [17, 56, 66, 71, 90, 91, 95, 97, 102, 104, 229], "from": [17, 18, 35, 66, 69, 70, 71, 76, 90, 93, 97, 98, 102, 104, 116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184, 207, 229, 230], "given": [17, 97, 192, 231], "sourc": [17, 35, 66, 69, 72, 76, 84, 90, 92, 97, 98, 102, 103, 104, 116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184, 192, 194, 196, 197, 198, 199, 200, 207, 208, 209, 210, 211, 212, 213, 215, 216, 217, 219, 224, 226, 227, 229, 230, 231, 233, 234], "file": [17, 35, 42, 56, 66, 69, 70, 72, 76, 89, 90, 91, 92, 97, 98, 102, 103, 104, 105, 155, 194, 229], "To": [17, 71, 90, 97, 231], "have": [17, 35, 69, 71, 76, 90, 97, 98, 103, 192], "full": [17, 69, 71, 92, 95, 97, 104, 116], "forward": [17, 97, 104, 105, 116, 124, 126, 128, 129, 133, 136, 137, 138, 139, 141, 143, 144, 145, 146, 149, 150, 151, 152, 153, 154, 162, 163, 164, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179], "backward": [17, 97], "link": [17, 35, 67, 76, 78, 90, 92, 95, 97, 98, 103, 105, 116, 229, 230], "between": [17, 93, 95, 97, 230], "chain": [17, 35, 66, 67, 69, 76, 78, 92, 97, 98, 102, 103], "must": [17, 71, 90, 97, 231], "fulli": [17, 97], "One": [17, 69, 97], "easi": [17, 69, 97], "approach": [17, 69, 97], "us": [17, 35, 46, 56, 66, 69, 70, 72, 73, 76, 83, 84, 90, 91, 92, 97, 98, 102, 116, 161, 192, 196, 197, 198, 199, 200, 207, 219, 229, 231], "comprehens": [17, 97], "sourcefil": [17, 97, 104, 194], "myentity_1": [17, 97], "end": [17, 18, 35, 66, 69, 76, 92, 97, 98, 102, 103, 229, 230, 231], "myentity_2": [17, 97], "expect": [17, 69, 71, 97], "output": [17, 97], "found": [17, 97, 101, 194, 231], "algorithm": [17, 97], "document": [17, 47, 48, 63, 64, 66, 69, 71, 72, 77, 80, 81, 82, 83, 84, 85, 86, 87, 88, 90, 92, 93, 194, 196, 197, 198, 199, 200, 207, 219], "drawback": [17, 97], "now": [17, 71, 105, 116, 207], "compar": [17, 104, 229], "pure": [17, 104], "token": [17, 18, 35, 67, 73, 76, 92, 96, 97, 105, 106, 116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184, 185, 192], "solut": [17, 69, 97], "ar": [18, 35, 66, 67, 69, 70, 71, 76, 78, 83, 84, 90, 92, 95, 98, 99, 102, 103, 104, 105, 116, 126, 128, 129, 133, 136, 137, 138, 139, 141, 143, 144, 145, 146, 162, 163, 164, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 192, 207, 229, 231], "class": [18, 35, 42, 56, 67, 72, 73, 76, 78, 83, 84, 89, 90, 98, 99, 101, 103, 105, 116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184, 192, 194, 196, 197, 198, 199, 200, 207, 208, 209, 210, 211, 212, 213, 215, 216, 217, 219, 224, 226, 227, 229, 230, 231, 233, 234], "implement": [18, 47, 48, 63, 64, 66, 69, 84, 91, 92, 101, 102, 105, 116, 192, 207, 230], "all": [18, 66, 67, 69, 70, 71, 78, 84, 90, 101, 102, 103, 104, 106, 115, 116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184, 193, 194, 196, 197, 198, 199, 200, 207, 208, 209, 210, 211, 212, 213, 215, 216, 217, 219, 229, 230, 231], "four": 18, "deriv": [18, 35, 69, 71, 76, 90, 98, 116, 207], "anoth": [18, 67, 78, 104], "call": [18, 66, 69, 89, 102, 104, 116, 207], "e": [18, 69, 70, 104], "g": [18, 69, 70, 104], "constantdeclarationdefaultexpressionblock": [18, 42, 116, 156], "condens": [18, 67, 72, 78, 83, 84, 103], "definit": [18, 67, 69, 72, 78, 83, 84, 103], "export": [18, 67, 69, 78, 83, 84, 103, 104], "character_transl": 18, "equaloper": [18, 230], "plusoper": [18, 230], "minusoper": [18, 230], "multiplyoper": [18, 230], "divideoper": [18, 230], "concatoper": [18, 230], "lessthanoper": [18, 230], "greaterthanoper": [18, 230], "delimitertoken": [18, 149, 152, 230], "endtoken": [18, 67, 116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184, 230], "fused_character_transl": 18, "poweroper": [18, 230], "unequaloper": [18, 230], "lessthanorequaloper": [18, 230], "greaterthanorequaloper": [18, 230], "matchingequaloper": [18, 230], "matchingunequaloper": [18, 230], "matchinglessthanoper": [18, 230], "matchinglessthanorequaloper": [18, 230], "matchinggreaterthanoper": [18, 230], "matchinggreaterthanorequaloper": [18, 230], "mapassociationkeyword": [18, 126, 230], "signalassociationkeyword": [18, 230], "operator_transl": 18, "orkeyword": 18, "nor": [18, 71], "norkeyword": 18, "andkeyword": 18, "nand": 18, "nandkeyword": 18, "xor": [18, 99], "xorkeyword": 18, "xnor": 18, "xnorkeyword": 18, "sla": 18, "slakeyword": 18, "sll": 18, "sllkeyword": 18, "sra": 18, "srakeyword": 18, "srl": 18, "srlkeyword": 18, "notkeyword": 18, "ab": [18, 230, 231], "abskeyword": 18, "can": [18, 66, 69, 71, 92, 95, 99, 102, 104, 116, 124, 144, 145, 146, 149, 150, 151, 152, 153, 154, 163, 164, 207], "user": [18, 69, 104], "defin": [18, 71, 89, 90, 101, 104, 194, 230], "charact": [18, 35, 69, 76, 90, 98, 99, 101, 103, 116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184, 192, 229, 231], "see": [18, 70, 84, 89, 90, 95, 105], "keyword": [18, 69, 97, 104, 126, 128, 129, 133, 136, 137, 138, 139, 162, 169, 170, 172, 173, 175, 176, 177, 178, 179, 229], "downto": 18, "thi": [18, 35, 66, 67, 69, 71, 76, 78, 90, 92, 93, 97, 98, 102, 104, 105, 116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184, 194, 207, 208, 209, 210, 211, 212, 213, 215, 216, 217, 229, 230], "It": [18, 35, 69, 76, 91, 92, 98, 101, 194], "an": [18, 66, 69, 71, 90, 91, 92, 93, 96, 97, 102, 104, 105, 116, 192, 207, 229, 230, 231], "either": [18, 69, 90, 91, 231], "close": [18, 71, 230], "round": [18, 230, 231], "bracket": [18, 90, 230], "when": [18, 69, 70, 92, 116], "inherit": [18, 116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184, 192, 194, 196, 197, 198, 199, 200, 207, 208, 209, 210, 211, 212, 213, 215, 216, 217, 219, 224, 226, 227, 229, 230, 231, 233, 234], "need": [18, 69, 70, 71, 105], "overwrit": 18, "exit_char": 18, "caus": [18, 90], "parser": [18, 66, 92, 93, 97, 101, 102, 103, 104, 105, 106, 116, 192, 207, 229], "exit_token": [18, 126, 149, 152], "emit": 18, "replac": [18, 71, 90, 100, 116, 207, 230], "charactertoken": [18, 99, 229, 230], "exit_block": [18, 126, 128, 129, 149, 152], "str": [18, 116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184, 192, 194, 196, 197, 198, 199, 200, 207, 208, 209, 210, 211, 212, 213, 215, 216, 217, 219, 226, 227, 229, 230, 231, 234], "none": [18, 67, 69, 70, 72, 78, 84, 97, 103, 116, 118, 119, 121, 122, 123, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184, 192, 194, 196, 197, 198, 199, 200, 207, 208, 209, 210, 211, 212, 213, 215, 216, 217, 219, 227, 229, 230, 231, 234], "classmethod": [18, 67, 72, 116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184, 192, 207], "def": [18, 67, 69, 72, 78, 84, 103], "statebeforeexpress": 18, "cl": [18, 67, 72, 116, 207], "parserst": [18, 67, 116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184, 207], "stateexpress": 18, "statewhitespace1": 18, "support": [22, 69, 90, 105, 192, 231], "three": 22, "differ": [22, 71, 90], "entiti": [27, 56, 62, 71, 72, 84, 89, 90, 99, 103, 104, 116, 174, 194, 195, 196, 197, 199, 200, 219], "packag": [27, 55, 56, 69, 72, 84, 89, 93, 96, 104, 105, 106, 115, 116, 168, 193, 194, 195, 196, 197, 198, 200, 219, 232], "function": [27, 55, 56, 66, 69, 89, 102, 104, 116, 168, 181, 192, 203, 207, 214, 229, 233], "procedur": [27, 55, 56, 69, 79, 89, 104, 116, 168, 214, 233], "port": [34, 56, 89, 103, 104], "paramet": [34, 56, 69, 89, 116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184, 192, 194, 196, 197, 198, 199, 200, 207, 208, 209, 211, 212, 213, 215, 217, 219, 229, 230, 231, 233], "sensit": [34, 56], "There": [35, 76, 98], "These": [35, 69, 70, 76, 84, 98, 99, 116, 207], "repres": [35, 69, 76, 90, 98, 103, 104, 116, 194, 207, 229, 230, 231], "start": [35, 68, 76, 92, 97, 98, 103, 229, 230], "stream": [35, 66, 67, 69, 75, 76, 78, 92, 95, 98, 102, 103, 105, 106, 229], "length": [35, 67, 76, 78, 98, 116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184, 231], "0": [35, 66, 70, 72, 76, 97, 98, 101, 102, 105, 116, 192, 229, 231], "doubl": [35, 67, 76, 78, 92, 93, 95, 98, 103, 116, 229], "": [35, 66, 69, 71, 73, 76, 78, 90, 92, 93, 97, 98, 102, 103, 104, 105, 116, 192, 194, 196, 197, 198, 199, 200, 207, 219, 230, 231], "input": [35, 66, 69, 76, 91, 98, 102, 104, 105], "whole": [35, 71, 76, 90, 98], "otherwis": [35, 71, 76, 90, 98], "startofsnippetblock": [35, 116], "startofblock": [35, 116], "mixin": [35, 76, 98, 192, 207], "startofdocu": [35, 76, 98, 116, 207, 229], "interit": [35, 76, 98], "diagram": [35, 76, 98], "startof": [35, 76, 98, 116, 207, 229], "endofsnippetblock": [35, 116], "endofblock": [35, 116], "endofdocu": [35, 76, 98, 116, 207, 229], "endof": [35, 76, 98, 116, 207, 229], "objectdeclarationendmarkerblock": [37, 39, 40, 41, 42, 116, 155, 156, 158, 159, 160], "objectdeclarationblock": [37, 39, 40, 41, 42, 116, 155, 156, 158, 159, 160], "constant": [42, 56, 89, 103, 116, 155], "constantdeclarationendmarkerblock": [42, 116, 156], "constantdeclarationblock": [42, 116, 156], "signaldeclarationendmarkerblock": [42, 116, 159], "signaldeclarationdefaultexpressionblock": [42, 116, 159], "signaldeclarationblock": [42, 116, 159], "share": [42, 56, 69, 71, 89, 90], "sharedvariabledeclarationendmarkerblock": [42, 116, 158], "sharedvariabledeclarationblock": [42, 116, 158], "variabledeclarationendmarkerblock": [42, 116, 160], "variabledeclarationdefaultexpressionblock": [42, 116, 160], "variabledeclarationblock": [42, 116, 160], "librarystat": [46, 56, 89], "context": [46, 56, 71, 84, 89, 99, 116, 161, 194, 195, 196, 198, 199, 200, 219], "Not": [47, 48, 63, 64, 70, 90], "yet": [47, 48, 63, 64, 70], "thu": [47, 48, 63, 64, 66, 70, 84, 99, 102, 104, 229], "avail": [47, 48, 63, 64, 71, 90], "assert": [49, 56, 71, 89, 90, 116, 165, 230], "endblockbas": [50, 51, 52, 53, 54, 58, 61], "sequentialdeclarativeregion": [50, 51, 52, 53, 54, 116, 140, 169, 170, 171, 172, 173], "endblock": [55, 62, 78, 116, 126, 127, 128, 129, 130, 131, 132, 133, 136, 137, 138, 139, 141, 143, 144, 145, 146, 162, 163, 164, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 207, 208, 209, 210, 211, 212, 213, 215, 216, 217], "declarativeregion": [55, 62, 116, 140, 169, 170, 171, 172, 173, 175, 176, 179], "nameblock": [55, 62, 116, 162, 169, 170, 171, 172, 175, 176, 177, 178, 179], "bodi": [55, 56, 84, 89, 194, 230, 233], "beginblock": [55, 62, 116, 126, 128, 129, 137, 138, 139, 140, 141, 169, 172, 173, 175, 176, 178, 179], "returntypeblock": [55, 116, 169], "voidblock": [55, 116, 172], "process": [55, 56, 66, 69, 71, 89, 91, 102, 105, 116, 168, 214, 226, 227], "openblock": [55, 116, 149, 150, 151, 152, 153, 154, 173], "openblock2": [55, 116, 173], "subsect": 56, "describ": [56, 69, 71, 72, 75, 79, 90, 101], "mean": [56, 71, 90, 92], "individu": [56, 69, 71, 90], "A": [56, 69, 71, 72, 73, 84, 90, 104, 105, 106, 116, 192, 194, 196, 197, 198, 199, 200, 207, 219, 229, 231], "set": [56, 71], "correspond": [56, 71], "languag": [56, 69, 73, 84, 90, 92, 99, 105], "construct": [56, 69, 73, 104, 116, 207], "like": [56, 69, 84, 104, 105], "assign": [56, 89, 105, 116, 230], "attribut": [56, 69, 90, 97, 116, 192, 207, 230], "control": [56, 90], "structur": [56, 104, 116], "instanti": [56, 89, 116, 207], "list": [56, 67, 70, 84, 90, 95, 99, 103, 104, 116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184, 192, 194, 196, 197, 198, 199, 200, 207, 219, 230, 231], "map": [56, 104], "refer": [56, 67, 69, 71, 73, 78, 92, 103, 116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184, 194, 196, 197, 198, 199, 200, 207, 208, 209, 210, 211, 212, 215, 216, 217, 218, 219, 229, 230], "report": [56, 89, 95, 97, 105, 116], "sequenti": [56, 89, 116, 140, 194, 207], "architectur": [56, 62, 72, 84, 116, 174, 194, 195, 219, 230], "compon": [56, 62, 104, 116, 174], "configur": [56, 62, 84, 89, 90, 105, 116, 174, 194, 219], "type": [56, 73, 78, 89, 90, 92, 104, 105, 116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 192, 196, 198, 199, 200, 207, 208, 209, 210, 211, 212, 213, 215, 216, 217, 219, 229, 230, 234], "subtyp": [56, 65, 88, 116, 180, 227, 233, 234], "concurrentbeginblock": [57, 58, 60, 61, 116, 140, 175, 176, 178, 179], "concurrentdeclarativeregion": [57, 58, 61, 116, 140, 175, 176, 179], "show": [66, 93, 102], "code": [66, 70, 90, 92, 93, 102, 103, 105, 192, 229], "exampl": [66, 69, 71, 90, 92, 99, 102, 103, 104, 105, 231], "how": [66, 69, 71, 90, 102], "first": [66, 67, 78, 92, 102, 103, 105, 116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184, 207, 208, 209, 210, 211, 212, 213, 215, 216, 217], "second": [66, 67, 97, 102, 207, 229, 230], "one": [66, 71, 90, 101, 102], "retriev": [66, 102], "low": [66, 102], "level": [66, 102, 104, 192], "access": [66, 69, 71, 89, 102, 104, 196, 197, 198, 199, 200, 219, 230], "At": [66, 69, 102], "open": [66, 97, 102, 230], "content": [66, 69, 71, 72, 90, 91, 97, 102], "read": [66, 67, 71, 78, 93, 97, 102, 116, 196, 197, 198, 199, 200, 219], "string": [66, 69, 91, 99, 102, 229, 230], "buffer": [66, 102, 230, 231], "creat": [66, 69, 71, 93, 95, 99, 102, 104, 105, 116, 207, 230, 234], "getvhdltoken": [66, 97, 102], "transform": [66, 71, 90, 105], "each": [66, 84, 90, 102, 103], "startofdocumentblock": [66, 116], "endofdocumentblock": [66, 116], "r": [66, 70, 97, 101, 102, 231], "filehandl": [66, 97, 102], "import": [66, 71, 90, 97, 102], "tokentoblockpars": [66, 116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184], "parserexcept": [66, 97, 102, 116, 194, 207, 231], "get": [66, 97, 102, 104], "tokenstream": [66, 102, 103], "blockstream": 66, "try": [66, 69, 97, 102], "print": [66, 69, 72, 90, 93, 97, 102, 192], "format": [66, 69, 71, 90, 97, 102, 104, 192], "except": [66, 69, 71, 90, 97, 102, 105, 116, 192, 194, 207, 231], "ex": [66, 97, 102, 192], "error": [66, 71, 95, 97, 102, 105, 116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184, 192], "notimplementederror": [66, 97, 102, 192], "similar": [66, 71, 102], "previou": [66, 67, 71, 78, 102, 103, 116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184, 207, 208, 209, 210, 211, 212, 213, 215, 216, 217, 229, 230], "time": [66, 71, 101, 102, 226], "manual": [66, 70, 73, 102], "new": [66, 69, 91, 102, 116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184, 207, 230], "want": [66, 102], "outer": [66, 102], "last": [66, 67, 78, 97, 101, 102, 103, 116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184, 207, 208, 209, 210, 211, 212, 213, 215, 216, 217, 231], "so": [66, 69, 71, 92, 102, 116, 207], "onc": [66, 102], "element": [66, 69, 84, 102, 104], "Then": [66, 102], "endless": [66, 102], "rais": [66, 69, 102, 116, 207, 231], "exec": 66, "stopiter": [66, 69, 102], "store": [66, 102, 116, 207], "lastblock": 66, "blockiter": [66, 116, 207], "firstblock": 66, "pass": [66, 92, 102, 104, 105], "limit": [66, 92, 99, 104], "rang": [66, 104, 234], "In": [67, 71, 78, 90, 92, 103, 104, 230], "group": [67, 69, 74, 77, 96, 105, 106, 185, 192, 194], "python": [67, 70, 73, 78, 89, 92, 101, 104, 105, 192], "again": [67, 78], "metaclass": [67, 78, 116, 207], "metablock": [67, 116], "term": [67, 90, 231], "__states__": [67, 78, 116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184, 207], "state": [67, 71, 78, 90, 101, 116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184, 207, 229, 231], "method": [67, 69, 116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184, 192, 207, 231], "_previousblock": [67, 116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184], "nextblock": [67, 116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184], "starttoken": [67, 116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184, 229], "scope": [67, 78, 116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184, 207, 208, 209, 210, 211, 212, 213, 215, 216, 217], "multipart": [67, 73, 78, 116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184, 207, 208, 209, 210, 211, 212, 213, 215, 216, 217], "bool": [67, 78, 116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184, 192, 207, 208, 209, 210, 211, 212, 213, 215, 216, 217, 229, 230], "true": [67, 78, 116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184, 192, 207, 208, 209, 210, 211, 212, 213, 215, 216, 217, 229, 230, 231], "multipl": [67, 73, 78, 84, 92, 99, 104, 116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184, 207, 208, 209, 210, 211, 212, 213, 215, 216, 217], "part": [67, 69, 71, 73, 78, 90, 104, 116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184, 207, 208, 209, 210, 211, 212, 213, 215, 216, 217, 231], "__init__": [67, 69, 72, 78, 84, 103, 116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184, 192, 194, 196, 197, 198, 199, 200, 207, 208, 209, 210, 211, 212, 213, 215, 216, 217, 219, 226, 227, 229, 230, 231, 233, 234], "self": [67, 69, 72, 78, 84, 103, 116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184, 196, 197, 198, 199, 200, 207, 208, 209, 210, 211, 212, 213, 215, 216, 217, 219, 226, 227, 229, 230, 231, 234], "previousblock": [67, 116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184], "fals": [67, 78, 116, 118, 119, 121, 122, 123, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184, 229, 231], "__len__": [67, 78, 103, 116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184, 229], "__iter__": [67, 69, 78, 116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184], "__repr__": [67, 78, 116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184, 196, 198, 199, 200, 207, 208, 209, 210, 211, 212, 213, 215, 216, 217, 219, 226, 227, 229, 230, 231, 234], "__str__": [67, 78, 116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184, 196, 197, 198, 199, 200, 207, 208, 209, 210, 211, 212, 213, 215, 216, 217, 219, 226, 227, 229, 230, 231, 234], "properti": [67, 72, 78, 84, 103, 116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184, 192, 194, 196, 197, 198, 199, 200, 219], "stateerror": [67, 116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184], "write": [68, 80, 81, 82, 83, 85, 86, 87, 88, 90, 105, 192], "chang": [68, 71, 90], "log": 68, "gain": [69, 92], "knowledg": [69, 92, 99, 104], "deepen": [69, 92], "more": [69, 71, 90, 92, 105], "over": [69, 92], "pre": [69, 91], "tool": [69, 99, 104], "direct": [69, 71, 90, 99, 101, 231, 234], "decrypt": [69, 91], "condit": [69, 90, 91, 192], "analysi": [69, 91, 105], "sinc": [69, 91], "2019": [69, 73, 91, 92], "slice": [69, 92, 103, 105], "text": [69, 71, 90, 104, 105], "word": [69, 99, 230], "preserv": [69, 92, 103, 105], "whitespac": [69, 92, 99, 103, 105], "space": [69, 99, 101, 103, 229, 231], "tab": [69, 99, 103, 229], "linebreak": [69, 99, 101, 103, 229, 231], "comment": [69, 90, 92, 93, 99, 103, 104, 105, 116, 205, 207, 229, 230], "singl": [69, 92, 99, 104, 105, 116, 207, 229, 230], "multi": [69, 99, 105, 229, 230], "line": [69, 96, 99, 103, 192, 229, 230], "assembl": [69, 92, 105], "snippet": [69, 207], "faster": 69, "navig": [69, 92], "exchang": 69, "simpl": [69, 230], "identifi": [69, 90, 97, 99, 104, 196, 197, 198, 199, 200, 219, 229, 230], "consum": [69, 84], "extract": [69, 71, 93, 105], "inform": [69, 71, 90, 92, 104], "scan": [69, 97, 105, 116, 124, 126, 128, 129, 133, 136, 137, 138, 139, 141, 143, 144, 145, 146, 149, 150, 151, 152, 153, 154, 162, 163, 164, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179], "build": [69, 70], "model": [69, 72, 84, 92, 93, 105, 194, 196, 197, 198, 199, 200, 219], "combin": [69, 90, 92, 104], "form": [69, 71, 90], "depend": [69, 105, 196, 197, 198, 199, 200, 219], "analyz": [69, 196, 197, 198, 199, 200, 219], "order": [69, 104, 105, 116, 207, 231], "hierarchi": [69, 104, 196, 197, 198, 199, 200, 219], "instanc": [69, 71, 104, 116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184, 192, 207], "checker": [69, 105], "check": [69, 92, 95, 116, 192, 207], "symbol": 69, "style": [69, 92, 104, 105], "statist": [69, 104], "sloc": 69, "v": [69, 93, 95], "intern": [69, 116, 229, 230], "field": [69, 84, 90, 116, 229], "getter": 69, "setter": 69, "pointer": [69, 93], "other": [69, 90, 105, 116, 207, 229, 230], "accompani": 69, "its": [69, 71, 90, 104], "modif": [69, 71, 90, 104, 105, 116, 207], "implicitli": 69, "execut": [69, 90, 93, 96, 105], "initi": [69, 116, 192, 194, 196, 197, 198, 199, 200, 207, 219, 227, 229, 230], "help": 69, "make": [69, 71, 90, 116, 207], "heavi": 69, "allow": [69, 71, 104, 116, 207], "modifi": [69, 71, 90], "behavior": 69, "via": [69, 70, 97, 105], "abstract": [69, 116, 207], "which": [69, 71, 90, 104, 105], "later": 69, "instead": [69, 116, 207], "oop": 69, "some": [69, 84, 104, 105], "addit": [69, 70, 71, 104, 229], "behaviour": 69, "easier": [69, 90], "promin": [69, 90], "give": [69, 71, 90], "hint": [69, 105], "id": 69, "what": 69, "fast": [69, 92, 105, 116, 124, 126, 128, 129, 133, 136, 137, 138, 139, 141, 143, 144, 145, 146, 149, 150, 151, 152, 153, 154, 162, 163, 164, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179], "endpoint": 69, "ordereddict": 69, "mani": [69, 230], "easili": 69, "reemit": 69, "wai": [69, 71], "1": [69, 70, 99, 101, 116, 192, 229, 231], "__next__": 69, "usual": [69, 230], "comput": [69, 90], "obj": 69, "valu": [69, 97, 104, 116, 207, 226, 229, 230, 231, 234], "int": [69, 103, 116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184, 192, 229, 231], "x": [69, 99], "keyerror": 69, "mydata": 69, "co": [69, 101], "routin": [69, 101], "calle": 69, "most": [69, 71, 231], "caller": 69, "local": [69, 71, 90, 97, 192], "continu": 69, "right": [69, 90, 116, 207, 234], "after": [69, 230], "yield": [69, 101], "also": [69, 71, 90, 97, 103, 104, 231], "possibl": [69, 71, 90, 91, 92, 104], "send": 69, "heavili": 69, "core": 69, "why": 69, "corrupt": 69, "work": [69, 71, 90], "clearli": [69, 71], "name": [69, 90, 116, 196, 197, 198, 199, 200, 207, 219, 227, 231, 233, 234], "semant": 69, "own": [69, 90], "arrang": [69, 71], "logic": [69, 230], "common": [69, 90, 116, 194, 207], "child": [69, 84], "shall": [69, 71, 90], "parent": [69, 194, 196, 197, 198, 199, 200, 219], "associ": [69, 90, 194, 196, 197, 198, 199, 200, 219], "particular": [69, 71, 90], "tree": 69, "debug": [69, 93, 192], "codedom": [69, 96, 185, 192], "api": [69, 92, 104, 105], "resolv": 69, "idea": [69, 104], "project": [69, 71, 104], "roslyn": 69, "seri": 69, "codeproject": 69, "articl": [69, 71], "written": [69, 71, 90], "ken": 69, "beckett": 69, "2012": 69, "futur": 69, "softwar": [69, 90], "develop": [69, 70], "2": [69, 70, 101, 105, 116, 192, 229, 231], "displai": [69, 71, 90, 93, 95], "wpf": 69, "3": [69, 70, 101, 103, 105, 231], "pars": [69, 72, 92, 93, 99, 104, 230], "break": [69, 97], "With": [69, 92], "tradit": 69, "4": [69, 70, 101, 105, 231], "5": [69, 70, 101, 105, 231], "assembli": 69, "metadata": 69, "reflect": 69, "mono": 69, "cecil": 69, "6": [69, 70, 101, 105, 231], "7": [69, 70, 101, 105, 231], "calcul": [69, 104], "metric": 69, "search": [69, 93, 96, 97], "8": [69, 70, 101, 103, 105, 231], "footnot": 69, "actual": 69, "foreach": 69, "librari": [70, 72, 84, 105, 116, 161, 196, 197, 198, 199, 200, 219], "io": 70, "vulner": 70, "summari": 70, "instal": [70, 105], "requir": [70, 71, 84, 90, 99, 105, 192], "txt": 70, "pip3": [70, 79], "directli": [70, 71, 84], "pypi": 70, "updat": 70, "u": [70, 79], "version": [70, 90, 192], "licens": [70, 104], "No": [70, 71], "yaml": 70, "ruamel": 70, "17": 70, "mit": 70, "evalu": 70, "collect": [70, 71, 73, 105, 234], "static": [70, 92, 116, 192, 207], "sub": [70, 192], "further": [70, 116, 207], "recurs": 70, "too": 70, "pytest": 70, "cov": 70, "benchmark": 70, "bsd": 70, "claus": [70, 196, 197, 198, 199, 200, 219], "apach": [70, 105], "mypi": 70, "lxml": 70, "9": [70, 71, 101, 231], "doc": 70, "11": [70, 71, 101, 231], "sphinxcontrib": [70, 104], "mermaid": 70, "autoapi": [70, 79], "sphinx_btd_them": 70, "sphinx_fontawesom": [70, 79], "gpl": 70, "sphinx_autodoc_typehint": [70, 79], "19": 70, "wheel": 70, "38": 70, "ani": [70, 71, 90, 91, 101, 104, 116, 207, 230, 231], "equival": [70, 71, 229], "servic": [70, 71, 90], "maintain": [70, 105], "dist": 70, "twine": 70, "appli": [71, 90], "copi": [71, 90, 230], "cc": 71, "BY": 71, "corpor": 71, "law": [71, 90], "firm": 71, "doe": [71, 90, 104], "provid": [71, 90, 105, 192], "legal": [71, 90], "advic": 71, "distribut": [71, 90], "lawyer": 71, "client": 71, "relationship": 71, "relat": [71, 230], "basi": [71, 90], "regard": [71, 90], "materi": 71, "under": [71, 90, 105], "damag": [71, 90], "result": [71, 90, 92, 95, 104], "fullest": 71, "extent": 71, "standard": [71, 73], "creator": 71, "holder": 71, "mai": [71, 84, 90], "origin": [71, 90, 105, 230, 231], "authorship": [71, 90], "subject": [71, 90], "copyright": 71, "certain": 71, "specifi": [71, 100], "below": [71, 90], "consider": 71, "purpos": [71, 90], "onli": [71, 90, 95, 99, 116, 196, 197, 198, 199, 200, 207, 219], "exhaust": 71, "do": [71, 90], "our": 71, "licensor": [71, 90], "intend": 71, "those": [71, 90], "author": [71, 90], "permiss": [71, 90], "restrict": 71, "irrevoc": [71, 90], "should": [71, 90], "understand": [71, 93, 104], "thei": [71, 116, 207], "choos": [71, 90], "befor": [71, 97, 101, 231], "secur": 71, "necessari": [71, 104, 231], "reus": 71, "mark": [71, 90], "includ": [71, 90, 104], "By": [71, 104], "grant": 71, "reason": [71, 90], "becaus": [71, 84, 97, 104, 105], "applic": [71, 90, 192], "regul": 71, "still": [71, 104], "special": [71, 90, 116, 207], "request": [71, 231], "ask": 71, "although": 71, "you": [71, 90], "encourag": 71, "respect": 71, "where": [71, 90], "exercis": [71, 90], "accept": [71, 91], "agre": [71, 90], "bound": [71, 192], "contract": [71, 90], "your": [71, 90], "benefit": 71, "receiv": [71, 90], "adapt": 71, "upon": 71, "translat": [71, 90, 105], "alter": 71, "manner": 71, "held": 71, "music": 71, "perform": [71, 90], "sound": 71, "record": [71, 89], "alwai": [71, 229], "produc": [71, 231], "synch": 71, "move": 71, "imag": [71, 95, 231], "contribut": 71, "accord": [71, 91, 104], "without": [71, 90], "broadcast": 71, "label": [71, 230], "categor": [71, 105], "b": [71, 93], "effect": [71, 105], "technolog": 71, "measur": 71, "absenc": 71, "proper": 71, "circumv": 71, "fulfil": [71, 192], "oblig": [71, 90], "wipo": 71, "treati": 71, "adopt": 71, "decemb": 71, "20": 71, "1996": 71, "agreement": [71, 90], "fair": 71, "deal": 71, "artist": 71, "literari": 71, "reproduct": [71, 90], "dissemin": 71, "commun": [71, 90], "member": [71, 116, 207, 231, 234], "place": [71, 90], "chosen": 71, "them": [71, 116, 207], "than": 71, "96": 71, "ec": 71, "european": 71, "parliament": 71, "council": 71, "march": 71, "protect": [71, 89], "amend": 71, "succeed": 71, "well": 71, "essenti": 71, "anywher": 71, "world": 71, "herebi": [71, 90], "worldwid": [71, 90], "royalti": [71, 90], "free": [71, 90], "non": [71, 90, 104, 194, 207], "sublicens": [71, 90], "exclus": [71, 90], "reproduc": [71, 90], "avoid": 71, "doubt": 71, "compli": [71, 90], "media": [71, 90], "technic": 71, "whether": [71, 90, 231], "known": [71, 231], "hereaft": 71, "waiv": 71, "forbid": 71, "simpli": 71, "never": 71, "downstream": 71, "recipi": [71, 90], "offer": [71, 90, 92, 104, 192], "everi": 71, "automat": 71, "impos": 71, "endors": 71, "noth": [71, 90], "constitut": [71, 90], "constru": [71, 90], "impli": [71, 90], "connect": 71, "sponsor": 71, "offici": 71, "statu": 71, "design": [71, 89, 90, 104, 194, 196, 197, 198, 199, 200, 219], "moral": 71, "integr": [71, 231], "privaci": 71, "person": 71, "howev": [71, 90], "patent": 71, "trademark": 71, "through": [71, 90], "societi": 71, "voluntari": 71, "waivabl": 71, "statutori": 71, "compulsori": 71, "scheme": 71, "expressli": 71, "reserv": [71, 230], "made": [71, 84, 90], "retain": [71, 90], "suppli": 71, "identif": [71, 90], "pseudonym": 71, "notic": [71, 90], "uri": 71, "hyperlink": 71, "practic": 71, "indic": [71, 90, 231], "satisfi": 71, "medium": [71, 90], "resourc": 71, "remov": [71, 105], "prevent": 71, "substanti": 71, "portion": 71, "supplement": 71, "unless": [71, 90], "separ": [71, 90], "undertaken": 71, "represent": [71, 231], "concern": 71, "express": [71, 90, 105, 116, 126, 127, 128, 129, 130, 132, 149, 152, 156, 159, 160, 218], "titl": [71, 90], "merchant": [71, 90], "fit": [71, 90], "infring": [71, 90], "latent": 71, "defect": 71, "accuraci": 71, "presenc": 71, "discover": 71, "event": [71, 90, 226], "liabl": [71, 90], "theori": [71, 90], "neglig": [71, 90], "indirect": [71, 90], "incident": [71, 90], "consequenti": [71, 90], "punit": 71, "exemplari": 71, "loss": [71, 90], "cost": 71, "expens": 71, "aris": [71, 90], "out": [71, 84, 90, 93, 103], "even": [71, 90, 104, 192], "been": [71, 90, 103, 192], "advis": [71, 90], "abov": [71, 90], "approxim": 71, "absolut": [71, 103, 230, 231], "waiver": 71, "here": 71, "fail": 71, "reinstat": 71, "date": [71, 90], "violat": 71, "cure": 71, "within": [71, 90, 103], "30": 71, "dai": 71, "discoveri": 71, "affect": 71, "seek": 71, "remedi": 71, "stop": 71, "surviv": 71, "herein": [71, 90], "independ": 71, "reduc": [71, 93], "could": [71, 91, 101, 104, 231], "lawfulli": 71, "provis": 71, "deem": 71, "unenforc": 71, "reform": 71, "minimum": [71, 93, 192], "enforc": 71, "cannot": [71, 90], "sever": [71, 104, 192], "remain": [71, 90], "failur": [71, 90], "consent": 71, "privileg": 71, "immun": 71, "jurisdict": 71, "parti": [71, 90], "notwithstand": [71, 90], "elect": 71, "publish": 71, "consid": [71, 104], "permit": 71, "polici": 71, "creativecommon": 71, "org": [71, 73, 90], "logo": 71, "prior": 71, "unauthor": 71, "paragraph": 71, "contact": 71, "documentmodel": [72, 106], "statepars": 72, "startofdocumentgroup": [72, 207], "addlibrari": 72, "addus": 72, "addent": 72, "addarchitectur": 72, "addpackag": 72, "addpackagebodi": 72, "packagebodi": [72, 84, 116, 168, 194, 195, 219, 233], "indent": [72, 99, 192, 229], "meta": [73, 116, 207, 229], "xxx": 73, "split": 73, "lrm": [73, 84], "ieee": [73, 89, 91], "std": [73, 89, 91, 232], "1076": [73, 89], "1987": [73, 92], "1993": [73, 92], "2002": [73, 92], "2008": [73, 92, 105], "http": [73, 90], "html": 73, "add": [74, 90, 95, 104], "startofsnippetgroup": [76, 207], "startofgroup": [76, 207], "endofsnippetgroup": [76, 207], "endofgroup": [76, 207], "third": [78, 90], "metagroup": [78, 207, 208, 209, 210, 211, 212, 213, 215, 216, 217], "_previousgroup": [78, 207, 208, 209, 210, 211, 212, 213, 215, 216, 217], "nextgroup": [78, 207, 208, 209, 210, 211, 212, 213, 215, 216, 217], "innergroup": [78, 207, 208, 209, 210, 211, 212, 213, 215, 216, 217], "inner": [78, 207, 208, 209, 210, 211, 212, 213, 215, 216, 217], "_subgroup": [78, 207, 208, 209, 210, 211, 212, 213, 215, 216, 217], "startblock": [78, 116, 163, 164, 207, 208, 209, 210, 211, 212, 213, 215, 216, 217], "previousgroup": [78, 207, 208, 209, 210, 211, 212, 213, 215, 216, 217], "getsubgroup": 78, "grouptyp": 78, "colorama": [79, 192], "flag": 79, "pydecor": 79, "pyexcept": 79, "pyattribut": [79, 192], "pycallbi": 79, "pyterminalui": 79, "pyvhdlmodel": [79, 89, 105, 194, 196, 197, 198, 199, 200, 219], "rtd": 79, "theme": 79, "ext": 79, "btd": 79, "autoprogram": 79, "graphviz": 79, "inheritance_diagram": 79, "pygment": 79, "genericinterfaceitem": [83, 219], "portinterfaceitem": [83, 219], "parameterinterfaceitem": 83, "featur": [84, 104], "holist": 84, "explicitli": [84, 90], "root": 84, "mode": [84, 89, 93, 95, 192, 194, 230], "compil": [84, 90, 104, 105], "node": 84, "modelent": [84, 194, 196, 197, 198, 199, 200, 219], "_librari": [84, 196, 197, 198, 199, 200, 219], "_document": [84, 194, 196, 197, 198, 199, 200, 219], "load": 84, "contain": [84, 90, 116, 194, 207, 229], "unit": [84, 89, 194, 196, 197, 198, 199, 200, 219], "primari": [84, 89, 194, 197, 198, 199, 219], "_context": [84, 194], "_configur": [84, 194], "_entiti": [84, 194], "_packag": [84, 194], "secondari": [84, 89, 194, 196, 200, 219], "preced": 84, "visibl": 84, "investig": 84, "_architectur": [84, 194], "_packagebodi": [84, 194], "standalon": 89, "github": [89, 105], "com": 89, "concept": [89, 105], "sourcecod": [89, 105], "enumer": [89, 101, 231], "architetur": 89, "interfac": [89, 90, 96, 105, 192], "item": [89, 95, 196, 197, 198, 199, 200, 219, 230], "genericconstantinterfaceitem": 89, "generictypeinterfaceitem": 89, "genericsubprograminterfaceitem": 89, "genericpackageinterfaceitem": 89, "portsignalinterfaceitem": 89, "parameterconstantinterfaceitem": 89, "parametervariableinterfaceitem": 89, "parametersignalinterfaceitem": 89, "parameterfileinterfaceitem": 89, "subprogram": [89, 233], "scalar": 89, "integ": [89, 99, 104, 229, 231], "real": [89, 99, 229, 231], "physic": 89, "composit": 89, "arrai": [89, 207, 230, 231, 234], "declart": 89, "concurr": [89, 140, 175, 176, 179, 196, 198, 207, 219], "januari": 90, "2004": 90, "AND": 90, "FOR": 90, "section": 90, "owner": 90, "union": [90, 192, 194, 196, 197, 198, 199, 200, 219], "act": 90, "power": [90, 230], "manag": 90, "ii": 90, "ownership": 90, "fifti": 90, "percent": 90, "50": 90, "outstand": 90, "iii": 90, "benefici": 90, "prefer": 90, "mechan": 90, "convers": 90, "attach": [90, 192], "appendix": 90, "editori": 90, "revis": [90, 92], "annot": 90, "elabor": 90, "mere": 90, "bind": 90, "thereof": 90, "intention": 90, "submit": 90, "inclus": 90, "behalf": 90, "electron": 90, "verbal": 90, "sent": 90, "mail": 90, "system": [90, 104, 192, 231], "issu": [90, 105], "track": 90, "discuss": 90, "improv": 90, "exclud": 90, "conspicu": 90, "contributor": 90, "whom": 90, "subsequ": 90, "incorpor": 90, "perpetu": 90, "charg": 90, "prepar": 90, "publicli": 90, "sell": 90, "transfer": 90, "claim": 90, "necessarili": 90, "alon": 90, "wa": [90, 97, 101, 105, 116, 196, 197, 198, 199, 200, 207, 219, 231], "institut": 90, "litig": 90, "against": 90, "cross": [90, 92], "counterclaim": 90, "lawsuit": 90, "alleg": 90, "contributori": 90, "termin": [90, 192], "meet": 90, "carri": 90, "pertain": 90, "readabl": 90, "least": 90, "along": 90, "wherev": 90, "normal": [90, 116, 192, 196, 197, 198, 199, 200, 219, 229], "appear": 90, "alongsid": 90, "addendum": 90, "supersed": 90, "trade": 90, "product": 90, "customari": 90, "AS": 90, "OR": 90, "OF": 90, "sole": 90, "respons": 90, "determin": [90, 231], "appropri": 90, "assum": 90, "risk": 90, "tort": 90, "deliber": 90, "grossli": 90, "inabl": 90, "goodwil": 90, "stoppag": 90, "malfunct": 90, "commerci": 90, "fee": 90, "indemn": 90, "consist": 90, "indemnifi": 90, "defend": 90, "hold": [90, 231], "harmless": 90, "incur": 90, "boilerpl": 90, "enclos": 90, "don": 90, "t": [90, 91, 93, 99, 116, 207], "syntax": [90, 105], "we": 90, "recommend": 90, "descript": 90, "same": 90, "page": [90, 93], "archiv": 90, "yyyi": 90, "complianc": 90, "obtain": 90, "www": 90, "govern": 90, "current": [91, 105, 116, 192, 207], "doesn": 91, "step": 91, "filenam": [91, 93, 95], "envis": 91, "1735": 91, "2014": 91, "main": [92, 93, 96, 97, 192], "soon": 92, "dom": [92, 93, 104, 105], "deep": [92, 99], "inspect": 92, "capabl": [92, 93], "orient": [92, 104], "data": [92, 105, 230], "bidirect": 92, "iter": [92, 97, 116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184, 192, 207, 219, 231], "creation": [92, 103, 116, 207], "sourcecodeposit": [92, 103, 229, 230, 231], "contrast": [92, 103], "ordinari": [92, 103], "introspect": [92, 104, 105], "rule": [92, 104, 192], "flavor": 92, "simul": [92, 104, 227], "synthesi": 92, "detail": [92, 93, 105], "come": [93, 96], "regist": [93, 96, 116, 207], "pip": [93, 96, 105], "path": [93, 96, 194, 227], "wrapper": [93, 96], "cli": [93, 96, 105, 106], "test": 93, "usag": [93, 95], "d": 93, "q": 93, "equip": [93, 104], "enabl": [93, 95, 192], "verbos": [93, 95, 192], "messag": [93, 116, 192, 194, 207, 231], "quiet": [93, 192], "h": 93, "antlr4": [93, 106], "grammar": 93, "command": [93, 96], "correct": [93, 104], "option": [95, 192, 194, 196, 197, 198, 199, 200, 219], "color": [95, 104, 192], "per": 95, "nest": 95, "vhdlparser": [96, 107, 110, 185], "wordtoken": [97, 99, 229, 230], "startofdocumenttoken": [97, 102, 229], "endofdocumenttoken": [97, 102, 229], "tokenlist": 97, "isinst": 97, "tok": 97, "nexttoken": [97, 105, 229, 230], "rare": 97, "startofsnippettoken": [98, 229], "startoftoken": [98, 229], "endofsnippettoken": [98, 229], "endoftoken": [98, 229], "detect": [99, 104], "number": [99, 104, 231], "distinct": 99, "up": 99, "fusedcharactertoken": [99, 229], "spacetoken": [99, 229, 230], "todo": 99, "singlelinecommenttoken": [99, 229], "multilinecommenttoken": [99, 229], "liter": [99, 104, 229], "42": 99, "integerliteraltoken": [99, 229], "25": 99, "realliteraltoken": [99, 229], "z": 99, "characterliteraltoken": [99, 229], "hello": 99, "stringliteraltoken": [99, 229], "bit": [99, 103, 229, 231], "bitstringliteraltoken": [99, 229], "extend": [99, 104, 229], "cell35": 99, "extendedidentifiertoken": [99, 230], "directivetoken": [99, 229], "n": [99, 101, 231], "linebreaktoken": [99, 229, 230], "indentationtoken": [99, 229], "explain": 100, "15": [101, 231], "tokenkind": [101, 231], "transit": 101, "enum": [101, 234], "spacechar": [101, 231], "char": [101, 231], "numberchar": 101, "digit": [101, 231], "alphachar": [101, 231], "letter": [101, 231], "delimiterchar": [101, 231], "delimit": [101, 230, 231], "possiblesinglelinecommentstart": [101, 231], "dash": [101, 231], "possiblelinebreak": [101, 231], "possiblecharacterliter": [101, 231], "possiblestringliteralstart": [101, 231], "possibleextendedidentifierstart": [101, 231], "singlelinecom": [101, 231], "multilinecom": [101, 231], "10": [101, 231], "12": [101, 105, 231], "fuseablecharact": [101, 231], "13": [101, 231], "fuse": [101, 231], "otherchar": [101, 231], "14": [101, 231], "thing": 101, "els": [101, 231], "lasttoken": 102, "tokeniter": [102, 116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184, 229], "firsttoken": 102, "posit": [103, 229, 230, 231], "row": 103, "column": 103, "regardless": [103, 104], "_previoustoken": [103, 229, 230], "_nexttoken": 103, "previoustoken": [103, 229, 230], "myentiti": 103, "byte": [103, 231], "clock": 103, "std_logic": 103, "isclock": 103, "reset": 103, "puls": 103, "shown": 103, "lime": 103, "green": [103, 192], "pleas": 103, "note": 103, "simplifi": 103, "excerpt": 104, "program": 104, "complex": [104, 231], "immut": 104, "find": 104, "bring": 104, "Such": 104, "scratch": 104, "focus": 104, "overal": 104, "scenario": 104, "visual": 104, "As": 104, "alreadi": [104, 116, 207], "about": 104, "etc": 104, "straight": 104, "referenc": [104, 196, 197, 198, 199, 200, 219], "might": [104, 116, 207], "beauti": 104, "veri": 104, "strict": 104, "depth": 104, "therefor": 104, "exce": 104, "univers": 104, "catch": [104, 116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184], "mistak": 104, "correl": 104, "variou": 104, "json": 104, "xml": 104, "restructur": 104, "domain": [104, 105], "sphinx": [104, 105], "vhdldomain": 104, "framework": 104, "osvvm": 104, "branch": [104, 105], "header": 104, "match": 104, "pattern": 104, "public": [104, 231], "manipul": 104, "reformat": 104, "itself": [104, 231], "memori": [104, 116, 207, 231], "persist": 104, "And": 104, "upcom": 104, "latest": 105, "pathlib": 105, "index": [105, 231], "recov": 105, "good": 105, "throw": 105, "delai": 105, "tripl": [105, 229], "helix": 105, "chapter": 105, "scanner": 105, "graph": [105, 196, 197, 198, 199, 200, 219], "highlight": 105, "autodoc": 105, "plugin": 105, "extens": 105, "ci": 105, "environ": 105, "beyond": 105, "bump": 105, "entrypoint": 105, "binari": [105, 230, 231], "ad": 105, "infrastructur": 105, "run": [105, 192], "testcas": 105, "action": 105, "workflow": 105, "pipelin": 105, "dependabot": 105, "v4": 105, "patch": 105, "rarr": 105, "coverag": 105, "frontend": 105, "py": 105, "fix": 105, "problem": 105, "let": 105, "patrick": 105, "lehmann": 105, "jan": 105, "2024": 105, "01": 105, "04": 105, "modul": [106, 115, 193], "filter": [106, 192], "languagemodel": 106, "netlistmodel": 106, "simulationmodel": 106, "stylecheck": 106, "typesystem": 106, "submodul": [107, 110, 116, 117, 120, 125, 136, 142, 148, 155, 161, 165, 168, 174, 180, 185, 194, 195, 203, 205, 207, 214, 218, 223, 225, 229, 232], "vhdllexer": [107, 110], "vhdlparservisitor": 110, "visitor": 110, "controlstructur": 116, "interfaceobject": [116, 149, 151, 152], "blockparserexcept": 116, "undocu": [116, 192, 207, 208, 209, 210, 211, 212, 213, 215, 216, 217, 224, 226, 227, 229, 231, 233, 234], "blockreverseiter": 116, "skipableblock": [116, 123, 124, 144, 145, 146, 149, 150, 151, 152, 153, 154, 163, 164], "skip": [116, 124, 144, 145, 146, 149, 150, 151, 152, 153, 154, 163, 164], "finalblock": [116, 126, 128, 129, 133, 136, 137, 138, 139, 141, 143, 144, 145, 146, 162, 163, 164, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179], "commentblock": [116, 123], "sequenc": [116, 196, 197, 198, 199, 200, 219, 230], "exceptionbas": [116, 194, 207, 231], "__new__": [116, 192, 194, 207, 231], "kwarg": [116, 192, 194, 207, 231], "tokengener": 116, "__eq__": [116, 207, 229, 230, 231], "oper": [116, 192, 230], "__ne__": [116, 207, 229, 230, 231], "__call__": [116, 207], "__hash__": [116, 207, 229, 230, 231], "done": [116, 229], "variant": 116, "pytool": [116, 192, 207], "extendedtyp": [116, 207], "whitespaceblock": [116, 124], "linebreakblock": [116, 124], "emptylineblock": [116, 124], "indentationblock": [116, 124], "singlelinecommentblock": [116, 123], "multilinecommentblock": [116, 123], "signalassign": [116, 117], "signalassignmentblock": [116, 118, 119], "variableassign": [116, 117], "attributedeclar": [116, 120], "attributedeclarationblock": [116, 121], "attributespecif": [116, 120], "attributespecificationblock": [116, 122], "closeblock": [116, 141, 149, 150, 151, 152, 153, 154], "expressionblock": [116, 126, 127, 128, 129, 130, 132, 135, 149, 152, 156, 159, 160], "expressionblockendedbytoordownto": [116, 135], "arrowblock": [116, 126], "whenexpressionblock": [116, 126], "whenblock": [116, 126], "isblock": [116, 126], "caseexpressionblock": [116, 126], "caseblock": [116, 126, 137], "exitconditionblock": [116, 127], "exitblock": [116, 127], "forloop": [116, 125], "iteratorblock": [116, 128], "loopblock": [116, 128], "expressionblockendedbylooportoordownto": [116, 128], "expressionblockendedbyloop": [116, 128], "loopiterationdirectionblock": [116, 128], "thenblock": [116, 129], "elseblock": [116, 129], "expressionblockendedbythen": [116, 129], "ifconditionblock": [116, 129, 139], "elsifconditionblock": [116, 129, 139], "nextconditionblock": [116, 130], "nullblock": [116, 131], "returnexpressionblock": [116, 132], "returnblock": [116, 132], "resolutionind": [116, 180], "simpleresolutionindicationblock": [116, 181], "arrayresolutionindicationblock": [116, 181], "recordresolutionindicationblock": [116, 181], "interfaceobjectblock": [116, 147, 149, 151, 152], "interfaceconstantblock": [116, 147, 149, 151], "interfacevariableblock": [116, 147, 151], "interfacesignalblock": [116, 147, 151, 152], "interfacetypeblock": [116, 147, 149], "genericlist": [116, 148], "delimiterblock": [116, 149, 150, 151, 152, 153, 154, 163, 164], "defaultvalueexpressionblock": [116, 149, 152], "genericlistinterfaceconstantblock": [116, 149], "genericlistinterfacetypeblock": [116, 149], "portlist": [116, 148], "portlistinterfacesignalblock": [116, 152], "whileloop": [116, 125], "conditionblock": [116, 133], "endgenerateblock": [116, 136, 137, 138, 139], "casegener": [116, 136], "assertblock": [116, 166], "sensitivitylist": [116, 148, 227], "itemblock": [116, 150, 151, 153, 154], "forgener": [116, 136], "rangeblock": [116, 138], "ifgener": [116, 136], "elsifbeginblock": [116, 139], "elsegenerateblock": [116, 139], "elsegeneratebeginblock": [116, 139], "entityinstanti": [116, 142], "entityinstantiationblock": [116, 143, 144, 145, 146], "functioninstanti": [116, 142], "genericmapbeginblock": [116, 144, 145, 146], "genericmapitemblock": [116, 144, 145, 146], "genericmapdelimiterblock": [116, 144, 145, 146], "genericmapendblock": [116, 144, 145, 146], "portmapbeginblock": [116, 144, 145, 146], "portmapitemblock": [116, 144, 145, 146], "portmapdelimiterblock": [116, 144, 145, 146], "portmapendblock": [116, 144, 145, 146], "packageinstanti": [116, 142], "procedureinstanti": [116, 142], "genericmaplist": [116, 148], "parameterlist": [116, 148], "parameterlistinterfaceconstantblock": [116, 151], "parameterlistinterfacevariableblock": [116, 151], "parameterlistinterfacesignalblock": [116, 151], "portmaplist": [116, 148], "sharedvari": [116, 155], "librarynameblock": [116, 163], "referencenameblock": [116, 164], "reportblock": [116, 167], "subtypeblock": [116, 182], "subtypeind": [116, 180], "subtypeindicationblock": [116, 183], "arrayconstrainedsubtypeindicationblock": [116, 183], "recordconstrainedsubtypeindicationblock": [116, 183], "typeblock": [116, 184], "classnam": [116, 207], "baseclass": [116, 207], "classmemb": [116, 207], "tupl": [116, 192, 207], "dictionari": [116, 194, 207], "singleton": [116, 207], "useslot": [116, 207], "__slots__": [116, 207], "__dict__": [116, 207], "dict": [116, 194, 196, 197, 198, 199, 200, 207, 208, 209, 210, 211, 212, 213, 215, 216, 217, 219], "attributeerror": [116, 207], "slot": [116, 207], "exist": [116, 207], "__base__": [116, 207], "alia": [116, 126, 127, 128, 129, 130, 132, 133, 136, 137, 138, 139, 149, 151, 152, 156, 158, 159, 160, 162, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 207, 230], "arg": [116, 207, 231], "__delattr__": [116, 207], "delattr": [116, 207], "__dir__": [116, 207, 231], "__getattribute__": [116, 207, 231], "getattr": [116, 207, 231], "__instancecheck__": [116, 207], "__or__": [116, 207, 231], "__prepare__": [116, 207], "namespac": [116, 207], "repr": [116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184, 196, 198, 199, 200, 207, 208, 209, 210, 211, 212, 213, 215, 216, 217, 219, 226, 227, 229, 230, 231, 234], "__ror__": [116, 207, 231], "__setattr__": [116, 207], "setattr": [116, 207], "__sizeof__": [116, 207, 231], "consumpt": [116, 207], "__subclasscheck__": [116, 207], "subclass": [116, 207], "__subclasses__": [116, 207], "immedi": [116, 207], "__text_signature__": [116, 207], "_checkforabstractmethod": [116, 207], "overridden": [116, 207], "callabl": [116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184, 192, 207], "_wrapnewmethodifabstract": [116, 207], "newclass": [116, 207], "_new__": [116, 207], "newli": [116, 207], "abstractclasserror": [116, 207], "_wrapnewmethodifsingleton": [116, 207], "wrap": [116, 207], "cach": [116, 207], "threadsaf": [116, 207], "mro": [116, 207], "resolut": [116, 207], "inclusivestartblock": 116, "inclusivestopblock": 116, "stopblock": 116, "_state": 116, "reach": [116, 229], "constructor": [116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184], "predefin": [116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184], "situat": [116, 118, 119, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184], "startofsnippet": [116, 207, 229], "endofsnippet": [116, 207, 229], "casekeyword": [126, 230], "end_block": [126, 127, 128, 129, 130, 132, 156, 158, 159, 160, 169, 170, 171, 172, 173, 175, 176, 178, 179], "exit_keyword": [126, 128, 129], "iskeyword": [126, 230], "forkeyword": [128, 230], "loopkeyword": [128, 133, 230], "ifkeyword": [129, 230], "thenkeyword": [129, 230], "generatekeyword": [136, 137, 138, 139, 230], "region": [140, 169, 170, 171, 172, 173, 175, 176, 179, 230], "delimiter_block": [149, 151, 152], "expression_block": [156, 159, 160], "contextkeyword": [162, 230], "functionkeyword": [169, 230], "begin_block": [169, 172, 173, 175, 176, 179], "packagekeyword": [170, 230], "procedurekeyword": [172, 230], "processkeyword": [173, 230], "architecturekeyword": [175, 230], "blockkeyword": [176, 230], "componentkeyword": [177, 230], "configurationkeyword": [178, 230], "entitykeyword": [179, 230], "stateresolutionfunct": 181, "stateopeningparentesi": 181, "antlr": [185, 192], "graphml": 185, "printimporterror": 192, "noreturn": 192, "terminalui": 192, "linetermin": 192, "ilinetermin": 192, "argparseattribut": 192, "argparsemixin": 192, "attributehelpermixin": 192, "tokenstreamhandl": 192, "blockstreamhandl": 192, "groupstreamhandl": 192, "codedomhandl": 192, "antlrhandl": 192, "_width": 192, "width": 192, "_height": 192, "height": 192, "exitonpreviouserror": 192, "exitonpreviouswarn": 192, "warn": 192, "foreground": 192, "blue": 192, "x1b": 192, "94m": 192, "cyan": 192, "96m": 192, "dark_blu": 192, "34m": 192, "dark_cyan": 192, "36m": 192, "dark_grai": 192, "90m": 192, "dark_green": 192, "32m": 192, "dark_r": 192, "31m": 192, "dark_yellow": 192, "33m": 192, "91m": 192, "grai": 192, "37m": 192, "92m": 192, "headlin": 192, "95m": 192, "magenta": 192, "nocolor": 192, "39m": 192, "red": 192, "93m": 192, "white": 192, "97m": 192, "yellow": 192, "getattribut": 192, "typevar": 192, "tattr": 192, "getterminals": 192, "size": [192, 231], "window": 192, "mac": 192, "o": 192, "darwin": 192, "linux": 192, "cygwin": 192, "mingw32": 192, "64": 192, "hasattribut": 192, "loglevel": 192, "minim": 192, "mainpars": 192, "argumentpars": 192, "subpars": 192, "writedebug": 192, "appendlinebreak": 192, "writedryrun": 192, "dry": 192, "writeerror": 192, "writefat": 192, "immediateexit": 192, "fatal": 192, "writeinfo": 192, "info": 192, "writelin": 192, "underli": [192, 229], "consol": 192, "writenorm": 192, "writequiet": 192, "writeverbos": 192, "writewarn": 192, "_log_message_format__": 192, "dryrun": 192, "deinitcolor": 192, "uniniti": 192, "returncod": 192, "fatalexit": 192, "initcolor": 192, "printexcept": 192, "printnotimplementederror": 192, "versioncheck": 192, "interpret": 192, "designunit": [194, 207, 218], "objectdeclar": 194, "domparserexcept": 194, "documentedentitymixin": [194, 196, 197, 198, 199, 200, 219], "_parent": [194, 196, 197, 198, 199, 200, 219], "verificationmod": 194, "verif": 194, "verificationproperti": 194, "verificationunit": 194, "_path": 194, "virtual": 194, "_designunit": 194, "_verificationunit": 194, "psl": 194, "_verificationproperti": 194, "_verificationmod": 194, "nullabl": [194, 196, 197, 198, 199, 200, 219], "secondaryunit": [196, 200, 219], "namedentitymixin": [196, 197, 198, 199, 200, 219], "designunitwithcontextmixin": [196, 198, 199, 200, 219], "concurrentdeclar": [196, 198, 219], "concurrentstat": [196, 198, 219], "architecturenam": 196, "entitynam": [196, 198], "contextitem": [196, 197, 198, 199, 200, 219], "libraryclaus": [196, 197, 198, 199, 200, 219], "useclaus": [196, 197, 198, 199, 200, 219], "contextrefer": [196, 197, 198, 199, 200, 219], "compris": [196, 197, 198, 199, 200, 219], "_contextitem": [196, 197, 198, 199, 200, 219], "_contextrefer": [196, 197, 198, 199, 200, 219], "libraryrefer": [196, 197, 198, 199, 200, 219], "_libraryrefer": [196, 197, 198, 199, 200, 219], "normalizedidentifi": [196, 197, 198, 199, 200, 219], "lower": [196, 197, 198, 199, 200, 219, 229], "packagerefer": [196, 197, 198, 199, 200, 219], "_packagerefer": [196, 197, 198, 199, 200, 219], "contextunion": [196, 197, 198, 199, 200, 219], "_referencedlibrari": [196, 197, 198, 199, 200, 219], "explicit": [196, 197, 198, 199, 200, 219], "implicit": [196, 197, 198, 199, 200, 219], "_referencedpackag": [196, 197, 198, 199, 200, 219], "_referencedcontext": [196, 197, 198, 199, 200, 219], "_dependencyvertex": [196, 197, 198, 199, 200, 219], "vertex": [196, 197, 198, 199, 200, 219], "_hierarchyvertex": [196, 197, 198, 199, 200, 219], "_identifi": [196, 197, 198, 199, 200, 219], "_normalizedidentifi": [196, 197, 198, 199, 200, 219], "primaryunit": [197, 198, 199, 219], "contextnam": 197, "packagenam": 199, "packagebodynam": 200, "groupparserexcept": 207, "blocktogrouppars": 207, "endofdocumentgroup": 207, "blockgener": 207, "equal": [207, 229, 230, 231], "operand": [207, 229, 230], "commentgroup": 208, "whitespacegroup": 208, "assertgroup": 209, "reportgroup": 209, "signalassignmentgroup": [209, 217], "contextgroup": 210, "entitygroup": 210, "architecturegroup": 210, "packagegroup": 210, "packagebodygroup": 210, "componentgroup": 210, "configurationgroup": 210, "genericlistgroup": 211, "genericlistitemgroup": 211, "genericmapgroup": 211, "genericmapitemgroup": 211, "portlistgroup": 211, "portlistitemgroup": 211, "portmapgroup": 211, "portmapitemgroup": 211, "parameterlistgroup": 211, "parameterlistitemgroup": 211, "parametermapgroup": 211, "parametermapitemgroup": 211, "sensitivitylistgroup": 211, "sensitivitylistitemgroup": 211, "constantgroup": 212, "variablegroup": 212, "signalgroup": 212, "librarygroup": 213, "usegroup": 213, "functiongroup": 215, "returntypegroup": 215, "proceduregroup": 216, "processgroup": 217, "ifgroup": 217, "ifbranchgroup": 217, "elsifbranchgroup": 217, "elsebranchgroup": 217, "casegroup": 217, "choicegroup": 217, "forloopgroup": 217, "whileloopgroup": 217, "exitgroup": 217, "returngroup": 217, "variableassignmentgroup": 217, "interfaceitem": 218, "genericitem": 219, "portitem": 219, "declareditem": 219, "entitysymbol": 219, "packagesymbol": 219, "modelbas": 224, "netlist": 224, "wire": 224, "primit": 224, "eventsystem": 225, "schedul": 226, "transact": 226, "timelin": 226, "waveform": 226, "projectedwaveform": 226, "driver": 227, "resolutionfunct": [227, 234], "drivingvalu": 227, "charactertransl": 229, "tokenreverseiter": 229, "valuedtoken": [229, 230], "vhdltoken": [229, 230], "commenttoken": [229, 230], "literaltoken": 229, "extendedidentifi": 229, "onelin": 229, "inclusivestarttoken": 229, "inclusivestoptoken": 229, "stoptoken": 229, "task": 229, "unequ": [229, 230], "hash": [229, 230, 231], "__le__": [229, 231], "__ge__": [229, 231], "upper": 229, "quot": 229, "omit": 229, "specificvhdltoken": 230, "boundarytoken": 230, "boundari": 230, "brackettoken": 230, "roundbrackettoken": 230, "openingroundbrackettoken": 230, "closingroundbrackettoken": 230, "squarebrackettoken": 230, "squar": 230, "openingsquarebrackettoken": 230, "closingsquarebrackettoken": 230, "curlybrackettoken": 230, "curli": 230, "openingcurlybrackettoken": 230, "closingcurlybrackettoken": 230, "anglebrackettoken": 230, "angl": 230, "openinganglebrackettoken": 230, "closinganglebrackettoken": 230, "operatortoken": 230, "plu": 230, "minu": 230, "multipli": 230, "divid": 230, "modulooper": 230, "remainderoper": 230, "concat": 230, "relationaloper": 230, "sign": [230, 231], "identifiertoken": 230, "repeatedidentifiertoken": 230, "repeat": 230, "simplenametoken": 230, "labeltoken": 230, "repeatedlabeltoken": 230, "multicharkeyword": 230, "commentkeyword": 230, "singlelinecommentkeyword": 230, "multilinecommentkeyword": 230, "multilinecommentstartkeyword": 230, "multilinecommentendkeyword": 230, "assignmentkeyword": 230, "variableassignmentkeyword": 230, "signalassignmentkeyword": 230, "associationkeyword": 230, "keywordtoken": 230, "directionkeyword": 230, "logicaloper": 230, "miscellaneousoper": 230, "shiftoper": 230, "absoper": 230, "unari": 230, "accesskeyword": 230, "afterkeyword": 230, "aliaskeyword": 230, "alias": 230, "allkeyword": 230, "andoper": 230, "arraykeyword": 230, "assertkeyword": 230, "attributekeyword": 230, "beginkeyword": 230, "begin": [230, 231], "bodykeyword": 230, "bufferkeyword": 230, "buskeyword": 230, "bu": 230, "constantkeyword": 230, "defaultkeyword": 230, "disconnectkeyword": 230, "downtokeyword": 230, "elsekeyword": 230, "elsifkeyword": 230, "endkeyword": 230, "exitkeyword": 230, "filekeyword": 230, "forcekeyword": 230, "generickeyword": 230, "groupkeyword": 230, "guardedkeyword": 230, "inkeyword": 230, "inoutkeyword": 230, "impurekeyword": 230, "inertialkeyword": 230, "labelkeyword": 230, "librarykeyword": 230, "linkagekeyword": 230, "literalkeyword": 230, "mapkeyword": 230, "nandoper": 230, "newkeyword": 230, "nextkeyword": 230, "noroper": 230, "notoper": 230, "nullkeyword": 230, "ofkeyword": 230, "onkeyword": 230, "openkeyword": 230, "oroper": 230, "otherskeyword": 230, "outkeyword": 230, "parameterkeyword": 230, "portkeyword": 230, "postponedkeyword": 230, "privatekeyword": 230, "propertykeyword": 230, "protectedkeyword": 230, "purekeyword": 230, "rangekeyword": 230, "recordkeyword": 230, "registerkeyword": 230, "rejectkeyword": 230, "releasekeyword": 230, "reportkeyword": 230, "returnkeyword": 230, "roloper": 230, "roroper": 230, "selectkeyword": 230, "sequencekeyword": 230, "severitykeyword": 230, "sharedkeyword": 230, "signalkeyword": 230, "slaoper": 230, "slloper": 230, "sraoper": 230, "srloper": 230, "subtypekeyword": 230, "tokeyword": 230, "transportkeyword": 230, "typekeyword": 230, "unaffectedkeyword": 230, "unitskeyword": 230, "untilkeyword": 230, "usekeyword": 230, "unbufferedkeyword": 230, "variablekeyword": 230, "viewkeyword": 230, "vunitkeyword": 230, "waitkeyword": 230, "whenkeyword": 230, "whilekeyword": 230, "withkeyword": 230, "xoroper": 230, "xnoroper": 230, "convert": [230, 231], "fromexistingtoken": 230, "becom": 230, "tokenizerexcept": 231, "integerchar": 231, "realchar": 231, "possiblerealliter": 231, "16": 231, "anyth": 231, "__abs__": 231, "__add__": 231, "__and__": 231, "__bool__": 231, "__ceil__": 231, "ceil": 231, "__divmod__": 231, "divmod": 231, "__float__": 231, "float": 231, "__floor__": 231, "floor": 231, "__floordiv__": 231, "__format__": 231, "format_spec": 231, "default": 231, "formatt": 231, "__gt__": 231, "__index__": 231, "suitabl": 231, "kwd": 231, "__int__": 231, "__invert__": 231, "__lshift__": 231, "__lt__": 231, "__mod__": 231, "__mul__": 231, "__neg__": 231, "__pos__": 231, "__pow__": 231, "mod": 231, "pow": 231, "__radd__": 231, "__rand__": 231, "__rdivmod__": 231, "__reduce_ex__": 231, "proto": 231, "helper": 231, "pickl": 231, "__rfloordiv__": 231, "__rlshift__": 231, "__rmod__": 231, "__rmul__": 231, "__round__": 231, "ndigit": 231, "argument": 231, "__rpow__": 231, "__rrshift__": 231, "__rshift__": 231, "__rsub__": 231, "__rtruediv__": 231, "__rxor__": 231, "__sub__": 231, "__truediv__": 231, "__trunc__": 231, "truncat": 231, "__xor__": 231, "as_integer_ratio": 231, "ratio": 231, "pair": [231, 234], "whose": 231, "exactli": 231, "denomin": 231, "bit_count": 231, "ones": 231, "popul": 231, "count": 231, "bin": 231, "0b1101": 231, "bit_length": 231, "37": 231, "0b100101": 231, "conjug": 231, "ration": 231, "lowest": 231, "from_byt": 231, "byteord": 231, "big": 231, "protocol": 231, "bytearrai": 231, "built": 231, "signific": 231, "littl": 231, "nativ": 231, "host": 231, "sy": 231, "complement": 231, "imaginari": 231, "numer": 231, "to_byt": 231, "overflowerror": 231, "neg": 231, "std_logic_1164": 232, "subprogramdeclar": 233, "proceduredeclar": 233, "functiondeclar": 233, "packagedecl": 233, "returntyp": 233, "publicmemb": 233, "privatememb": 233, "_attribut": 234, "integertyp": 234, "realtyp": 234, "enumerationliter": 234, "enumerationtyp": 234, "arraytyp": 234, "recordmemb": 234, "recordtyp": 234, "integersubtyp": 234, "enumerationsubtyp": 234, "typeinst": 234, "po": 234, "enumerationvalu": 234, "elementtyp": 234, "basetyp": 234, "left": 234}, "objects": {"": [[106, 0, 0, "-", "pyVHDLParser"]], "pyVHDLParser": [[107, 0, 0, "-", "ANTLR3"], [110, 0, 0, "-", "ANTLR4"], [115, 0, 0, "-", "Base"], [116, 0, 0, "-", "Blocks"], [185, 0, 0, "-", "CLI"], [193, 0, 0, "-", "Decorators"], [194, 0, 0, "-", "DocumentModel"], [205, 0, 0, "-", "Filters"], [207, 0, 0, "-", "Groups"], [218, 0, 0, "-", "LanguageModel"], [223, 0, 0, "-", "NetlistModel"], [225, 0, 0, "-", "SimulationModel"], [228, 0, 0, "-", "StyleChecks"], [229, 0, 0, "-", "Token"], [232, 0, 0, "-", "TypeSystem"]], "pyVHDLParser.ANTLR3": [[108, 0, 0, "-", "VHDLLexer"], [109, 0, 0, "-", "VHDLParser"]], "pyVHDLParser.ANTLR4": [[111, 0, 0, "-", "VHDLLexer"], [112, 0, 0, "-", "VHDLParser"], [113, 0, 0, "-", "VHDLParserVisitor"], [114, 0, 0, "-", "Visitor"]], "pyVHDLParser.Blocks": [[117, 0, 0, "-", "Assignment"], [120, 0, 0, "-", "Attribute"], [116, 1, 1, "", "Block"], [116, 1, 1, "", "BlockIterator"], [116, 5, 1, "", "BlockParserException"], [116, 1, 1, "", "BlockReverseIterator"], [123, 0, 0, "-", "Comment"], [116, 1, 1, "", "CommentBlock"], [124, 0, 0, "-", "Common"], [125, 0, 0, "-", "ControlStructure"], [116, 1, 1, "", "EndOfBlock"], [116, 1, 1, "", "EndOfDocumentBlock"], [116, 1, 1, "", "EndOfSnippetBlock"], [134, 0, 0, "-", "Exception"], [135, 0, 0, "-", "Expression"], [116, 1, 1, "", "FinalBlock"], [136, 0, 0, "-", "Generate"], [140, 0, 0, "-", "Generic"], [141, 0, 0, "-", "Generic1"], [142, 0, 0, "-", "Instantiation"], [147, 0, 0, "-", "InterfaceObject"], [148, 0, 0, "-", "List"], [116, 1, 1, "", "MetaBlock"], [155, 0, 0, "-", "Object"], [161, 0, 0, "-", "Reference"], [165, 0, 0, "-", "Reporting"], [168, 0, 0, "-", "Sequential"], [116, 1, 1, "", "SkipableBlock"], [116, 1, 1, "", "StartOfBlock"], [116, 1, 1, "", "StartOfDocumentBlock"], [116, 1, 1, "", "StartOfSnippetBlock"], [174, 0, 0, "-", "Structural"], [116, 1, 1, "", "TokenToBlockParser"], [180, 0, 0, "-", "Type"]], "pyVHDLParser.Blocks.Assignment": [[118, 0, 0, "-", "SignalAssignment"], [119, 0, 0, "-", "VariableAssignment"]], "pyVHDLParser.Blocks.Assignment.SignalAssignment": [[118, 1, 1, "", "SignalAssignmentBlock"]], "pyVHDLParser.Blocks.Assignment.SignalAssignment.SignalAssignmentBlock": [[118, 2, 1, "", "EndToken"], [118, 3, 1, "", "Length"], [118, 2, 1, "", "MultiPart"], [118, 2, 1, "", "NextBlock"], [118, 2, 1, "", "StartToken"], [118, 3, 1, "", "States"], [118, 2, 1, "", "__STATES__"], [118, 4, 1, "", "__init__"], [118, 4, 1, "", "__iter__"], [118, 4, 1, "", "__len__"], [118, 4, 1, "", "__repr__"], [118, 4, 1, "", "__str__"], [118, 2, 1, "", "_previousBlock"], [118, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Assignment.VariableAssignment": [[119, 1, 1, "", "SignalAssignmentBlock"]], "pyVHDLParser.Blocks.Assignment.VariableAssignment.SignalAssignmentBlock": [[119, 2, 1, "", "EndToken"], [119, 3, 1, "", "Length"], [119, 2, 1, "", "MultiPart"], [119, 2, 1, "", "NextBlock"], [119, 2, 1, "", "StartToken"], [119, 3, 1, "", "States"], [119, 2, 1, "", "__STATES__"], [119, 4, 1, "", "__init__"], [119, 4, 1, "", "__iter__"], [119, 4, 1, "", "__len__"], [119, 4, 1, "", "__repr__"], [119, 4, 1, "", "__str__"], [119, 2, 1, "", "_previousBlock"], [119, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Attribute": [[121, 0, 0, "-", "AttributeDeclaration"], [122, 0, 0, "-", "AttributeSpecification"]], "pyVHDLParser.Blocks.Attribute.AttributeDeclaration": [[121, 1, 1, "", "AttributeDeclarationBlock"]], "pyVHDLParser.Blocks.Attribute.AttributeDeclaration.AttributeDeclarationBlock": [[121, 2, 1, "", "EndToken"], [121, 3, 1, "", "Length"], [121, 2, 1, "", "MultiPart"], [121, 2, 1, "", "NextBlock"], [121, 2, 1, "", "StartToken"], [121, 3, 1, "", "States"], [121, 2, 1, "", "__STATES__"], [121, 4, 1, "", "__init__"], [121, 4, 1, "", "__iter__"], [121, 4, 1, "", "__len__"], [121, 4, 1, "", "__repr__"], [121, 4, 1, "", "__str__"], [121, 2, 1, "", "_previousBlock"], [121, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Attribute.AttributeSpecification": [[122, 1, 1, "", "AttributeSpecificationBlock"]], "pyVHDLParser.Blocks.Attribute.AttributeSpecification.AttributeSpecificationBlock": [[122, 2, 1, "", "EndToken"], [122, 3, 1, "", "Length"], [122, 2, 1, "", "MultiPart"], [122, 2, 1, "", "NextBlock"], [122, 2, 1, "", "StartToken"], [122, 3, 1, "", "States"], [122, 2, 1, "", "__STATES__"], [122, 4, 1, "", "__init__"], [122, 4, 1, "", "__iter__"], [122, 4, 1, "", "__len__"], [122, 4, 1, "", "__repr__"], [122, 4, 1, "", "__str__"], [122, 2, 1, "", "_previousBlock"], [122, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Block": [[116, 2, 1, "", "EndToken"], [116, 3, 1, "", "Length"], [116, 2, 1, "", "MultiPart"], [116, 2, 1, "", "NextBlock"], [116, 2, 1, "", "StartToken"], [116, 3, 1, "", "States"], [116, 2, 1, "", "__STATES__"], [116, 4, 1, "", "__init__"], [116, 4, 1, "", "__iter__"], [116, 4, 1, "", "__len__"], [116, 4, 1, "", "__repr__"], [116, 4, 1, "", "__str__"], [116, 2, 1, "", "_previousBlock"], [116, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.BlockIterator": [[116, 4, 1, "", "__init__"], [116, 2, 1, "", "_state"]], "pyVHDLParser.Blocks.BlockParserException": [[116, 4, 1, "", "__init__"], [116, 4, 1, "", "__new__"]], "pyVHDLParser.Blocks.BlockReverseIterator": [[116, 4, 1, "", "__init__"], [116, 2, 1, "", "state"]], "pyVHDLParser.Blocks.Comment": [[123, 1, 1, "", "MultiLineCommentBlock"], [123, 1, 1, "", "SingleLineCommentBlock"]], "pyVHDLParser.Blocks.Comment.MultiLineCommentBlock": [[123, 2, 1, "", "EndToken"], [123, 3, 1, "", "Length"], [123, 2, 1, "", "MultiPart"], [123, 2, 1, "", "NextBlock"], [123, 2, 1, "", "StartToken"], [123, 3, 1, "", "States"], [123, 2, 1, "", "__STATES__"], [123, 4, 1, "", "__init__"], [123, 4, 1, "", "__iter__"], [123, 4, 1, "", "__len__"], [123, 4, 1, "", "__repr__"], [123, 4, 1, "", "__str__"], [123, 2, 1, "", "_previousBlock"], [123, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Comment.SingleLineCommentBlock": [[123, 2, 1, "", "EndToken"], [123, 3, 1, "", "Length"], [123, 2, 1, "", "MultiPart"], [123, 2, 1, "", "NextBlock"], [123, 2, 1, "", "StartToken"], [123, 3, 1, "", "States"], [123, 2, 1, "", "__STATES__"], [123, 4, 1, "", "__init__"], [123, 4, 1, "", "__iter__"], [123, 4, 1, "", "__len__"], [123, 4, 1, "", "__repr__"], [123, 4, 1, "", "__str__"], [123, 2, 1, "", "_previousBlock"], [123, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.CommentBlock": [[116, 2, 1, "", "EndToken"], [116, 3, 1, "", "Length"], [116, 2, 1, "", "MultiPart"], [116, 2, 1, "", "NextBlock"], [116, 2, 1, "", "StartToken"], [116, 3, 1, "", "States"], [116, 2, 1, "", "__STATES__"], [116, 4, 1, "", "__init__"], [116, 4, 1, "", "__iter__"], [116, 4, 1, "", "__len__"], [116, 4, 1, "", "__repr__"], [116, 4, 1, "", "__str__"], [116, 2, 1, "", "_previousBlock"], [116, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Common": [[124, 1, 1, "", "EmptyLineBlock"], [124, 1, 1, "", "IndentationBlock"], [124, 1, 1, "", "LinebreakBlock"], [124, 1, 1, "", "WhitespaceBlock"]], "pyVHDLParser.Blocks.Common.EmptyLineBlock": [[124, 2, 1, "", "EndToken"], [124, 3, 1, "", "Length"], [124, 2, 1, "", "MultiPart"], [124, 2, 1, "", "NextBlock"], [124, 2, 1, "", "StartToken"], [124, 3, 1, "", "States"], [124, 2, 1, "", "__STATES__"], [124, 4, 1, "", "__init__"], [124, 4, 1, "", "__iter__"], [124, 4, 1, "", "__len__"], [124, 4, 1, "", "__repr__"], [124, 4, 1, "", "__str__"], [124, 2, 1, "", "_previousBlock"], [124, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Common.IndentationBlock": [[124, 2, 1, "", "EndToken"], [124, 3, 1, "", "Length"], [124, 2, 1, "", "MultiPart"], [124, 2, 1, "", "NextBlock"], [124, 2, 1, "", "StartToken"], [124, 3, 1, "", "States"], [124, 2, 1, "", "__STATES__"], [124, 4, 1, "", "__init__"], [124, 4, 1, "", "__iter__"], [124, 4, 1, "", "__len__"], [124, 4, 1, "", "__repr__"], [124, 4, 1, "", "__str__"], [124, 2, 1, "", "_previousBlock"], [124, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Common.LinebreakBlock": [[124, 2, 1, "", "EndToken"], [124, 3, 1, "", "Length"], [124, 2, 1, "", "MultiPart"], [124, 2, 1, "", "NextBlock"], [124, 2, 1, "", "StartToken"], [124, 3, 1, "", "States"], [124, 2, 1, "", "__STATES__"], [124, 4, 1, "", "__init__"], [124, 4, 1, "", "__iter__"], [124, 4, 1, "", "__len__"], [124, 4, 1, "", "__repr__"], [124, 4, 1, "", "__str__"], [124, 2, 1, "", "_previousBlock"], [124, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Common.WhitespaceBlock": [[124, 2, 1, "", "EndToken"], [124, 3, 1, "", "Length"], [124, 2, 1, "", "MultiPart"], [124, 2, 1, "", "NextBlock"], [124, 2, 1, "", "StartToken"], [124, 3, 1, "", "States"], [124, 2, 1, "", "__STATES__"], [124, 4, 1, "", "__init__"], [124, 4, 1, "", "__iter__"], [124, 4, 1, "", "__len__"], [124, 4, 1, "", "__repr__"], [124, 4, 1, "", "__str__"], [124, 2, 1, "", "_previousBlock"], [124, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.ControlStructure": [[126, 0, 0, "-", "Case"], [127, 0, 0, "-", "Exit"], [128, 0, 0, "-", "ForLoop"], [129, 0, 0, "-", "If"], [130, 0, 0, "-", "Next"], [131, 0, 0, "-", "Null"], [132, 0, 0, "-", "Return"], [133, 0, 0, "-", "WhileLoop"]], "pyVHDLParser.Blocks.ControlStructure.Case": [[126, 1, 1, "", "ArrowBlock"], [126, 1, 1, "", "CaseBlock"], [126, 1, 1, "", "CaseExpressionBlock"], [126, 1, 1, "", "EndBlock"], [126, 1, 1, "", "IsBlock"], [126, 1, 1, "", "WhenBlock"], [126, 1, 1, "", "WhenExpressionBlock"]], "pyVHDLParser.Blocks.ControlStructure.Case.ArrowBlock": [[126, 2, 1, "", "END_BLOCK"], [126, 2, 1, "", "EndToken"], [126, 3, 1, "", "Length"], [126, 2, 1, "", "MultiPart"], [126, 2, 1, "", "NextBlock"], [126, 2, 1, "", "StartToken"], [126, 3, 1, "", "States"], [126, 2, 1, "", "__STATES__"], [126, 4, 1, "", "__init__"], [126, 4, 1, "", "__iter__"], [126, 4, 1, "", "__len__"], [126, 4, 1, "", "__repr__"], [126, 4, 1, "", "__str__"], [126, 2, 1, "", "_previousBlock"], [126, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.ControlStructure.Case.CaseBlock": [[126, 2, 1, "", "EndToken"], [126, 3, 1, "", "Length"], [126, 2, 1, "", "MultiPart"], [126, 2, 1, "", "NextBlock"], [126, 2, 1, "", "StartToken"], [126, 3, 1, "", "States"], [126, 2, 1, "", "__STATES__"], [126, 4, 1, "", "__init__"], [126, 4, 1, "", "__iter__"], [126, 4, 1, "", "__len__"], [126, 4, 1, "", "__repr__"], [126, 4, 1, "", "__str__"], [126, 2, 1, "", "_previousBlock"], [126, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.ControlStructure.Case.CaseExpressionBlock": [[126, 2, 1, "", "EXIT_BLOCK"], [126, 2, 1, "", "EXIT_KEYWORD"], [126, 2, 1, "", "EndToken"], [126, 3, 1, "", "Length"], [126, 2, 1, "", "MultiPart"], [126, 2, 1, "", "NextBlock"], [126, 2, 1, "", "StartToken"], [126, 3, 1, "", "States"], [126, 2, 1, "", "__STATES__"], [126, 4, 1, "", "__init__"], [126, 4, 1, "", "__iter__"], [126, 4, 1, "", "__len__"], [126, 4, 1, "", "__repr__"], [126, 4, 1, "", "__str__"], [126, 2, 1, "", "_previousBlock"], [126, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.ControlStructure.Case.EndBlock": [[126, 2, 1, "", "EndToken"], [126, 2, 1, "", "KEYWORD"], [126, 3, 1, "", "Length"], [126, 2, 1, "", "MultiPart"], [126, 2, 1, "", "NextBlock"], [126, 2, 1, "", "StartToken"], [126, 3, 1, "", "States"], [126, 2, 1, "", "__STATES__"], [126, 4, 1, "", "__init__"], [126, 4, 1, "", "__iter__"], [126, 4, 1, "", "__len__"], [126, 4, 1, "", "__repr__"], [126, 4, 1, "", "__str__"], [126, 2, 1, "", "_previousBlock"], [126, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.ControlStructure.Case.IsBlock": [[126, 2, 1, "", "EndToken"], [126, 3, 1, "", "Length"], [126, 2, 1, "", "MultiPart"], [126, 2, 1, "", "NextBlock"], [126, 2, 1, "", "StartToken"], [126, 3, 1, "", "States"], [126, 2, 1, "", "__STATES__"], [126, 4, 1, "", "__init__"], [126, 4, 1, "", "__iter__"], [126, 4, 1, "", "__len__"], [126, 4, 1, "", "__repr__"], [126, 4, 1, "", "__str__"], [126, 2, 1, "", "_previousBlock"], [126, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.ControlStructure.Case.WhenBlock": [[126, 2, 1, "", "END_BLOCK"], [126, 2, 1, "", "EndToken"], [126, 3, 1, "", "Length"], [126, 2, 1, "", "MultiPart"], [126, 2, 1, "", "NextBlock"], [126, 2, 1, "", "StartToken"], [126, 3, 1, "", "States"], [126, 2, 1, "", "__STATES__"], [126, 4, 1, "", "__init__"], [126, 4, 1, "", "__iter__"], [126, 4, 1, "", "__len__"], [126, 4, 1, "", "__repr__"], [126, 4, 1, "", "__str__"], [126, 2, 1, "", "_previousBlock"], [126, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.ControlStructure.Case.WhenExpressionBlock": [[126, 2, 1, "", "EXIT_BLOCK"], [126, 2, 1, "", "EXIT_TOKEN"], [126, 2, 1, "", "EndToken"], [126, 3, 1, "", "Length"], [126, 2, 1, "", "MultiPart"], [126, 2, 1, "", "NextBlock"], [126, 2, 1, "", "StartToken"], [126, 3, 1, "", "States"], [126, 2, 1, "", "__STATES__"], [126, 4, 1, "", "__init__"], [126, 4, 1, "", "__iter__"], [126, 4, 1, "", "__len__"], [126, 4, 1, "", "__repr__"], [126, 4, 1, "", "__str__"], [126, 2, 1, "", "_previousBlock"], [126, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.ControlStructure.Exit": [[127, 1, 1, "", "EndBlock"], [127, 1, 1, "", "ExitBlock"], [127, 1, 1, "", "ExitConditionBlock"]], "pyVHDLParser.Blocks.ControlStructure.Exit.EndBlock": [[127, 2, 1, "", "EndToken"], [127, 3, 1, "", "Length"], [127, 2, 1, "", "MultiPart"], [127, 2, 1, "", "NextBlock"], [127, 2, 1, "", "StartToken"], [127, 3, 1, "", "States"], [127, 2, 1, "", "__STATES__"], [127, 4, 1, "", "__init__"], [127, 4, 1, "", "__iter__"], [127, 4, 1, "", "__len__"], [127, 4, 1, "", "__repr__"], [127, 4, 1, "", "__str__"], [127, 2, 1, "", "_previousBlock"], [127, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.ControlStructure.Exit.ExitBlock": [[127, 2, 1, "", "EndToken"], [127, 3, 1, "", "Length"], [127, 2, 1, "", "MultiPart"], [127, 2, 1, "", "NextBlock"], [127, 2, 1, "", "StartToken"], [127, 3, 1, "", "States"], [127, 2, 1, "", "__STATES__"], [127, 4, 1, "", "__init__"], [127, 4, 1, "", "__iter__"], [127, 4, 1, "", "__len__"], [127, 4, 1, "", "__repr__"], [127, 4, 1, "", "__str__"], [127, 2, 1, "", "_previousBlock"], [127, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.ControlStructure.Exit.ExitConditionBlock": [[127, 2, 1, "", "END_BLOCK"], [127, 2, 1, "", "EndToken"], [127, 3, 1, "", "Length"], [127, 2, 1, "", "MultiPart"], [127, 2, 1, "", "NextBlock"], [127, 2, 1, "", "StartToken"], [127, 3, 1, "", "States"], [127, 2, 1, "", "__STATES__"], [127, 4, 1, "", "__init__"], [127, 4, 1, "", "__iter__"], [127, 4, 1, "", "__len__"], [127, 4, 1, "", "__repr__"], [127, 4, 1, "", "__str__"], [127, 2, 1, "", "_previousBlock"], [127, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.ControlStructure.ForLoop": [[128, 1, 1, "", "EndBlock"], [128, 1, 1, "", "ExpressionBlockEndedByLoop"], [128, 1, 1, "", "ExpressionBlockEndedByLoopORToORDownto"], [128, 1, 1, "", "IteratorBlock"], [128, 1, 1, "", "LoopBlock"], [128, 1, 1, "", "LoopIterationDirectionBlock"]], "pyVHDLParser.Blocks.ControlStructure.ForLoop.EndBlock": [[128, 2, 1, "", "EndToken"], [128, 2, 1, "", "KEYWORD"], [128, 3, 1, "", "Length"], [128, 2, 1, "", "MultiPart"], [128, 2, 1, "", "NextBlock"], [128, 2, 1, "", "StartToken"], [128, 3, 1, "", "States"], [128, 2, 1, "", "__STATES__"], [128, 4, 1, "", "__init__"], [128, 4, 1, "", "__iter__"], [128, 4, 1, "", "__len__"], [128, 4, 1, "", "__repr__"], [128, 4, 1, "", "__str__"], [128, 2, 1, "", "_previousBlock"], [128, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.ControlStructure.ForLoop.ExpressionBlockEndedByLoop": [[128, 2, 1, "", "EXIT_BLOCK"], [128, 2, 1, "", "EXIT_KEYWORD"], [128, 2, 1, "", "EndToken"], [128, 3, 1, "", "Length"], [128, 2, 1, "", "MultiPart"], [128, 2, 1, "", "NextBlock"], [128, 2, 1, "", "StartToken"], [128, 3, 1, "", "States"], [128, 2, 1, "", "__STATES__"], [128, 4, 1, "", "__init__"], [128, 4, 1, "", "__iter__"], [128, 4, 1, "", "__len__"], [128, 4, 1, "", "__repr__"], [128, 4, 1, "", "__str__"], [128, 2, 1, "", "_previousBlock"], [128, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.ControlStructure.ForLoop.ExpressionBlockEndedByLoopORToORDownto": [[128, 2, 1, "", "EXIT_BLOCK"], [128, 2, 1, "", "EXIT_KEYWORD"], [128, 2, 1, "", "EndToken"], [128, 3, 1, "", "Length"], [128, 2, 1, "", "MultiPart"], [128, 2, 1, "", "NextBlock"], [128, 2, 1, "", "StartToken"], [128, 3, 1, "", "States"], [128, 2, 1, "", "__STATES__"], [128, 4, 1, "", "__init__"], [128, 4, 1, "", "__iter__"], [128, 4, 1, "", "__len__"], [128, 4, 1, "", "__repr__"], [128, 4, 1, "", "__str__"], [128, 2, 1, "", "_previousBlock"], [128, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.ControlStructure.ForLoop.IteratorBlock": [[128, 2, 1, "", "EndToken"], [128, 3, 1, "", "Length"], [128, 2, 1, "", "MultiPart"], [128, 2, 1, "", "NextBlock"], [128, 2, 1, "", "StartToken"], [128, 3, 1, "", "States"], [128, 2, 1, "", "__STATES__"], [128, 4, 1, "", "__init__"], [128, 4, 1, "", "__iter__"], [128, 4, 1, "", "__len__"], [128, 4, 1, "", "__repr__"], [128, 4, 1, "", "__str__"], [128, 2, 1, "", "_previousBlock"], [128, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.ControlStructure.ForLoop.LoopBlock": [[128, 2, 1, "", "END_BLOCK"], [128, 2, 1, "", "EndToken"], [128, 3, 1, "", "Length"], [128, 2, 1, "", "MultiPart"], [128, 2, 1, "", "NextBlock"], [128, 2, 1, "", "StartToken"], [128, 3, 1, "", "States"], [128, 2, 1, "", "__STATES__"], [128, 4, 1, "", "__init__"], [128, 4, 1, "", "__iter__"], [128, 4, 1, "", "__len__"], [128, 4, 1, "", "__repr__"], [128, 4, 1, "", "__str__"], [128, 2, 1, "", "_previousBlock"], [128, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.ControlStructure.ForLoop.LoopIterationDirectionBlock": [[128, 2, 1, "", "EndToken"], [128, 3, 1, "", "Length"], [128, 2, 1, "", "MultiPart"], [128, 2, 1, "", "NextBlock"], [128, 2, 1, "", "StartToken"], [128, 3, 1, "", "States"], [128, 2, 1, "", "__STATES__"], [128, 4, 1, "", "__init__"], [128, 4, 1, "", "__iter__"], [128, 4, 1, "", "__len__"], [128, 4, 1, "", "__repr__"], [128, 4, 1, "", "__str__"], [128, 2, 1, "", "_previousBlock"], [128, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.ControlStructure.If": [[129, 1, 1, "", "ElsIfConditionBlock"], [129, 1, 1, "", "ElseBlock"], [129, 1, 1, "", "EndBlock"], [129, 1, 1, "", "ExpressionBlockEndedByThen"], [129, 1, 1, "", "IfConditionBlock"], [129, 1, 1, "", "ThenBlock"]], "pyVHDLParser.Blocks.ControlStructure.If.ElsIfConditionBlock": [[129, 2, 1, "", "EndToken"], [129, 3, 1, "", "Length"], [129, 2, 1, "", "MultiPart"], [129, 2, 1, "", "NextBlock"], [129, 2, 1, "", "StartToken"], [129, 3, 1, "", "States"], [129, 2, 1, "", "__STATES__"], [129, 4, 1, "", "__init__"], [129, 4, 1, "", "__iter__"], [129, 4, 1, "", "__len__"], [129, 4, 1, "", "__repr__"], [129, 4, 1, "", "__str__"], [129, 2, 1, "", "_previousBlock"], [129, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.ControlStructure.If.ElseBlock": [[129, 2, 1, "", "END_BLOCK"], [129, 2, 1, "", "EndToken"], [129, 3, 1, "", "Length"], [129, 2, 1, "", "MultiPart"], [129, 2, 1, "", "NextBlock"], [129, 2, 1, "", "StartToken"], [129, 3, 1, "", "States"], [129, 2, 1, "", "__STATES__"], [129, 4, 1, "", "__init__"], [129, 4, 1, "", "__iter__"], [129, 4, 1, "", "__len__"], [129, 4, 1, "", "__repr__"], [129, 4, 1, "", "__str__"], [129, 2, 1, "", "_previousBlock"], [129, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.ControlStructure.If.EndBlock": [[129, 2, 1, "", "EndToken"], [129, 2, 1, "", "KEYWORD"], [129, 3, 1, "", "Length"], [129, 2, 1, "", "MultiPart"], [129, 2, 1, "", "NextBlock"], [129, 2, 1, "", "StartToken"], [129, 3, 1, "", "States"], [129, 2, 1, "", "__STATES__"], [129, 4, 1, "", "__init__"], [129, 4, 1, "", "__iter__"], [129, 4, 1, "", "__len__"], [129, 4, 1, "", "__repr__"], [129, 4, 1, "", "__str__"], [129, 2, 1, "", "_previousBlock"], [129, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.ControlStructure.If.ExpressionBlockEndedByThen": [[129, 2, 1, "", "EXIT_BLOCK"], [129, 2, 1, "", "EXIT_KEYWORD"], [129, 2, 1, "", "EndToken"], [129, 3, 1, "", "Length"], [129, 2, 1, "", "MultiPart"], [129, 2, 1, "", "NextBlock"], [129, 2, 1, "", "StartToken"], [129, 3, 1, "", "States"], [129, 2, 1, "", "__STATES__"], [129, 4, 1, "", "__init__"], [129, 4, 1, "", "__iter__"], [129, 4, 1, "", "__len__"], [129, 4, 1, "", "__repr__"], [129, 4, 1, "", "__str__"], [129, 2, 1, "", "_previousBlock"], [129, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.ControlStructure.If.IfConditionBlock": [[129, 2, 1, "", "EndToken"], [129, 3, 1, "", "Length"], [129, 2, 1, "", "MultiPart"], [129, 2, 1, "", "NextBlock"], [129, 2, 1, "", "StartToken"], [129, 3, 1, "", "States"], [129, 2, 1, "", "__STATES__"], [129, 4, 1, "", "__init__"], [129, 4, 1, "", "__iter__"], [129, 4, 1, "", "__len__"], [129, 4, 1, "", "__repr__"], [129, 4, 1, "", "__str__"], [129, 2, 1, "", "_previousBlock"], [129, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.ControlStructure.If.ThenBlock": [[129, 2, 1, "", "END_BLOCK"], [129, 2, 1, "", "EndToken"], [129, 3, 1, "", "Length"], [129, 2, 1, "", "MultiPart"], [129, 2, 1, "", "NextBlock"], [129, 2, 1, "", "StartToken"], [129, 3, 1, "", "States"], [129, 2, 1, "", "__STATES__"], [129, 4, 1, "", "__init__"], [129, 4, 1, "", "__iter__"], [129, 4, 1, "", "__len__"], [129, 4, 1, "", "__repr__"], [129, 4, 1, "", "__str__"], [129, 2, 1, "", "_previousBlock"], [129, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.ControlStructure.Next": [[130, 1, 1, "", "EndBlock"], [130, 1, 1, "", "NextBlock"], [130, 1, 1, "", "NextConditionBlock"]], "pyVHDLParser.Blocks.ControlStructure.Next.EndBlock": [[130, 2, 1, "", "EndToken"], [130, 3, 1, "", "Length"], [130, 2, 1, "", "MultiPart"], [130, 2, 1, "", "NextBlock"], [130, 2, 1, "", "StartToken"], [130, 3, 1, "", "States"], [130, 2, 1, "", "__STATES__"], [130, 4, 1, "", "__init__"], [130, 4, 1, "", "__iter__"], [130, 4, 1, "", "__len__"], [130, 4, 1, "", "__repr__"], [130, 4, 1, "", "__str__"], [130, 2, 1, "", "_previousBlock"], [130, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.ControlStructure.Next.NextBlock": [[130, 2, 1, "", "EndToken"], [130, 3, 1, "", "Length"], [130, 2, 1, "", "MultiPart"], [130, 2, 1, "", "NextBlock"], [130, 2, 1, "", "StartToken"], [130, 3, 1, "", "States"], [130, 2, 1, "", "__STATES__"], [130, 4, 1, "", "__init__"], [130, 4, 1, "", "__iter__"], [130, 4, 1, "", "__len__"], [130, 4, 1, "", "__repr__"], [130, 4, 1, "", "__str__"], [130, 2, 1, "", "_previousBlock"], [130, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.ControlStructure.Next.NextConditionBlock": [[130, 2, 1, "", "END_BLOCK"], [130, 2, 1, "", "EndToken"], [130, 3, 1, "", "Length"], [130, 2, 1, "", "MultiPart"], [130, 2, 1, "", "NextBlock"], [130, 2, 1, "", "StartToken"], [130, 3, 1, "", "States"], [130, 2, 1, "", "__STATES__"], [130, 4, 1, "", "__init__"], [130, 4, 1, "", "__iter__"], [130, 4, 1, "", "__len__"], [130, 4, 1, "", "__repr__"], [130, 4, 1, "", "__str__"], [130, 2, 1, "", "_previousBlock"], [130, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.ControlStructure.Null": [[131, 1, 1, "", "EndBlock"], [131, 1, 1, "", "NullBlock"]], "pyVHDLParser.Blocks.ControlStructure.Null.EndBlock": [[131, 2, 1, "", "EndToken"], [131, 3, 1, "", "Length"], [131, 2, 1, "", "MultiPart"], [131, 2, 1, "", "NextBlock"], [131, 2, 1, "", "StartToken"], [131, 3, 1, "", "States"], [131, 2, 1, "", "__STATES__"], [131, 4, 1, "", "__init__"], [131, 4, 1, "", "__iter__"], [131, 4, 1, "", "__len__"], [131, 4, 1, "", "__repr__"], [131, 4, 1, "", "__str__"], [131, 2, 1, "", "_previousBlock"], [131, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.ControlStructure.Null.NullBlock": [[131, 2, 1, "", "EndToken"], [131, 3, 1, "", "Length"], [131, 2, 1, "", "MultiPart"], [131, 2, 1, "", "NextBlock"], [131, 2, 1, "", "StartToken"], [131, 3, 1, "", "States"], [131, 2, 1, "", "__STATES__"], [131, 4, 1, "", "__init__"], [131, 4, 1, "", "__iter__"], [131, 4, 1, "", "__len__"], [131, 4, 1, "", "__repr__"], [131, 4, 1, "", "__str__"], [131, 2, 1, "", "_previousBlock"], [131, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.ControlStructure.Return": [[132, 1, 1, "", "EndBlock"], [132, 1, 1, "", "ReturnBlock"], [132, 1, 1, "", "ReturnExpressionBlock"]], "pyVHDLParser.Blocks.ControlStructure.Return.EndBlock": [[132, 2, 1, "", "EndToken"], [132, 3, 1, "", "Length"], [132, 2, 1, "", "MultiPart"], [132, 2, 1, "", "NextBlock"], [132, 2, 1, "", "StartToken"], [132, 3, 1, "", "States"], [132, 2, 1, "", "__STATES__"], [132, 4, 1, "", "__init__"], [132, 4, 1, "", "__iter__"], [132, 4, 1, "", "__len__"], [132, 4, 1, "", "__repr__"], [132, 4, 1, "", "__str__"], [132, 2, 1, "", "_previousBlock"], [132, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.ControlStructure.Return.ReturnBlock": [[132, 2, 1, "", "EndToken"], [132, 3, 1, "", "Length"], [132, 2, 1, "", "MultiPart"], [132, 2, 1, "", "NextBlock"], [132, 2, 1, "", "StartToken"], [132, 3, 1, "", "States"], [132, 2, 1, "", "__STATES__"], [132, 4, 1, "", "__init__"], [132, 4, 1, "", "__iter__"], [132, 4, 1, "", "__len__"], [132, 4, 1, "", "__repr__"], [132, 4, 1, "", "__str__"], [132, 2, 1, "", "_previousBlock"], [132, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.ControlStructure.Return.ReturnExpressionBlock": [[132, 2, 1, "", "END_BLOCK"], [132, 2, 1, "", "EndToken"], [132, 3, 1, "", "Length"], [132, 2, 1, "", "MultiPart"], [132, 2, 1, "", "NextBlock"], [132, 2, 1, "", "StartToken"], [132, 3, 1, "", "States"], [132, 2, 1, "", "__STATES__"], [132, 4, 1, "", "__init__"], [132, 4, 1, "", "__iter__"], [132, 4, 1, "", "__len__"], [132, 4, 1, "", "__repr__"], [132, 4, 1, "", "__str__"], [132, 2, 1, "", "_previousBlock"], [132, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.ControlStructure.WhileLoop": [[133, 1, 1, "", "ConditionBlock"], [133, 1, 1, "", "EndBlock"]], "pyVHDLParser.Blocks.ControlStructure.WhileLoop.ConditionBlock": [[133, 2, 1, "", "EndToken"], [133, 3, 1, "", "Length"], [133, 2, 1, "", "MultiPart"], [133, 2, 1, "", "NextBlock"], [133, 2, 1, "", "StartToken"], [133, 3, 1, "", "States"], [133, 2, 1, "", "__STATES__"], [133, 4, 1, "", "__init__"], [133, 4, 1, "", "__iter__"], [133, 4, 1, "", "__len__"], [133, 4, 1, "", "__repr__"], [133, 4, 1, "", "__str__"], [133, 2, 1, "", "_previousBlock"], [133, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.ControlStructure.WhileLoop.EndBlock": [[133, 2, 1, "", "EndToken"], [133, 2, 1, "", "KEYWORD"], [133, 3, 1, "", "Length"], [133, 2, 1, "", "MultiPart"], [133, 2, 1, "", "NextBlock"], [133, 2, 1, "", "StartToken"], [133, 3, 1, "", "States"], [133, 2, 1, "", "__STATES__"], [133, 4, 1, "", "__init__"], [133, 4, 1, "", "__iter__"], [133, 4, 1, "", "__len__"], [133, 4, 1, "", "__repr__"], [133, 4, 1, "", "__str__"], [133, 2, 1, "", "_previousBlock"], [133, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.EndOfBlock": [[116, 2, 1, "", "EndToken"], [116, 3, 1, "", "Length"], [116, 2, 1, "", "MultiPart"], [116, 2, 1, "", "NextBlock"], [116, 2, 1, "", "StartToken"], [116, 3, 1, "", "States"], [116, 2, 1, "", "__STATES__"], [116, 4, 1, "", "__init__"], [116, 4, 1, "", "__iter__"], [116, 4, 1, "", "__len__"], [116, 4, 1, "", "__repr__"], [116, 4, 1, "", "__str__"], [116, 2, 1, "", "_previousBlock"], [116, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.EndOfDocumentBlock": [[116, 2, 1, "", "EndToken"], [116, 3, 1, "", "Length"], [116, 2, 1, "", "MultiPart"], [116, 2, 1, "", "NextBlock"], [116, 2, 1, "", "StartToken"], [116, 3, 1, "", "States"], [116, 2, 1, "", "__STATES__"], [116, 4, 1, "", "__init__"], [116, 4, 1, "", "__iter__"], [116, 4, 1, "", "__len__"], [116, 4, 1, "", "__repr__"], [116, 4, 1, "", "__str__"], [116, 2, 1, "", "_previousBlock"], [116, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.EndOfSnippetBlock": [[116, 2, 1, "", "EndToken"], [116, 3, 1, "", "Length"], [116, 2, 1, "", "MultiPart"], [116, 2, 1, "", "NextBlock"], [116, 2, 1, "", "StartToken"], [116, 3, 1, "", "States"], [116, 2, 1, "", "__STATES__"], [116, 4, 1, "", "__init__"], [116, 4, 1, "", "__iter__"], [116, 4, 1, "", "__len__"], [116, 4, 1, "", "__repr__"], [116, 4, 1, "", "__str__"], [116, 2, 1, "", "_previousBlock"], [116, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Expression": [[135, 1, 1, "", "ExpressionBlock"], [135, 1, 1, "", "ExpressionBlockEndedByCharORClosingRoundBracket"], [135, 1, 1, "", "ExpressionBlockEndedByKeywordORClosingRoundBracket"], [135, 1, 1, "", "ExpressionBlockEndedByKeywordOrToOrDownto"], [135, 1, 1, "", "ExpressionBlockEndedBySemicolon"], [135, 1, 1, "", "ExpressionBlockEndedByToOrDownto"]], "pyVHDLParser.Blocks.Expression.ExpressionBlock": [[135, 2, 1, "", "EndToken"], [135, 3, 1, "", "Length"], [135, 2, 1, "", "MultiPart"], [135, 2, 1, "", "NextBlock"], [135, 2, 1, "", "StartToken"], [135, 3, 1, "", "States"], [135, 2, 1, "", "__STATES__"], [135, 4, 1, "", "__init__"], [135, 4, 1, "", "__iter__"], [135, 4, 1, "", "__len__"], [135, 4, 1, "", "__repr__"], [135, 4, 1, "", "__str__"], [135, 2, 1, "", "_previousBlock"], [135, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByCharORClosingRoundBracket": [[135, 2, 1, "", "EndToken"], [135, 3, 1, "", "Length"], [135, 2, 1, "", "MultiPart"], [135, 2, 1, "", "NextBlock"], [135, 2, 1, "", "StartToken"], [135, 3, 1, "", "States"], [135, 2, 1, "", "__STATES__"], [135, 4, 1, "", "__init__"], [135, 4, 1, "", "__iter__"], [135, 4, 1, "", "__len__"], [135, 4, 1, "", "__repr__"], [135, 4, 1, "", "__str__"], [135, 2, 1, "", "_previousBlock"], [135, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByKeywordORClosingRoundBracket": [[135, 2, 1, "", "EndToken"], [135, 3, 1, "", "Length"], [135, 2, 1, "", "MultiPart"], [135, 2, 1, "", "NextBlock"], [135, 2, 1, "", "StartToken"], [135, 3, 1, "", "States"], [135, 2, 1, "", "__STATES__"], [135, 4, 1, "", "__init__"], [135, 4, 1, "", "__iter__"], [135, 4, 1, "", "__len__"], [135, 4, 1, "", "__repr__"], [135, 4, 1, "", "__str__"], [135, 2, 1, "", "_previousBlock"], [135, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByKeywordOrToOrDownto": [[135, 2, 1, "", "EndToken"], [135, 3, 1, "", "Length"], [135, 2, 1, "", "MultiPart"], [135, 2, 1, "", "NextBlock"], [135, 2, 1, "", "StartToken"], [135, 3, 1, "", "States"], [135, 2, 1, "", "__STATES__"], [135, 4, 1, "", "__init__"], [135, 4, 1, "", "__iter__"], [135, 4, 1, "", "__len__"], [135, 4, 1, "", "__repr__"], [135, 4, 1, "", "__str__"], [135, 2, 1, "", "_previousBlock"], [135, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedBySemicolon": [[135, 2, 1, "", "EndToken"], [135, 3, 1, "", "Length"], [135, 2, 1, "", "MultiPart"], [135, 2, 1, "", "NextBlock"], [135, 2, 1, "", "StartToken"], [135, 3, 1, "", "States"], [135, 2, 1, "", "__STATES__"], [135, 4, 1, "", "__init__"], [135, 4, 1, "", "__iter__"], [135, 4, 1, "", "__len__"], [135, 4, 1, "", "__repr__"], [135, 4, 1, "", "__str__"], [135, 2, 1, "", "_previousBlock"], [135, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByToOrDownto": [[135, 2, 1, "", "EndToken"], [135, 3, 1, "", "Length"], [135, 2, 1, "", "MultiPart"], [135, 2, 1, "", "NextBlock"], [135, 2, 1, "", "StartToken"], [135, 3, 1, "", "States"], [135, 2, 1, "", "__STATES__"], [135, 4, 1, "", "__init__"], [135, 4, 1, "", "__iter__"], [135, 4, 1, "", "__len__"], [135, 4, 1, "", "__repr__"], [135, 4, 1, "", "__str__"], [135, 2, 1, "", "_previousBlock"], [135, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.FinalBlock": [[116, 2, 1, "", "EndToken"], [116, 3, 1, "", "Length"], [116, 2, 1, "", "MultiPart"], [116, 2, 1, "", "NextBlock"], [116, 2, 1, "", "StartToken"], [116, 3, 1, "", "States"], [116, 2, 1, "", "__STATES__"], [116, 4, 1, "", "__init__"], [116, 4, 1, "", "__iter__"], [116, 4, 1, "", "__len__"], [116, 4, 1, "", "__repr__"], [116, 4, 1, "", "__str__"], [116, 2, 1, "", "_previousBlock"], [116, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Generate": [[137, 0, 0, "-", "CaseGenerate"], [136, 1, 1, "", "EndGenerateBlock"], [138, 0, 0, "-", "ForGenerate"], [139, 0, 0, "-", "IfGenerate"]], "pyVHDLParser.Blocks.Generate.CaseGenerate": [[137, 1, 1, "", "BeginBlock"], [137, 1, 1, "", "CaseBlock"], [137, 1, 1, "", "EndGenerateBlock"]], "pyVHDLParser.Blocks.Generate.CaseGenerate.BeginBlock": [[137, 2, 1, "", "EndToken"], [137, 3, 1, "", "Length"], [137, 2, 1, "", "MultiPart"], [137, 2, 1, "", "NextBlock"], [137, 2, 1, "", "StartToken"], [137, 3, 1, "", "States"], [137, 2, 1, "", "__STATES__"], [137, 4, 1, "", "__init__"], [137, 4, 1, "", "__iter__"], [137, 4, 1, "", "__len__"], [137, 4, 1, "", "__repr__"], [137, 4, 1, "", "__str__"], [137, 2, 1, "", "_previousBlock"], [137, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Generate.CaseGenerate.CaseBlock": [[137, 2, 1, "", "EndToken"], [137, 3, 1, "", "Length"], [137, 2, 1, "", "MultiPart"], [137, 2, 1, "", "NextBlock"], [137, 2, 1, "", "StartToken"], [137, 3, 1, "", "States"], [137, 2, 1, "", "__STATES__"], [137, 4, 1, "", "__init__"], [137, 4, 1, "", "__iter__"], [137, 4, 1, "", "__len__"], [137, 4, 1, "", "__repr__"], [137, 4, 1, "", "__str__"], [137, 2, 1, "", "_previousBlock"], [137, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Generate.CaseGenerate.EndGenerateBlock": [[137, 2, 1, "", "EndToken"], [137, 2, 1, "", "KEYWORD"], [137, 3, 1, "", "Length"], [137, 2, 1, "", "MultiPart"], [137, 2, 1, "", "NextBlock"], [137, 2, 1, "", "StartToken"], [137, 3, 1, "", "States"], [137, 2, 1, "", "__STATES__"], [137, 4, 1, "", "__init__"], [137, 4, 1, "", "__iter__"], [137, 4, 1, "", "__len__"], [137, 4, 1, "", "__repr__"], [137, 4, 1, "", "__str__"], [137, 2, 1, "", "_previousBlock"], [137, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Generate.EndGenerateBlock": [[136, 2, 1, "", "EndToken"], [136, 2, 1, "", "KEYWORD"], [136, 3, 1, "", "Length"], [136, 2, 1, "", "MultiPart"], [136, 2, 1, "", "NextBlock"], [136, 2, 1, "", "StartToken"], [136, 3, 1, "", "States"], [136, 2, 1, "", "__STATES__"], [136, 4, 1, "", "__init__"], [136, 4, 1, "", "__iter__"], [136, 4, 1, "", "__len__"], [136, 4, 1, "", "__repr__"], [136, 4, 1, "", "__str__"], [136, 2, 1, "", "_previousBlock"], [136, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Generate.ForGenerate": [[138, 1, 1, "", "BeginBlock"], [138, 1, 1, "", "EndGenerateBlock"], [138, 1, 1, "", "RangeBlock"]], "pyVHDLParser.Blocks.Generate.ForGenerate.BeginBlock": [[138, 2, 1, "", "EndToken"], [138, 3, 1, "", "Length"], [138, 2, 1, "", "MultiPart"], [138, 2, 1, "", "NextBlock"], [138, 2, 1, "", "StartToken"], [138, 3, 1, "", "States"], [138, 2, 1, "", "__STATES__"], [138, 4, 1, "", "__init__"], [138, 4, 1, "", "__iter__"], [138, 4, 1, "", "__len__"], [138, 4, 1, "", "__repr__"], [138, 4, 1, "", "__str__"], [138, 2, 1, "", "_previousBlock"], [138, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Generate.ForGenerate.EndGenerateBlock": [[138, 2, 1, "", "EndToken"], [138, 2, 1, "", "KEYWORD"], [138, 3, 1, "", "Length"], [138, 2, 1, "", "MultiPart"], [138, 2, 1, "", "NextBlock"], [138, 2, 1, "", "StartToken"], [138, 3, 1, "", "States"], [138, 2, 1, "", "__STATES__"], [138, 4, 1, "", "__init__"], [138, 4, 1, "", "__iter__"], [138, 4, 1, "", "__len__"], [138, 4, 1, "", "__repr__"], [138, 4, 1, "", "__str__"], [138, 2, 1, "", "_previousBlock"], [138, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Generate.ForGenerate.RangeBlock": [[138, 2, 1, "", "EndToken"], [138, 3, 1, "", "Length"], [138, 2, 1, "", "MultiPart"], [138, 2, 1, "", "NextBlock"], [138, 2, 1, "", "StartToken"], [138, 3, 1, "", "States"], [138, 2, 1, "", "__STATES__"], [138, 4, 1, "", "__init__"], [138, 4, 1, "", "__iter__"], [138, 4, 1, "", "__len__"], [138, 4, 1, "", "__repr__"], [138, 4, 1, "", "__str__"], [138, 2, 1, "", "_previousBlock"], [138, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Generate.IfGenerate": [[139, 1, 1, "", "BeginBlock"], [139, 1, 1, "", "ElsIfBeginBlock"], [139, 1, 1, "", "ElsIfConditionBlock"], [139, 1, 1, "", "ElseGenerateBeginBlock"], [139, 1, 1, "", "ElseGenerateBlock"], [139, 1, 1, "", "EndGenerateBlock"], [139, 1, 1, "", "IfConditionBlock"]], "pyVHDLParser.Blocks.Generate.IfGenerate.BeginBlock": [[139, 2, 1, "", "EndToken"], [139, 3, 1, "", "Length"], [139, 2, 1, "", "MultiPart"], [139, 2, 1, "", "NextBlock"], [139, 2, 1, "", "StartToken"], [139, 3, 1, "", "States"], [139, 2, 1, "", "__STATES__"], [139, 4, 1, "", "__init__"], [139, 4, 1, "", "__iter__"], [139, 4, 1, "", "__len__"], [139, 4, 1, "", "__repr__"], [139, 4, 1, "", "__str__"], [139, 2, 1, "", "_previousBlock"], [139, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Generate.IfGenerate.ElsIfBeginBlock": [[139, 2, 1, "", "EndToken"], [139, 3, 1, "", "Length"], [139, 2, 1, "", "MultiPart"], [139, 2, 1, "", "NextBlock"], [139, 2, 1, "", "StartToken"], [139, 3, 1, "", "States"], [139, 2, 1, "", "__STATES__"], [139, 4, 1, "", "__init__"], [139, 4, 1, "", "__iter__"], [139, 4, 1, "", "__len__"], [139, 4, 1, "", "__repr__"], [139, 4, 1, "", "__str__"], [139, 2, 1, "", "_previousBlock"], [139, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Generate.IfGenerate.ElsIfConditionBlock": [[139, 2, 1, "", "EndToken"], [139, 3, 1, "", "Length"], [139, 2, 1, "", "MultiPart"], [139, 2, 1, "", "NextBlock"], [139, 2, 1, "", "StartToken"], [139, 3, 1, "", "States"], [139, 2, 1, "", "__STATES__"], [139, 4, 1, "", "__init__"], [139, 4, 1, "", "__iter__"], [139, 4, 1, "", "__len__"], [139, 4, 1, "", "__repr__"], [139, 4, 1, "", "__str__"], [139, 2, 1, "", "_previousBlock"], [139, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Generate.IfGenerate.ElseGenerateBeginBlock": [[139, 2, 1, "", "EndToken"], [139, 3, 1, "", "Length"], [139, 2, 1, "", "MultiPart"], [139, 2, 1, "", "NextBlock"], [139, 2, 1, "", "StartToken"], [139, 3, 1, "", "States"], [139, 2, 1, "", "__STATES__"], [139, 4, 1, "", "__init__"], [139, 4, 1, "", "__iter__"], [139, 4, 1, "", "__len__"], [139, 4, 1, "", "__repr__"], [139, 4, 1, "", "__str__"], [139, 2, 1, "", "_previousBlock"], [139, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Generate.IfGenerate.ElseGenerateBlock": [[139, 2, 1, "", "EndToken"], [139, 3, 1, "", "Length"], [139, 2, 1, "", "MultiPart"], [139, 2, 1, "", "NextBlock"], [139, 2, 1, "", "StartToken"], [139, 3, 1, "", "States"], [139, 2, 1, "", "__STATES__"], [139, 4, 1, "", "__init__"], [139, 4, 1, "", "__iter__"], [139, 4, 1, "", "__len__"], [139, 4, 1, "", "__repr__"], [139, 4, 1, "", "__str__"], [139, 2, 1, "", "_previousBlock"], [139, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Generate.IfGenerate.EndGenerateBlock": [[139, 2, 1, "", "EndToken"], [139, 2, 1, "", "KEYWORD"], [139, 3, 1, "", "Length"], [139, 2, 1, "", "MultiPart"], [139, 2, 1, "", "NextBlock"], [139, 2, 1, "", "StartToken"], [139, 3, 1, "", "States"], [139, 2, 1, "", "__STATES__"], [139, 4, 1, "", "__init__"], [139, 4, 1, "", "__iter__"], [139, 4, 1, "", "__len__"], [139, 4, 1, "", "__repr__"], [139, 4, 1, "", "__str__"], [139, 2, 1, "", "_previousBlock"], [139, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Generate.IfGenerate.IfConditionBlock": [[139, 2, 1, "", "EndToken"], [139, 3, 1, "", "Length"], [139, 2, 1, "", "MultiPart"], [139, 2, 1, "", "NextBlock"], [139, 2, 1, "", "StartToken"], [139, 3, 1, "", "States"], [139, 2, 1, "", "__STATES__"], [139, 4, 1, "", "__init__"], [139, 4, 1, "", "__iter__"], [139, 4, 1, "", "__len__"], [139, 4, 1, "", "__repr__"], [139, 4, 1, "", "__str__"], [139, 2, 1, "", "_previousBlock"], [139, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Generic": [[140, 1, 1, "", "ConcurrentBeginBlock"], [140, 1, 1, "", "ConcurrentDeclarativeRegion"], [140, 1, 1, "", "DeclarativeRegion"], [140, 1, 1, "", "SequentialBeginBlock"], [140, 1, 1, "", "SequentialDeclarativeRegion"]], "pyVHDLParser.Blocks.Generic.ConcurrentBeginBlock": [[140, 2, 1, "", "EndToken"], [140, 3, 1, "", "Length"], [140, 2, 1, "", "MultiPart"], [140, 2, 1, "", "NextBlock"], [140, 2, 1, "", "StartToken"], [140, 3, 1, "", "States"], [140, 2, 1, "", "__STATES__"], [140, 4, 1, "", "__init__"], [140, 4, 1, "", "__iter__"], [140, 4, 1, "", "__len__"], [140, 4, 1, "", "__repr__"], [140, 4, 1, "", "__str__"], [140, 2, 1, "", "_previousBlock"], [140, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Generic.SequentialBeginBlock": [[140, 2, 1, "", "EndToken"], [140, 3, 1, "", "Length"], [140, 2, 1, "", "MultiPart"], [140, 2, 1, "", "NextBlock"], [140, 2, 1, "", "StartToken"], [140, 3, 1, "", "States"], [140, 2, 1, "", "__STATES__"], [140, 4, 1, "", "__init__"], [140, 4, 1, "", "__iter__"], [140, 4, 1, "", "__len__"], [140, 4, 1, "", "__repr__"], [140, 4, 1, "", "__str__"], [140, 2, 1, "", "_previousBlock"], [140, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Generic1": [[141, 1, 1, "", "BeginBlock"], [141, 1, 1, "", "CloseBlock"], [141, 1, 1, "", "EndBlock"], [141, 1, 1, "", "EndOfStatementBlock"]], "pyVHDLParser.Blocks.Generic1.BeginBlock": [[141, 2, 1, "", "EndToken"], [141, 3, 1, "", "Length"], [141, 2, 1, "", "MultiPart"], [141, 2, 1, "", "NextBlock"], [141, 2, 1, "", "StartToken"], [141, 3, 1, "", "States"], [141, 2, 1, "", "__STATES__"], [141, 4, 1, "", "__init__"], [141, 4, 1, "", "__iter__"], [141, 4, 1, "", "__len__"], [141, 4, 1, "", "__repr__"], [141, 4, 1, "", "__str__"], [141, 2, 1, "", "_previousBlock"], [141, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Generic1.CloseBlock": [[141, 2, 1, "", "EndToken"], [141, 3, 1, "", "Length"], [141, 2, 1, "", "MultiPart"], [141, 2, 1, "", "NextBlock"], [141, 2, 1, "", "StartToken"], [141, 3, 1, "", "States"], [141, 2, 1, "", "__STATES__"], [141, 4, 1, "", "__init__"], [141, 4, 1, "", "__iter__"], [141, 4, 1, "", "__len__"], [141, 4, 1, "", "__repr__"], [141, 4, 1, "", "__str__"], [141, 2, 1, "", "_previousBlock"], [141, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Generic1.EndBlock": [[141, 2, 1, "", "EndToken"], [141, 3, 1, "", "Length"], [141, 2, 1, "", "MultiPart"], [141, 2, 1, "", "NextBlock"], [141, 2, 1, "", "StartToken"], [141, 3, 1, "", "States"], [141, 2, 1, "", "__STATES__"], [141, 4, 1, "", "__init__"], [141, 4, 1, "", "__iter__"], [141, 4, 1, "", "__len__"], [141, 4, 1, "", "__repr__"], [141, 4, 1, "", "__str__"], [141, 2, 1, "", "_previousBlock"], [141, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Generic1.EndOfStatementBlock": [[141, 2, 1, "", "EndToken"], [141, 3, 1, "", "Length"], [141, 2, 1, "", "MultiPart"], [141, 2, 1, "", "NextBlock"], [141, 2, 1, "", "StartToken"], [141, 3, 1, "", "States"], [141, 2, 1, "", "__STATES__"], [141, 4, 1, "", "__init__"], [141, 4, 1, "", "__iter__"], [141, 4, 1, "", "__len__"], [141, 4, 1, "", "__repr__"], [141, 4, 1, "", "__str__"], [141, 2, 1, "", "_previousBlock"], [141, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Instantiation": [[143, 0, 0, "-", "EntityInstantiation"], [144, 0, 0, "-", "FunctionInstantiation"], [145, 0, 0, "-", "PackageInstantiation"], [146, 0, 0, "-", "ProcedureInstantiation"]], "pyVHDLParser.Blocks.Instantiation.EntityInstantiation": [[143, 1, 1, "", "EndBlock"], [143, 1, 1, "", "EntityInstantiationBlock"]], "pyVHDLParser.Blocks.Instantiation.EntityInstantiation.EndBlock": [[143, 2, 1, "", "EndToken"], [143, 3, 1, "", "Length"], [143, 2, 1, "", "MultiPart"], [143, 2, 1, "", "NextBlock"], [143, 2, 1, "", "StartToken"], [143, 3, 1, "", "States"], [143, 2, 1, "", "__STATES__"], [143, 4, 1, "", "__init__"], [143, 4, 1, "", "__iter__"], [143, 4, 1, "", "__len__"], [143, 4, 1, "", "__repr__"], [143, 4, 1, "", "__str__"], [143, 2, 1, "", "_previousBlock"], [143, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Instantiation.EntityInstantiation.EntityInstantiationBlock": [[143, 2, 1, "", "EndToken"], [143, 3, 1, "", "Length"], [143, 2, 1, "", "MultiPart"], [143, 2, 1, "", "NextBlock"], [143, 2, 1, "", "StartToken"], [143, 3, 1, "", "States"], [143, 2, 1, "", "__STATES__"], [143, 4, 1, "", "__init__"], [143, 4, 1, "", "__iter__"], [143, 4, 1, "", "__len__"], [143, 4, 1, "", "__repr__"], [143, 4, 1, "", "__str__"], [143, 2, 1, "", "_previousBlock"], [143, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation": [[144, 1, 1, "", "EndBlock"], [144, 1, 1, "", "EntityInstantiationBlock"], [144, 1, 1, "", "GenericMapBeginBlock"], [144, 1, 1, "", "GenericMapDelimiterBlock"], [144, 1, 1, "", "GenericMapEndBlock"], [144, 1, 1, "", "GenericMapItemBlock"], [144, 1, 1, "", "PortMapBeginBlock"], [144, 1, 1, "", "PortMapDelimiterBlock"], [144, 1, 1, "", "PortMapEndBlock"], [144, 1, 1, "", "PortMapItemBlock"]], "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.EndBlock": [[144, 2, 1, "", "EndToken"], [144, 3, 1, "", "Length"], [144, 2, 1, "", "MultiPart"], [144, 2, 1, "", "NextBlock"], [144, 2, 1, "", "StartToken"], [144, 3, 1, "", "States"], [144, 2, 1, "", "__STATES__"], [144, 4, 1, "", "__init__"], [144, 4, 1, "", "__iter__"], [144, 4, 1, "", "__len__"], [144, 4, 1, "", "__repr__"], [144, 4, 1, "", "__str__"], [144, 2, 1, "", "_previousBlock"], [144, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.EntityInstantiationBlock": [[144, 2, 1, "", "EndToken"], [144, 3, 1, "", "Length"], [144, 2, 1, "", "MultiPart"], [144, 2, 1, "", "NextBlock"], [144, 2, 1, "", "StartToken"], [144, 3, 1, "", "States"], [144, 2, 1, "", "__STATES__"], [144, 4, 1, "", "__init__"], [144, 4, 1, "", "__iter__"], [144, 4, 1, "", "__len__"], [144, 4, 1, "", "__repr__"], [144, 4, 1, "", "__str__"], [144, 2, 1, "", "_previousBlock"], [144, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapBeginBlock": [[144, 2, 1, "", "EndToken"], [144, 3, 1, "", "Length"], [144, 2, 1, "", "MultiPart"], [144, 2, 1, "", "NextBlock"], [144, 2, 1, "", "StartToken"], [144, 3, 1, "", "States"], [144, 2, 1, "", "__STATES__"], [144, 4, 1, "", "__init__"], [144, 4, 1, "", "__iter__"], [144, 4, 1, "", "__len__"], [144, 4, 1, "", "__repr__"], [144, 4, 1, "", "__str__"], [144, 2, 1, "", "_previousBlock"], [144, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapDelimiterBlock": [[144, 2, 1, "", "EndToken"], [144, 3, 1, "", "Length"], [144, 2, 1, "", "MultiPart"], [144, 2, 1, "", "NextBlock"], [144, 2, 1, "", "StartToken"], [144, 3, 1, "", "States"], [144, 2, 1, "", "__STATES__"], [144, 4, 1, "", "__init__"], [144, 4, 1, "", "__iter__"], [144, 4, 1, "", "__len__"], [144, 4, 1, "", "__repr__"], [144, 4, 1, "", "__str__"], [144, 2, 1, "", "_previousBlock"], [144, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapEndBlock": [[144, 2, 1, "", "EndToken"], [144, 3, 1, "", "Length"], [144, 2, 1, "", "MultiPart"], [144, 2, 1, "", "NextBlock"], [144, 2, 1, "", "StartToken"], [144, 3, 1, "", "States"], [144, 2, 1, "", "__STATES__"], [144, 4, 1, "", "__init__"], [144, 4, 1, "", "__iter__"], [144, 4, 1, "", "__len__"], [144, 4, 1, "", "__repr__"], [144, 4, 1, "", "__str__"], [144, 2, 1, "", "_previousBlock"], [144, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapItemBlock": [[144, 2, 1, "", "EndToken"], [144, 3, 1, "", "Length"], [144, 2, 1, "", "MultiPart"], [144, 2, 1, "", "NextBlock"], [144, 2, 1, "", "StartToken"], [144, 3, 1, "", "States"], [144, 2, 1, "", "__STATES__"], [144, 4, 1, "", "__init__"], [144, 4, 1, "", "__iter__"], [144, 4, 1, "", "__len__"], [144, 4, 1, "", "__repr__"], [144, 4, 1, "", "__str__"], [144, 2, 1, "", "_previousBlock"], [144, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapBeginBlock": [[144, 2, 1, "", "EndToken"], [144, 3, 1, "", "Length"], [144, 2, 1, "", "MultiPart"], [144, 2, 1, "", "NextBlock"], [144, 2, 1, "", "StartToken"], [144, 3, 1, "", "States"], [144, 2, 1, "", "__STATES__"], [144, 4, 1, "", "__init__"], [144, 4, 1, "", "__iter__"], [144, 4, 1, "", "__len__"], [144, 4, 1, "", "__repr__"], [144, 4, 1, "", "__str__"], [144, 2, 1, "", "_previousBlock"], [144, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapDelimiterBlock": [[144, 2, 1, "", "EndToken"], [144, 3, 1, "", "Length"], [144, 2, 1, "", "MultiPart"], [144, 2, 1, "", "NextBlock"], [144, 2, 1, "", "StartToken"], [144, 3, 1, "", "States"], [144, 2, 1, "", "__STATES__"], [144, 4, 1, "", "__init__"], [144, 4, 1, "", "__iter__"], [144, 4, 1, "", "__len__"], [144, 4, 1, "", "__repr__"], [144, 4, 1, "", "__str__"], [144, 2, 1, "", "_previousBlock"], [144, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapEndBlock": [[144, 2, 1, "", "EndToken"], [144, 3, 1, "", "Length"], [144, 2, 1, "", "MultiPart"], [144, 2, 1, "", "NextBlock"], [144, 2, 1, "", "StartToken"], [144, 3, 1, "", "States"], [144, 2, 1, "", "__STATES__"], [144, 4, 1, "", "__init__"], [144, 4, 1, "", "__iter__"], [144, 4, 1, "", "__len__"], [144, 4, 1, "", "__repr__"], [144, 4, 1, "", "__str__"], [144, 2, 1, "", "_previousBlock"], [144, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapItemBlock": [[144, 2, 1, "", "EndToken"], [144, 3, 1, "", "Length"], [144, 2, 1, "", "MultiPart"], [144, 2, 1, "", "NextBlock"], [144, 2, 1, "", "StartToken"], [144, 3, 1, "", "States"], [144, 2, 1, "", "__STATES__"], [144, 4, 1, "", "__init__"], [144, 4, 1, "", "__iter__"], [144, 4, 1, "", "__len__"], [144, 4, 1, "", "__repr__"], [144, 4, 1, "", "__str__"], [144, 2, 1, "", "_previousBlock"], [144, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Instantiation.PackageInstantiation": [[145, 1, 1, "", "EndBlock"], [145, 1, 1, "", "EntityInstantiationBlock"], [145, 1, 1, "", "GenericMapBeginBlock"], [145, 1, 1, "", "GenericMapDelimiterBlock"], [145, 1, 1, "", "GenericMapEndBlock"], [145, 1, 1, "", "GenericMapItemBlock"], [145, 1, 1, "", "PortMapBeginBlock"], [145, 1, 1, "", "PortMapDelimiterBlock"], [145, 1, 1, "", "PortMapEndBlock"], [145, 1, 1, "", "PortMapItemBlock"]], "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.EndBlock": [[145, 2, 1, "", "EndToken"], [145, 3, 1, "", "Length"], [145, 2, 1, "", "MultiPart"], [145, 2, 1, "", "NextBlock"], [145, 2, 1, "", "StartToken"], [145, 3, 1, "", "States"], [145, 2, 1, "", "__STATES__"], [145, 4, 1, "", "__init__"], [145, 4, 1, "", "__iter__"], [145, 4, 1, "", "__len__"], [145, 4, 1, "", "__repr__"], [145, 4, 1, "", "__str__"], [145, 2, 1, "", "_previousBlock"], [145, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.EntityInstantiationBlock": [[145, 2, 1, "", "EndToken"], [145, 3, 1, "", "Length"], [145, 2, 1, "", "MultiPart"], [145, 2, 1, "", "NextBlock"], [145, 2, 1, "", "StartToken"], [145, 3, 1, "", "States"], [145, 2, 1, "", "__STATES__"], [145, 4, 1, "", "__init__"], [145, 4, 1, "", "__iter__"], [145, 4, 1, "", "__len__"], [145, 4, 1, "", "__repr__"], [145, 4, 1, "", "__str__"], [145, 2, 1, "", "_previousBlock"], [145, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapBeginBlock": [[145, 2, 1, "", "EndToken"], [145, 3, 1, "", "Length"], [145, 2, 1, "", "MultiPart"], [145, 2, 1, "", "NextBlock"], [145, 2, 1, "", "StartToken"], [145, 3, 1, "", "States"], [145, 2, 1, "", "__STATES__"], [145, 4, 1, "", "__init__"], [145, 4, 1, "", "__iter__"], [145, 4, 1, "", "__len__"], [145, 4, 1, "", "__repr__"], [145, 4, 1, "", "__str__"], [145, 2, 1, "", "_previousBlock"], [145, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapDelimiterBlock": [[145, 2, 1, "", "EndToken"], [145, 3, 1, "", "Length"], [145, 2, 1, "", "MultiPart"], [145, 2, 1, "", "NextBlock"], [145, 2, 1, "", "StartToken"], [145, 3, 1, "", "States"], [145, 2, 1, "", "__STATES__"], [145, 4, 1, "", "__init__"], [145, 4, 1, "", "__iter__"], [145, 4, 1, "", "__len__"], [145, 4, 1, "", "__repr__"], [145, 4, 1, "", "__str__"], [145, 2, 1, "", "_previousBlock"], [145, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapEndBlock": [[145, 2, 1, "", "EndToken"], [145, 3, 1, "", "Length"], [145, 2, 1, "", "MultiPart"], [145, 2, 1, "", "NextBlock"], [145, 2, 1, "", "StartToken"], [145, 3, 1, "", "States"], [145, 2, 1, "", "__STATES__"], [145, 4, 1, "", "__init__"], [145, 4, 1, "", "__iter__"], [145, 4, 1, "", "__len__"], [145, 4, 1, "", "__repr__"], [145, 4, 1, "", "__str__"], [145, 2, 1, "", "_previousBlock"], [145, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapItemBlock": [[145, 2, 1, "", "EndToken"], [145, 3, 1, "", "Length"], [145, 2, 1, "", "MultiPart"], [145, 2, 1, "", "NextBlock"], [145, 2, 1, "", "StartToken"], [145, 3, 1, "", "States"], [145, 2, 1, "", "__STATES__"], [145, 4, 1, "", "__init__"], [145, 4, 1, "", "__iter__"], [145, 4, 1, "", "__len__"], [145, 4, 1, "", "__repr__"], [145, 4, 1, "", "__str__"], [145, 2, 1, "", "_previousBlock"], [145, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapBeginBlock": [[145, 2, 1, "", "EndToken"], [145, 3, 1, "", "Length"], [145, 2, 1, "", "MultiPart"], [145, 2, 1, "", "NextBlock"], [145, 2, 1, "", "StartToken"], [145, 3, 1, "", "States"], [145, 2, 1, "", "__STATES__"], [145, 4, 1, "", "__init__"], [145, 4, 1, "", "__iter__"], [145, 4, 1, "", "__len__"], [145, 4, 1, "", "__repr__"], [145, 4, 1, "", "__str__"], [145, 2, 1, "", "_previousBlock"], [145, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapDelimiterBlock": [[145, 2, 1, "", "EndToken"], [145, 3, 1, "", "Length"], [145, 2, 1, "", "MultiPart"], [145, 2, 1, "", "NextBlock"], [145, 2, 1, "", "StartToken"], [145, 3, 1, "", "States"], [145, 2, 1, "", "__STATES__"], [145, 4, 1, "", "__init__"], [145, 4, 1, "", "__iter__"], [145, 4, 1, "", "__len__"], [145, 4, 1, "", "__repr__"], [145, 4, 1, "", "__str__"], [145, 2, 1, "", "_previousBlock"], [145, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapEndBlock": [[145, 2, 1, "", "EndToken"], [145, 3, 1, "", "Length"], [145, 2, 1, "", "MultiPart"], [145, 2, 1, "", "NextBlock"], [145, 2, 1, "", "StartToken"], [145, 3, 1, "", "States"], [145, 2, 1, "", "__STATES__"], [145, 4, 1, "", "__init__"], [145, 4, 1, "", "__iter__"], [145, 4, 1, "", "__len__"], [145, 4, 1, "", "__repr__"], [145, 4, 1, "", "__str__"], [145, 2, 1, "", "_previousBlock"], [145, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapItemBlock": [[145, 2, 1, "", "EndToken"], [145, 3, 1, "", "Length"], [145, 2, 1, "", "MultiPart"], [145, 2, 1, "", "NextBlock"], [145, 2, 1, "", "StartToken"], [145, 3, 1, "", "States"], [145, 2, 1, "", "__STATES__"], [145, 4, 1, "", "__init__"], [145, 4, 1, "", "__iter__"], [145, 4, 1, "", "__len__"], [145, 4, 1, "", "__repr__"], [145, 4, 1, "", "__str__"], [145, 2, 1, "", "_previousBlock"], [145, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation": [[146, 1, 1, "", "EndBlock"], [146, 1, 1, "", "EntityInstantiationBlock"], [146, 1, 1, "", "GenericMapBeginBlock"], [146, 1, 1, "", "GenericMapDelimiterBlock"], [146, 1, 1, "", "GenericMapEndBlock"], [146, 1, 1, "", "GenericMapItemBlock"], [146, 1, 1, "", "PortMapBeginBlock"], [146, 1, 1, "", "PortMapDelimiterBlock"], [146, 1, 1, "", "PortMapEndBlock"], [146, 1, 1, "", "PortMapItemBlock"]], "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.EndBlock": [[146, 2, 1, "", "EndToken"], [146, 3, 1, "", "Length"], [146, 2, 1, "", "MultiPart"], [146, 2, 1, "", "NextBlock"], [146, 2, 1, "", "StartToken"], [146, 3, 1, "", "States"], [146, 2, 1, "", "__STATES__"], [146, 4, 1, "", "__init__"], [146, 4, 1, "", "__iter__"], [146, 4, 1, "", "__len__"], [146, 4, 1, "", "__repr__"], [146, 4, 1, "", "__str__"], [146, 2, 1, "", "_previousBlock"], [146, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.EntityInstantiationBlock": [[146, 2, 1, "", "EndToken"], [146, 3, 1, "", "Length"], [146, 2, 1, "", "MultiPart"], [146, 2, 1, "", "NextBlock"], [146, 2, 1, "", "StartToken"], [146, 3, 1, "", "States"], [146, 2, 1, "", "__STATES__"], [146, 4, 1, "", "__init__"], [146, 4, 1, "", "__iter__"], [146, 4, 1, "", "__len__"], [146, 4, 1, "", "__repr__"], [146, 4, 1, "", "__str__"], [146, 2, 1, "", "_previousBlock"], [146, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapBeginBlock": [[146, 2, 1, "", "EndToken"], [146, 3, 1, "", "Length"], [146, 2, 1, "", "MultiPart"], [146, 2, 1, "", "NextBlock"], [146, 2, 1, "", "StartToken"], [146, 3, 1, "", "States"], [146, 2, 1, "", "__STATES__"], [146, 4, 1, "", "__init__"], [146, 4, 1, "", "__iter__"], [146, 4, 1, "", "__len__"], [146, 4, 1, "", "__repr__"], [146, 4, 1, "", "__str__"], [146, 2, 1, "", "_previousBlock"], [146, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapDelimiterBlock": [[146, 2, 1, "", "EndToken"], [146, 3, 1, "", "Length"], [146, 2, 1, "", "MultiPart"], [146, 2, 1, "", "NextBlock"], [146, 2, 1, "", "StartToken"], [146, 3, 1, "", "States"], [146, 2, 1, "", "__STATES__"], [146, 4, 1, "", "__init__"], [146, 4, 1, "", "__iter__"], [146, 4, 1, "", "__len__"], [146, 4, 1, "", "__repr__"], [146, 4, 1, "", "__str__"], [146, 2, 1, "", "_previousBlock"], [146, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapEndBlock": [[146, 2, 1, "", "EndToken"], [146, 3, 1, "", "Length"], [146, 2, 1, "", "MultiPart"], [146, 2, 1, "", "NextBlock"], [146, 2, 1, "", "StartToken"], [146, 3, 1, "", "States"], [146, 2, 1, "", "__STATES__"], [146, 4, 1, "", "__init__"], [146, 4, 1, "", "__iter__"], [146, 4, 1, "", "__len__"], [146, 4, 1, "", "__repr__"], [146, 4, 1, "", "__str__"], [146, 2, 1, "", "_previousBlock"], [146, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapItemBlock": [[146, 2, 1, "", "EndToken"], [146, 3, 1, "", "Length"], [146, 2, 1, "", "MultiPart"], [146, 2, 1, "", "NextBlock"], [146, 2, 1, "", "StartToken"], [146, 3, 1, "", "States"], [146, 2, 1, "", "__STATES__"], [146, 4, 1, "", "__init__"], [146, 4, 1, "", "__iter__"], [146, 4, 1, "", "__len__"], [146, 4, 1, "", "__repr__"], [146, 4, 1, "", "__str__"], [146, 2, 1, "", "_previousBlock"], [146, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapBeginBlock": [[146, 2, 1, "", "EndToken"], [146, 3, 1, "", "Length"], [146, 2, 1, "", "MultiPart"], [146, 2, 1, "", "NextBlock"], [146, 2, 1, "", "StartToken"], [146, 3, 1, "", "States"], [146, 2, 1, "", "__STATES__"], [146, 4, 1, "", "__init__"], [146, 4, 1, "", "__iter__"], [146, 4, 1, "", "__len__"], [146, 4, 1, "", "__repr__"], [146, 4, 1, "", "__str__"], [146, 2, 1, "", "_previousBlock"], [146, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapDelimiterBlock": [[146, 2, 1, "", "EndToken"], [146, 3, 1, "", "Length"], [146, 2, 1, "", "MultiPart"], [146, 2, 1, "", "NextBlock"], [146, 2, 1, "", "StartToken"], [146, 3, 1, "", "States"], [146, 2, 1, "", "__STATES__"], [146, 4, 1, "", "__init__"], [146, 4, 1, "", "__iter__"], [146, 4, 1, "", "__len__"], [146, 4, 1, "", "__repr__"], [146, 4, 1, "", "__str__"], [146, 2, 1, "", "_previousBlock"], [146, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapEndBlock": [[146, 2, 1, "", "EndToken"], [146, 3, 1, "", "Length"], [146, 2, 1, "", "MultiPart"], [146, 2, 1, "", "NextBlock"], [146, 2, 1, "", "StartToken"], [146, 3, 1, "", "States"], [146, 2, 1, "", "__STATES__"], [146, 4, 1, "", "__init__"], [146, 4, 1, "", "__iter__"], [146, 4, 1, "", "__len__"], [146, 4, 1, "", "__repr__"], [146, 4, 1, "", "__str__"], [146, 2, 1, "", "_previousBlock"], [146, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapItemBlock": [[146, 2, 1, "", "EndToken"], [146, 3, 1, "", "Length"], [146, 2, 1, "", "MultiPart"], [146, 2, 1, "", "NextBlock"], [146, 2, 1, "", "StartToken"], [146, 3, 1, "", "States"], [146, 2, 1, "", "__STATES__"], [146, 4, 1, "", "__init__"], [146, 4, 1, "", "__iter__"], [146, 4, 1, "", "__len__"], [146, 4, 1, "", "__repr__"], [146, 4, 1, "", "__str__"], [146, 2, 1, "", "_previousBlock"], [146, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.InterfaceObject": [[147, 1, 1, "", "InterfaceConstantBlock"], [147, 1, 1, "", "InterfaceObjectBlock"], [147, 1, 1, "", "InterfaceSignalBlock"], [147, 1, 1, "", "InterfaceTypeBlock"], [147, 1, 1, "", "InterfaceVariableBlock"]], "pyVHDLParser.Blocks.InterfaceObject.InterfaceConstantBlock": [[147, 2, 1, "", "EndToken"], [147, 3, 1, "", "Length"], [147, 2, 1, "", "MultiPart"], [147, 2, 1, "", "NextBlock"], [147, 2, 1, "", "StartToken"], [147, 3, 1, "", "States"], [147, 2, 1, "", "__STATES__"], [147, 4, 1, "", "__init__"], [147, 4, 1, "", "__iter__"], [147, 4, 1, "", "__len__"], [147, 4, 1, "", "__repr__"], [147, 4, 1, "", "__str__"], [147, 2, 1, "", "_previousBlock"], [147, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.InterfaceObject.InterfaceObjectBlock": [[147, 2, 1, "", "EndToken"], [147, 3, 1, "", "Length"], [147, 2, 1, "", "MultiPart"], [147, 2, 1, "", "NextBlock"], [147, 2, 1, "", "StartToken"], [147, 3, 1, "", "States"], [147, 2, 1, "", "__STATES__"], [147, 4, 1, "", "__init__"], [147, 4, 1, "", "__iter__"], [147, 4, 1, "", "__len__"], [147, 4, 1, "", "__repr__"], [147, 4, 1, "", "__str__"], [147, 2, 1, "", "_previousBlock"], [147, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.InterfaceObject.InterfaceSignalBlock": [[147, 2, 1, "", "EndToken"], [147, 3, 1, "", "Length"], [147, 2, 1, "", "MultiPart"], [147, 2, 1, "", "NextBlock"], [147, 2, 1, "", "StartToken"], [147, 3, 1, "", "States"], [147, 2, 1, "", "__STATES__"], [147, 4, 1, "", "__init__"], [147, 4, 1, "", "__iter__"], [147, 4, 1, "", "__len__"], [147, 4, 1, "", "__repr__"], [147, 4, 1, "", "__str__"], [147, 2, 1, "", "_previousBlock"], [147, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.InterfaceObject.InterfaceTypeBlock": [[147, 2, 1, "", "EndToken"], [147, 3, 1, "", "Length"], [147, 2, 1, "", "MultiPart"], [147, 2, 1, "", "NextBlock"], [147, 2, 1, "", "StartToken"], [147, 3, 1, "", "States"], [147, 2, 1, "", "__STATES__"], [147, 4, 1, "", "__init__"], [147, 4, 1, "", "__iter__"], [147, 4, 1, "", "__len__"], [147, 4, 1, "", "__repr__"], [147, 4, 1, "", "__str__"], [147, 2, 1, "", "_previousBlock"], [147, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.InterfaceObject.InterfaceVariableBlock": [[147, 2, 1, "", "EndToken"], [147, 3, 1, "", "Length"], [147, 2, 1, "", "MultiPart"], [147, 2, 1, "", "NextBlock"], [147, 2, 1, "", "StartToken"], [147, 3, 1, "", "States"], [147, 2, 1, "", "__STATES__"], [147, 4, 1, "", "__init__"], [147, 4, 1, "", "__iter__"], [147, 4, 1, "", "__len__"], [147, 4, 1, "", "__repr__"], [147, 4, 1, "", "__str__"], [147, 2, 1, "", "_previousBlock"], [147, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.List": [[149, 0, 0, "-", "GenericList"], [150, 0, 0, "-", "GenericMapList"], [151, 0, 0, "-", "ParameterList"], [152, 0, 0, "-", "PortList"], [153, 0, 0, "-", "PortMapList"], [154, 0, 0, "-", "SensitivityList"]], "pyVHDLParser.Blocks.List.GenericList": [[149, 1, 1, "", "CloseBlock"], [149, 1, 1, "", "DefaultValueExpressionBlock"], [149, 1, 1, "", "DelimiterBlock"], [149, 1, 1, "", "GenericListInterfaceConstantBlock"], [149, 1, 1, "", "GenericListInterfaceTypeBlock"], [149, 1, 1, "", "OpenBlock"]], "pyVHDLParser.Blocks.List.GenericList.CloseBlock": [[149, 2, 1, "", "EndToken"], [149, 3, 1, "", "Length"], [149, 2, 1, "", "MultiPart"], [149, 2, 1, "", "NextBlock"], [149, 2, 1, "", "StartToken"], [149, 3, 1, "", "States"], [149, 2, 1, "", "__STATES__"], [149, 4, 1, "", "__init__"], [149, 4, 1, "", "__iter__"], [149, 4, 1, "", "__len__"], [149, 4, 1, "", "__repr__"], [149, 4, 1, "", "__str__"], [149, 2, 1, "", "_previousBlock"], [149, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.List.GenericList.DefaultValueExpressionBlock": [[149, 2, 1, "", "EXIT_BLOCK"], [149, 2, 1, "", "EXIT_TOKEN"], [149, 2, 1, "", "EndToken"], [149, 3, 1, "", "Length"], [149, 2, 1, "", "MultiPart"], [149, 2, 1, "", "NextBlock"], [149, 2, 1, "", "StartToken"], [149, 3, 1, "", "States"], [149, 2, 1, "", "__STATES__"], [149, 4, 1, "", "__init__"], [149, 4, 1, "", "__iter__"], [149, 4, 1, "", "__len__"], [149, 4, 1, "", "__repr__"], [149, 4, 1, "", "__str__"], [149, 2, 1, "", "_previousBlock"], [149, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.List.GenericList.DelimiterBlock": [[149, 2, 1, "", "EndToken"], [149, 3, 1, "", "Length"], [149, 2, 1, "", "MultiPart"], [149, 2, 1, "", "NextBlock"], [149, 2, 1, "", "StartToken"], [149, 3, 1, "", "States"], [149, 2, 1, "", "__STATES__"], [149, 4, 1, "", "__init__"], [149, 4, 1, "", "__iter__"], [149, 4, 1, "", "__len__"], [149, 4, 1, "", "__repr__"], [149, 4, 1, "", "__str__"], [149, 2, 1, "", "_previousBlock"], [149, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.List.GenericList.GenericListInterfaceConstantBlock": [[149, 2, 1, "", "DELIMITER_BLOCK"], [149, 2, 1, "", "EXPRESSION"], [149, 2, 1, "", "EndToken"], [149, 3, 1, "", "Length"], [149, 2, 1, "", "MultiPart"], [149, 2, 1, "", "NextBlock"], [149, 2, 1, "", "StartToken"], [149, 3, 1, "", "States"], [149, 2, 1, "", "__STATES__"], [149, 4, 1, "", "__init__"], [149, 4, 1, "", "__iter__"], [149, 4, 1, "", "__len__"], [149, 4, 1, "", "__repr__"], [149, 4, 1, "", "__str__"], [149, 2, 1, "", "_previousBlock"], [149, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.List.GenericList.GenericListInterfaceTypeBlock": [[149, 2, 1, "", "DELIMITER_BLOCK"], [149, 2, 1, "", "EndToken"], [149, 3, 1, "", "Length"], [149, 2, 1, "", "MultiPart"], [149, 2, 1, "", "NextBlock"], [149, 2, 1, "", "StartToken"], [149, 3, 1, "", "States"], [149, 2, 1, "", "__STATES__"], [149, 4, 1, "", "__init__"], [149, 4, 1, "", "__iter__"], [149, 4, 1, "", "__len__"], [149, 4, 1, "", "__repr__"], [149, 4, 1, "", "__str__"], [149, 2, 1, "", "_previousBlock"], [149, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.List.GenericList.OpenBlock": [[149, 2, 1, "", "EndToken"], [149, 3, 1, "", "Length"], [149, 2, 1, "", "MultiPart"], [149, 2, 1, "", "NextBlock"], [149, 2, 1, "", "StartToken"], [149, 3, 1, "", "States"], [149, 2, 1, "", "__STATES__"], [149, 4, 1, "", "__init__"], [149, 4, 1, "", "__iter__"], [149, 4, 1, "", "__len__"], [149, 4, 1, "", "__repr__"], [149, 4, 1, "", "__str__"], [149, 2, 1, "", "_previousBlock"], [149, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.List.GenericMapList": [[150, 1, 1, "", "CloseBlock"], [150, 1, 1, "", "DelimiterBlock"], [150, 1, 1, "", "ItemBlock"], [150, 1, 1, "", "OpenBlock"]], "pyVHDLParser.Blocks.List.GenericMapList.CloseBlock": [[150, 2, 1, "", "EndToken"], [150, 3, 1, "", "Length"], [150, 2, 1, "", "MultiPart"], [150, 2, 1, "", "NextBlock"], [150, 2, 1, "", "StartToken"], [150, 3, 1, "", "States"], [150, 2, 1, "", "__STATES__"], [150, 4, 1, "", "__init__"], [150, 4, 1, "", "__iter__"], [150, 4, 1, "", "__len__"], [150, 4, 1, "", "__repr__"], [150, 4, 1, "", "__str__"], [150, 2, 1, "", "_previousBlock"], [150, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.List.GenericMapList.DelimiterBlock": [[150, 2, 1, "", "EndToken"], [150, 3, 1, "", "Length"], [150, 2, 1, "", "MultiPart"], [150, 2, 1, "", "NextBlock"], [150, 2, 1, "", "StartToken"], [150, 3, 1, "", "States"], [150, 2, 1, "", "__STATES__"], [150, 4, 1, "", "__init__"], [150, 4, 1, "", "__iter__"], [150, 4, 1, "", "__len__"], [150, 4, 1, "", "__repr__"], [150, 4, 1, "", "__str__"], [150, 2, 1, "", "_previousBlock"], [150, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.List.GenericMapList.ItemBlock": [[150, 2, 1, "", "EndToken"], [150, 3, 1, "", "Length"], [150, 2, 1, "", "MultiPart"], [150, 2, 1, "", "NextBlock"], [150, 2, 1, "", "StartToken"], [150, 3, 1, "", "States"], [150, 2, 1, "", "__STATES__"], [150, 4, 1, "", "__init__"], [150, 4, 1, "", "__iter__"], [150, 4, 1, "", "__len__"], [150, 4, 1, "", "__repr__"], [150, 4, 1, "", "__str__"], [150, 2, 1, "", "_previousBlock"], [150, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.List.GenericMapList.OpenBlock": [[150, 2, 1, "", "EndToken"], [150, 3, 1, "", "Length"], [150, 2, 1, "", "MultiPart"], [150, 2, 1, "", "NextBlock"], [150, 2, 1, "", "StartToken"], [150, 3, 1, "", "States"], [150, 2, 1, "", "__STATES__"], [150, 4, 1, "", "__init__"], [150, 4, 1, "", "__iter__"], [150, 4, 1, "", "__len__"], [150, 4, 1, "", "__repr__"], [150, 4, 1, "", "__str__"], [150, 2, 1, "", "_previousBlock"], [150, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.List.ParameterList": [[151, 1, 1, "", "CloseBlock"], [151, 1, 1, "", "DelimiterBlock"], [151, 1, 1, "", "ItemBlock"], [151, 1, 1, "", "OpenBlock"], [151, 1, 1, "", "ParameterListInterfaceConstantBlock"], [151, 1, 1, "", "ParameterListInterfaceSignalBlock"], [151, 1, 1, "", "ParameterListInterfaceVariableBlock"]], "pyVHDLParser.Blocks.List.ParameterList.CloseBlock": [[151, 2, 1, "", "EndToken"], [151, 3, 1, "", "Length"], [151, 2, 1, "", "MultiPart"], [151, 2, 1, "", "NextBlock"], [151, 2, 1, "", "StartToken"], [151, 3, 1, "", "States"], [151, 2, 1, "", "__STATES__"], [151, 4, 1, "", "__init__"], [151, 4, 1, "", "__iter__"], [151, 4, 1, "", "__len__"], [151, 4, 1, "", "__repr__"], [151, 4, 1, "", "__str__"], [151, 2, 1, "", "_previousBlock"], [151, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.List.ParameterList.DelimiterBlock": [[151, 2, 1, "", "EndToken"], [151, 3, 1, "", "Length"], [151, 2, 1, "", "MultiPart"], [151, 2, 1, "", "NextBlock"], [151, 2, 1, "", "StartToken"], [151, 3, 1, "", "States"], [151, 2, 1, "", "__STATES__"], [151, 4, 1, "", "__init__"], [151, 4, 1, "", "__iter__"], [151, 4, 1, "", "__len__"], [151, 4, 1, "", "__repr__"], [151, 4, 1, "", "__str__"], [151, 2, 1, "", "_previousBlock"], [151, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.List.ParameterList.ItemBlock": [[151, 2, 1, "", "EndToken"], [151, 3, 1, "", "Length"], [151, 2, 1, "", "MultiPart"], [151, 2, 1, "", "NextBlock"], [151, 2, 1, "", "StartToken"], [151, 3, 1, "", "States"], [151, 2, 1, "", "__STATES__"], [151, 4, 1, "", "__init__"], [151, 4, 1, "", "__iter__"], [151, 4, 1, "", "__len__"], [151, 4, 1, "", "__repr__"], [151, 4, 1, "", "__str__"], [151, 2, 1, "", "_previousBlock"], [151, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.List.ParameterList.OpenBlock": [[151, 2, 1, "", "EndToken"], [151, 3, 1, "", "Length"], [151, 2, 1, "", "MultiPart"], [151, 2, 1, "", "NextBlock"], [151, 2, 1, "", "StartToken"], [151, 3, 1, "", "States"], [151, 2, 1, "", "__STATES__"], [151, 4, 1, "", "__init__"], [151, 4, 1, "", "__iter__"], [151, 4, 1, "", "__len__"], [151, 4, 1, "", "__repr__"], [151, 4, 1, "", "__str__"], [151, 2, 1, "", "_previousBlock"], [151, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceConstantBlock": [[151, 2, 1, "", "DELIMITER_BLOCK"], [151, 2, 1, "", "EndToken"], [151, 3, 1, "", "Length"], [151, 2, 1, "", "MultiPart"], [151, 2, 1, "", "NextBlock"], [151, 2, 1, "", "StartToken"], [151, 3, 1, "", "States"], [151, 2, 1, "", "__STATES__"], [151, 4, 1, "", "__init__"], [151, 4, 1, "", "__iter__"], [151, 4, 1, "", "__len__"], [151, 4, 1, "", "__repr__"], [151, 4, 1, "", "__str__"], [151, 2, 1, "", "_previousBlock"], [151, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceSignalBlock": [[151, 2, 1, "", "DELIMITER_BLOCK"], [151, 2, 1, "", "EndToken"], [151, 3, 1, "", "Length"], [151, 2, 1, "", "MultiPart"], [151, 2, 1, "", "NextBlock"], [151, 2, 1, "", "StartToken"], [151, 3, 1, "", "States"], [151, 2, 1, "", "__STATES__"], [151, 4, 1, "", "__init__"], [151, 4, 1, "", "__iter__"], [151, 4, 1, "", "__len__"], [151, 4, 1, "", "__repr__"], [151, 4, 1, "", "__str__"], [151, 2, 1, "", "_previousBlock"], [151, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceVariableBlock": [[151, 2, 1, "", "DELIMITER_BLOCK"], [151, 2, 1, "", "EndToken"], [151, 3, 1, "", "Length"], [151, 2, 1, "", "MultiPart"], [151, 2, 1, "", "NextBlock"], [151, 2, 1, "", "StartToken"], [151, 3, 1, "", "States"], [151, 2, 1, "", "__STATES__"], [151, 4, 1, "", "__init__"], [151, 4, 1, "", "__iter__"], [151, 4, 1, "", "__len__"], [151, 4, 1, "", "__repr__"], [151, 4, 1, "", "__str__"], [151, 2, 1, "", "_previousBlock"], [151, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.List.PortList": [[152, 1, 1, "", "CloseBlock"], [152, 1, 1, "", "DefaultValueExpressionBlock"], [152, 1, 1, "", "DelimiterBlock"], [152, 1, 1, "", "OpenBlock"], [152, 1, 1, "", "PortListInterfaceSignalBlock"]], "pyVHDLParser.Blocks.List.PortList.CloseBlock": [[152, 2, 1, "", "EndToken"], [152, 3, 1, "", "Length"], [152, 2, 1, "", "MultiPart"], [152, 2, 1, "", "NextBlock"], [152, 2, 1, "", "StartToken"], [152, 3, 1, "", "States"], [152, 2, 1, "", "__STATES__"], [152, 4, 1, "", "__init__"], [152, 4, 1, "", "__iter__"], [152, 4, 1, "", "__len__"], [152, 4, 1, "", "__repr__"], [152, 4, 1, "", "__str__"], [152, 2, 1, "", "_previousBlock"], [152, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.List.PortList.DefaultValueExpressionBlock": [[152, 2, 1, "", "EXIT_BLOCK"], [152, 2, 1, "", "EXIT_TOKEN"], [152, 2, 1, "", "EndToken"], [152, 3, 1, "", "Length"], [152, 2, 1, "", "MultiPart"], [152, 2, 1, "", "NextBlock"], [152, 2, 1, "", "StartToken"], [152, 3, 1, "", "States"], [152, 2, 1, "", "__STATES__"], [152, 4, 1, "", "__init__"], [152, 4, 1, "", "__iter__"], [152, 4, 1, "", "__len__"], [152, 4, 1, "", "__repr__"], [152, 4, 1, "", "__str__"], [152, 2, 1, "", "_previousBlock"], [152, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.List.PortList.DelimiterBlock": [[152, 2, 1, "", "EndToken"], [152, 3, 1, "", "Length"], [152, 2, 1, "", "MultiPart"], [152, 2, 1, "", "NextBlock"], [152, 2, 1, "", "StartToken"], [152, 3, 1, "", "States"], [152, 2, 1, "", "__STATES__"], [152, 4, 1, "", "__init__"], [152, 4, 1, "", "__iter__"], [152, 4, 1, "", "__len__"], [152, 4, 1, "", "__repr__"], [152, 4, 1, "", "__str__"], [152, 2, 1, "", "_previousBlock"], [152, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.List.PortList.OpenBlock": [[152, 2, 1, "", "EndToken"], [152, 3, 1, "", "Length"], [152, 2, 1, "", "MultiPart"], [152, 2, 1, "", "NextBlock"], [152, 2, 1, "", "StartToken"], [152, 3, 1, "", "States"], [152, 2, 1, "", "__STATES__"], [152, 4, 1, "", "__init__"], [152, 4, 1, "", "__iter__"], [152, 4, 1, "", "__len__"], [152, 4, 1, "", "__repr__"], [152, 4, 1, "", "__str__"], [152, 2, 1, "", "_previousBlock"], [152, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.List.PortList.PortListInterfaceSignalBlock": [[152, 2, 1, "", "DELIMITER_BLOCK"], [152, 2, 1, "", "EXPRESSION"], [152, 2, 1, "", "EndToken"], [152, 3, 1, "", "Length"], [152, 2, 1, "", "MultiPart"], [152, 2, 1, "", "NextBlock"], [152, 2, 1, "", "StartToken"], [152, 3, 1, "", "States"], [152, 2, 1, "", "__STATES__"], [152, 4, 1, "", "__init__"], [152, 4, 1, "", "__iter__"], [152, 4, 1, "", "__len__"], [152, 4, 1, "", "__repr__"], [152, 4, 1, "", "__str__"], [152, 2, 1, "", "_previousBlock"], [152, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.List.PortMapList": [[153, 1, 1, "", "CloseBlock"], [153, 1, 1, "", "DelimiterBlock"], [153, 1, 1, "", "ItemBlock"], [153, 1, 1, "", "OpenBlock"]], "pyVHDLParser.Blocks.List.PortMapList.CloseBlock": [[153, 2, 1, "", "EndToken"], [153, 3, 1, "", "Length"], [153, 2, 1, "", "MultiPart"], [153, 2, 1, "", "NextBlock"], [153, 2, 1, "", "StartToken"], [153, 3, 1, "", "States"], [153, 2, 1, "", "__STATES__"], [153, 4, 1, "", "__init__"], [153, 4, 1, "", "__iter__"], [153, 4, 1, "", "__len__"], [153, 4, 1, "", "__repr__"], [153, 4, 1, "", "__str__"], [153, 2, 1, "", "_previousBlock"], [153, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.List.PortMapList.DelimiterBlock": [[153, 2, 1, "", "EndToken"], [153, 3, 1, "", "Length"], [153, 2, 1, "", "MultiPart"], [153, 2, 1, "", "NextBlock"], [153, 2, 1, "", "StartToken"], [153, 3, 1, "", "States"], [153, 2, 1, "", "__STATES__"], [153, 4, 1, "", "__init__"], [153, 4, 1, "", "__iter__"], [153, 4, 1, "", "__len__"], [153, 4, 1, "", "__repr__"], [153, 4, 1, "", "__str__"], [153, 2, 1, "", "_previousBlock"], [153, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.List.PortMapList.ItemBlock": [[153, 2, 1, "", "EndToken"], [153, 3, 1, "", "Length"], [153, 2, 1, "", "MultiPart"], [153, 2, 1, "", "NextBlock"], [153, 2, 1, "", "StartToken"], [153, 3, 1, "", "States"], [153, 2, 1, "", "__STATES__"], [153, 4, 1, "", "__init__"], [153, 4, 1, "", "__iter__"], [153, 4, 1, "", "__len__"], [153, 4, 1, "", "__repr__"], [153, 4, 1, "", "__str__"], [153, 2, 1, "", "_previousBlock"], [153, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.List.PortMapList.OpenBlock": [[153, 2, 1, "", "EndToken"], [153, 3, 1, "", "Length"], [153, 2, 1, "", "MultiPart"], [153, 2, 1, "", "NextBlock"], [153, 2, 1, "", "StartToken"], [153, 3, 1, "", "States"], [153, 2, 1, "", "__STATES__"], [153, 4, 1, "", "__init__"], [153, 4, 1, "", "__iter__"], [153, 4, 1, "", "__len__"], [153, 4, 1, "", "__repr__"], [153, 4, 1, "", "__str__"], [153, 2, 1, "", "_previousBlock"], [153, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.List.SensitivityList": [[154, 1, 1, "", "CloseBlock"], [154, 1, 1, "", "DelimiterBlock"], [154, 1, 1, "", "ItemBlock"], [154, 1, 1, "", "OpenBlock"]], "pyVHDLParser.Blocks.List.SensitivityList.CloseBlock": [[154, 2, 1, "", "EndToken"], [154, 3, 1, "", "Length"], [154, 2, 1, "", "MultiPart"], [154, 2, 1, "", "NextBlock"], [154, 2, 1, "", "StartToken"], [154, 3, 1, "", "States"], [154, 2, 1, "", "__STATES__"], [154, 4, 1, "", "__init__"], [154, 4, 1, "", "__iter__"], [154, 4, 1, "", "__len__"], [154, 4, 1, "", "__repr__"], [154, 4, 1, "", "__str__"], [154, 2, 1, "", "_previousBlock"], [154, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.List.SensitivityList.DelimiterBlock": [[154, 2, 1, "", "EndToken"], [154, 3, 1, "", "Length"], [154, 2, 1, "", "MultiPart"], [154, 2, 1, "", "NextBlock"], [154, 2, 1, "", "StartToken"], [154, 3, 1, "", "States"], [154, 2, 1, "", "__STATES__"], [154, 4, 1, "", "__init__"], [154, 4, 1, "", "__iter__"], [154, 4, 1, "", "__len__"], [154, 4, 1, "", "__repr__"], [154, 4, 1, "", "__str__"], [154, 2, 1, "", "_previousBlock"], [154, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.List.SensitivityList.ItemBlock": [[154, 2, 1, "", "EndToken"], [154, 3, 1, "", "Length"], [154, 2, 1, "", "MultiPart"], [154, 2, 1, "", "NextBlock"], [154, 2, 1, "", "StartToken"], [154, 3, 1, "", "States"], [154, 2, 1, "", "__STATES__"], [154, 4, 1, "", "__init__"], [154, 4, 1, "", "__iter__"], [154, 4, 1, "", "__len__"], [154, 4, 1, "", "__repr__"], [154, 4, 1, "", "__str__"], [154, 2, 1, "", "_previousBlock"], [154, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.List.SensitivityList.OpenBlock": [[154, 2, 1, "", "EndToken"], [154, 3, 1, "", "Length"], [154, 2, 1, "", "MultiPart"], [154, 2, 1, "", "NextBlock"], [154, 2, 1, "", "StartToken"], [154, 3, 1, "", "States"], [154, 2, 1, "", "__STATES__"], [154, 4, 1, "", "__init__"], [154, 4, 1, "", "__iter__"], [154, 4, 1, "", "__len__"], [154, 4, 1, "", "__repr__"], [154, 4, 1, "", "__str__"], [154, 2, 1, "", "_previousBlock"], [154, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.MetaBlock": [[116, 2, 1, "", "BLOCKS"], [116, 2, 1, "", "__base__"], [116, 4, 1, "", "__call__"], [116, 4, 1, "", "__delattr__"], [116, 4, 1, "", "__dir__"], [116, 4, 1, "", "__getattribute__"], [116, 4, 1, "", "__init__"], [116, 4, 1, "", "__instancecheck__"], [116, 4, 1, "", "__new__"], [116, 4, 1, "", "__or__"], [116, 4, 1, "", "__prepare__"], [116, 4, 1, "", "__repr__"], [116, 4, 1, "", "__ror__"], [116, 4, 1, "", "__setattr__"], [116, 4, 1, "", "__sizeof__"], [116, 4, 1, "", "__subclasscheck__"], [116, 4, 1, "", "__subclasses__"], [116, 2, 1, "", "__text_signature__"], [116, 4, 1, "", "_checkForAbstractMethods"], [116, 4, 1, "", "_wrapNewMethodIfAbstract"], [116, 4, 1, "", "_wrapNewMethodIfSingleton"], [116, 4, 1, "", "mro"]], "pyVHDLParser.Blocks.Object": [[156, 0, 0, "-", "Constant"], [157, 0, 0, "-", "File"], [155, 1, 1, "", "ObjectDeclarationBlock"], [155, 1, 1, "", "ObjectDeclarationEndMarkerBlock"], [158, 0, 0, "-", "SharedVariable"], [159, 0, 0, "-", "Signal"], [160, 0, 0, "-", "Variable"]], "pyVHDLParser.Blocks.Object.Constant": [[156, 1, 1, "", "ConstantDeclarationBlock"], [156, 1, 1, "", "ConstantDeclarationDefaultExpressionBlock"], [156, 1, 1, "", "ConstantDeclarationEndMarkerBlock"]], "pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationBlock": [[156, 2, 1, "", "END_BLOCK"], [156, 2, 1, "", "EXPRESSION_BLOCK"], [156, 2, 1, "", "EndToken"], [156, 3, 1, "", "Length"], [156, 2, 1, "", "MultiPart"], [156, 2, 1, "", "NextBlock"], [156, 2, 1, "", "StartToken"], [156, 3, 1, "", "States"], [156, 2, 1, "", "__STATES__"], [156, 4, 1, "", "__init__"], [156, 4, 1, "", "__iter__"], [156, 4, 1, "", "__len__"], [156, 4, 1, "", "__repr__"], [156, 4, 1, "", "__str__"], [156, 2, 1, "", "_previousBlock"], [156, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationDefaultExpressionBlock": [[156, 2, 1, "", "END_BLOCK"], [156, 2, 1, "", "EndToken"], [156, 3, 1, "", "Length"], [156, 2, 1, "", "MultiPart"], [156, 2, 1, "", "NextBlock"], [156, 2, 1, "", "StartToken"], [156, 3, 1, "", "States"], [156, 2, 1, "", "__STATES__"], [156, 4, 1, "", "__init__"], [156, 4, 1, "", "__iter__"], [156, 4, 1, "", "__len__"], [156, 4, 1, "", "__repr__"], [156, 4, 1, "", "__str__"], [156, 2, 1, "", "_previousBlock"], [156, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationEndMarkerBlock": [[156, 2, 1, "", "EndToken"], [156, 3, 1, "", "Length"], [156, 2, 1, "", "MultiPart"], [156, 2, 1, "", "NextBlock"], [156, 2, 1, "", "StartToken"], [156, 3, 1, "", "States"], [156, 2, 1, "", "__STATES__"], [156, 4, 1, "", "__init__"], [156, 4, 1, "", "__iter__"], [156, 4, 1, "", "__len__"], [156, 4, 1, "", "__repr__"], [156, 4, 1, "", "__str__"], [156, 2, 1, "", "_previousBlock"], [156, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Object.ObjectDeclarationBlock": [[155, 2, 1, "", "EndToken"], [155, 3, 1, "", "Length"], [155, 2, 1, "", "MultiPart"], [155, 2, 1, "", "NextBlock"], [155, 2, 1, "", "StartToken"], [155, 3, 1, "", "States"], [155, 2, 1, "", "__STATES__"], [155, 4, 1, "", "__init__"], [155, 4, 1, "", "__iter__"], [155, 4, 1, "", "__len__"], [155, 4, 1, "", "__repr__"], [155, 4, 1, "", "__str__"], [155, 2, 1, "", "_previousBlock"], [155, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Object.ObjectDeclarationEndMarkerBlock": [[155, 2, 1, "", "EndToken"], [155, 3, 1, "", "Length"], [155, 2, 1, "", "MultiPart"], [155, 2, 1, "", "NextBlock"], [155, 2, 1, "", "StartToken"], [155, 3, 1, "", "States"], [155, 2, 1, "", "__STATES__"], [155, 4, 1, "", "__init__"], [155, 4, 1, "", "__iter__"], [155, 4, 1, "", "__len__"], [155, 4, 1, "", "__repr__"], [155, 4, 1, "", "__str__"], [155, 2, 1, "", "_previousBlock"], [155, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Object.SharedVariable": [[158, 1, 1, "", "SharedVariableDeclarationBlock"], [158, 1, 1, "", "SharedVariableDeclarationEndMarkerBlock"]], "pyVHDLParser.Blocks.Object.SharedVariable.SharedVariableDeclarationBlock": [[158, 2, 1, "", "END_BLOCK"], [158, 2, 1, "", "EndToken"], [158, 3, 1, "", "Length"], [158, 2, 1, "", "MultiPart"], [158, 2, 1, "", "NextBlock"], [158, 2, 1, "", "StartToken"], [158, 3, 1, "", "States"], [158, 2, 1, "", "__STATES__"], [158, 4, 1, "", "__init__"], [158, 4, 1, "", "__iter__"], [158, 4, 1, "", "__len__"], [158, 4, 1, "", "__repr__"], [158, 4, 1, "", "__str__"], [158, 2, 1, "", "_previousBlock"], [158, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Object.SharedVariable.SharedVariableDeclarationEndMarkerBlock": [[158, 2, 1, "", "EndToken"], [158, 3, 1, "", "Length"], [158, 2, 1, "", "MultiPart"], [158, 2, 1, "", "NextBlock"], [158, 2, 1, "", "StartToken"], [158, 3, 1, "", "States"], [158, 2, 1, "", "__STATES__"], [158, 4, 1, "", "__init__"], [158, 4, 1, "", "__iter__"], [158, 4, 1, "", "__len__"], [158, 4, 1, "", "__repr__"], [158, 4, 1, "", "__str__"], [158, 2, 1, "", "_previousBlock"], [158, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Object.Signal": [[159, 1, 1, "", "SignalDeclarationBlock"], [159, 1, 1, "", "SignalDeclarationDefaultExpressionBlock"], [159, 1, 1, "", "SignalDeclarationEndMarkerBlock"]], "pyVHDLParser.Blocks.Object.Signal.SignalDeclarationBlock": [[159, 2, 1, "", "END_BLOCK"], [159, 2, 1, "", "EXPRESSION_BLOCK"], [159, 2, 1, "", "EndToken"], [159, 3, 1, "", "Length"], [159, 2, 1, "", "MultiPart"], [159, 2, 1, "", "NextBlock"], [159, 2, 1, "", "StartToken"], [159, 3, 1, "", "States"], [159, 2, 1, "", "__STATES__"], [159, 4, 1, "", "__init__"], [159, 4, 1, "", "__iter__"], [159, 4, 1, "", "__len__"], [159, 4, 1, "", "__repr__"], [159, 4, 1, "", "__str__"], [159, 2, 1, "", "_previousBlock"], [159, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Object.Signal.SignalDeclarationDefaultExpressionBlock": [[159, 2, 1, "", "END_BLOCK"], [159, 2, 1, "", "EndToken"], [159, 3, 1, "", "Length"], [159, 2, 1, "", "MultiPart"], [159, 2, 1, "", "NextBlock"], [159, 2, 1, "", "StartToken"], [159, 3, 1, "", "States"], [159, 2, 1, "", "__STATES__"], [159, 4, 1, "", "__init__"], [159, 4, 1, "", "__iter__"], [159, 4, 1, "", "__len__"], [159, 4, 1, "", "__repr__"], [159, 4, 1, "", "__str__"], [159, 2, 1, "", "_previousBlock"], [159, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Object.Signal.SignalDeclarationEndMarkerBlock": [[159, 2, 1, "", "EndToken"], [159, 3, 1, "", "Length"], [159, 2, 1, "", "MultiPart"], [159, 2, 1, "", "NextBlock"], [159, 2, 1, "", "StartToken"], [159, 3, 1, "", "States"], [159, 2, 1, "", "__STATES__"], [159, 4, 1, "", "__init__"], [159, 4, 1, "", "__iter__"], [159, 4, 1, "", "__len__"], [159, 4, 1, "", "__repr__"], [159, 4, 1, "", "__str__"], [159, 2, 1, "", "_previousBlock"], [159, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Object.Variable": [[160, 1, 1, "", "VariableDeclarationBlock"], [160, 1, 1, "", "VariableDeclarationDefaultExpressionBlock"], [160, 1, 1, "", "VariableDeclarationEndMarkerBlock"]], "pyVHDLParser.Blocks.Object.Variable.VariableDeclarationBlock": [[160, 2, 1, "", "END_BLOCK"], [160, 2, 1, "", "EXPRESSION_BLOCK"], [160, 2, 1, "", "EndToken"], [160, 3, 1, "", "Length"], [160, 2, 1, "", "MultiPart"], [160, 2, 1, "", "NextBlock"], [160, 2, 1, "", "StartToken"], [160, 3, 1, "", "States"], [160, 2, 1, "", "__STATES__"], [160, 4, 1, "", "__init__"], [160, 4, 1, "", "__iter__"], [160, 4, 1, "", "__len__"], [160, 4, 1, "", "__repr__"], [160, 4, 1, "", "__str__"], [160, 2, 1, "", "_previousBlock"], [160, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Object.Variable.VariableDeclarationDefaultExpressionBlock": [[160, 2, 1, "", "END_BLOCK"], [160, 2, 1, "", "EndToken"], [160, 3, 1, "", "Length"], [160, 2, 1, "", "MultiPart"], [160, 2, 1, "", "NextBlock"], [160, 2, 1, "", "StartToken"], [160, 3, 1, "", "States"], [160, 2, 1, "", "__STATES__"], [160, 4, 1, "", "__init__"], [160, 4, 1, "", "__iter__"], [160, 4, 1, "", "__len__"], [160, 4, 1, "", "__repr__"], [160, 4, 1, "", "__str__"], [160, 2, 1, "", "_previousBlock"], [160, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Object.Variable.VariableDeclarationEndMarkerBlock": [[160, 2, 1, "", "EndToken"], [160, 3, 1, "", "Length"], [160, 2, 1, "", "MultiPart"], [160, 2, 1, "", "NextBlock"], [160, 2, 1, "", "StartToken"], [160, 3, 1, "", "States"], [160, 2, 1, "", "__STATES__"], [160, 4, 1, "", "__init__"], [160, 4, 1, "", "__iter__"], [160, 4, 1, "", "__len__"], [160, 4, 1, "", "__repr__"], [160, 4, 1, "", "__str__"], [160, 2, 1, "", "_previousBlock"], [160, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Reference": [[162, 0, 0, "-", "Context"], [163, 0, 0, "-", "Library"], [164, 0, 0, "-", "Use"]], "pyVHDLParser.Blocks.Reference.Context": [[162, 1, 1, "", "EndBlock"], [162, 1, 1, "", "NameBlock"]], "pyVHDLParser.Blocks.Reference.Context.EndBlock": [[162, 2, 1, "", "EndToken"], [162, 2, 1, "", "KEYWORD"], [162, 3, 1, "", "Length"], [162, 2, 1, "", "MultiPart"], [162, 2, 1, "", "NextBlock"], [162, 2, 1, "", "StartToken"], [162, 3, 1, "", "States"], [162, 2, 1, "", "__STATES__"], [162, 4, 1, "", "__init__"], [162, 4, 1, "", "__iter__"], [162, 4, 1, "", "__len__"], [162, 4, 1, "", "__repr__"], [162, 4, 1, "", "__str__"], [162, 2, 1, "", "_previousBlock"], [162, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Reference.Context.NameBlock": [[162, 2, 1, "", "EndToken"], [162, 3, 1, "", "Length"], [162, 2, 1, "", "MultiPart"], [162, 2, 1, "", "NextBlock"], [162, 2, 1, "", "StartToken"], [162, 3, 1, "", "States"], [162, 2, 1, "", "__STATES__"], [162, 4, 1, "", "__init__"], [162, 4, 1, "", "__iter__"], [162, 4, 1, "", "__len__"], [162, 4, 1, "", "__repr__"], [162, 4, 1, "", "__str__"], [162, 2, 1, "", "_previousBlock"], [162, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Reference.Library": [[163, 1, 1, "", "DelimiterBlock"], [163, 1, 1, "", "EndBlock"], [163, 1, 1, "", "LibraryNameBlock"], [163, 1, 1, "", "StartBlock"]], "pyVHDLParser.Blocks.Reference.Library.DelimiterBlock": [[163, 2, 1, "", "EndToken"], [163, 3, 1, "", "Length"], [163, 2, 1, "", "MultiPart"], [163, 2, 1, "", "NextBlock"], [163, 2, 1, "", "StartToken"], [163, 3, 1, "", "States"], [163, 2, 1, "", "__STATES__"], [163, 4, 1, "", "__init__"], [163, 4, 1, "", "__iter__"], [163, 4, 1, "", "__len__"], [163, 4, 1, "", "__repr__"], [163, 4, 1, "", "__str__"], [163, 2, 1, "", "_previousBlock"], [163, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Reference.Library.EndBlock": [[163, 2, 1, "", "EndToken"], [163, 3, 1, "", "Length"], [163, 2, 1, "", "MultiPart"], [163, 2, 1, "", "NextBlock"], [163, 2, 1, "", "StartToken"], [163, 3, 1, "", "States"], [163, 2, 1, "", "__STATES__"], [163, 4, 1, "", "__init__"], [163, 4, 1, "", "__iter__"], [163, 4, 1, "", "__len__"], [163, 4, 1, "", "__repr__"], [163, 4, 1, "", "__str__"], [163, 2, 1, "", "_previousBlock"], [163, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Reference.Library.LibraryNameBlock": [[163, 2, 1, "", "EndToken"], [163, 3, 1, "", "Length"], [163, 2, 1, "", "MultiPart"], [163, 2, 1, "", "NextBlock"], [163, 2, 1, "", "StartToken"], [163, 3, 1, "", "States"], [163, 2, 1, "", "__STATES__"], [163, 4, 1, "", "__init__"], [163, 4, 1, "", "__iter__"], [163, 4, 1, "", "__len__"], [163, 4, 1, "", "__repr__"], [163, 4, 1, "", "__str__"], [163, 2, 1, "", "_previousBlock"], [163, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Reference.Library.StartBlock": [[163, 2, 1, "", "EndToken"], [163, 3, 1, "", "Length"], [163, 2, 1, "", "MultiPart"], [163, 2, 1, "", "NextBlock"], [163, 2, 1, "", "StartToken"], [163, 3, 1, "", "States"], [163, 2, 1, "", "__STATES__"], [163, 4, 1, "", "__init__"], [163, 4, 1, "", "__iter__"], [163, 4, 1, "", "__len__"], [163, 4, 1, "", "__repr__"], [163, 4, 1, "", "__str__"], [163, 2, 1, "", "_previousBlock"], [163, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Reference.Use": [[164, 1, 1, "", "DelimiterBlock"], [164, 1, 1, "", "EndBlock"], [164, 1, 1, "", "ReferenceNameBlock"], [164, 1, 1, "", "StartBlock"]], "pyVHDLParser.Blocks.Reference.Use.DelimiterBlock": [[164, 2, 1, "", "EndToken"], [164, 3, 1, "", "Length"], [164, 2, 1, "", "MultiPart"], [164, 2, 1, "", "NextBlock"], [164, 2, 1, "", "StartToken"], [164, 3, 1, "", "States"], [164, 2, 1, "", "__STATES__"], [164, 4, 1, "", "__init__"], [164, 4, 1, "", "__iter__"], [164, 4, 1, "", "__len__"], [164, 4, 1, "", "__repr__"], [164, 4, 1, "", "__str__"], [164, 2, 1, "", "_previousBlock"], [164, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Reference.Use.EndBlock": [[164, 2, 1, "", "EndToken"], [164, 3, 1, "", "Length"], [164, 2, 1, "", "MultiPart"], [164, 2, 1, "", "NextBlock"], [164, 2, 1, "", "StartToken"], [164, 3, 1, "", "States"], [164, 2, 1, "", "__STATES__"], [164, 4, 1, "", "__init__"], [164, 4, 1, "", "__iter__"], [164, 4, 1, "", "__len__"], [164, 4, 1, "", "__repr__"], [164, 4, 1, "", "__str__"], [164, 2, 1, "", "_previousBlock"], [164, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Reference.Use.ReferenceNameBlock": [[164, 2, 1, "", "EndToken"], [164, 3, 1, "", "Length"], [164, 2, 1, "", "MultiPart"], [164, 2, 1, "", "NextBlock"], [164, 2, 1, "", "StartToken"], [164, 3, 1, "", "States"], [164, 2, 1, "", "__STATES__"], [164, 4, 1, "", "__init__"], [164, 4, 1, "", "__iter__"], [164, 4, 1, "", "__len__"], [164, 4, 1, "", "__repr__"], [164, 4, 1, "", "__str__"], [164, 2, 1, "", "_previousBlock"], [164, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Reference.Use.StartBlock": [[164, 2, 1, "", "EndToken"], [164, 3, 1, "", "Length"], [164, 2, 1, "", "MultiPart"], [164, 2, 1, "", "NextBlock"], [164, 2, 1, "", "StartToken"], [164, 3, 1, "", "States"], [164, 2, 1, "", "__STATES__"], [164, 4, 1, "", "__init__"], [164, 4, 1, "", "__iter__"], [164, 4, 1, "", "__len__"], [164, 4, 1, "", "__repr__"], [164, 4, 1, "", "__str__"], [164, 2, 1, "", "_previousBlock"], [164, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Reporting": [[166, 0, 0, "-", "Assert"], [167, 0, 0, "-", "Report"]], "pyVHDLParser.Blocks.Reporting.Assert": [[166, 1, 1, "", "AssertBlock"]], "pyVHDLParser.Blocks.Reporting.Assert.AssertBlock": [[166, 2, 1, "", "EndToken"], [166, 3, 1, "", "Length"], [166, 2, 1, "", "MultiPart"], [166, 2, 1, "", "NextBlock"], [166, 2, 1, "", "StartToken"], [166, 3, 1, "", "States"], [166, 2, 1, "", "__STATES__"], [166, 4, 1, "", "__init__"], [166, 4, 1, "", "__iter__"], [166, 4, 1, "", "__len__"], [166, 4, 1, "", "__repr__"], [166, 4, 1, "", "__str__"], [166, 2, 1, "", "_previousBlock"], [166, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Reporting.Report": [[167, 1, 1, "", "ReportBlock"]], "pyVHDLParser.Blocks.Reporting.Report.ReportBlock": [[167, 2, 1, "", "EndToken"], [167, 3, 1, "", "Length"], [167, 2, 1, "", "MultiPart"], [167, 2, 1, "", "NextBlock"], [167, 2, 1, "", "StartToken"], [167, 3, 1, "", "States"], [167, 2, 1, "", "__STATES__"], [167, 4, 1, "", "__init__"], [167, 4, 1, "", "__iter__"], [167, 4, 1, "", "__len__"], [167, 4, 1, "", "__repr__"], [167, 4, 1, "", "__str__"], [167, 2, 1, "", "_previousBlock"], [167, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Sequential": [[169, 0, 0, "-", "Function"], [170, 0, 0, "-", "Package"], [171, 0, 0, "-", "PackageBody"], [172, 0, 0, "-", "Procedure"], [173, 0, 0, "-", "Process"]], "pyVHDLParser.Blocks.Sequential.Function": [[169, 1, 1, "", "BeginBlock"], [169, 1, 1, "", "DeclarativeRegion"], [169, 1, 1, "", "EndBlock"], [169, 1, 1, "", "NameBlock"], [169, 1, 1, "", "ReturnTypeBlock"]], "pyVHDLParser.Blocks.Sequential.Function.BeginBlock": [[169, 2, 1, "", "END_BLOCK"], [169, 2, 1, "", "EndToken"], [169, 3, 1, "", "Length"], [169, 2, 1, "", "MultiPart"], [169, 2, 1, "", "NextBlock"], [169, 2, 1, "", "StartToken"], [169, 3, 1, "", "States"], [169, 2, 1, "", "__STATES__"], [169, 4, 1, "", "__init__"], [169, 4, 1, "", "__iter__"], [169, 4, 1, "", "__len__"], [169, 4, 1, "", "__repr__"], [169, 4, 1, "", "__str__"], [169, 2, 1, "", "_previousBlock"], [169, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Sequential.Function.DeclarativeRegion": [[169, 2, 1, "", "BEGIN_BLOCK"], [169, 2, 1, "", "END_BLOCK"]], "pyVHDLParser.Blocks.Sequential.Function.EndBlock": [[169, 2, 1, "", "EndToken"], [169, 2, 1, "", "KEYWORD"], [169, 3, 1, "", "Length"], [169, 2, 1, "", "MultiPart"], [169, 2, 1, "", "NextBlock"], [169, 2, 1, "", "StartToken"], [169, 3, 1, "", "States"], [169, 2, 1, "", "__STATES__"], [169, 4, 1, "", "__init__"], [169, 4, 1, "", "__iter__"], [169, 4, 1, "", "__len__"], [169, 4, 1, "", "__repr__"], [169, 4, 1, "", "__str__"], [169, 2, 1, "", "_previousBlock"], [169, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Sequential.Function.NameBlock": [[169, 2, 1, "", "EndToken"], [169, 3, 1, "", "Length"], [169, 2, 1, "", "MultiPart"], [169, 2, 1, "", "NextBlock"], [169, 2, 1, "", "StartToken"], [169, 3, 1, "", "States"], [169, 2, 1, "", "__STATES__"], [169, 4, 1, "", "__init__"], [169, 4, 1, "", "__iter__"], [169, 4, 1, "", "__len__"], [169, 4, 1, "", "__repr__"], [169, 4, 1, "", "__str__"], [169, 2, 1, "", "_previousBlock"], [169, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Sequential.Function.ReturnTypeBlock": [[169, 2, 1, "", "EndToken"], [169, 3, 1, "", "Length"], [169, 2, 1, "", "MultiPart"], [169, 2, 1, "", "NextBlock"], [169, 2, 1, "", "StartToken"], [169, 3, 1, "", "States"], [169, 2, 1, "", "__STATES__"], [169, 4, 1, "", "__init__"], [169, 4, 1, "", "__iter__"], [169, 4, 1, "", "__len__"], [169, 4, 1, "", "__repr__"], [169, 4, 1, "", "__str__"], [169, 2, 1, "", "_previousBlock"], [169, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Sequential.Package": [[170, 1, 1, "", "DeclarativeRegion"], [170, 1, 1, "", "EndBlock"], [170, 1, 1, "", "NameBlock"]], "pyVHDLParser.Blocks.Sequential.Package.DeclarativeRegion": [[170, 2, 1, "", "END_BLOCK"]], "pyVHDLParser.Blocks.Sequential.Package.EndBlock": [[170, 2, 1, "", "EndToken"], [170, 2, 1, "", "KEYWORD"], [170, 3, 1, "", "Length"], [170, 2, 1, "", "MultiPart"], [170, 2, 1, "", "NextBlock"], [170, 2, 1, "", "StartToken"], [170, 3, 1, "", "States"], [170, 2, 1, "", "__STATES__"], [170, 4, 1, "", "__init__"], [170, 4, 1, "", "__iter__"], [170, 4, 1, "", "__len__"], [170, 4, 1, "", "__repr__"], [170, 4, 1, "", "__str__"], [170, 2, 1, "", "_previousBlock"], [170, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Sequential.Package.NameBlock": [[170, 2, 1, "", "EndToken"], [170, 3, 1, "", "Length"], [170, 2, 1, "", "MultiPart"], [170, 2, 1, "", "NextBlock"], [170, 2, 1, "", "StartToken"], [170, 3, 1, "", "States"], [170, 2, 1, "", "__STATES__"], [170, 4, 1, "", "__init__"], [170, 4, 1, "", "__iter__"], [170, 4, 1, "", "__len__"], [170, 4, 1, "", "__repr__"], [170, 4, 1, "", "__str__"], [170, 2, 1, "", "_previousBlock"], [170, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Sequential.PackageBody": [[171, 1, 1, "", "DeclarativeRegion"], [171, 1, 1, "", "EndBlock"], [171, 1, 1, "", "NameBlock"]], "pyVHDLParser.Blocks.Sequential.PackageBody.DeclarativeRegion": [[171, 2, 1, "", "END_BLOCK"]], "pyVHDLParser.Blocks.Sequential.PackageBody.EndBlock": [[171, 2, 1, "", "EndToken"], [171, 3, 1, "", "Length"], [171, 2, 1, "", "MultiPart"], [171, 2, 1, "", "NextBlock"], [171, 2, 1, "", "StartToken"], [171, 3, 1, "", "States"], [171, 2, 1, "", "__STATES__"], [171, 4, 1, "", "__init__"], [171, 4, 1, "", "__iter__"], [171, 4, 1, "", "__len__"], [171, 4, 1, "", "__repr__"], [171, 4, 1, "", "__str__"], [171, 2, 1, "", "_previousBlock"], [171, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Sequential.PackageBody.NameBlock": [[171, 2, 1, "", "EndToken"], [171, 3, 1, "", "Length"], [171, 2, 1, "", "MultiPart"], [171, 2, 1, "", "NextBlock"], [171, 2, 1, "", "StartToken"], [171, 3, 1, "", "States"], [171, 2, 1, "", "__STATES__"], [171, 4, 1, "", "__init__"], [171, 4, 1, "", "__iter__"], [171, 4, 1, "", "__len__"], [171, 4, 1, "", "__repr__"], [171, 4, 1, "", "__str__"], [171, 2, 1, "", "_previousBlock"], [171, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Sequential.Procedure": [[172, 1, 1, "", "BeginBlock"], [172, 1, 1, "", "DeclarativeRegion"], [172, 1, 1, "", "EndBlock"], [172, 1, 1, "", "NameBlock"], [172, 1, 1, "", "VoidBlock"]], "pyVHDLParser.Blocks.Sequential.Procedure.BeginBlock": [[172, 2, 1, "", "END_BLOCK"], [172, 2, 1, "", "EndToken"], [172, 3, 1, "", "Length"], [172, 2, 1, "", "MultiPart"], [172, 2, 1, "", "NextBlock"], [172, 2, 1, "", "StartToken"], [172, 3, 1, "", "States"], [172, 2, 1, "", "__STATES__"], [172, 4, 1, "", "__init__"], [172, 4, 1, "", "__iter__"], [172, 4, 1, "", "__len__"], [172, 4, 1, "", "__repr__"], [172, 4, 1, "", "__str__"], [172, 2, 1, "", "_previousBlock"], [172, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Sequential.Procedure.DeclarativeRegion": [[172, 2, 1, "", "BEGIN_BLOCK"], [172, 2, 1, "", "END_BLOCK"]], "pyVHDLParser.Blocks.Sequential.Procedure.EndBlock": [[172, 2, 1, "", "EndToken"], [172, 2, 1, "", "KEYWORD"], [172, 3, 1, "", "Length"], [172, 2, 1, "", "MultiPart"], [172, 2, 1, "", "NextBlock"], [172, 2, 1, "", "StartToken"], [172, 3, 1, "", "States"], [172, 2, 1, "", "__STATES__"], [172, 4, 1, "", "__init__"], [172, 4, 1, "", "__iter__"], [172, 4, 1, "", "__len__"], [172, 4, 1, "", "__repr__"], [172, 4, 1, "", "__str__"], [172, 2, 1, "", "_previousBlock"], [172, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Sequential.Procedure.NameBlock": [[172, 2, 1, "", "EndToken"], [172, 3, 1, "", "Length"], [172, 2, 1, "", "MultiPart"], [172, 2, 1, "", "NextBlock"], [172, 2, 1, "", "StartToken"], [172, 3, 1, "", "States"], [172, 2, 1, "", "__STATES__"], [172, 4, 1, "", "__init__"], [172, 4, 1, "", "__iter__"], [172, 4, 1, "", "__len__"], [172, 4, 1, "", "__repr__"], [172, 4, 1, "", "__str__"], [172, 2, 1, "", "_previousBlock"], [172, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Sequential.Procedure.VoidBlock": [[172, 2, 1, "", "EndToken"], [172, 3, 1, "", "Length"], [172, 2, 1, "", "MultiPart"], [172, 2, 1, "", "NextBlock"], [172, 2, 1, "", "StartToken"], [172, 3, 1, "", "States"], [172, 2, 1, "", "__STATES__"], [172, 4, 1, "", "__init__"], [172, 4, 1, "", "__iter__"], [172, 4, 1, "", "__len__"], [172, 4, 1, "", "__repr__"], [172, 4, 1, "", "__str__"], [172, 2, 1, "", "_previousBlock"], [172, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Sequential.Process": [[173, 1, 1, "", "BeginBlock"], [173, 1, 1, "", "DeclarativeRegion"], [173, 1, 1, "", "EndBlock"], [173, 1, 1, "", "OpenBlock"], [173, 1, 1, "", "OpenBlock2"]], "pyVHDLParser.Blocks.Sequential.Process.BeginBlock": [[173, 2, 1, "", "END_BLOCK"], [173, 2, 1, "", "EndToken"], [173, 3, 1, "", "Length"], [173, 2, 1, "", "MultiPart"], [173, 2, 1, "", "NextBlock"], [173, 2, 1, "", "StartToken"], [173, 3, 1, "", "States"], [173, 2, 1, "", "__STATES__"], [173, 4, 1, "", "__init__"], [173, 4, 1, "", "__iter__"], [173, 4, 1, "", "__len__"], [173, 4, 1, "", "__repr__"], [173, 4, 1, "", "__str__"], [173, 2, 1, "", "_previousBlock"], [173, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Sequential.Process.DeclarativeRegion": [[173, 2, 1, "", "BEGIN_BLOCK"], [173, 2, 1, "", "END_BLOCK"]], "pyVHDLParser.Blocks.Sequential.Process.EndBlock": [[173, 2, 1, "", "EndToken"], [173, 2, 1, "", "KEYWORD"], [173, 3, 1, "", "Length"], [173, 2, 1, "", "MultiPart"], [173, 2, 1, "", "NextBlock"], [173, 2, 1, "", "StartToken"], [173, 3, 1, "", "States"], [173, 2, 1, "", "__STATES__"], [173, 4, 1, "", "__init__"], [173, 4, 1, "", "__iter__"], [173, 4, 1, "", "__len__"], [173, 4, 1, "", "__repr__"], [173, 4, 1, "", "__str__"], [173, 2, 1, "", "_previousBlock"], [173, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Sequential.Process.OpenBlock": [[173, 2, 1, "", "EndToken"], [173, 3, 1, "", "Length"], [173, 2, 1, "", "MultiPart"], [173, 2, 1, "", "NextBlock"], [173, 2, 1, "", "StartToken"], [173, 3, 1, "", "States"], [173, 2, 1, "", "__STATES__"], [173, 4, 1, "", "__init__"], [173, 4, 1, "", "__iter__"], [173, 4, 1, "", "__len__"], [173, 4, 1, "", "__repr__"], [173, 4, 1, "", "__str__"], [173, 2, 1, "", "_previousBlock"], [173, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Sequential.Process.OpenBlock2": [[173, 2, 1, "", "EndToken"], [173, 3, 1, "", "Length"], [173, 2, 1, "", "MultiPart"], [173, 2, 1, "", "NextBlock"], [173, 2, 1, "", "StartToken"], [173, 3, 1, "", "States"], [173, 2, 1, "", "__STATES__"], [173, 4, 1, "", "__init__"], [173, 4, 1, "", "__iter__"], [173, 4, 1, "", "__len__"], [173, 4, 1, "", "__repr__"], [173, 4, 1, "", "__str__"], [173, 2, 1, "", "_previousBlock"], [173, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.SkipableBlock": [[116, 2, 1, "", "EndToken"], [116, 3, 1, "", "Length"], [116, 2, 1, "", "MultiPart"], [116, 2, 1, "", "NextBlock"], [116, 2, 1, "", "StartToken"], [116, 3, 1, "", "States"], [116, 2, 1, "", "__STATES__"], [116, 4, 1, "", "__init__"], [116, 4, 1, "", "__iter__"], [116, 4, 1, "", "__len__"], [116, 4, 1, "", "__repr__"], [116, 4, 1, "", "__str__"], [116, 2, 1, "", "_previousBlock"], [116, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.StartOfBlock": [[116, 2, 1, "", "EndToken"], [116, 3, 1, "", "Length"], [116, 2, 1, "", "MultiPart"], [116, 2, 1, "", "NextBlock"], [116, 2, 1, "", "StartToken"], [116, 3, 1, "", "States"], [116, 2, 1, "", "__STATES__"], [116, 4, 1, "", "__init__"], [116, 4, 1, "", "__iter__"], [116, 4, 1, "", "__len__"], [116, 4, 1, "", "__repr__"], [116, 4, 1, "", "__str__"], [116, 2, 1, "", "_previousBlock"], [116, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.StartOfDocumentBlock": [[116, 2, 1, "", "EndToken"], [116, 3, 1, "", "Length"], [116, 2, 1, "", "MultiPart"], [116, 2, 1, "", "NextBlock"], [116, 2, 1, "", "StartToken"], [116, 3, 1, "", "States"], [116, 2, 1, "", "__STATES__"], [116, 4, 1, "", "__init__"], [116, 4, 1, "", "__iter__"], [116, 4, 1, "", "__len__"], [116, 4, 1, "", "__repr__"], [116, 4, 1, "", "__str__"], [116, 2, 1, "", "_previousBlock"], [116, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.StartOfSnippetBlock": [[116, 2, 1, "", "EndToken"], [116, 3, 1, "", "Length"], [116, 2, 1, "", "MultiPart"], [116, 2, 1, "", "NextBlock"], [116, 2, 1, "", "StartToken"], [116, 3, 1, "", "States"], [116, 2, 1, "", "__STATES__"], [116, 4, 1, "", "__init__"], [116, 4, 1, "", "__iter__"], [116, 4, 1, "", "__len__"], [116, 4, 1, "", "__repr__"], [116, 4, 1, "", "__str__"], [116, 2, 1, "", "_previousBlock"], [116, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Structural": [[175, 0, 0, "-", "Architecture"], [176, 0, 0, "-", "Block"], [177, 0, 0, "-", "Component"], [178, 0, 0, "-", "Configuration"], [179, 0, 0, "-", "Entity"]], "pyVHDLParser.Blocks.Structural.Architecture": [[175, 1, 1, "", "BeginBlock"], [175, 1, 1, "", "DeclarativeRegion"], [175, 1, 1, "", "EndBlock"], [175, 1, 1, "", "NameBlock"]], "pyVHDLParser.Blocks.Structural.Architecture.BeginBlock": [[175, 2, 1, "", "END_BLOCK"], [175, 2, 1, "", "EndToken"], [175, 3, 1, "", "Length"], [175, 2, 1, "", "MultiPart"], [175, 2, 1, "", "NextBlock"], [175, 2, 1, "", "StartToken"], [175, 3, 1, "", "States"], [175, 2, 1, "", "__STATES__"], [175, 4, 1, "", "__init__"], [175, 4, 1, "", "__iter__"], [175, 4, 1, "", "__len__"], [175, 4, 1, "", "__repr__"], [175, 4, 1, "", "__str__"], [175, 2, 1, "", "_previousBlock"], [175, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Structural.Architecture.DeclarativeRegion": [[175, 2, 1, "", "BEGIN_BLOCK"], [175, 2, 1, "", "END_BLOCK"]], "pyVHDLParser.Blocks.Structural.Architecture.EndBlock": [[175, 2, 1, "", "EndToken"], [175, 2, 1, "", "KEYWORD"], [175, 3, 1, "", "Length"], [175, 2, 1, "", "MultiPart"], [175, 2, 1, "", "NextBlock"], [175, 2, 1, "", "StartToken"], [175, 3, 1, "", "States"], [175, 2, 1, "", "__STATES__"], [175, 4, 1, "", "__init__"], [175, 4, 1, "", "__iter__"], [175, 4, 1, "", "__len__"], [175, 4, 1, "", "__repr__"], [175, 4, 1, "", "__str__"], [175, 2, 1, "", "_previousBlock"], [175, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Structural.Architecture.NameBlock": [[175, 2, 1, "", "EndToken"], [175, 3, 1, "", "Length"], [175, 2, 1, "", "MultiPart"], [175, 2, 1, "", "NextBlock"], [175, 2, 1, "", "StartToken"], [175, 3, 1, "", "States"], [175, 2, 1, "", "__STATES__"], [175, 4, 1, "", "__init__"], [175, 4, 1, "", "__iter__"], [175, 4, 1, "", "__len__"], [175, 4, 1, "", "__repr__"], [175, 4, 1, "", "__str__"], [175, 2, 1, "", "_previousBlock"], [175, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Structural.Block": [[176, 1, 1, "", "BeginBlock"], [176, 1, 1, "", "DeclarativeRegion"], [176, 1, 1, "", "EndBlock"], [176, 1, 1, "", "NameBlock"]], "pyVHDLParser.Blocks.Structural.Block.BeginBlock": [[176, 2, 1, "", "END_BLOCK"], [176, 2, 1, "", "EndToken"], [176, 3, 1, "", "Length"], [176, 2, 1, "", "MultiPart"], [176, 2, 1, "", "NextBlock"], [176, 2, 1, "", "StartToken"], [176, 3, 1, "", "States"], [176, 2, 1, "", "__STATES__"], [176, 4, 1, "", "__init__"], [176, 4, 1, "", "__iter__"], [176, 4, 1, "", "__len__"], [176, 4, 1, "", "__repr__"], [176, 4, 1, "", "__str__"], [176, 2, 1, "", "_previousBlock"], [176, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Structural.Block.DeclarativeRegion": [[176, 2, 1, "", "BEGIN_BLOCK"], [176, 2, 1, "", "END_BLOCK"]], "pyVHDLParser.Blocks.Structural.Block.EndBlock": [[176, 2, 1, "", "EndToken"], [176, 2, 1, "", "KEYWORD"], [176, 3, 1, "", "Length"], [176, 2, 1, "", "MultiPart"], [176, 2, 1, "", "NextBlock"], [176, 2, 1, "", "StartToken"], [176, 3, 1, "", "States"], [176, 2, 1, "", "__STATES__"], [176, 4, 1, "", "__init__"], [176, 4, 1, "", "__iter__"], [176, 4, 1, "", "__len__"], [176, 4, 1, "", "__repr__"], [176, 4, 1, "", "__str__"], [176, 2, 1, "", "_previousBlock"], [176, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Structural.Block.NameBlock": [[176, 2, 1, "", "EndToken"], [176, 3, 1, "", "Length"], [176, 2, 1, "", "MultiPart"], [176, 2, 1, "", "NextBlock"], [176, 2, 1, "", "StartToken"], [176, 3, 1, "", "States"], [176, 2, 1, "", "__STATES__"], [176, 4, 1, "", "__init__"], [176, 4, 1, "", "__iter__"], [176, 4, 1, "", "__len__"], [176, 4, 1, "", "__repr__"], [176, 4, 1, "", "__str__"], [176, 2, 1, "", "_previousBlock"], [176, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Structural.Component": [[177, 1, 1, "", "EndBlock"], [177, 1, 1, "", "NameBlock"]], "pyVHDLParser.Blocks.Structural.Component.EndBlock": [[177, 2, 1, "", "EndToken"], [177, 2, 1, "", "KEYWORD"], [177, 3, 1, "", "Length"], [177, 2, 1, "", "MultiPart"], [177, 2, 1, "", "NextBlock"], [177, 2, 1, "", "StartToken"], [177, 3, 1, "", "States"], [177, 2, 1, "", "__STATES__"], [177, 4, 1, "", "__init__"], [177, 4, 1, "", "__iter__"], [177, 4, 1, "", "__len__"], [177, 4, 1, "", "__repr__"], [177, 4, 1, "", "__str__"], [177, 2, 1, "", "_previousBlock"], [177, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Structural.Component.NameBlock": [[177, 2, 1, "", "EndToken"], [177, 3, 1, "", "Length"], [177, 2, 1, "", "MultiPart"], [177, 2, 1, "", "NextBlock"], [177, 2, 1, "", "StartToken"], [177, 3, 1, "", "States"], [177, 2, 1, "", "__STATES__"], [177, 4, 1, "", "__init__"], [177, 4, 1, "", "__iter__"], [177, 4, 1, "", "__len__"], [177, 4, 1, "", "__repr__"], [177, 4, 1, "", "__str__"], [177, 2, 1, "", "_previousBlock"], [177, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Structural.Configuration": [[178, 1, 1, "", "BeginBlock"], [178, 1, 1, "", "EndBlock"], [178, 1, 1, "", "NameBlock"]], "pyVHDLParser.Blocks.Structural.Configuration.BeginBlock": [[178, 2, 1, "", "END_BLOCK"], [178, 2, 1, "", "EndToken"], [178, 3, 1, "", "Length"], [178, 2, 1, "", "MultiPart"], [178, 2, 1, "", "NextBlock"], [178, 2, 1, "", "StartToken"], [178, 3, 1, "", "States"], [178, 2, 1, "", "__STATES__"], [178, 4, 1, "", "__init__"], [178, 4, 1, "", "__iter__"], [178, 4, 1, "", "__len__"], [178, 4, 1, "", "__repr__"], [178, 4, 1, "", "__str__"], [178, 2, 1, "", "_previousBlock"], [178, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Structural.Configuration.EndBlock": [[178, 2, 1, "", "EndToken"], [178, 2, 1, "", "KEYWORD"], [178, 3, 1, "", "Length"], [178, 2, 1, "", "MultiPart"], [178, 2, 1, "", "NextBlock"], [178, 2, 1, "", "StartToken"], [178, 3, 1, "", "States"], [178, 2, 1, "", "__STATES__"], [178, 4, 1, "", "__init__"], [178, 4, 1, "", "__iter__"], [178, 4, 1, "", "__len__"], [178, 4, 1, "", "__repr__"], [178, 4, 1, "", "__str__"], [178, 2, 1, "", "_previousBlock"], [178, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Structural.Configuration.NameBlock": [[178, 2, 1, "", "EndToken"], [178, 3, 1, "", "Length"], [178, 2, 1, "", "MultiPart"], [178, 2, 1, "", "NextBlock"], [178, 2, 1, "", "StartToken"], [178, 3, 1, "", "States"], [178, 2, 1, "", "__STATES__"], [178, 4, 1, "", "__init__"], [178, 4, 1, "", "__iter__"], [178, 4, 1, "", "__len__"], [178, 4, 1, "", "__repr__"], [178, 4, 1, "", "__str__"], [178, 2, 1, "", "_previousBlock"], [178, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Structural.Entity": [[179, 1, 1, "", "BeginBlock"], [179, 1, 1, "", "DeclarativeRegion"], [179, 1, 1, "", "EndBlock"], [179, 1, 1, "", "NameBlock"]], "pyVHDLParser.Blocks.Structural.Entity.BeginBlock": [[179, 2, 1, "", "END_BLOCK"], [179, 2, 1, "", "EndToken"], [179, 3, 1, "", "Length"], [179, 2, 1, "", "MultiPart"], [179, 2, 1, "", "NextBlock"], [179, 2, 1, "", "StartToken"], [179, 3, 1, "", "States"], [179, 2, 1, "", "__STATES__"], [179, 4, 1, "", "__init__"], [179, 4, 1, "", "__iter__"], [179, 4, 1, "", "__len__"], [179, 4, 1, "", "__repr__"], [179, 4, 1, "", "__str__"], [179, 2, 1, "", "_previousBlock"], [179, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Structural.Entity.DeclarativeRegion": [[179, 2, 1, "", "BEGIN_BLOCK"], [179, 2, 1, "", "END_BLOCK"]], "pyVHDLParser.Blocks.Structural.Entity.EndBlock": [[179, 2, 1, "", "EndToken"], [179, 2, 1, "", "KEYWORD"], [179, 3, 1, "", "Length"], [179, 2, 1, "", "MultiPart"], [179, 2, 1, "", "NextBlock"], [179, 2, 1, "", "StartToken"], [179, 3, 1, "", "States"], [179, 2, 1, "", "__STATES__"], [179, 4, 1, "", "__init__"], [179, 4, 1, "", "__iter__"], [179, 4, 1, "", "__len__"], [179, 4, 1, "", "__repr__"], [179, 4, 1, "", "__str__"], [179, 2, 1, "", "_previousBlock"], [179, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Structural.Entity.NameBlock": [[179, 2, 1, "", "EndToken"], [179, 3, 1, "", "Length"], [179, 2, 1, "", "MultiPart"], [179, 2, 1, "", "NextBlock"], [179, 2, 1, "", "StartToken"], [179, 3, 1, "", "States"], [179, 2, 1, "", "__STATES__"], [179, 4, 1, "", "__init__"], [179, 4, 1, "", "__iter__"], [179, 4, 1, "", "__len__"], [179, 4, 1, "", "__repr__"], [179, 4, 1, "", "__str__"], [179, 2, 1, "", "_previousBlock"], [179, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.TokenToBlockParser": [[116, 4, 1, "", "__call__"], [116, 4, 1, "", "__eq__"], [116, 2, 1, "", "__hash__"], [116, 4, 1, "", "__init__"], [116, 4, 1, "", "__ne__"], [116, 4, 1, "", "__repr__"], [116, 4, 1, "", "__str__"]], "pyVHDLParser.Blocks.Type": [[181, 0, 0, "-", "ResolutionIndication"], [182, 0, 0, "-", "Subtype"], [183, 0, 0, "-", "SubtypeIndication"], [184, 0, 0, "-", "Type"]], "pyVHDLParser.Blocks.Type.ResolutionIndication": [[181, 1, 1, "", "ArrayResolutionIndicationBlock"], [181, 1, 1, "", "RecordResolutionIndicationBlock"], [181, 1, 1, "", "SimpleResolutionIndicationBlock"]], "pyVHDLParser.Blocks.Type.ResolutionIndication.ArrayResolutionIndicationBlock": [[181, 2, 1, "", "EndToken"], [181, 3, 1, "", "Length"], [181, 2, 1, "", "MultiPart"], [181, 2, 1, "", "NextBlock"], [181, 2, 1, "", "StartToken"], [181, 3, 1, "", "States"], [181, 2, 1, "", "__STATES__"], [181, 4, 1, "", "__init__"], [181, 4, 1, "", "__iter__"], [181, 4, 1, "", "__len__"], [181, 4, 1, "", "__repr__"], [181, 4, 1, "", "__str__"], [181, 2, 1, "", "_previousBlock"], [181, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Type.ResolutionIndication.RecordResolutionIndicationBlock": [[181, 2, 1, "", "EndToken"], [181, 3, 1, "", "Length"], [181, 2, 1, "", "MultiPart"], [181, 2, 1, "", "NextBlock"], [181, 2, 1, "", "StartToken"], [181, 3, 1, "", "States"], [181, 2, 1, "", "__STATES__"], [181, 4, 1, "", "__init__"], [181, 4, 1, "", "__iter__"], [181, 4, 1, "", "__len__"], [181, 4, 1, "", "__repr__"], [181, 4, 1, "", "__str__"], [181, 2, 1, "", "_previousBlock"], [181, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Type.ResolutionIndication.SimpleResolutionIndicationBlock": [[181, 2, 1, "", "EndToken"], [181, 3, 1, "", "Length"], [181, 2, 1, "", "MultiPart"], [181, 2, 1, "", "NextBlock"], [181, 2, 1, "", "StartToken"], [181, 3, 1, "", "States"], [181, 2, 1, "", "__STATES__"], [181, 4, 1, "", "__init__"], [181, 4, 1, "", "__iter__"], [181, 4, 1, "", "__len__"], [181, 4, 1, "", "__repr__"], [181, 4, 1, "", "__str__"], [181, 2, 1, "", "_previousBlock"], [181, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Type.Subtype": [[182, 1, 1, "", "SubtypeBlock"]], "pyVHDLParser.Blocks.Type.Subtype.SubtypeBlock": [[182, 2, 1, "", "EndToken"], [182, 3, 1, "", "Length"], [182, 2, 1, "", "MultiPart"], [182, 2, 1, "", "NextBlock"], [182, 2, 1, "", "StartToken"], [182, 3, 1, "", "States"], [182, 2, 1, "", "__STATES__"], [182, 4, 1, "", "__init__"], [182, 4, 1, "", "__iter__"], [182, 4, 1, "", "__len__"], [182, 4, 1, "", "__repr__"], [182, 4, 1, "", "__str__"], [182, 2, 1, "", "_previousBlock"], [182, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Type.SubtypeIndication": [[183, 1, 1, "", "ArrayConstrainedSubtypeIndicationBlock"], [183, 1, 1, "", "RecordConstrainedSubtypeIndicationBlock"], [183, 1, 1, "", "SubtypeIndicationBlock"]], "pyVHDLParser.Blocks.Type.SubtypeIndication.ArrayConstrainedSubtypeIndicationBlock": [[183, 2, 1, "", "EndToken"], [183, 3, 1, "", "Length"], [183, 2, 1, "", "MultiPart"], [183, 2, 1, "", "NextBlock"], [183, 2, 1, "", "StartToken"], [183, 3, 1, "", "States"], [183, 2, 1, "", "__STATES__"], [183, 4, 1, "", "__init__"], [183, 4, 1, "", "__iter__"], [183, 4, 1, "", "__len__"], [183, 4, 1, "", "__repr__"], [183, 4, 1, "", "__str__"], [183, 2, 1, "", "_previousBlock"], [183, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Type.SubtypeIndication.RecordConstrainedSubtypeIndicationBlock": [[183, 2, 1, "", "EndToken"], [183, 3, 1, "", "Length"], [183, 2, 1, "", "MultiPart"], [183, 2, 1, "", "NextBlock"], [183, 2, 1, "", "StartToken"], [183, 3, 1, "", "States"], [183, 2, 1, "", "__STATES__"], [183, 4, 1, "", "__init__"], [183, 4, 1, "", "__iter__"], [183, 4, 1, "", "__len__"], [183, 4, 1, "", "__repr__"], [183, 4, 1, "", "__str__"], [183, 2, 1, "", "_previousBlock"], [183, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Type.SubtypeIndication.SubtypeIndicationBlock": [[183, 2, 1, "", "EndToken"], [183, 3, 1, "", "Length"], [183, 2, 1, "", "MultiPart"], [183, 2, 1, "", "NextBlock"], [183, 2, 1, "", "StartToken"], [183, 3, 1, "", "States"], [183, 2, 1, "", "__STATES__"], [183, 4, 1, "", "__init__"], [183, 4, 1, "", "__iter__"], [183, 4, 1, "", "__len__"], [183, 4, 1, "", "__repr__"], [183, 4, 1, "", "__str__"], [183, 2, 1, "", "_previousBlock"], [183, 4, 1, "", "stateError"]], "pyVHDLParser.Blocks.Type.Type": [[184, 1, 1, "", "TypeBlock"]], "pyVHDLParser.Blocks.Type.Type.TypeBlock": [[184, 2, 1, "", "EndToken"], [184, 3, 1, "", "Length"], [184, 2, 1, "", "MultiPart"], [184, 2, 1, "", "NextBlock"], [184, 2, 1, "", "StartToken"], [184, 3, 1, "", "States"], [184, 2, 1, "", "__STATES__"], [184, 4, 1, "", "__init__"], [184, 4, 1, "", "__iter__"], [184, 4, 1, "", "__len__"], [184, 4, 1, "", "__repr__"], [184, 4, 1, "", "__str__"], [184, 2, 1, "", "_previousBlock"], [184, 4, 1, "", "stateError"]], "pyVHDLParser.CLI": [[186, 0, 0, "-", "ANTLR"], [187, 0, 0, "-", "Block"], [188, 0, 0, "-", "CodeDOM"], [189, 0, 0, "-", "GraphML"], [190, 0, 0, "-", "Group"], [191, 0, 0, "-", "Token"], [192, 0, 0, "-", "VHDLParser"]], "pyVHDLParser.CLI.VHDLParser": [[192, 1, 1, "", "Application"], [192, 6, 1, "", "printImportError"]], "pyVHDLParser.CLI.VHDLParser.Application": [[192, 3, 1, "", "Debug"], [192, 4, 1, "", "ExitOnPreviousErrors"], [192, 4, 1, "", "ExitOnPreviousWarnings"], [192, 2, 1, "", "Foreground"], [192, 4, 1, "", "GetAttributes"], [192, 4, 1, "", "GetTerminalSize"], [192, 4, 1, "", "HasAttribute"], [192, 3, 1, "", "Height"], [192, 3, 1, "", "LogLevel"], [192, 3, 1, "", "MainParser"], [192, 3, 1, "", "Quiet"], [192, 3, 1, "", "SubParsers"], [192, 3, 1, "", "Terminal"], [192, 3, 1, "", "Verbose"], [192, 3, 1, "", "Width"], [192, 4, 1, "", "WriteDebug"], [192, 4, 1, "", "WriteDryRun"], [192, 4, 1, "", "WriteError"], [192, 4, 1, "", "WriteFatal"], [192, 4, 1, "", "WriteInfo"], [192, 4, 1, "", "WriteLine"], [192, 4, 1, "", "WriteNormal"], [192, 4, 1, "", "WriteQuiet"], [192, 4, 1, "", "WriteVerbose"], [192, 4, 1, "", "WriteWarning"], [192, 2, 1, "", "_LOG_MESSAGE_FORMAT__"], [192, 4, 1, "", "__init__"], [192, 4, 1, "", "__new__"], [192, 2, 1, "", "_height"], [192, 2, 1, "", "_width"], [192, 4, 1, "", "deinitColors"], [192, 4, 1, "", "exit"], [192, 4, 1, "", "fatalExit"], [192, 4, 1, "", "initColors"], [192, 4, 1, "", "printException"], [192, 4, 1, "", "printNotImplementedError"], [192, 4, 1, "", "versionCheck"]], "pyVHDLParser.DocumentModel": [[194, 5, 1, "", "DOMParserException"], [195, 0, 0, "-", "DesignUnit"], [194, 1, 1, "", "Document"], [201, 0, 0, "-", "ObjectDeclaration"], [202, 0, 0, "-", "Reference"], [203, 0, 0, "-", "Sequential"]], "pyVHDLParser.DocumentModel.DOMParserException": [[194, 4, 1, "", "__init__"], [194, 4, 1, "", "__new__"]], "pyVHDLParser.DocumentModel.DesignUnit": [[196, 0, 0, "-", "Architecture"], [197, 0, 0, "-", "Context"], [198, 0, 0, "-", "Entity"], [199, 0, 0, "-", "Package"], [200, 0, 0, "-", "PackageBody"]], "pyVHDLParser.DocumentModel.DesignUnit.Architecture": [[196, 1, 1, "", "Architecture"]], "pyVHDLParser.DocumentModel.DesignUnit.Architecture.Architecture": [[196, 3, 1, "", "ContextItems"], [196, 3, 1, "", "ContextReferences"], [196, 3, 1, "", "Documentation"], [196, 3, 1, "", "Identifier"], [196, 3, 1, "", "LibraryReferences"], [196, 3, 1, "", "NormalizedIdentifier"], [196, 3, 1, "", "PackageReferences"], [196, 3, 1, "", "Parent"], [196, 4, 1, "", "__init__"], [196, 4, 1, "", "__repr__"], [196, 4, 1, "", "__str__"], [196, 2, 1, "", "_contextItems"], [196, 2, 1, "", "_contextReferences"], [196, 2, 1, "", "_dependencyVertex"], [196, 2, 1, "", "_documentation"], [196, 2, 1, "", "_hierarchyVertex"], [196, 2, 1, "", "_identifier"], [196, 2, 1, "", "_library"], [196, 2, 1, "", "_libraryReferences"], [196, 2, 1, "", "_normalizedIdentifier"], [196, 2, 1, "", "_packageReferences"], [196, 2, 1, "", "_parent"], [196, 2, 1, "", "_referencedContexts"], [196, 2, 1, "", "_referencedLibraries"], [196, 2, 1, "", "_referencedPackages"]], "pyVHDLParser.DocumentModel.DesignUnit.Context": [[197, 1, 1, "", "Context"]], "pyVHDLParser.DocumentModel.DesignUnit.Context.Context": [[197, 3, 1, "", "ContextItems"], [197, 3, 1, "", "ContextReferences"], [197, 3, 1, "", "Documentation"], [197, 3, 1, "", "Identifier"], [197, 3, 1, "", "LibraryReferences"], [197, 3, 1, "", "NormalizedIdentifier"], [197, 3, 1, "", "PackageReferences"], [197, 3, 1, "", "Parent"], [197, 4, 1, "", "__init__"], [197, 4, 1, "", "__str__"], [197, 2, 1, "", "_contextItems"], [197, 2, 1, "", "_contextReferences"], [197, 2, 1, "", "_dependencyVertex"], [197, 2, 1, "", "_documentation"], [197, 2, 1, "", "_hierarchyVertex"], [197, 2, 1, "", "_identifier"], [197, 2, 1, "", "_library"], [197, 2, 1, "", "_libraryReferences"], [197, 2, 1, "", "_normalizedIdentifier"], [197, 2, 1, "", "_packageReferences"], [197, 2, 1, "", "_parent"], [197, 2, 1, "", "_referencedContexts"], [197, 2, 1, "", "_referencedLibraries"], [197, 2, 1, "", "_referencedPackages"]], "pyVHDLParser.DocumentModel.DesignUnit.Entity": [[198, 1, 1, "", "Entity"]], "pyVHDLParser.DocumentModel.DesignUnit.Entity.Entity": [[198, 3, 1, "", "ContextItems"], [198, 3, 1, "", "ContextReferences"], [198, 3, 1, "", "Documentation"], [198, 3, 1, "", "Identifier"], [198, 3, 1, "", "LibraryReferences"], [198, 3, 1, "", "NormalizedIdentifier"], [198, 3, 1, "", "PackageReferences"], [198, 3, 1, "", "Parent"], [198, 4, 1, "", "__init__"], [198, 4, 1, "", "__repr__"], [198, 4, 1, "", "__str__"], [198, 2, 1, "", "_contextItems"], [198, 2, 1, "", "_contextReferences"], [198, 2, 1, "", "_dependencyVertex"], [198, 2, 1, "", "_documentation"], [198, 2, 1, "", "_hierarchyVertex"], [198, 2, 1, "", "_identifier"], [198, 2, 1, "", "_library"], [198, 2, 1, "", "_libraryReferences"], [198, 2, 1, "", "_normalizedIdentifier"], [198, 2, 1, "", "_packageReferences"], [198, 2, 1, "", "_parent"], [198, 2, 1, "", "_referencedContexts"], [198, 2, 1, "", "_referencedLibraries"], [198, 2, 1, "", "_referencedPackages"]], "pyVHDLParser.DocumentModel.DesignUnit.Package": [[199, 1, 1, "", "Package"]], "pyVHDLParser.DocumentModel.DesignUnit.Package.Package": [[199, 3, 1, "", "ContextItems"], [199, 3, 1, "", "ContextReferences"], [199, 3, 1, "", "Documentation"], [199, 3, 1, "", "Identifier"], [199, 3, 1, "", "LibraryReferences"], [199, 3, 1, "", "NormalizedIdentifier"], [199, 3, 1, "", "PackageReferences"], [199, 3, 1, "", "Parent"], [199, 4, 1, "", "__init__"], [199, 4, 1, "", "__repr__"], [199, 4, 1, "", "__str__"], [199, 2, 1, "", "_contextItems"], [199, 2, 1, "", "_contextReferences"], [199, 2, 1, "", "_dependencyVertex"], [199, 2, 1, "", "_documentation"], [199, 2, 1, "", "_hierarchyVertex"], [199, 2, 1, "", "_identifier"], [199, 2, 1, "", "_library"], [199, 2, 1, "", "_libraryReferences"], [199, 2, 1, "", "_normalizedIdentifier"], [199, 2, 1, "", "_packageReferences"], [199, 2, 1, "", "_parent"], [199, 2, 1, "", "_referencedContexts"], [199, 2, 1, "", "_referencedLibraries"], [199, 2, 1, "", "_referencedPackages"]], "pyVHDLParser.DocumentModel.DesignUnit.PackageBody": [[200, 1, 1, "", "PackageBody"]], "pyVHDLParser.DocumentModel.DesignUnit.PackageBody.PackageBody": [[200, 3, 1, "", "ContextItems"], [200, 3, 1, "", "ContextReferences"], [200, 3, 1, "", "Documentation"], [200, 3, 1, "", "Identifier"], [200, 3, 1, "", "LibraryReferences"], [200, 3, 1, "", "NormalizedIdentifier"], [200, 3, 1, "", "PackageReferences"], [200, 3, 1, "", "Parent"], [200, 4, 1, "", "__init__"], [200, 4, 1, "", "__repr__"], [200, 4, 1, "", "__str__"], [200, 2, 1, "", "_contextItems"], [200, 2, 1, "", "_contextReferences"], [200, 2, 1, "", "_dependencyVertex"], [200, 2, 1, "", "_documentation"], [200, 2, 1, "", "_hierarchyVertex"], [200, 2, 1, "", "_identifier"], [200, 2, 1, "", "_library"], [200, 2, 1, "", "_libraryReferences"], [200, 2, 1, "", "_normalizedIdentifier"], [200, 2, 1, "", "_packageReferences"], [200, 2, 1, "", "_parent"], [200, 2, 1, "", "_referencedContexts"], [200, 2, 1, "", "_referencedLibraries"], [200, 2, 1, "", "_referencedPackages"]], "pyVHDLParser.DocumentModel.Document": [[194, 3, 1, "", "Architectures"], [194, 3, 1, "", "Configurations"], [194, 3, 1, "", "Contexts"], [194, 3, 1, "", "DesignUnits"], [194, 3, 1, "", "Documentation"], [194, 3, 1, "", "Entities"], [194, 3, 1, "", "PackageBodies"], [194, 3, 1, "", "Packages"], [194, 3, 1, "", "Parent"], [194, 3, 1, "", "VerificationModes"], [194, 3, 1, "", "VerificationProperties"], [194, 3, 1, "", "VerificationUnits"], [194, 4, 1, "", "__init__"], [194, 2, 1, "", "_architectures"], [194, 2, 1, "", "_configurations"], [194, 2, 1, "", "_contexts"], [194, 2, 1, "", "_designUnits"], [194, 2, 1, "", "_documentation"], [194, 2, 1, "", "_entities"], [194, 2, 1, "", "_packageBodies"], [194, 2, 1, "", "_packages"], [194, 2, 1, "", "_parent"], [194, 2, 1, "", "_path"], [194, 2, 1, "", "_verificationModes"], [194, 2, 1, "", "_verificationProperties"], [194, 2, 1, "", "_verificationUnits"]], "pyVHDLParser.DocumentModel.Sequential": [[204, 0, 0, "-", "Function"]], "pyVHDLParser.Filters": [[206, 0, 0, "-", "Comment"]], "pyVHDLParser.Groups": [[207, 1, 1, "", "BlockIterator"], [207, 1, 1, "", "BlockToGroupParser"], [208, 0, 0, "-", "Comment"], [209, 0, 0, "-", "Concurrent"], [210, 0, 0, "-", "DesignUnit"], [207, 1, 1, "", "EndOfDocumentGroup"], [207, 1, 1, "", "EndOfGroup"], [207, 1, 1, "", "EndOfSnippetGroup"], [207, 1, 1, "", "Group"], [207, 5, 1, "", "GroupParserException"], [211, 0, 0, "-", "List"], [207, 1, 1, "", "MetaGroup"], [212, 0, 0, "-", "Object"], [213, 0, 0, "-", "Reference"], [214, 0, 0, "-", "Sequential"], [207, 1, 1, "", "StartOfDocumentGroup"], [207, 1, 1, "", "StartOfGroup"], [207, 1, 1, "", "StartOfSnippetGroup"]], "pyVHDLParser.Groups.BlockIterator": [[207, 4, 1, "", "__init__"]], "pyVHDLParser.Groups.BlockToGroupParser": [[207, 4, 1, "", "__call__"], [207, 4, 1, "", "__eq__"], [207, 2, 1, "", "__hash__"], [207, 4, 1, "", "__init__"], [207, 4, 1, "", "__ne__"], [207, 4, 1, "", "__str__"]], "pyVHDLParser.Groups.Comment": [[208, 1, 1, "", "CommentGroup"], [208, 1, 1, "", "WhitespaceGroup"]], "pyVHDLParser.Groups.Comment.CommentGroup": [[208, 2, 1, "", "EndBlock"], [208, 2, 1, "", "InnerGroup"], [208, 2, 1, "", "MultiPart"], [208, 2, 1, "", "NextGroup"], [208, 2, 1, "", "StartBlock"], [208, 4, 1, "", "__init__"], [208, 4, 1, "", "__repr__"], [208, 4, 1, "", "__str__"], [208, 2, 1, "", "_previousGroup"], [208, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.Comment.WhitespaceGroup": [[208, 2, 1, "", "EndBlock"], [208, 2, 1, "", "InnerGroup"], [208, 2, 1, "", "MultiPart"], [208, 2, 1, "", "NextGroup"], [208, 2, 1, "", "StartBlock"], [208, 4, 1, "", "__init__"], [208, 4, 1, "", "__repr__"], [208, 4, 1, "", "__str__"], [208, 2, 1, "", "_previousGroup"], [208, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.Concurrent": [[209, 1, 1, "", "AssertGroup"], [209, 1, 1, "", "ReportGroup"], [209, 1, 1, "", "SignalAssignmentGroup"]], "pyVHDLParser.Groups.Concurrent.AssertGroup": [[209, 2, 1, "", "EndBlock"], [209, 2, 1, "", "InnerGroup"], [209, 2, 1, "", "MultiPart"], [209, 2, 1, "", "NextGroup"], [209, 2, 1, "", "StartBlock"], [209, 4, 1, "", "__init__"], [209, 4, 1, "", "__repr__"], [209, 4, 1, "", "__str__"], [209, 2, 1, "", "_previousGroup"], [209, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.Concurrent.ReportGroup": [[209, 2, 1, "", "EndBlock"], [209, 2, 1, "", "InnerGroup"], [209, 2, 1, "", "MultiPart"], [209, 2, 1, "", "NextGroup"], [209, 2, 1, "", "StartBlock"], [209, 4, 1, "", "__init__"], [209, 4, 1, "", "__repr__"], [209, 4, 1, "", "__str__"], [209, 2, 1, "", "_previousGroup"], [209, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.Concurrent.SignalAssignmentGroup": [[209, 2, 1, "", "EndBlock"], [209, 2, 1, "", "InnerGroup"], [209, 2, 1, "", "MultiPart"], [209, 2, 1, "", "NextGroup"], [209, 2, 1, "", "StartBlock"], [209, 4, 1, "", "__init__"], [209, 4, 1, "", "__repr__"], [209, 4, 1, "", "__str__"], [209, 2, 1, "", "_previousGroup"], [209, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.DesignUnit": [[210, 1, 1, "", "ArchitectureGroup"], [210, 1, 1, "", "ComponentGroup"], [210, 1, 1, "", "ConfigurationGroup"], [210, 1, 1, "", "ContextGroup"], [210, 1, 1, "", "EntityGroup"], [210, 1, 1, "", "PackageBodyGroup"], [210, 1, 1, "", "PackageGroup"]], "pyVHDLParser.Groups.DesignUnit.ArchitectureGroup": [[210, 2, 1, "", "EndBlock"], [210, 2, 1, "", "InnerGroup"], [210, 2, 1, "", "MultiPart"], [210, 2, 1, "", "NextGroup"], [210, 2, 1, "", "StartBlock"], [210, 4, 1, "", "__init__"], [210, 4, 1, "", "__repr__"], [210, 4, 1, "", "__str__"], [210, 2, 1, "", "_previousGroup"], [210, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.DesignUnit.ComponentGroup": [[210, 2, 1, "", "EndBlock"], [210, 2, 1, "", "InnerGroup"], [210, 2, 1, "", "MultiPart"], [210, 2, 1, "", "NextGroup"], [210, 2, 1, "", "StartBlock"], [210, 4, 1, "", "__init__"], [210, 4, 1, "", "__repr__"], [210, 4, 1, "", "__str__"], [210, 2, 1, "", "_previousGroup"], [210, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.DesignUnit.ConfigurationGroup": [[210, 2, 1, "", "EndBlock"], [210, 2, 1, "", "InnerGroup"], [210, 2, 1, "", "MultiPart"], [210, 2, 1, "", "NextGroup"], [210, 2, 1, "", "StartBlock"], [210, 4, 1, "", "__init__"], [210, 4, 1, "", "__repr__"], [210, 4, 1, "", "__str__"], [210, 2, 1, "", "_previousGroup"], [210, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.DesignUnit.ContextGroup": [[210, 2, 1, "", "EndBlock"], [210, 2, 1, "", "InnerGroup"], [210, 2, 1, "", "MultiPart"], [210, 2, 1, "", "NextGroup"], [210, 2, 1, "", "StartBlock"], [210, 4, 1, "", "__init__"], [210, 4, 1, "", "__repr__"], [210, 4, 1, "", "__str__"], [210, 2, 1, "", "_previousGroup"], [210, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.DesignUnit.EntityGroup": [[210, 2, 1, "", "EndBlock"], [210, 2, 1, "", "InnerGroup"], [210, 2, 1, "", "MultiPart"], [210, 2, 1, "", "NextGroup"], [210, 2, 1, "", "StartBlock"], [210, 4, 1, "", "__init__"], [210, 4, 1, "", "__repr__"], [210, 4, 1, "", "__str__"], [210, 2, 1, "", "_previousGroup"], [210, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.DesignUnit.PackageBodyGroup": [[210, 2, 1, "", "EndBlock"], [210, 2, 1, "", "InnerGroup"], [210, 2, 1, "", "MultiPart"], [210, 2, 1, "", "NextGroup"], [210, 2, 1, "", "StartBlock"], [210, 4, 1, "", "__init__"], [210, 4, 1, "", "__repr__"], [210, 4, 1, "", "__str__"], [210, 2, 1, "", "_previousGroup"], [210, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.DesignUnit.PackageGroup": [[210, 2, 1, "", "EndBlock"], [210, 2, 1, "", "InnerGroup"], [210, 2, 1, "", "MultiPart"], [210, 2, 1, "", "NextGroup"], [210, 2, 1, "", "StartBlock"], [210, 4, 1, "", "__init__"], [210, 4, 1, "", "__repr__"], [210, 4, 1, "", "__str__"], [210, 2, 1, "", "_previousGroup"], [210, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.EndOfDocumentGroup": [[207, 2, 1, "", "EndBlock"], [207, 2, 1, "", "InnerGroup"], [207, 2, 1, "", "MultiPart"], [207, 2, 1, "", "NextGroup"], [207, 2, 1, "", "StartBlock"], [207, 4, 1, "", "__init__"], [207, 4, 1, "", "__repr__"], [207, 4, 1, "", "__str__"], [207, 2, 1, "", "_previousGroup"], [207, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.EndOfGroup": [[207, 2, 1, "", "EndBlock"], [207, 2, 1, "", "InnerGroup"], [207, 2, 1, "", "MultiPart"], [207, 2, 1, "", "NextGroup"], [207, 2, 1, "", "StartBlock"], [207, 4, 1, "", "__init__"], [207, 4, 1, "", "__repr__"], [207, 4, 1, "", "__str__"], [207, 2, 1, "", "_previousGroup"], [207, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.EndOfSnippetGroup": [[207, 2, 1, "", "EndBlock"], [207, 2, 1, "", "InnerGroup"], [207, 2, 1, "", "MultiPart"], [207, 2, 1, "", "NextGroup"], [207, 2, 1, "", "StartBlock"], [207, 4, 1, "", "__init__"], [207, 4, 1, "", "__repr__"], [207, 4, 1, "", "__str__"], [207, 2, 1, "", "_previousGroup"], [207, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.Group": [[207, 2, 1, "", "EndBlock"], [207, 2, 1, "", "InnerGroup"], [207, 2, 1, "", "MultiPart"], [207, 2, 1, "", "NextGroup"], [207, 2, 1, "", "StartBlock"], [207, 4, 1, "", "__init__"], [207, 4, 1, "", "__repr__"], [207, 4, 1, "", "__str__"], [207, 2, 1, "", "_previousGroup"], [207, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.GroupParserException": [[207, 4, 1, "", "__init__"], [207, 4, 1, "", "__new__"]], "pyVHDLParser.Groups.List": [[211, 1, 1, "", "GenericListGroup"], [211, 1, 1, "", "GenericListItemGroup"], [211, 1, 1, "", "GenericMapGroup"], [211, 1, 1, "", "GenericMapItemGroup"], [211, 1, 1, "", "ParameterListGroup"], [211, 1, 1, "", "ParameterListItemGroup"], [211, 1, 1, "", "ParameterMapGroup"], [211, 1, 1, "", "ParameterMapItemGroup"], [211, 1, 1, "", "PortListGroup"], [211, 1, 1, "", "PortListItemGroup"], [211, 1, 1, "", "PortMapGroup"], [211, 1, 1, "", "PortMapItemGroup"], [211, 1, 1, "", "SensitivityListGroup"], [211, 1, 1, "", "SensitivityListItemGroup"]], "pyVHDLParser.Groups.List.GenericListGroup": [[211, 2, 1, "", "EndBlock"], [211, 2, 1, "", "InnerGroup"], [211, 2, 1, "", "MultiPart"], [211, 2, 1, "", "NextGroup"], [211, 2, 1, "", "StartBlock"], [211, 4, 1, "", "__init__"], [211, 4, 1, "", "__repr__"], [211, 4, 1, "", "__str__"], [211, 2, 1, "", "_previousGroup"], [211, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.List.GenericListItemGroup": [[211, 2, 1, "", "EndBlock"], [211, 2, 1, "", "InnerGroup"], [211, 2, 1, "", "MultiPart"], [211, 2, 1, "", "NextGroup"], [211, 2, 1, "", "StartBlock"], [211, 4, 1, "", "__init__"], [211, 4, 1, "", "__repr__"], [211, 4, 1, "", "__str__"], [211, 2, 1, "", "_previousGroup"], [211, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.List.GenericMapGroup": [[211, 2, 1, "", "EndBlock"], [211, 2, 1, "", "InnerGroup"], [211, 2, 1, "", "MultiPart"], [211, 2, 1, "", "NextGroup"], [211, 2, 1, "", "StartBlock"], [211, 4, 1, "", "__init__"], [211, 4, 1, "", "__repr__"], [211, 4, 1, "", "__str__"], [211, 2, 1, "", "_previousGroup"], [211, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.List.GenericMapItemGroup": [[211, 2, 1, "", "EndBlock"], [211, 2, 1, "", "InnerGroup"], [211, 2, 1, "", "MultiPart"], [211, 2, 1, "", "NextGroup"], [211, 2, 1, "", "StartBlock"], [211, 4, 1, "", "__init__"], [211, 4, 1, "", "__repr__"], [211, 4, 1, "", "__str__"], [211, 2, 1, "", "_previousGroup"], [211, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.List.ParameterListGroup": [[211, 2, 1, "", "EndBlock"], [211, 2, 1, "", "InnerGroup"], [211, 2, 1, "", "MultiPart"], [211, 2, 1, "", "NextGroup"], [211, 2, 1, "", "StartBlock"], [211, 4, 1, "", "__init__"], [211, 4, 1, "", "__repr__"], [211, 4, 1, "", "__str__"], [211, 2, 1, "", "_previousGroup"], [211, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.List.ParameterListItemGroup": [[211, 2, 1, "", "EndBlock"], [211, 2, 1, "", "InnerGroup"], [211, 2, 1, "", "MultiPart"], [211, 2, 1, "", "NextGroup"], [211, 2, 1, "", "StartBlock"], [211, 4, 1, "", "__init__"], [211, 4, 1, "", "__repr__"], [211, 4, 1, "", "__str__"], [211, 2, 1, "", "_previousGroup"], [211, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.List.ParameterMapGroup": [[211, 2, 1, "", "EndBlock"], [211, 2, 1, "", "InnerGroup"], [211, 2, 1, "", "MultiPart"], [211, 2, 1, "", "NextGroup"], [211, 2, 1, "", "StartBlock"], [211, 4, 1, "", "__init__"], [211, 4, 1, "", "__repr__"], [211, 4, 1, "", "__str__"], [211, 2, 1, "", "_previousGroup"], [211, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.List.ParameterMapItemGroup": [[211, 2, 1, "", "EndBlock"], [211, 2, 1, "", "InnerGroup"], [211, 2, 1, "", "MultiPart"], [211, 2, 1, "", "NextGroup"], [211, 2, 1, "", "StartBlock"], [211, 4, 1, "", "__init__"], [211, 4, 1, "", "__repr__"], [211, 4, 1, "", "__str__"], [211, 2, 1, "", "_previousGroup"], [211, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.List.PortListGroup": [[211, 2, 1, "", "EndBlock"], [211, 2, 1, "", "InnerGroup"], [211, 2, 1, "", "MultiPart"], [211, 2, 1, "", "NextGroup"], [211, 2, 1, "", "StartBlock"], [211, 4, 1, "", "__init__"], [211, 4, 1, "", "__repr__"], [211, 4, 1, "", "__str__"], [211, 2, 1, "", "_previousGroup"], [211, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.List.PortListItemGroup": [[211, 2, 1, "", "EndBlock"], [211, 2, 1, "", "InnerGroup"], [211, 2, 1, "", "MultiPart"], [211, 2, 1, "", "NextGroup"], [211, 2, 1, "", "StartBlock"], [211, 4, 1, "", "__init__"], [211, 4, 1, "", "__repr__"], [211, 4, 1, "", "__str__"], [211, 2, 1, "", "_previousGroup"], [211, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.List.PortMapGroup": [[211, 2, 1, "", "EndBlock"], [211, 2, 1, "", "InnerGroup"], [211, 2, 1, "", "MultiPart"], [211, 2, 1, "", "NextGroup"], [211, 2, 1, "", "StartBlock"], [211, 4, 1, "", "__init__"], [211, 4, 1, "", "__repr__"], [211, 4, 1, "", "__str__"], [211, 2, 1, "", "_previousGroup"], [211, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.List.PortMapItemGroup": [[211, 2, 1, "", "EndBlock"], [211, 2, 1, "", "InnerGroup"], [211, 2, 1, "", "MultiPart"], [211, 2, 1, "", "NextGroup"], [211, 2, 1, "", "StartBlock"], [211, 4, 1, "", "__init__"], [211, 4, 1, "", "__repr__"], [211, 4, 1, "", "__str__"], [211, 2, 1, "", "_previousGroup"], [211, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.List.SensitivityListGroup": [[211, 2, 1, "", "EndBlock"], [211, 2, 1, "", "InnerGroup"], [211, 2, 1, "", "MultiPart"], [211, 2, 1, "", "NextGroup"], [211, 2, 1, "", "StartBlock"], [211, 4, 1, "", "__init__"], [211, 4, 1, "", "__repr__"], [211, 4, 1, "", "__str__"], [211, 2, 1, "", "_previousGroup"], [211, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.List.SensitivityListItemGroup": [[211, 2, 1, "", "EndBlock"], [211, 2, 1, "", "InnerGroup"], [211, 2, 1, "", "MultiPart"], [211, 2, 1, "", "NextGroup"], [211, 2, 1, "", "StartBlock"], [211, 4, 1, "", "__init__"], [211, 4, 1, "", "__repr__"], [211, 4, 1, "", "__str__"], [211, 2, 1, "", "_previousGroup"], [211, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.MetaGroup": [[207, 2, 1, "", "__base__"], [207, 4, 1, "", "__call__"], [207, 4, 1, "", "__delattr__"], [207, 4, 1, "", "__dir__"], [207, 4, 1, "", "__getattribute__"], [207, 4, 1, "", "__init__"], [207, 4, 1, "", "__instancecheck__"], [207, 4, 1, "", "__new__"], [207, 4, 1, "", "__or__"], [207, 4, 1, "", "__prepare__"], [207, 4, 1, "", "__repr__"], [207, 4, 1, "", "__ror__"], [207, 4, 1, "", "__setattr__"], [207, 4, 1, "", "__sizeof__"], [207, 4, 1, "", "__subclasscheck__"], [207, 4, 1, "", "__subclasses__"], [207, 2, 1, "", "__text_signature__"], [207, 4, 1, "", "_checkForAbstractMethods"], [207, 4, 1, "", "_wrapNewMethodIfAbstract"], [207, 4, 1, "", "_wrapNewMethodIfSingleton"], [207, 4, 1, "", "mro"]], "pyVHDLParser.Groups.Object": [[212, 1, 1, "", "ConstantGroup"], [212, 1, 1, "", "SignalGroup"], [212, 1, 1, "", "VariableGroup"]], "pyVHDLParser.Groups.Object.ConstantGroup": [[212, 2, 1, "", "EndBlock"], [212, 2, 1, "", "InnerGroup"], [212, 2, 1, "", "MultiPart"], [212, 2, 1, "", "NextGroup"], [212, 2, 1, "", "StartBlock"], [212, 4, 1, "", "__init__"], [212, 4, 1, "", "__repr__"], [212, 4, 1, "", "__str__"], [212, 2, 1, "", "_previousGroup"], [212, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.Object.SignalGroup": [[212, 2, 1, "", "EndBlock"], [212, 2, 1, "", "InnerGroup"], [212, 2, 1, "", "MultiPart"], [212, 2, 1, "", "NextGroup"], [212, 2, 1, "", "StartBlock"], [212, 4, 1, "", "__init__"], [212, 4, 1, "", "__repr__"], [212, 4, 1, "", "__str__"], [212, 2, 1, "", "_previousGroup"], [212, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.Object.VariableGroup": [[212, 2, 1, "", "EndBlock"], [212, 2, 1, "", "InnerGroup"], [212, 2, 1, "", "MultiPart"], [212, 2, 1, "", "NextGroup"], [212, 2, 1, "", "StartBlock"], [212, 4, 1, "", "__init__"], [212, 4, 1, "", "__repr__"], [212, 4, 1, "", "__str__"], [212, 2, 1, "", "_previousGroup"], [212, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.Reference": [[213, 1, 1, "", "LibraryGroup"], [213, 1, 1, "", "UseGroup"]], "pyVHDLParser.Groups.Reference.LibraryGroup": [[213, 2, 1, "", "EndBlock"], [213, 2, 1, "", "InnerGroup"], [213, 2, 1, "", "MultiPart"], [213, 2, 1, "", "NextGroup"], [213, 2, 1, "", "StartBlock"], [213, 4, 1, "", "__init__"], [213, 4, 1, "", "__repr__"], [213, 4, 1, "", "__str__"], [213, 2, 1, "", "_previousGroup"], [213, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.Reference.UseGroup": [[213, 2, 1, "", "EndBlock"], [213, 2, 1, "", "InnerGroup"], [213, 2, 1, "", "MultiPart"], [213, 2, 1, "", "NextGroup"], [213, 2, 1, "", "StartBlock"], [213, 4, 1, "", "__init__"], [213, 4, 1, "", "__repr__"], [213, 4, 1, "", "__str__"], [213, 2, 1, "", "_previousGroup"], [213, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.Sequential": [[215, 0, 0, "-", "Function"], [216, 0, 0, "-", "Procedure"], [217, 0, 0, "-", "Process"]], "pyVHDLParser.Groups.Sequential.Function": [[215, 1, 1, "", "FunctionGroup"], [215, 1, 1, "", "ReturnTypeGroup"]], "pyVHDLParser.Groups.Sequential.Function.FunctionGroup": [[215, 2, 1, "", "EndBlock"], [215, 2, 1, "", "InnerGroup"], [215, 2, 1, "", "MultiPart"], [215, 2, 1, "", "NextGroup"], [215, 2, 1, "", "StartBlock"], [215, 4, 1, "", "__init__"], [215, 4, 1, "", "__repr__"], [215, 4, 1, "", "__str__"], [215, 2, 1, "", "_previousGroup"], [215, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.Sequential.Function.ReturnTypeGroup": [[215, 2, 1, "", "EndBlock"], [215, 2, 1, "", "InnerGroup"], [215, 2, 1, "", "MultiPart"], [215, 2, 1, "", "NextGroup"], [215, 2, 1, "", "StartBlock"], [215, 4, 1, "", "__init__"], [215, 4, 1, "", "__repr__"], [215, 4, 1, "", "__str__"], [215, 2, 1, "", "_previousGroup"], [215, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.Sequential.Procedure": [[216, 1, 1, "", "ProcedureGroup"]], "pyVHDLParser.Groups.Sequential.Procedure.ProcedureGroup": [[216, 2, 1, "", "EndBlock"], [216, 2, 1, "", "InnerGroup"], [216, 2, 1, "", "MultiPart"], [216, 2, 1, "", "NextGroup"], [216, 2, 1, "", "StartBlock"], [216, 4, 1, "", "__init__"], [216, 4, 1, "", "__repr__"], [216, 4, 1, "", "__str__"], [216, 2, 1, "", "_previousGroup"], [216, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.Sequential.Process": [[217, 1, 1, "", "CaseGroup"], [217, 1, 1, "", "ChoiceGroup"], [217, 1, 1, "", "ElsIfBranchGroup"], [217, 1, 1, "", "ElseBranchGroup"], [217, 1, 1, "", "ExitGroup"], [217, 1, 1, "", "ForLoopGroup"], [217, 1, 1, "", "IfBranchGroup"], [217, 1, 1, "", "IfGroup"], [217, 1, 1, "", "NextGroup"], [217, 1, 1, "", "ProcessGroup"], [217, 1, 1, "", "ReturnGroup"], [217, 1, 1, "", "SignalAssignmentGroup"], [217, 1, 1, "", "VariableAssignmentGroup"], [217, 1, 1, "", "WhileLoopGroup"]], "pyVHDLParser.Groups.Sequential.Process.CaseGroup": [[217, 2, 1, "", "EndBlock"], [217, 2, 1, "", "InnerGroup"], [217, 2, 1, "", "MultiPart"], [217, 2, 1, "", "NextGroup"], [217, 2, 1, "", "StartBlock"], [217, 4, 1, "", "__init__"], [217, 4, 1, "", "__repr__"], [217, 4, 1, "", "__str__"], [217, 2, 1, "", "_previousGroup"], [217, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.Sequential.Process.ChoiceGroup": [[217, 2, 1, "", "EndBlock"], [217, 2, 1, "", "InnerGroup"], [217, 2, 1, "", "MultiPart"], [217, 2, 1, "", "NextGroup"], [217, 2, 1, "", "StartBlock"], [217, 4, 1, "", "__init__"], [217, 4, 1, "", "__repr__"], [217, 4, 1, "", "__str__"], [217, 2, 1, "", "_previousGroup"], [217, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.Sequential.Process.ElsIfBranchGroup": [[217, 2, 1, "", "EndBlock"], [217, 2, 1, "", "InnerGroup"], [217, 2, 1, "", "MultiPart"], [217, 2, 1, "", "NextGroup"], [217, 2, 1, "", "StartBlock"], [217, 4, 1, "", "__init__"], [217, 4, 1, "", "__repr__"], [217, 4, 1, "", "__str__"], [217, 2, 1, "", "_previousGroup"], [217, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.Sequential.Process.ElseBranchGroup": [[217, 2, 1, "", "EndBlock"], [217, 2, 1, "", "InnerGroup"], [217, 2, 1, "", "MultiPart"], [217, 2, 1, "", "NextGroup"], [217, 2, 1, "", "StartBlock"], [217, 4, 1, "", "__init__"], [217, 4, 1, "", "__repr__"], [217, 4, 1, "", "__str__"], [217, 2, 1, "", "_previousGroup"], [217, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.Sequential.Process.ExitGroup": [[217, 2, 1, "", "EndBlock"], [217, 2, 1, "", "InnerGroup"], [217, 2, 1, "", "MultiPart"], [217, 2, 1, "", "NextGroup"], [217, 2, 1, "", "StartBlock"], [217, 4, 1, "", "__init__"], [217, 4, 1, "", "__repr__"], [217, 4, 1, "", "__str__"], [217, 2, 1, "", "_previousGroup"], [217, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.Sequential.Process.ForLoopGroup": [[217, 2, 1, "", "EndBlock"], [217, 2, 1, "", "InnerGroup"], [217, 2, 1, "", "MultiPart"], [217, 2, 1, "", "NextGroup"], [217, 2, 1, "", "StartBlock"], [217, 4, 1, "", "__init__"], [217, 4, 1, "", "__repr__"], [217, 4, 1, "", "__str__"], [217, 2, 1, "", "_previousGroup"], [217, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.Sequential.Process.IfBranchGroup": [[217, 2, 1, "", "EndBlock"], [217, 2, 1, "", "InnerGroup"], [217, 2, 1, "", "MultiPart"], [217, 2, 1, "", "NextGroup"], [217, 2, 1, "", "StartBlock"], [217, 4, 1, "", "__init__"], [217, 4, 1, "", "__repr__"], [217, 4, 1, "", "__str__"], [217, 2, 1, "", "_previousGroup"], [217, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.Sequential.Process.IfGroup": [[217, 2, 1, "", "EndBlock"], [217, 2, 1, "", "InnerGroup"], [217, 2, 1, "", "MultiPart"], [217, 2, 1, "", "NextGroup"], [217, 2, 1, "", "StartBlock"], [217, 4, 1, "", "__init__"], [217, 4, 1, "", "__repr__"], [217, 4, 1, "", "__str__"], [217, 2, 1, "", "_previousGroup"], [217, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.Sequential.Process.NextGroup": [[217, 2, 1, "", "EndBlock"], [217, 2, 1, "", "InnerGroup"], [217, 2, 1, "", "MultiPart"], [217, 2, 1, "", "NextGroup"], [217, 2, 1, "", "StartBlock"], [217, 4, 1, "", "__init__"], [217, 4, 1, "", "__repr__"], [217, 4, 1, "", "__str__"], [217, 2, 1, "", "_previousGroup"], [217, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.Sequential.Process.ProcessGroup": [[217, 2, 1, "", "EndBlock"], [217, 2, 1, "", "InnerGroup"], [217, 2, 1, "", "MultiPart"], [217, 2, 1, "", "NextGroup"], [217, 2, 1, "", "StartBlock"], [217, 4, 1, "", "__init__"], [217, 4, 1, "", "__repr__"], [217, 4, 1, "", "__str__"], [217, 2, 1, "", "_previousGroup"], [217, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.Sequential.Process.ReturnGroup": [[217, 2, 1, "", "EndBlock"], [217, 2, 1, "", "InnerGroup"], [217, 2, 1, "", "MultiPart"], [217, 2, 1, "", "NextGroup"], [217, 2, 1, "", "StartBlock"], [217, 4, 1, "", "__init__"], [217, 4, 1, "", "__repr__"], [217, 4, 1, "", "__str__"], [217, 2, 1, "", "_previousGroup"], [217, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.Sequential.Process.SignalAssignmentGroup": [[217, 2, 1, "", "EndBlock"], [217, 2, 1, "", "InnerGroup"], [217, 2, 1, "", "MultiPart"], [217, 2, 1, "", "NextGroup"], [217, 2, 1, "", "StartBlock"], [217, 4, 1, "", "__init__"], [217, 4, 1, "", "__repr__"], [217, 4, 1, "", "__str__"], [217, 2, 1, "", "_previousGroup"], [217, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.Sequential.Process.VariableAssignmentGroup": [[217, 2, 1, "", "EndBlock"], [217, 2, 1, "", "InnerGroup"], [217, 2, 1, "", "MultiPart"], [217, 2, 1, "", "NextGroup"], [217, 2, 1, "", "StartBlock"], [217, 4, 1, "", "__init__"], [217, 4, 1, "", "__repr__"], [217, 4, 1, "", "__str__"], [217, 2, 1, "", "_previousGroup"], [217, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.Sequential.Process.WhileLoopGroup": [[217, 2, 1, "", "EndBlock"], [217, 2, 1, "", "InnerGroup"], [217, 2, 1, "", "MultiPart"], [217, 2, 1, "", "NextGroup"], [217, 2, 1, "", "StartBlock"], [217, 4, 1, "", "__init__"], [217, 4, 1, "", "__repr__"], [217, 4, 1, "", "__str__"], [217, 2, 1, "", "_previousGroup"], [217, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.StartOfDocumentGroup": [[207, 2, 1, "", "EndBlock"], [207, 2, 1, "", "InnerGroup"], [207, 2, 1, "", "MultiPart"], [207, 2, 1, "", "NextGroup"], [207, 2, 1, "", "StartBlock"], [207, 4, 1, "", "__init__"], [207, 4, 1, "", "__repr__"], [207, 4, 1, "", "__str__"], [207, 2, 1, "", "_previousGroup"], [207, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.StartOfGroup": [[207, 2, 1, "", "EndBlock"], [207, 2, 1, "", "InnerGroup"], [207, 2, 1, "", "MultiPart"], [207, 2, 1, "", "NextGroup"], [207, 2, 1, "", "StartBlock"], [207, 4, 1, "", "__init__"], [207, 4, 1, "", "__repr__"], [207, 4, 1, "", "__str__"], [207, 2, 1, "", "_previousGroup"], [207, 2, 1, "", "_subGroups"]], "pyVHDLParser.Groups.StartOfSnippetGroup": [[207, 2, 1, "", "EndBlock"], [207, 2, 1, "", "InnerGroup"], [207, 2, 1, "", "MultiPart"], [207, 2, 1, "", "NextGroup"], [207, 2, 1, "", "StartBlock"], [207, 4, 1, "", "__init__"], [207, 4, 1, "", "__repr__"], [207, 4, 1, "", "__str__"], [207, 2, 1, "", "_previousGroup"], [207, 2, 1, "", "_subGroups"]], "pyVHDLParser.LanguageModel": [[219, 0, 0, "-", "DesignUnit"], [220, 0, 0, "-", "Expression"], [221, 0, 0, "-", "InterfaceItem"], [222, 0, 0, "-", "Reference"]], "pyVHDLParser.LanguageModel.DesignUnit": [[219, 1, 1, "", "Architecture"], [219, 1, 1, "", "Configuration"], [219, 1, 1, "", "Context"], [219, 1, 1, "", "Entity"], [219, 1, 1, "", "Package"], [219, 1, 1, "", "PackageBody"]], "pyVHDLParser.LanguageModel.DesignUnit.Architecture": [[219, 3, 1, "", "ContextItems"], [219, 3, 1, "", "ContextReferences"], [219, 3, 1, "", "Documentation"], [219, 3, 1, "", "Identifier"], [219, 3, 1, "", "LibraryReferences"], [219, 3, 1, "", "NormalizedIdentifier"], [219, 3, 1, "", "PackageReferences"], [219, 3, 1, "", "Parent"], [219, 4, 1, "", "__init__"], [219, 4, 1, "", "__repr__"], [219, 4, 1, "", "__str__"], [219, 2, 1, "", "_contextItems"], [219, 2, 1, "", "_contextReferences"], [219, 2, 1, "", "_dependencyVertex"], [219, 2, 1, "", "_documentation"], [219, 2, 1, "", "_hierarchyVertex"], [219, 2, 1, "", "_identifier"], [219, 2, 1, "", "_library"], [219, 2, 1, "", "_libraryReferences"], [219, 2, 1, "", "_normalizedIdentifier"], [219, 2, 1, "", "_packageReferences"], [219, 2, 1, "", "_parent"], [219, 2, 1, "", "_referencedContexts"], [219, 2, 1, "", "_referencedLibraries"], [219, 2, 1, "", "_referencedPackages"]], "pyVHDLParser.LanguageModel.DesignUnit.Configuration": [[219, 3, 1, "", "ContextItems"], [219, 3, 1, "", "ContextReferences"], [219, 3, 1, "", "Documentation"], [219, 3, 1, "", "Identifier"], [219, 3, 1, "", "LibraryReferences"], [219, 3, 1, "", "NormalizedIdentifier"], [219, 3, 1, "", "PackageReferences"], [219, 3, 1, "", "Parent"], [219, 4, 1, "", "__init__"], [219, 4, 1, "", "__repr__"], [219, 4, 1, "", "__str__"], [219, 2, 1, "", "_contextItems"], [219, 2, 1, "", "_contextReferences"], [219, 2, 1, "", "_dependencyVertex"], [219, 2, 1, "", "_documentation"], [219, 2, 1, "", "_hierarchyVertex"], [219, 2, 1, "", "_identifier"], [219, 2, 1, "", "_library"], [219, 2, 1, "", "_libraryReferences"], [219, 2, 1, "", "_normalizedIdentifier"], [219, 2, 1, "", "_packageReferences"], [219, 2, 1, "", "_parent"], [219, 2, 1, "", "_referencedContexts"], [219, 2, 1, "", "_referencedLibraries"], [219, 2, 1, "", "_referencedPackages"]], "pyVHDLParser.LanguageModel.DesignUnit.Context": [[219, 3, 1, "", "ContextItems"], [219, 3, 1, "", "ContextReferences"], [219, 3, 1, "", "Documentation"], [219, 3, 1, "", "Identifier"], [219, 3, 1, "", "LibraryReferences"], [219, 3, 1, "", "NormalizedIdentifier"], [219, 3, 1, "", "PackageReferences"], [219, 3, 1, "", "Parent"], [219, 4, 1, "", "__init__"], [219, 4, 1, "", "__str__"], [219, 2, 1, "", "_contextItems"], [219, 2, 1, "", "_contextReferences"], [219, 2, 1, "", "_dependencyVertex"], [219, 2, 1, "", "_documentation"], [219, 2, 1, "", "_hierarchyVertex"], [219, 2, 1, "", "_identifier"], [219, 2, 1, "", "_library"], [219, 2, 1, "", "_libraryReferences"], [219, 2, 1, "", "_normalizedIdentifier"], [219, 2, 1, "", "_packageReferences"], [219, 2, 1, "", "_parent"], [219, 2, 1, "", "_referencedContexts"], [219, 2, 1, "", "_referencedLibraries"], [219, 2, 1, "", "_referencedPackages"]], "pyVHDLParser.LanguageModel.DesignUnit.Entity": [[219, 3, 1, "", "ContextItems"], [219, 3, 1, "", "ContextReferences"], [219, 3, 1, "", "Documentation"], [219, 3, 1, "", "Identifier"], [219, 3, 1, "", "LibraryReferences"], [219, 3, 1, "", "NormalizedIdentifier"], [219, 3, 1, "", "PackageReferences"], [219, 3, 1, "", "Parent"], [219, 4, 1, "", "__init__"], [219, 4, 1, "", "__repr__"], [219, 4, 1, "", "__str__"], [219, 2, 1, "", "_contextItems"], [219, 2, 1, "", "_contextReferences"], [219, 2, 1, "", "_dependencyVertex"], [219, 2, 1, "", "_documentation"], [219, 2, 1, "", "_hierarchyVertex"], [219, 2, 1, "", "_identifier"], [219, 2, 1, "", "_library"], [219, 2, 1, "", "_libraryReferences"], [219, 2, 1, "", "_normalizedIdentifier"], [219, 2, 1, "", "_packageReferences"], [219, 2, 1, "", "_parent"], [219, 2, 1, "", "_referencedContexts"], [219, 2, 1, "", "_referencedLibraries"], [219, 2, 1, "", "_referencedPackages"]], "pyVHDLParser.LanguageModel.DesignUnit.Package": [[219, 3, 1, "", "ContextItems"], [219, 3, 1, "", "ContextReferences"], [219, 3, 1, "", "Documentation"], [219, 3, 1, "", "Identifier"], [219, 3, 1, "", "LibraryReferences"], [219, 3, 1, "", "NormalizedIdentifier"], [219, 3, 1, "", "PackageReferences"], [219, 3, 1, "", "Parent"], [219, 4, 1, "", "__init__"], [219, 4, 1, "", "__repr__"], [219, 4, 1, "", "__str__"], [219, 2, 1, "", "_contextItems"], [219, 2, 1, "", "_contextReferences"], [219, 2, 1, "", "_dependencyVertex"], [219, 2, 1, "", "_documentation"], [219, 2, 1, "", "_hierarchyVertex"], [219, 2, 1, "", "_identifier"], [219, 2, 1, "", "_library"], [219, 2, 1, "", "_libraryReferences"], [219, 2, 1, "", "_normalizedIdentifier"], [219, 2, 1, "", "_packageReferences"], [219, 2, 1, "", "_parent"], [219, 2, 1, "", "_referencedContexts"], [219, 2, 1, "", "_referencedLibraries"], [219, 2, 1, "", "_referencedPackages"]], "pyVHDLParser.LanguageModel.DesignUnit.PackageBody": [[219, 3, 1, "", "ContextItems"], [219, 3, 1, "", "ContextReferences"], [219, 3, 1, "", "Documentation"], [219, 3, 1, "", "Identifier"], [219, 3, 1, "", "LibraryReferences"], [219, 3, 1, "", "NormalizedIdentifier"], [219, 3, 1, "", "PackageReferences"], [219, 3, 1, "", "Parent"], [219, 4, 1, "", "__init__"], [219, 4, 1, "", "__repr__"], [219, 4, 1, "", "__str__"], [219, 2, 1, "", "_contextItems"], [219, 2, 1, "", "_contextReferences"], [219, 2, 1, "", "_dependencyVertex"], [219, 2, 1, "", "_documentation"], [219, 2, 1, "", "_hierarchyVertex"], [219, 2, 1, "", "_identifier"], [219, 2, 1, "", "_library"], [219, 2, 1, "", "_libraryReferences"], [219, 2, 1, "", "_normalizedIdentifier"], [219, 2, 1, "", "_packageReferences"], [219, 2, 1, "", "_parent"], [219, 2, 1, "", "_referencedContexts"], [219, 2, 1, "", "_referencedLibraries"], [219, 2, 1, "", "_referencedPackages"]], "pyVHDLParser.NetlistModel": [[224, 0, 0, "-", "NetlistModel"]], "pyVHDLParser.NetlistModel.NetlistModel": [[224, 1, 1, "", "ModelBase"], [224, 1, 1, "", "Netlist"], [224, 1, 1, "", "Primitive"], [224, 1, 1, "", "Wire"]], "pyVHDLParser.SimulationModel": [[226, 0, 0, "-", "EventSystem"], [227, 0, 0, "-", "SimulationModel"]], "pyVHDLParser.SimulationModel.EventSystem": [[226, 1, 1, "", "Event"], [226, 1, 1, "", "ProjectedWaveform"], [226, 1, 1, "", "Scheduler"], [226, 1, 1, "", "TimeLine"], [226, 1, 1, "", "Transaction"], [226, 1, 1, "", "Waveform"]], "pyVHDLParser.SimulationModel.EventSystem.Event": [[226, 4, 1, "", "__init__"]], "pyVHDLParser.SimulationModel.EventSystem.ProjectedWaveform": [[226, 4, 1, "", "__init__"]], "pyVHDLParser.SimulationModel.EventSystem.Scheduler": [[226, 4, 1, "", "__init__"]], "pyVHDLParser.SimulationModel.EventSystem.TimeLine": [[226, 4, 1, "", "__init__"]], "pyVHDLParser.SimulationModel.EventSystem.Transaction": [[226, 4, 1, "", "__init__"], [226, 4, 1, "", "__repr__"], [226, 4, 1, "", "__str__"]], "pyVHDLParser.SimulationModel.EventSystem.Waveform": [[226, 4, 1, "", "__init__"]], "pyVHDLParser.SimulationModel.SimulationModel": [[227, 1, 1, "", "Driver"], [227, 1, 1, "", "DrivingValue"], [227, 1, 1, "", "Path"], [227, 1, 1, "", "Process"], [227, 1, 1, "", "ResolutionFunction"], [227, 1, 1, "", "Signal"], [227, 1, 1, "", "Simulation"], [227, 1, 1, "", "Source"]], "pyVHDLParser.SimulationModel.SimulationModel.Path": [[227, 4, 1, "", "__init__"], [227, 4, 1, "", "__repr__"], [227, 4, 1, "", "__str__"]], "pyVHDLParser.SimulationModel.SimulationModel.Process": [[227, 4, 1, "", "__init__"]], "pyVHDLParser.SimulationModel.SimulationModel.ResolutionFunction": [[227, 4, 1, "", "__init__"]], "pyVHDLParser.SimulationModel.SimulationModel.Signal": [[227, 4, 1, "", "__init__"], [227, 4, 1, "", "__repr__"], [227, 4, 1, "", "__str__"]], "pyVHDLParser.SimulationModel.SimulationModel.Simulation": [[227, 4, 1, "", "__init__"]], "pyVHDLParser.Token": [[229, 1, 1, "", "BitStringLiteralToken"], [229, 1, 1, "", "CharacterLiteralToken"], [229, 1, 1, "", "CharacterToken"], [229, 6, 1, "", "CharacterTranslation"], [229, 1, 1, "", "CommentToken"], [229, 1, 1, "", "DirectiveToken"], [229, 1, 1, "", "EndOfDocumentToken"], [229, 1, 1, "", "EndOfSnippetToken"], [229, 1, 1, "", "EndOfToken"], [229, 1, 1, "", "ExtendedIdentifier"], [229, 1, 1, "", "FusedCharacterToken"], [229, 1, 1, "", "IndentationToken"], [229, 1, 1, "", "IntegerLiteralToken"], [230, 0, 0, "-", "Keywords"], [229, 1, 1, "", "LinebreakToken"], [229, 1, 1, "", "LiteralToken"], [229, 1, 1, "", "MultiLineCommentToken"], [231, 0, 0, "-", "Parser"], [229, 1, 1, "", "RealLiteralToken"], [229, 1, 1, "", "SingleLineCommentToken"], [229, 1, 1, "", "SpaceToken"], [229, 1, 1, "", "StartOfDocumentToken"], [229, 1, 1, "", "StartOfSnippetToken"], [229, 1, 1, "", "StartOfToken"], [229, 1, 1, "", "StringLiteralToken"], [229, 1, 1, "", "Token"], [229, 1, 1, "", "TokenIterator"], [229, 1, 1, "", "TokenReverseIterator"], [229, 1, 1, "", "VHDLToken"], [229, 1, 1, "", "ValuedToken"], [229, 1, 1, "", "WordToken"]], "pyVHDLParser.Token.BitStringLiteralToken": [[229, 2, 1, "", "End"], [229, 2, 1, "", "NextToken"], [229, 2, 1, "", "Start"], [229, 2, 1, "", "Value"], [229, 4, 1, "", "__eq__"], [229, 4, 1, "", "__hash__"], [229, 4, 1, "", "__init__"], [229, 4, 1, "", "__ne__"], [229, 4, 1, "", "__repr__"], [229, 4, 1, "", "__str__"], [229, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.CharacterLiteralToken": [[229, 2, 1, "", "End"], [229, 2, 1, "", "NextToken"], [229, 2, 1, "", "Start"], [229, 2, 1, "", "Value"], [229, 4, 1, "", "__eq__"], [229, 4, 1, "", "__hash__"], [229, 4, 1, "", "__init__"], [229, 4, 1, "", "__ne__"], [229, 4, 1, "", "__repr__"], [229, 4, 1, "", "__str__"], [229, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.CharacterToken": [[229, 2, 1, "", "End"], [229, 2, 1, "", "NextToken"], [229, 2, 1, "", "Start"], [229, 2, 1, "", "Value"], [229, 4, 1, "", "__eq__"], [229, 4, 1, "", "__hash__"], [229, 4, 1, "", "__init__"], [229, 4, 1, "", "__ne__"], [229, 4, 1, "", "__repr__"], [229, 4, 1, "", "__str__"], [229, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.CommentToken": [[229, 2, 1, "", "End"], [229, 2, 1, "", "NextToken"], [229, 2, 1, "", "Start"], [229, 2, 1, "", "Value"], [229, 4, 1, "", "__eq__"], [229, 4, 1, "", "__hash__"], [229, 4, 1, "", "__init__"], [229, 4, 1, "", "__ne__"], [229, 4, 1, "", "__repr__"], [229, 4, 1, "", "__str__"], [229, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.DirectiveToken": [[229, 2, 1, "", "End"], [229, 2, 1, "", "NextToken"], [229, 2, 1, "", "Start"], [229, 2, 1, "", "Value"], [229, 4, 1, "", "__eq__"], [229, 4, 1, "", "__hash__"], [229, 4, 1, "", "__init__"], [229, 4, 1, "", "__ne__"], [229, 4, 1, "", "__repr__"], [229, 4, 1, "", "__str__"], [229, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.EndOfDocumentToken": [[229, 2, 1, "", "End"], [229, 2, 1, "", "NextToken"], [229, 2, 1, "", "Start"], [229, 4, 1, "", "__init__"], [229, 4, 1, "", "__len__"], [229, 4, 1, "", "__repr__"], [229, 4, 1, "", "__str__"], [229, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.EndOfSnippetToken": [[229, 2, 1, "", "End"], [229, 2, 1, "", "NextToken"], [229, 2, 1, "", "Start"], [229, 4, 1, "", "__init__"], [229, 4, 1, "", "__len__"], [229, 4, 1, "", "__repr__"], [229, 4, 1, "", "__str__"], [229, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.EndOfToken": [[229, 2, 1, "", "End"], [229, 2, 1, "", "NextToken"], [229, 2, 1, "", "Start"], [229, 4, 1, "", "__init__"], [229, 4, 1, "", "__len__"], [229, 4, 1, "", "__repr__"], [229, 4, 1, "", "__str__"], [229, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.ExtendedIdentifier": [[229, 2, 1, "", "End"], [229, 2, 1, "", "NextToken"], [229, 2, 1, "", "Start"], [229, 2, 1, "", "Value"], [229, 4, 1, "", "__eq__"], [229, 4, 1, "", "__hash__"], [229, 4, 1, "", "__init__"], [229, 4, 1, "", "__ne__"], [229, 4, 1, "", "__repr__"], [229, 4, 1, "", "__str__"], [229, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.FusedCharacterToken": [[229, 2, 1, "", "End"], [229, 2, 1, "", "NextToken"], [229, 2, 1, "", "Start"], [229, 2, 1, "", "Value"], [229, 4, 1, "", "__eq__"], [229, 4, 1, "", "__hash__"], [229, 4, 1, "", "__init__"], [229, 4, 1, "", "__ne__"], [229, 4, 1, "", "__repr__"], [229, 4, 1, "", "__str__"], [229, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.IndentationToken": [[229, 2, 1, "", "End"], [229, 2, 1, "", "NextToken"], [229, 2, 1, "", "Start"], [229, 2, 1, "", "Value"], [229, 4, 1, "", "__eq__"], [229, 4, 1, "", "__hash__"], [229, 4, 1, "", "__init__"], [229, 4, 1, "", "__ne__"], [229, 4, 1, "", "__repr__"], [229, 4, 1, "", "__str__"], [229, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.IntegerLiteralToken": [[229, 2, 1, "", "End"], [229, 2, 1, "", "NextToken"], [229, 2, 1, "", "Start"], [229, 2, 1, "", "Value"], [229, 4, 1, "", "__eq__"], [229, 4, 1, "", "__hash__"], [229, 4, 1, "", "__init__"], [229, 4, 1, "", "__ne__"], [229, 4, 1, "", "__repr__"], [229, 4, 1, "", "__str__"], [229, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords": [[230, 1, 1, "", "AbsOperator"], [230, 1, 1, "", "AccessKeyword"], [230, 1, 1, "", "AfterKeyword"], [230, 1, 1, "", "AliasKeyword"], [230, 1, 1, "", "AllKeyword"], [230, 1, 1, "", "AndOperator"], [230, 1, 1, "", "AngleBracketToken"], [230, 1, 1, "", "ArchitectureKeyword"], [230, 1, 1, "", "ArrayKeyword"], [230, 1, 1, "", "AssertKeyword"], [230, 1, 1, "", "AssignmentKeyword"], [230, 1, 1, "", "AssociationKeyword"], [230, 1, 1, "", "AttributeKeyword"], [230, 1, 1, "", "BeginKeyword"], [230, 1, 1, "", "BlockKeyword"], [230, 1, 1, "", "BodyKeyword"], [230, 1, 1, "", "BoundaryToken"], [230, 1, 1, "", "BracketToken"], [230, 1, 1, "", "BufferKeyword"], [230, 1, 1, "", "BusKeyword"], [230, 1, 1, "", "CaseKeyword"], [230, 1, 1, "", "ClosingAngleBracketToken"], [230, 1, 1, "", "ClosingCurlyBracketToken"], [230, 1, 1, "", "ClosingRoundBracketToken"], [230, 1, 1, "", "ClosingSquareBracketToken"], [230, 1, 1, "", "CommentKeyword"], [230, 1, 1, "", "ComponentKeyword"], [230, 1, 1, "", "ConcatOperator"], [230, 1, 1, "", "ConfigurationKeyword"], [230, 1, 1, "", "ConstantKeyword"], [230, 1, 1, "", "ContextKeyword"], [230, 1, 1, "", "CurlyBracketToken"], [230, 1, 1, "", "DefaultKeyword"], [230, 1, 1, "", "DelimiterToken"], [230, 1, 1, "", "DirectionKeyword"], [230, 1, 1, "", "DisconnectKeyword"], [230, 1, 1, "", "DivideOperator"], [230, 1, 1, "", "DowntoKeyword"], [230, 1, 1, "", "ElsIfKeyword"], [230, 1, 1, "", "ElseKeyword"], [230, 1, 1, "", "EndKeyword"], [230, 1, 1, "", "EndToken"], [230, 1, 1, "", "EntityKeyword"], [230, 1, 1, "", "EqualOperator"], [230, 1, 1, "", "ExitKeyword"], [230, 1, 1, "", "FileKeyword"], [230, 1, 1, "", "ForKeyword"], [230, 1, 1, "", "ForceKeyword"], [230, 1, 1, "", "FunctionKeyword"], [230, 1, 1, "", "GenerateKeyword"], [230, 1, 1, "", "GenericKeyword"], [230, 1, 1, "", "GreaterThanOperator"], [230, 1, 1, "", "GreaterThanOrEqualOperator"], [230, 1, 1, "", "GroupKeyword"], [230, 1, 1, "", "GuardedKeyword"], [230, 1, 1, "", "IdentifierToken"], [230, 1, 1, "", "IfKeyword"], [230, 1, 1, "", "ImpureKeyword"], [230, 1, 1, "", "InKeyword"], [230, 1, 1, "", "InertialKeyword"], [230, 1, 1, "", "InoutKeyword"], [230, 1, 1, "", "IsKeyword"], [230, 1, 1, "", "KeywordToken"], [230, 1, 1, "", "LabelKeyword"], [230, 1, 1, "", "LabelToken"], [230, 1, 1, "", "LessThanOperator"], [230, 1, 1, "", "LessThanOrEqualOperator"], [230, 1, 1, "", "LibraryKeyword"], [230, 1, 1, "", "LinkageKeyword"], [230, 1, 1, "", "LiteralKeyword"], [230, 1, 1, "", "LogicalOperator"], [230, 1, 1, "", "LoopKeyword"], [230, 1, 1, "", "MapAssociationKeyword"], [230, 1, 1, "", "MapKeyword"], [230, 1, 1, "", "MatchingEqualOperator"], [230, 1, 1, "", "MatchingGreaterThanOperator"], [230, 1, 1, "", "MatchingGreaterThanOrEqualOperator"], [230, 1, 1, "", "MatchingLessThanOperator"], [230, 1, 1, "", "MatchingLessThanOrEqualOperator"], [230, 1, 1, "", "MatchingUnequalOperator"], [230, 1, 1, "", "MinusOperator"], [230, 1, 1, "", "MiscellaneousOperator"], [230, 1, 1, "", "ModuloOperator"], [230, 1, 1, "", "MultiCharKeyword"], [230, 1, 1, "", "MultiLineCommentEndKeyword"], [230, 1, 1, "", "MultiLineCommentKeyword"], [230, 1, 1, "", "MultiLineCommentStartKeyword"], [230, 1, 1, "", "MultiplyOperator"], [230, 1, 1, "", "NandOperator"], [230, 1, 1, "", "NewKeyword"], [230, 1, 1, "", "NextKeyword"], [230, 1, 1, "", "NorOperator"], [230, 1, 1, "", "NotOperator"], [230, 1, 1, "", "NullKeyword"], [230, 1, 1, "", "OfKeyword"], [230, 1, 1, "", "OnKeyword"], [230, 1, 1, "", "OpenKeyword"], [230, 1, 1, "", "OpeningAngleBracketToken"], [230, 1, 1, "", "OpeningCurlyBracketToken"], [230, 1, 1, "", "OpeningRoundBracketToken"], [230, 1, 1, "", "OpeningSquareBracketToken"], [230, 1, 1, "", "Operator"], [230, 1, 1, "", "OperatorToken"], [230, 1, 1, "", "OrOperator"], [230, 1, 1, "", "OthersKeyword"], [230, 1, 1, "", "OutKeyword"], [230, 1, 1, "", "PackageKeyword"], [230, 1, 1, "", "ParameterKeyword"], [230, 1, 1, "", "PlusOperator"], [230, 1, 1, "", "PortKeyword"], [230, 1, 1, "", "PostponedKeyword"], [230, 1, 1, "", "PowerOperator"], [230, 1, 1, "", "PrivateKeyword"], [230, 1, 1, "", "ProcedureKeyword"], [230, 1, 1, "", "ProcessKeyword"], [230, 1, 1, "", "PropertyKeyword"], [230, 1, 1, "", "ProtectedKeyword"], [230, 1, 1, "", "PureKeyword"], [230, 1, 1, "", "RangeKeyword"], [230, 1, 1, "", "RecordKeyword"], [230, 1, 1, "", "RegisterKeyword"], [230, 1, 1, "", "RejectKeyword"], [230, 1, 1, "", "RelationalOperator"], [230, 1, 1, "", "ReleaseKeyword"], [230, 1, 1, "", "RemainderOperator"], [230, 1, 1, "", "RepeatedIdentifierToken"], [230, 1, 1, "", "RepeatedLabelToken"], [230, 1, 1, "", "ReportKeyword"], [230, 1, 1, "", "ReturnKeyword"], [230, 1, 1, "", "RolOperator"], [230, 1, 1, "", "RorOperator"], [230, 1, 1, "", "RoundBracketToken"], [230, 1, 1, "", "SelectKeyword"], [230, 1, 1, "", "SequenceKeyword"], [230, 1, 1, "", "SeverityKeyword"], [230, 1, 1, "", "SharedKeyword"], [230, 1, 1, "", "ShiftOperator"], [230, 1, 1, "", "SignalAssignmentKeyword"], [230, 1, 1, "", "SignalAssociationKeyword"], [230, 1, 1, "", "SignalKeyword"], [230, 1, 1, "", "SimpleNameToken"], [230, 1, 1, "", "SingleLineCommentKeyword"], [230, 1, 1, "", "SlaOperator"], [230, 1, 1, "", "SllOperator"], [230, 1, 1, "", "SpecificVHDLToken"], [230, 1, 1, "", "SquareBracketToken"], [230, 1, 1, "", "SraOperator"], [230, 1, 1, "", "SrlOperator"], [230, 1, 1, "", "SubtypeKeyword"], [230, 1, 1, "", "ThenKeyword"], [230, 1, 1, "", "ToKeyword"], [230, 1, 1, "", "TransportKeyword"], [230, 1, 1, "", "TypeKeyword"], [230, 1, 1, "", "UnaffectedKeyword"], [230, 1, 1, "", "UnbufferedKeyword"], [230, 1, 1, "", "UnequalOperator"], [230, 1, 1, "", "UnitsKeyword"], [230, 1, 1, "", "UntilKeyword"], [230, 1, 1, "", "UseKeyword"], [230, 1, 1, "", "VariableAssignmentKeyword"], [230, 1, 1, "", "VariableKeyword"], [230, 1, 1, "", "ViewKeyword"], [230, 1, 1, "", "VunitKeyword"], [230, 1, 1, "", "WaitKeyword"], [230, 1, 1, "", "WhenKeyword"], [230, 1, 1, "", "WhileKeyword"], [230, 1, 1, "", "WithKeyword"], [230, 1, 1, "", "XnorOperator"], [230, 1, 1, "", "XorOperator"]], "pyVHDLParser.Token.Keywords.AbsOperator": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.AccessKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.AfterKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.AliasKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.AllKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.AndOperator": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.AngleBracketToken": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.ArchitectureKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.ArrayKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.AssertKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.AssignmentKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.AssociationKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.AttributeKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.BeginKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.BlockKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.BodyKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.BoundaryToken": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.BracketToken": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.BufferKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.BusKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.CaseKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.ClosingAngleBracketToken": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.ClosingCurlyBracketToken": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.ClosingRoundBracketToken": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.ClosingSquareBracketToken": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.CommentKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.ComponentKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.ConcatOperator": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.ConfigurationKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.ConstantKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.ContextKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.CurlyBracketToken": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.DefaultKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.DelimiterToken": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.DirectionKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.DisconnectKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.DivideOperator": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.DowntoKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.ElsIfKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.ElseKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.EndKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.EndToken": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.EntityKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.EqualOperator": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.ExitKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.FileKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.ForKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.ForceKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.FunctionKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.GenerateKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.GenericKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.GreaterThanOperator": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.GreaterThanOrEqualOperator": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.GroupKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.GuardedKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.IdentifierToken": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.IfKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.ImpureKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.InKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.InertialKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.InoutKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.IsKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.KeywordToken": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.LabelKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.LabelToken": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.LessThanOperator": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.LessThanOrEqualOperator": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.LibraryKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.LinkageKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.LiteralKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.LogicalOperator": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.LoopKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.MapAssociationKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.MapKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.MatchingEqualOperator": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.MatchingGreaterThanOperator": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.MatchingGreaterThanOrEqualOperator": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.MatchingLessThanOperator": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.MatchingLessThanOrEqualOperator": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.MatchingUnequalOperator": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.MinusOperator": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.MiscellaneousOperator": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.ModuloOperator": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.MultiCharKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.MultiLineCommentEndKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.MultiLineCommentKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.MultiLineCommentStartKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.MultiplyOperator": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.NandOperator": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.NewKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.NextKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.NorOperator": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.NotOperator": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.NullKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.OfKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.OnKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.OpenKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.OpeningAngleBracketToken": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.OpeningCurlyBracketToken": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.OpeningRoundBracketToken": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.OpeningSquareBracketToken": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.Operator": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.OperatorToken": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.OrOperator": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.OthersKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.OutKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.PackageKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.ParameterKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.PlusOperator": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.PortKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.PostponedKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.PowerOperator": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.PrivateKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.ProcedureKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.ProcessKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.PropertyKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.ProtectedKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.PureKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.RangeKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.RecordKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.RegisterKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.RejectKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.RelationalOperator": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.ReleaseKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.RemainderOperator": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.RepeatedIdentifierToken": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.RepeatedLabelToken": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.ReportKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.ReturnKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.RolOperator": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.RorOperator": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.RoundBracketToken": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.SelectKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.SequenceKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.SeverityKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.SharedKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.ShiftOperator": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.SignalAssignmentKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.SignalAssociationKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.SignalKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.SimpleNameToken": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.SingleLineCommentKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.SlaOperator": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.SllOperator": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.SpecificVHDLToken": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.SquareBracketToken": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.SraOperator": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.SrlOperator": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.SubtypeKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.ThenKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.ToKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.TransportKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.TypeKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.UnaffectedKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.UnbufferedKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.UnequalOperator": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.UnitsKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.UntilKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.UseKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.VariableAssignmentKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.VariableKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.ViewKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.VunitKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.WaitKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.WhenKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.WhileKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.WithKeyword": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.XnorOperator": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Keywords.XorOperator": [[230, 2, 1, "", "End"], [230, 2, 1, "", "NextToken"], [230, 2, 1, "", "Start"], [230, 2, 1, "", "Value"], [230, 4, 1, "", "__eq__"], [230, 4, 1, "", "__hash__"], [230, 4, 1, "", "__init__"], [230, 4, 1, "", "__ne__"], [230, 4, 1, "", "__repr__"], [230, 4, 1, "", "__str__"], [230, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.LinebreakToken": [[229, 2, 1, "", "End"], [229, 2, 1, "", "NextToken"], [229, 2, 1, "", "Start"], [229, 2, 1, "", "Value"], [229, 4, 1, "", "__eq__"], [229, 4, 1, "", "__hash__"], [229, 4, 1, "", "__init__"], [229, 4, 1, "", "__ne__"], [229, 4, 1, "", "__repr__"], [229, 4, 1, "", "__str__"], [229, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.LiteralToken": [[229, 2, 1, "", "End"], [229, 2, 1, "", "NextToken"], [229, 2, 1, "", "Start"], [229, 2, 1, "", "Value"], [229, 4, 1, "", "__eq__"], [229, 4, 1, "", "__hash__"], [229, 4, 1, "", "__init__"], [229, 4, 1, "", "__ne__"], [229, 4, 1, "", "__repr__"], [229, 4, 1, "", "__str__"], [229, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.MultiLineCommentToken": [[229, 2, 1, "", "End"], [229, 2, 1, "", "NextToken"], [229, 2, 1, "", "Start"], [229, 2, 1, "", "Value"], [229, 4, 1, "", "__eq__"], [229, 4, 1, "", "__hash__"], [229, 4, 1, "", "__init__"], [229, 4, 1, "", "__ne__"], [229, 4, 1, "", "__repr__"], [229, 4, 1, "", "__str__"], [229, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Parser": [[231, 1, 1, "", "Tokenizer"], [231, 5, 1, "", "TokenizerException"]], "pyVHDLParser.Token.Parser.Tokenizer": [[231, 1, 1, "", "TokenKind"]], "pyVHDLParser.Token.Parser.Tokenizer.TokenKind": [[231, 2, 1, "", "AlphaChars"], [231, 2, 1, "", "DelimiterChars"], [231, 2, 1, "", "Directive"], [231, 2, 1, "", "FuseableCharacter"], [231, 2, 1, "", "IntegerChars"], [231, 2, 1, "", "Linebreak"], [231, 2, 1, "", "MultiLineComment"], [231, 2, 1, "", "OtherChars"], [231, 2, 1, "", "PossibleCharacterLiteral"], [231, 2, 1, "", "PossibleExtendedIdentifierStart"], [231, 2, 1, "", "PossibleLinebreak"], [231, 2, 1, "", "PossibleRealLiteral"], [231, 2, 1, "", "PossibleSingleLineCommentStart"], [231, 2, 1, "", "PossibleStringLiteralStart"], [231, 2, 1, "", "RealChars"], [231, 2, 1, "", "SingleLineComment"], [231, 2, 1, "", "SpaceChars"], [231, 4, 1, "", "__abs__"], [231, 4, 1, "", "__add__"], [231, 4, 1, "", "__and__"], [231, 4, 1, "", "__bool__"], [231, 4, 1, "", "__ceil__"], [231, 4, 1, "", "__dir__"], [231, 4, 1, "", "__divmod__"], [231, 4, 1, "", "__eq__"], [231, 4, 1, "", "__float__"], [231, 4, 1, "", "__floor__"], [231, 4, 1, "", "__floordiv__"], [231, 4, 1, "", "__format__"], [231, 4, 1, "", "__ge__"], [231, 4, 1, "", "__getattribute__"], [231, 4, 1, "", "__gt__"], [231, 4, 1, "", "__hash__"], [231, 4, 1, "", "__index__"], [231, 4, 1, "", "__init__"], [231, 4, 1, "", "__int__"], [231, 4, 1, "", "__invert__"], [231, 4, 1, "", "__le__"], [231, 4, 1, "", "__lshift__"], [231, 4, 1, "", "__lt__"], [231, 4, 1, "", "__mod__"], [231, 4, 1, "", "__mul__"], [231, 4, 1, "", "__ne__"], [231, 4, 1, "", "__neg__"], [231, 4, 1, "", "__new__"], [231, 4, 1, "", "__or__"], [231, 4, 1, "", "__pos__"], [231, 4, 1, "", "__pow__"], [231, 4, 1, "", "__radd__"], [231, 4, 1, "", "__rand__"], [231, 4, 1, "", "__rdivmod__"], [231, 4, 1, "", "__reduce_ex__"], [231, 4, 1, "", "__repr__"], [231, 4, 1, "", "__rfloordiv__"], [231, 4, 1, "", "__rlshift__"], [231, 4, 1, "", "__rmod__"], [231, 4, 1, "", "__rmul__"], [231, 4, 1, "", "__ror__"], [231, 4, 1, "", "__round__"], [231, 4, 1, "", "__rpow__"], [231, 4, 1, "", "__rrshift__"], [231, 4, 1, "", "__rshift__"], [231, 4, 1, "", "__rsub__"], [231, 4, 1, "", "__rtruediv__"], [231, 4, 1, "", "__rxor__"], [231, 4, 1, "", "__sizeof__"], [231, 4, 1, "", "__str__"], [231, 4, 1, "", "__sub__"], [231, 4, 1, "", "__truediv__"], [231, 4, 1, "", "__trunc__"], [231, 4, 1, "", "__xor__"], [231, 4, 1, "", "as_integer_ratio"], [231, 4, 1, "", "bit_count"], [231, 4, 1, "", "bit_length"], [231, 4, 1, "", "conjugate"], [231, 2, 1, "", "denominator"], [231, 4, 1, "", "from_bytes"], [231, 2, 1, "", "imag"], [231, 2, 1, "", "numerator"], [231, 2, 1, "", "real"], [231, 4, 1, "", "to_bytes"]], "pyVHDLParser.Token.Parser.TokenizerException": [[231, 4, 1, "", "__init__"], [231, 4, 1, "", "__new__"]], "pyVHDLParser.Token.RealLiteralToken": [[229, 2, 1, "", "End"], [229, 2, 1, "", "NextToken"], [229, 2, 1, "", "Start"], [229, 2, 1, "", "Value"], [229, 4, 1, "", "__eq__"], [229, 4, 1, "", "__hash__"], [229, 4, 1, "", "__init__"], [229, 4, 1, "", "__ne__"], [229, 4, 1, "", "__repr__"], [229, 4, 1, "", "__str__"], [229, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.SingleLineCommentToken": [[229, 2, 1, "", "End"], [229, 2, 1, "", "NextToken"], [229, 2, 1, "", "Start"], [229, 2, 1, "", "Value"], [229, 4, 1, "", "__eq__"], [229, 4, 1, "", "__hash__"], [229, 4, 1, "", "__init__"], [229, 4, 1, "", "__ne__"], [229, 4, 1, "", "__repr__"], [229, 4, 1, "", "__str__"], [229, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.SpaceToken": [[229, 2, 1, "", "End"], [229, 2, 1, "", "NextToken"], [229, 2, 1, "", "Start"], [229, 2, 1, "", "Value"], [229, 4, 1, "", "__eq__"], [229, 4, 1, "", "__hash__"], [229, 4, 1, "", "__init__"], [229, 4, 1, "", "__ne__"], [229, 4, 1, "", "__repr__"], [229, 4, 1, "", "__str__"], [229, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.StartOfDocumentToken": [[229, 2, 1, "", "End"], [229, 2, 1, "", "NextToken"], [229, 2, 1, "", "Start"], [229, 4, 1, "", "__init__"], [229, 4, 1, "", "__len__"], [229, 4, 1, "", "__repr__"], [229, 4, 1, "", "__str__"], [229, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.StartOfSnippetToken": [[229, 2, 1, "", "End"], [229, 2, 1, "", "NextToken"], [229, 2, 1, "", "Start"], [229, 4, 1, "", "__init__"], [229, 4, 1, "", "__len__"], [229, 4, 1, "", "__repr__"], [229, 4, 1, "", "__str__"], [229, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.StartOfToken": [[229, 2, 1, "", "End"], [229, 2, 1, "", "NextToken"], [229, 2, 1, "", "Start"], [229, 4, 1, "", "__init__"], [229, 4, 1, "", "__len__"], [229, 4, 1, "", "__repr__"], [229, 4, 1, "", "__str__"], [229, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.StringLiteralToken": [[229, 2, 1, "", "End"], [229, 2, 1, "", "NextToken"], [229, 2, 1, "", "Start"], [229, 2, 1, "", "Value"], [229, 4, 1, "", "__eq__"], [229, 4, 1, "", "__hash__"], [229, 4, 1, "", "__init__"], [229, 4, 1, "", "__ne__"], [229, 4, 1, "", "__repr__"], [229, 4, 1, "", "__str__"], [229, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.Token": [[229, 2, 1, "", "End"], [229, 2, 1, "", "NextToken"], [229, 2, 1, "", "Start"], [229, 4, 1, "", "__init__"], [229, 4, 1, "", "__repr__"], [229, 4, 1, "", "__str__"], [229, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.TokenIterator": [[229, 4, 1, "", "__init__"], [229, 2, 1, "", "state"]], "pyVHDLParser.Token.TokenReverseIterator": [[229, 4, 1, "", "__init__"], [229, 2, 1, "", "state"]], "pyVHDLParser.Token.VHDLToken": [[229, 2, 1, "", "End"], [229, 2, 1, "", "NextToken"], [229, 2, 1, "", "Start"], [229, 2, 1, "", "Value"], [229, 4, 1, "", "__eq__"], [229, 4, 1, "", "__hash__"], [229, 4, 1, "", "__init__"], [229, 4, 1, "", "__ne__"], [229, 4, 1, "", "__repr__"], [229, 4, 1, "", "__str__"], [229, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.ValuedToken": [[229, 2, 1, "", "End"], [229, 2, 1, "", "NextToken"], [229, 2, 1, "", "Start"], [229, 2, 1, "", "Value"], [229, 4, 1, "", "__eq__"], [229, 4, 1, "", "__hash__"], [229, 4, 1, "", "__init__"], [229, 4, 1, "", "__ne__"], [229, 4, 1, "", "__repr__"], [229, 4, 1, "", "__str__"], [229, 2, 1, "", "_previousToken"]], "pyVHDLParser.Token.WordToken": [[229, 2, 1, "", "End"], [229, 2, 1, "", "NextToken"], [229, 2, 1, "", "Start"], [229, 2, 1, "", "Value"], [229, 4, 1, "", "__eq__"], [229, 4, 1, "", "__ge__"], [229, 4, 1, "", "__hash__"], [229, 4, 1, "", "__init__"], [229, 4, 1, "", "__le__"], [229, 4, 1, "", "__ne__"], [229, 4, 1, "", "__repr__"], [229, 4, 1, "", "__str__"], [229, 2, 1, "", "_previousToken"]], "pyVHDLParser.TypeSystem": [[233, 0, 0, "-", "Package"], [234, 0, 0, "-", "TypeSystem"], [235, 0, 0, "-", "std"], [236, 0, 0, "-", "std_logic_1164"]], "pyVHDLParser.TypeSystem.Package": [[233, 1, 1, "", "Function"], [233, 1, 1, "", "FunctionDeclaration"], [233, 1, 1, "", "Package"], [233, 1, 1, "", "PackageBody"], [233, 1, 1, "", "PackageDeclation"], [233, 1, 1, "", "Parameter"], [233, 1, 1, "", "Procedure"], [233, 1, 1, "", "ProcedureDeclaration"], [233, 1, 1, "", "SubProgram"], [233, 1, 1, "", "SubProgramDeclaration"]], "pyVHDLParser.TypeSystem.Package.Function": [[233, 4, 1, "", "__init__"]], "pyVHDLParser.TypeSystem.Package.FunctionDeclaration": [[233, 4, 1, "", "__init__"]], "pyVHDLParser.TypeSystem.Package.Package": [[233, 4, 1, "", "__init__"]], "pyVHDLParser.TypeSystem.Package.PackageBody": [[233, 4, 1, "", "__init__"]], "pyVHDLParser.TypeSystem.Package.PackageDeclation": [[233, 4, 1, "", "__init__"]], "pyVHDLParser.TypeSystem.Package.Parameter": [[233, 4, 1, "", "__init__"]], "pyVHDLParser.TypeSystem.Package.Procedure": [[233, 4, 1, "", "__init__"]], "pyVHDLParser.TypeSystem.Package.ProcedureDeclaration": [[233, 4, 1, "", "__init__"]], "pyVHDLParser.TypeSystem.Package.SubProgram": [[233, 4, 1, "", "__init__"]], "pyVHDLParser.TypeSystem.Package.SubProgramDeclaration": [[233, 4, 1, "", "__init__"]], "pyVHDLParser.TypeSystem.TypeSystem": [[234, 1, 1, "", "Array"], [234, 1, 1, "", "ArrayType"], [234, 1, 1, "", "Direction"], [234, 1, 1, "", "EnumerationLiteral"], [234, 1, 1, "", "EnumerationSubtype"], [234, 1, 1, "", "EnumerationType"], [234, 1, 1, "", "IntegerSubtype"], [234, 1, 1, "", "IntegerType"], [234, 1, 1, "", "Range"], [234, 1, 1, "", "RealType"], [234, 1, 1, "", "RecordMember"], [234, 1, 1, "", "RecordType"], [234, 1, 1, "", "Subtype"], [234, 1, 1, "", "Type"], [234, 1, 1, "", "TypeInstance"], [234, 1, 1, "", "_Attributes"]], "pyVHDLParser.TypeSystem.TypeSystem.Array": [[234, 4, 1, "", "__init__"]], "pyVHDLParser.TypeSystem.TypeSystem.ArrayType": [[234, 4, 1, "", "__init__"]], "pyVHDLParser.TypeSystem.TypeSystem.EnumerationLiteral": [[234, 4, 1, "", "__init__"], [234, 4, 1, "", "__repr__"], [234, 4, 1, "", "__str__"]], "pyVHDLParser.TypeSystem.TypeSystem.EnumerationSubtype": [[234, 4, 1, "", "__init__"]], "pyVHDLParser.TypeSystem.TypeSystem.EnumerationType": [[234, 4, 1, "", "__init__"], [234, 4, 1, "", "__repr__"], [234, 4, 1, "", "__str__"]], "pyVHDLParser.TypeSystem.TypeSystem.IntegerSubtype": [[234, 4, 1, "", "__init__"]], "pyVHDLParser.TypeSystem.TypeSystem.IntegerType": [[234, 4, 1, "", "__init__"]], "pyVHDLParser.TypeSystem.TypeSystem.Range": [[234, 4, 1, "", "__init__"]], "pyVHDLParser.TypeSystem.TypeSystem.RealType": [[234, 4, 1, "", "__init__"]], "pyVHDLParser.TypeSystem.TypeSystem.RecordMember": [[234, 4, 1, "", "__init__"]], "pyVHDLParser.TypeSystem.TypeSystem.RecordType": [[234, 4, 1, "", "__init__"]], "pyVHDLParser.TypeSystem.TypeSystem.Subtype": [[234, 4, 1, "", "__init__"]], "pyVHDLParser.TypeSystem.TypeSystem.Type": [[234, 4, 1, "", "__init__"]], "VHDLParser-CodeDOM": [[93, 7, 1, "cmdoption-VHDLParser-CodeDOM-h", "--help"], [93, 7, 1, "cmdoption-VHDLParser-CodeDOM-h", "-h"], [93, 7, 1, "cmdoption-VHDLParser-CodeDOM-arg-filename", "filename"]], "VHDLParser-antlr": [[93, 7, 1, "cmdoption-VHDLParser-antlr-h", "--help"], [93, 7, 1, "cmdoption-VHDLParser-antlr-h", "-h"], [93, 7, 1, "cmdoption-VHDLParser-antlr-arg-filename", "filename"]], "VHDLParser-block-check": [[93, 7, 1, "cmdoption-VHDLParser-block-check-h", "--help"], [93, 7, 1, "cmdoption-VHDLParser-block-check-T", "--with-tokens"], [93, 7, 1, "cmdoption-VHDLParser-block-check-T", "-T"], [93, 7, 1, "cmdoption-VHDLParser-block-check-h", "-h"], [93, 7, 1, "cmdoption-VHDLParser-block-check-arg-filename", "filename"]], "VHDLParser-block-stream": [[93, 7, 1, "cmdoption-VHDLParser-block-stream-h", "--help"], [93, 7, 1, "cmdoption-VHDLParser-block-stream-T", "--with-tokens"], [93, 7, 1, "cmdoption-VHDLParser-block-stream-T", "-T"], [93, 7, 1, "cmdoption-VHDLParser-block-stream-h", "-h"], [93, 7, 1, "cmdoption-VHDLParser-block-stream-arg-filename", "filename"]], "VHDLParser-group-stream": [[93, 7, 1, "cmdoption-VHDLParser-group-stream-h", "--help"], [93, 7, 1, "cmdoption-VHDLParser-group-stream-B", "--with-blocks"], [93, 7, 1, "cmdoption-VHDLParser-group-stream-T", "--with-tokens"], [93, 7, 1, "cmdoption-VHDLParser-group-stream-B", "-B"], [93, 7, 1, "cmdoption-VHDLParser-group-stream-T", "-T"], [93, 7, 1, "cmdoption-VHDLParser-group-stream-h", "-h"], [93, 7, 1, "cmdoption-VHDLParser-group-stream-arg-filename", "filename"]], "VHDLParser-help": [[93, 7, 1, "cmdoption-VHDLParser-help-h", "--help"], [93, 7, 1, "cmdoption-VHDLParser-help-h", "-h"], [93, 7, 1, "cmdoption-VHDLParser-help-arg-command", "command"]], "VHDLParser-token-check": [[93, 7, 1, "cmdoption-VHDLParser-token-check-h", "--help"], [93, 7, 1, "cmdoption-VHDLParser-token-check-h", "-h"], [93, 7, 1, "cmdoption-VHDLParser-token-check-arg-filename", "filename"]], "VHDLParser-token-stream": [[93, 7, 1, "cmdoption-VHDLParser-token-stream-h", "--help"], [93, 7, 1, "cmdoption-VHDLParser-token-stream-h", "-h"], [93, 7, 1, "cmdoption-VHDLParser-token-stream-arg-filename", "filename"]], "VHDLParser-version": [[93, 7, 1, "cmdoption-VHDLParser-version-h", "--help"], [93, 7, 1, "cmdoption-VHDLParser-version-h", "-h"]], "VHDLParser": [[93, 7, 1, "cmdoption-VHDLParser-d", "--debug"], [93, 7, 1, "cmdoption-VHDLParser-q", "--quiet"], [93, 7, 1, "cmdoption-VHDLParser-v", "--verbose"], [93, 7, 1, "cmdoption-VHDLParser-d", "-d"], [93, 7, 1, "cmdoption-VHDLParser-q", "-q"], [93, 7, 1, "cmdoption-VHDLParser-v", "-v"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:attribute", "3": "py:property", "4": "py:method", "5": "py:exception", "6": "py:function", "7": "std:cmdoption"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "attribute", "Python attribute"], "3": ["py", "property", "Python property"], "4": ["py", "method", "Python method"], "5": ["py", "exception", "Python exception"], "6": ["py", "function", "Python function"], "7": ["std", "cmdoption", "program option"]}, "titleterms": {"signal": [0, 40, 80, 85, 86, 159], "assign": [0, 1, 2, 80, 86, 117, 118, 119], "signalassignmentblock": 0, "variabl": [1, 39, 41, 85, 86, 160], "variableassignmentblock": 1, "attribut": [3, 4, 5, 71, 120, 121, 122], "declar": [3, 87, 88], "attributedeclarationblock": 3, "specif": [4, 18, 56, 100], "attributespecificationblock": 4, "block": [6, 7, 35, 56, 58, 66, 67, 93, 95, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 187], "gener": [6, 18, 19, 20, 21, 22, 28, 29, 66, 69, 75, 80, 83, 95, 101, 102, 104, 136, 137, 138, 139, 140], "common": [7, 71, 124], "case": [8, 19, 80, 86, 104, 105, 126], "statement": [8, 9, 11, 12, 13, 14, 19, 20, 21, 22, 43, 44, 45, 47, 48, 80, 86], "endblock": [8, 9, 10, 11, 12, 13, 14, 15, 50, 51, 52, 53, 54, 57, 58, 59, 60, 61], "arrowblock": 8, "whenexpressionblock": 8, "whenblock": 8, "isblock": 8, "caseexpressionblock": 8, "caseblock": 8, "exit": [9, 127], "exitconditionblock": 9, "exitblock": 9, "For": [10, 20, 80, 86], "loop": [10, 15, 86], "iteratorblock": 10, "loopblock": 10, "expressionblockendedbylooportoordownto": 10, "expressionblockendedbyloop": 10, "loopiterationdirectionblock": 10, "If": [11, 21, 80, 86, 129], "thenblock": 11, "elseblock": 11, "expressionblockendedbythen": 11, "ifconditionblock": 11, "elsifconditionblock": 11, "next": [12, 130], "nextconditionblock": 12, "nextblock": 12, "null": [13, 131], "nullblock": 13, "return": [14, 132], "returnexpressionblock": 14, "returnblock": 14, "while": [15, 86], "conditionblock": 15, "control": 16, "structur": [16, 62, 69, 174, 175, 176, 177, 178, 179], "exampl": [17, 74, 97], "list": [17, 28, 30, 31, 33, 34, 69, 97, 148, 149, 150, 151, 152, 153, 154, 211], "all": [17, 97], "entiti": [17, 23, 61, 81, 97, 179, 198], "name": [17, 97], "todo": [17, 47, 48, 63, 64, 66, 68, 69, 72, 74, 75, 77, 79, 80, 81, 82, 83, 85, 86, 87, 88, 95, 100, 101], "express": [18, 135, 220], "baseexpress": 18, "form": 18, "expressionblock": 18, "expressionblockendedbycharorclosingroundbracket": 18, "expressionblockendedbykeywordorclosingroundbracket": 18, "expressionblockendedbykeywordortoordownto": 18, "expressionblockendedbysemicolon": 18, "instanti": [23, 24, 25, 26, 27, 80, 142, 143, 144, 145, 146], "function": [24, 50, 87, 169, 204, 215], "packag": [25, 51, 52, 70, 79, 81, 170, 199, 233], "procedur": [26, 53, 80, 86, 87, 172, 216], "map": [29, 32, 34], "paramet": [30, 83], "port": [31, 32, 83], "sensit": 33, "meta": [35, 69, 76, 98], "startofdocumentblock": 35, "endofdocumentblock": 35, "base": 36, "class": [36, 69, 82, 106, 115, 193], "objectdeclarationblock": 36, "objectdeclarationendmarkerblock": 36, "constant": [37, 85, 156], "constantdeclarationendmarkerblock": 37, "constantdeclarationdefaultexpressionblock": 37, "constantdeclarationblock": 37, "file": [38, 84, 85, 88, 157], "share": [39, 85], "sharedvariabledeclarationendmarkerblock": 39, "sharedvariabledeclarationblock": 39, "signaldeclarationendmarkerblock": 40, "signaldeclarationdefaultexpressionblock": 40, "signaldeclarationblock": 40, "variabledeclarationendmarkerblock": 41, "variabledeclarationdefaultexpressionblock": 41, "variabledeclarationblock": 41, "object": [42, 69, 82, 85, 104, 155, 156, 157, 158, 159, 160, 212], "context": [43, 81, 162, 197], "librarystat": [44, 84], "us": [45, 71, 79, 104, 105, 164], "refer": [46, 104, 106, 115, 161, 162, 163, 164, 193, 202, 213, 222], "assert": [47, 80, 86, 166], "report": [48, 49, 86, 165, 166, 167], "beginblock": [50, 53, 54, 57, 58, 60, 61], "declarativeregion": [50, 51, 52, 53, 54, 57, 58, 61], "nameblock": [50, 51, 52, 53, 57, 58, 59, 60, 61], "returntypeblock": 50, "bodi": [52, 81], "voidblock": 53, "process": [54, 80, 173, 217], "openblock": 54, "openblock2": 54, "sequenti": [55, 86, 168, 169, 170, 171, 172, 173, 203, 204, 214, 215, 216, 217], "architectur": [57, 175, 196], "compon": [59, 177], "configur": [60, 81, 178], "subtyp": [63, 182], "type": [64, 65, 69, 70, 88, 180, 181, 182, 183, 184], "usag": [66, 77, 102], "iter": [66, 69, 102], "token": [66, 69, 93, 95, 98, 99, 100, 101, 102, 103, 191, 229, 230, 231], "2": [67, 71, 90], "pass": [67, 69, 72, 78, 91, 103], "changelog": 68, "concept": [69, 84], "multipl": 69, "orient": 69, "program": 69, "data": 69, "inherit": 69, "mixin": 69, "properti": 69, "overwrit": 69, "overload": 69, "annot": 69, "doubl": 69, "link": 69, "python": [69, 106, 115, 193], "parallel": 69, "replac": 69, "classmethod": 69, "state": 69, "parser": [69, 231], "machin": 69, "code": [69, 72, 104], "dom": [69, 72], "depend": [70, 79, 104], "pytool": 70, "mandatori": 70, "unit": [70, 79, 81], "test": [70, 79, 95, 96, 104, 105], "coverag": [70, 79, 104], "check": [70, 93, 104], "option": [70, 93], "sphinx": [70, 79], "document": [70, 79, 104, 105], "publish": 70, "ci": 70, "server": 70, "onli": 70, "creativ": 71, "4": [71, 72, 90], "0": [71, 90, 91], "intern": 71, "public": 71, "licens": [71, 90, 105], "section": 71, "1": [71, 90, 103], "definit": [71, 90], "scope": 71, "3": [71, 78, 90], "condit": 71, "sui": 71, "generi": 71, "databas": 71, "right": 71, "5": [71, 90], "disclaim": [71, 90], "warranti": [71, 90], "limit": [71, 90], "liabil": [71, 90], "6": [71, 90], "term": 71, "termin": 71, "7": [71, 90], "other": 71, "8": [71, 90], "interpret": 71, "glossari": 73, "group": [75, 76, 78, 93, 95, 190, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217], "startofdocumentgroup": 76, "endofdocumentgroup": 76, "instal": 79, "updat": [79, 105], "pip": 79, "setup": 79, "py": 79, "pyvhdlpars": [79, 105, 107, 108, 109, 110, 111, 112, 113, 114, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236], "concurr": [80, 209], "call": [80, 86], "design": [81, 84], "primari": 81, "secondari": 81, "architetur": 81, "enumer": [82, 88], "mode": 82, "interfac": [83, 95], "item": 83, "genericconstantinterfaceitem": 83, "generictypeinterfaceitem": 83, "genericsubprograminterfaceitem": 83, "genericpackageinterfaceitem": 83, "portsignalinterfaceitem": 83, "parameterconstantinterfaceitem": 83, "parametervariableinterfaceitem": 83, "parametersignalinterfaceitem": 83, "parameterfileinterfaceitem": 83, "defin": 84, "ieee": 84, "std": [84, 235], "1076": 84, "sourcecod": [84, 104], "declart": 85, "subprogram": 87, "scalar": 88, "integ": 88, "real": 88, "physic": 88, "composit": 88, "arrai": 88, "record": 88, "access": 88, "protect": 88, "vhdl": 89, "languag": [89, 104], "model": [89, 104], "apach": 90, "grant": 90, "copyright": 90, "patent": 90, "redistribut": 90, "submiss": 90, "contribut": 90, "trademark": 90, "9": 90, "accept": 90, "addit": [90, 105], "preprocess": 91, "project": [92, 105], "goal": [92, 105], "script": 93, "applic": [93, 96], "vhdlparser": [93, 95, 109, 112, 192], "codedom": [93, 95, 188], "antlr": [93, 186], "stream": 93, "help": 93, "version": 93, "command": 95, "line": 95, "startofdocumenttoken": 98, "endofdocumenttoken": 98, "simpl": 99, "graph": 104, "cross": 104, "syntax": 104, "highlight": 104, "extract": 104, "collect": 104, "static": 104, "analysi": 104, "transform": 104, "platform": 104, "new": [104, 105], "revis": 104, "The": 105, "main": 105, "pars": 105, "approach": 105, "aim": 105, "mar": 105, "2023": 105, "enhanc": 105, "jun": 105, "2021": 105, "nov": 105, "2020": 105, "dec": 105, "2019": 105, "major": 105, "rework": 105, "2018": 105, "minor": 105, "2017": 105, "featur": 105, "20": 105, "09": 105, "start": 105, "contributor": 105, "antlr3": [107, 108, 109], "vhdllexer": [108, 111], "antlr4": [110, 111, 112, 113, 114], "vhdlparservisitor": 113, "visitor": 114, "signalassign": 118, "variableassign": 119, "attributedeclar": 121, "attributespecif": 122, "comment": [123, 206, 208], "controlstructur": [125, 126, 127, 128, 129, 130, 131, 132, 133], "forloop": 128, "whileloop": 133, "except": 134, "casegener": 137, "forgener": 138, "ifgener": 139, "generic1": 141, "entityinstanti": 143, "functioninstanti": 144, "packageinstanti": 145, "procedureinstanti": 146, "interfaceobject": 147, "genericlist": 149, "genericmaplist": 150, "parameterlist": 151, "portlist": 152, "portmaplist": 153, "sensitivitylist": 154, "sharedvari": 158, "librari": 163, "packagebodi": [171, 200], "resolutionind": 181, "subtypeind": 183, "cli": [185, 186, 187, 188, 189, 190, 191, 192], "graphml": 189, "documentmodel": [194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204], "designunit": [195, 196, 197, 198, 199, 200, 210, 219], "objectdeclar": 201, "filter": [205, 206], "languagemodel": [218, 219, 220, 221, 222], "interfaceitem": 221, "netlistmodel": [223, 224], "simulationmodel": [225, 226, 227], "eventsystem": 226, "stylecheck": 228, "keyword": 230, "typesystem": [232, 233, 234, 235, 236], "std_logic_1164": 236}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx.ext.todo": 2, "sphinx.ext.viewcode": 1, "sphinx": 57}, "alltitles": {"Signal Assignment": [[0, "signal-assignment"], [80, "signal-assignment"], [86, "signal-assignment"]], "SignalAssignmentBlock": [[0, "signalassignmentblock"]], "Variable Assignment": [[1, "variable-assignment"], [86, "variable-assignment"]], "VariableAssignmentBlock": [[1, "variableassignmentblock"]], "Assignments": [[2, "assignments"]], "Attribute Declaration": [[3, "attribute-declaration"]], "AttributeDeclarationBlock": [[3, "attributedeclarationblock"]], "Attribute Specification": [[4, "attribute-specification"]], "AttributeSpecificationBlock": [[4, "attributespecificationblock"]], "Attributes": [[5, "attributes"]], "Block Generator": [[6, "block-generator"], [66, "block-generator"]], "Common Blocks": [[7, "common-blocks"]], "Case Statement": [[8, "case-statement"], [86, "case-statement"]], "EndBlock": [[8, "endblock"], [9, "endblock"], [10, "endblock"], [11, "endblock"], [12, "endblock"], [13, "endblock"], [14, "endblock"], [15, "endblock"], [50, "endblock"], [51, "endblock"], [52, "endblock"], [53, "endblock"], [54, "endblock"], [57, "endblock"], [58, "endblock"], [59, "endblock"], [60, "endblock"], [61, "endblock"]], "ArrowBlock": [[8, "arrowblock"]], "WhenExpressionBlock": [[8, "whenexpressionblock"]], "WhenBlock": [[8, "whenblock"]], "IsBlock": [[8, "isblock"]], "CaseExpressionBlock": [[8, "caseexpressionblock"]], "CaseBlock": [[8, "caseblock"]], "Exit Statement": [[9, "exit-statement"]], "ExitConditionBlock": [[9, "exitconditionblock"]], "ExitBlock": [[9, "exitblock"]], "For Loop": [[10, "for-loop"], [86, "for-loop"]], "IteratorBlock": [[10, "iteratorblock"]], "LoopBlock": [[10, "loopblock"]], "ExpressionBlockEndedByLoopORToORDownto": [[10, "expressionblockendedbylooportoordownto"]], "ExpressionBlockEndedByLoop": [[10, "expressionblockendedbyloop"]], "LoopIterationDirectionBlock": [[10, "loopiterationdirectionblock"]], "If Statement": [[11, "if-statement"], [86, "if-statement"]], "ThenBlock": [[11, "thenblock"]], "ElseBlock": [[11, "elseblock"]], "ExpressionBlockEndedByThen": [[11, "expressionblockendedbythen"]], "IfConditionBlock": [[11, "ifconditionblock"]], "ElsIfConditionBlock": [[11, "elsifconditionblock"]], "Next Statement": [[12, "next-statement"]], "NextConditionBlock": [[12, "nextconditionblock"]], "NextBlock": [[12, "nextblock"]], "Null Statement": [[13, "null-statement"]], "NullBlock": [[13, "nullblock"]], "Return Statement": [[14, "return-statement"]], "ReturnExpressionBlock": [[14, "returnexpressionblock"]], "ReturnBlock": [[14, "returnblock"]], "While Loop": [[15, "while-loop"], [86, "while-loop"]], "ConditionBlock": [[15, "conditionblock"]], "Control Structures": [[16, "control-structures"]], "Examples": [[17, "examples"], [74, "examples"], [97, "examples"]], "List all entity names": [[17, "list-all-entity-names"], [97, "list-all-entity-names"]], "Todo": [[17, "id1"], [47, "id1"], [48, "id1"], [63, "id1"], [64, "id1"], [66, "id3"], [68, "id1"], [69, "id1"], [69, "id2"], [69, "id4"], [69, "id5"], [69, "id6"], [69, "id7"], [69, "id8"], [72, "id1"], [74, "id1"], [75, "id1"], [77, "id1"], [79, "id1"], [80, "id1"], [80, "id2"], [80, "id3"], [80, "id4"], [80, "id5"], [80, "id6"], [80, "id7"], [80, "id8"], [81, "id1"], [81, "id2"], [81, "id3"], [81, "id4"], [81, "id5"], [81, "id6"], [82, "id1"], [82, "id2"], [83, "id1"], [83, "id2"], [83, "id3"], [83, "id4"], [83, "id5"], [83, "id6"], [83, "id7"], [83, "id8"], [83, "id9"], [85, "id1"], [85, "id2"], [85, "id3"], [85, "id4"], [85, "id5"], [86, "id1"], [86, "id2"], [86, "id3"], [86, "id4"], [86, "id5"], [86, "id6"], [86, "id7"], [86, "id8"], [86, "id9"], [87, "id1"], [87, "id2"], [88, "id1"], [88, "id2"], [88, "id3"], [88, "id4"], [88, "id5"], [88, "id6"], [88, "id7"], [88, "id8"], [88, "id9"], [95, "id1"], [95, "id2"], [95, "id3"], [100, "id1"], [101, "id1"]], "Expressions": [[18, "expressions"]], "Generic BaseExpression Form": [[18, "generic-baseexpression-form"]], "ExpressionBlock": [[18, "expressionblock"]], "Specific BaseExpression Forms": [[18, "specific-baseexpression-forms"]], "ExpressionBlockEndedByCharORClosingRoundBracket": [[18, "expressionblockendedbycharorclosingroundbracket"]], "ExpressionBlockEndedByKeywordORClosingRoundBracket": [[18, "expressionblockendedbykeywordorclosingroundbracket"]], "ExpressionBlockEndedByKeywordOrToOrDownto": [[18, "expressionblockendedbykeywordortoordownto"]], "ExpressionBlockEndedBySemicolon": [[18, "expressionblockendedbysemicolon"]], "Case Generate Statement": [[19, "case-generate-statement"]], "For Generate Statement": [[20, "for-generate-statement"]], "If Generate Statement": [[21, "if-generate-statement"]], "Generate Statements": [[22, "generate-statements"]], "Entity Instantiation": [[23, "entity-instantiation"]], "Function Instantiation": [[24, "function-instantiation"]], "Package Instantiation": [[25, "package-instantiation"]], "Procedure Instantiation": [[26, "procedure-instantiation"]], "Instantiations": [[27, "instantiations"]], "Generic List": [[28, "generic-list"]], "Generic Map": [[29, "generic-map"]], "Parameter List": [[30, "parameter-list"]], "Port List": [[31, "port-list"]], "Port Map": [[32, "port-map"]], "Sensitivity List": [[33, "sensitivity-list"]], "Lists and Maps": [[34, "lists-and-maps"]], "Meta Blocks": [[35, "meta-blocks"]], "StartOfDocumentBlock": [[35, "startofdocumentblock"]], "EndOfDocumentBlock": [[35, "endofdocumentblock"]], "Base Classes": [[36, "base-classes"]], "ObjectDeclarationBlock": [[36, "objectdeclarationblock"]], "ObjectDeclarationEndMarkerBlock": [[36, "objectdeclarationendmarkerblock"]], "Constants": [[37, "constants"]], "ConstantDeclarationEndMarkerBlock": [[37, "constantdeclarationendmarkerblock"]], "ConstantDeclarationDefaultExpressionBlock": [[37, "constantdeclarationdefaultexpressionblock"]], "ConstantDeclarationBlock": [[37, "constantdeclarationblock"]], "File": [[38, "file"], [85, "file"], [88, "file"]], "Shared Variables": [[39, "shared-variables"]], "SharedVariableDeclarationEndMarkerBlock": [[39, "sharedvariabledeclarationendmarkerblock"]], "SharedVariableDeclarationBlock": [[39, "sharedvariabledeclarationblock"]], "Signals": [[40, "signals"]], "SignalDeclarationEndMarkerBlock": [[40, "signaldeclarationendmarkerblock"]], "SignalDeclarationDefaultExpressionBlock": [[40, "signaldeclarationdefaultexpressionblock"]], "SignalDeclarationBlock": [[40, "signaldeclarationblock"]], "Variables": [[41, "variables"]], "VariableDeclarationEndMarkerBlock": [[41, "variabledeclarationendmarkerblock"]], "VariableDeclarationDefaultExpressionBlock": [[41, "variabledeclarationdefaultexpressionblock"]], "VariableDeclarationBlock": [[41, "variabledeclarationblock"]], "Objects": [[42, "objects"]], "Context Statement": [[43, "context-statement"]], "LibraryStatement Statement": [[44, "librarystatement-statement"]], "Use Statement": [[45, "use-statement"]], "References": [[46, "references"]], "Assert Statement": [[47, "assert-statement"], [86, "assert-statement"]], "Report Statement": [[48, "report-statement"], [86, "report-statement"]], "Reporting": [[49, "reporting"]], "Function": [[50, "function"], [87, "function"]], "BeginBlock": [[50, "beginblock"], [53, "beginblock"], [54, "beginblock"], [57, "beginblock"], [58, "beginblock"], [60, "beginblock"], [61, "beginblock"]], "DeclarativeRegion": [[50, "declarativeregion"], [51, "declarativeregion"], [52, "declarativeregion"], [53, "declarativeregion"], [54, "declarativeregion"], [57, "declarativeregion"], [58, "declarativeregion"], [61, "declarativeregion"]], "NameBlock": [[50, "nameblock"], [51, "nameblock"], [52, "nameblock"], [53, "nameblock"], [57, "nameblock"], [58, "nameblock"], [59, "nameblock"], [60, "nameblock"], [61, "nameblock"]], "ReturnTypeBlock": [[50, "returntypeblock"]], "Package": [[51, "package"], [81, "package"]], "Package Body": [[52, "package-body"], [81, "package-body"]], "Procedure": [[53, "procedure"], [87, "procedure"]], "VoidBlock": [[53, "voidblock"]], "Process": [[54, "process"], [80, "process"]], "OpenBlock": [[54, "openblock"]], "OpenBlock2": [[54, "openblock2"]], "Sequential": [[55, "sequential"]], "Specific Blocks": [[56, "specific-blocks"]], "Architecture": [[57, "architecture"]], "Block": [[58, "block"]], "Component": [[59, "component"]], "Configuration": [[60, "configuration"], [81, "configuration"]], "Entity": [[61, "entity"], [81, "entity"]], "Structural": [[62, "structural"]], "Subtype": [[63, "subtype"]], "Type": [[64, "type"]], "Types": [[65, "types"]], "Usage": [[66, "usage"], [77, "usage"], [102, "usage"]], "Block Iterator": [[66, "block-iterator"]], "Token Iterator": [[66, "token-iterator"], [102, "token-iterator"]], "2. Pass - Blocks": [[67, "pass-blocks"]], "ChangeLog": [[68, "changelog"]], "Concepts": [[69, "concepts"]], "Multiple Passes": [[69, "multiple-passes"]], "Object-Oriented Programming": [[69, "object-oriented-programming"]], "Data Structures": [[69, "data-structures"]], "Inheritance": [[69, "inheritance"]], "Multiple Inheritance (Mixins)": [[69, "multiple-inheritance-mixins"]], "Properties": [[69, "properties"]], "Overwriting": [[69, "overwriting"]], "Overloading": [[69, "overloading"]], "Meta-Classes": [[69, "meta-classes"]], "Type Annotations": [[69, "type-annotations"]], "Double-Linked Lists": [[69, "double-linked-lists"]], "Python iterators": [[69, "python-iterators"]], "Python generators": [[69, "python-generators"]], "Parallelism": [[69, "parallelism"]], "Token replacement": [[69, "token-replacement"]], "Classmethods as States": [[69, "classmethods-as-states"]], "Parser State Machine": [[69, "parser-state-machine"]], "Code-DOM": [[69, "code-dom"]], "Dependencies": [[70, "dependencies"], [79, "dependencies"]], "pyTooling Package (Mandatory)": [[70, "pytooling-package-mandatory"]], "Unit Testing / Coverage / Type Checking (Optional)": [[70, "unit-testing-coverage-type-checking-optional"]], "Sphinx Documentation (Optional)": [[70, "sphinx-documentation-optional"]], "Packaging (Optional)": [[70, "packaging-optional"]], "Publishing (CI-Server only)": [[70, "publishing-ci-server-only"]], "Creative Commons Attribution 4.0 International": [[71, "creative-commons-attribution-4-0-international"]], "Using Creative Commons Public Licenses": [[71, null]], "Creative Commons Attribution 4.0 International Public License": [[71, "creative-commons-attribution-4-0-international-public-license"]], "Section 1 \u2013 Definitions.": [[71, "section-1-definitions"]], "Section 2 \u2013 Scope.": [[71, "section-2-scope"]], "Section 3 \u2013 License Conditions.": [[71, "section-3-license-conditions"]], "Section 4 \u2013 Sui Generis Database Rights.": [[71, "section-4-sui-generis-database-rights"]], "Section 5 \u2013 Disclaimer of Warranties and Limitation of Liability.": [[71, "section-5-disclaimer-of-warranties-and-limitation-of-liability"]], "Section 6 \u2013 Term and Termination.": [[71, "section-6-term-and-termination"]], "Section 7 \u2013 Other Terms and Conditions.": [[71, "section-7-other-terms-and-conditions"]], "Section 8 \u2013 Interpretation.": [[71, "section-8-interpretation"]], "4. Pass - Code-DOM": [[72, "pass-code-dom"]], "Glossary": [[73, "glossary"]], "Group Generator": [[75, "group-generator"]], "Meta Groups": [[76, "meta-groups"]], "StartOfDocumentGroup": [[76, "startofdocumentgroup"]], "EndOfDocumentGroup": [[76, "endofdocumentgroup"]], "3. Pass - Groups": [[78, "pass-groups"]], "Installation/Updates": [[79, "installation-updates"]], "Using PIP": [[79, "using-pip"]], "Installation using PIP": [[79, "installation-using-pip"]], "Updating using PIP": [[79, "updating-using-pip"]], "Using setup.py": [[79, "using-setup-py"]], "pyVHDLParser Package": [[79, "pyvhdlparser-package"]], "Unit Testing / Coverage": [[79, "unit-testing-coverage"]], "Sphinx Documentation": [[79, "sphinx-documentation"]], "Concurrent Statements": [[80, "concurrent-statements"]], "Assert": [[80, "assert"]], "Instantiation": [[80, "instantiation"]], "If Generate": [[80, "if-generate"]], "Case Generate": [[80, "case-generate"]], "For Generate": [[80, "for-generate"]], "Procedure Call": [[80, "procedure-call"], [86, "procedure-call"]], "Design Units": [[81, "design-units"]], "Primary Units": [[81, "primary-units"]], "Context": [[81, "context"]], "Secondary Units": [[81, "secondary-units"]], "Architeture": [[81, "architeture"]], "Enumerations": [[82, "enumerations"]], "Modes": [[82, "modes"]], "Object Classes": [[82, "object-classes"]], "Interface Items": [[83, "interface-items"]], "Generic Interface Item": [[83, "generic-interface-item"]], "GenericConstantInterfaceItem": [[83, "genericconstantinterfaceitem"]], "GenericTypeInterfaceItem": [[83, "generictypeinterfaceitem"]], "GenericSubprogramInterfaceItem": [[83, "genericsubprograminterfaceitem"]], "GenericPackageInterfaceItem": [[83, "genericpackageinterfaceitem"]], "Port Interface Item": [[83, "port-interface-item"]], "PortSignalInterfaceItem": [[83, "portsignalinterfaceitem"]], "Parameter Interface Item": [[83, "parameter-interface-item"]], "ParameterConstantInterfaceItem": [[83, "parameterconstantinterfaceitem"]], "ParameterVariableInterfaceItem": [[83, "parametervariableinterfaceitem"]], "ParameterSignalInterfaceItem": [[83, "parametersignalinterfaceitem"]], "ParameterFileInterfaceItem": [[83, "parameterfileinterfaceitem"]], "Concepts not defined by IEEE Std. 1076": [[84, "concepts-not-defined-by-ieee-std-1076"]], "Design": [[84, "design"]], "LibraryStatement": [[84, "librarystatement"]], "Sourcecode File": [[84, "sourcecode-file"]], "Object Declartions": [[85, "object-declartions"]], "Constant": [[85, "constant"]], "Variable": [[85, "variable"]], "Shared Variable": [[85, "shared-variable"]], "Signal": [[85, "signal"]], "Sequential Statements": [[86, "sequential-statements"]], "Subprogram Declarations": [[87, "subprogram-declarations"]], "Type Declarations": [[88, "type-declarations"]], "Scalar Types": [[88, "scalar-types"]], "Enumeration": [[88, "enumeration"]], "Integer": [[88, "integer"]], "Real": [[88, "real"]], "Physical": [[88, "physical"]], "Composite Types": [[88, "composite-types"]], "Array": [[88, "array"]], "Record": [[88, "record"]], "Access": [[88, "access"]], "Protected": [[88, "protected"]], "VHDL Language Model": [[89, "vhdl-language-model"]], "Apache License 2.0": [[90, "apache-license-2-0"]], "1. Definitions.": [[90, "definitions"]], "2. Grant of Copyright License.": [[90, "grant-of-copyright-license"]], "3. Grant of Patent License.": [[90, "grant-of-patent-license"]], "4. Redistribution.": [[90, "redistribution"]], "5. Submission of Contributions.": [[90, "submission-of-contributions"]], "6. Trademarks.": [[90, "trademarks"]], "7. Disclaimer of Warranty.": [[90, "disclaimer-of-warranty"]], "8. Limitation of Liability.": [[90, "limitation-of-liability"]], "9. Accepting Warranty or Additional Liability.": [[90, "accepting-warranty-or-additional-liability"]], "0. Pass - Preprocessing": [[91, "pass-preprocessing"]], "Project Goals": [[92, "project-goals"]], "Scripts and Applications": [[93, "scripts-and-applications"]], "VHDLParser": [[93, "vhdlparser"]], "options": [[93, "options"]], "VHDLParser CodeDOM": [[93, "vhdlparser-codedom"]], "VHDLParser antlr": [[93, "vhdlparser-antlr"]], "VHDLParser block-check": [[93, "vhdlparser-block-check"]], "VHDLParser block-stream": [[93, "vhdlparser-block-stream"]], "VHDLParser group-stream": [[93, "vhdlparser-group-stream"]], "VHDLParser help": [[93, "vhdlparser-help"]], "VHDLParser token-check": [[93, "vhdlparser-token-check"]], "VHDLParser token-stream": [[93, "vhdlparser-token-stream"]], "VHDLParser version": [[93, "vhdlparser-version"]], "Command Line Interface VHDLParser": [[95, "command-line-interface-vhdlparser"]], "Token Generation": [[95, "token-generation"]], "Testing Token Generation": [[95, "testing-token-generation"]], "Block Generation": [[95, "block-generation"]], "Testing Blocks Generation": [[95, "testing-blocks-generation"]], "Testing Groups Generation": [[95, "testing-groups-generation"]], "Testing CodeDOM Generation": [[95, "testing-codedom-generation"]], "Test Applications": [[96, "test-applications"]], "Meta Tokens": [[98, "meta-tokens"]], "StartOfDocumentToken": [[98, "startofdocumenttoken"]], "EndOfDocumentToken": [[98, "endofdocumenttoken"]], "Simple Tokens": [[99, "simple-tokens"]], "Specific Tokens": [[100, "specific-tokens"]], "Token Generator (Tokenizer)": [[101, "token-generator-tokenizer"]], "Token Generator": [[102, "token-generator"]], "1. Pass - Tokens": [[103, "pass-tokens"]], "Use Cases": [[104, "use-cases"], [105, "use-cases"]], "Sourcecode Document Object Model": [[104, "sourcecode-document-object-model"]], "Language Model": [[104, "language-model"]], "Dependency Graphs and Cross-References": [[104, "dependency-graphs-and-cross-references"]], "Syntax Highlighting": [[104, "syntax-highlighting"]], "Syntax-Checking": [[104, "syntax-checking"]], "Documentation Extraction": [[104, "documentation-extraction"]], "Documentation Coverage Collection": [[104, "documentation-coverage-collection"]], "Static Code Analysis": [[104, "static-code-analysis"]], "Document Transformation": [[104, "document-transformation"]], "Code Generation": [[104, "code-generation"]], "Test Platform for new Language Revisions": [[104, "test-platform-for-new-language-revisions"]], "The pyVHDLParser Documentation": [[105, "the-pyvhdlparser-documentation"]], "Main Goals": [[105, "main-goals"]], "Parsing Approach": [[105, "parsing-approach"]], "Additional Aims": [[105, "additional-aims"]], "News": [[105, "news"]], "Mar. 2023 - Enhancements": [[105, "mar-2023-enhancements"]], "Jun. 2021 - Enhancements": [[105, "jun-2021-enhancements"]], "Nov. 2020 - Test cases": [[105, "nov-2020-test-cases"]], "Dec. 2019 - Major reworks": [[105, "dec-2019-major-reworks"]], "Dec. 2018 - Minor updates": [[105, "dec-2018-minor-updates"]], "Nov. 2017 - New features": [[105, "nov-2017-new-features"]], "20.09.2017 - Project started": [[105, "project-started"]], "Contributors": [[105, "contributors"]], "License": [[105, "license"]], "Python Class Reference": [[106, "python-class-reference"], [115, "python-class-reference"], [193, "python-class-reference"]], "pyVHDLParser.ANTLR3": [[107, "module-pyVHDLParser.ANTLR3"]], "pyVHDLParser.ANTLR3.VHDLLexer": [[108, "module-pyVHDLParser.ANTLR3.VHDLLexer"]], "pyVHDLParser.ANTLR3.VHDLParser": [[109, "module-pyVHDLParser.ANTLR3.VHDLParser"]], "pyVHDLParser.ANTLR4": [[110, "module-pyVHDLParser.ANTLR4"]], "pyVHDLParser.ANTLR4.VHDLLexer": [[111, "module-pyVHDLParser.ANTLR4.VHDLLexer"]], "pyVHDLParser.ANTLR4.VHDLParser": [[112, "module-pyVHDLParser.ANTLR4.VHDLParser"]], "pyVHDLParser.ANTLR4.VHDLParserVisitor": [[113, "module-pyVHDLParser.ANTLR4.VHDLParserVisitor"]], "pyVHDLParser.ANTLR4.Visitor": [[114, "module-pyVHDLParser.ANTLR4.Visitor"]], "pyVHDLParser.Blocks": [[116, "module-pyVHDLParser.Blocks"]], "pyVHDLParser.Blocks.Assignment": [[117, "module-pyVHDLParser.Blocks.Assignment"]], "pyVHDLParser.Blocks.Assignment.SignalAssignment": [[118, "module-pyVHDLParser.Blocks.Assignment.SignalAssignment"]], "pyVHDLParser.Blocks.Assignment.VariableAssignment": [[119, "module-pyVHDLParser.Blocks.Assignment.VariableAssignment"]], "pyVHDLParser.Blocks.Attribute": [[120, "module-pyVHDLParser.Blocks.Attribute"]], "pyVHDLParser.Blocks.Attribute.AttributeDeclaration": [[121, "module-pyVHDLParser.Blocks.Attribute.AttributeDeclaration"]], "pyVHDLParser.Blocks.Attribute.AttributeSpecification": [[122, "module-pyVHDLParser.Blocks.Attribute.AttributeSpecification"]], "pyVHDLParser.Blocks.Comment": [[123, "module-pyVHDLParser.Blocks.Comment"]], "pyVHDLParser.Blocks.Common": [[124, "module-pyVHDLParser.Blocks.Common"]], "pyVHDLParser.Blocks.ControlStructure": [[125, "module-pyVHDLParser.Blocks.ControlStructure"]], "pyVHDLParser.Blocks.ControlStructure.Case": [[126, "module-pyVHDLParser.Blocks.ControlStructure.Case"]], "pyVHDLParser.Blocks.ControlStructure.Exit": [[127, "module-pyVHDLParser.Blocks.ControlStructure.Exit"]], "pyVHDLParser.Blocks.ControlStructure.ForLoop": [[128, "module-pyVHDLParser.Blocks.ControlStructure.ForLoop"]], "pyVHDLParser.Blocks.ControlStructure.If": [[129, "module-pyVHDLParser.Blocks.ControlStructure.If"]], "pyVHDLParser.Blocks.ControlStructure.Next": [[130, "module-pyVHDLParser.Blocks.ControlStructure.Next"]], "pyVHDLParser.Blocks.ControlStructure.Null": [[131, "module-pyVHDLParser.Blocks.ControlStructure.Null"]], "pyVHDLParser.Blocks.ControlStructure.Return": [[132, "module-pyVHDLParser.Blocks.ControlStructure.Return"]], "pyVHDLParser.Blocks.ControlStructure.WhileLoop": [[133, "module-pyVHDLParser.Blocks.ControlStructure.WhileLoop"]], "pyVHDLParser.Blocks.Exception": [[134, "module-pyVHDLParser.Blocks.Exception"]], "pyVHDLParser.Blocks.Expression": [[135, "module-pyVHDLParser.Blocks.Expression"]], "pyVHDLParser.Blocks.Generate": [[136, "module-pyVHDLParser.Blocks.Generate"]], "pyVHDLParser.Blocks.Generate.CaseGenerate": [[137, "module-pyVHDLParser.Blocks.Generate.CaseGenerate"]], "pyVHDLParser.Blocks.Generate.ForGenerate": [[138, "module-pyVHDLParser.Blocks.Generate.ForGenerate"]], "pyVHDLParser.Blocks.Generate.IfGenerate": [[139, "module-pyVHDLParser.Blocks.Generate.IfGenerate"]], "pyVHDLParser.Blocks.Generic": [[140, "module-pyVHDLParser.Blocks.Generic"]], "pyVHDLParser.Blocks.Generic1": [[141, "module-pyVHDLParser.Blocks.Generic1"]], "pyVHDLParser.Blocks.Instantiation": [[142, "module-pyVHDLParser.Blocks.Instantiation"]], "pyVHDLParser.Blocks.Instantiation.EntityInstantiation": [[143, "module-pyVHDLParser.Blocks.Instantiation.EntityInstantiation"]], "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation": [[144, "module-pyVHDLParser.Blocks.Instantiation.FunctionInstantiation"]], "pyVHDLParser.Blocks.Instantiation.PackageInstantiation": [[145, "module-pyVHDLParser.Blocks.Instantiation.PackageInstantiation"]], "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation": [[146, "module-pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation"]], "pyVHDLParser.Blocks.InterfaceObject": [[147, "module-pyVHDLParser.Blocks.InterfaceObject"]], "pyVHDLParser.Blocks.List": [[148, "module-pyVHDLParser.Blocks.List"]], "pyVHDLParser.Blocks.List.GenericList": [[149, "module-pyVHDLParser.Blocks.List.GenericList"]], "pyVHDLParser.Blocks.List.GenericMapList": [[150, "module-pyVHDLParser.Blocks.List.GenericMapList"]], "pyVHDLParser.Blocks.List.ParameterList": [[151, "module-pyVHDLParser.Blocks.List.ParameterList"]], "pyVHDLParser.Blocks.List.PortList": [[152, "module-pyVHDLParser.Blocks.List.PortList"]], "pyVHDLParser.Blocks.List.PortMapList": [[153, "module-pyVHDLParser.Blocks.List.PortMapList"]], "pyVHDLParser.Blocks.List.SensitivityList": [[154, "module-pyVHDLParser.Blocks.List.SensitivityList"]], "pyVHDLParser.Blocks.Object": [[155, "module-pyVHDLParser.Blocks.Object"]], "pyVHDLParser.Blocks.Object.Constant": [[156, "module-pyVHDLParser.Blocks.Object.Constant"]], "pyVHDLParser.Blocks.Object.File": [[157, "module-pyVHDLParser.Blocks.Object.File"]], "pyVHDLParser.Blocks.Object.SharedVariable": [[158, "module-pyVHDLParser.Blocks.Object.SharedVariable"]], "pyVHDLParser.Blocks.Object.Signal": [[159, "module-pyVHDLParser.Blocks.Object.Signal"]], "pyVHDLParser.Blocks.Object.Variable": [[160, "module-pyVHDLParser.Blocks.Object.Variable"]], "pyVHDLParser.Blocks.Reference": [[161, "module-pyVHDLParser.Blocks.Reference"]], "pyVHDLParser.Blocks.Reference.Context": [[162, "module-pyVHDLParser.Blocks.Reference.Context"]], "pyVHDLParser.Blocks.Reference.Library": [[163, "module-pyVHDLParser.Blocks.Reference.Library"]], "pyVHDLParser.Blocks.Reference.Use": [[164, "module-pyVHDLParser.Blocks.Reference.Use"]], "pyVHDLParser.Blocks.Reporting": [[165, "module-pyVHDLParser.Blocks.Reporting"]], "pyVHDLParser.Blocks.Reporting.Assert": [[166, "module-pyVHDLParser.Blocks.Reporting.Assert"]], "pyVHDLParser.Blocks.Reporting.Report": [[167, "module-pyVHDLParser.Blocks.Reporting.Report"]], "pyVHDLParser.Blocks.Sequential": [[168, "module-pyVHDLParser.Blocks.Sequential"]], "pyVHDLParser.Blocks.Sequential.Function": [[169, "module-pyVHDLParser.Blocks.Sequential.Function"]], "pyVHDLParser.Blocks.Sequential.Package": [[170, "module-pyVHDLParser.Blocks.Sequential.Package"]], "pyVHDLParser.Blocks.Sequential.PackageBody": [[171, "module-pyVHDLParser.Blocks.Sequential.PackageBody"]], "pyVHDLParser.Blocks.Sequential.Procedure": [[172, "module-pyVHDLParser.Blocks.Sequential.Procedure"]], "pyVHDLParser.Blocks.Sequential.Process": [[173, "module-pyVHDLParser.Blocks.Sequential.Process"]], "pyVHDLParser.Blocks.Structural": [[174, "module-pyVHDLParser.Blocks.Structural"]], "pyVHDLParser.Blocks.Structural.Architecture": [[175, "module-pyVHDLParser.Blocks.Structural.Architecture"]], "pyVHDLParser.Blocks.Structural.Block": [[176, "module-pyVHDLParser.Blocks.Structural.Block"]], "pyVHDLParser.Blocks.Structural.Component": [[177, "module-pyVHDLParser.Blocks.Structural.Component"]], "pyVHDLParser.Blocks.Structural.Configuration": [[178, "module-pyVHDLParser.Blocks.Structural.Configuration"]], "pyVHDLParser.Blocks.Structural.Entity": [[179, "module-pyVHDLParser.Blocks.Structural.Entity"]], "pyVHDLParser.Blocks.Type": [[180, "module-pyVHDLParser.Blocks.Type"]], "pyVHDLParser.Blocks.Type.ResolutionIndication": [[181, "module-pyVHDLParser.Blocks.Type.ResolutionIndication"]], "pyVHDLParser.Blocks.Type.Subtype": [[182, "module-pyVHDLParser.Blocks.Type.Subtype"]], "pyVHDLParser.Blocks.Type.SubtypeIndication": [[183, "module-pyVHDLParser.Blocks.Type.SubtypeIndication"]], "pyVHDLParser.Blocks.Type.Type": [[184, "module-pyVHDLParser.Blocks.Type.Type"]], "pyVHDLParser.CLI": [[185, "module-pyVHDLParser.CLI"]], "pyVHDLParser.CLI.ANTLR": [[186, "module-pyVHDLParser.CLI.ANTLR"]], "pyVHDLParser.CLI.Block": [[187, "module-pyVHDLParser.CLI.Block"]], "pyVHDLParser.CLI.CodeDOM": [[188, "module-pyVHDLParser.CLI.CodeDOM"]], "pyVHDLParser.CLI.GraphML": [[189, "module-pyVHDLParser.CLI.GraphML"]], "pyVHDLParser.CLI.Group": [[190, "module-pyVHDLParser.CLI.Group"]], "pyVHDLParser.CLI.Token": [[191, "module-pyVHDLParser.CLI.Token"]], "pyVHDLParser.CLI.VHDLParser": [[192, "module-pyVHDLParser.CLI.VHDLParser"]], "pyVHDLParser.DocumentModel": [[194, "module-pyVHDLParser.DocumentModel"]], "pyVHDLParser.DocumentModel.DesignUnit": [[195, "module-pyVHDLParser.DocumentModel.DesignUnit"]], "pyVHDLParser.DocumentModel.DesignUnit.Architecture": [[196, "module-pyVHDLParser.DocumentModel.DesignUnit.Architecture"]], "pyVHDLParser.DocumentModel.DesignUnit.Context": [[197, "module-pyVHDLParser.DocumentModel.DesignUnit.Context"]], "pyVHDLParser.DocumentModel.DesignUnit.Entity": [[198, "module-pyVHDLParser.DocumentModel.DesignUnit.Entity"]], "pyVHDLParser.DocumentModel.DesignUnit.Package": [[199, "module-pyVHDLParser.DocumentModel.DesignUnit.Package"]], "pyVHDLParser.DocumentModel.DesignUnit.PackageBody": [[200, "module-pyVHDLParser.DocumentModel.DesignUnit.PackageBody"]], "pyVHDLParser.DocumentModel.ObjectDeclaration": [[201, "module-pyVHDLParser.DocumentModel.ObjectDeclaration"]], "pyVHDLParser.DocumentModel.Reference": [[202, "module-pyVHDLParser.DocumentModel.Reference"]], "pyVHDLParser.DocumentModel.Sequential": [[203, "module-pyVHDLParser.DocumentModel.Sequential"]], "pyVHDLParser.DocumentModel.Sequential.Function": [[204, "module-pyVHDLParser.DocumentModel.Sequential.Function"]], "pyVHDLParser.Filters": [[205, "module-pyVHDLParser.Filters"]], "pyVHDLParser.Filters.Comment": [[206, "module-pyVHDLParser.Filters.Comment"]], "pyVHDLParser.Groups": [[207, "module-pyVHDLParser.Groups"]], "pyVHDLParser.Groups.Comment": [[208, "module-pyVHDLParser.Groups.Comment"]], "pyVHDLParser.Groups.Concurrent": [[209, "module-pyVHDLParser.Groups.Concurrent"]], "pyVHDLParser.Groups.DesignUnit": [[210, "module-pyVHDLParser.Groups.DesignUnit"]], "pyVHDLParser.Groups.List": [[211, "module-pyVHDLParser.Groups.List"]], "pyVHDLParser.Groups.Object": [[212, "module-pyVHDLParser.Groups.Object"]], "pyVHDLParser.Groups.Reference": [[213, "module-pyVHDLParser.Groups.Reference"]], "pyVHDLParser.Groups.Sequential": [[214, "module-pyVHDLParser.Groups.Sequential"]], "pyVHDLParser.Groups.Sequential.Function": [[215, "module-pyVHDLParser.Groups.Sequential.Function"]], "pyVHDLParser.Groups.Sequential.Procedure": [[216, "module-pyVHDLParser.Groups.Sequential.Procedure"]], "pyVHDLParser.Groups.Sequential.Process": [[217, "module-pyVHDLParser.Groups.Sequential.Process"]], "pyVHDLParser.LanguageModel": [[218, "module-pyVHDLParser.LanguageModel"]], "pyVHDLParser.LanguageModel.DesignUnit": [[219, "module-pyVHDLParser.LanguageModel.DesignUnit"]], "pyVHDLParser.LanguageModel.Expression": [[220, "module-pyVHDLParser.LanguageModel.Expression"]], "pyVHDLParser.LanguageModel.InterfaceItem": [[221, "module-pyVHDLParser.LanguageModel.InterfaceItem"]], "pyVHDLParser.LanguageModel.Reference": [[222, "module-pyVHDLParser.LanguageModel.Reference"]], "pyVHDLParser.NetlistModel": [[223, "module-pyVHDLParser.NetlistModel"]], "pyVHDLParser.NetlistModel.NetlistModel": [[224, "module-pyVHDLParser.NetlistModel.NetlistModel"]], "pyVHDLParser.SimulationModel": [[225, "module-pyVHDLParser.SimulationModel"]], "pyVHDLParser.SimulationModel.EventSystem": [[226, "module-pyVHDLParser.SimulationModel.EventSystem"]], "pyVHDLParser.SimulationModel.SimulationModel": [[227, "module-pyVHDLParser.SimulationModel.SimulationModel"]], "pyVHDLParser.StyleChecks": [[228, "module-pyVHDLParser.StyleChecks"]], "pyVHDLParser.Token": [[229, "module-pyVHDLParser.Token"]], "pyVHDLParser.Token.Keywords": [[230, "module-pyVHDLParser.Token.Keywords"]], "pyVHDLParser.Token.Parser": [[231, "module-pyVHDLParser.Token.Parser"]], "pyVHDLParser.TypeSystem": [[232, "module-pyVHDLParser.TypeSystem"]], "pyVHDLParser.TypeSystem.Package": [[233, "module-pyVHDLParser.TypeSystem.Package"]], "pyVHDLParser.TypeSystem.TypeSystem": [[234, "module-pyVHDLParser.TypeSystem.TypeSystem"]], "pyVHDLParser.TypeSystem.std": [[235, "module-pyVHDLParser.TypeSystem.std"]], "pyVHDLParser.TypeSystem.std_logic_1164": [[236, "module-pyVHDLParser.TypeSystem.std_logic_1164"]]}, "indexentries": {"block": [[73, "term-Block"]], "lrm": [[73, "term-LRM"]], "meta-class": [[73, "term-Meta-Class"]], "multipart block": [[73, "term-Multipart-Block"]], "token": [[73, "term-Token"]], "--debug": [[93, "cmdoption-VHDLParser-d"]], "--help": [[93, "cmdoption-VHDLParser-CodeDOM-h"], [93, "cmdoption-VHDLParser-antlr-h"], [93, "cmdoption-VHDLParser-block-check-h"], [93, "cmdoption-VHDLParser-block-stream-h"], [93, "cmdoption-VHDLParser-group-stream-h"], [93, "cmdoption-VHDLParser-help-h"], [93, "cmdoption-VHDLParser-token-check-h"], [93, "cmdoption-VHDLParser-token-stream-h"], [93, "cmdoption-VHDLParser-version-h"]], "--quiet": [[93, "cmdoption-VHDLParser-q"]], "--verbose": [[93, "cmdoption-VHDLParser-v"]], "--with-blocks": [[93, "cmdoption-VHDLParser-group-stream-B"]], "--with-tokens": [[93, "cmdoption-VHDLParser-block-check-T"], [93, "cmdoption-VHDLParser-block-stream-T"], [93, "cmdoption-VHDLParser-group-stream-T"]], "-b": [[93, "cmdoption-VHDLParser-group-stream-B"]], "-t": [[93, "cmdoption-VHDLParser-block-check-T"], [93, "cmdoption-VHDLParser-block-stream-T"], [93, "cmdoption-VHDLParser-group-stream-T"]], "-d": [[93, "cmdoption-VHDLParser-d"]], "-h": [[93, "cmdoption-VHDLParser-CodeDOM-h"], [93, "cmdoption-VHDLParser-antlr-h"], [93, "cmdoption-VHDLParser-block-check-h"], [93, "cmdoption-VHDLParser-block-stream-h"], [93, "cmdoption-VHDLParser-group-stream-h"], [93, "cmdoption-VHDLParser-help-h"], [93, "cmdoption-VHDLParser-token-check-h"], [93, "cmdoption-VHDLParser-token-stream-h"], [93, "cmdoption-VHDLParser-version-h"]], "-q": [[93, "cmdoption-VHDLParser-q"]], "-v": [[93, "cmdoption-VHDLParser-v"]], "vhdlparser command line option": [[93, "cmdoption-VHDLParser-d"], [93, "cmdoption-VHDLParser-q"], [93, "cmdoption-VHDLParser-v"]], "vhdlparser-codedom command line option": [[93, "cmdoption-VHDLParser-CodeDOM-arg-filename"], [93, "cmdoption-VHDLParser-CodeDOM-h"]], "vhdlparser-antlr command line option": [[93, "cmdoption-VHDLParser-antlr-arg-filename"], [93, "cmdoption-VHDLParser-antlr-h"]], "vhdlparser-block-check command line option": [[93, "cmdoption-VHDLParser-block-check-T"], [93, "cmdoption-VHDLParser-block-check-arg-filename"], [93, "cmdoption-VHDLParser-block-check-h"]], "vhdlparser-block-stream command line option": [[93, "cmdoption-VHDLParser-block-stream-T"], [93, "cmdoption-VHDLParser-block-stream-arg-filename"], [93, "cmdoption-VHDLParser-block-stream-h"]], "vhdlparser-group-stream command line option": [[93, "cmdoption-VHDLParser-group-stream-B"], [93, "cmdoption-VHDLParser-group-stream-T"], [93, "cmdoption-VHDLParser-group-stream-arg-filename"], [93, "cmdoption-VHDLParser-group-stream-h"]], "vhdlparser-help command line option": [[93, "cmdoption-VHDLParser-help-arg-command"], [93, "cmdoption-VHDLParser-help-h"]], "vhdlparser-token-check command line option": [[93, "cmdoption-VHDLParser-token-check-arg-filename"], [93, "cmdoption-VHDLParser-token-check-h"]], "vhdlparser-token-stream command line option": [[93, "cmdoption-VHDLParser-token-stream-arg-filename"], [93, "cmdoption-VHDLParser-token-stream-h"]], "vhdlparser-version command line option": [[93, "cmdoption-VHDLParser-version-h"]], "command": [[93, "cmdoption-VHDLParser-help-arg-command"]], "filename": [[93, "cmdoption-VHDLParser-CodeDOM-arg-filename"], [93, "cmdoption-VHDLParser-antlr-arg-filename"], [93, "cmdoption-VHDLParser-block-check-arg-filename"], [93, "cmdoption-VHDLParser-block-stream-arg-filename"], [93, "cmdoption-VHDLParser-group-stream-arg-filename"], [93, "cmdoption-VHDLParser-token-check-arg-filename"], [93, "cmdoption-VHDLParser-token-stream-arg-filename"]], "module": [[106, "module-pyVHDLParser"], [107, "module-pyVHDLParser.ANTLR3"], [108, "module-pyVHDLParser.ANTLR3.VHDLLexer"], [109, "module-pyVHDLParser.ANTLR3.VHDLParser"], [110, "module-pyVHDLParser.ANTLR4"], [111, "module-pyVHDLParser.ANTLR4.VHDLLexer"], [112, "module-pyVHDLParser.ANTLR4.VHDLParser"], [113, "module-pyVHDLParser.ANTLR4.VHDLParserVisitor"], [114, "module-pyVHDLParser.ANTLR4.Visitor"], [115, "module-pyVHDLParser.Base"], [116, "module-pyVHDLParser.Blocks"], [117, "module-pyVHDLParser.Blocks.Assignment"], [118, "module-pyVHDLParser.Blocks.Assignment.SignalAssignment"], [119, "module-pyVHDLParser.Blocks.Assignment.VariableAssignment"], [120, "module-pyVHDLParser.Blocks.Attribute"], [121, "module-pyVHDLParser.Blocks.Attribute.AttributeDeclaration"], [122, "module-pyVHDLParser.Blocks.Attribute.AttributeSpecification"], [123, "module-pyVHDLParser.Blocks.Comment"], [124, "module-pyVHDLParser.Blocks.Common"], [125, "module-pyVHDLParser.Blocks.ControlStructure"], [126, "module-pyVHDLParser.Blocks.ControlStructure.Case"], [127, "module-pyVHDLParser.Blocks.ControlStructure.Exit"], [128, "module-pyVHDLParser.Blocks.ControlStructure.ForLoop"], [129, "module-pyVHDLParser.Blocks.ControlStructure.If"], [130, "module-pyVHDLParser.Blocks.ControlStructure.Next"], [131, "module-pyVHDLParser.Blocks.ControlStructure.Null"], [132, "module-pyVHDLParser.Blocks.ControlStructure.Return"], [133, "module-pyVHDLParser.Blocks.ControlStructure.WhileLoop"], [134, "module-pyVHDLParser.Blocks.Exception"], [135, "module-pyVHDLParser.Blocks.Expression"], [136, "module-pyVHDLParser.Blocks.Generate"], [137, "module-pyVHDLParser.Blocks.Generate.CaseGenerate"], [138, "module-pyVHDLParser.Blocks.Generate.ForGenerate"], [139, "module-pyVHDLParser.Blocks.Generate.IfGenerate"], [140, "module-pyVHDLParser.Blocks.Generic"], [141, "module-pyVHDLParser.Blocks.Generic1"], [142, "module-pyVHDLParser.Blocks.Instantiation"], [143, "module-pyVHDLParser.Blocks.Instantiation.EntityInstantiation"], [144, "module-pyVHDLParser.Blocks.Instantiation.FunctionInstantiation"], [145, "module-pyVHDLParser.Blocks.Instantiation.PackageInstantiation"], [146, "module-pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation"], [147, "module-pyVHDLParser.Blocks.InterfaceObject"], [148, "module-pyVHDLParser.Blocks.List"], [149, "module-pyVHDLParser.Blocks.List.GenericList"], [150, "module-pyVHDLParser.Blocks.List.GenericMapList"], [151, "module-pyVHDLParser.Blocks.List.ParameterList"], [152, "module-pyVHDLParser.Blocks.List.PortList"], [153, "module-pyVHDLParser.Blocks.List.PortMapList"], [154, "module-pyVHDLParser.Blocks.List.SensitivityList"], [155, "module-pyVHDLParser.Blocks.Object"], [156, "module-pyVHDLParser.Blocks.Object.Constant"], [157, "module-pyVHDLParser.Blocks.Object.File"], [158, "module-pyVHDLParser.Blocks.Object.SharedVariable"], [159, "module-pyVHDLParser.Blocks.Object.Signal"], [160, "module-pyVHDLParser.Blocks.Object.Variable"], [161, "module-pyVHDLParser.Blocks.Reference"], [162, "module-pyVHDLParser.Blocks.Reference.Context"], [163, "module-pyVHDLParser.Blocks.Reference.Library"], [164, "module-pyVHDLParser.Blocks.Reference.Use"], [165, "module-pyVHDLParser.Blocks.Reporting"], [166, "module-pyVHDLParser.Blocks.Reporting.Assert"], [167, "module-pyVHDLParser.Blocks.Reporting.Report"], [168, "module-pyVHDLParser.Blocks.Sequential"], [169, "module-pyVHDLParser.Blocks.Sequential.Function"], [170, "module-pyVHDLParser.Blocks.Sequential.Package"], [171, "module-pyVHDLParser.Blocks.Sequential.PackageBody"], [172, "module-pyVHDLParser.Blocks.Sequential.Procedure"], [173, "module-pyVHDLParser.Blocks.Sequential.Process"], [174, "module-pyVHDLParser.Blocks.Structural"], [175, "module-pyVHDLParser.Blocks.Structural.Architecture"], [176, "module-pyVHDLParser.Blocks.Structural.Block"], [177, "module-pyVHDLParser.Blocks.Structural.Component"], [178, "module-pyVHDLParser.Blocks.Structural.Configuration"], [179, "module-pyVHDLParser.Blocks.Structural.Entity"], [180, "module-pyVHDLParser.Blocks.Type"], [181, "module-pyVHDLParser.Blocks.Type.ResolutionIndication"], [182, "module-pyVHDLParser.Blocks.Type.Subtype"], [183, "module-pyVHDLParser.Blocks.Type.SubtypeIndication"], [184, "module-pyVHDLParser.Blocks.Type.Type"], [185, "module-pyVHDLParser.CLI"], [186, "module-pyVHDLParser.CLI.ANTLR"], [187, "module-pyVHDLParser.CLI.Block"], [188, "module-pyVHDLParser.CLI.CodeDOM"], [189, "module-pyVHDLParser.CLI.GraphML"], [190, "module-pyVHDLParser.CLI.Group"], [191, "module-pyVHDLParser.CLI.Token"], [192, "module-pyVHDLParser.CLI.VHDLParser"], [193, "module-pyVHDLParser.Decorators"], [194, "module-pyVHDLParser.DocumentModel"], [195, "module-pyVHDLParser.DocumentModel.DesignUnit"], [196, "module-pyVHDLParser.DocumentModel.DesignUnit.Architecture"], [197, "module-pyVHDLParser.DocumentModel.DesignUnit.Context"], [198, "module-pyVHDLParser.DocumentModel.DesignUnit.Entity"], [199, "module-pyVHDLParser.DocumentModel.DesignUnit.Package"], [200, "module-pyVHDLParser.DocumentModel.DesignUnit.PackageBody"], [201, "module-pyVHDLParser.DocumentModel.ObjectDeclaration"], [202, "module-pyVHDLParser.DocumentModel.Reference"], [203, "module-pyVHDLParser.DocumentModel.Sequential"], [204, "module-pyVHDLParser.DocumentModel.Sequential.Function"], [205, "module-pyVHDLParser.Filters"], [206, "module-pyVHDLParser.Filters.Comment"], [207, "module-pyVHDLParser.Groups"], [208, "module-pyVHDLParser.Groups.Comment"], [209, "module-pyVHDLParser.Groups.Concurrent"], [210, "module-pyVHDLParser.Groups.DesignUnit"], [211, "module-pyVHDLParser.Groups.List"], [212, "module-pyVHDLParser.Groups.Object"], [213, "module-pyVHDLParser.Groups.Reference"], [214, "module-pyVHDLParser.Groups.Sequential"], [215, "module-pyVHDLParser.Groups.Sequential.Function"], [216, "module-pyVHDLParser.Groups.Sequential.Procedure"], [217, "module-pyVHDLParser.Groups.Sequential.Process"], [218, "module-pyVHDLParser.LanguageModel"], [219, "module-pyVHDLParser.LanguageModel.DesignUnit"], [220, "module-pyVHDLParser.LanguageModel.Expression"], [221, "module-pyVHDLParser.LanguageModel.InterfaceItem"], [222, "module-pyVHDLParser.LanguageModel.Reference"], [223, "module-pyVHDLParser.NetlistModel"], [224, "module-pyVHDLParser.NetlistModel.NetlistModel"], [225, "module-pyVHDLParser.SimulationModel"], [226, "module-pyVHDLParser.SimulationModel.EventSystem"], [227, "module-pyVHDLParser.SimulationModel.SimulationModel"], [228, "module-pyVHDLParser.StyleChecks"], [229, "module-pyVHDLParser.Token"], [230, "module-pyVHDLParser.Token.Keywords"], [231, "module-pyVHDLParser.Token.Parser"], [232, "module-pyVHDLParser.TypeSystem"], [233, "module-pyVHDLParser.TypeSystem.Package"], [234, "module-pyVHDLParser.TypeSystem.TypeSystem"], [235, "module-pyVHDLParser.TypeSystem.std"], [236, "module-pyVHDLParser.TypeSystem.std_logic_1164"]], "pyvhdlparser": [[106, "module-pyVHDLParser"]], "pyvhdlparser.antlr3": [[107, "module-pyVHDLParser.ANTLR3"]], "pyvhdlparser.antlr3.vhdllexer": [[108, "module-pyVHDLParser.ANTLR3.VHDLLexer"]], "pyvhdlparser.antlr3.vhdlparser": [[109, "module-pyVHDLParser.ANTLR3.VHDLParser"]], "pyvhdlparser.antlr4": [[110, "module-pyVHDLParser.ANTLR4"]], "pyvhdlparser.antlr4.vhdllexer": [[111, "module-pyVHDLParser.ANTLR4.VHDLLexer"]], "pyvhdlparser.antlr4.vhdlparser": [[112, "module-pyVHDLParser.ANTLR4.VHDLParser"]], "pyvhdlparser.antlr4.vhdlparservisitor": [[113, "module-pyVHDLParser.ANTLR4.VHDLParserVisitor"]], "pyvhdlparser.antlr4.visitor": [[114, "module-pyVHDLParser.ANTLR4.Visitor"]], "pyvhdlparser.base": [[115, "module-pyVHDLParser.Base"]], "blocks (pyvhdlparser.blocks.metablock attribute)": [[116, "pyVHDLParser.Blocks.MetaBlock.BLOCKS"]], "block (class in pyvhdlparser.blocks)": [[116, "pyVHDLParser.Blocks.Block"]], "blockiterator (class in pyvhdlparser.blocks)": [[116, "pyVHDLParser.Blocks.BlockIterator"]], "blockparserexception": [[116, "pyVHDLParser.Blocks.BlockParserException"]], "blockreverseiterator (class in pyvhdlparser.blocks)": [[116, "pyVHDLParser.Blocks.BlockReverseIterator"]], "commentblock (class in pyvhdlparser.blocks)": [[116, "pyVHDLParser.Blocks.CommentBlock"]], "endofblock (class in pyvhdlparser.blocks)": [[116, "pyVHDLParser.Blocks.EndOfBlock"]], "endofdocumentblock (class in pyvhdlparser.blocks)": [[116, "pyVHDLParser.Blocks.EndOfDocumentBlock"]], "endofsnippetblock (class in pyvhdlparser.blocks)": [[116, "pyVHDLParser.Blocks.EndOfSnippetBlock"]], "endtoken (pyvhdlparser.blocks.block attribute)": [[116, "pyVHDLParser.Blocks.Block.EndToken"]], "endtoken (pyvhdlparser.blocks.commentblock attribute)": [[116, "pyVHDLParser.Blocks.CommentBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.endofblock attribute)": [[116, "pyVHDLParser.Blocks.EndOfBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.endofdocumentblock attribute)": [[116, "pyVHDLParser.Blocks.EndOfDocumentBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.endofsnippetblock attribute)": [[116, "pyVHDLParser.Blocks.EndOfSnippetBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.finalblock attribute)": [[116, "pyVHDLParser.Blocks.FinalBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.skipableblock attribute)": [[116, "pyVHDLParser.Blocks.SkipableBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.startofblock attribute)": [[116, "pyVHDLParser.Blocks.StartOfBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.startofdocumentblock attribute)": [[116, "pyVHDLParser.Blocks.StartOfDocumentBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.startofsnippetblock attribute)": [[116, "pyVHDLParser.Blocks.StartOfSnippetBlock.EndToken"]], "finalblock (class in pyvhdlparser.blocks)": [[116, "pyVHDLParser.Blocks.FinalBlock"]], "length (pyvhdlparser.blocks.block property)": [[116, "pyVHDLParser.Blocks.Block.Length"]], "length (pyvhdlparser.blocks.commentblock property)": [[116, "pyVHDLParser.Blocks.CommentBlock.Length"]], "length (pyvhdlparser.blocks.endofblock property)": [[116, "pyVHDLParser.Blocks.EndOfBlock.Length"]], "length (pyvhdlparser.blocks.endofdocumentblock property)": [[116, "pyVHDLParser.Blocks.EndOfDocumentBlock.Length"]], "length (pyvhdlparser.blocks.endofsnippetblock property)": [[116, "pyVHDLParser.Blocks.EndOfSnippetBlock.Length"]], "length (pyvhdlparser.blocks.finalblock property)": [[116, "pyVHDLParser.Blocks.FinalBlock.Length"]], "length (pyvhdlparser.blocks.skipableblock property)": [[116, "pyVHDLParser.Blocks.SkipableBlock.Length"]], "length (pyvhdlparser.blocks.startofblock property)": [[116, "pyVHDLParser.Blocks.StartOfBlock.Length"]], "length (pyvhdlparser.blocks.startofdocumentblock property)": [[116, "pyVHDLParser.Blocks.StartOfDocumentBlock.Length"]], "length (pyvhdlparser.blocks.startofsnippetblock property)": [[116, "pyVHDLParser.Blocks.StartOfSnippetBlock.Length"]], "metablock (class in pyvhdlparser.blocks)": [[116, "pyVHDLParser.Blocks.MetaBlock"]], "multipart (pyvhdlparser.blocks.block attribute)": [[116, "pyVHDLParser.Blocks.Block.MultiPart"]], "multipart (pyvhdlparser.blocks.commentblock attribute)": [[116, "pyVHDLParser.Blocks.CommentBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.endofblock attribute)": [[116, "pyVHDLParser.Blocks.EndOfBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.endofdocumentblock attribute)": [[116, "pyVHDLParser.Blocks.EndOfDocumentBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.endofsnippetblock attribute)": [[116, "pyVHDLParser.Blocks.EndOfSnippetBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.finalblock attribute)": [[116, "pyVHDLParser.Blocks.FinalBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.skipableblock attribute)": [[116, "pyVHDLParser.Blocks.SkipableBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.startofblock attribute)": [[116, "pyVHDLParser.Blocks.StartOfBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.startofdocumentblock attribute)": [[116, "pyVHDLParser.Blocks.StartOfDocumentBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.startofsnippetblock attribute)": [[116, "pyVHDLParser.Blocks.StartOfSnippetBlock.MultiPart"]], "nextblock (pyvhdlparser.blocks.block attribute)": [[116, "pyVHDLParser.Blocks.Block.NextBlock"]], "nextblock (pyvhdlparser.blocks.commentblock attribute)": [[116, "pyVHDLParser.Blocks.CommentBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.endofblock attribute)": [[116, "pyVHDLParser.Blocks.EndOfBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.endofdocumentblock attribute)": [[116, "pyVHDLParser.Blocks.EndOfDocumentBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.endofsnippetblock attribute)": [[116, "pyVHDLParser.Blocks.EndOfSnippetBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.finalblock attribute)": [[116, "pyVHDLParser.Blocks.FinalBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.skipableblock attribute)": [[116, "pyVHDLParser.Blocks.SkipableBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.startofblock attribute)": [[116, "pyVHDLParser.Blocks.StartOfBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.startofdocumentblock attribute)": [[116, "pyVHDLParser.Blocks.StartOfDocumentBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.startofsnippetblock attribute)": [[116, "pyVHDLParser.Blocks.StartOfSnippetBlock.NextBlock"]], "skipableblock (class in pyvhdlparser.blocks)": [[116, "pyVHDLParser.Blocks.SkipableBlock"]], "startofblock (class in pyvhdlparser.blocks)": [[116, "pyVHDLParser.Blocks.StartOfBlock"]], "startofdocumentblock (class in pyvhdlparser.blocks)": [[116, "pyVHDLParser.Blocks.StartOfDocumentBlock"]], "startofsnippetblock (class in pyvhdlparser.blocks)": [[116, "pyVHDLParser.Blocks.StartOfSnippetBlock"]], "starttoken (pyvhdlparser.blocks.block attribute)": [[116, "pyVHDLParser.Blocks.Block.StartToken"]], "starttoken (pyvhdlparser.blocks.commentblock attribute)": [[116, "pyVHDLParser.Blocks.CommentBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.endofblock attribute)": [[116, "pyVHDLParser.Blocks.EndOfBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.endofdocumentblock attribute)": [[116, "pyVHDLParser.Blocks.EndOfDocumentBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.endofsnippetblock attribute)": [[116, "pyVHDLParser.Blocks.EndOfSnippetBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.finalblock attribute)": [[116, "pyVHDLParser.Blocks.FinalBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.skipableblock attribute)": [[116, "pyVHDLParser.Blocks.SkipableBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.startofblock attribute)": [[116, "pyVHDLParser.Blocks.StartOfBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.startofdocumentblock attribute)": [[116, "pyVHDLParser.Blocks.StartOfDocumentBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.startofsnippetblock attribute)": [[116, "pyVHDLParser.Blocks.StartOfSnippetBlock.StartToken"]], "states (pyvhdlparser.blocks.block property)": [[116, "pyVHDLParser.Blocks.Block.States"]], "states (pyvhdlparser.blocks.commentblock property)": [[116, "pyVHDLParser.Blocks.CommentBlock.States"]], "states (pyvhdlparser.blocks.endofblock property)": [[116, "pyVHDLParser.Blocks.EndOfBlock.States"]], "states (pyvhdlparser.blocks.endofdocumentblock property)": [[116, "pyVHDLParser.Blocks.EndOfDocumentBlock.States"]], "states (pyvhdlparser.blocks.endofsnippetblock property)": [[116, "pyVHDLParser.Blocks.EndOfSnippetBlock.States"]], "states (pyvhdlparser.blocks.finalblock property)": [[116, "pyVHDLParser.Blocks.FinalBlock.States"]], "states (pyvhdlparser.blocks.skipableblock property)": [[116, "pyVHDLParser.Blocks.SkipableBlock.States"]], "states (pyvhdlparser.blocks.startofblock property)": [[116, "pyVHDLParser.Blocks.StartOfBlock.States"]], "states (pyvhdlparser.blocks.startofdocumentblock property)": [[116, "pyVHDLParser.Blocks.StartOfDocumentBlock.States"]], "states (pyvhdlparser.blocks.startofsnippetblock property)": [[116, "pyVHDLParser.Blocks.StartOfSnippetBlock.States"]], "tokentoblockparser (class in pyvhdlparser.blocks)": [[116, "pyVHDLParser.Blocks.TokenToBlockParser"]], "__states__ (pyvhdlparser.blocks.block attribute)": [[116, "pyVHDLParser.Blocks.Block.__STATES__"]], "__states__ (pyvhdlparser.blocks.commentblock attribute)": [[116, "pyVHDLParser.Blocks.CommentBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.endofblock attribute)": [[116, "pyVHDLParser.Blocks.EndOfBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.endofdocumentblock attribute)": [[116, "pyVHDLParser.Blocks.EndOfDocumentBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.endofsnippetblock attribute)": [[116, "pyVHDLParser.Blocks.EndOfSnippetBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.finalblock attribute)": [[116, "pyVHDLParser.Blocks.FinalBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.skipableblock attribute)": [[116, "pyVHDLParser.Blocks.SkipableBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.startofblock attribute)": [[116, "pyVHDLParser.Blocks.StartOfBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.startofdocumentblock attribute)": [[116, "pyVHDLParser.Blocks.StartOfDocumentBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.startofsnippetblock attribute)": [[116, "pyVHDLParser.Blocks.StartOfSnippetBlock.__STATES__"]], "__base__ (pyvhdlparser.blocks.metablock attribute)": [[116, "pyVHDLParser.Blocks.MetaBlock.__base__"]], "__call__() (pyvhdlparser.blocks.metablock method)": [[116, "pyVHDLParser.Blocks.MetaBlock.__call__"]], "__call__() (pyvhdlparser.blocks.tokentoblockparser method)": [[116, "pyVHDLParser.Blocks.TokenToBlockParser.__call__"]], "__delattr__() (pyvhdlparser.blocks.metablock method)": [[116, "pyVHDLParser.Blocks.MetaBlock.__delattr__"]], "__dir__() (pyvhdlparser.blocks.metablock method)": [[116, "pyVHDLParser.Blocks.MetaBlock.__dir__"]], "__eq__() (pyvhdlparser.blocks.tokentoblockparser method)": [[116, "pyVHDLParser.Blocks.TokenToBlockParser.__eq__"]], "__getattribute__() (pyvhdlparser.blocks.metablock method)": [[116, "pyVHDLParser.Blocks.MetaBlock.__getattribute__"]], "__hash__ (pyvhdlparser.blocks.tokentoblockparser attribute)": [[116, "pyVHDLParser.Blocks.TokenToBlockParser.__hash__"]], "__init__() (pyvhdlparser.blocks.block method)": [[116, "pyVHDLParser.Blocks.Block.__init__"]], "__init__() (pyvhdlparser.blocks.blockiterator method)": [[116, "pyVHDLParser.Blocks.BlockIterator.__init__"]], "__init__() (pyvhdlparser.blocks.blockparserexception method)": [[116, "pyVHDLParser.Blocks.BlockParserException.__init__"]], "__init__() (pyvhdlparser.blocks.blockreverseiterator method)": [[116, "pyVHDLParser.Blocks.BlockReverseIterator.__init__"]], "__init__() (pyvhdlparser.blocks.commentblock method)": [[116, "pyVHDLParser.Blocks.CommentBlock.__init__"]], "__init__() (pyvhdlparser.blocks.endofblock method)": [[116, "pyVHDLParser.Blocks.EndOfBlock.__init__"]], "__init__() (pyvhdlparser.blocks.endofdocumentblock method)": [[116, "pyVHDLParser.Blocks.EndOfDocumentBlock.__init__"]], "__init__() (pyvhdlparser.blocks.endofsnippetblock method)": [[116, "pyVHDLParser.Blocks.EndOfSnippetBlock.__init__"]], "__init__() (pyvhdlparser.blocks.finalblock method)": [[116, "pyVHDLParser.Blocks.FinalBlock.__init__"]], "__init__() (pyvhdlparser.blocks.metablock method)": [[116, "pyVHDLParser.Blocks.MetaBlock.__init__"]], "__init__() (pyvhdlparser.blocks.skipableblock method)": [[116, "pyVHDLParser.Blocks.SkipableBlock.__init__"]], "__init__() (pyvhdlparser.blocks.startofblock method)": [[116, "pyVHDLParser.Blocks.StartOfBlock.__init__"]], "__init__() (pyvhdlparser.blocks.startofdocumentblock method)": [[116, "pyVHDLParser.Blocks.StartOfDocumentBlock.__init__"]], "__init__() (pyvhdlparser.blocks.startofsnippetblock method)": [[116, "pyVHDLParser.Blocks.StartOfSnippetBlock.__init__"]], "__init__() (pyvhdlparser.blocks.tokentoblockparser method)": [[116, "pyVHDLParser.Blocks.TokenToBlockParser.__init__"]], "__instancecheck__() (pyvhdlparser.blocks.metablock method)": [[116, "pyVHDLParser.Blocks.MetaBlock.__instancecheck__"]], "__iter__() (pyvhdlparser.blocks.block method)": [[116, "pyVHDLParser.Blocks.Block.__iter__"]], "__iter__() (pyvhdlparser.blocks.commentblock method)": [[116, "pyVHDLParser.Blocks.CommentBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.endofblock method)": [[116, "pyVHDLParser.Blocks.EndOfBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.endofdocumentblock method)": [[116, "pyVHDLParser.Blocks.EndOfDocumentBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.endofsnippetblock method)": [[116, "pyVHDLParser.Blocks.EndOfSnippetBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.finalblock method)": [[116, "pyVHDLParser.Blocks.FinalBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.skipableblock method)": [[116, "pyVHDLParser.Blocks.SkipableBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.startofblock method)": [[116, "pyVHDLParser.Blocks.StartOfBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.startofdocumentblock method)": [[116, "pyVHDLParser.Blocks.StartOfDocumentBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.startofsnippetblock method)": [[116, "pyVHDLParser.Blocks.StartOfSnippetBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.block method)": [[116, "pyVHDLParser.Blocks.Block.__len__"]], "__len__() (pyvhdlparser.blocks.commentblock method)": [[116, "pyVHDLParser.Blocks.CommentBlock.__len__"]], "__len__() (pyvhdlparser.blocks.endofblock method)": [[116, "pyVHDLParser.Blocks.EndOfBlock.__len__"]], "__len__() (pyvhdlparser.blocks.endofdocumentblock method)": [[116, "pyVHDLParser.Blocks.EndOfDocumentBlock.__len__"]], "__len__() (pyvhdlparser.blocks.endofsnippetblock method)": [[116, "pyVHDLParser.Blocks.EndOfSnippetBlock.__len__"]], "__len__() (pyvhdlparser.blocks.finalblock method)": [[116, "pyVHDLParser.Blocks.FinalBlock.__len__"]], "__len__() (pyvhdlparser.blocks.skipableblock method)": [[116, "pyVHDLParser.Blocks.SkipableBlock.__len__"]], "__len__() (pyvhdlparser.blocks.startofblock method)": [[116, "pyVHDLParser.Blocks.StartOfBlock.__len__"]], "__len__() (pyvhdlparser.blocks.startofdocumentblock method)": [[116, "pyVHDLParser.Blocks.StartOfDocumentBlock.__len__"]], "__len__() (pyvhdlparser.blocks.startofsnippetblock method)": [[116, "pyVHDLParser.Blocks.StartOfSnippetBlock.__len__"]], "__ne__() (pyvhdlparser.blocks.tokentoblockparser method)": [[116, "pyVHDLParser.Blocks.TokenToBlockParser.__ne__"]], "__new__() (pyvhdlparser.blocks.blockparserexception method)": [[116, "pyVHDLParser.Blocks.BlockParserException.__new__"]], "__new__() (pyvhdlparser.blocks.metablock static method)": [[116, "pyVHDLParser.Blocks.MetaBlock.__new__"]], "__or__() (pyvhdlparser.blocks.metablock method)": [[116, "pyVHDLParser.Blocks.MetaBlock.__or__"]], "__prepare__() (pyvhdlparser.blocks.metablock method)": [[116, "pyVHDLParser.Blocks.MetaBlock.__prepare__"]], "__repr__() (pyvhdlparser.blocks.block method)": [[116, "pyVHDLParser.Blocks.Block.__repr__"]], "__repr__() (pyvhdlparser.blocks.commentblock method)": [[116, "pyVHDLParser.Blocks.CommentBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.endofblock method)": [[116, "pyVHDLParser.Blocks.EndOfBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.endofdocumentblock method)": [[116, "pyVHDLParser.Blocks.EndOfDocumentBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.endofsnippetblock method)": [[116, "pyVHDLParser.Blocks.EndOfSnippetBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.finalblock method)": [[116, "pyVHDLParser.Blocks.FinalBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.metablock method)": [[116, "pyVHDLParser.Blocks.MetaBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.skipableblock method)": [[116, "pyVHDLParser.Blocks.SkipableBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.startofblock method)": [[116, "pyVHDLParser.Blocks.StartOfBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.startofdocumentblock method)": [[116, "pyVHDLParser.Blocks.StartOfDocumentBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.startofsnippetblock method)": [[116, "pyVHDLParser.Blocks.StartOfSnippetBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.tokentoblockparser method)": [[116, "pyVHDLParser.Blocks.TokenToBlockParser.__repr__"]], "__ror__() (pyvhdlparser.blocks.metablock method)": [[116, "pyVHDLParser.Blocks.MetaBlock.__ror__"]], "__setattr__() (pyvhdlparser.blocks.metablock method)": [[116, "pyVHDLParser.Blocks.MetaBlock.__setattr__"]], "__sizeof__() (pyvhdlparser.blocks.metablock method)": [[116, "pyVHDLParser.Blocks.MetaBlock.__sizeof__"]], "__str__() (pyvhdlparser.blocks.block method)": [[116, "pyVHDLParser.Blocks.Block.__str__"]], "__str__() (pyvhdlparser.blocks.commentblock method)": [[116, "pyVHDLParser.Blocks.CommentBlock.__str__"]], "__str__() (pyvhdlparser.blocks.endofblock method)": [[116, "pyVHDLParser.Blocks.EndOfBlock.__str__"]], "__str__() (pyvhdlparser.blocks.endofdocumentblock method)": [[116, "pyVHDLParser.Blocks.EndOfDocumentBlock.__str__"]], "__str__() (pyvhdlparser.blocks.endofsnippetblock method)": [[116, "pyVHDLParser.Blocks.EndOfSnippetBlock.__str__"]], "__str__() (pyvhdlparser.blocks.finalblock method)": [[116, "pyVHDLParser.Blocks.FinalBlock.__str__"]], "__str__() (pyvhdlparser.blocks.skipableblock method)": [[116, "pyVHDLParser.Blocks.SkipableBlock.__str__"]], "__str__() (pyvhdlparser.blocks.startofblock method)": [[116, "pyVHDLParser.Blocks.StartOfBlock.__str__"]], "__str__() (pyvhdlparser.blocks.startofdocumentblock method)": [[116, "pyVHDLParser.Blocks.StartOfDocumentBlock.__str__"]], "__str__() (pyvhdlparser.blocks.startofsnippetblock method)": [[116, "pyVHDLParser.Blocks.StartOfSnippetBlock.__str__"]], "__str__() (pyvhdlparser.blocks.tokentoblockparser method)": [[116, "pyVHDLParser.Blocks.TokenToBlockParser.__str__"]], "__subclasscheck__() (pyvhdlparser.blocks.metablock method)": [[116, "pyVHDLParser.Blocks.MetaBlock.__subclasscheck__"]], "__subclasses__() (pyvhdlparser.blocks.metablock method)": [[116, "pyVHDLParser.Blocks.MetaBlock.__subclasses__"]], "__text_signature__ (pyvhdlparser.blocks.metablock attribute)": [[116, "pyVHDLParser.Blocks.MetaBlock.__text_signature__"]], "_checkforabstractmethods() (pyvhdlparser.blocks.metablock class method)": [[116, "pyVHDLParser.Blocks.MetaBlock._checkForAbstractMethods"]], "_previousblock (pyvhdlparser.blocks.block attribute)": [[116, "pyVHDLParser.Blocks.Block._previousBlock"]], "_previousblock (pyvhdlparser.blocks.commentblock attribute)": [[116, "pyVHDLParser.Blocks.CommentBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.endofblock attribute)": [[116, "pyVHDLParser.Blocks.EndOfBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.endofdocumentblock attribute)": [[116, "pyVHDLParser.Blocks.EndOfDocumentBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.endofsnippetblock attribute)": [[116, "pyVHDLParser.Blocks.EndOfSnippetBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.finalblock attribute)": [[116, "pyVHDLParser.Blocks.FinalBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.skipableblock attribute)": [[116, "pyVHDLParser.Blocks.SkipableBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.startofblock attribute)": [[116, "pyVHDLParser.Blocks.StartOfBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.startofdocumentblock attribute)": [[116, "pyVHDLParser.Blocks.StartOfDocumentBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.startofsnippetblock attribute)": [[116, "pyVHDLParser.Blocks.StartOfSnippetBlock._previousBlock"]], "_state (pyvhdlparser.blocks.blockiterator attribute)": [[116, "pyVHDLParser.Blocks.BlockIterator._state"]], "_wrapnewmethodifabstract() (pyvhdlparser.blocks.metablock static method)": [[116, "pyVHDLParser.Blocks.MetaBlock._wrapNewMethodIfAbstract"]], "_wrapnewmethodifsingleton() (pyvhdlparser.blocks.metablock static method)": [[116, "pyVHDLParser.Blocks.MetaBlock._wrapNewMethodIfSingleton"]], "mro() (pyvhdlparser.blocks.metablock method)": [[116, "pyVHDLParser.Blocks.MetaBlock.mro"]], "pyvhdlparser.blocks": [[116, "module-pyVHDLParser.Blocks"]], "state (pyvhdlparser.blocks.blockreverseiterator attribute)": [[116, "pyVHDLParser.Blocks.BlockReverseIterator.state"]], "stateerror() (pyvhdlparser.blocks.block class method)": [[116, "pyVHDLParser.Blocks.Block.stateError"]], "stateerror() (pyvhdlparser.blocks.commentblock class method)": [[116, "pyVHDLParser.Blocks.CommentBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.endofblock class method)": [[116, "pyVHDLParser.Blocks.EndOfBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.endofdocumentblock class method)": [[116, "pyVHDLParser.Blocks.EndOfDocumentBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.endofsnippetblock class method)": [[116, "pyVHDLParser.Blocks.EndOfSnippetBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.finalblock class method)": [[116, "pyVHDLParser.Blocks.FinalBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.skipableblock class method)": [[116, "pyVHDLParser.Blocks.SkipableBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.startofblock class method)": [[116, "pyVHDLParser.Blocks.StartOfBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.startofdocumentblock class method)": [[116, "pyVHDLParser.Blocks.StartOfDocumentBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.startofsnippetblock class method)": [[116, "pyVHDLParser.Blocks.StartOfSnippetBlock.stateError"]], "pyvhdlparser.blocks.assignment": [[117, "module-pyVHDLParser.Blocks.Assignment"]], "endtoken (pyvhdlparser.blocks.assignment.signalassignment.signalassignmentblock attribute)": [[118, "pyVHDLParser.Blocks.Assignment.SignalAssignment.SignalAssignmentBlock.EndToken"]], "length (pyvhdlparser.blocks.assignment.signalassignment.signalassignmentblock property)": [[118, "pyVHDLParser.Blocks.Assignment.SignalAssignment.SignalAssignmentBlock.Length"]], "multipart (pyvhdlparser.blocks.assignment.signalassignment.signalassignmentblock attribute)": [[118, "pyVHDLParser.Blocks.Assignment.SignalAssignment.SignalAssignmentBlock.MultiPart"]], "nextblock (pyvhdlparser.blocks.assignment.signalassignment.signalassignmentblock attribute)": [[118, "pyVHDLParser.Blocks.Assignment.SignalAssignment.SignalAssignmentBlock.NextBlock"]], "signalassignmentblock (class in pyvhdlparser.blocks.assignment.signalassignment)": [[118, "pyVHDLParser.Blocks.Assignment.SignalAssignment.SignalAssignmentBlock"]], "starttoken (pyvhdlparser.blocks.assignment.signalassignment.signalassignmentblock attribute)": [[118, "pyVHDLParser.Blocks.Assignment.SignalAssignment.SignalAssignmentBlock.StartToken"]], "states (pyvhdlparser.blocks.assignment.signalassignment.signalassignmentblock property)": [[118, "pyVHDLParser.Blocks.Assignment.SignalAssignment.SignalAssignmentBlock.States"]], "__states__ (pyvhdlparser.blocks.assignment.signalassignment.signalassignmentblock attribute)": [[118, "pyVHDLParser.Blocks.Assignment.SignalAssignment.SignalAssignmentBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.assignment.signalassignment.signalassignmentblock method)": [[118, "pyVHDLParser.Blocks.Assignment.SignalAssignment.SignalAssignmentBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.assignment.signalassignment.signalassignmentblock method)": [[118, "pyVHDLParser.Blocks.Assignment.SignalAssignment.SignalAssignmentBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.assignment.signalassignment.signalassignmentblock method)": [[118, "pyVHDLParser.Blocks.Assignment.SignalAssignment.SignalAssignmentBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.assignment.signalassignment.signalassignmentblock method)": [[118, "pyVHDLParser.Blocks.Assignment.SignalAssignment.SignalAssignmentBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.assignment.signalassignment.signalassignmentblock method)": [[118, "pyVHDLParser.Blocks.Assignment.SignalAssignment.SignalAssignmentBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.assignment.signalassignment.signalassignmentblock attribute)": [[118, "pyVHDLParser.Blocks.Assignment.SignalAssignment.SignalAssignmentBlock._previousBlock"]], "pyvhdlparser.blocks.assignment.signalassignment": [[118, "module-pyVHDLParser.Blocks.Assignment.SignalAssignment"]], "stateerror() (pyvhdlparser.blocks.assignment.signalassignment.signalassignmentblock class method)": [[118, "pyVHDLParser.Blocks.Assignment.SignalAssignment.SignalAssignmentBlock.stateError"]], "endtoken (pyvhdlparser.blocks.assignment.variableassignment.signalassignmentblock attribute)": [[119, "pyVHDLParser.Blocks.Assignment.VariableAssignment.SignalAssignmentBlock.EndToken"]], "length (pyvhdlparser.blocks.assignment.variableassignment.signalassignmentblock property)": [[119, "pyVHDLParser.Blocks.Assignment.VariableAssignment.SignalAssignmentBlock.Length"]], "multipart (pyvhdlparser.blocks.assignment.variableassignment.signalassignmentblock attribute)": [[119, "pyVHDLParser.Blocks.Assignment.VariableAssignment.SignalAssignmentBlock.MultiPart"]], "nextblock (pyvhdlparser.blocks.assignment.variableassignment.signalassignmentblock attribute)": [[119, "pyVHDLParser.Blocks.Assignment.VariableAssignment.SignalAssignmentBlock.NextBlock"]], "signalassignmentblock (class in pyvhdlparser.blocks.assignment.variableassignment)": [[119, "pyVHDLParser.Blocks.Assignment.VariableAssignment.SignalAssignmentBlock"]], "starttoken (pyvhdlparser.blocks.assignment.variableassignment.signalassignmentblock attribute)": [[119, "pyVHDLParser.Blocks.Assignment.VariableAssignment.SignalAssignmentBlock.StartToken"]], "states (pyvhdlparser.blocks.assignment.variableassignment.signalassignmentblock property)": [[119, "pyVHDLParser.Blocks.Assignment.VariableAssignment.SignalAssignmentBlock.States"]], "__states__ (pyvhdlparser.blocks.assignment.variableassignment.signalassignmentblock attribute)": [[119, "pyVHDLParser.Blocks.Assignment.VariableAssignment.SignalAssignmentBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.assignment.variableassignment.signalassignmentblock method)": [[119, "pyVHDLParser.Blocks.Assignment.VariableAssignment.SignalAssignmentBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.assignment.variableassignment.signalassignmentblock method)": [[119, "pyVHDLParser.Blocks.Assignment.VariableAssignment.SignalAssignmentBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.assignment.variableassignment.signalassignmentblock method)": [[119, "pyVHDLParser.Blocks.Assignment.VariableAssignment.SignalAssignmentBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.assignment.variableassignment.signalassignmentblock method)": [[119, "pyVHDLParser.Blocks.Assignment.VariableAssignment.SignalAssignmentBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.assignment.variableassignment.signalassignmentblock method)": [[119, "pyVHDLParser.Blocks.Assignment.VariableAssignment.SignalAssignmentBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.assignment.variableassignment.signalassignmentblock attribute)": [[119, "pyVHDLParser.Blocks.Assignment.VariableAssignment.SignalAssignmentBlock._previousBlock"]], "pyvhdlparser.blocks.assignment.variableassignment": [[119, "module-pyVHDLParser.Blocks.Assignment.VariableAssignment"]], "stateerror() (pyvhdlparser.blocks.assignment.variableassignment.signalassignmentblock class method)": [[119, "pyVHDLParser.Blocks.Assignment.VariableAssignment.SignalAssignmentBlock.stateError"]], "pyvhdlparser.blocks.attribute": [[120, "module-pyVHDLParser.Blocks.Attribute"]], "attributedeclarationblock (class in pyvhdlparser.blocks.attribute.attributedeclaration)": [[121, "pyVHDLParser.Blocks.Attribute.AttributeDeclaration.AttributeDeclarationBlock"]], "endtoken (pyvhdlparser.blocks.attribute.attributedeclaration.attributedeclarationblock attribute)": [[121, "pyVHDLParser.Blocks.Attribute.AttributeDeclaration.AttributeDeclarationBlock.EndToken"]], "length (pyvhdlparser.blocks.attribute.attributedeclaration.attributedeclarationblock property)": [[121, "pyVHDLParser.Blocks.Attribute.AttributeDeclaration.AttributeDeclarationBlock.Length"]], "multipart (pyvhdlparser.blocks.attribute.attributedeclaration.attributedeclarationblock attribute)": [[121, "pyVHDLParser.Blocks.Attribute.AttributeDeclaration.AttributeDeclarationBlock.MultiPart"]], "nextblock (pyvhdlparser.blocks.attribute.attributedeclaration.attributedeclarationblock attribute)": [[121, "pyVHDLParser.Blocks.Attribute.AttributeDeclaration.AttributeDeclarationBlock.NextBlock"]], "starttoken (pyvhdlparser.blocks.attribute.attributedeclaration.attributedeclarationblock attribute)": [[121, "pyVHDLParser.Blocks.Attribute.AttributeDeclaration.AttributeDeclarationBlock.StartToken"]], "states (pyvhdlparser.blocks.attribute.attributedeclaration.attributedeclarationblock property)": [[121, "pyVHDLParser.Blocks.Attribute.AttributeDeclaration.AttributeDeclarationBlock.States"]], "__states__ (pyvhdlparser.blocks.attribute.attributedeclaration.attributedeclarationblock attribute)": [[121, "pyVHDLParser.Blocks.Attribute.AttributeDeclaration.AttributeDeclarationBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.attribute.attributedeclaration.attributedeclarationblock method)": [[121, "pyVHDLParser.Blocks.Attribute.AttributeDeclaration.AttributeDeclarationBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.attribute.attributedeclaration.attributedeclarationblock method)": [[121, "pyVHDLParser.Blocks.Attribute.AttributeDeclaration.AttributeDeclarationBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.attribute.attributedeclaration.attributedeclarationblock method)": [[121, "pyVHDLParser.Blocks.Attribute.AttributeDeclaration.AttributeDeclarationBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.attribute.attributedeclaration.attributedeclarationblock method)": [[121, "pyVHDLParser.Blocks.Attribute.AttributeDeclaration.AttributeDeclarationBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.attribute.attributedeclaration.attributedeclarationblock method)": [[121, "pyVHDLParser.Blocks.Attribute.AttributeDeclaration.AttributeDeclarationBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.attribute.attributedeclaration.attributedeclarationblock attribute)": [[121, "pyVHDLParser.Blocks.Attribute.AttributeDeclaration.AttributeDeclarationBlock._previousBlock"]], "pyvhdlparser.blocks.attribute.attributedeclaration": [[121, "module-pyVHDLParser.Blocks.Attribute.AttributeDeclaration"]], "stateerror() (pyvhdlparser.blocks.attribute.attributedeclaration.attributedeclarationblock class method)": [[121, "pyVHDLParser.Blocks.Attribute.AttributeDeclaration.AttributeDeclarationBlock.stateError"]], "attributespecificationblock (class in pyvhdlparser.blocks.attribute.attributespecification)": [[122, "pyVHDLParser.Blocks.Attribute.AttributeSpecification.AttributeSpecificationBlock"]], "endtoken (pyvhdlparser.blocks.attribute.attributespecification.attributespecificationblock attribute)": [[122, "pyVHDLParser.Blocks.Attribute.AttributeSpecification.AttributeSpecificationBlock.EndToken"]], "length (pyvhdlparser.blocks.attribute.attributespecification.attributespecificationblock property)": [[122, "pyVHDLParser.Blocks.Attribute.AttributeSpecification.AttributeSpecificationBlock.Length"]], "multipart (pyvhdlparser.blocks.attribute.attributespecification.attributespecificationblock attribute)": [[122, "pyVHDLParser.Blocks.Attribute.AttributeSpecification.AttributeSpecificationBlock.MultiPart"]], "nextblock (pyvhdlparser.blocks.attribute.attributespecification.attributespecificationblock attribute)": [[122, "pyVHDLParser.Blocks.Attribute.AttributeSpecification.AttributeSpecificationBlock.NextBlock"]], "starttoken (pyvhdlparser.blocks.attribute.attributespecification.attributespecificationblock attribute)": [[122, "pyVHDLParser.Blocks.Attribute.AttributeSpecification.AttributeSpecificationBlock.StartToken"]], "states (pyvhdlparser.blocks.attribute.attributespecification.attributespecificationblock property)": [[122, "pyVHDLParser.Blocks.Attribute.AttributeSpecification.AttributeSpecificationBlock.States"]], "__states__ (pyvhdlparser.blocks.attribute.attributespecification.attributespecificationblock attribute)": [[122, "pyVHDLParser.Blocks.Attribute.AttributeSpecification.AttributeSpecificationBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.attribute.attributespecification.attributespecificationblock method)": [[122, "pyVHDLParser.Blocks.Attribute.AttributeSpecification.AttributeSpecificationBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.attribute.attributespecification.attributespecificationblock method)": [[122, "pyVHDLParser.Blocks.Attribute.AttributeSpecification.AttributeSpecificationBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.attribute.attributespecification.attributespecificationblock method)": [[122, "pyVHDLParser.Blocks.Attribute.AttributeSpecification.AttributeSpecificationBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.attribute.attributespecification.attributespecificationblock method)": [[122, "pyVHDLParser.Blocks.Attribute.AttributeSpecification.AttributeSpecificationBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.attribute.attributespecification.attributespecificationblock method)": [[122, "pyVHDLParser.Blocks.Attribute.AttributeSpecification.AttributeSpecificationBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.attribute.attributespecification.attributespecificationblock attribute)": [[122, "pyVHDLParser.Blocks.Attribute.AttributeSpecification.AttributeSpecificationBlock._previousBlock"]], "pyvhdlparser.blocks.attribute.attributespecification": [[122, "module-pyVHDLParser.Blocks.Attribute.AttributeSpecification"]], "stateerror() (pyvhdlparser.blocks.attribute.attributespecification.attributespecificationblock class method)": [[122, "pyVHDLParser.Blocks.Attribute.AttributeSpecification.AttributeSpecificationBlock.stateError"]], "endtoken (pyvhdlparser.blocks.comment.multilinecommentblock attribute)": [[123, "pyVHDLParser.Blocks.Comment.MultiLineCommentBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.comment.singlelinecommentblock attribute)": [[123, "pyVHDLParser.Blocks.Comment.SingleLineCommentBlock.EndToken"]], "length (pyvhdlparser.blocks.comment.multilinecommentblock property)": [[123, "pyVHDLParser.Blocks.Comment.MultiLineCommentBlock.Length"]], "length (pyvhdlparser.blocks.comment.singlelinecommentblock property)": [[123, "pyVHDLParser.Blocks.Comment.SingleLineCommentBlock.Length"]], "multilinecommentblock (class in pyvhdlparser.blocks.comment)": [[123, "pyVHDLParser.Blocks.Comment.MultiLineCommentBlock"]], "multipart (pyvhdlparser.blocks.comment.multilinecommentblock attribute)": [[123, "pyVHDLParser.Blocks.Comment.MultiLineCommentBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.comment.singlelinecommentblock attribute)": [[123, "pyVHDLParser.Blocks.Comment.SingleLineCommentBlock.MultiPart"]], "nextblock (pyvhdlparser.blocks.comment.multilinecommentblock attribute)": [[123, "pyVHDLParser.Blocks.Comment.MultiLineCommentBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.comment.singlelinecommentblock attribute)": [[123, "pyVHDLParser.Blocks.Comment.SingleLineCommentBlock.NextBlock"]], "singlelinecommentblock (class in pyvhdlparser.blocks.comment)": [[123, "pyVHDLParser.Blocks.Comment.SingleLineCommentBlock"]], "starttoken (pyvhdlparser.blocks.comment.multilinecommentblock attribute)": [[123, "pyVHDLParser.Blocks.Comment.MultiLineCommentBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.comment.singlelinecommentblock attribute)": [[123, "pyVHDLParser.Blocks.Comment.SingleLineCommentBlock.StartToken"]], "states (pyvhdlparser.blocks.comment.multilinecommentblock property)": [[123, "pyVHDLParser.Blocks.Comment.MultiLineCommentBlock.States"]], "states (pyvhdlparser.blocks.comment.singlelinecommentblock property)": [[123, "pyVHDLParser.Blocks.Comment.SingleLineCommentBlock.States"]], "__states__ (pyvhdlparser.blocks.comment.multilinecommentblock attribute)": [[123, "pyVHDLParser.Blocks.Comment.MultiLineCommentBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.comment.singlelinecommentblock attribute)": [[123, "pyVHDLParser.Blocks.Comment.SingleLineCommentBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.comment.multilinecommentblock method)": [[123, "pyVHDLParser.Blocks.Comment.MultiLineCommentBlock.__init__"]], "__init__() (pyvhdlparser.blocks.comment.singlelinecommentblock method)": [[123, "pyVHDLParser.Blocks.Comment.SingleLineCommentBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.comment.multilinecommentblock method)": [[123, "pyVHDLParser.Blocks.Comment.MultiLineCommentBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.comment.singlelinecommentblock method)": [[123, "pyVHDLParser.Blocks.Comment.SingleLineCommentBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.comment.multilinecommentblock method)": [[123, "pyVHDLParser.Blocks.Comment.MultiLineCommentBlock.__len__"]], "__len__() (pyvhdlparser.blocks.comment.singlelinecommentblock method)": [[123, "pyVHDLParser.Blocks.Comment.SingleLineCommentBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.comment.multilinecommentblock method)": [[123, "pyVHDLParser.Blocks.Comment.MultiLineCommentBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.comment.singlelinecommentblock method)": [[123, "pyVHDLParser.Blocks.Comment.SingleLineCommentBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.comment.multilinecommentblock method)": [[123, "pyVHDLParser.Blocks.Comment.MultiLineCommentBlock.__str__"]], "__str__() (pyvhdlparser.blocks.comment.singlelinecommentblock method)": [[123, "pyVHDLParser.Blocks.Comment.SingleLineCommentBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.comment.multilinecommentblock attribute)": [[123, "pyVHDLParser.Blocks.Comment.MultiLineCommentBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.comment.singlelinecommentblock attribute)": [[123, "pyVHDLParser.Blocks.Comment.SingleLineCommentBlock._previousBlock"]], "pyvhdlparser.blocks.comment": [[123, "module-pyVHDLParser.Blocks.Comment"]], "stateerror() (pyvhdlparser.blocks.comment.multilinecommentblock class method)": [[123, "pyVHDLParser.Blocks.Comment.MultiLineCommentBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.comment.singlelinecommentblock class method)": [[123, "pyVHDLParser.Blocks.Comment.SingleLineCommentBlock.stateError"]], "emptylineblock (class in pyvhdlparser.blocks.common)": [[124, "pyVHDLParser.Blocks.Common.EmptyLineBlock"]], "endtoken (pyvhdlparser.blocks.common.emptylineblock attribute)": [[124, "pyVHDLParser.Blocks.Common.EmptyLineBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.common.indentationblock attribute)": [[124, "pyVHDLParser.Blocks.Common.IndentationBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.common.linebreakblock attribute)": [[124, "pyVHDLParser.Blocks.Common.LinebreakBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.common.whitespaceblock attribute)": [[124, "pyVHDLParser.Blocks.Common.WhitespaceBlock.EndToken"]], "indentationblock (class in pyvhdlparser.blocks.common)": [[124, "pyVHDLParser.Blocks.Common.IndentationBlock"]], "length (pyvhdlparser.blocks.common.emptylineblock property)": [[124, "pyVHDLParser.Blocks.Common.EmptyLineBlock.Length"]], "length (pyvhdlparser.blocks.common.indentationblock property)": [[124, "pyVHDLParser.Blocks.Common.IndentationBlock.Length"]], "length (pyvhdlparser.blocks.common.linebreakblock property)": [[124, "pyVHDLParser.Blocks.Common.LinebreakBlock.Length"]], "length (pyvhdlparser.blocks.common.whitespaceblock property)": [[124, "pyVHDLParser.Blocks.Common.WhitespaceBlock.Length"]], "linebreakblock (class in pyvhdlparser.blocks.common)": [[124, "pyVHDLParser.Blocks.Common.LinebreakBlock"]], "multipart (pyvhdlparser.blocks.common.emptylineblock attribute)": [[124, "pyVHDLParser.Blocks.Common.EmptyLineBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.common.indentationblock attribute)": [[124, "pyVHDLParser.Blocks.Common.IndentationBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.common.linebreakblock attribute)": [[124, "pyVHDLParser.Blocks.Common.LinebreakBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.common.whitespaceblock attribute)": [[124, "pyVHDLParser.Blocks.Common.WhitespaceBlock.MultiPart"]], "nextblock (pyvhdlparser.blocks.common.emptylineblock attribute)": [[124, "pyVHDLParser.Blocks.Common.EmptyLineBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.common.indentationblock attribute)": [[124, "pyVHDLParser.Blocks.Common.IndentationBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.common.linebreakblock attribute)": [[124, "pyVHDLParser.Blocks.Common.LinebreakBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.common.whitespaceblock attribute)": [[124, "pyVHDLParser.Blocks.Common.WhitespaceBlock.NextBlock"]], "starttoken (pyvhdlparser.blocks.common.emptylineblock attribute)": [[124, "pyVHDLParser.Blocks.Common.EmptyLineBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.common.indentationblock attribute)": [[124, "pyVHDLParser.Blocks.Common.IndentationBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.common.linebreakblock attribute)": [[124, "pyVHDLParser.Blocks.Common.LinebreakBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.common.whitespaceblock attribute)": [[124, "pyVHDLParser.Blocks.Common.WhitespaceBlock.StartToken"]], "states (pyvhdlparser.blocks.common.emptylineblock property)": [[124, "pyVHDLParser.Blocks.Common.EmptyLineBlock.States"]], "states (pyvhdlparser.blocks.common.indentationblock property)": [[124, "pyVHDLParser.Blocks.Common.IndentationBlock.States"]], "states (pyvhdlparser.blocks.common.linebreakblock property)": [[124, "pyVHDLParser.Blocks.Common.LinebreakBlock.States"]], "states (pyvhdlparser.blocks.common.whitespaceblock property)": [[124, "pyVHDLParser.Blocks.Common.WhitespaceBlock.States"]], "whitespaceblock (class in pyvhdlparser.blocks.common)": [[124, "pyVHDLParser.Blocks.Common.WhitespaceBlock"]], "__states__ (pyvhdlparser.blocks.common.emptylineblock attribute)": [[124, "pyVHDLParser.Blocks.Common.EmptyLineBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.common.indentationblock attribute)": [[124, "pyVHDLParser.Blocks.Common.IndentationBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.common.linebreakblock attribute)": [[124, "pyVHDLParser.Blocks.Common.LinebreakBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.common.whitespaceblock attribute)": [[124, "pyVHDLParser.Blocks.Common.WhitespaceBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.common.emptylineblock method)": [[124, "pyVHDLParser.Blocks.Common.EmptyLineBlock.__init__"]], "__init__() (pyvhdlparser.blocks.common.indentationblock method)": [[124, "pyVHDLParser.Blocks.Common.IndentationBlock.__init__"]], "__init__() (pyvhdlparser.blocks.common.linebreakblock method)": [[124, "pyVHDLParser.Blocks.Common.LinebreakBlock.__init__"]], "__init__() (pyvhdlparser.blocks.common.whitespaceblock method)": [[124, "pyVHDLParser.Blocks.Common.WhitespaceBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.common.emptylineblock method)": [[124, "pyVHDLParser.Blocks.Common.EmptyLineBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.common.indentationblock method)": [[124, "pyVHDLParser.Blocks.Common.IndentationBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.common.linebreakblock method)": [[124, "pyVHDLParser.Blocks.Common.LinebreakBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.common.whitespaceblock method)": [[124, "pyVHDLParser.Blocks.Common.WhitespaceBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.common.emptylineblock method)": [[124, "pyVHDLParser.Blocks.Common.EmptyLineBlock.__len__"]], "__len__() (pyvhdlparser.blocks.common.indentationblock method)": [[124, "pyVHDLParser.Blocks.Common.IndentationBlock.__len__"]], "__len__() (pyvhdlparser.blocks.common.linebreakblock method)": [[124, "pyVHDLParser.Blocks.Common.LinebreakBlock.__len__"]], "__len__() (pyvhdlparser.blocks.common.whitespaceblock method)": [[124, "pyVHDLParser.Blocks.Common.WhitespaceBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.common.emptylineblock method)": [[124, "pyVHDLParser.Blocks.Common.EmptyLineBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.common.indentationblock method)": [[124, "pyVHDLParser.Blocks.Common.IndentationBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.common.linebreakblock method)": [[124, "pyVHDLParser.Blocks.Common.LinebreakBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.common.whitespaceblock method)": [[124, "pyVHDLParser.Blocks.Common.WhitespaceBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.common.emptylineblock method)": [[124, "pyVHDLParser.Blocks.Common.EmptyLineBlock.__str__"]], "__str__() (pyvhdlparser.blocks.common.indentationblock method)": [[124, "pyVHDLParser.Blocks.Common.IndentationBlock.__str__"]], "__str__() (pyvhdlparser.blocks.common.linebreakblock method)": [[124, "pyVHDLParser.Blocks.Common.LinebreakBlock.__str__"]], "__str__() (pyvhdlparser.blocks.common.whitespaceblock method)": [[124, "pyVHDLParser.Blocks.Common.WhitespaceBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.common.emptylineblock attribute)": [[124, "pyVHDLParser.Blocks.Common.EmptyLineBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.common.indentationblock attribute)": [[124, "pyVHDLParser.Blocks.Common.IndentationBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.common.linebreakblock attribute)": [[124, "pyVHDLParser.Blocks.Common.LinebreakBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.common.whitespaceblock attribute)": [[124, "pyVHDLParser.Blocks.Common.WhitespaceBlock._previousBlock"]], "pyvhdlparser.blocks.common": [[124, "module-pyVHDLParser.Blocks.Common"]], "stateerror() (pyvhdlparser.blocks.common.emptylineblock class method)": [[124, "pyVHDLParser.Blocks.Common.EmptyLineBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.common.indentationblock class method)": [[124, "pyVHDLParser.Blocks.Common.IndentationBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.common.linebreakblock class method)": [[124, "pyVHDLParser.Blocks.Common.LinebreakBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.common.whitespaceblock class method)": [[124, "pyVHDLParser.Blocks.Common.WhitespaceBlock.stateError"]], "pyvhdlparser.blocks.controlstructure": [[125, "module-pyVHDLParser.Blocks.ControlStructure"]], "arrowblock (class in pyvhdlparser.blocks.controlstructure.case)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.ArrowBlock"]], "caseblock (class in pyvhdlparser.blocks.controlstructure.case)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.CaseBlock"]], "caseexpressionblock (class in pyvhdlparser.blocks.controlstructure.case)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.CaseExpressionBlock"]], "end_block (pyvhdlparser.blocks.controlstructure.case.arrowblock attribute)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.ArrowBlock.END_BLOCK"]], "end_block (pyvhdlparser.blocks.controlstructure.case.whenblock attribute)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.WhenBlock.END_BLOCK"]], "exit_block (pyvhdlparser.blocks.controlstructure.case.caseexpressionblock attribute)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.CaseExpressionBlock.EXIT_BLOCK"]], "exit_block (pyvhdlparser.blocks.controlstructure.case.whenexpressionblock attribute)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.WhenExpressionBlock.EXIT_BLOCK"]], "exit_keyword (pyvhdlparser.blocks.controlstructure.case.caseexpressionblock attribute)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.CaseExpressionBlock.EXIT_KEYWORD"]], "exit_token (pyvhdlparser.blocks.controlstructure.case.whenexpressionblock attribute)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.WhenExpressionBlock.EXIT_TOKEN"]], "endblock (class in pyvhdlparser.blocks.controlstructure.case)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.EndBlock"]], "endtoken (pyvhdlparser.blocks.controlstructure.case.arrowblock attribute)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.ArrowBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.controlstructure.case.caseblock attribute)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.CaseBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.controlstructure.case.caseexpressionblock attribute)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.CaseExpressionBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.controlstructure.case.endblock attribute)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.EndBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.controlstructure.case.isblock attribute)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.IsBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.controlstructure.case.whenblock attribute)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.WhenBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.controlstructure.case.whenexpressionblock attribute)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.WhenExpressionBlock.EndToken"]], "isblock (class in pyvhdlparser.blocks.controlstructure.case)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.IsBlock"]], "keyword (pyvhdlparser.blocks.controlstructure.case.endblock attribute)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.EndBlock.KEYWORD"]], "length (pyvhdlparser.blocks.controlstructure.case.arrowblock property)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.ArrowBlock.Length"]], "length (pyvhdlparser.blocks.controlstructure.case.caseblock property)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.CaseBlock.Length"]], "length (pyvhdlparser.blocks.controlstructure.case.caseexpressionblock property)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.CaseExpressionBlock.Length"]], "length (pyvhdlparser.blocks.controlstructure.case.endblock property)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.EndBlock.Length"]], "length (pyvhdlparser.blocks.controlstructure.case.isblock property)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.IsBlock.Length"]], "length (pyvhdlparser.blocks.controlstructure.case.whenblock property)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.WhenBlock.Length"]], "length (pyvhdlparser.blocks.controlstructure.case.whenexpressionblock property)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.WhenExpressionBlock.Length"]], "multipart (pyvhdlparser.blocks.controlstructure.case.arrowblock attribute)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.ArrowBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.controlstructure.case.caseblock attribute)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.CaseBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.controlstructure.case.caseexpressionblock attribute)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.CaseExpressionBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.controlstructure.case.endblock attribute)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.EndBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.controlstructure.case.isblock attribute)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.IsBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.controlstructure.case.whenblock attribute)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.WhenBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.controlstructure.case.whenexpressionblock attribute)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.WhenExpressionBlock.MultiPart"]], "nextblock (pyvhdlparser.blocks.controlstructure.case.arrowblock attribute)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.ArrowBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.controlstructure.case.caseblock attribute)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.CaseBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.controlstructure.case.caseexpressionblock attribute)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.CaseExpressionBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.controlstructure.case.endblock attribute)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.EndBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.controlstructure.case.isblock attribute)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.IsBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.controlstructure.case.whenblock attribute)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.WhenBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.controlstructure.case.whenexpressionblock attribute)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.WhenExpressionBlock.NextBlock"]], "starttoken (pyvhdlparser.blocks.controlstructure.case.arrowblock attribute)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.ArrowBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.controlstructure.case.caseblock attribute)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.CaseBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.controlstructure.case.caseexpressionblock attribute)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.CaseExpressionBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.controlstructure.case.endblock attribute)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.EndBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.controlstructure.case.isblock attribute)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.IsBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.controlstructure.case.whenblock attribute)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.WhenBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.controlstructure.case.whenexpressionblock attribute)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.WhenExpressionBlock.StartToken"]], "states (pyvhdlparser.blocks.controlstructure.case.arrowblock property)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.ArrowBlock.States"]], "states (pyvhdlparser.blocks.controlstructure.case.caseblock property)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.CaseBlock.States"]], "states (pyvhdlparser.blocks.controlstructure.case.caseexpressionblock property)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.CaseExpressionBlock.States"]], "states (pyvhdlparser.blocks.controlstructure.case.endblock property)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.EndBlock.States"]], "states (pyvhdlparser.blocks.controlstructure.case.isblock property)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.IsBlock.States"]], "states (pyvhdlparser.blocks.controlstructure.case.whenblock property)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.WhenBlock.States"]], "states (pyvhdlparser.blocks.controlstructure.case.whenexpressionblock property)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.WhenExpressionBlock.States"]], "whenblock (class in pyvhdlparser.blocks.controlstructure.case)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.WhenBlock"]], "whenexpressionblock (class in pyvhdlparser.blocks.controlstructure.case)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.WhenExpressionBlock"]], "__states__ (pyvhdlparser.blocks.controlstructure.case.arrowblock attribute)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.ArrowBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.controlstructure.case.caseblock attribute)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.CaseBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.controlstructure.case.caseexpressionblock attribute)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.CaseExpressionBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.controlstructure.case.endblock attribute)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.EndBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.controlstructure.case.isblock attribute)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.IsBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.controlstructure.case.whenblock attribute)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.WhenBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.controlstructure.case.whenexpressionblock attribute)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.WhenExpressionBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.controlstructure.case.arrowblock method)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.ArrowBlock.__init__"]], "__init__() (pyvhdlparser.blocks.controlstructure.case.caseblock method)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.CaseBlock.__init__"]], "__init__() (pyvhdlparser.blocks.controlstructure.case.caseexpressionblock method)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.CaseExpressionBlock.__init__"]], "__init__() (pyvhdlparser.blocks.controlstructure.case.endblock method)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.EndBlock.__init__"]], "__init__() (pyvhdlparser.blocks.controlstructure.case.isblock method)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.IsBlock.__init__"]], "__init__() (pyvhdlparser.blocks.controlstructure.case.whenblock method)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.WhenBlock.__init__"]], "__init__() (pyvhdlparser.blocks.controlstructure.case.whenexpressionblock method)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.WhenExpressionBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.controlstructure.case.arrowblock method)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.ArrowBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.controlstructure.case.caseblock method)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.CaseBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.controlstructure.case.caseexpressionblock method)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.CaseExpressionBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.controlstructure.case.endblock method)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.EndBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.controlstructure.case.isblock method)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.IsBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.controlstructure.case.whenblock method)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.WhenBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.controlstructure.case.whenexpressionblock method)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.WhenExpressionBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.controlstructure.case.arrowblock method)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.ArrowBlock.__len__"]], "__len__() (pyvhdlparser.blocks.controlstructure.case.caseblock method)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.CaseBlock.__len__"]], "__len__() (pyvhdlparser.blocks.controlstructure.case.caseexpressionblock method)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.CaseExpressionBlock.__len__"]], "__len__() (pyvhdlparser.blocks.controlstructure.case.endblock method)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.EndBlock.__len__"]], "__len__() (pyvhdlparser.blocks.controlstructure.case.isblock method)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.IsBlock.__len__"]], "__len__() (pyvhdlparser.blocks.controlstructure.case.whenblock method)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.WhenBlock.__len__"]], "__len__() (pyvhdlparser.blocks.controlstructure.case.whenexpressionblock method)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.WhenExpressionBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.controlstructure.case.arrowblock method)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.ArrowBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.controlstructure.case.caseblock method)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.CaseBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.controlstructure.case.caseexpressionblock method)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.CaseExpressionBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.controlstructure.case.endblock method)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.EndBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.controlstructure.case.isblock method)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.IsBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.controlstructure.case.whenblock method)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.WhenBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.controlstructure.case.whenexpressionblock method)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.WhenExpressionBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.controlstructure.case.arrowblock method)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.ArrowBlock.__str__"]], "__str__() (pyvhdlparser.blocks.controlstructure.case.caseblock method)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.CaseBlock.__str__"]], "__str__() (pyvhdlparser.blocks.controlstructure.case.caseexpressionblock method)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.CaseExpressionBlock.__str__"]], "__str__() (pyvhdlparser.blocks.controlstructure.case.endblock method)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.EndBlock.__str__"]], "__str__() (pyvhdlparser.blocks.controlstructure.case.isblock method)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.IsBlock.__str__"]], "__str__() (pyvhdlparser.blocks.controlstructure.case.whenblock method)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.WhenBlock.__str__"]], "__str__() (pyvhdlparser.blocks.controlstructure.case.whenexpressionblock method)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.WhenExpressionBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.controlstructure.case.arrowblock attribute)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.ArrowBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.controlstructure.case.caseblock attribute)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.CaseBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.controlstructure.case.caseexpressionblock attribute)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.CaseExpressionBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.controlstructure.case.endblock attribute)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.EndBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.controlstructure.case.isblock attribute)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.IsBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.controlstructure.case.whenblock attribute)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.WhenBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.controlstructure.case.whenexpressionblock attribute)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.WhenExpressionBlock._previousBlock"]], "pyvhdlparser.blocks.controlstructure.case": [[126, "module-pyVHDLParser.Blocks.ControlStructure.Case"]], "stateerror() (pyvhdlparser.blocks.controlstructure.case.arrowblock class method)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.ArrowBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.controlstructure.case.caseblock class method)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.CaseBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.controlstructure.case.caseexpressionblock class method)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.CaseExpressionBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.controlstructure.case.endblock class method)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.EndBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.controlstructure.case.isblock class method)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.IsBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.controlstructure.case.whenblock class method)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.WhenBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.controlstructure.case.whenexpressionblock class method)": [[126, "pyVHDLParser.Blocks.ControlStructure.Case.WhenExpressionBlock.stateError"]], "end_block (pyvhdlparser.blocks.controlstructure.exit.exitconditionblock attribute)": [[127, "pyVHDLParser.Blocks.ControlStructure.Exit.ExitConditionBlock.END_BLOCK"]], "endblock (class in pyvhdlparser.blocks.controlstructure.exit)": [[127, "pyVHDLParser.Blocks.ControlStructure.Exit.EndBlock"]], "endtoken (pyvhdlparser.blocks.controlstructure.exit.endblock attribute)": [[127, "pyVHDLParser.Blocks.ControlStructure.Exit.EndBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.controlstructure.exit.exitblock attribute)": [[127, "pyVHDLParser.Blocks.ControlStructure.Exit.ExitBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.controlstructure.exit.exitconditionblock attribute)": [[127, "pyVHDLParser.Blocks.ControlStructure.Exit.ExitConditionBlock.EndToken"]], "exitblock (class in pyvhdlparser.blocks.controlstructure.exit)": [[127, "pyVHDLParser.Blocks.ControlStructure.Exit.ExitBlock"]], "exitconditionblock (class in pyvhdlparser.blocks.controlstructure.exit)": [[127, "pyVHDLParser.Blocks.ControlStructure.Exit.ExitConditionBlock"]], "length (pyvhdlparser.blocks.controlstructure.exit.endblock property)": [[127, "pyVHDLParser.Blocks.ControlStructure.Exit.EndBlock.Length"]], "length (pyvhdlparser.blocks.controlstructure.exit.exitblock property)": [[127, "pyVHDLParser.Blocks.ControlStructure.Exit.ExitBlock.Length"]], "length (pyvhdlparser.blocks.controlstructure.exit.exitconditionblock property)": [[127, "pyVHDLParser.Blocks.ControlStructure.Exit.ExitConditionBlock.Length"]], "multipart (pyvhdlparser.blocks.controlstructure.exit.endblock attribute)": [[127, "pyVHDLParser.Blocks.ControlStructure.Exit.EndBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.controlstructure.exit.exitblock attribute)": [[127, "pyVHDLParser.Blocks.ControlStructure.Exit.ExitBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.controlstructure.exit.exitconditionblock attribute)": [[127, "pyVHDLParser.Blocks.ControlStructure.Exit.ExitConditionBlock.MultiPart"]], "nextblock (pyvhdlparser.blocks.controlstructure.exit.endblock attribute)": [[127, "pyVHDLParser.Blocks.ControlStructure.Exit.EndBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.controlstructure.exit.exitblock attribute)": [[127, "pyVHDLParser.Blocks.ControlStructure.Exit.ExitBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.controlstructure.exit.exitconditionblock attribute)": [[127, "pyVHDLParser.Blocks.ControlStructure.Exit.ExitConditionBlock.NextBlock"]], "starttoken (pyvhdlparser.blocks.controlstructure.exit.endblock attribute)": [[127, "pyVHDLParser.Blocks.ControlStructure.Exit.EndBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.controlstructure.exit.exitblock attribute)": [[127, "pyVHDLParser.Blocks.ControlStructure.Exit.ExitBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.controlstructure.exit.exitconditionblock attribute)": [[127, "pyVHDLParser.Blocks.ControlStructure.Exit.ExitConditionBlock.StartToken"]], "states (pyvhdlparser.blocks.controlstructure.exit.endblock property)": [[127, "pyVHDLParser.Blocks.ControlStructure.Exit.EndBlock.States"]], "states (pyvhdlparser.blocks.controlstructure.exit.exitblock property)": [[127, "pyVHDLParser.Blocks.ControlStructure.Exit.ExitBlock.States"]], "states (pyvhdlparser.blocks.controlstructure.exit.exitconditionblock property)": [[127, "pyVHDLParser.Blocks.ControlStructure.Exit.ExitConditionBlock.States"]], "__states__ (pyvhdlparser.blocks.controlstructure.exit.endblock attribute)": [[127, "pyVHDLParser.Blocks.ControlStructure.Exit.EndBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.controlstructure.exit.exitblock attribute)": [[127, "pyVHDLParser.Blocks.ControlStructure.Exit.ExitBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.controlstructure.exit.exitconditionblock attribute)": [[127, "pyVHDLParser.Blocks.ControlStructure.Exit.ExitConditionBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.controlstructure.exit.endblock method)": [[127, "pyVHDLParser.Blocks.ControlStructure.Exit.EndBlock.__init__"]], "__init__() (pyvhdlparser.blocks.controlstructure.exit.exitblock method)": [[127, "pyVHDLParser.Blocks.ControlStructure.Exit.ExitBlock.__init__"]], "__init__() (pyvhdlparser.blocks.controlstructure.exit.exitconditionblock method)": [[127, "pyVHDLParser.Blocks.ControlStructure.Exit.ExitConditionBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.controlstructure.exit.endblock method)": [[127, "pyVHDLParser.Blocks.ControlStructure.Exit.EndBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.controlstructure.exit.exitblock method)": [[127, "pyVHDLParser.Blocks.ControlStructure.Exit.ExitBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.controlstructure.exit.exitconditionblock method)": [[127, "pyVHDLParser.Blocks.ControlStructure.Exit.ExitConditionBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.controlstructure.exit.endblock method)": [[127, "pyVHDLParser.Blocks.ControlStructure.Exit.EndBlock.__len__"]], "__len__() (pyvhdlparser.blocks.controlstructure.exit.exitblock method)": [[127, "pyVHDLParser.Blocks.ControlStructure.Exit.ExitBlock.__len__"]], "__len__() (pyvhdlparser.blocks.controlstructure.exit.exitconditionblock method)": [[127, "pyVHDLParser.Blocks.ControlStructure.Exit.ExitConditionBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.controlstructure.exit.endblock method)": [[127, "pyVHDLParser.Blocks.ControlStructure.Exit.EndBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.controlstructure.exit.exitblock method)": [[127, "pyVHDLParser.Blocks.ControlStructure.Exit.ExitBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.controlstructure.exit.exitconditionblock method)": [[127, "pyVHDLParser.Blocks.ControlStructure.Exit.ExitConditionBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.controlstructure.exit.endblock method)": [[127, "pyVHDLParser.Blocks.ControlStructure.Exit.EndBlock.__str__"]], "__str__() (pyvhdlparser.blocks.controlstructure.exit.exitblock method)": [[127, "pyVHDLParser.Blocks.ControlStructure.Exit.ExitBlock.__str__"]], "__str__() (pyvhdlparser.blocks.controlstructure.exit.exitconditionblock method)": [[127, "pyVHDLParser.Blocks.ControlStructure.Exit.ExitConditionBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.controlstructure.exit.endblock attribute)": [[127, "pyVHDLParser.Blocks.ControlStructure.Exit.EndBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.controlstructure.exit.exitblock attribute)": [[127, "pyVHDLParser.Blocks.ControlStructure.Exit.ExitBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.controlstructure.exit.exitconditionblock attribute)": [[127, "pyVHDLParser.Blocks.ControlStructure.Exit.ExitConditionBlock._previousBlock"]], "pyvhdlparser.blocks.controlstructure.exit": [[127, "module-pyVHDLParser.Blocks.ControlStructure.Exit"]], "stateerror() (pyvhdlparser.blocks.controlstructure.exit.endblock class method)": [[127, "pyVHDLParser.Blocks.ControlStructure.Exit.EndBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.controlstructure.exit.exitblock class method)": [[127, "pyVHDLParser.Blocks.ControlStructure.Exit.ExitBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.controlstructure.exit.exitconditionblock class method)": [[127, "pyVHDLParser.Blocks.ControlStructure.Exit.ExitConditionBlock.stateError"]], "end_block (pyvhdlparser.blocks.controlstructure.forloop.loopblock attribute)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.LoopBlock.END_BLOCK"]], "exit_block (pyvhdlparser.blocks.controlstructure.forloop.expressionblockendedbyloop attribute)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.ExpressionBlockEndedByLoop.EXIT_BLOCK"]], "exit_block (pyvhdlparser.blocks.controlstructure.forloop.expressionblockendedbylooportoordownto attribute)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.ExpressionBlockEndedByLoopORToORDownto.EXIT_BLOCK"]], "exit_keyword (pyvhdlparser.blocks.controlstructure.forloop.expressionblockendedbyloop attribute)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.ExpressionBlockEndedByLoop.EXIT_KEYWORD"]], "exit_keyword (pyvhdlparser.blocks.controlstructure.forloop.expressionblockendedbylooportoordownto attribute)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.ExpressionBlockEndedByLoopORToORDownto.EXIT_KEYWORD"]], "endblock (class in pyvhdlparser.blocks.controlstructure.forloop)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.EndBlock"]], "endtoken (pyvhdlparser.blocks.controlstructure.forloop.endblock attribute)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.EndBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.controlstructure.forloop.expressionblockendedbyloop attribute)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.ExpressionBlockEndedByLoop.EndToken"]], "endtoken (pyvhdlparser.blocks.controlstructure.forloop.expressionblockendedbylooportoordownto attribute)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.ExpressionBlockEndedByLoopORToORDownto.EndToken"]], "endtoken (pyvhdlparser.blocks.controlstructure.forloop.iteratorblock attribute)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.IteratorBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.controlstructure.forloop.loopblock attribute)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.LoopBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.controlstructure.forloop.loopiterationdirectionblock attribute)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.LoopIterationDirectionBlock.EndToken"]], "expressionblockendedbyloop (class in pyvhdlparser.blocks.controlstructure.forloop)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.ExpressionBlockEndedByLoop"]], "expressionblockendedbylooportoordownto (class in pyvhdlparser.blocks.controlstructure.forloop)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.ExpressionBlockEndedByLoopORToORDownto"]], "iteratorblock (class in pyvhdlparser.blocks.controlstructure.forloop)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.IteratorBlock"]], "keyword (pyvhdlparser.blocks.controlstructure.forloop.endblock attribute)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.EndBlock.KEYWORD"]], "length (pyvhdlparser.blocks.controlstructure.forloop.endblock property)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.EndBlock.Length"]], "length (pyvhdlparser.blocks.controlstructure.forloop.expressionblockendedbyloop property)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.ExpressionBlockEndedByLoop.Length"]], "length (pyvhdlparser.blocks.controlstructure.forloop.expressionblockendedbylooportoordownto property)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.ExpressionBlockEndedByLoopORToORDownto.Length"]], "length (pyvhdlparser.blocks.controlstructure.forloop.iteratorblock property)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.IteratorBlock.Length"]], "length (pyvhdlparser.blocks.controlstructure.forloop.loopblock property)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.LoopBlock.Length"]], "length (pyvhdlparser.blocks.controlstructure.forloop.loopiterationdirectionblock property)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.LoopIterationDirectionBlock.Length"]], "loopblock (class in pyvhdlparser.blocks.controlstructure.forloop)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.LoopBlock"]], "loopiterationdirectionblock (class in pyvhdlparser.blocks.controlstructure.forloop)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.LoopIterationDirectionBlock"]], "multipart (pyvhdlparser.blocks.controlstructure.forloop.endblock attribute)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.EndBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.controlstructure.forloop.expressionblockendedbyloop attribute)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.ExpressionBlockEndedByLoop.MultiPart"]], "multipart (pyvhdlparser.blocks.controlstructure.forloop.expressionblockendedbylooportoordownto attribute)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.ExpressionBlockEndedByLoopORToORDownto.MultiPart"]], "multipart (pyvhdlparser.blocks.controlstructure.forloop.iteratorblock attribute)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.IteratorBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.controlstructure.forloop.loopblock attribute)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.LoopBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.controlstructure.forloop.loopiterationdirectionblock attribute)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.LoopIterationDirectionBlock.MultiPart"]], "nextblock (pyvhdlparser.blocks.controlstructure.forloop.endblock attribute)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.EndBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.controlstructure.forloop.expressionblockendedbyloop attribute)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.ExpressionBlockEndedByLoop.NextBlock"]], "nextblock (pyvhdlparser.blocks.controlstructure.forloop.expressionblockendedbylooportoordownto attribute)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.ExpressionBlockEndedByLoopORToORDownto.NextBlock"]], "nextblock (pyvhdlparser.blocks.controlstructure.forloop.iteratorblock attribute)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.IteratorBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.controlstructure.forloop.loopblock attribute)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.LoopBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.controlstructure.forloop.loopiterationdirectionblock attribute)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.LoopIterationDirectionBlock.NextBlock"]], "starttoken (pyvhdlparser.blocks.controlstructure.forloop.endblock attribute)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.EndBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.controlstructure.forloop.expressionblockendedbyloop attribute)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.ExpressionBlockEndedByLoop.StartToken"]], "starttoken (pyvhdlparser.blocks.controlstructure.forloop.expressionblockendedbylooportoordownto attribute)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.ExpressionBlockEndedByLoopORToORDownto.StartToken"]], "starttoken (pyvhdlparser.blocks.controlstructure.forloop.iteratorblock attribute)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.IteratorBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.controlstructure.forloop.loopblock attribute)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.LoopBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.controlstructure.forloop.loopiterationdirectionblock attribute)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.LoopIterationDirectionBlock.StartToken"]], "states (pyvhdlparser.blocks.controlstructure.forloop.endblock property)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.EndBlock.States"]], "states (pyvhdlparser.blocks.controlstructure.forloop.expressionblockendedbyloop property)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.ExpressionBlockEndedByLoop.States"]], "states (pyvhdlparser.blocks.controlstructure.forloop.expressionblockendedbylooportoordownto property)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.ExpressionBlockEndedByLoopORToORDownto.States"]], "states (pyvhdlparser.blocks.controlstructure.forloop.iteratorblock property)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.IteratorBlock.States"]], "states (pyvhdlparser.blocks.controlstructure.forloop.loopblock property)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.LoopBlock.States"]], "states (pyvhdlparser.blocks.controlstructure.forloop.loopiterationdirectionblock property)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.LoopIterationDirectionBlock.States"]], "__states__ (pyvhdlparser.blocks.controlstructure.forloop.endblock attribute)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.EndBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.controlstructure.forloop.expressionblockendedbyloop attribute)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.ExpressionBlockEndedByLoop.__STATES__"]], "__states__ (pyvhdlparser.blocks.controlstructure.forloop.expressionblockendedbylooportoordownto attribute)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.ExpressionBlockEndedByLoopORToORDownto.__STATES__"]], "__states__ (pyvhdlparser.blocks.controlstructure.forloop.iteratorblock attribute)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.IteratorBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.controlstructure.forloop.loopblock attribute)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.LoopBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.controlstructure.forloop.loopiterationdirectionblock attribute)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.LoopIterationDirectionBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.controlstructure.forloop.endblock method)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.EndBlock.__init__"]], "__init__() (pyvhdlparser.blocks.controlstructure.forloop.expressionblockendedbyloop method)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.ExpressionBlockEndedByLoop.__init__"]], "__init__() (pyvhdlparser.blocks.controlstructure.forloop.expressionblockendedbylooportoordownto method)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.ExpressionBlockEndedByLoopORToORDownto.__init__"]], "__init__() (pyvhdlparser.blocks.controlstructure.forloop.iteratorblock method)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.IteratorBlock.__init__"]], "__init__() (pyvhdlparser.blocks.controlstructure.forloop.loopblock method)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.LoopBlock.__init__"]], "__init__() (pyvhdlparser.blocks.controlstructure.forloop.loopiterationdirectionblock method)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.LoopIterationDirectionBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.controlstructure.forloop.endblock method)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.EndBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.controlstructure.forloop.expressionblockendedbyloop method)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.ExpressionBlockEndedByLoop.__iter__"]], "__iter__() (pyvhdlparser.blocks.controlstructure.forloop.expressionblockendedbylooportoordownto method)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.ExpressionBlockEndedByLoopORToORDownto.__iter__"]], "__iter__() (pyvhdlparser.blocks.controlstructure.forloop.iteratorblock method)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.IteratorBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.controlstructure.forloop.loopblock method)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.LoopBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.controlstructure.forloop.loopiterationdirectionblock method)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.LoopIterationDirectionBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.controlstructure.forloop.endblock method)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.EndBlock.__len__"]], "__len__() (pyvhdlparser.blocks.controlstructure.forloop.expressionblockendedbyloop method)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.ExpressionBlockEndedByLoop.__len__"]], "__len__() (pyvhdlparser.blocks.controlstructure.forloop.expressionblockendedbylooportoordownto method)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.ExpressionBlockEndedByLoopORToORDownto.__len__"]], "__len__() (pyvhdlparser.blocks.controlstructure.forloop.iteratorblock method)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.IteratorBlock.__len__"]], "__len__() (pyvhdlparser.blocks.controlstructure.forloop.loopblock method)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.LoopBlock.__len__"]], "__len__() (pyvhdlparser.blocks.controlstructure.forloop.loopiterationdirectionblock method)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.LoopIterationDirectionBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.controlstructure.forloop.endblock method)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.EndBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.controlstructure.forloop.expressionblockendedbyloop method)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.ExpressionBlockEndedByLoop.__repr__"]], "__repr__() (pyvhdlparser.blocks.controlstructure.forloop.expressionblockendedbylooportoordownto method)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.ExpressionBlockEndedByLoopORToORDownto.__repr__"]], "__repr__() (pyvhdlparser.blocks.controlstructure.forloop.iteratorblock method)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.IteratorBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.controlstructure.forloop.loopblock method)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.LoopBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.controlstructure.forloop.loopiterationdirectionblock method)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.LoopIterationDirectionBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.controlstructure.forloop.endblock method)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.EndBlock.__str__"]], "__str__() (pyvhdlparser.blocks.controlstructure.forloop.expressionblockendedbyloop method)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.ExpressionBlockEndedByLoop.__str__"]], "__str__() (pyvhdlparser.blocks.controlstructure.forloop.expressionblockendedbylooportoordownto method)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.ExpressionBlockEndedByLoopORToORDownto.__str__"]], "__str__() (pyvhdlparser.blocks.controlstructure.forloop.iteratorblock method)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.IteratorBlock.__str__"]], "__str__() (pyvhdlparser.blocks.controlstructure.forloop.loopblock method)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.LoopBlock.__str__"]], "__str__() (pyvhdlparser.blocks.controlstructure.forloop.loopiterationdirectionblock method)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.LoopIterationDirectionBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.controlstructure.forloop.endblock attribute)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.EndBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.controlstructure.forloop.expressionblockendedbyloop attribute)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.ExpressionBlockEndedByLoop._previousBlock"]], "_previousblock (pyvhdlparser.blocks.controlstructure.forloop.expressionblockendedbylooportoordownto attribute)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.ExpressionBlockEndedByLoopORToORDownto._previousBlock"]], "_previousblock (pyvhdlparser.blocks.controlstructure.forloop.iteratorblock attribute)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.IteratorBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.controlstructure.forloop.loopblock attribute)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.LoopBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.controlstructure.forloop.loopiterationdirectionblock attribute)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.LoopIterationDirectionBlock._previousBlock"]], "pyvhdlparser.blocks.controlstructure.forloop": [[128, "module-pyVHDLParser.Blocks.ControlStructure.ForLoop"]], "stateerror() (pyvhdlparser.blocks.controlstructure.forloop.endblock class method)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.EndBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.controlstructure.forloop.expressionblockendedbyloop class method)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.ExpressionBlockEndedByLoop.stateError"]], "stateerror() (pyvhdlparser.blocks.controlstructure.forloop.expressionblockendedbylooportoordownto class method)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.ExpressionBlockEndedByLoopORToORDownto.stateError"]], "stateerror() (pyvhdlparser.blocks.controlstructure.forloop.iteratorblock class method)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.IteratorBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.controlstructure.forloop.loopblock class method)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.LoopBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.controlstructure.forloop.loopiterationdirectionblock class method)": [[128, "pyVHDLParser.Blocks.ControlStructure.ForLoop.LoopIterationDirectionBlock.stateError"]], "end_block (pyvhdlparser.blocks.controlstructure.if.elseblock attribute)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ElseBlock.END_BLOCK"]], "end_block (pyvhdlparser.blocks.controlstructure.if.thenblock attribute)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ThenBlock.END_BLOCK"]], "exit_block (pyvhdlparser.blocks.controlstructure.if.expressionblockendedbythen attribute)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ExpressionBlockEndedByThen.EXIT_BLOCK"]], "exit_keyword (pyvhdlparser.blocks.controlstructure.if.expressionblockendedbythen attribute)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ExpressionBlockEndedByThen.EXIT_KEYWORD"]], "elsifconditionblock (class in pyvhdlparser.blocks.controlstructure.if)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ElsIfConditionBlock"]], "elseblock (class in pyvhdlparser.blocks.controlstructure.if)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ElseBlock"]], "endblock (class in pyvhdlparser.blocks.controlstructure.if)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.EndBlock"]], "endtoken (pyvhdlparser.blocks.controlstructure.if.elsifconditionblock attribute)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ElsIfConditionBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.controlstructure.if.elseblock attribute)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ElseBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.controlstructure.if.endblock attribute)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.EndBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.controlstructure.if.expressionblockendedbythen attribute)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ExpressionBlockEndedByThen.EndToken"]], "endtoken (pyvhdlparser.blocks.controlstructure.if.ifconditionblock attribute)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.IfConditionBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.controlstructure.if.thenblock attribute)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ThenBlock.EndToken"]], "expressionblockendedbythen (class in pyvhdlparser.blocks.controlstructure.if)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ExpressionBlockEndedByThen"]], "ifconditionblock (class in pyvhdlparser.blocks.controlstructure.if)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.IfConditionBlock"]], "keyword (pyvhdlparser.blocks.controlstructure.if.endblock attribute)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.EndBlock.KEYWORD"]], "length (pyvhdlparser.blocks.controlstructure.if.elsifconditionblock property)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ElsIfConditionBlock.Length"]], "length (pyvhdlparser.blocks.controlstructure.if.elseblock property)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ElseBlock.Length"]], "length (pyvhdlparser.blocks.controlstructure.if.endblock property)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.EndBlock.Length"]], "length (pyvhdlparser.blocks.controlstructure.if.expressionblockendedbythen property)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ExpressionBlockEndedByThen.Length"]], "length (pyvhdlparser.blocks.controlstructure.if.ifconditionblock property)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.IfConditionBlock.Length"]], "length (pyvhdlparser.blocks.controlstructure.if.thenblock property)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ThenBlock.Length"]], "multipart (pyvhdlparser.blocks.controlstructure.if.elsifconditionblock attribute)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ElsIfConditionBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.controlstructure.if.elseblock attribute)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ElseBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.controlstructure.if.endblock attribute)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.EndBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.controlstructure.if.expressionblockendedbythen attribute)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ExpressionBlockEndedByThen.MultiPart"]], "multipart (pyvhdlparser.blocks.controlstructure.if.ifconditionblock attribute)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.IfConditionBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.controlstructure.if.thenblock attribute)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ThenBlock.MultiPart"]], "nextblock (pyvhdlparser.blocks.controlstructure.if.elsifconditionblock attribute)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ElsIfConditionBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.controlstructure.if.elseblock attribute)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ElseBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.controlstructure.if.endblock attribute)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.EndBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.controlstructure.if.expressionblockendedbythen attribute)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ExpressionBlockEndedByThen.NextBlock"]], "nextblock (pyvhdlparser.blocks.controlstructure.if.ifconditionblock attribute)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.IfConditionBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.controlstructure.if.thenblock attribute)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ThenBlock.NextBlock"]], "starttoken (pyvhdlparser.blocks.controlstructure.if.elsifconditionblock attribute)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ElsIfConditionBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.controlstructure.if.elseblock attribute)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ElseBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.controlstructure.if.endblock attribute)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.EndBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.controlstructure.if.expressionblockendedbythen attribute)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ExpressionBlockEndedByThen.StartToken"]], "starttoken (pyvhdlparser.blocks.controlstructure.if.ifconditionblock attribute)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.IfConditionBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.controlstructure.if.thenblock attribute)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ThenBlock.StartToken"]], "states (pyvhdlparser.blocks.controlstructure.if.elsifconditionblock property)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ElsIfConditionBlock.States"]], "states (pyvhdlparser.blocks.controlstructure.if.elseblock property)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ElseBlock.States"]], "states (pyvhdlparser.blocks.controlstructure.if.endblock property)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.EndBlock.States"]], "states (pyvhdlparser.blocks.controlstructure.if.expressionblockendedbythen property)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ExpressionBlockEndedByThen.States"]], "states (pyvhdlparser.blocks.controlstructure.if.ifconditionblock property)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.IfConditionBlock.States"]], "states (pyvhdlparser.blocks.controlstructure.if.thenblock property)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ThenBlock.States"]], "thenblock (class in pyvhdlparser.blocks.controlstructure.if)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ThenBlock"]], "__states__ (pyvhdlparser.blocks.controlstructure.if.elsifconditionblock attribute)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ElsIfConditionBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.controlstructure.if.elseblock attribute)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ElseBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.controlstructure.if.endblock attribute)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.EndBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.controlstructure.if.expressionblockendedbythen attribute)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ExpressionBlockEndedByThen.__STATES__"]], "__states__ (pyvhdlparser.blocks.controlstructure.if.ifconditionblock attribute)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.IfConditionBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.controlstructure.if.thenblock attribute)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ThenBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.controlstructure.if.elsifconditionblock method)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ElsIfConditionBlock.__init__"]], "__init__() (pyvhdlparser.blocks.controlstructure.if.elseblock method)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ElseBlock.__init__"]], "__init__() (pyvhdlparser.blocks.controlstructure.if.endblock method)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.EndBlock.__init__"]], "__init__() (pyvhdlparser.blocks.controlstructure.if.expressionblockendedbythen method)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ExpressionBlockEndedByThen.__init__"]], "__init__() (pyvhdlparser.blocks.controlstructure.if.ifconditionblock method)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.IfConditionBlock.__init__"]], "__init__() (pyvhdlparser.blocks.controlstructure.if.thenblock method)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ThenBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.controlstructure.if.elsifconditionblock method)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ElsIfConditionBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.controlstructure.if.elseblock method)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ElseBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.controlstructure.if.endblock method)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.EndBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.controlstructure.if.expressionblockendedbythen method)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ExpressionBlockEndedByThen.__iter__"]], "__iter__() (pyvhdlparser.blocks.controlstructure.if.ifconditionblock method)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.IfConditionBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.controlstructure.if.thenblock method)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ThenBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.controlstructure.if.elsifconditionblock method)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ElsIfConditionBlock.__len__"]], "__len__() (pyvhdlparser.blocks.controlstructure.if.elseblock method)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ElseBlock.__len__"]], "__len__() (pyvhdlparser.blocks.controlstructure.if.endblock method)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.EndBlock.__len__"]], "__len__() (pyvhdlparser.blocks.controlstructure.if.expressionblockendedbythen method)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ExpressionBlockEndedByThen.__len__"]], "__len__() (pyvhdlparser.blocks.controlstructure.if.ifconditionblock method)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.IfConditionBlock.__len__"]], "__len__() (pyvhdlparser.blocks.controlstructure.if.thenblock method)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ThenBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.controlstructure.if.elsifconditionblock method)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ElsIfConditionBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.controlstructure.if.elseblock method)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ElseBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.controlstructure.if.endblock method)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.EndBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.controlstructure.if.expressionblockendedbythen method)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ExpressionBlockEndedByThen.__repr__"]], "__repr__() (pyvhdlparser.blocks.controlstructure.if.ifconditionblock method)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.IfConditionBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.controlstructure.if.thenblock method)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ThenBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.controlstructure.if.elsifconditionblock method)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ElsIfConditionBlock.__str__"]], "__str__() (pyvhdlparser.blocks.controlstructure.if.elseblock method)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ElseBlock.__str__"]], "__str__() (pyvhdlparser.blocks.controlstructure.if.endblock method)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.EndBlock.__str__"]], "__str__() (pyvhdlparser.blocks.controlstructure.if.expressionblockendedbythen method)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ExpressionBlockEndedByThen.__str__"]], "__str__() (pyvhdlparser.blocks.controlstructure.if.ifconditionblock method)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.IfConditionBlock.__str__"]], "__str__() (pyvhdlparser.blocks.controlstructure.if.thenblock method)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ThenBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.controlstructure.if.elsifconditionblock attribute)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ElsIfConditionBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.controlstructure.if.elseblock attribute)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ElseBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.controlstructure.if.endblock attribute)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.EndBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.controlstructure.if.expressionblockendedbythen attribute)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ExpressionBlockEndedByThen._previousBlock"]], "_previousblock (pyvhdlparser.blocks.controlstructure.if.ifconditionblock attribute)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.IfConditionBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.controlstructure.if.thenblock attribute)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ThenBlock._previousBlock"]], "pyvhdlparser.blocks.controlstructure.if": [[129, "module-pyVHDLParser.Blocks.ControlStructure.If"]], "stateerror() (pyvhdlparser.blocks.controlstructure.if.elsifconditionblock class method)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ElsIfConditionBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.controlstructure.if.elseblock class method)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ElseBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.controlstructure.if.endblock class method)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.EndBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.controlstructure.if.expressionblockendedbythen class method)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ExpressionBlockEndedByThen.stateError"]], "stateerror() (pyvhdlparser.blocks.controlstructure.if.ifconditionblock class method)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.IfConditionBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.controlstructure.if.thenblock class method)": [[129, "pyVHDLParser.Blocks.ControlStructure.If.ThenBlock.stateError"]], "end_block (pyvhdlparser.blocks.controlstructure.next.nextconditionblock attribute)": [[130, "pyVHDLParser.Blocks.ControlStructure.Next.NextConditionBlock.END_BLOCK"]], "endblock (class in pyvhdlparser.blocks.controlstructure.next)": [[130, "pyVHDLParser.Blocks.ControlStructure.Next.EndBlock"]], "endtoken (pyvhdlparser.blocks.controlstructure.next.endblock attribute)": [[130, "pyVHDLParser.Blocks.ControlStructure.Next.EndBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.controlstructure.next.nextblock attribute)": [[130, "pyVHDLParser.Blocks.ControlStructure.Next.NextBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.controlstructure.next.nextconditionblock attribute)": [[130, "pyVHDLParser.Blocks.ControlStructure.Next.NextConditionBlock.EndToken"]], "length (pyvhdlparser.blocks.controlstructure.next.endblock property)": [[130, "pyVHDLParser.Blocks.ControlStructure.Next.EndBlock.Length"]], "length (pyvhdlparser.blocks.controlstructure.next.nextblock property)": [[130, "pyVHDLParser.Blocks.ControlStructure.Next.NextBlock.Length"]], "length (pyvhdlparser.blocks.controlstructure.next.nextconditionblock property)": [[130, "pyVHDLParser.Blocks.ControlStructure.Next.NextConditionBlock.Length"]], "multipart (pyvhdlparser.blocks.controlstructure.next.endblock attribute)": [[130, "pyVHDLParser.Blocks.ControlStructure.Next.EndBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.controlstructure.next.nextblock attribute)": [[130, "pyVHDLParser.Blocks.ControlStructure.Next.NextBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.controlstructure.next.nextconditionblock attribute)": [[130, "pyVHDLParser.Blocks.ControlStructure.Next.NextConditionBlock.MultiPart"]], "nextblock (class in pyvhdlparser.blocks.controlstructure.next)": [[130, "pyVHDLParser.Blocks.ControlStructure.Next.NextBlock"]], "nextblock (pyvhdlparser.blocks.controlstructure.next.endblock attribute)": [[130, "pyVHDLParser.Blocks.ControlStructure.Next.EndBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.controlstructure.next.nextblock attribute)": [[130, "pyVHDLParser.Blocks.ControlStructure.Next.NextBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.controlstructure.next.nextconditionblock attribute)": [[130, "pyVHDLParser.Blocks.ControlStructure.Next.NextConditionBlock.NextBlock"]], "nextconditionblock (class in pyvhdlparser.blocks.controlstructure.next)": [[130, "pyVHDLParser.Blocks.ControlStructure.Next.NextConditionBlock"]], "starttoken (pyvhdlparser.blocks.controlstructure.next.endblock attribute)": [[130, "pyVHDLParser.Blocks.ControlStructure.Next.EndBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.controlstructure.next.nextblock attribute)": [[130, "pyVHDLParser.Blocks.ControlStructure.Next.NextBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.controlstructure.next.nextconditionblock attribute)": [[130, "pyVHDLParser.Blocks.ControlStructure.Next.NextConditionBlock.StartToken"]], "states (pyvhdlparser.blocks.controlstructure.next.endblock property)": [[130, "pyVHDLParser.Blocks.ControlStructure.Next.EndBlock.States"]], "states (pyvhdlparser.blocks.controlstructure.next.nextblock property)": [[130, "pyVHDLParser.Blocks.ControlStructure.Next.NextBlock.States"]], "states (pyvhdlparser.blocks.controlstructure.next.nextconditionblock property)": [[130, "pyVHDLParser.Blocks.ControlStructure.Next.NextConditionBlock.States"]], "__states__ (pyvhdlparser.blocks.controlstructure.next.endblock attribute)": [[130, "pyVHDLParser.Blocks.ControlStructure.Next.EndBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.controlstructure.next.nextblock attribute)": [[130, "pyVHDLParser.Blocks.ControlStructure.Next.NextBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.controlstructure.next.nextconditionblock attribute)": [[130, "pyVHDLParser.Blocks.ControlStructure.Next.NextConditionBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.controlstructure.next.endblock method)": [[130, "pyVHDLParser.Blocks.ControlStructure.Next.EndBlock.__init__"]], "__init__() (pyvhdlparser.blocks.controlstructure.next.nextblock method)": [[130, "pyVHDLParser.Blocks.ControlStructure.Next.NextBlock.__init__"]], "__init__() (pyvhdlparser.blocks.controlstructure.next.nextconditionblock method)": [[130, "pyVHDLParser.Blocks.ControlStructure.Next.NextConditionBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.controlstructure.next.endblock method)": [[130, "pyVHDLParser.Blocks.ControlStructure.Next.EndBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.controlstructure.next.nextblock method)": [[130, "pyVHDLParser.Blocks.ControlStructure.Next.NextBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.controlstructure.next.nextconditionblock method)": [[130, "pyVHDLParser.Blocks.ControlStructure.Next.NextConditionBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.controlstructure.next.endblock method)": [[130, "pyVHDLParser.Blocks.ControlStructure.Next.EndBlock.__len__"]], "__len__() (pyvhdlparser.blocks.controlstructure.next.nextblock method)": [[130, "pyVHDLParser.Blocks.ControlStructure.Next.NextBlock.__len__"]], "__len__() (pyvhdlparser.blocks.controlstructure.next.nextconditionblock method)": [[130, "pyVHDLParser.Blocks.ControlStructure.Next.NextConditionBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.controlstructure.next.endblock method)": [[130, "pyVHDLParser.Blocks.ControlStructure.Next.EndBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.controlstructure.next.nextblock method)": [[130, "pyVHDLParser.Blocks.ControlStructure.Next.NextBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.controlstructure.next.nextconditionblock method)": [[130, "pyVHDLParser.Blocks.ControlStructure.Next.NextConditionBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.controlstructure.next.endblock method)": [[130, "pyVHDLParser.Blocks.ControlStructure.Next.EndBlock.__str__"]], "__str__() (pyvhdlparser.blocks.controlstructure.next.nextblock method)": [[130, "pyVHDLParser.Blocks.ControlStructure.Next.NextBlock.__str__"]], "__str__() (pyvhdlparser.blocks.controlstructure.next.nextconditionblock method)": [[130, "pyVHDLParser.Blocks.ControlStructure.Next.NextConditionBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.controlstructure.next.endblock attribute)": [[130, "pyVHDLParser.Blocks.ControlStructure.Next.EndBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.controlstructure.next.nextblock attribute)": [[130, "pyVHDLParser.Blocks.ControlStructure.Next.NextBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.controlstructure.next.nextconditionblock attribute)": [[130, "pyVHDLParser.Blocks.ControlStructure.Next.NextConditionBlock._previousBlock"]], "pyvhdlparser.blocks.controlstructure.next": [[130, "module-pyVHDLParser.Blocks.ControlStructure.Next"]], "stateerror() (pyvhdlparser.blocks.controlstructure.next.endblock class method)": [[130, "pyVHDLParser.Blocks.ControlStructure.Next.EndBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.controlstructure.next.nextblock class method)": [[130, "pyVHDLParser.Blocks.ControlStructure.Next.NextBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.controlstructure.next.nextconditionblock class method)": [[130, "pyVHDLParser.Blocks.ControlStructure.Next.NextConditionBlock.stateError"]], "endblock (class in pyvhdlparser.blocks.controlstructure.null)": [[131, "pyVHDLParser.Blocks.ControlStructure.Null.EndBlock"]], "endtoken (pyvhdlparser.blocks.controlstructure.null.endblock attribute)": [[131, "pyVHDLParser.Blocks.ControlStructure.Null.EndBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.controlstructure.null.nullblock attribute)": [[131, "pyVHDLParser.Blocks.ControlStructure.Null.NullBlock.EndToken"]], "length (pyvhdlparser.blocks.controlstructure.null.endblock property)": [[131, "pyVHDLParser.Blocks.ControlStructure.Null.EndBlock.Length"]], "length (pyvhdlparser.blocks.controlstructure.null.nullblock property)": [[131, "pyVHDLParser.Blocks.ControlStructure.Null.NullBlock.Length"]], "multipart (pyvhdlparser.blocks.controlstructure.null.endblock attribute)": [[131, "pyVHDLParser.Blocks.ControlStructure.Null.EndBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.controlstructure.null.nullblock attribute)": [[131, "pyVHDLParser.Blocks.ControlStructure.Null.NullBlock.MultiPart"]], "nextblock (pyvhdlparser.blocks.controlstructure.null.endblock attribute)": [[131, "pyVHDLParser.Blocks.ControlStructure.Null.EndBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.controlstructure.null.nullblock attribute)": [[131, "pyVHDLParser.Blocks.ControlStructure.Null.NullBlock.NextBlock"]], "nullblock (class in pyvhdlparser.blocks.controlstructure.null)": [[131, "pyVHDLParser.Blocks.ControlStructure.Null.NullBlock"]], "starttoken (pyvhdlparser.blocks.controlstructure.null.endblock attribute)": [[131, "pyVHDLParser.Blocks.ControlStructure.Null.EndBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.controlstructure.null.nullblock attribute)": [[131, "pyVHDLParser.Blocks.ControlStructure.Null.NullBlock.StartToken"]], "states (pyvhdlparser.blocks.controlstructure.null.endblock property)": [[131, "pyVHDLParser.Blocks.ControlStructure.Null.EndBlock.States"]], "states (pyvhdlparser.blocks.controlstructure.null.nullblock property)": [[131, "pyVHDLParser.Blocks.ControlStructure.Null.NullBlock.States"]], "__states__ (pyvhdlparser.blocks.controlstructure.null.endblock attribute)": [[131, "pyVHDLParser.Blocks.ControlStructure.Null.EndBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.controlstructure.null.nullblock attribute)": [[131, "pyVHDLParser.Blocks.ControlStructure.Null.NullBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.controlstructure.null.endblock method)": [[131, "pyVHDLParser.Blocks.ControlStructure.Null.EndBlock.__init__"]], "__init__() (pyvhdlparser.blocks.controlstructure.null.nullblock method)": [[131, "pyVHDLParser.Blocks.ControlStructure.Null.NullBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.controlstructure.null.endblock method)": [[131, "pyVHDLParser.Blocks.ControlStructure.Null.EndBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.controlstructure.null.nullblock method)": [[131, "pyVHDLParser.Blocks.ControlStructure.Null.NullBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.controlstructure.null.endblock method)": [[131, "pyVHDLParser.Blocks.ControlStructure.Null.EndBlock.__len__"]], "__len__() (pyvhdlparser.blocks.controlstructure.null.nullblock method)": [[131, "pyVHDLParser.Blocks.ControlStructure.Null.NullBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.controlstructure.null.endblock method)": [[131, "pyVHDLParser.Blocks.ControlStructure.Null.EndBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.controlstructure.null.nullblock method)": [[131, "pyVHDLParser.Blocks.ControlStructure.Null.NullBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.controlstructure.null.endblock method)": [[131, "pyVHDLParser.Blocks.ControlStructure.Null.EndBlock.__str__"]], "__str__() (pyvhdlparser.blocks.controlstructure.null.nullblock method)": [[131, "pyVHDLParser.Blocks.ControlStructure.Null.NullBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.controlstructure.null.endblock attribute)": [[131, "pyVHDLParser.Blocks.ControlStructure.Null.EndBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.controlstructure.null.nullblock attribute)": [[131, "pyVHDLParser.Blocks.ControlStructure.Null.NullBlock._previousBlock"]], "pyvhdlparser.blocks.controlstructure.null": [[131, "module-pyVHDLParser.Blocks.ControlStructure.Null"]], "stateerror() (pyvhdlparser.blocks.controlstructure.null.endblock class method)": [[131, "pyVHDLParser.Blocks.ControlStructure.Null.EndBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.controlstructure.null.nullblock class method)": [[131, "pyVHDLParser.Blocks.ControlStructure.Null.NullBlock.stateError"]], "end_block (pyvhdlparser.blocks.controlstructure.return.returnexpressionblock attribute)": [[132, "pyVHDLParser.Blocks.ControlStructure.Return.ReturnExpressionBlock.END_BLOCK"]], "endblock (class in pyvhdlparser.blocks.controlstructure.return)": [[132, "pyVHDLParser.Blocks.ControlStructure.Return.EndBlock"]], "endtoken (pyvhdlparser.blocks.controlstructure.return.endblock attribute)": [[132, "pyVHDLParser.Blocks.ControlStructure.Return.EndBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.controlstructure.return.returnblock attribute)": [[132, "pyVHDLParser.Blocks.ControlStructure.Return.ReturnBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.controlstructure.return.returnexpressionblock attribute)": [[132, "pyVHDLParser.Blocks.ControlStructure.Return.ReturnExpressionBlock.EndToken"]], "length (pyvhdlparser.blocks.controlstructure.return.endblock property)": [[132, "pyVHDLParser.Blocks.ControlStructure.Return.EndBlock.Length"]], "length (pyvhdlparser.blocks.controlstructure.return.returnblock property)": [[132, "pyVHDLParser.Blocks.ControlStructure.Return.ReturnBlock.Length"]], "length (pyvhdlparser.blocks.controlstructure.return.returnexpressionblock property)": [[132, "pyVHDLParser.Blocks.ControlStructure.Return.ReturnExpressionBlock.Length"]], "multipart (pyvhdlparser.blocks.controlstructure.return.endblock attribute)": [[132, "pyVHDLParser.Blocks.ControlStructure.Return.EndBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.controlstructure.return.returnblock attribute)": [[132, "pyVHDLParser.Blocks.ControlStructure.Return.ReturnBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.controlstructure.return.returnexpressionblock attribute)": [[132, "pyVHDLParser.Blocks.ControlStructure.Return.ReturnExpressionBlock.MultiPart"]], "nextblock (pyvhdlparser.blocks.controlstructure.return.endblock attribute)": [[132, "pyVHDLParser.Blocks.ControlStructure.Return.EndBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.controlstructure.return.returnblock attribute)": [[132, "pyVHDLParser.Blocks.ControlStructure.Return.ReturnBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.controlstructure.return.returnexpressionblock attribute)": [[132, "pyVHDLParser.Blocks.ControlStructure.Return.ReturnExpressionBlock.NextBlock"]], "returnblock (class in pyvhdlparser.blocks.controlstructure.return)": [[132, "pyVHDLParser.Blocks.ControlStructure.Return.ReturnBlock"]], "returnexpressionblock (class in pyvhdlparser.blocks.controlstructure.return)": [[132, "pyVHDLParser.Blocks.ControlStructure.Return.ReturnExpressionBlock"]], "starttoken (pyvhdlparser.blocks.controlstructure.return.endblock attribute)": [[132, "pyVHDLParser.Blocks.ControlStructure.Return.EndBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.controlstructure.return.returnblock attribute)": [[132, "pyVHDLParser.Blocks.ControlStructure.Return.ReturnBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.controlstructure.return.returnexpressionblock attribute)": [[132, "pyVHDLParser.Blocks.ControlStructure.Return.ReturnExpressionBlock.StartToken"]], "states (pyvhdlparser.blocks.controlstructure.return.endblock property)": [[132, "pyVHDLParser.Blocks.ControlStructure.Return.EndBlock.States"]], "states (pyvhdlparser.blocks.controlstructure.return.returnblock property)": [[132, "pyVHDLParser.Blocks.ControlStructure.Return.ReturnBlock.States"]], "states (pyvhdlparser.blocks.controlstructure.return.returnexpressionblock property)": [[132, "pyVHDLParser.Blocks.ControlStructure.Return.ReturnExpressionBlock.States"]], "__states__ (pyvhdlparser.blocks.controlstructure.return.endblock attribute)": [[132, "pyVHDLParser.Blocks.ControlStructure.Return.EndBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.controlstructure.return.returnblock attribute)": [[132, "pyVHDLParser.Blocks.ControlStructure.Return.ReturnBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.controlstructure.return.returnexpressionblock attribute)": [[132, "pyVHDLParser.Blocks.ControlStructure.Return.ReturnExpressionBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.controlstructure.return.endblock method)": [[132, "pyVHDLParser.Blocks.ControlStructure.Return.EndBlock.__init__"]], "__init__() (pyvhdlparser.blocks.controlstructure.return.returnblock method)": [[132, "pyVHDLParser.Blocks.ControlStructure.Return.ReturnBlock.__init__"]], "__init__() (pyvhdlparser.blocks.controlstructure.return.returnexpressionblock method)": [[132, "pyVHDLParser.Blocks.ControlStructure.Return.ReturnExpressionBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.controlstructure.return.endblock method)": [[132, "pyVHDLParser.Blocks.ControlStructure.Return.EndBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.controlstructure.return.returnblock method)": [[132, "pyVHDLParser.Blocks.ControlStructure.Return.ReturnBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.controlstructure.return.returnexpressionblock method)": [[132, "pyVHDLParser.Blocks.ControlStructure.Return.ReturnExpressionBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.controlstructure.return.endblock method)": [[132, "pyVHDLParser.Blocks.ControlStructure.Return.EndBlock.__len__"]], "__len__() (pyvhdlparser.blocks.controlstructure.return.returnblock method)": [[132, "pyVHDLParser.Blocks.ControlStructure.Return.ReturnBlock.__len__"]], "__len__() (pyvhdlparser.blocks.controlstructure.return.returnexpressionblock method)": [[132, "pyVHDLParser.Blocks.ControlStructure.Return.ReturnExpressionBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.controlstructure.return.endblock method)": [[132, "pyVHDLParser.Blocks.ControlStructure.Return.EndBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.controlstructure.return.returnblock method)": [[132, "pyVHDLParser.Blocks.ControlStructure.Return.ReturnBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.controlstructure.return.returnexpressionblock method)": [[132, "pyVHDLParser.Blocks.ControlStructure.Return.ReturnExpressionBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.controlstructure.return.endblock method)": [[132, "pyVHDLParser.Blocks.ControlStructure.Return.EndBlock.__str__"]], "__str__() (pyvhdlparser.blocks.controlstructure.return.returnblock method)": [[132, "pyVHDLParser.Blocks.ControlStructure.Return.ReturnBlock.__str__"]], "__str__() (pyvhdlparser.blocks.controlstructure.return.returnexpressionblock method)": [[132, "pyVHDLParser.Blocks.ControlStructure.Return.ReturnExpressionBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.controlstructure.return.endblock attribute)": [[132, "pyVHDLParser.Blocks.ControlStructure.Return.EndBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.controlstructure.return.returnblock attribute)": [[132, "pyVHDLParser.Blocks.ControlStructure.Return.ReturnBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.controlstructure.return.returnexpressionblock attribute)": [[132, "pyVHDLParser.Blocks.ControlStructure.Return.ReturnExpressionBlock._previousBlock"]], "pyvhdlparser.blocks.controlstructure.return": [[132, "module-pyVHDLParser.Blocks.ControlStructure.Return"]], "stateerror() (pyvhdlparser.blocks.controlstructure.return.endblock class method)": [[132, "pyVHDLParser.Blocks.ControlStructure.Return.EndBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.controlstructure.return.returnblock class method)": [[132, "pyVHDLParser.Blocks.ControlStructure.Return.ReturnBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.controlstructure.return.returnexpressionblock class method)": [[132, "pyVHDLParser.Blocks.ControlStructure.Return.ReturnExpressionBlock.stateError"]], "conditionblock (class in pyvhdlparser.blocks.controlstructure.whileloop)": [[133, "pyVHDLParser.Blocks.ControlStructure.WhileLoop.ConditionBlock"]], "endblock (class in pyvhdlparser.blocks.controlstructure.whileloop)": [[133, "pyVHDLParser.Blocks.ControlStructure.WhileLoop.EndBlock"]], "endtoken (pyvhdlparser.blocks.controlstructure.whileloop.conditionblock attribute)": [[133, "pyVHDLParser.Blocks.ControlStructure.WhileLoop.ConditionBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.controlstructure.whileloop.endblock attribute)": [[133, "pyVHDLParser.Blocks.ControlStructure.WhileLoop.EndBlock.EndToken"]], "keyword (pyvhdlparser.blocks.controlstructure.whileloop.endblock attribute)": [[133, "pyVHDLParser.Blocks.ControlStructure.WhileLoop.EndBlock.KEYWORD"]], "length (pyvhdlparser.blocks.controlstructure.whileloop.conditionblock property)": [[133, "pyVHDLParser.Blocks.ControlStructure.WhileLoop.ConditionBlock.Length"]], "length (pyvhdlparser.blocks.controlstructure.whileloop.endblock property)": [[133, "pyVHDLParser.Blocks.ControlStructure.WhileLoop.EndBlock.Length"]], "multipart (pyvhdlparser.blocks.controlstructure.whileloop.conditionblock attribute)": [[133, "pyVHDLParser.Blocks.ControlStructure.WhileLoop.ConditionBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.controlstructure.whileloop.endblock attribute)": [[133, "pyVHDLParser.Blocks.ControlStructure.WhileLoop.EndBlock.MultiPart"]], "nextblock (pyvhdlparser.blocks.controlstructure.whileloop.conditionblock attribute)": [[133, "pyVHDLParser.Blocks.ControlStructure.WhileLoop.ConditionBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.controlstructure.whileloop.endblock attribute)": [[133, "pyVHDLParser.Blocks.ControlStructure.WhileLoop.EndBlock.NextBlock"]], "starttoken (pyvhdlparser.blocks.controlstructure.whileloop.conditionblock attribute)": [[133, "pyVHDLParser.Blocks.ControlStructure.WhileLoop.ConditionBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.controlstructure.whileloop.endblock attribute)": [[133, "pyVHDLParser.Blocks.ControlStructure.WhileLoop.EndBlock.StartToken"]], "states (pyvhdlparser.blocks.controlstructure.whileloop.conditionblock property)": [[133, "pyVHDLParser.Blocks.ControlStructure.WhileLoop.ConditionBlock.States"]], "states (pyvhdlparser.blocks.controlstructure.whileloop.endblock property)": [[133, "pyVHDLParser.Blocks.ControlStructure.WhileLoop.EndBlock.States"]], "__states__ (pyvhdlparser.blocks.controlstructure.whileloop.conditionblock attribute)": [[133, "pyVHDLParser.Blocks.ControlStructure.WhileLoop.ConditionBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.controlstructure.whileloop.endblock attribute)": [[133, "pyVHDLParser.Blocks.ControlStructure.WhileLoop.EndBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.controlstructure.whileloop.conditionblock method)": [[133, "pyVHDLParser.Blocks.ControlStructure.WhileLoop.ConditionBlock.__init__"]], "__init__() (pyvhdlparser.blocks.controlstructure.whileloop.endblock method)": [[133, "pyVHDLParser.Blocks.ControlStructure.WhileLoop.EndBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.controlstructure.whileloop.conditionblock method)": [[133, "pyVHDLParser.Blocks.ControlStructure.WhileLoop.ConditionBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.controlstructure.whileloop.endblock method)": [[133, "pyVHDLParser.Blocks.ControlStructure.WhileLoop.EndBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.controlstructure.whileloop.conditionblock method)": [[133, "pyVHDLParser.Blocks.ControlStructure.WhileLoop.ConditionBlock.__len__"]], "__len__() (pyvhdlparser.blocks.controlstructure.whileloop.endblock method)": [[133, "pyVHDLParser.Blocks.ControlStructure.WhileLoop.EndBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.controlstructure.whileloop.conditionblock method)": [[133, "pyVHDLParser.Blocks.ControlStructure.WhileLoop.ConditionBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.controlstructure.whileloop.endblock method)": [[133, "pyVHDLParser.Blocks.ControlStructure.WhileLoop.EndBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.controlstructure.whileloop.conditionblock method)": [[133, "pyVHDLParser.Blocks.ControlStructure.WhileLoop.ConditionBlock.__str__"]], "__str__() (pyvhdlparser.blocks.controlstructure.whileloop.endblock method)": [[133, "pyVHDLParser.Blocks.ControlStructure.WhileLoop.EndBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.controlstructure.whileloop.conditionblock attribute)": [[133, "pyVHDLParser.Blocks.ControlStructure.WhileLoop.ConditionBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.controlstructure.whileloop.endblock attribute)": [[133, "pyVHDLParser.Blocks.ControlStructure.WhileLoop.EndBlock._previousBlock"]], "pyvhdlparser.blocks.controlstructure.whileloop": [[133, "module-pyVHDLParser.Blocks.ControlStructure.WhileLoop"]], "stateerror() (pyvhdlparser.blocks.controlstructure.whileloop.conditionblock class method)": [[133, "pyVHDLParser.Blocks.ControlStructure.WhileLoop.ConditionBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.controlstructure.whileloop.endblock class method)": [[133, "pyVHDLParser.Blocks.ControlStructure.WhileLoop.EndBlock.stateError"]], "pyvhdlparser.blocks.exception": [[134, "module-pyVHDLParser.Blocks.Exception"]], "endtoken (pyvhdlparser.blocks.expression.expressionblock attribute)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.expression.expressionblockendedbycharorclosingroundbracket attribute)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByCharORClosingRoundBracket.EndToken"]], "endtoken (pyvhdlparser.blocks.expression.expressionblockendedbykeywordorclosingroundbracket attribute)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByKeywordORClosingRoundBracket.EndToken"]], "endtoken (pyvhdlparser.blocks.expression.expressionblockendedbykeywordortoordownto attribute)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByKeywordOrToOrDownto.EndToken"]], "endtoken (pyvhdlparser.blocks.expression.expressionblockendedbysemicolon attribute)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedBySemicolon.EndToken"]], "endtoken (pyvhdlparser.blocks.expression.expressionblockendedbytoordownto attribute)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByToOrDownto.EndToken"]], "expressionblock (class in pyvhdlparser.blocks.expression)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlock"]], "expressionblockendedbycharorclosingroundbracket (class in pyvhdlparser.blocks.expression)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByCharORClosingRoundBracket"]], "expressionblockendedbykeywordorclosingroundbracket (class in pyvhdlparser.blocks.expression)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByKeywordORClosingRoundBracket"]], "expressionblockendedbykeywordortoordownto (class in pyvhdlparser.blocks.expression)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByKeywordOrToOrDownto"]], "expressionblockendedbysemicolon (class in pyvhdlparser.blocks.expression)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedBySemicolon"]], "expressionblockendedbytoordownto (class in pyvhdlparser.blocks.expression)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByToOrDownto"]], "length (pyvhdlparser.blocks.expression.expressionblock property)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlock.Length"]], "length (pyvhdlparser.blocks.expression.expressionblockendedbycharorclosingroundbracket property)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByCharORClosingRoundBracket.Length"]], "length (pyvhdlparser.blocks.expression.expressionblockendedbykeywordorclosingroundbracket property)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByKeywordORClosingRoundBracket.Length"]], "length (pyvhdlparser.blocks.expression.expressionblockendedbykeywordortoordownto property)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByKeywordOrToOrDownto.Length"]], "length (pyvhdlparser.blocks.expression.expressionblockendedbysemicolon property)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedBySemicolon.Length"]], "length (pyvhdlparser.blocks.expression.expressionblockendedbytoordownto property)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByToOrDownto.Length"]], "multipart (pyvhdlparser.blocks.expression.expressionblock attribute)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.expression.expressionblockendedbycharorclosingroundbracket attribute)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByCharORClosingRoundBracket.MultiPart"]], "multipart (pyvhdlparser.blocks.expression.expressionblockendedbykeywordorclosingroundbracket attribute)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByKeywordORClosingRoundBracket.MultiPart"]], "multipart (pyvhdlparser.blocks.expression.expressionblockendedbykeywordortoordownto attribute)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByKeywordOrToOrDownto.MultiPart"]], "multipart (pyvhdlparser.blocks.expression.expressionblockendedbysemicolon attribute)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedBySemicolon.MultiPart"]], "multipart (pyvhdlparser.blocks.expression.expressionblockendedbytoordownto attribute)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByToOrDownto.MultiPart"]], "nextblock (pyvhdlparser.blocks.expression.expressionblock attribute)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.expression.expressionblockendedbycharorclosingroundbracket attribute)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByCharORClosingRoundBracket.NextBlock"]], "nextblock (pyvhdlparser.blocks.expression.expressionblockendedbykeywordorclosingroundbracket attribute)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByKeywordORClosingRoundBracket.NextBlock"]], "nextblock (pyvhdlparser.blocks.expression.expressionblockendedbykeywordortoordownto attribute)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByKeywordOrToOrDownto.NextBlock"]], "nextblock (pyvhdlparser.blocks.expression.expressionblockendedbysemicolon attribute)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedBySemicolon.NextBlock"]], "nextblock (pyvhdlparser.blocks.expression.expressionblockendedbytoordownto attribute)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByToOrDownto.NextBlock"]], "starttoken (pyvhdlparser.blocks.expression.expressionblock attribute)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.expression.expressionblockendedbycharorclosingroundbracket attribute)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByCharORClosingRoundBracket.StartToken"]], "starttoken (pyvhdlparser.blocks.expression.expressionblockendedbykeywordorclosingroundbracket attribute)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByKeywordORClosingRoundBracket.StartToken"]], "starttoken (pyvhdlparser.blocks.expression.expressionblockendedbykeywordortoordownto attribute)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByKeywordOrToOrDownto.StartToken"]], "starttoken (pyvhdlparser.blocks.expression.expressionblockendedbysemicolon attribute)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedBySemicolon.StartToken"]], "starttoken (pyvhdlparser.blocks.expression.expressionblockendedbytoordownto attribute)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByToOrDownto.StartToken"]], "states (pyvhdlparser.blocks.expression.expressionblock property)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlock.States"]], "states (pyvhdlparser.blocks.expression.expressionblockendedbycharorclosingroundbracket property)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByCharORClosingRoundBracket.States"]], "states (pyvhdlparser.blocks.expression.expressionblockendedbykeywordorclosingroundbracket property)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByKeywordORClosingRoundBracket.States"]], "states (pyvhdlparser.blocks.expression.expressionblockendedbykeywordortoordownto property)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByKeywordOrToOrDownto.States"]], "states (pyvhdlparser.blocks.expression.expressionblockendedbysemicolon property)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedBySemicolon.States"]], "states (pyvhdlparser.blocks.expression.expressionblockendedbytoordownto property)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByToOrDownto.States"]], "__states__ (pyvhdlparser.blocks.expression.expressionblock attribute)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.expression.expressionblockendedbycharorclosingroundbracket attribute)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByCharORClosingRoundBracket.__STATES__"]], "__states__ (pyvhdlparser.blocks.expression.expressionblockendedbykeywordorclosingroundbracket attribute)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByKeywordORClosingRoundBracket.__STATES__"]], "__states__ (pyvhdlparser.blocks.expression.expressionblockendedbykeywordortoordownto attribute)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByKeywordOrToOrDownto.__STATES__"]], "__states__ (pyvhdlparser.blocks.expression.expressionblockendedbysemicolon attribute)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedBySemicolon.__STATES__"]], "__states__ (pyvhdlparser.blocks.expression.expressionblockendedbytoordownto attribute)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByToOrDownto.__STATES__"]], "__init__() (pyvhdlparser.blocks.expression.expressionblock method)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlock.__init__"]], "__init__() (pyvhdlparser.blocks.expression.expressionblockendedbycharorclosingroundbracket method)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByCharORClosingRoundBracket.__init__"]], "__init__() (pyvhdlparser.blocks.expression.expressionblockendedbykeywordorclosingroundbracket method)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByKeywordORClosingRoundBracket.__init__"]], "__init__() (pyvhdlparser.blocks.expression.expressionblockendedbykeywordortoordownto method)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByKeywordOrToOrDownto.__init__"]], "__init__() (pyvhdlparser.blocks.expression.expressionblockendedbysemicolon method)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedBySemicolon.__init__"]], "__init__() (pyvhdlparser.blocks.expression.expressionblockendedbytoordownto method)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByToOrDownto.__init__"]], "__iter__() (pyvhdlparser.blocks.expression.expressionblock method)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.expression.expressionblockendedbycharorclosingroundbracket method)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByCharORClosingRoundBracket.__iter__"]], "__iter__() (pyvhdlparser.blocks.expression.expressionblockendedbykeywordorclosingroundbracket method)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByKeywordORClosingRoundBracket.__iter__"]], "__iter__() (pyvhdlparser.blocks.expression.expressionblockendedbykeywordortoordownto method)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByKeywordOrToOrDownto.__iter__"]], "__iter__() (pyvhdlparser.blocks.expression.expressionblockendedbysemicolon method)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedBySemicolon.__iter__"]], "__iter__() (pyvhdlparser.blocks.expression.expressionblockendedbytoordownto method)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByToOrDownto.__iter__"]], "__len__() (pyvhdlparser.blocks.expression.expressionblock method)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlock.__len__"]], "__len__() (pyvhdlparser.blocks.expression.expressionblockendedbycharorclosingroundbracket method)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByCharORClosingRoundBracket.__len__"]], "__len__() (pyvhdlparser.blocks.expression.expressionblockendedbykeywordorclosingroundbracket method)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByKeywordORClosingRoundBracket.__len__"]], "__len__() (pyvhdlparser.blocks.expression.expressionblockendedbykeywordortoordownto method)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByKeywordOrToOrDownto.__len__"]], "__len__() (pyvhdlparser.blocks.expression.expressionblockendedbysemicolon method)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedBySemicolon.__len__"]], "__len__() (pyvhdlparser.blocks.expression.expressionblockendedbytoordownto method)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByToOrDownto.__len__"]], "__repr__() (pyvhdlparser.blocks.expression.expressionblock method)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.expression.expressionblockendedbycharorclosingroundbracket method)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByCharORClosingRoundBracket.__repr__"]], "__repr__() (pyvhdlparser.blocks.expression.expressionblockendedbykeywordorclosingroundbracket method)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByKeywordORClosingRoundBracket.__repr__"]], "__repr__() (pyvhdlparser.blocks.expression.expressionblockendedbykeywordortoordownto method)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByKeywordOrToOrDownto.__repr__"]], "__repr__() (pyvhdlparser.blocks.expression.expressionblockendedbysemicolon method)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedBySemicolon.__repr__"]], "__repr__() (pyvhdlparser.blocks.expression.expressionblockendedbytoordownto method)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByToOrDownto.__repr__"]], "__str__() (pyvhdlparser.blocks.expression.expressionblock method)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlock.__str__"]], "__str__() (pyvhdlparser.blocks.expression.expressionblockendedbycharorclosingroundbracket method)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByCharORClosingRoundBracket.__str__"]], "__str__() (pyvhdlparser.blocks.expression.expressionblockendedbykeywordorclosingroundbracket method)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByKeywordORClosingRoundBracket.__str__"]], "__str__() (pyvhdlparser.blocks.expression.expressionblockendedbykeywordortoordownto method)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByKeywordOrToOrDownto.__str__"]], "__str__() (pyvhdlparser.blocks.expression.expressionblockendedbysemicolon method)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedBySemicolon.__str__"]], "__str__() (pyvhdlparser.blocks.expression.expressionblockendedbytoordownto method)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByToOrDownto.__str__"]], "_previousblock (pyvhdlparser.blocks.expression.expressionblock attribute)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.expression.expressionblockendedbycharorclosingroundbracket attribute)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByCharORClosingRoundBracket._previousBlock"]], "_previousblock (pyvhdlparser.blocks.expression.expressionblockendedbykeywordorclosingroundbracket attribute)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByKeywordORClosingRoundBracket._previousBlock"]], "_previousblock (pyvhdlparser.blocks.expression.expressionblockendedbykeywordortoordownto attribute)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByKeywordOrToOrDownto._previousBlock"]], "_previousblock (pyvhdlparser.blocks.expression.expressionblockendedbysemicolon attribute)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedBySemicolon._previousBlock"]], "_previousblock (pyvhdlparser.blocks.expression.expressionblockendedbytoordownto attribute)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByToOrDownto._previousBlock"]], "pyvhdlparser.blocks.expression": [[135, "module-pyVHDLParser.Blocks.Expression"]], "stateerror() (pyvhdlparser.blocks.expression.expressionblock class method)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.expression.expressionblockendedbycharorclosingroundbracket class method)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByCharORClosingRoundBracket.stateError"]], "stateerror() (pyvhdlparser.blocks.expression.expressionblockendedbykeywordorclosingroundbracket class method)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByKeywordORClosingRoundBracket.stateError"]], "stateerror() (pyvhdlparser.blocks.expression.expressionblockendedbykeywordortoordownto class method)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByKeywordOrToOrDownto.stateError"]], "stateerror() (pyvhdlparser.blocks.expression.expressionblockendedbysemicolon class method)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedBySemicolon.stateError"]], "stateerror() (pyvhdlparser.blocks.expression.expressionblockendedbytoordownto class method)": [[135, "pyVHDLParser.Blocks.Expression.ExpressionBlockEndedByToOrDownto.stateError"]], "endgenerateblock (class in pyvhdlparser.blocks.generate)": [[136, "pyVHDLParser.Blocks.Generate.EndGenerateBlock"]], "endtoken (pyvhdlparser.blocks.generate.endgenerateblock attribute)": [[136, "pyVHDLParser.Blocks.Generate.EndGenerateBlock.EndToken"]], "keyword (pyvhdlparser.blocks.generate.endgenerateblock attribute)": [[136, "pyVHDLParser.Blocks.Generate.EndGenerateBlock.KEYWORD"]], "length (pyvhdlparser.blocks.generate.endgenerateblock property)": [[136, "pyVHDLParser.Blocks.Generate.EndGenerateBlock.Length"]], "multipart (pyvhdlparser.blocks.generate.endgenerateblock attribute)": [[136, "pyVHDLParser.Blocks.Generate.EndGenerateBlock.MultiPart"]], "nextblock (pyvhdlparser.blocks.generate.endgenerateblock attribute)": [[136, "pyVHDLParser.Blocks.Generate.EndGenerateBlock.NextBlock"]], "starttoken (pyvhdlparser.blocks.generate.endgenerateblock attribute)": [[136, "pyVHDLParser.Blocks.Generate.EndGenerateBlock.StartToken"]], "states (pyvhdlparser.blocks.generate.endgenerateblock property)": [[136, "pyVHDLParser.Blocks.Generate.EndGenerateBlock.States"]], "__states__ (pyvhdlparser.blocks.generate.endgenerateblock attribute)": [[136, "pyVHDLParser.Blocks.Generate.EndGenerateBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.generate.endgenerateblock method)": [[136, "pyVHDLParser.Blocks.Generate.EndGenerateBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.generate.endgenerateblock method)": [[136, "pyVHDLParser.Blocks.Generate.EndGenerateBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.generate.endgenerateblock method)": [[136, "pyVHDLParser.Blocks.Generate.EndGenerateBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.generate.endgenerateblock method)": [[136, "pyVHDLParser.Blocks.Generate.EndGenerateBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.generate.endgenerateblock method)": [[136, "pyVHDLParser.Blocks.Generate.EndGenerateBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.generate.endgenerateblock attribute)": [[136, "pyVHDLParser.Blocks.Generate.EndGenerateBlock._previousBlock"]], "pyvhdlparser.blocks.generate": [[136, "module-pyVHDLParser.Blocks.Generate"]], "stateerror() (pyvhdlparser.blocks.generate.endgenerateblock class method)": [[136, "pyVHDLParser.Blocks.Generate.EndGenerateBlock.stateError"]], "beginblock (class in pyvhdlparser.blocks.generate.casegenerate)": [[137, "pyVHDLParser.Blocks.Generate.CaseGenerate.BeginBlock"]], "caseblock (class in pyvhdlparser.blocks.generate.casegenerate)": [[137, "pyVHDLParser.Blocks.Generate.CaseGenerate.CaseBlock"]], "endgenerateblock (class in pyvhdlparser.blocks.generate.casegenerate)": [[137, "pyVHDLParser.Blocks.Generate.CaseGenerate.EndGenerateBlock"]], "endtoken (pyvhdlparser.blocks.generate.casegenerate.beginblock attribute)": [[137, "pyVHDLParser.Blocks.Generate.CaseGenerate.BeginBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.generate.casegenerate.caseblock attribute)": [[137, "pyVHDLParser.Blocks.Generate.CaseGenerate.CaseBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.generate.casegenerate.endgenerateblock attribute)": [[137, "pyVHDLParser.Blocks.Generate.CaseGenerate.EndGenerateBlock.EndToken"]], "keyword (pyvhdlparser.blocks.generate.casegenerate.endgenerateblock attribute)": [[137, "pyVHDLParser.Blocks.Generate.CaseGenerate.EndGenerateBlock.KEYWORD"]], "length (pyvhdlparser.blocks.generate.casegenerate.beginblock property)": [[137, "pyVHDLParser.Blocks.Generate.CaseGenerate.BeginBlock.Length"]], "length (pyvhdlparser.blocks.generate.casegenerate.caseblock property)": [[137, "pyVHDLParser.Blocks.Generate.CaseGenerate.CaseBlock.Length"]], "length (pyvhdlparser.blocks.generate.casegenerate.endgenerateblock property)": [[137, "pyVHDLParser.Blocks.Generate.CaseGenerate.EndGenerateBlock.Length"]], "multipart (pyvhdlparser.blocks.generate.casegenerate.beginblock attribute)": [[137, "pyVHDLParser.Blocks.Generate.CaseGenerate.BeginBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.generate.casegenerate.caseblock attribute)": [[137, "pyVHDLParser.Blocks.Generate.CaseGenerate.CaseBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.generate.casegenerate.endgenerateblock attribute)": [[137, "pyVHDLParser.Blocks.Generate.CaseGenerate.EndGenerateBlock.MultiPart"]], "nextblock (pyvhdlparser.blocks.generate.casegenerate.beginblock attribute)": [[137, "pyVHDLParser.Blocks.Generate.CaseGenerate.BeginBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.generate.casegenerate.caseblock attribute)": [[137, "pyVHDLParser.Blocks.Generate.CaseGenerate.CaseBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.generate.casegenerate.endgenerateblock attribute)": [[137, "pyVHDLParser.Blocks.Generate.CaseGenerate.EndGenerateBlock.NextBlock"]], "starttoken (pyvhdlparser.blocks.generate.casegenerate.beginblock attribute)": [[137, "pyVHDLParser.Blocks.Generate.CaseGenerate.BeginBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.generate.casegenerate.caseblock attribute)": [[137, "pyVHDLParser.Blocks.Generate.CaseGenerate.CaseBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.generate.casegenerate.endgenerateblock attribute)": [[137, "pyVHDLParser.Blocks.Generate.CaseGenerate.EndGenerateBlock.StartToken"]], "states (pyvhdlparser.blocks.generate.casegenerate.beginblock property)": [[137, "pyVHDLParser.Blocks.Generate.CaseGenerate.BeginBlock.States"]], "states (pyvhdlparser.blocks.generate.casegenerate.caseblock property)": [[137, "pyVHDLParser.Blocks.Generate.CaseGenerate.CaseBlock.States"]], "states (pyvhdlparser.blocks.generate.casegenerate.endgenerateblock property)": [[137, "pyVHDLParser.Blocks.Generate.CaseGenerate.EndGenerateBlock.States"]], "__states__ (pyvhdlparser.blocks.generate.casegenerate.beginblock attribute)": [[137, "pyVHDLParser.Blocks.Generate.CaseGenerate.BeginBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.generate.casegenerate.caseblock attribute)": [[137, "pyVHDLParser.Blocks.Generate.CaseGenerate.CaseBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.generate.casegenerate.endgenerateblock attribute)": [[137, "pyVHDLParser.Blocks.Generate.CaseGenerate.EndGenerateBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.generate.casegenerate.beginblock method)": [[137, "pyVHDLParser.Blocks.Generate.CaseGenerate.BeginBlock.__init__"]], "__init__() (pyvhdlparser.blocks.generate.casegenerate.caseblock method)": [[137, "pyVHDLParser.Blocks.Generate.CaseGenerate.CaseBlock.__init__"]], "__init__() (pyvhdlparser.blocks.generate.casegenerate.endgenerateblock method)": [[137, "pyVHDLParser.Blocks.Generate.CaseGenerate.EndGenerateBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.generate.casegenerate.beginblock method)": [[137, "pyVHDLParser.Blocks.Generate.CaseGenerate.BeginBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.generate.casegenerate.caseblock method)": [[137, "pyVHDLParser.Blocks.Generate.CaseGenerate.CaseBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.generate.casegenerate.endgenerateblock method)": [[137, "pyVHDLParser.Blocks.Generate.CaseGenerate.EndGenerateBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.generate.casegenerate.beginblock method)": [[137, "pyVHDLParser.Blocks.Generate.CaseGenerate.BeginBlock.__len__"]], "__len__() (pyvhdlparser.blocks.generate.casegenerate.caseblock method)": [[137, "pyVHDLParser.Blocks.Generate.CaseGenerate.CaseBlock.__len__"]], "__len__() (pyvhdlparser.blocks.generate.casegenerate.endgenerateblock method)": [[137, "pyVHDLParser.Blocks.Generate.CaseGenerate.EndGenerateBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.generate.casegenerate.beginblock method)": [[137, "pyVHDLParser.Blocks.Generate.CaseGenerate.BeginBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.generate.casegenerate.caseblock method)": [[137, "pyVHDLParser.Blocks.Generate.CaseGenerate.CaseBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.generate.casegenerate.endgenerateblock method)": [[137, "pyVHDLParser.Blocks.Generate.CaseGenerate.EndGenerateBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.generate.casegenerate.beginblock method)": [[137, "pyVHDLParser.Blocks.Generate.CaseGenerate.BeginBlock.__str__"]], "__str__() (pyvhdlparser.blocks.generate.casegenerate.caseblock method)": [[137, "pyVHDLParser.Blocks.Generate.CaseGenerate.CaseBlock.__str__"]], "__str__() (pyvhdlparser.blocks.generate.casegenerate.endgenerateblock method)": [[137, "pyVHDLParser.Blocks.Generate.CaseGenerate.EndGenerateBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.generate.casegenerate.beginblock attribute)": [[137, "pyVHDLParser.Blocks.Generate.CaseGenerate.BeginBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.generate.casegenerate.caseblock attribute)": [[137, "pyVHDLParser.Blocks.Generate.CaseGenerate.CaseBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.generate.casegenerate.endgenerateblock attribute)": [[137, "pyVHDLParser.Blocks.Generate.CaseGenerate.EndGenerateBlock._previousBlock"]], "pyvhdlparser.blocks.generate.casegenerate": [[137, "module-pyVHDLParser.Blocks.Generate.CaseGenerate"]], "stateerror() (pyvhdlparser.blocks.generate.casegenerate.beginblock class method)": [[137, "pyVHDLParser.Blocks.Generate.CaseGenerate.BeginBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.generate.casegenerate.caseblock class method)": [[137, "pyVHDLParser.Blocks.Generate.CaseGenerate.CaseBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.generate.casegenerate.endgenerateblock class method)": [[137, "pyVHDLParser.Blocks.Generate.CaseGenerate.EndGenerateBlock.stateError"]], "beginblock (class in pyvhdlparser.blocks.generate.forgenerate)": [[138, "pyVHDLParser.Blocks.Generate.ForGenerate.BeginBlock"]], "endgenerateblock (class in pyvhdlparser.blocks.generate.forgenerate)": [[138, "pyVHDLParser.Blocks.Generate.ForGenerate.EndGenerateBlock"]], "endtoken (pyvhdlparser.blocks.generate.forgenerate.beginblock attribute)": [[138, "pyVHDLParser.Blocks.Generate.ForGenerate.BeginBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.generate.forgenerate.endgenerateblock attribute)": [[138, "pyVHDLParser.Blocks.Generate.ForGenerate.EndGenerateBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.generate.forgenerate.rangeblock attribute)": [[138, "pyVHDLParser.Blocks.Generate.ForGenerate.RangeBlock.EndToken"]], "keyword (pyvhdlparser.blocks.generate.forgenerate.endgenerateblock attribute)": [[138, "pyVHDLParser.Blocks.Generate.ForGenerate.EndGenerateBlock.KEYWORD"]], "length (pyvhdlparser.blocks.generate.forgenerate.beginblock property)": [[138, "pyVHDLParser.Blocks.Generate.ForGenerate.BeginBlock.Length"]], "length (pyvhdlparser.blocks.generate.forgenerate.endgenerateblock property)": [[138, "pyVHDLParser.Blocks.Generate.ForGenerate.EndGenerateBlock.Length"]], "length (pyvhdlparser.blocks.generate.forgenerate.rangeblock property)": [[138, "pyVHDLParser.Blocks.Generate.ForGenerate.RangeBlock.Length"]], "multipart (pyvhdlparser.blocks.generate.forgenerate.beginblock attribute)": [[138, "pyVHDLParser.Blocks.Generate.ForGenerate.BeginBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.generate.forgenerate.endgenerateblock attribute)": [[138, "pyVHDLParser.Blocks.Generate.ForGenerate.EndGenerateBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.generate.forgenerate.rangeblock attribute)": [[138, "pyVHDLParser.Blocks.Generate.ForGenerate.RangeBlock.MultiPart"]], "nextblock (pyvhdlparser.blocks.generate.forgenerate.beginblock attribute)": [[138, "pyVHDLParser.Blocks.Generate.ForGenerate.BeginBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.generate.forgenerate.endgenerateblock attribute)": [[138, "pyVHDLParser.Blocks.Generate.ForGenerate.EndGenerateBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.generate.forgenerate.rangeblock attribute)": [[138, "pyVHDLParser.Blocks.Generate.ForGenerate.RangeBlock.NextBlock"]], "rangeblock (class in pyvhdlparser.blocks.generate.forgenerate)": [[138, "pyVHDLParser.Blocks.Generate.ForGenerate.RangeBlock"]], "starttoken (pyvhdlparser.blocks.generate.forgenerate.beginblock attribute)": [[138, "pyVHDLParser.Blocks.Generate.ForGenerate.BeginBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.generate.forgenerate.endgenerateblock attribute)": [[138, "pyVHDLParser.Blocks.Generate.ForGenerate.EndGenerateBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.generate.forgenerate.rangeblock attribute)": [[138, "pyVHDLParser.Blocks.Generate.ForGenerate.RangeBlock.StartToken"]], "states (pyvhdlparser.blocks.generate.forgenerate.beginblock property)": [[138, "pyVHDLParser.Blocks.Generate.ForGenerate.BeginBlock.States"]], "states (pyvhdlparser.blocks.generate.forgenerate.endgenerateblock property)": [[138, "pyVHDLParser.Blocks.Generate.ForGenerate.EndGenerateBlock.States"]], "states (pyvhdlparser.blocks.generate.forgenerate.rangeblock property)": [[138, "pyVHDLParser.Blocks.Generate.ForGenerate.RangeBlock.States"]], "__states__ (pyvhdlparser.blocks.generate.forgenerate.beginblock attribute)": [[138, "pyVHDLParser.Blocks.Generate.ForGenerate.BeginBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.generate.forgenerate.endgenerateblock attribute)": [[138, "pyVHDLParser.Blocks.Generate.ForGenerate.EndGenerateBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.generate.forgenerate.rangeblock attribute)": [[138, "pyVHDLParser.Blocks.Generate.ForGenerate.RangeBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.generate.forgenerate.beginblock method)": [[138, "pyVHDLParser.Blocks.Generate.ForGenerate.BeginBlock.__init__"]], "__init__() (pyvhdlparser.blocks.generate.forgenerate.endgenerateblock method)": [[138, "pyVHDLParser.Blocks.Generate.ForGenerate.EndGenerateBlock.__init__"]], "__init__() (pyvhdlparser.blocks.generate.forgenerate.rangeblock method)": [[138, "pyVHDLParser.Blocks.Generate.ForGenerate.RangeBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.generate.forgenerate.beginblock method)": [[138, "pyVHDLParser.Blocks.Generate.ForGenerate.BeginBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.generate.forgenerate.endgenerateblock method)": [[138, "pyVHDLParser.Blocks.Generate.ForGenerate.EndGenerateBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.generate.forgenerate.rangeblock method)": [[138, "pyVHDLParser.Blocks.Generate.ForGenerate.RangeBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.generate.forgenerate.beginblock method)": [[138, "pyVHDLParser.Blocks.Generate.ForGenerate.BeginBlock.__len__"]], "__len__() (pyvhdlparser.blocks.generate.forgenerate.endgenerateblock method)": [[138, "pyVHDLParser.Blocks.Generate.ForGenerate.EndGenerateBlock.__len__"]], "__len__() (pyvhdlparser.blocks.generate.forgenerate.rangeblock method)": [[138, "pyVHDLParser.Blocks.Generate.ForGenerate.RangeBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.generate.forgenerate.beginblock method)": [[138, "pyVHDLParser.Blocks.Generate.ForGenerate.BeginBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.generate.forgenerate.endgenerateblock method)": [[138, "pyVHDLParser.Blocks.Generate.ForGenerate.EndGenerateBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.generate.forgenerate.rangeblock method)": [[138, "pyVHDLParser.Blocks.Generate.ForGenerate.RangeBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.generate.forgenerate.beginblock method)": [[138, "pyVHDLParser.Blocks.Generate.ForGenerate.BeginBlock.__str__"]], "__str__() (pyvhdlparser.blocks.generate.forgenerate.endgenerateblock method)": [[138, "pyVHDLParser.Blocks.Generate.ForGenerate.EndGenerateBlock.__str__"]], "__str__() (pyvhdlparser.blocks.generate.forgenerate.rangeblock method)": [[138, "pyVHDLParser.Blocks.Generate.ForGenerate.RangeBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.generate.forgenerate.beginblock attribute)": [[138, "pyVHDLParser.Blocks.Generate.ForGenerate.BeginBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.generate.forgenerate.endgenerateblock attribute)": [[138, "pyVHDLParser.Blocks.Generate.ForGenerate.EndGenerateBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.generate.forgenerate.rangeblock attribute)": [[138, "pyVHDLParser.Blocks.Generate.ForGenerate.RangeBlock._previousBlock"]], "pyvhdlparser.blocks.generate.forgenerate": [[138, "module-pyVHDLParser.Blocks.Generate.ForGenerate"]], "stateerror() (pyvhdlparser.blocks.generate.forgenerate.beginblock class method)": [[138, "pyVHDLParser.Blocks.Generate.ForGenerate.BeginBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.generate.forgenerate.endgenerateblock class method)": [[138, "pyVHDLParser.Blocks.Generate.ForGenerate.EndGenerateBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.generate.forgenerate.rangeblock class method)": [[138, "pyVHDLParser.Blocks.Generate.ForGenerate.RangeBlock.stateError"]], "beginblock (class in pyvhdlparser.blocks.generate.ifgenerate)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.BeginBlock"]], "elsifbeginblock (class in pyvhdlparser.blocks.generate.ifgenerate)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElsIfBeginBlock"]], "elsifconditionblock (class in pyvhdlparser.blocks.generate.ifgenerate)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElsIfConditionBlock"]], "elsegeneratebeginblock (class in pyvhdlparser.blocks.generate.ifgenerate)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElseGenerateBeginBlock"]], "elsegenerateblock (class in pyvhdlparser.blocks.generate.ifgenerate)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElseGenerateBlock"]], "endgenerateblock (class in pyvhdlparser.blocks.generate.ifgenerate)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.EndGenerateBlock"]], "endtoken (pyvhdlparser.blocks.generate.ifgenerate.beginblock attribute)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.BeginBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.generate.ifgenerate.elsifbeginblock attribute)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElsIfBeginBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.generate.ifgenerate.elsifconditionblock attribute)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElsIfConditionBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.generate.ifgenerate.elsegeneratebeginblock attribute)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElseGenerateBeginBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.generate.ifgenerate.elsegenerateblock attribute)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElseGenerateBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.generate.ifgenerate.endgenerateblock attribute)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.EndGenerateBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.generate.ifgenerate.ifconditionblock attribute)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.IfConditionBlock.EndToken"]], "ifconditionblock (class in pyvhdlparser.blocks.generate.ifgenerate)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.IfConditionBlock"]], "keyword (pyvhdlparser.blocks.generate.ifgenerate.endgenerateblock attribute)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.EndGenerateBlock.KEYWORD"]], "length (pyvhdlparser.blocks.generate.ifgenerate.beginblock property)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.BeginBlock.Length"]], "length (pyvhdlparser.blocks.generate.ifgenerate.elsifbeginblock property)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElsIfBeginBlock.Length"]], "length (pyvhdlparser.blocks.generate.ifgenerate.elsifconditionblock property)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElsIfConditionBlock.Length"]], "length (pyvhdlparser.blocks.generate.ifgenerate.elsegeneratebeginblock property)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElseGenerateBeginBlock.Length"]], "length (pyvhdlparser.blocks.generate.ifgenerate.elsegenerateblock property)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElseGenerateBlock.Length"]], "length (pyvhdlparser.blocks.generate.ifgenerate.endgenerateblock property)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.EndGenerateBlock.Length"]], "length (pyvhdlparser.blocks.generate.ifgenerate.ifconditionblock property)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.IfConditionBlock.Length"]], "multipart (pyvhdlparser.blocks.generate.ifgenerate.beginblock attribute)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.BeginBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.generate.ifgenerate.elsifbeginblock attribute)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElsIfBeginBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.generate.ifgenerate.elsifconditionblock attribute)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElsIfConditionBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.generate.ifgenerate.elsegeneratebeginblock attribute)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElseGenerateBeginBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.generate.ifgenerate.elsegenerateblock attribute)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElseGenerateBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.generate.ifgenerate.endgenerateblock attribute)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.EndGenerateBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.generate.ifgenerate.ifconditionblock attribute)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.IfConditionBlock.MultiPart"]], "nextblock (pyvhdlparser.blocks.generate.ifgenerate.beginblock attribute)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.BeginBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.generate.ifgenerate.elsifbeginblock attribute)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElsIfBeginBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.generate.ifgenerate.elsifconditionblock attribute)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElsIfConditionBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.generate.ifgenerate.elsegeneratebeginblock attribute)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElseGenerateBeginBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.generate.ifgenerate.elsegenerateblock attribute)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElseGenerateBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.generate.ifgenerate.endgenerateblock attribute)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.EndGenerateBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.generate.ifgenerate.ifconditionblock attribute)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.IfConditionBlock.NextBlock"]], "starttoken (pyvhdlparser.blocks.generate.ifgenerate.beginblock attribute)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.BeginBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.generate.ifgenerate.elsifbeginblock attribute)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElsIfBeginBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.generate.ifgenerate.elsifconditionblock attribute)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElsIfConditionBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.generate.ifgenerate.elsegeneratebeginblock attribute)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElseGenerateBeginBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.generate.ifgenerate.elsegenerateblock attribute)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElseGenerateBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.generate.ifgenerate.endgenerateblock attribute)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.EndGenerateBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.generate.ifgenerate.ifconditionblock attribute)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.IfConditionBlock.StartToken"]], "states (pyvhdlparser.blocks.generate.ifgenerate.beginblock property)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.BeginBlock.States"]], "states (pyvhdlparser.blocks.generate.ifgenerate.elsifbeginblock property)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElsIfBeginBlock.States"]], "states (pyvhdlparser.blocks.generate.ifgenerate.elsifconditionblock property)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElsIfConditionBlock.States"]], "states (pyvhdlparser.blocks.generate.ifgenerate.elsegeneratebeginblock property)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElseGenerateBeginBlock.States"]], "states (pyvhdlparser.blocks.generate.ifgenerate.elsegenerateblock property)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElseGenerateBlock.States"]], "states (pyvhdlparser.blocks.generate.ifgenerate.endgenerateblock property)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.EndGenerateBlock.States"]], "states (pyvhdlparser.blocks.generate.ifgenerate.ifconditionblock property)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.IfConditionBlock.States"]], "__states__ (pyvhdlparser.blocks.generate.ifgenerate.beginblock attribute)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.BeginBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.generate.ifgenerate.elsifbeginblock attribute)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElsIfBeginBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.generate.ifgenerate.elsifconditionblock attribute)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElsIfConditionBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.generate.ifgenerate.elsegeneratebeginblock attribute)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElseGenerateBeginBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.generate.ifgenerate.elsegenerateblock attribute)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElseGenerateBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.generate.ifgenerate.endgenerateblock attribute)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.EndGenerateBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.generate.ifgenerate.ifconditionblock attribute)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.IfConditionBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.generate.ifgenerate.beginblock method)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.BeginBlock.__init__"]], "__init__() (pyvhdlparser.blocks.generate.ifgenerate.elsifbeginblock method)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElsIfBeginBlock.__init__"]], "__init__() (pyvhdlparser.blocks.generate.ifgenerate.elsifconditionblock method)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElsIfConditionBlock.__init__"]], "__init__() (pyvhdlparser.blocks.generate.ifgenerate.elsegeneratebeginblock method)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElseGenerateBeginBlock.__init__"]], "__init__() (pyvhdlparser.blocks.generate.ifgenerate.elsegenerateblock method)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElseGenerateBlock.__init__"]], "__init__() (pyvhdlparser.blocks.generate.ifgenerate.endgenerateblock method)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.EndGenerateBlock.__init__"]], "__init__() (pyvhdlparser.blocks.generate.ifgenerate.ifconditionblock method)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.IfConditionBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.generate.ifgenerate.beginblock method)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.BeginBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.generate.ifgenerate.elsifbeginblock method)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElsIfBeginBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.generate.ifgenerate.elsifconditionblock method)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElsIfConditionBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.generate.ifgenerate.elsegeneratebeginblock method)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElseGenerateBeginBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.generate.ifgenerate.elsegenerateblock method)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElseGenerateBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.generate.ifgenerate.endgenerateblock method)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.EndGenerateBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.generate.ifgenerate.ifconditionblock method)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.IfConditionBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.generate.ifgenerate.beginblock method)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.BeginBlock.__len__"]], "__len__() (pyvhdlparser.blocks.generate.ifgenerate.elsifbeginblock method)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElsIfBeginBlock.__len__"]], "__len__() (pyvhdlparser.blocks.generate.ifgenerate.elsifconditionblock method)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElsIfConditionBlock.__len__"]], "__len__() (pyvhdlparser.blocks.generate.ifgenerate.elsegeneratebeginblock method)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElseGenerateBeginBlock.__len__"]], "__len__() (pyvhdlparser.blocks.generate.ifgenerate.elsegenerateblock method)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElseGenerateBlock.__len__"]], "__len__() (pyvhdlparser.blocks.generate.ifgenerate.endgenerateblock method)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.EndGenerateBlock.__len__"]], "__len__() (pyvhdlparser.blocks.generate.ifgenerate.ifconditionblock method)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.IfConditionBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.generate.ifgenerate.beginblock method)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.BeginBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.generate.ifgenerate.elsifbeginblock method)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElsIfBeginBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.generate.ifgenerate.elsifconditionblock method)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElsIfConditionBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.generate.ifgenerate.elsegeneratebeginblock method)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElseGenerateBeginBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.generate.ifgenerate.elsegenerateblock method)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElseGenerateBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.generate.ifgenerate.endgenerateblock method)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.EndGenerateBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.generate.ifgenerate.ifconditionblock method)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.IfConditionBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.generate.ifgenerate.beginblock method)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.BeginBlock.__str__"]], "__str__() (pyvhdlparser.blocks.generate.ifgenerate.elsifbeginblock method)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElsIfBeginBlock.__str__"]], "__str__() (pyvhdlparser.blocks.generate.ifgenerate.elsifconditionblock method)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElsIfConditionBlock.__str__"]], "__str__() (pyvhdlparser.blocks.generate.ifgenerate.elsegeneratebeginblock method)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElseGenerateBeginBlock.__str__"]], "__str__() (pyvhdlparser.blocks.generate.ifgenerate.elsegenerateblock method)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElseGenerateBlock.__str__"]], "__str__() (pyvhdlparser.blocks.generate.ifgenerate.endgenerateblock method)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.EndGenerateBlock.__str__"]], "__str__() (pyvhdlparser.blocks.generate.ifgenerate.ifconditionblock method)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.IfConditionBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.generate.ifgenerate.beginblock attribute)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.BeginBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.generate.ifgenerate.elsifbeginblock attribute)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElsIfBeginBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.generate.ifgenerate.elsifconditionblock attribute)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElsIfConditionBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.generate.ifgenerate.elsegeneratebeginblock attribute)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElseGenerateBeginBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.generate.ifgenerate.elsegenerateblock attribute)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElseGenerateBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.generate.ifgenerate.endgenerateblock attribute)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.EndGenerateBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.generate.ifgenerate.ifconditionblock attribute)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.IfConditionBlock._previousBlock"]], "pyvhdlparser.blocks.generate.ifgenerate": [[139, "module-pyVHDLParser.Blocks.Generate.IfGenerate"]], "stateerror() (pyvhdlparser.blocks.generate.ifgenerate.beginblock class method)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.BeginBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.generate.ifgenerate.elsifbeginblock class method)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElsIfBeginBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.generate.ifgenerate.elsifconditionblock class method)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElsIfConditionBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.generate.ifgenerate.elsegeneratebeginblock class method)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElseGenerateBeginBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.generate.ifgenerate.elsegenerateblock class method)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.ElseGenerateBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.generate.ifgenerate.endgenerateblock class method)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.EndGenerateBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.generate.ifgenerate.ifconditionblock class method)": [[139, "pyVHDLParser.Blocks.Generate.IfGenerate.IfConditionBlock.stateError"]], "concurrentbeginblock (class in pyvhdlparser.blocks.generic)": [[140, "pyVHDLParser.Blocks.Generic.ConcurrentBeginBlock"]], "concurrentdeclarativeregion (class in pyvhdlparser.blocks.generic)": [[140, "pyVHDLParser.Blocks.Generic.ConcurrentDeclarativeRegion"]], "declarativeregion (class in pyvhdlparser.blocks.generic)": [[140, "pyVHDLParser.Blocks.Generic.DeclarativeRegion"]], "endtoken (pyvhdlparser.blocks.generic.concurrentbeginblock attribute)": [[140, "pyVHDLParser.Blocks.Generic.ConcurrentBeginBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.generic.sequentialbeginblock attribute)": [[140, "pyVHDLParser.Blocks.Generic.SequentialBeginBlock.EndToken"]], "length (pyvhdlparser.blocks.generic.concurrentbeginblock property)": [[140, "pyVHDLParser.Blocks.Generic.ConcurrentBeginBlock.Length"]], "length (pyvhdlparser.blocks.generic.sequentialbeginblock property)": [[140, "pyVHDLParser.Blocks.Generic.SequentialBeginBlock.Length"]], "multipart (pyvhdlparser.blocks.generic.concurrentbeginblock attribute)": [[140, "pyVHDLParser.Blocks.Generic.ConcurrentBeginBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.generic.sequentialbeginblock attribute)": [[140, "pyVHDLParser.Blocks.Generic.SequentialBeginBlock.MultiPart"]], "nextblock (pyvhdlparser.blocks.generic.concurrentbeginblock attribute)": [[140, "pyVHDLParser.Blocks.Generic.ConcurrentBeginBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.generic.sequentialbeginblock attribute)": [[140, "pyVHDLParser.Blocks.Generic.SequentialBeginBlock.NextBlock"]], "sequentialbeginblock (class in pyvhdlparser.blocks.generic)": [[140, "pyVHDLParser.Blocks.Generic.SequentialBeginBlock"]], "sequentialdeclarativeregion (class in pyvhdlparser.blocks.generic)": [[140, "pyVHDLParser.Blocks.Generic.SequentialDeclarativeRegion"]], "starttoken (pyvhdlparser.blocks.generic.concurrentbeginblock attribute)": [[140, "pyVHDLParser.Blocks.Generic.ConcurrentBeginBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.generic.sequentialbeginblock attribute)": [[140, "pyVHDLParser.Blocks.Generic.SequentialBeginBlock.StartToken"]], "states (pyvhdlparser.blocks.generic.concurrentbeginblock property)": [[140, "pyVHDLParser.Blocks.Generic.ConcurrentBeginBlock.States"]], "states (pyvhdlparser.blocks.generic.sequentialbeginblock property)": [[140, "pyVHDLParser.Blocks.Generic.SequentialBeginBlock.States"]], "__states__ (pyvhdlparser.blocks.generic.concurrentbeginblock attribute)": [[140, "pyVHDLParser.Blocks.Generic.ConcurrentBeginBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.generic.sequentialbeginblock attribute)": [[140, "pyVHDLParser.Blocks.Generic.SequentialBeginBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.generic.concurrentbeginblock method)": [[140, "pyVHDLParser.Blocks.Generic.ConcurrentBeginBlock.__init__"]], "__init__() (pyvhdlparser.blocks.generic.sequentialbeginblock method)": [[140, "pyVHDLParser.Blocks.Generic.SequentialBeginBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.generic.concurrentbeginblock method)": [[140, "pyVHDLParser.Blocks.Generic.ConcurrentBeginBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.generic.sequentialbeginblock method)": [[140, "pyVHDLParser.Blocks.Generic.SequentialBeginBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.generic.concurrentbeginblock method)": [[140, "pyVHDLParser.Blocks.Generic.ConcurrentBeginBlock.__len__"]], "__len__() (pyvhdlparser.blocks.generic.sequentialbeginblock method)": [[140, "pyVHDLParser.Blocks.Generic.SequentialBeginBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.generic.concurrentbeginblock method)": [[140, "pyVHDLParser.Blocks.Generic.ConcurrentBeginBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.generic.sequentialbeginblock method)": [[140, "pyVHDLParser.Blocks.Generic.SequentialBeginBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.generic.concurrentbeginblock method)": [[140, "pyVHDLParser.Blocks.Generic.ConcurrentBeginBlock.__str__"]], "__str__() (pyvhdlparser.blocks.generic.sequentialbeginblock method)": [[140, "pyVHDLParser.Blocks.Generic.SequentialBeginBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.generic.concurrentbeginblock attribute)": [[140, "pyVHDLParser.Blocks.Generic.ConcurrentBeginBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.generic.sequentialbeginblock attribute)": [[140, "pyVHDLParser.Blocks.Generic.SequentialBeginBlock._previousBlock"]], "pyvhdlparser.blocks.generic": [[140, "module-pyVHDLParser.Blocks.Generic"]], "stateerror() (pyvhdlparser.blocks.generic.concurrentbeginblock class method)": [[140, "pyVHDLParser.Blocks.Generic.ConcurrentBeginBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.generic.sequentialbeginblock class method)": [[140, "pyVHDLParser.Blocks.Generic.SequentialBeginBlock.stateError"]], "beginblock (class in pyvhdlparser.blocks.generic1)": [[141, "pyVHDLParser.Blocks.Generic1.BeginBlock"]], "closeblock (class in pyvhdlparser.blocks.generic1)": [[141, "pyVHDLParser.Blocks.Generic1.CloseBlock"]], "endblock (class in pyvhdlparser.blocks.generic1)": [[141, "pyVHDLParser.Blocks.Generic1.EndBlock"]], "endofstatementblock (class in pyvhdlparser.blocks.generic1)": [[141, "pyVHDLParser.Blocks.Generic1.EndOfStatementBlock"]], "endtoken (pyvhdlparser.blocks.generic1.beginblock attribute)": [[141, "pyVHDLParser.Blocks.Generic1.BeginBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.generic1.closeblock attribute)": [[141, "pyVHDLParser.Blocks.Generic1.CloseBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.generic1.endblock attribute)": [[141, "pyVHDLParser.Blocks.Generic1.EndBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.generic1.endofstatementblock attribute)": [[141, "pyVHDLParser.Blocks.Generic1.EndOfStatementBlock.EndToken"]], "length (pyvhdlparser.blocks.generic1.beginblock property)": [[141, "pyVHDLParser.Blocks.Generic1.BeginBlock.Length"]], "length (pyvhdlparser.blocks.generic1.closeblock property)": [[141, "pyVHDLParser.Blocks.Generic1.CloseBlock.Length"]], "length (pyvhdlparser.blocks.generic1.endblock property)": [[141, "pyVHDLParser.Blocks.Generic1.EndBlock.Length"]], "length (pyvhdlparser.blocks.generic1.endofstatementblock property)": [[141, "pyVHDLParser.Blocks.Generic1.EndOfStatementBlock.Length"]], "multipart (pyvhdlparser.blocks.generic1.beginblock attribute)": [[141, "pyVHDLParser.Blocks.Generic1.BeginBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.generic1.closeblock attribute)": [[141, "pyVHDLParser.Blocks.Generic1.CloseBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.generic1.endblock attribute)": [[141, "pyVHDLParser.Blocks.Generic1.EndBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.generic1.endofstatementblock attribute)": [[141, "pyVHDLParser.Blocks.Generic1.EndOfStatementBlock.MultiPart"]], "nextblock (pyvhdlparser.blocks.generic1.beginblock attribute)": [[141, "pyVHDLParser.Blocks.Generic1.BeginBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.generic1.closeblock attribute)": [[141, "pyVHDLParser.Blocks.Generic1.CloseBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.generic1.endblock attribute)": [[141, "pyVHDLParser.Blocks.Generic1.EndBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.generic1.endofstatementblock attribute)": [[141, "pyVHDLParser.Blocks.Generic1.EndOfStatementBlock.NextBlock"]], "starttoken (pyvhdlparser.blocks.generic1.beginblock attribute)": [[141, "pyVHDLParser.Blocks.Generic1.BeginBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.generic1.closeblock attribute)": [[141, "pyVHDLParser.Blocks.Generic1.CloseBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.generic1.endblock attribute)": [[141, "pyVHDLParser.Blocks.Generic1.EndBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.generic1.endofstatementblock attribute)": [[141, "pyVHDLParser.Blocks.Generic1.EndOfStatementBlock.StartToken"]], "states (pyvhdlparser.blocks.generic1.beginblock property)": [[141, "pyVHDLParser.Blocks.Generic1.BeginBlock.States"]], "states (pyvhdlparser.blocks.generic1.closeblock property)": [[141, "pyVHDLParser.Blocks.Generic1.CloseBlock.States"]], "states (pyvhdlparser.blocks.generic1.endblock property)": [[141, "pyVHDLParser.Blocks.Generic1.EndBlock.States"]], "states (pyvhdlparser.blocks.generic1.endofstatementblock property)": [[141, "pyVHDLParser.Blocks.Generic1.EndOfStatementBlock.States"]], "__states__ (pyvhdlparser.blocks.generic1.beginblock attribute)": [[141, "pyVHDLParser.Blocks.Generic1.BeginBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.generic1.closeblock attribute)": [[141, "pyVHDLParser.Blocks.Generic1.CloseBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.generic1.endblock attribute)": [[141, "pyVHDLParser.Blocks.Generic1.EndBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.generic1.endofstatementblock attribute)": [[141, "pyVHDLParser.Blocks.Generic1.EndOfStatementBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.generic1.beginblock method)": [[141, "pyVHDLParser.Blocks.Generic1.BeginBlock.__init__"]], "__init__() (pyvhdlparser.blocks.generic1.closeblock method)": [[141, "pyVHDLParser.Blocks.Generic1.CloseBlock.__init__"]], "__init__() (pyvhdlparser.blocks.generic1.endblock method)": [[141, "pyVHDLParser.Blocks.Generic1.EndBlock.__init__"]], "__init__() (pyvhdlparser.blocks.generic1.endofstatementblock method)": [[141, "pyVHDLParser.Blocks.Generic1.EndOfStatementBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.generic1.beginblock method)": [[141, "pyVHDLParser.Blocks.Generic1.BeginBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.generic1.closeblock method)": [[141, "pyVHDLParser.Blocks.Generic1.CloseBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.generic1.endblock method)": [[141, "pyVHDLParser.Blocks.Generic1.EndBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.generic1.endofstatementblock method)": [[141, "pyVHDLParser.Blocks.Generic1.EndOfStatementBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.generic1.beginblock method)": [[141, "pyVHDLParser.Blocks.Generic1.BeginBlock.__len__"]], "__len__() (pyvhdlparser.blocks.generic1.closeblock method)": [[141, "pyVHDLParser.Blocks.Generic1.CloseBlock.__len__"]], "__len__() (pyvhdlparser.blocks.generic1.endblock method)": [[141, "pyVHDLParser.Blocks.Generic1.EndBlock.__len__"]], "__len__() (pyvhdlparser.blocks.generic1.endofstatementblock method)": [[141, "pyVHDLParser.Blocks.Generic1.EndOfStatementBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.generic1.beginblock method)": [[141, "pyVHDLParser.Blocks.Generic1.BeginBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.generic1.closeblock method)": [[141, "pyVHDLParser.Blocks.Generic1.CloseBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.generic1.endblock method)": [[141, "pyVHDLParser.Blocks.Generic1.EndBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.generic1.endofstatementblock method)": [[141, "pyVHDLParser.Blocks.Generic1.EndOfStatementBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.generic1.beginblock method)": [[141, "pyVHDLParser.Blocks.Generic1.BeginBlock.__str__"]], "__str__() (pyvhdlparser.blocks.generic1.closeblock method)": [[141, "pyVHDLParser.Blocks.Generic1.CloseBlock.__str__"]], "__str__() (pyvhdlparser.blocks.generic1.endblock method)": [[141, "pyVHDLParser.Blocks.Generic1.EndBlock.__str__"]], "__str__() (pyvhdlparser.blocks.generic1.endofstatementblock method)": [[141, "pyVHDLParser.Blocks.Generic1.EndOfStatementBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.generic1.beginblock attribute)": [[141, "pyVHDLParser.Blocks.Generic1.BeginBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.generic1.closeblock attribute)": [[141, "pyVHDLParser.Blocks.Generic1.CloseBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.generic1.endblock attribute)": [[141, "pyVHDLParser.Blocks.Generic1.EndBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.generic1.endofstatementblock attribute)": [[141, "pyVHDLParser.Blocks.Generic1.EndOfStatementBlock._previousBlock"]], "pyvhdlparser.blocks.generic1": [[141, "module-pyVHDLParser.Blocks.Generic1"]], "stateerror() (pyvhdlparser.blocks.generic1.beginblock class method)": [[141, "pyVHDLParser.Blocks.Generic1.BeginBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.generic1.closeblock class method)": [[141, "pyVHDLParser.Blocks.Generic1.CloseBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.generic1.endblock class method)": [[141, "pyVHDLParser.Blocks.Generic1.EndBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.generic1.endofstatementblock class method)": [[141, "pyVHDLParser.Blocks.Generic1.EndOfStatementBlock.stateError"]], "pyvhdlparser.blocks.instantiation": [[142, "module-pyVHDLParser.Blocks.Instantiation"]], "endblock (class in pyvhdlparser.blocks.instantiation.entityinstantiation)": [[143, "pyVHDLParser.Blocks.Instantiation.EntityInstantiation.EndBlock"]], "endtoken (pyvhdlparser.blocks.instantiation.entityinstantiation.endblock attribute)": [[143, "pyVHDLParser.Blocks.Instantiation.EntityInstantiation.EndBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.instantiation.entityinstantiation.entityinstantiationblock attribute)": [[143, "pyVHDLParser.Blocks.Instantiation.EntityInstantiation.EntityInstantiationBlock.EndToken"]], "entityinstantiationblock (class in pyvhdlparser.blocks.instantiation.entityinstantiation)": [[143, "pyVHDLParser.Blocks.Instantiation.EntityInstantiation.EntityInstantiationBlock"]], "length (pyvhdlparser.blocks.instantiation.entityinstantiation.endblock property)": [[143, "pyVHDLParser.Blocks.Instantiation.EntityInstantiation.EndBlock.Length"]], "length (pyvhdlparser.blocks.instantiation.entityinstantiation.entityinstantiationblock property)": [[143, "pyVHDLParser.Blocks.Instantiation.EntityInstantiation.EntityInstantiationBlock.Length"]], "multipart (pyvhdlparser.blocks.instantiation.entityinstantiation.endblock attribute)": [[143, "pyVHDLParser.Blocks.Instantiation.EntityInstantiation.EndBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.instantiation.entityinstantiation.entityinstantiationblock attribute)": [[143, "pyVHDLParser.Blocks.Instantiation.EntityInstantiation.EntityInstantiationBlock.MultiPart"]], "nextblock (pyvhdlparser.blocks.instantiation.entityinstantiation.endblock attribute)": [[143, "pyVHDLParser.Blocks.Instantiation.EntityInstantiation.EndBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.instantiation.entityinstantiation.entityinstantiationblock attribute)": [[143, "pyVHDLParser.Blocks.Instantiation.EntityInstantiation.EntityInstantiationBlock.NextBlock"]], "starttoken (pyvhdlparser.blocks.instantiation.entityinstantiation.endblock attribute)": [[143, "pyVHDLParser.Blocks.Instantiation.EntityInstantiation.EndBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.instantiation.entityinstantiation.entityinstantiationblock attribute)": [[143, "pyVHDLParser.Blocks.Instantiation.EntityInstantiation.EntityInstantiationBlock.StartToken"]], "states (pyvhdlparser.blocks.instantiation.entityinstantiation.endblock property)": [[143, "pyVHDLParser.Blocks.Instantiation.EntityInstantiation.EndBlock.States"]], "states (pyvhdlparser.blocks.instantiation.entityinstantiation.entityinstantiationblock property)": [[143, "pyVHDLParser.Blocks.Instantiation.EntityInstantiation.EntityInstantiationBlock.States"]], "__states__ (pyvhdlparser.blocks.instantiation.entityinstantiation.endblock attribute)": [[143, "pyVHDLParser.Blocks.Instantiation.EntityInstantiation.EndBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.instantiation.entityinstantiation.entityinstantiationblock attribute)": [[143, "pyVHDLParser.Blocks.Instantiation.EntityInstantiation.EntityInstantiationBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.instantiation.entityinstantiation.endblock method)": [[143, "pyVHDLParser.Blocks.Instantiation.EntityInstantiation.EndBlock.__init__"]], "__init__() (pyvhdlparser.blocks.instantiation.entityinstantiation.entityinstantiationblock method)": [[143, "pyVHDLParser.Blocks.Instantiation.EntityInstantiation.EntityInstantiationBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.instantiation.entityinstantiation.endblock method)": [[143, "pyVHDLParser.Blocks.Instantiation.EntityInstantiation.EndBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.instantiation.entityinstantiation.entityinstantiationblock method)": [[143, "pyVHDLParser.Blocks.Instantiation.EntityInstantiation.EntityInstantiationBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.instantiation.entityinstantiation.endblock method)": [[143, "pyVHDLParser.Blocks.Instantiation.EntityInstantiation.EndBlock.__len__"]], "__len__() (pyvhdlparser.blocks.instantiation.entityinstantiation.entityinstantiationblock method)": [[143, "pyVHDLParser.Blocks.Instantiation.EntityInstantiation.EntityInstantiationBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.instantiation.entityinstantiation.endblock method)": [[143, "pyVHDLParser.Blocks.Instantiation.EntityInstantiation.EndBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.instantiation.entityinstantiation.entityinstantiationblock method)": [[143, "pyVHDLParser.Blocks.Instantiation.EntityInstantiation.EntityInstantiationBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.instantiation.entityinstantiation.endblock method)": [[143, "pyVHDLParser.Blocks.Instantiation.EntityInstantiation.EndBlock.__str__"]], "__str__() (pyvhdlparser.blocks.instantiation.entityinstantiation.entityinstantiationblock method)": [[143, "pyVHDLParser.Blocks.Instantiation.EntityInstantiation.EntityInstantiationBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.instantiation.entityinstantiation.endblock attribute)": [[143, "pyVHDLParser.Blocks.Instantiation.EntityInstantiation.EndBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.instantiation.entityinstantiation.entityinstantiationblock attribute)": [[143, "pyVHDLParser.Blocks.Instantiation.EntityInstantiation.EntityInstantiationBlock._previousBlock"]], "pyvhdlparser.blocks.instantiation.entityinstantiation": [[143, "module-pyVHDLParser.Blocks.Instantiation.EntityInstantiation"]], "stateerror() (pyvhdlparser.blocks.instantiation.entityinstantiation.endblock class method)": [[143, "pyVHDLParser.Blocks.Instantiation.EntityInstantiation.EndBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.instantiation.entityinstantiation.entityinstantiationblock class method)": [[143, "pyVHDLParser.Blocks.Instantiation.EntityInstantiation.EntityInstantiationBlock.stateError"]], "endblock (class in pyvhdlparser.blocks.instantiation.functioninstantiation)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.EndBlock"]], "endtoken (pyvhdlparser.blocks.instantiation.functioninstantiation.endblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.EndBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.instantiation.functioninstantiation.entityinstantiationblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.EntityInstantiationBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapbeginblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapBeginBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapdelimiterblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapDelimiterBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapendblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapEndBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapitemblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapItemBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapbeginblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapBeginBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapdelimiterblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapDelimiterBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapendblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapEndBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapitemblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapItemBlock.EndToken"]], "entityinstantiationblock (class in pyvhdlparser.blocks.instantiation.functioninstantiation)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.EntityInstantiationBlock"]], "genericmapbeginblock (class in pyvhdlparser.blocks.instantiation.functioninstantiation)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapBeginBlock"]], "genericmapdelimiterblock (class in pyvhdlparser.blocks.instantiation.functioninstantiation)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapDelimiterBlock"]], "genericmapendblock (class in pyvhdlparser.blocks.instantiation.functioninstantiation)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapEndBlock"]], "genericmapitemblock (class in pyvhdlparser.blocks.instantiation.functioninstantiation)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapItemBlock"]], "length (pyvhdlparser.blocks.instantiation.functioninstantiation.endblock property)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.EndBlock.Length"]], "length (pyvhdlparser.blocks.instantiation.functioninstantiation.entityinstantiationblock property)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.EntityInstantiationBlock.Length"]], "length (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapbeginblock property)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapBeginBlock.Length"]], "length (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapdelimiterblock property)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapDelimiterBlock.Length"]], "length (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapendblock property)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapEndBlock.Length"]], "length (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapitemblock property)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapItemBlock.Length"]], "length (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapbeginblock property)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapBeginBlock.Length"]], "length (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapdelimiterblock property)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapDelimiterBlock.Length"]], "length (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapendblock property)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapEndBlock.Length"]], "length (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapitemblock property)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapItemBlock.Length"]], "multipart (pyvhdlparser.blocks.instantiation.functioninstantiation.endblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.EndBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.instantiation.functioninstantiation.entityinstantiationblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.EntityInstantiationBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapbeginblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapBeginBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapdelimiterblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapDelimiterBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapendblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapEndBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapitemblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapItemBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapbeginblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapBeginBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapdelimiterblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapDelimiterBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapendblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapEndBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapitemblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapItemBlock.MultiPart"]], "nextblock (pyvhdlparser.blocks.instantiation.functioninstantiation.endblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.EndBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.instantiation.functioninstantiation.entityinstantiationblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.EntityInstantiationBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapbeginblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapBeginBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapdelimiterblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapDelimiterBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapendblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapEndBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapitemblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapItemBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapbeginblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapBeginBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapdelimiterblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapDelimiterBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapendblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapEndBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapitemblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapItemBlock.NextBlock"]], "portmapbeginblock (class in pyvhdlparser.blocks.instantiation.functioninstantiation)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapBeginBlock"]], "portmapdelimiterblock (class in pyvhdlparser.blocks.instantiation.functioninstantiation)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapDelimiterBlock"]], "portmapendblock (class in pyvhdlparser.blocks.instantiation.functioninstantiation)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapEndBlock"]], "portmapitemblock (class in pyvhdlparser.blocks.instantiation.functioninstantiation)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapItemBlock"]], "starttoken (pyvhdlparser.blocks.instantiation.functioninstantiation.endblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.EndBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.instantiation.functioninstantiation.entityinstantiationblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.EntityInstantiationBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapbeginblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapBeginBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapdelimiterblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapDelimiterBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapendblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapEndBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapitemblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapItemBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapbeginblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapBeginBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapdelimiterblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapDelimiterBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapendblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapEndBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapitemblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapItemBlock.StartToken"]], "states (pyvhdlparser.blocks.instantiation.functioninstantiation.endblock property)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.EndBlock.States"]], "states (pyvhdlparser.blocks.instantiation.functioninstantiation.entityinstantiationblock property)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.EntityInstantiationBlock.States"]], "states (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapbeginblock property)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapBeginBlock.States"]], "states (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapdelimiterblock property)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapDelimiterBlock.States"]], "states (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapendblock property)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapEndBlock.States"]], "states (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapitemblock property)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapItemBlock.States"]], "states (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapbeginblock property)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapBeginBlock.States"]], "states (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapdelimiterblock property)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapDelimiterBlock.States"]], "states (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapendblock property)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapEndBlock.States"]], "states (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapitemblock property)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapItemBlock.States"]], "__states__ (pyvhdlparser.blocks.instantiation.functioninstantiation.endblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.EndBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.instantiation.functioninstantiation.entityinstantiationblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.EntityInstantiationBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapbeginblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapBeginBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapdelimiterblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapDelimiterBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapendblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapEndBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapitemblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapItemBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapbeginblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapBeginBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapdelimiterblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapDelimiterBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapendblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapEndBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapitemblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapItemBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.instantiation.functioninstantiation.endblock method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.EndBlock.__init__"]], "__init__() (pyvhdlparser.blocks.instantiation.functioninstantiation.entityinstantiationblock method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.EntityInstantiationBlock.__init__"]], "__init__() (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapbeginblock method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapBeginBlock.__init__"]], "__init__() (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapdelimiterblock method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapDelimiterBlock.__init__"]], "__init__() (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapendblock method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapEndBlock.__init__"]], "__init__() (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapitemblock method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapItemBlock.__init__"]], "__init__() (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapbeginblock method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapBeginBlock.__init__"]], "__init__() (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapdelimiterblock method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapDelimiterBlock.__init__"]], "__init__() (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapendblock method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapEndBlock.__init__"]], "__init__() (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapitemblock method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapItemBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.instantiation.functioninstantiation.endblock method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.EndBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.instantiation.functioninstantiation.entityinstantiationblock method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.EntityInstantiationBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapbeginblock method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapBeginBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapdelimiterblock method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapDelimiterBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapendblock method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapEndBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapitemblock method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapItemBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapbeginblock method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapBeginBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapdelimiterblock method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapDelimiterBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapendblock method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapEndBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapitemblock method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapItemBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.instantiation.functioninstantiation.endblock method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.EndBlock.__len__"]], "__len__() (pyvhdlparser.blocks.instantiation.functioninstantiation.entityinstantiationblock method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.EntityInstantiationBlock.__len__"]], "__len__() (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapbeginblock method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapBeginBlock.__len__"]], "__len__() (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapdelimiterblock method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapDelimiterBlock.__len__"]], "__len__() (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapendblock method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapEndBlock.__len__"]], "__len__() (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapitemblock method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapItemBlock.__len__"]], "__len__() (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapbeginblock method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapBeginBlock.__len__"]], "__len__() (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapdelimiterblock method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapDelimiterBlock.__len__"]], "__len__() (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapendblock method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapEndBlock.__len__"]], "__len__() (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapitemblock method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapItemBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.instantiation.functioninstantiation.endblock method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.EndBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.instantiation.functioninstantiation.entityinstantiationblock method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.EntityInstantiationBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapbeginblock method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapBeginBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapdelimiterblock method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapDelimiterBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapendblock method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapEndBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapitemblock method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapItemBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapbeginblock method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapBeginBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapdelimiterblock method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapDelimiterBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapendblock method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapEndBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapitemblock method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapItemBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.instantiation.functioninstantiation.endblock method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.EndBlock.__str__"]], "__str__() (pyvhdlparser.blocks.instantiation.functioninstantiation.entityinstantiationblock method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.EntityInstantiationBlock.__str__"]], "__str__() (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapbeginblock method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapBeginBlock.__str__"]], "__str__() (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapdelimiterblock method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapDelimiterBlock.__str__"]], "__str__() (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapendblock method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapEndBlock.__str__"]], "__str__() (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapitemblock method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapItemBlock.__str__"]], "__str__() (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapbeginblock method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapBeginBlock.__str__"]], "__str__() (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapdelimiterblock method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapDelimiterBlock.__str__"]], "__str__() (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapendblock method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapEndBlock.__str__"]], "__str__() (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapitemblock method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapItemBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.instantiation.functioninstantiation.endblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.EndBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.instantiation.functioninstantiation.entityinstantiationblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.EntityInstantiationBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapbeginblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapBeginBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapdelimiterblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapDelimiterBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapendblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapEndBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapitemblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapItemBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapbeginblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapBeginBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapdelimiterblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapDelimiterBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapendblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapEndBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapitemblock attribute)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapItemBlock._previousBlock"]], "pyvhdlparser.blocks.instantiation.functioninstantiation": [[144, "module-pyVHDLParser.Blocks.Instantiation.FunctionInstantiation"]], "stateerror() (pyvhdlparser.blocks.instantiation.functioninstantiation.endblock class method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.EndBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.instantiation.functioninstantiation.entityinstantiationblock class method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.EntityInstantiationBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapbeginblock class method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapBeginBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapdelimiterblock class method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapDelimiterBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapendblock class method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapEndBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.instantiation.functioninstantiation.genericmapitemblock class method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.GenericMapItemBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapbeginblock class method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapBeginBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapdelimiterblock class method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapDelimiterBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapendblock class method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapEndBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.instantiation.functioninstantiation.portmapitemblock class method)": [[144, "pyVHDLParser.Blocks.Instantiation.FunctionInstantiation.PortMapItemBlock.stateError"]], "endblock (class in pyvhdlparser.blocks.instantiation.packageinstantiation)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.EndBlock"]], "endtoken (pyvhdlparser.blocks.instantiation.packageinstantiation.endblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.EndBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.instantiation.packageinstantiation.entityinstantiationblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.EntityInstantiationBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapbeginblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapBeginBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapdelimiterblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapDelimiterBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapendblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapEndBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapitemblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapItemBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapbeginblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapBeginBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapdelimiterblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapDelimiterBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapendblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapEndBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapitemblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapItemBlock.EndToken"]], "entityinstantiationblock (class in pyvhdlparser.blocks.instantiation.packageinstantiation)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.EntityInstantiationBlock"]], "genericmapbeginblock (class in pyvhdlparser.blocks.instantiation.packageinstantiation)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapBeginBlock"]], "genericmapdelimiterblock (class in pyvhdlparser.blocks.instantiation.packageinstantiation)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapDelimiterBlock"]], "genericmapendblock (class in pyvhdlparser.blocks.instantiation.packageinstantiation)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapEndBlock"]], "genericmapitemblock (class in pyvhdlparser.blocks.instantiation.packageinstantiation)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapItemBlock"]], "length (pyvhdlparser.blocks.instantiation.packageinstantiation.endblock property)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.EndBlock.Length"]], "length (pyvhdlparser.blocks.instantiation.packageinstantiation.entityinstantiationblock property)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.EntityInstantiationBlock.Length"]], "length (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapbeginblock property)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapBeginBlock.Length"]], "length (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapdelimiterblock property)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapDelimiterBlock.Length"]], "length (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapendblock property)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapEndBlock.Length"]], "length (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapitemblock property)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapItemBlock.Length"]], "length (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapbeginblock property)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapBeginBlock.Length"]], "length (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapdelimiterblock property)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapDelimiterBlock.Length"]], "length (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapendblock property)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapEndBlock.Length"]], "length (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapitemblock property)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapItemBlock.Length"]], "multipart (pyvhdlparser.blocks.instantiation.packageinstantiation.endblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.EndBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.instantiation.packageinstantiation.entityinstantiationblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.EntityInstantiationBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapbeginblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapBeginBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapdelimiterblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapDelimiterBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapendblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapEndBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapitemblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapItemBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapbeginblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapBeginBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapdelimiterblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapDelimiterBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapendblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapEndBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapitemblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapItemBlock.MultiPart"]], "nextblock (pyvhdlparser.blocks.instantiation.packageinstantiation.endblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.EndBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.instantiation.packageinstantiation.entityinstantiationblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.EntityInstantiationBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapbeginblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapBeginBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapdelimiterblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapDelimiterBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapendblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapEndBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapitemblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapItemBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapbeginblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapBeginBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapdelimiterblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapDelimiterBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapendblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapEndBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapitemblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapItemBlock.NextBlock"]], "portmapbeginblock (class in pyvhdlparser.blocks.instantiation.packageinstantiation)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapBeginBlock"]], "portmapdelimiterblock (class in pyvhdlparser.blocks.instantiation.packageinstantiation)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapDelimiterBlock"]], "portmapendblock (class in pyvhdlparser.blocks.instantiation.packageinstantiation)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapEndBlock"]], "portmapitemblock (class in pyvhdlparser.blocks.instantiation.packageinstantiation)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapItemBlock"]], "starttoken (pyvhdlparser.blocks.instantiation.packageinstantiation.endblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.EndBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.instantiation.packageinstantiation.entityinstantiationblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.EntityInstantiationBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapbeginblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapBeginBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapdelimiterblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapDelimiterBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapendblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapEndBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapitemblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapItemBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapbeginblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapBeginBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapdelimiterblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapDelimiterBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapendblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapEndBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapitemblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapItemBlock.StartToken"]], "states (pyvhdlparser.blocks.instantiation.packageinstantiation.endblock property)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.EndBlock.States"]], "states (pyvhdlparser.blocks.instantiation.packageinstantiation.entityinstantiationblock property)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.EntityInstantiationBlock.States"]], "states (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapbeginblock property)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapBeginBlock.States"]], "states (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapdelimiterblock property)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapDelimiterBlock.States"]], "states (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapendblock property)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapEndBlock.States"]], "states (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapitemblock property)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapItemBlock.States"]], "states (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapbeginblock property)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapBeginBlock.States"]], "states (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapdelimiterblock property)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapDelimiterBlock.States"]], "states (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapendblock property)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapEndBlock.States"]], "states (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapitemblock property)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapItemBlock.States"]], "__states__ (pyvhdlparser.blocks.instantiation.packageinstantiation.endblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.EndBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.instantiation.packageinstantiation.entityinstantiationblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.EntityInstantiationBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapbeginblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapBeginBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapdelimiterblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapDelimiterBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapendblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapEndBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapitemblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapItemBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapbeginblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapBeginBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapdelimiterblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapDelimiterBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapendblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapEndBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapitemblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapItemBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.instantiation.packageinstantiation.endblock method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.EndBlock.__init__"]], "__init__() (pyvhdlparser.blocks.instantiation.packageinstantiation.entityinstantiationblock method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.EntityInstantiationBlock.__init__"]], "__init__() (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapbeginblock method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapBeginBlock.__init__"]], "__init__() (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapdelimiterblock method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapDelimiterBlock.__init__"]], "__init__() (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapendblock method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapEndBlock.__init__"]], "__init__() (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapitemblock method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapItemBlock.__init__"]], "__init__() (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapbeginblock method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapBeginBlock.__init__"]], "__init__() (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapdelimiterblock method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapDelimiterBlock.__init__"]], "__init__() (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapendblock method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapEndBlock.__init__"]], "__init__() (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapitemblock method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapItemBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.instantiation.packageinstantiation.endblock method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.EndBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.instantiation.packageinstantiation.entityinstantiationblock method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.EntityInstantiationBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapbeginblock method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapBeginBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapdelimiterblock method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapDelimiterBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapendblock method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapEndBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapitemblock method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapItemBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapbeginblock method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapBeginBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapdelimiterblock method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapDelimiterBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapendblock method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapEndBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapitemblock method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapItemBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.instantiation.packageinstantiation.endblock method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.EndBlock.__len__"]], "__len__() (pyvhdlparser.blocks.instantiation.packageinstantiation.entityinstantiationblock method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.EntityInstantiationBlock.__len__"]], "__len__() (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapbeginblock method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapBeginBlock.__len__"]], "__len__() (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapdelimiterblock method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapDelimiterBlock.__len__"]], "__len__() (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapendblock method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapEndBlock.__len__"]], "__len__() (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapitemblock method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapItemBlock.__len__"]], "__len__() (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapbeginblock method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapBeginBlock.__len__"]], "__len__() (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapdelimiterblock method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapDelimiterBlock.__len__"]], "__len__() (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapendblock method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapEndBlock.__len__"]], "__len__() (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapitemblock method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapItemBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.instantiation.packageinstantiation.endblock method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.EndBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.instantiation.packageinstantiation.entityinstantiationblock method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.EntityInstantiationBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapbeginblock method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapBeginBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapdelimiterblock method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapDelimiterBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapendblock method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapEndBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapitemblock method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapItemBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapbeginblock method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapBeginBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapdelimiterblock method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapDelimiterBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapendblock method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapEndBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapitemblock method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapItemBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.instantiation.packageinstantiation.endblock method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.EndBlock.__str__"]], "__str__() (pyvhdlparser.blocks.instantiation.packageinstantiation.entityinstantiationblock method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.EntityInstantiationBlock.__str__"]], "__str__() (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapbeginblock method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapBeginBlock.__str__"]], "__str__() (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapdelimiterblock method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapDelimiterBlock.__str__"]], "__str__() (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapendblock method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapEndBlock.__str__"]], "__str__() (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapitemblock method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapItemBlock.__str__"]], "__str__() (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapbeginblock method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapBeginBlock.__str__"]], "__str__() (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapdelimiterblock method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapDelimiterBlock.__str__"]], "__str__() (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapendblock method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapEndBlock.__str__"]], "__str__() (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapitemblock method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapItemBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.instantiation.packageinstantiation.endblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.EndBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.instantiation.packageinstantiation.entityinstantiationblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.EntityInstantiationBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapbeginblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapBeginBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapdelimiterblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapDelimiterBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapendblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapEndBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapitemblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapItemBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapbeginblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapBeginBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapdelimiterblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapDelimiterBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapendblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapEndBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapitemblock attribute)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapItemBlock._previousBlock"]], "pyvhdlparser.blocks.instantiation.packageinstantiation": [[145, "module-pyVHDLParser.Blocks.Instantiation.PackageInstantiation"]], "stateerror() (pyvhdlparser.blocks.instantiation.packageinstantiation.endblock class method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.EndBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.instantiation.packageinstantiation.entityinstantiationblock class method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.EntityInstantiationBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapbeginblock class method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapBeginBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapdelimiterblock class method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapDelimiterBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapendblock class method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapEndBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.instantiation.packageinstantiation.genericmapitemblock class method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.GenericMapItemBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapbeginblock class method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapBeginBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapdelimiterblock class method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapDelimiterBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapendblock class method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapEndBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.instantiation.packageinstantiation.portmapitemblock class method)": [[145, "pyVHDLParser.Blocks.Instantiation.PackageInstantiation.PortMapItemBlock.stateError"]], "endblock (class in pyvhdlparser.blocks.instantiation.procedureinstantiation)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.EndBlock"]], "endtoken (pyvhdlparser.blocks.instantiation.procedureinstantiation.endblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.EndBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.instantiation.procedureinstantiation.entityinstantiationblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.EntityInstantiationBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapbeginblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapBeginBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapdelimiterblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapDelimiterBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapendblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapEndBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapitemblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapItemBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapbeginblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapBeginBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapdelimiterblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapDelimiterBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapendblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapEndBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapitemblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapItemBlock.EndToken"]], "entityinstantiationblock (class in pyvhdlparser.blocks.instantiation.procedureinstantiation)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.EntityInstantiationBlock"]], "genericmapbeginblock (class in pyvhdlparser.blocks.instantiation.procedureinstantiation)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapBeginBlock"]], "genericmapdelimiterblock (class in pyvhdlparser.blocks.instantiation.procedureinstantiation)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapDelimiterBlock"]], "genericmapendblock (class in pyvhdlparser.blocks.instantiation.procedureinstantiation)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapEndBlock"]], "genericmapitemblock (class in pyvhdlparser.blocks.instantiation.procedureinstantiation)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapItemBlock"]], "length (pyvhdlparser.blocks.instantiation.procedureinstantiation.endblock property)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.EndBlock.Length"]], "length (pyvhdlparser.blocks.instantiation.procedureinstantiation.entityinstantiationblock property)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.EntityInstantiationBlock.Length"]], "length (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapbeginblock property)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapBeginBlock.Length"]], "length (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapdelimiterblock property)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapDelimiterBlock.Length"]], "length (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapendblock property)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapEndBlock.Length"]], "length (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapitemblock property)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapItemBlock.Length"]], "length (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapbeginblock property)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapBeginBlock.Length"]], "length (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapdelimiterblock property)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapDelimiterBlock.Length"]], "length (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapendblock property)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapEndBlock.Length"]], "length (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapitemblock property)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapItemBlock.Length"]], "multipart (pyvhdlparser.blocks.instantiation.procedureinstantiation.endblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.EndBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.instantiation.procedureinstantiation.entityinstantiationblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.EntityInstantiationBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapbeginblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapBeginBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapdelimiterblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapDelimiterBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapendblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapEndBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapitemblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapItemBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapbeginblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapBeginBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapdelimiterblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapDelimiterBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapendblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapEndBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapitemblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapItemBlock.MultiPart"]], "nextblock (pyvhdlparser.blocks.instantiation.procedureinstantiation.endblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.EndBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.instantiation.procedureinstantiation.entityinstantiationblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.EntityInstantiationBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapbeginblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapBeginBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapdelimiterblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapDelimiterBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapendblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapEndBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapitemblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapItemBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapbeginblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapBeginBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapdelimiterblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapDelimiterBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapendblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapEndBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapitemblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapItemBlock.NextBlock"]], "portmapbeginblock (class in pyvhdlparser.blocks.instantiation.procedureinstantiation)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapBeginBlock"]], "portmapdelimiterblock (class in pyvhdlparser.blocks.instantiation.procedureinstantiation)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapDelimiterBlock"]], "portmapendblock (class in pyvhdlparser.blocks.instantiation.procedureinstantiation)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapEndBlock"]], "portmapitemblock (class in pyvhdlparser.blocks.instantiation.procedureinstantiation)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapItemBlock"]], "starttoken (pyvhdlparser.blocks.instantiation.procedureinstantiation.endblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.EndBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.instantiation.procedureinstantiation.entityinstantiationblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.EntityInstantiationBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapbeginblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapBeginBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapdelimiterblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapDelimiterBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapendblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapEndBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapitemblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapItemBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapbeginblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapBeginBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapdelimiterblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapDelimiterBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapendblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapEndBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapitemblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapItemBlock.StartToken"]], "states (pyvhdlparser.blocks.instantiation.procedureinstantiation.endblock property)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.EndBlock.States"]], "states (pyvhdlparser.blocks.instantiation.procedureinstantiation.entityinstantiationblock property)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.EntityInstantiationBlock.States"]], "states (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapbeginblock property)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapBeginBlock.States"]], "states (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapdelimiterblock property)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapDelimiterBlock.States"]], "states (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapendblock property)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapEndBlock.States"]], "states (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapitemblock property)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapItemBlock.States"]], "states (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapbeginblock property)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapBeginBlock.States"]], "states (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapdelimiterblock property)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapDelimiterBlock.States"]], "states (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapendblock property)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapEndBlock.States"]], "states (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapitemblock property)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapItemBlock.States"]], "__states__ (pyvhdlparser.blocks.instantiation.procedureinstantiation.endblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.EndBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.instantiation.procedureinstantiation.entityinstantiationblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.EntityInstantiationBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapbeginblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapBeginBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapdelimiterblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapDelimiterBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapendblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapEndBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapitemblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapItemBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapbeginblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapBeginBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapdelimiterblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapDelimiterBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapendblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapEndBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapitemblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapItemBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.instantiation.procedureinstantiation.endblock method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.EndBlock.__init__"]], "__init__() (pyvhdlparser.blocks.instantiation.procedureinstantiation.entityinstantiationblock method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.EntityInstantiationBlock.__init__"]], "__init__() (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapbeginblock method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapBeginBlock.__init__"]], "__init__() (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapdelimiterblock method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapDelimiterBlock.__init__"]], "__init__() (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapendblock method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapEndBlock.__init__"]], "__init__() (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapitemblock method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapItemBlock.__init__"]], "__init__() (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapbeginblock method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapBeginBlock.__init__"]], "__init__() (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapdelimiterblock method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapDelimiterBlock.__init__"]], "__init__() (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapendblock method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapEndBlock.__init__"]], "__init__() (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapitemblock method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapItemBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.instantiation.procedureinstantiation.endblock method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.EndBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.instantiation.procedureinstantiation.entityinstantiationblock method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.EntityInstantiationBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapbeginblock method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapBeginBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapdelimiterblock method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapDelimiterBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapendblock method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapEndBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapitemblock method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapItemBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapbeginblock method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapBeginBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapdelimiterblock method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapDelimiterBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapendblock method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapEndBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapitemblock method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapItemBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.instantiation.procedureinstantiation.endblock method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.EndBlock.__len__"]], "__len__() (pyvhdlparser.blocks.instantiation.procedureinstantiation.entityinstantiationblock method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.EntityInstantiationBlock.__len__"]], "__len__() (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapbeginblock method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapBeginBlock.__len__"]], "__len__() (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapdelimiterblock method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapDelimiterBlock.__len__"]], "__len__() (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapendblock method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapEndBlock.__len__"]], "__len__() (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapitemblock method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapItemBlock.__len__"]], "__len__() (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapbeginblock method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapBeginBlock.__len__"]], "__len__() (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapdelimiterblock method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapDelimiterBlock.__len__"]], "__len__() (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapendblock method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapEndBlock.__len__"]], "__len__() (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapitemblock method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapItemBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.instantiation.procedureinstantiation.endblock method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.EndBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.instantiation.procedureinstantiation.entityinstantiationblock method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.EntityInstantiationBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapbeginblock method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapBeginBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapdelimiterblock method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapDelimiterBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapendblock method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapEndBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapitemblock method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapItemBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapbeginblock method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapBeginBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapdelimiterblock method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapDelimiterBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapendblock method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapEndBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapitemblock method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapItemBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.instantiation.procedureinstantiation.endblock method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.EndBlock.__str__"]], "__str__() (pyvhdlparser.blocks.instantiation.procedureinstantiation.entityinstantiationblock method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.EntityInstantiationBlock.__str__"]], "__str__() (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapbeginblock method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapBeginBlock.__str__"]], "__str__() (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapdelimiterblock method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapDelimiterBlock.__str__"]], "__str__() (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapendblock method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapEndBlock.__str__"]], "__str__() (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapitemblock method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapItemBlock.__str__"]], "__str__() (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapbeginblock method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapBeginBlock.__str__"]], "__str__() (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapdelimiterblock method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapDelimiterBlock.__str__"]], "__str__() (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapendblock method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapEndBlock.__str__"]], "__str__() (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapitemblock method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapItemBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.instantiation.procedureinstantiation.endblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.EndBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.instantiation.procedureinstantiation.entityinstantiationblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.EntityInstantiationBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapbeginblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapBeginBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapdelimiterblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapDelimiterBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapendblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapEndBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapitemblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapItemBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapbeginblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapBeginBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapdelimiterblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapDelimiterBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapendblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapEndBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapitemblock attribute)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapItemBlock._previousBlock"]], "pyvhdlparser.blocks.instantiation.procedureinstantiation": [[146, "module-pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation"]], "stateerror() (pyvhdlparser.blocks.instantiation.procedureinstantiation.endblock class method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.EndBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.instantiation.procedureinstantiation.entityinstantiationblock class method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.EntityInstantiationBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapbeginblock class method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapBeginBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapdelimiterblock class method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapDelimiterBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapendblock class method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapEndBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.instantiation.procedureinstantiation.genericmapitemblock class method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.GenericMapItemBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapbeginblock class method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapBeginBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapdelimiterblock class method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapDelimiterBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapendblock class method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapEndBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.instantiation.procedureinstantiation.portmapitemblock class method)": [[146, "pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation.PortMapItemBlock.stateError"]], "endtoken (pyvhdlparser.blocks.interfaceobject.interfaceconstantblock attribute)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceConstantBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.interfaceobject.interfaceobjectblock attribute)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceObjectBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.interfaceobject.interfacesignalblock attribute)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceSignalBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.interfaceobject.interfacetypeblock attribute)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceTypeBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.interfaceobject.interfacevariableblock attribute)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceVariableBlock.EndToken"]], "interfaceconstantblock (class in pyvhdlparser.blocks.interfaceobject)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceConstantBlock"]], "interfaceobjectblock (class in pyvhdlparser.blocks.interfaceobject)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceObjectBlock"]], "interfacesignalblock (class in pyvhdlparser.blocks.interfaceobject)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceSignalBlock"]], "interfacetypeblock (class in pyvhdlparser.blocks.interfaceobject)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceTypeBlock"]], "interfacevariableblock (class in pyvhdlparser.blocks.interfaceobject)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceVariableBlock"]], "length (pyvhdlparser.blocks.interfaceobject.interfaceconstantblock property)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceConstantBlock.Length"]], "length (pyvhdlparser.blocks.interfaceobject.interfaceobjectblock property)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceObjectBlock.Length"]], "length (pyvhdlparser.blocks.interfaceobject.interfacesignalblock property)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceSignalBlock.Length"]], "length (pyvhdlparser.blocks.interfaceobject.interfacetypeblock property)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceTypeBlock.Length"]], "length (pyvhdlparser.blocks.interfaceobject.interfacevariableblock property)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceVariableBlock.Length"]], "multipart (pyvhdlparser.blocks.interfaceobject.interfaceconstantblock attribute)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceConstantBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.interfaceobject.interfaceobjectblock attribute)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceObjectBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.interfaceobject.interfacesignalblock attribute)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceSignalBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.interfaceobject.interfacetypeblock attribute)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceTypeBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.interfaceobject.interfacevariableblock attribute)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceVariableBlock.MultiPart"]], "nextblock (pyvhdlparser.blocks.interfaceobject.interfaceconstantblock attribute)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceConstantBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.interfaceobject.interfaceobjectblock attribute)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceObjectBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.interfaceobject.interfacesignalblock attribute)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceSignalBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.interfaceobject.interfacetypeblock attribute)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceTypeBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.interfaceobject.interfacevariableblock attribute)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceVariableBlock.NextBlock"]], "starttoken (pyvhdlparser.blocks.interfaceobject.interfaceconstantblock attribute)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceConstantBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.interfaceobject.interfaceobjectblock attribute)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceObjectBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.interfaceobject.interfacesignalblock attribute)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceSignalBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.interfaceobject.interfacetypeblock attribute)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceTypeBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.interfaceobject.interfacevariableblock attribute)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceVariableBlock.StartToken"]], "states (pyvhdlparser.blocks.interfaceobject.interfaceconstantblock property)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceConstantBlock.States"]], "states (pyvhdlparser.blocks.interfaceobject.interfaceobjectblock property)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceObjectBlock.States"]], "states (pyvhdlparser.blocks.interfaceobject.interfacesignalblock property)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceSignalBlock.States"]], "states (pyvhdlparser.blocks.interfaceobject.interfacetypeblock property)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceTypeBlock.States"]], "states (pyvhdlparser.blocks.interfaceobject.interfacevariableblock property)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceVariableBlock.States"]], "__states__ (pyvhdlparser.blocks.interfaceobject.interfaceconstantblock attribute)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceConstantBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.interfaceobject.interfaceobjectblock attribute)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceObjectBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.interfaceobject.interfacesignalblock attribute)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceSignalBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.interfaceobject.interfacetypeblock attribute)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceTypeBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.interfaceobject.interfacevariableblock attribute)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceVariableBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.interfaceobject.interfaceconstantblock method)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceConstantBlock.__init__"]], "__init__() (pyvhdlparser.blocks.interfaceobject.interfaceobjectblock method)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceObjectBlock.__init__"]], "__init__() (pyvhdlparser.blocks.interfaceobject.interfacesignalblock method)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceSignalBlock.__init__"]], "__init__() (pyvhdlparser.blocks.interfaceobject.interfacetypeblock method)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceTypeBlock.__init__"]], "__init__() (pyvhdlparser.blocks.interfaceobject.interfacevariableblock method)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceVariableBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.interfaceobject.interfaceconstantblock method)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceConstantBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.interfaceobject.interfaceobjectblock method)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceObjectBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.interfaceobject.interfacesignalblock method)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceSignalBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.interfaceobject.interfacetypeblock method)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceTypeBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.interfaceobject.interfacevariableblock method)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceVariableBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.interfaceobject.interfaceconstantblock method)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceConstantBlock.__len__"]], "__len__() (pyvhdlparser.blocks.interfaceobject.interfaceobjectblock method)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceObjectBlock.__len__"]], "__len__() (pyvhdlparser.blocks.interfaceobject.interfacesignalblock method)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceSignalBlock.__len__"]], "__len__() (pyvhdlparser.blocks.interfaceobject.interfacetypeblock method)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceTypeBlock.__len__"]], "__len__() (pyvhdlparser.blocks.interfaceobject.interfacevariableblock method)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceVariableBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.interfaceobject.interfaceconstantblock method)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceConstantBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.interfaceobject.interfaceobjectblock method)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceObjectBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.interfaceobject.interfacesignalblock method)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceSignalBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.interfaceobject.interfacetypeblock method)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceTypeBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.interfaceobject.interfacevariableblock method)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceVariableBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.interfaceobject.interfaceconstantblock method)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceConstantBlock.__str__"]], "__str__() (pyvhdlparser.blocks.interfaceobject.interfaceobjectblock method)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceObjectBlock.__str__"]], "__str__() (pyvhdlparser.blocks.interfaceobject.interfacesignalblock method)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceSignalBlock.__str__"]], "__str__() (pyvhdlparser.blocks.interfaceobject.interfacetypeblock method)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceTypeBlock.__str__"]], "__str__() (pyvhdlparser.blocks.interfaceobject.interfacevariableblock method)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceVariableBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.interfaceobject.interfaceconstantblock attribute)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceConstantBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.interfaceobject.interfaceobjectblock attribute)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceObjectBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.interfaceobject.interfacesignalblock attribute)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceSignalBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.interfaceobject.interfacetypeblock attribute)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceTypeBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.interfaceobject.interfacevariableblock attribute)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceVariableBlock._previousBlock"]], "pyvhdlparser.blocks.interfaceobject": [[147, "module-pyVHDLParser.Blocks.InterfaceObject"]], "stateerror() (pyvhdlparser.blocks.interfaceobject.interfaceconstantblock class method)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceConstantBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.interfaceobject.interfaceobjectblock class method)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceObjectBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.interfaceobject.interfacesignalblock class method)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceSignalBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.interfaceobject.interfacetypeblock class method)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceTypeBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.interfaceobject.interfacevariableblock class method)": [[147, "pyVHDLParser.Blocks.InterfaceObject.InterfaceVariableBlock.stateError"]], "pyvhdlparser.blocks.list": [[148, "module-pyVHDLParser.Blocks.List"]], "closeblock (class in pyvhdlparser.blocks.list.genericlist)": [[149, "pyVHDLParser.Blocks.List.GenericList.CloseBlock"]], "delimiter_block (pyvhdlparser.blocks.list.genericlist.genericlistinterfaceconstantblock attribute)": [[149, "pyVHDLParser.Blocks.List.GenericList.GenericListInterfaceConstantBlock.DELIMITER_BLOCK"]], "delimiter_block (pyvhdlparser.blocks.list.genericlist.genericlistinterfacetypeblock attribute)": [[149, "pyVHDLParser.Blocks.List.GenericList.GenericListInterfaceTypeBlock.DELIMITER_BLOCK"]], "defaultvalueexpressionblock (class in pyvhdlparser.blocks.list.genericlist)": [[149, "pyVHDLParser.Blocks.List.GenericList.DefaultValueExpressionBlock"]], "delimiterblock (class in pyvhdlparser.blocks.list.genericlist)": [[149, "pyVHDLParser.Blocks.List.GenericList.DelimiterBlock"]], "exit_block (pyvhdlparser.blocks.list.genericlist.defaultvalueexpressionblock attribute)": [[149, "pyVHDLParser.Blocks.List.GenericList.DefaultValueExpressionBlock.EXIT_BLOCK"]], "exit_token (pyvhdlparser.blocks.list.genericlist.defaultvalueexpressionblock attribute)": [[149, "pyVHDLParser.Blocks.List.GenericList.DefaultValueExpressionBlock.EXIT_TOKEN"]], "expression (pyvhdlparser.blocks.list.genericlist.genericlistinterfaceconstantblock attribute)": [[149, "pyVHDLParser.Blocks.List.GenericList.GenericListInterfaceConstantBlock.EXPRESSION"]], "endtoken (pyvhdlparser.blocks.list.genericlist.closeblock attribute)": [[149, "pyVHDLParser.Blocks.List.GenericList.CloseBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.list.genericlist.defaultvalueexpressionblock attribute)": [[149, "pyVHDLParser.Blocks.List.GenericList.DefaultValueExpressionBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.list.genericlist.delimiterblock attribute)": [[149, "pyVHDLParser.Blocks.List.GenericList.DelimiterBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.list.genericlist.genericlistinterfaceconstantblock attribute)": [[149, "pyVHDLParser.Blocks.List.GenericList.GenericListInterfaceConstantBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.list.genericlist.genericlistinterfacetypeblock attribute)": [[149, "pyVHDLParser.Blocks.List.GenericList.GenericListInterfaceTypeBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.list.genericlist.openblock attribute)": [[149, "pyVHDLParser.Blocks.List.GenericList.OpenBlock.EndToken"]], "genericlistinterfaceconstantblock (class in pyvhdlparser.blocks.list.genericlist)": [[149, "pyVHDLParser.Blocks.List.GenericList.GenericListInterfaceConstantBlock"]], "genericlistinterfacetypeblock (class in pyvhdlparser.blocks.list.genericlist)": [[149, "pyVHDLParser.Blocks.List.GenericList.GenericListInterfaceTypeBlock"]], "length (pyvhdlparser.blocks.list.genericlist.closeblock property)": [[149, "pyVHDLParser.Blocks.List.GenericList.CloseBlock.Length"]], "length (pyvhdlparser.blocks.list.genericlist.defaultvalueexpressionblock property)": [[149, "pyVHDLParser.Blocks.List.GenericList.DefaultValueExpressionBlock.Length"]], "length (pyvhdlparser.blocks.list.genericlist.delimiterblock property)": [[149, "pyVHDLParser.Blocks.List.GenericList.DelimiterBlock.Length"]], "length (pyvhdlparser.blocks.list.genericlist.genericlistinterfaceconstantblock property)": [[149, "pyVHDLParser.Blocks.List.GenericList.GenericListInterfaceConstantBlock.Length"]], "length (pyvhdlparser.blocks.list.genericlist.genericlistinterfacetypeblock property)": [[149, "pyVHDLParser.Blocks.List.GenericList.GenericListInterfaceTypeBlock.Length"]], "length (pyvhdlparser.blocks.list.genericlist.openblock property)": [[149, "pyVHDLParser.Blocks.List.GenericList.OpenBlock.Length"]], "multipart (pyvhdlparser.blocks.list.genericlist.closeblock attribute)": [[149, "pyVHDLParser.Blocks.List.GenericList.CloseBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.list.genericlist.defaultvalueexpressionblock attribute)": [[149, "pyVHDLParser.Blocks.List.GenericList.DefaultValueExpressionBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.list.genericlist.delimiterblock attribute)": [[149, "pyVHDLParser.Blocks.List.GenericList.DelimiterBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.list.genericlist.genericlistinterfaceconstantblock attribute)": [[149, "pyVHDLParser.Blocks.List.GenericList.GenericListInterfaceConstantBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.list.genericlist.genericlistinterfacetypeblock attribute)": [[149, "pyVHDLParser.Blocks.List.GenericList.GenericListInterfaceTypeBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.list.genericlist.openblock attribute)": [[149, "pyVHDLParser.Blocks.List.GenericList.OpenBlock.MultiPart"]], "nextblock (pyvhdlparser.blocks.list.genericlist.closeblock attribute)": [[149, "pyVHDLParser.Blocks.List.GenericList.CloseBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.list.genericlist.defaultvalueexpressionblock attribute)": [[149, "pyVHDLParser.Blocks.List.GenericList.DefaultValueExpressionBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.list.genericlist.delimiterblock attribute)": [[149, "pyVHDLParser.Blocks.List.GenericList.DelimiterBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.list.genericlist.genericlistinterfaceconstantblock attribute)": [[149, "pyVHDLParser.Blocks.List.GenericList.GenericListInterfaceConstantBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.list.genericlist.genericlistinterfacetypeblock attribute)": [[149, "pyVHDLParser.Blocks.List.GenericList.GenericListInterfaceTypeBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.list.genericlist.openblock attribute)": [[149, "pyVHDLParser.Blocks.List.GenericList.OpenBlock.NextBlock"]], "openblock (class in pyvhdlparser.blocks.list.genericlist)": [[149, "pyVHDLParser.Blocks.List.GenericList.OpenBlock"]], "starttoken (pyvhdlparser.blocks.list.genericlist.closeblock attribute)": [[149, "pyVHDLParser.Blocks.List.GenericList.CloseBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.list.genericlist.defaultvalueexpressionblock attribute)": [[149, "pyVHDLParser.Blocks.List.GenericList.DefaultValueExpressionBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.list.genericlist.delimiterblock attribute)": [[149, "pyVHDLParser.Blocks.List.GenericList.DelimiterBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.list.genericlist.genericlistinterfaceconstantblock attribute)": [[149, "pyVHDLParser.Blocks.List.GenericList.GenericListInterfaceConstantBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.list.genericlist.genericlistinterfacetypeblock attribute)": [[149, "pyVHDLParser.Blocks.List.GenericList.GenericListInterfaceTypeBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.list.genericlist.openblock attribute)": [[149, "pyVHDLParser.Blocks.List.GenericList.OpenBlock.StartToken"]], "states (pyvhdlparser.blocks.list.genericlist.closeblock property)": [[149, "pyVHDLParser.Blocks.List.GenericList.CloseBlock.States"]], "states (pyvhdlparser.blocks.list.genericlist.defaultvalueexpressionblock property)": [[149, "pyVHDLParser.Blocks.List.GenericList.DefaultValueExpressionBlock.States"]], "states (pyvhdlparser.blocks.list.genericlist.delimiterblock property)": [[149, "pyVHDLParser.Blocks.List.GenericList.DelimiterBlock.States"]], "states (pyvhdlparser.blocks.list.genericlist.genericlistinterfaceconstantblock property)": [[149, "pyVHDLParser.Blocks.List.GenericList.GenericListInterfaceConstantBlock.States"]], "states (pyvhdlparser.blocks.list.genericlist.genericlistinterfacetypeblock property)": [[149, "pyVHDLParser.Blocks.List.GenericList.GenericListInterfaceTypeBlock.States"]], "states (pyvhdlparser.blocks.list.genericlist.openblock property)": [[149, "pyVHDLParser.Blocks.List.GenericList.OpenBlock.States"]], "__states__ (pyvhdlparser.blocks.list.genericlist.closeblock attribute)": [[149, "pyVHDLParser.Blocks.List.GenericList.CloseBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.list.genericlist.defaultvalueexpressionblock attribute)": [[149, "pyVHDLParser.Blocks.List.GenericList.DefaultValueExpressionBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.list.genericlist.delimiterblock attribute)": [[149, "pyVHDLParser.Blocks.List.GenericList.DelimiterBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.list.genericlist.genericlistinterfaceconstantblock attribute)": [[149, "pyVHDLParser.Blocks.List.GenericList.GenericListInterfaceConstantBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.list.genericlist.genericlistinterfacetypeblock attribute)": [[149, "pyVHDLParser.Blocks.List.GenericList.GenericListInterfaceTypeBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.list.genericlist.openblock attribute)": [[149, "pyVHDLParser.Blocks.List.GenericList.OpenBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.list.genericlist.closeblock method)": [[149, "pyVHDLParser.Blocks.List.GenericList.CloseBlock.__init__"]], "__init__() (pyvhdlparser.blocks.list.genericlist.defaultvalueexpressionblock method)": [[149, "pyVHDLParser.Blocks.List.GenericList.DefaultValueExpressionBlock.__init__"]], "__init__() (pyvhdlparser.blocks.list.genericlist.delimiterblock method)": [[149, "pyVHDLParser.Blocks.List.GenericList.DelimiterBlock.__init__"]], "__init__() (pyvhdlparser.blocks.list.genericlist.genericlistinterfaceconstantblock method)": [[149, "pyVHDLParser.Blocks.List.GenericList.GenericListInterfaceConstantBlock.__init__"]], "__init__() (pyvhdlparser.blocks.list.genericlist.genericlistinterfacetypeblock method)": [[149, "pyVHDLParser.Blocks.List.GenericList.GenericListInterfaceTypeBlock.__init__"]], "__init__() (pyvhdlparser.blocks.list.genericlist.openblock method)": [[149, "pyVHDLParser.Blocks.List.GenericList.OpenBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.list.genericlist.closeblock method)": [[149, "pyVHDLParser.Blocks.List.GenericList.CloseBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.list.genericlist.defaultvalueexpressionblock method)": [[149, "pyVHDLParser.Blocks.List.GenericList.DefaultValueExpressionBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.list.genericlist.delimiterblock method)": [[149, "pyVHDLParser.Blocks.List.GenericList.DelimiterBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.list.genericlist.genericlistinterfaceconstantblock method)": [[149, "pyVHDLParser.Blocks.List.GenericList.GenericListInterfaceConstantBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.list.genericlist.genericlistinterfacetypeblock method)": [[149, "pyVHDLParser.Blocks.List.GenericList.GenericListInterfaceTypeBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.list.genericlist.openblock method)": [[149, "pyVHDLParser.Blocks.List.GenericList.OpenBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.list.genericlist.closeblock method)": [[149, "pyVHDLParser.Blocks.List.GenericList.CloseBlock.__len__"]], "__len__() (pyvhdlparser.blocks.list.genericlist.defaultvalueexpressionblock method)": [[149, "pyVHDLParser.Blocks.List.GenericList.DefaultValueExpressionBlock.__len__"]], "__len__() (pyvhdlparser.blocks.list.genericlist.delimiterblock method)": [[149, "pyVHDLParser.Blocks.List.GenericList.DelimiterBlock.__len__"]], "__len__() (pyvhdlparser.blocks.list.genericlist.genericlistinterfaceconstantblock method)": [[149, "pyVHDLParser.Blocks.List.GenericList.GenericListInterfaceConstantBlock.__len__"]], "__len__() (pyvhdlparser.blocks.list.genericlist.genericlistinterfacetypeblock method)": [[149, "pyVHDLParser.Blocks.List.GenericList.GenericListInterfaceTypeBlock.__len__"]], "__len__() (pyvhdlparser.blocks.list.genericlist.openblock method)": [[149, "pyVHDLParser.Blocks.List.GenericList.OpenBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.list.genericlist.closeblock method)": [[149, "pyVHDLParser.Blocks.List.GenericList.CloseBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.list.genericlist.defaultvalueexpressionblock method)": [[149, "pyVHDLParser.Blocks.List.GenericList.DefaultValueExpressionBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.list.genericlist.delimiterblock method)": [[149, "pyVHDLParser.Blocks.List.GenericList.DelimiterBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.list.genericlist.genericlistinterfaceconstantblock method)": [[149, "pyVHDLParser.Blocks.List.GenericList.GenericListInterfaceConstantBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.list.genericlist.genericlistinterfacetypeblock method)": [[149, "pyVHDLParser.Blocks.List.GenericList.GenericListInterfaceTypeBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.list.genericlist.openblock method)": [[149, "pyVHDLParser.Blocks.List.GenericList.OpenBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.list.genericlist.closeblock method)": [[149, "pyVHDLParser.Blocks.List.GenericList.CloseBlock.__str__"]], "__str__() (pyvhdlparser.blocks.list.genericlist.defaultvalueexpressionblock method)": [[149, "pyVHDLParser.Blocks.List.GenericList.DefaultValueExpressionBlock.__str__"]], "__str__() (pyvhdlparser.blocks.list.genericlist.delimiterblock method)": [[149, "pyVHDLParser.Blocks.List.GenericList.DelimiterBlock.__str__"]], "__str__() (pyvhdlparser.blocks.list.genericlist.genericlistinterfaceconstantblock method)": [[149, "pyVHDLParser.Blocks.List.GenericList.GenericListInterfaceConstantBlock.__str__"]], "__str__() (pyvhdlparser.blocks.list.genericlist.genericlistinterfacetypeblock method)": [[149, "pyVHDLParser.Blocks.List.GenericList.GenericListInterfaceTypeBlock.__str__"]], "__str__() (pyvhdlparser.blocks.list.genericlist.openblock method)": [[149, "pyVHDLParser.Blocks.List.GenericList.OpenBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.list.genericlist.closeblock attribute)": [[149, "pyVHDLParser.Blocks.List.GenericList.CloseBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.list.genericlist.defaultvalueexpressionblock attribute)": [[149, "pyVHDLParser.Blocks.List.GenericList.DefaultValueExpressionBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.list.genericlist.delimiterblock attribute)": [[149, "pyVHDLParser.Blocks.List.GenericList.DelimiterBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.list.genericlist.genericlistinterfaceconstantblock attribute)": [[149, "pyVHDLParser.Blocks.List.GenericList.GenericListInterfaceConstantBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.list.genericlist.genericlistinterfacetypeblock attribute)": [[149, "pyVHDLParser.Blocks.List.GenericList.GenericListInterfaceTypeBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.list.genericlist.openblock attribute)": [[149, "pyVHDLParser.Blocks.List.GenericList.OpenBlock._previousBlock"]], "pyvhdlparser.blocks.list.genericlist": [[149, "module-pyVHDLParser.Blocks.List.GenericList"]], "stateerror() (pyvhdlparser.blocks.list.genericlist.closeblock class method)": [[149, "pyVHDLParser.Blocks.List.GenericList.CloseBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.list.genericlist.defaultvalueexpressionblock class method)": [[149, "pyVHDLParser.Blocks.List.GenericList.DefaultValueExpressionBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.list.genericlist.delimiterblock class method)": [[149, "pyVHDLParser.Blocks.List.GenericList.DelimiterBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.list.genericlist.genericlistinterfaceconstantblock class method)": [[149, "pyVHDLParser.Blocks.List.GenericList.GenericListInterfaceConstantBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.list.genericlist.genericlistinterfacetypeblock class method)": [[149, "pyVHDLParser.Blocks.List.GenericList.GenericListInterfaceTypeBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.list.genericlist.openblock class method)": [[149, "pyVHDLParser.Blocks.List.GenericList.OpenBlock.stateError"]], "closeblock (class in pyvhdlparser.blocks.list.genericmaplist)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.CloseBlock"]], "delimiterblock (class in pyvhdlparser.blocks.list.genericmaplist)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.DelimiterBlock"]], "endtoken (pyvhdlparser.blocks.list.genericmaplist.closeblock attribute)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.CloseBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.list.genericmaplist.delimiterblock attribute)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.DelimiterBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.list.genericmaplist.itemblock attribute)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.ItemBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.list.genericmaplist.openblock attribute)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.OpenBlock.EndToken"]], "itemblock (class in pyvhdlparser.blocks.list.genericmaplist)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.ItemBlock"]], "length (pyvhdlparser.blocks.list.genericmaplist.closeblock property)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.CloseBlock.Length"]], "length (pyvhdlparser.blocks.list.genericmaplist.delimiterblock property)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.DelimiterBlock.Length"]], "length (pyvhdlparser.blocks.list.genericmaplist.itemblock property)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.ItemBlock.Length"]], "length (pyvhdlparser.blocks.list.genericmaplist.openblock property)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.OpenBlock.Length"]], "multipart (pyvhdlparser.blocks.list.genericmaplist.closeblock attribute)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.CloseBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.list.genericmaplist.delimiterblock attribute)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.DelimiterBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.list.genericmaplist.itemblock attribute)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.ItemBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.list.genericmaplist.openblock attribute)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.OpenBlock.MultiPart"]], "nextblock (pyvhdlparser.blocks.list.genericmaplist.closeblock attribute)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.CloseBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.list.genericmaplist.delimiterblock attribute)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.DelimiterBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.list.genericmaplist.itemblock attribute)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.ItemBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.list.genericmaplist.openblock attribute)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.OpenBlock.NextBlock"]], "openblock (class in pyvhdlparser.blocks.list.genericmaplist)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.OpenBlock"]], "starttoken (pyvhdlparser.blocks.list.genericmaplist.closeblock attribute)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.CloseBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.list.genericmaplist.delimiterblock attribute)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.DelimiterBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.list.genericmaplist.itemblock attribute)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.ItemBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.list.genericmaplist.openblock attribute)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.OpenBlock.StartToken"]], "states (pyvhdlparser.blocks.list.genericmaplist.closeblock property)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.CloseBlock.States"]], "states (pyvhdlparser.blocks.list.genericmaplist.delimiterblock property)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.DelimiterBlock.States"]], "states (pyvhdlparser.blocks.list.genericmaplist.itemblock property)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.ItemBlock.States"]], "states (pyvhdlparser.blocks.list.genericmaplist.openblock property)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.OpenBlock.States"]], "__states__ (pyvhdlparser.blocks.list.genericmaplist.closeblock attribute)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.CloseBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.list.genericmaplist.delimiterblock attribute)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.DelimiterBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.list.genericmaplist.itemblock attribute)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.ItemBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.list.genericmaplist.openblock attribute)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.OpenBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.list.genericmaplist.closeblock method)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.CloseBlock.__init__"]], "__init__() (pyvhdlparser.blocks.list.genericmaplist.delimiterblock method)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.DelimiterBlock.__init__"]], "__init__() (pyvhdlparser.blocks.list.genericmaplist.itemblock method)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.ItemBlock.__init__"]], "__init__() (pyvhdlparser.blocks.list.genericmaplist.openblock method)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.OpenBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.list.genericmaplist.closeblock method)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.CloseBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.list.genericmaplist.delimiterblock method)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.DelimiterBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.list.genericmaplist.itemblock method)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.ItemBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.list.genericmaplist.openblock method)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.OpenBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.list.genericmaplist.closeblock method)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.CloseBlock.__len__"]], "__len__() (pyvhdlparser.blocks.list.genericmaplist.delimiterblock method)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.DelimiterBlock.__len__"]], "__len__() (pyvhdlparser.blocks.list.genericmaplist.itemblock method)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.ItemBlock.__len__"]], "__len__() (pyvhdlparser.blocks.list.genericmaplist.openblock method)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.OpenBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.list.genericmaplist.closeblock method)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.CloseBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.list.genericmaplist.delimiterblock method)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.DelimiterBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.list.genericmaplist.itemblock method)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.ItemBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.list.genericmaplist.openblock method)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.OpenBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.list.genericmaplist.closeblock method)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.CloseBlock.__str__"]], "__str__() (pyvhdlparser.blocks.list.genericmaplist.delimiterblock method)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.DelimiterBlock.__str__"]], "__str__() (pyvhdlparser.blocks.list.genericmaplist.itemblock method)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.ItemBlock.__str__"]], "__str__() (pyvhdlparser.blocks.list.genericmaplist.openblock method)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.OpenBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.list.genericmaplist.closeblock attribute)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.CloseBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.list.genericmaplist.delimiterblock attribute)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.DelimiterBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.list.genericmaplist.itemblock attribute)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.ItemBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.list.genericmaplist.openblock attribute)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.OpenBlock._previousBlock"]], "pyvhdlparser.blocks.list.genericmaplist": [[150, "module-pyVHDLParser.Blocks.List.GenericMapList"]], "stateerror() (pyvhdlparser.blocks.list.genericmaplist.closeblock class method)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.CloseBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.list.genericmaplist.delimiterblock class method)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.DelimiterBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.list.genericmaplist.itemblock class method)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.ItemBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.list.genericmaplist.openblock class method)": [[150, "pyVHDLParser.Blocks.List.GenericMapList.OpenBlock.stateError"]], "closeblock (class in pyvhdlparser.blocks.list.parameterlist)": [[151, "pyVHDLParser.Blocks.List.ParameterList.CloseBlock"]], "delimiter_block (pyvhdlparser.blocks.list.parameterlist.parameterlistinterfaceconstantblock attribute)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceConstantBlock.DELIMITER_BLOCK"]], "delimiter_block (pyvhdlparser.blocks.list.parameterlist.parameterlistinterfacesignalblock attribute)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceSignalBlock.DELIMITER_BLOCK"]], "delimiter_block (pyvhdlparser.blocks.list.parameterlist.parameterlistinterfacevariableblock attribute)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceVariableBlock.DELIMITER_BLOCK"]], "delimiterblock (class in pyvhdlparser.blocks.list.parameterlist)": [[151, "pyVHDLParser.Blocks.List.ParameterList.DelimiterBlock"]], "endtoken (pyvhdlparser.blocks.list.parameterlist.closeblock attribute)": [[151, "pyVHDLParser.Blocks.List.ParameterList.CloseBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.list.parameterlist.delimiterblock attribute)": [[151, "pyVHDLParser.Blocks.List.ParameterList.DelimiterBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.list.parameterlist.itemblock attribute)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ItemBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.list.parameterlist.openblock attribute)": [[151, "pyVHDLParser.Blocks.List.ParameterList.OpenBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.list.parameterlist.parameterlistinterfaceconstantblock attribute)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceConstantBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.list.parameterlist.parameterlistinterfacesignalblock attribute)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceSignalBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.list.parameterlist.parameterlistinterfacevariableblock attribute)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceVariableBlock.EndToken"]], "itemblock (class in pyvhdlparser.blocks.list.parameterlist)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ItemBlock"]], "length (pyvhdlparser.blocks.list.parameterlist.closeblock property)": [[151, "pyVHDLParser.Blocks.List.ParameterList.CloseBlock.Length"]], "length (pyvhdlparser.blocks.list.parameterlist.delimiterblock property)": [[151, "pyVHDLParser.Blocks.List.ParameterList.DelimiterBlock.Length"]], "length (pyvhdlparser.blocks.list.parameterlist.itemblock property)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ItemBlock.Length"]], "length (pyvhdlparser.blocks.list.parameterlist.openblock property)": [[151, "pyVHDLParser.Blocks.List.ParameterList.OpenBlock.Length"]], "length (pyvhdlparser.blocks.list.parameterlist.parameterlistinterfaceconstantblock property)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceConstantBlock.Length"]], "length (pyvhdlparser.blocks.list.parameterlist.parameterlistinterfacesignalblock property)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceSignalBlock.Length"]], "length (pyvhdlparser.blocks.list.parameterlist.parameterlistinterfacevariableblock property)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceVariableBlock.Length"]], "multipart (pyvhdlparser.blocks.list.parameterlist.closeblock attribute)": [[151, "pyVHDLParser.Blocks.List.ParameterList.CloseBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.list.parameterlist.delimiterblock attribute)": [[151, "pyVHDLParser.Blocks.List.ParameterList.DelimiterBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.list.parameterlist.itemblock attribute)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ItemBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.list.parameterlist.openblock attribute)": [[151, "pyVHDLParser.Blocks.List.ParameterList.OpenBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.list.parameterlist.parameterlistinterfaceconstantblock attribute)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceConstantBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.list.parameterlist.parameterlistinterfacesignalblock attribute)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceSignalBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.list.parameterlist.parameterlistinterfacevariableblock attribute)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceVariableBlock.MultiPart"]], "nextblock (pyvhdlparser.blocks.list.parameterlist.closeblock attribute)": [[151, "pyVHDLParser.Blocks.List.ParameterList.CloseBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.list.parameterlist.delimiterblock attribute)": [[151, "pyVHDLParser.Blocks.List.ParameterList.DelimiterBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.list.parameterlist.itemblock attribute)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ItemBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.list.parameterlist.openblock attribute)": [[151, "pyVHDLParser.Blocks.List.ParameterList.OpenBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.list.parameterlist.parameterlistinterfaceconstantblock attribute)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceConstantBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.list.parameterlist.parameterlistinterfacesignalblock attribute)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceSignalBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.list.parameterlist.parameterlistinterfacevariableblock attribute)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceVariableBlock.NextBlock"]], "openblock (class in pyvhdlparser.blocks.list.parameterlist)": [[151, "pyVHDLParser.Blocks.List.ParameterList.OpenBlock"]], "parameterlistinterfaceconstantblock (class in pyvhdlparser.blocks.list.parameterlist)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceConstantBlock"]], "parameterlistinterfacesignalblock (class in pyvhdlparser.blocks.list.parameterlist)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceSignalBlock"]], "parameterlistinterfacevariableblock (class in pyvhdlparser.blocks.list.parameterlist)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceVariableBlock"]], "starttoken (pyvhdlparser.blocks.list.parameterlist.closeblock attribute)": [[151, "pyVHDLParser.Blocks.List.ParameterList.CloseBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.list.parameterlist.delimiterblock attribute)": [[151, "pyVHDLParser.Blocks.List.ParameterList.DelimiterBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.list.parameterlist.itemblock attribute)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ItemBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.list.parameterlist.openblock attribute)": [[151, "pyVHDLParser.Blocks.List.ParameterList.OpenBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.list.parameterlist.parameterlistinterfaceconstantblock attribute)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceConstantBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.list.parameterlist.parameterlistinterfacesignalblock attribute)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceSignalBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.list.parameterlist.parameterlistinterfacevariableblock attribute)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceVariableBlock.StartToken"]], "states (pyvhdlparser.blocks.list.parameterlist.closeblock property)": [[151, "pyVHDLParser.Blocks.List.ParameterList.CloseBlock.States"]], "states (pyvhdlparser.blocks.list.parameterlist.delimiterblock property)": [[151, "pyVHDLParser.Blocks.List.ParameterList.DelimiterBlock.States"]], "states (pyvhdlparser.blocks.list.parameterlist.itemblock property)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ItemBlock.States"]], "states (pyvhdlparser.blocks.list.parameterlist.openblock property)": [[151, "pyVHDLParser.Blocks.List.ParameterList.OpenBlock.States"]], "states (pyvhdlparser.blocks.list.parameterlist.parameterlistinterfaceconstantblock property)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceConstantBlock.States"]], "states (pyvhdlparser.blocks.list.parameterlist.parameterlistinterfacesignalblock property)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceSignalBlock.States"]], "states (pyvhdlparser.blocks.list.parameterlist.parameterlistinterfacevariableblock property)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceVariableBlock.States"]], "__states__ (pyvhdlparser.blocks.list.parameterlist.closeblock attribute)": [[151, "pyVHDLParser.Blocks.List.ParameterList.CloseBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.list.parameterlist.delimiterblock attribute)": [[151, "pyVHDLParser.Blocks.List.ParameterList.DelimiterBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.list.parameterlist.itemblock attribute)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ItemBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.list.parameterlist.openblock attribute)": [[151, "pyVHDLParser.Blocks.List.ParameterList.OpenBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.list.parameterlist.parameterlistinterfaceconstantblock attribute)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceConstantBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.list.parameterlist.parameterlistinterfacesignalblock attribute)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceSignalBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.list.parameterlist.parameterlistinterfacevariableblock attribute)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceVariableBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.list.parameterlist.closeblock method)": [[151, "pyVHDLParser.Blocks.List.ParameterList.CloseBlock.__init__"]], "__init__() (pyvhdlparser.blocks.list.parameterlist.delimiterblock method)": [[151, "pyVHDLParser.Blocks.List.ParameterList.DelimiterBlock.__init__"]], "__init__() (pyvhdlparser.blocks.list.parameterlist.itemblock method)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ItemBlock.__init__"]], "__init__() (pyvhdlparser.blocks.list.parameterlist.openblock method)": [[151, "pyVHDLParser.Blocks.List.ParameterList.OpenBlock.__init__"]], "__init__() (pyvhdlparser.blocks.list.parameterlist.parameterlistinterfaceconstantblock method)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceConstantBlock.__init__"]], "__init__() (pyvhdlparser.blocks.list.parameterlist.parameterlistinterfacesignalblock method)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceSignalBlock.__init__"]], "__init__() (pyvhdlparser.blocks.list.parameterlist.parameterlistinterfacevariableblock method)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceVariableBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.list.parameterlist.closeblock method)": [[151, "pyVHDLParser.Blocks.List.ParameterList.CloseBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.list.parameterlist.delimiterblock method)": [[151, "pyVHDLParser.Blocks.List.ParameterList.DelimiterBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.list.parameterlist.itemblock method)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ItemBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.list.parameterlist.openblock method)": [[151, "pyVHDLParser.Blocks.List.ParameterList.OpenBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.list.parameterlist.parameterlistinterfaceconstantblock method)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceConstantBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.list.parameterlist.parameterlistinterfacesignalblock method)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceSignalBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.list.parameterlist.parameterlistinterfacevariableblock method)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceVariableBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.list.parameterlist.closeblock method)": [[151, "pyVHDLParser.Blocks.List.ParameterList.CloseBlock.__len__"]], "__len__() (pyvhdlparser.blocks.list.parameterlist.delimiterblock method)": [[151, "pyVHDLParser.Blocks.List.ParameterList.DelimiterBlock.__len__"]], "__len__() (pyvhdlparser.blocks.list.parameterlist.itemblock method)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ItemBlock.__len__"]], "__len__() (pyvhdlparser.blocks.list.parameterlist.openblock method)": [[151, "pyVHDLParser.Blocks.List.ParameterList.OpenBlock.__len__"]], "__len__() (pyvhdlparser.blocks.list.parameterlist.parameterlistinterfaceconstantblock method)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceConstantBlock.__len__"]], "__len__() (pyvhdlparser.blocks.list.parameterlist.parameterlistinterfacesignalblock method)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceSignalBlock.__len__"]], "__len__() (pyvhdlparser.blocks.list.parameterlist.parameterlistinterfacevariableblock method)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceVariableBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.list.parameterlist.closeblock method)": [[151, "pyVHDLParser.Blocks.List.ParameterList.CloseBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.list.parameterlist.delimiterblock method)": [[151, "pyVHDLParser.Blocks.List.ParameterList.DelimiterBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.list.parameterlist.itemblock method)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ItemBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.list.parameterlist.openblock method)": [[151, "pyVHDLParser.Blocks.List.ParameterList.OpenBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.list.parameterlist.parameterlistinterfaceconstantblock method)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceConstantBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.list.parameterlist.parameterlistinterfacesignalblock method)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceSignalBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.list.parameterlist.parameterlistinterfacevariableblock method)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceVariableBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.list.parameterlist.closeblock method)": [[151, "pyVHDLParser.Blocks.List.ParameterList.CloseBlock.__str__"]], "__str__() (pyvhdlparser.blocks.list.parameterlist.delimiterblock method)": [[151, "pyVHDLParser.Blocks.List.ParameterList.DelimiterBlock.__str__"]], "__str__() (pyvhdlparser.blocks.list.parameterlist.itemblock method)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ItemBlock.__str__"]], "__str__() (pyvhdlparser.blocks.list.parameterlist.openblock method)": [[151, "pyVHDLParser.Blocks.List.ParameterList.OpenBlock.__str__"]], "__str__() (pyvhdlparser.blocks.list.parameterlist.parameterlistinterfaceconstantblock method)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceConstantBlock.__str__"]], "__str__() (pyvhdlparser.blocks.list.parameterlist.parameterlistinterfacesignalblock method)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceSignalBlock.__str__"]], "__str__() (pyvhdlparser.blocks.list.parameterlist.parameterlistinterfacevariableblock method)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceVariableBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.list.parameterlist.closeblock attribute)": [[151, "pyVHDLParser.Blocks.List.ParameterList.CloseBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.list.parameterlist.delimiterblock attribute)": [[151, "pyVHDLParser.Blocks.List.ParameterList.DelimiterBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.list.parameterlist.itemblock attribute)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ItemBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.list.parameterlist.openblock attribute)": [[151, "pyVHDLParser.Blocks.List.ParameterList.OpenBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.list.parameterlist.parameterlistinterfaceconstantblock attribute)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceConstantBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.list.parameterlist.parameterlistinterfacesignalblock attribute)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceSignalBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.list.parameterlist.parameterlistinterfacevariableblock attribute)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceVariableBlock._previousBlock"]], "pyvhdlparser.blocks.list.parameterlist": [[151, "module-pyVHDLParser.Blocks.List.ParameterList"]], "stateerror() (pyvhdlparser.blocks.list.parameterlist.closeblock class method)": [[151, "pyVHDLParser.Blocks.List.ParameterList.CloseBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.list.parameterlist.delimiterblock class method)": [[151, "pyVHDLParser.Blocks.List.ParameterList.DelimiterBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.list.parameterlist.itemblock class method)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ItemBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.list.parameterlist.openblock class method)": [[151, "pyVHDLParser.Blocks.List.ParameterList.OpenBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.list.parameterlist.parameterlistinterfaceconstantblock class method)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceConstantBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.list.parameterlist.parameterlistinterfacesignalblock class method)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceSignalBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.list.parameterlist.parameterlistinterfacevariableblock class method)": [[151, "pyVHDLParser.Blocks.List.ParameterList.ParameterListInterfaceVariableBlock.stateError"]], "closeblock (class in pyvhdlparser.blocks.list.portlist)": [[152, "pyVHDLParser.Blocks.List.PortList.CloseBlock"]], "delimiter_block (pyvhdlparser.blocks.list.portlist.portlistinterfacesignalblock attribute)": [[152, "pyVHDLParser.Blocks.List.PortList.PortListInterfaceSignalBlock.DELIMITER_BLOCK"]], "defaultvalueexpressionblock (class in pyvhdlparser.blocks.list.portlist)": [[152, "pyVHDLParser.Blocks.List.PortList.DefaultValueExpressionBlock"]], "delimiterblock (class in pyvhdlparser.blocks.list.portlist)": [[152, "pyVHDLParser.Blocks.List.PortList.DelimiterBlock"]], "exit_block (pyvhdlparser.blocks.list.portlist.defaultvalueexpressionblock attribute)": [[152, "pyVHDLParser.Blocks.List.PortList.DefaultValueExpressionBlock.EXIT_BLOCK"]], "exit_token (pyvhdlparser.blocks.list.portlist.defaultvalueexpressionblock attribute)": [[152, "pyVHDLParser.Blocks.List.PortList.DefaultValueExpressionBlock.EXIT_TOKEN"]], "expression (pyvhdlparser.blocks.list.portlist.portlistinterfacesignalblock attribute)": [[152, "pyVHDLParser.Blocks.List.PortList.PortListInterfaceSignalBlock.EXPRESSION"]], "endtoken (pyvhdlparser.blocks.list.portlist.closeblock attribute)": [[152, "pyVHDLParser.Blocks.List.PortList.CloseBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.list.portlist.defaultvalueexpressionblock attribute)": [[152, "pyVHDLParser.Blocks.List.PortList.DefaultValueExpressionBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.list.portlist.delimiterblock attribute)": [[152, "pyVHDLParser.Blocks.List.PortList.DelimiterBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.list.portlist.openblock attribute)": [[152, "pyVHDLParser.Blocks.List.PortList.OpenBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.list.portlist.portlistinterfacesignalblock attribute)": [[152, "pyVHDLParser.Blocks.List.PortList.PortListInterfaceSignalBlock.EndToken"]], "length (pyvhdlparser.blocks.list.portlist.closeblock property)": [[152, "pyVHDLParser.Blocks.List.PortList.CloseBlock.Length"]], "length (pyvhdlparser.blocks.list.portlist.defaultvalueexpressionblock property)": [[152, "pyVHDLParser.Blocks.List.PortList.DefaultValueExpressionBlock.Length"]], "length (pyvhdlparser.blocks.list.portlist.delimiterblock property)": [[152, "pyVHDLParser.Blocks.List.PortList.DelimiterBlock.Length"]], "length (pyvhdlparser.blocks.list.portlist.openblock property)": [[152, "pyVHDLParser.Blocks.List.PortList.OpenBlock.Length"]], "length (pyvhdlparser.blocks.list.portlist.portlistinterfacesignalblock property)": [[152, "pyVHDLParser.Blocks.List.PortList.PortListInterfaceSignalBlock.Length"]], "multipart (pyvhdlparser.blocks.list.portlist.closeblock attribute)": [[152, "pyVHDLParser.Blocks.List.PortList.CloseBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.list.portlist.defaultvalueexpressionblock attribute)": [[152, "pyVHDLParser.Blocks.List.PortList.DefaultValueExpressionBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.list.portlist.delimiterblock attribute)": [[152, "pyVHDLParser.Blocks.List.PortList.DelimiterBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.list.portlist.openblock attribute)": [[152, "pyVHDLParser.Blocks.List.PortList.OpenBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.list.portlist.portlistinterfacesignalblock attribute)": [[152, "pyVHDLParser.Blocks.List.PortList.PortListInterfaceSignalBlock.MultiPart"]], "nextblock (pyvhdlparser.blocks.list.portlist.closeblock attribute)": [[152, "pyVHDLParser.Blocks.List.PortList.CloseBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.list.portlist.defaultvalueexpressionblock attribute)": [[152, "pyVHDLParser.Blocks.List.PortList.DefaultValueExpressionBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.list.portlist.delimiterblock attribute)": [[152, "pyVHDLParser.Blocks.List.PortList.DelimiterBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.list.portlist.openblock attribute)": [[152, "pyVHDLParser.Blocks.List.PortList.OpenBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.list.portlist.portlistinterfacesignalblock attribute)": [[152, "pyVHDLParser.Blocks.List.PortList.PortListInterfaceSignalBlock.NextBlock"]], "openblock (class in pyvhdlparser.blocks.list.portlist)": [[152, "pyVHDLParser.Blocks.List.PortList.OpenBlock"]], "portlistinterfacesignalblock (class in pyvhdlparser.blocks.list.portlist)": [[152, "pyVHDLParser.Blocks.List.PortList.PortListInterfaceSignalBlock"]], "starttoken (pyvhdlparser.blocks.list.portlist.closeblock attribute)": [[152, "pyVHDLParser.Blocks.List.PortList.CloseBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.list.portlist.defaultvalueexpressionblock attribute)": [[152, "pyVHDLParser.Blocks.List.PortList.DefaultValueExpressionBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.list.portlist.delimiterblock attribute)": [[152, "pyVHDLParser.Blocks.List.PortList.DelimiterBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.list.portlist.openblock attribute)": [[152, "pyVHDLParser.Blocks.List.PortList.OpenBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.list.portlist.portlistinterfacesignalblock attribute)": [[152, "pyVHDLParser.Blocks.List.PortList.PortListInterfaceSignalBlock.StartToken"]], "states (pyvhdlparser.blocks.list.portlist.closeblock property)": [[152, "pyVHDLParser.Blocks.List.PortList.CloseBlock.States"]], "states (pyvhdlparser.blocks.list.portlist.defaultvalueexpressionblock property)": [[152, "pyVHDLParser.Blocks.List.PortList.DefaultValueExpressionBlock.States"]], "states (pyvhdlparser.blocks.list.portlist.delimiterblock property)": [[152, "pyVHDLParser.Blocks.List.PortList.DelimiterBlock.States"]], "states (pyvhdlparser.blocks.list.portlist.openblock property)": [[152, "pyVHDLParser.Blocks.List.PortList.OpenBlock.States"]], "states (pyvhdlparser.blocks.list.portlist.portlistinterfacesignalblock property)": [[152, "pyVHDLParser.Blocks.List.PortList.PortListInterfaceSignalBlock.States"]], "__states__ (pyvhdlparser.blocks.list.portlist.closeblock attribute)": [[152, "pyVHDLParser.Blocks.List.PortList.CloseBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.list.portlist.defaultvalueexpressionblock attribute)": [[152, "pyVHDLParser.Blocks.List.PortList.DefaultValueExpressionBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.list.portlist.delimiterblock attribute)": [[152, "pyVHDLParser.Blocks.List.PortList.DelimiterBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.list.portlist.openblock attribute)": [[152, "pyVHDLParser.Blocks.List.PortList.OpenBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.list.portlist.portlistinterfacesignalblock attribute)": [[152, "pyVHDLParser.Blocks.List.PortList.PortListInterfaceSignalBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.list.portlist.closeblock method)": [[152, "pyVHDLParser.Blocks.List.PortList.CloseBlock.__init__"]], "__init__() (pyvhdlparser.blocks.list.portlist.defaultvalueexpressionblock method)": [[152, "pyVHDLParser.Blocks.List.PortList.DefaultValueExpressionBlock.__init__"]], "__init__() (pyvhdlparser.blocks.list.portlist.delimiterblock method)": [[152, "pyVHDLParser.Blocks.List.PortList.DelimiterBlock.__init__"]], "__init__() (pyvhdlparser.blocks.list.portlist.openblock method)": [[152, "pyVHDLParser.Blocks.List.PortList.OpenBlock.__init__"]], "__init__() (pyvhdlparser.blocks.list.portlist.portlistinterfacesignalblock method)": [[152, "pyVHDLParser.Blocks.List.PortList.PortListInterfaceSignalBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.list.portlist.closeblock method)": [[152, "pyVHDLParser.Blocks.List.PortList.CloseBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.list.portlist.defaultvalueexpressionblock method)": [[152, "pyVHDLParser.Blocks.List.PortList.DefaultValueExpressionBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.list.portlist.delimiterblock method)": [[152, "pyVHDLParser.Blocks.List.PortList.DelimiterBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.list.portlist.openblock method)": [[152, "pyVHDLParser.Blocks.List.PortList.OpenBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.list.portlist.portlistinterfacesignalblock method)": [[152, "pyVHDLParser.Blocks.List.PortList.PortListInterfaceSignalBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.list.portlist.closeblock method)": [[152, "pyVHDLParser.Blocks.List.PortList.CloseBlock.__len__"]], "__len__() (pyvhdlparser.blocks.list.portlist.defaultvalueexpressionblock method)": [[152, "pyVHDLParser.Blocks.List.PortList.DefaultValueExpressionBlock.__len__"]], "__len__() (pyvhdlparser.blocks.list.portlist.delimiterblock method)": [[152, "pyVHDLParser.Blocks.List.PortList.DelimiterBlock.__len__"]], "__len__() (pyvhdlparser.blocks.list.portlist.openblock method)": [[152, "pyVHDLParser.Blocks.List.PortList.OpenBlock.__len__"]], "__len__() (pyvhdlparser.blocks.list.portlist.portlistinterfacesignalblock method)": [[152, "pyVHDLParser.Blocks.List.PortList.PortListInterfaceSignalBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.list.portlist.closeblock method)": [[152, "pyVHDLParser.Blocks.List.PortList.CloseBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.list.portlist.defaultvalueexpressionblock method)": [[152, "pyVHDLParser.Blocks.List.PortList.DefaultValueExpressionBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.list.portlist.delimiterblock method)": [[152, "pyVHDLParser.Blocks.List.PortList.DelimiterBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.list.portlist.openblock method)": [[152, "pyVHDLParser.Blocks.List.PortList.OpenBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.list.portlist.portlistinterfacesignalblock method)": [[152, "pyVHDLParser.Blocks.List.PortList.PortListInterfaceSignalBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.list.portlist.closeblock method)": [[152, "pyVHDLParser.Blocks.List.PortList.CloseBlock.__str__"]], "__str__() (pyvhdlparser.blocks.list.portlist.defaultvalueexpressionblock method)": [[152, "pyVHDLParser.Blocks.List.PortList.DefaultValueExpressionBlock.__str__"]], "__str__() (pyvhdlparser.blocks.list.portlist.delimiterblock method)": [[152, "pyVHDLParser.Blocks.List.PortList.DelimiterBlock.__str__"]], "__str__() (pyvhdlparser.blocks.list.portlist.openblock method)": [[152, "pyVHDLParser.Blocks.List.PortList.OpenBlock.__str__"]], "__str__() (pyvhdlparser.blocks.list.portlist.portlistinterfacesignalblock method)": [[152, "pyVHDLParser.Blocks.List.PortList.PortListInterfaceSignalBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.list.portlist.closeblock attribute)": [[152, "pyVHDLParser.Blocks.List.PortList.CloseBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.list.portlist.defaultvalueexpressionblock attribute)": [[152, "pyVHDLParser.Blocks.List.PortList.DefaultValueExpressionBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.list.portlist.delimiterblock attribute)": [[152, "pyVHDLParser.Blocks.List.PortList.DelimiterBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.list.portlist.openblock attribute)": [[152, "pyVHDLParser.Blocks.List.PortList.OpenBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.list.portlist.portlistinterfacesignalblock attribute)": [[152, "pyVHDLParser.Blocks.List.PortList.PortListInterfaceSignalBlock._previousBlock"]], "pyvhdlparser.blocks.list.portlist": [[152, "module-pyVHDLParser.Blocks.List.PortList"]], "stateerror() (pyvhdlparser.blocks.list.portlist.closeblock class method)": [[152, "pyVHDLParser.Blocks.List.PortList.CloseBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.list.portlist.defaultvalueexpressionblock class method)": [[152, "pyVHDLParser.Blocks.List.PortList.DefaultValueExpressionBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.list.portlist.delimiterblock class method)": [[152, "pyVHDLParser.Blocks.List.PortList.DelimiterBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.list.portlist.openblock class method)": [[152, "pyVHDLParser.Blocks.List.PortList.OpenBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.list.portlist.portlistinterfacesignalblock class method)": [[152, "pyVHDLParser.Blocks.List.PortList.PortListInterfaceSignalBlock.stateError"]], "closeblock (class in pyvhdlparser.blocks.list.portmaplist)": [[153, "pyVHDLParser.Blocks.List.PortMapList.CloseBlock"]], "delimiterblock (class in pyvhdlparser.blocks.list.portmaplist)": [[153, "pyVHDLParser.Blocks.List.PortMapList.DelimiterBlock"]], "endtoken (pyvhdlparser.blocks.list.portmaplist.closeblock attribute)": [[153, "pyVHDLParser.Blocks.List.PortMapList.CloseBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.list.portmaplist.delimiterblock attribute)": [[153, "pyVHDLParser.Blocks.List.PortMapList.DelimiterBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.list.portmaplist.itemblock attribute)": [[153, "pyVHDLParser.Blocks.List.PortMapList.ItemBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.list.portmaplist.openblock attribute)": [[153, "pyVHDLParser.Blocks.List.PortMapList.OpenBlock.EndToken"]], "itemblock (class in pyvhdlparser.blocks.list.portmaplist)": [[153, "pyVHDLParser.Blocks.List.PortMapList.ItemBlock"]], "length (pyvhdlparser.blocks.list.portmaplist.closeblock property)": [[153, "pyVHDLParser.Blocks.List.PortMapList.CloseBlock.Length"]], "length (pyvhdlparser.blocks.list.portmaplist.delimiterblock property)": [[153, "pyVHDLParser.Blocks.List.PortMapList.DelimiterBlock.Length"]], "length (pyvhdlparser.blocks.list.portmaplist.itemblock property)": [[153, "pyVHDLParser.Blocks.List.PortMapList.ItemBlock.Length"]], "length (pyvhdlparser.blocks.list.portmaplist.openblock property)": [[153, "pyVHDLParser.Blocks.List.PortMapList.OpenBlock.Length"]], "multipart (pyvhdlparser.blocks.list.portmaplist.closeblock attribute)": [[153, "pyVHDLParser.Blocks.List.PortMapList.CloseBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.list.portmaplist.delimiterblock attribute)": [[153, "pyVHDLParser.Blocks.List.PortMapList.DelimiterBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.list.portmaplist.itemblock attribute)": [[153, "pyVHDLParser.Blocks.List.PortMapList.ItemBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.list.portmaplist.openblock attribute)": [[153, "pyVHDLParser.Blocks.List.PortMapList.OpenBlock.MultiPart"]], "nextblock (pyvhdlparser.blocks.list.portmaplist.closeblock attribute)": [[153, "pyVHDLParser.Blocks.List.PortMapList.CloseBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.list.portmaplist.delimiterblock attribute)": [[153, "pyVHDLParser.Blocks.List.PortMapList.DelimiterBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.list.portmaplist.itemblock attribute)": [[153, "pyVHDLParser.Blocks.List.PortMapList.ItemBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.list.portmaplist.openblock attribute)": [[153, "pyVHDLParser.Blocks.List.PortMapList.OpenBlock.NextBlock"]], "openblock (class in pyvhdlparser.blocks.list.portmaplist)": [[153, "pyVHDLParser.Blocks.List.PortMapList.OpenBlock"]], "starttoken (pyvhdlparser.blocks.list.portmaplist.closeblock attribute)": [[153, "pyVHDLParser.Blocks.List.PortMapList.CloseBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.list.portmaplist.delimiterblock attribute)": [[153, "pyVHDLParser.Blocks.List.PortMapList.DelimiterBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.list.portmaplist.itemblock attribute)": [[153, "pyVHDLParser.Blocks.List.PortMapList.ItemBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.list.portmaplist.openblock attribute)": [[153, "pyVHDLParser.Blocks.List.PortMapList.OpenBlock.StartToken"]], "states (pyvhdlparser.blocks.list.portmaplist.closeblock property)": [[153, "pyVHDLParser.Blocks.List.PortMapList.CloseBlock.States"]], "states (pyvhdlparser.blocks.list.portmaplist.delimiterblock property)": [[153, "pyVHDLParser.Blocks.List.PortMapList.DelimiterBlock.States"]], "states (pyvhdlparser.blocks.list.portmaplist.itemblock property)": [[153, "pyVHDLParser.Blocks.List.PortMapList.ItemBlock.States"]], "states (pyvhdlparser.blocks.list.portmaplist.openblock property)": [[153, "pyVHDLParser.Blocks.List.PortMapList.OpenBlock.States"]], "__states__ (pyvhdlparser.blocks.list.portmaplist.closeblock attribute)": [[153, "pyVHDLParser.Blocks.List.PortMapList.CloseBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.list.portmaplist.delimiterblock attribute)": [[153, "pyVHDLParser.Blocks.List.PortMapList.DelimiterBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.list.portmaplist.itemblock attribute)": [[153, "pyVHDLParser.Blocks.List.PortMapList.ItemBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.list.portmaplist.openblock attribute)": [[153, "pyVHDLParser.Blocks.List.PortMapList.OpenBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.list.portmaplist.closeblock method)": [[153, "pyVHDLParser.Blocks.List.PortMapList.CloseBlock.__init__"]], "__init__() (pyvhdlparser.blocks.list.portmaplist.delimiterblock method)": [[153, "pyVHDLParser.Blocks.List.PortMapList.DelimiterBlock.__init__"]], "__init__() (pyvhdlparser.blocks.list.portmaplist.itemblock method)": [[153, "pyVHDLParser.Blocks.List.PortMapList.ItemBlock.__init__"]], "__init__() (pyvhdlparser.blocks.list.portmaplist.openblock method)": [[153, "pyVHDLParser.Blocks.List.PortMapList.OpenBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.list.portmaplist.closeblock method)": [[153, "pyVHDLParser.Blocks.List.PortMapList.CloseBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.list.portmaplist.delimiterblock method)": [[153, "pyVHDLParser.Blocks.List.PortMapList.DelimiterBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.list.portmaplist.itemblock method)": [[153, "pyVHDLParser.Blocks.List.PortMapList.ItemBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.list.portmaplist.openblock method)": [[153, "pyVHDLParser.Blocks.List.PortMapList.OpenBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.list.portmaplist.closeblock method)": [[153, "pyVHDLParser.Blocks.List.PortMapList.CloseBlock.__len__"]], "__len__() (pyvhdlparser.blocks.list.portmaplist.delimiterblock method)": [[153, "pyVHDLParser.Blocks.List.PortMapList.DelimiterBlock.__len__"]], "__len__() (pyvhdlparser.blocks.list.portmaplist.itemblock method)": [[153, "pyVHDLParser.Blocks.List.PortMapList.ItemBlock.__len__"]], "__len__() (pyvhdlparser.blocks.list.portmaplist.openblock method)": [[153, "pyVHDLParser.Blocks.List.PortMapList.OpenBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.list.portmaplist.closeblock method)": [[153, "pyVHDLParser.Blocks.List.PortMapList.CloseBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.list.portmaplist.delimiterblock method)": [[153, "pyVHDLParser.Blocks.List.PortMapList.DelimiterBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.list.portmaplist.itemblock method)": [[153, "pyVHDLParser.Blocks.List.PortMapList.ItemBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.list.portmaplist.openblock method)": [[153, "pyVHDLParser.Blocks.List.PortMapList.OpenBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.list.portmaplist.closeblock method)": [[153, "pyVHDLParser.Blocks.List.PortMapList.CloseBlock.__str__"]], "__str__() (pyvhdlparser.blocks.list.portmaplist.delimiterblock method)": [[153, "pyVHDLParser.Blocks.List.PortMapList.DelimiterBlock.__str__"]], "__str__() (pyvhdlparser.blocks.list.portmaplist.itemblock method)": [[153, "pyVHDLParser.Blocks.List.PortMapList.ItemBlock.__str__"]], "__str__() (pyvhdlparser.blocks.list.portmaplist.openblock method)": [[153, "pyVHDLParser.Blocks.List.PortMapList.OpenBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.list.portmaplist.closeblock attribute)": [[153, "pyVHDLParser.Blocks.List.PortMapList.CloseBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.list.portmaplist.delimiterblock attribute)": [[153, "pyVHDLParser.Blocks.List.PortMapList.DelimiterBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.list.portmaplist.itemblock attribute)": [[153, "pyVHDLParser.Blocks.List.PortMapList.ItemBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.list.portmaplist.openblock attribute)": [[153, "pyVHDLParser.Blocks.List.PortMapList.OpenBlock._previousBlock"]], "pyvhdlparser.blocks.list.portmaplist": [[153, "module-pyVHDLParser.Blocks.List.PortMapList"]], "stateerror() (pyvhdlparser.blocks.list.portmaplist.closeblock class method)": [[153, "pyVHDLParser.Blocks.List.PortMapList.CloseBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.list.portmaplist.delimiterblock class method)": [[153, "pyVHDLParser.Blocks.List.PortMapList.DelimiterBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.list.portmaplist.itemblock class method)": [[153, "pyVHDLParser.Blocks.List.PortMapList.ItemBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.list.portmaplist.openblock class method)": [[153, "pyVHDLParser.Blocks.List.PortMapList.OpenBlock.stateError"]], "closeblock (class in pyvhdlparser.blocks.list.sensitivitylist)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.CloseBlock"]], "delimiterblock (class in pyvhdlparser.blocks.list.sensitivitylist)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.DelimiterBlock"]], "endtoken (pyvhdlparser.blocks.list.sensitivitylist.closeblock attribute)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.CloseBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.list.sensitivitylist.delimiterblock attribute)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.DelimiterBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.list.sensitivitylist.itemblock attribute)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.ItemBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.list.sensitivitylist.openblock attribute)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.OpenBlock.EndToken"]], "itemblock (class in pyvhdlparser.blocks.list.sensitivitylist)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.ItemBlock"]], "length (pyvhdlparser.blocks.list.sensitivitylist.closeblock property)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.CloseBlock.Length"]], "length (pyvhdlparser.blocks.list.sensitivitylist.delimiterblock property)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.DelimiterBlock.Length"]], "length (pyvhdlparser.blocks.list.sensitivitylist.itemblock property)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.ItemBlock.Length"]], "length (pyvhdlparser.blocks.list.sensitivitylist.openblock property)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.OpenBlock.Length"]], "multipart (pyvhdlparser.blocks.list.sensitivitylist.closeblock attribute)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.CloseBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.list.sensitivitylist.delimiterblock attribute)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.DelimiterBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.list.sensitivitylist.itemblock attribute)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.ItemBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.list.sensitivitylist.openblock attribute)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.OpenBlock.MultiPart"]], "nextblock (pyvhdlparser.blocks.list.sensitivitylist.closeblock attribute)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.CloseBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.list.sensitivitylist.delimiterblock attribute)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.DelimiterBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.list.sensitivitylist.itemblock attribute)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.ItemBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.list.sensitivitylist.openblock attribute)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.OpenBlock.NextBlock"]], "openblock (class in pyvhdlparser.blocks.list.sensitivitylist)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.OpenBlock"]], "starttoken (pyvhdlparser.blocks.list.sensitivitylist.closeblock attribute)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.CloseBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.list.sensitivitylist.delimiterblock attribute)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.DelimiterBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.list.sensitivitylist.itemblock attribute)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.ItemBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.list.sensitivitylist.openblock attribute)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.OpenBlock.StartToken"]], "states (pyvhdlparser.blocks.list.sensitivitylist.closeblock property)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.CloseBlock.States"]], "states (pyvhdlparser.blocks.list.sensitivitylist.delimiterblock property)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.DelimiterBlock.States"]], "states (pyvhdlparser.blocks.list.sensitivitylist.itemblock property)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.ItemBlock.States"]], "states (pyvhdlparser.blocks.list.sensitivitylist.openblock property)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.OpenBlock.States"]], "__states__ (pyvhdlparser.blocks.list.sensitivitylist.closeblock attribute)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.CloseBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.list.sensitivitylist.delimiterblock attribute)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.DelimiterBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.list.sensitivitylist.itemblock attribute)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.ItemBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.list.sensitivitylist.openblock attribute)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.OpenBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.list.sensitivitylist.closeblock method)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.CloseBlock.__init__"]], "__init__() (pyvhdlparser.blocks.list.sensitivitylist.delimiterblock method)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.DelimiterBlock.__init__"]], "__init__() (pyvhdlparser.blocks.list.sensitivitylist.itemblock method)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.ItemBlock.__init__"]], "__init__() (pyvhdlparser.blocks.list.sensitivitylist.openblock method)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.OpenBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.list.sensitivitylist.closeblock method)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.CloseBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.list.sensitivitylist.delimiterblock method)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.DelimiterBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.list.sensitivitylist.itemblock method)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.ItemBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.list.sensitivitylist.openblock method)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.OpenBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.list.sensitivitylist.closeblock method)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.CloseBlock.__len__"]], "__len__() (pyvhdlparser.blocks.list.sensitivitylist.delimiterblock method)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.DelimiterBlock.__len__"]], "__len__() (pyvhdlparser.blocks.list.sensitivitylist.itemblock method)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.ItemBlock.__len__"]], "__len__() (pyvhdlparser.blocks.list.sensitivitylist.openblock method)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.OpenBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.list.sensitivitylist.closeblock method)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.CloseBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.list.sensitivitylist.delimiterblock method)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.DelimiterBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.list.sensitivitylist.itemblock method)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.ItemBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.list.sensitivitylist.openblock method)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.OpenBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.list.sensitivitylist.closeblock method)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.CloseBlock.__str__"]], "__str__() (pyvhdlparser.blocks.list.sensitivitylist.delimiterblock method)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.DelimiterBlock.__str__"]], "__str__() (pyvhdlparser.blocks.list.sensitivitylist.itemblock method)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.ItemBlock.__str__"]], "__str__() (pyvhdlparser.blocks.list.sensitivitylist.openblock method)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.OpenBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.list.sensitivitylist.closeblock attribute)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.CloseBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.list.sensitivitylist.delimiterblock attribute)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.DelimiterBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.list.sensitivitylist.itemblock attribute)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.ItemBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.list.sensitivitylist.openblock attribute)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.OpenBlock._previousBlock"]], "pyvhdlparser.blocks.list.sensitivitylist": [[154, "module-pyVHDLParser.Blocks.List.SensitivityList"]], "stateerror() (pyvhdlparser.blocks.list.sensitivitylist.closeblock class method)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.CloseBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.list.sensitivitylist.delimiterblock class method)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.DelimiterBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.list.sensitivitylist.itemblock class method)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.ItemBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.list.sensitivitylist.openblock class method)": [[154, "pyVHDLParser.Blocks.List.SensitivityList.OpenBlock.stateError"]], "endtoken (pyvhdlparser.blocks.object.objectdeclarationblock attribute)": [[155, "pyVHDLParser.Blocks.Object.ObjectDeclarationBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.object.objectdeclarationendmarkerblock attribute)": [[155, "pyVHDLParser.Blocks.Object.ObjectDeclarationEndMarkerBlock.EndToken"]], "length (pyvhdlparser.blocks.object.objectdeclarationblock property)": [[155, "pyVHDLParser.Blocks.Object.ObjectDeclarationBlock.Length"]], "length (pyvhdlparser.blocks.object.objectdeclarationendmarkerblock property)": [[155, "pyVHDLParser.Blocks.Object.ObjectDeclarationEndMarkerBlock.Length"]], "multipart (pyvhdlparser.blocks.object.objectdeclarationblock attribute)": [[155, "pyVHDLParser.Blocks.Object.ObjectDeclarationBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.object.objectdeclarationendmarkerblock attribute)": [[155, "pyVHDLParser.Blocks.Object.ObjectDeclarationEndMarkerBlock.MultiPart"]], "nextblock (pyvhdlparser.blocks.object.objectdeclarationblock attribute)": [[155, "pyVHDLParser.Blocks.Object.ObjectDeclarationBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.object.objectdeclarationendmarkerblock attribute)": [[155, "pyVHDLParser.Blocks.Object.ObjectDeclarationEndMarkerBlock.NextBlock"]], "objectdeclarationblock (class in pyvhdlparser.blocks.object)": [[155, "pyVHDLParser.Blocks.Object.ObjectDeclarationBlock"]], "objectdeclarationendmarkerblock (class in pyvhdlparser.blocks.object)": [[155, "pyVHDLParser.Blocks.Object.ObjectDeclarationEndMarkerBlock"]], "starttoken (pyvhdlparser.blocks.object.objectdeclarationblock attribute)": [[155, "pyVHDLParser.Blocks.Object.ObjectDeclarationBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.object.objectdeclarationendmarkerblock attribute)": [[155, "pyVHDLParser.Blocks.Object.ObjectDeclarationEndMarkerBlock.StartToken"]], "states (pyvhdlparser.blocks.object.objectdeclarationblock property)": [[155, "pyVHDLParser.Blocks.Object.ObjectDeclarationBlock.States"]], "states (pyvhdlparser.blocks.object.objectdeclarationendmarkerblock property)": [[155, "pyVHDLParser.Blocks.Object.ObjectDeclarationEndMarkerBlock.States"]], "__states__ (pyvhdlparser.blocks.object.objectdeclarationblock attribute)": [[155, "pyVHDLParser.Blocks.Object.ObjectDeclarationBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.object.objectdeclarationendmarkerblock attribute)": [[155, "pyVHDLParser.Blocks.Object.ObjectDeclarationEndMarkerBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.object.objectdeclarationblock method)": [[155, "pyVHDLParser.Blocks.Object.ObjectDeclarationBlock.__init__"]], "__init__() (pyvhdlparser.blocks.object.objectdeclarationendmarkerblock method)": [[155, "pyVHDLParser.Blocks.Object.ObjectDeclarationEndMarkerBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.object.objectdeclarationblock method)": [[155, "pyVHDLParser.Blocks.Object.ObjectDeclarationBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.object.objectdeclarationendmarkerblock method)": [[155, "pyVHDLParser.Blocks.Object.ObjectDeclarationEndMarkerBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.object.objectdeclarationblock method)": [[155, "pyVHDLParser.Blocks.Object.ObjectDeclarationBlock.__len__"]], "__len__() (pyvhdlparser.blocks.object.objectdeclarationendmarkerblock method)": [[155, "pyVHDLParser.Blocks.Object.ObjectDeclarationEndMarkerBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.object.objectdeclarationblock method)": [[155, "pyVHDLParser.Blocks.Object.ObjectDeclarationBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.object.objectdeclarationendmarkerblock method)": [[155, "pyVHDLParser.Blocks.Object.ObjectDeclarationEndMarkerBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.object.objectdeclarationblock method)": [[155, "pyVHDLParser.Blocks.Object.ObjectDeclarationBlock.__str__"]], "__str__() (pyvhdlparser.blocks.object.objectdeclarationendmarkerblock method)": [[155, "pyVHDLParser.Blocks.Object.ObjectDeclarationEndMarkerBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.object.objectdeclarationblock attribute)": [[155, "pyVHDLParser.Blocks.Object.ObjectDeclarationBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.object.objectdeclarationendmarkerblock attribute)": [[155, "pyVHDLParser.Blocks.Object.ObjectDeclarationEndMarkerBlock._previousBlock"]], "pyvhdlparser.blocks.object": [[155, "module-pyVHDLParser.Blocks.Object"]], "stateerror() (pyvhdlparser.blocks.object.objectdeclarationblock class method)": [[155, "pyVHDLParser.Blocks.Object.ObjectDeclarationBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.object.objectdeclarationendmarkerblock class method)": [[155, "pyVHDLParser.Blocks.Object.ObjectDeclarationEndMarkerBlock.stateError"]], "constantdeclarationblock (class in pyvhdlparser.blocks.object.constant)": [[156, "pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationBlock"]], "constantdeclarationdefaultexpressionblock (class in pyvhdlparser.blocks.object.constant)": [[156, "pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationDefaultExpressionBlock"]], "constantdeclarationendmarkerblock (class in pyvhdlparser.blocks.object.constant)": [[156, "pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationEndMarkerBlock"]], "end_block (pyvhdlparser.blocks.object.constant.constantdeclarationblock attribute)": [[156, "pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationBlock.END_BLOCK"]], "end_block (pyvhdlparser.blocks.object.constant.constantdeclarationdefaultexpressionblock attribute)": [[156, "pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationDefaultExpressionBlock.END_BLOCK"]], "expression_block (pyvhdlparser.blocks.object.constant.constantdeclarationblock attribute)": [[156, "pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationBlock.EXPRESSION_BLOCK"]], "endtoken (pyvhdlparser.blocks.object.constant.constantdeclarationblock attribute)": [[156, "pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.object.constant.constantdeclarationdefaultexpressionblock attribute)": [[156, "pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationDefaultExpressionBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.object.constant.constantdeclarationendmarkerblock attribute)": [[156, "pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationEndMarkerBlock.EndToken"]], "length (pyvhdlparser.blocks.object.constant.constantdeclarationblock property)": [[156, "pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationBlock.Length"]], "length (pyvhdlparser.blocks.object.constant.constantdeclarationdefaultexpressionblock property)": [[156, "pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationDefaultExpressionBlock.Length"]], "length (pyvhdlparser.blocks.object.constant.constantdeclarationendmarkerblock property)": [[156, "pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationEndMarkerBlock.Length"]], "multipart (pyvhdlparser.blocks.object.constant.constantdeclarationblock attribute)": [[156, "pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.object.constant.constantdeclarationdefaultexpressionblock attribute)": [[156, "pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationDefaultExpressionBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.object.constant.constantdeclarationendmarkerblock attribute)": [[156, "pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationEndMarkerBlock.MultiPart"]], "nextblock (pyvhdlparser.blocks.object.constant.constantdeclarationblock attribute)": [[156, "pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.object.constant.constantdeclarationdefaultexpressionblock attribute)": [[156, "pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationDefaultExpressionBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.object.constant.constantdeclarationendmarkerblock attribute)": [[156, "pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationEndMarkerBlock.NextBlock"]], "starttoken (pyvhdlparser.blocks.object.constant.constantdeclarationblock attribute)": [[156, "pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.object.constant.constantdeclarationdefaultexpressionblock attribute)": [[156, "pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationDefaultExpressionBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.object.constant.constantdeclarationendmarkerblock attribute)": [[156, "pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationEndMarkerBlock.StartToken"]], "states (pyvhdlparser.blocks.object.constant.constantdeclarationblock property)": [[156, "pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationBlock.States"]], "states (pyvhdlparser.blocks.object.constant.constantdeclarationdefaultexpressionblock property)": [[156, "pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationDefaultExpressionBlock.States"]], "states (pyvhdlparser.blocks.object.constant.constantdeclarationendmarkerblock property)": [[156, "pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationEndMarkerBlock.States"]], "__states__ (pyvhdlparser.blocks.object.constant.constantdeclarationblock attribute)": [[156, "pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.object.constant.constantdeclarationdefaultexpressionblock attribute)": [[156, "pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationDefaultExpressionBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.object.constant.constantdeclarationendmarkerblock attribute)": [[156, "pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationEndMarkerBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.object.constant.constantdeclarationblock method)": [[156, "pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationBlock.__init__"]], "__init__() (pyvhdlparser.blocks.object.constant.constantdeclarationdefaultexpressionblock method)": [[156, "pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationDefaultExpressionBlock.__init__"]], "__init__() (pyvhdlparser.blocks.object.constant.constantdeclarationendmarkerblock method)": [[156, "pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationEndMarkerBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.object.constant.constantdeclarationblock method)": [[156, "pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.object.constant.constantdeclarationdefaultexpressionblock method)": [[156, "pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationDefaultExpressionBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.object.constant.constantdeclarationendmarkerblock method)": [[156, "pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationEndMarkerBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.object.constant.constantdeclarationblock method)": [[156, "pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationBlock.__len__"]], "__len__() (pyvhdlparser.blocks.object.constant.constantdeclarationdefaultexpressionblock method)": [[156, "pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationDefaultExpressionBlock.__len__"]], "__len__() (pyvhdlparser.blocks.object.constant.constantdeclarationendmarkerblock method)": [[156, "pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationEndMarkerBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.object.constant.constantdeclarationblock method)": [[156, "pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.object.constant.constantdeclarationdefaultexpressionblock method)": [[156, "pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationDefaultExpressionBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.object.constant.constantdeclarationendmarkerblock method)": [[156, "pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationEndMarkerBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.object.constant.constantdeclarationblock method)": [[156, "pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationBlock.__str__"]], "__str__() (pyvhdlparser.blocks.object.constant.constantdeclarationdefaultexpressionblock method)": [[156, "pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationDefaultExpressionBlock.__str__"]], "__str__() (pyvhdlparser.blocks.object.constant.constantdeclarationendmarkerblock method)": [[156, "pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationEndMarkerBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.object.constant.constantdeclarationblock attribute)": [[156, "pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.object.constant.constantdeclarationdefaultexpressionblock attribute)": [[156, "pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationDefaultExpressionBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.object.constant.constantdeclarationendmarkerblock attribute)": [[156, "pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationEndMarkerBlock._previousBlock"]], "pyvhdlparser.blocks.object.constant": [[156, "module-pyVHDLParser.Blocks.Object.Constant"]], "stateerror() (pyvhdlparser.blocks.object.constant.constantdeclarationblock class method)": [[156, "pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.object.constant.constantdeclarationdefaultexpressionblock class method)": [[156, "pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationDefaultExpressionBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.object.constant.constantdeclarationendmarkerblock class method)": [[156, "pyVHDLParser.Blocks.Object.Constant.ConstantDeclarationEndMarkerBlock.stateError"]], "pyvhdlparser.blocks.object.file": [[157, "module-pyVHDLParser.Blocks.Object.File"]], "end_block (pyvhdlparser.blocks.object.sharedvariable.sharedvariabledeclarationblock attribute)": [[158, "pyVHDLParser.Blocks.Object.SharedVariable.SharedVariableDeclarationBlock.END_BLOCK"]], "endtoken (pyvhdlparser.blocks.object.sharedvariable.sharedvariabledeclarationblock attribute)": [[158, "pyVHDLParser.Blocks.Object.SharedVariable.SharedVariableDeclarationBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.object.sharedvariable.sharedvariabledeclarationendmarkerblock attribute)": [[158, "pyVHDLParser.Blocks.Object.SharedVariable.SharedVariableDeclarationEndMarkerBlock.EndToken"]], "length (pyvhdlparser.blocks.object.sharedvariable.sharedvariabledeclarationblock property)": [[158, "pyVHDLParser.Blocks.Object.SharedVariable.SharedVariableDeclarationBlock.Length"]], "length (pyvhdlparser.blocks.object.sharedvariable.sharedvariabledeclarationendmarkerblock property)": [[158, "pyVHDLParser.Blocks.Object.SharedVariable.SharedVariableDeclarationEndMarkerBlock.Length"]], "multipart (pyvhdlparser.blocks.object.sharedvariable.sharedvariabledeclarationblock attribute)": [[158, "pyVHDLParser.Blocks.Object.SharedVariable.SharedVariableDeclarationBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.object.sharedvariable.sharedvariabledeclarationendmarkerblock attribute)": [[158, "pyVHDLParser.Blocks.Object.SharedVariable.SharedVariableDeclarationEndMarkerBlock.MultiPart"]], "nextblock (pyvhdlparser.blocks.object.sharedvariable.sharedvariabledeclarationblock attribute)": [[158, "pyVHDLParser.Blocks.Object.SharedVariable.SharedVariableDeclarationBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.object.sharedvariable.sharedvariabledeclarationendmarkerblock attribute)": [[158, "pyVHDLParser.Blocks.Object.SharedVariable.SharedVariableDeclarationEndMarkerBlock.NextBlock"]], "sharedvariabledeclarationblock (class in pyvhdlparser.blocks.object.sharedvariable)": [[158, "pyVHDLParser.Blocks.Object.SharedVariable.SharedVariableDeclarationBlock"]], "sharedvariabledeclarationendmarkerblock (class in pyvhdlparser.blocks.object.sharedvariable)": [[158, "pyVHDLParser.Blocks.Object.SharedVariable.SharedVariableDeclarationEndMarkerBlock"]], "starttoken (pyvhdlparser.blocks.object.sharedvariable.sharedvariabledeclarationblock attribute)": [[158, "pyVHDLParser.Blocks.Object.SharedVariable.SharedVariableDeclarationBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.object.sharedvariable.sharedvariabledeclarationendmarkerblock attribute)": [[158, "pyVHDLParser.Blocks.Object.SharedVariable.SharedVariableDeclarationEndMarkerBlock.StartToken"]], "states (pyvhdlparser.blocks.object.sharedvariable.sharedvariabledeclarationblock property)": [[158, "pyVHDLParser.Blocks.Object.SharedVariable.SharedVariableDeclarationBlock.States"]], "states (pyvhdlparser.blocks.object.sharedvariable.sharedvariabledeclarationendmarkerblock property)": [[158, "pyVHDLParser.Blocks.Object.SharedVariable.SharedVariableDeclarationEndMarkerBlock.States"]], "__states__ (pyvhdlparser.blocks.object.sharedvariable.sharedvariabledeclarationblock attribute)": [[158, "pyVHDLParser.Blocks.Object.SharedVariable.SharedVariableDeclarationBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.object.sharedvariable.sharedvariabledeclarationendmarkerblock attribute)": [[158, "pyVHDLParser.Blocks.Object.SharedVariable.SharedVariableDeclarationEndMarkerBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.object.sharedvariable.sharedvariabledeclarationblock method)": [[158, "pyVHDLParser.Blocks.Object.SharedVariable.SharedVariableDeclarationBlock.__init__"]], "__init__() (pyvhdlparser.blocks.object.sharedvariable.sharedvariabledeclarationendmarkerblock method)": [[158, "pyVHDLParser.Blocks.Object.SharedVariable.SharedVariableDeclarationEndMarkerBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.object.sharedvariable.sharedvariabledeclarationblock method)": [[158, "pyVHDLParser.Blocks.Object.SharedVariable.SharedVariableDeclarationBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.object.sharedvariable.sharedvariabledeclarationendmarkerblock method)": [[158, "pyVHDLParser.Blocks.Object.SharedVariable.SharedVariableDeclarationEndMarkerBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.object.sharedvariable.sharedvariabledeclarationblock method)": [[158, "pyVHDLParser.Blocks.Object.SharedVariable.SharedVariableDeclarationBlock.__len__"]], "__len__() (pyvhdlparser.blocks.object.sharedvariable.sharedvariabledeclarationendmarkerblock method)": [[158, "pyVHDLParser.Blocks.Object.SharedVariable.SharedVariableDeclarationEndMarkerBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.object.sharedvariable.sharedvariabledeclarationblock method)": [[158, "pyVHDLParser.Blocks.Object.SharedVariable.SharedVariableDeclarationBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.object.sharedvariable.sharedvariabledeclarationendmarkerblock method)": [[158, "pyVHDLParser.Blocks.Object.SharedVariable.SharedVariableDeclarationEndMarkerBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.object.sharedvariable.sharedvariabledeclarationblock method)": [[158, "pyVHDLParser.Blocks.Object.SharedVariable.SharedVariableDeclarationBlock.__str__"]], "__str__() (pyvhdlparser.blocks.object.sharedvariable.sharedvariabledeclarationendmarkerblock method)": [[158, "pyVHDLParser.Blocks.Object.SharedVariable.SharedVariableDeclarationEndMarkerBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.object.sharedvariable.sharedvariabledeclarationblock attribute)": [[158, "pyVHDLParser.Blocks.Object.SharedVariable.SharedVariableDeclarationBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.object.sharedvariable.sharedvariabledeclarationendmarkerblock attribute)": [[158, "pyVHDLParser.Blocks.Object.SharedVariable.SharedVariableDeclarationEndMarkerBlock._previousBlock"]], "pyvhdlparser.blocks.object.sharedvariable": [[158, "module-pyVHDLParser.Blocks.Object.SharedVariable"]], "stateerror() (pyvhdlparser.blocks.object.sharedvariable.sharedvariabledeclarationblock class method)": [[158, "pyVHDLParser.Blocks.Object.SharedVariable.SharedVariableDeclarationBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.object.sharedvariable.sharedvariabledeclarationendmarkerblock class method)": [[158, "pyVHDLParser.Blocks.Object.SharedVariable.SharedVariableDeclarationEndMarkerBlock.stateError"]], "end_block (pyvhdlparser.blocks.object.signal.signaldeclarationblock attribute)": [[159, "pyVHDLParser.Blocks.Object.Signal.SignalDeclarationBlock.END_BLOCK"]], "end_block (pyvhdlparser.blocks.object.signal.signaldeclarationdefaultexpressionblock attribute)": [[159, "pyVHDLParser.Blocks.Object.Signal.SignalDeclarationDefaultExpressionBlock.END_BLOCK"]], "expression_block (pyvhdlparser.blocks.object.signal.signaldeclarationblock attribute)": [[159, "pyVHDLParser.Blocks.Object.Signal.SignalDeclarationBlock.EXPRESSION_BLOCK"]], "endtoken (pyvhdlparser.blocks.object.signal.signaldeclarationblock attribute)": [[159, "pyVHDLParser.Blocks.Object.Signal.SignalDeclarationBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.object.signal.signaldeclarationdefaultexpressionblock attribute)": [[159, "pyVHDLParser.Blocks.Object.Signal.SignalDeclarationDefaultExpressionBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.object.signal.signaldeclarationendmarkerblock attribute)": [[159, "pyVHDLParser.Blocks.Object.Signal.SignalDeclarationEndMarkerBlock.EndToken"]], "length (pyvhdlparser.blocks.object.signal.signaldeclarationblock property)": [[159, "pyVHDLParser.Blocks.Object.Signal.SignalDeclarationBlock.Length"]], "length (pyvhdlparser.blocks.object.signal.signaldeclarationdefaultexpressionblock property)": [[159, "pyVHDLParser.Blocks.Object.Signal.SignalDeclarationDefaultExpressionBlock.Length"]], "length (pyvhdlparser.blocks.object.signal.signaldeclarationendmarkerblock property)": [[159, "pyVHDLParser.Blocks.Object.Signal.SignalDeclarationEndMarkerBlock.Length"]], "multipart (pyvhdlparser.blocks.object.signal.signaldeclarationblock attribute)": [[159, "pyVHDLParser.Blocks.Object.Signal.SignalDeclarationBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.object.signal.signaldeclarationdefaultexpressionblock attribute)": [[159, "pyVHDLParser.Blocks.Object.Signal.SignalDeclarationDefaultExpressionBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.object.signal.signaldeclarationendmarkerblock attribute)": [[159, "pyVHDLParser.Blocks.Object.Signal.SignalDeclarationEndMarkerBlock.MultiPart"]], "nextblock (pyvhdlparser.blocks.object.signal.signaldeclarationblock attribute)": [[159, "pyVHDLParser.Blocks.Object.Signal.SignalDeclarationBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.object.signal.signaldeclarationdefaultexpressionblock attribute)": [[159, "pyVHDLParser.Blocks.Object.Signal.SignalDeclarationDefaultExpressionBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.object.signal.signaldeclarationendmarkerblock attribute)": [[159, "pyVHDLParser.Blocks.Object.Signal.SignalDeclarationEndMarkerBlock.NextBlock"]], "signaldeclarationblock (class in pyvhdlparser.blocks.object.signal)": [[159, "pyVHDLParser.Blocks.Object.Signal.SignalDeclarationBlock"]], "signaldeclarationdefaultexpressionblock (class in pyvhdlparser.blocks.object.signal)": [[159, "pyVHDLParser.Blocks.Object.Signal.SignalDeclarationDefaultExpressionBlock"]], "signaldeclarationendmarkerblock (class in pyvhdlparser.blocks.object.signal)": [[159, "pyVHDLParser.Blocks.Object.Signal.SignalDeclarationEndMarkerBlock"]], "starttoken (pyvhdlparser.blocks.object.signal.signaldeclarationblock attribute)": [[159, "pyVHDLParser.Blocks.Object.Signal.SignalDeclarationBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.object.signal.signaldeclarationdefaultexpressionblock attribute)": [[159, "pyVHDLParser.Blocks.Object.Signal.SignalDeclarationDefaultExpressionBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.object.signal.signaldeclarationendmarkerblock attribute)": [[159, "pyVHDLParser.Blocks.Object.Signal.SignalDeclarationEndMarkerBlock.StartToken"]], "states (pyvhdlparser.blocks.object.signal.signaldeclarationblock property)": [[159, "pyVHDLParser.Blocks.Object.Signal.SignalDeclarationBlock.States"]], "states (pyvhdlparser.blocks.object.signal.signaldeclarationdefaultexpressionblock property)": [[159, "pyVHDLParser.Blocks.Object.Signal.SignalDeclarationDefaultExpressionBlock.States"]], "states (pyvhdlparser.blocks.object.signal.signaldeclarationendmarkerblock property)": [[159, "pyVHDLParser.Blocks.Object.Signal.SignalDeclarationEndMarkerBlock.States"]], "__states__ (pyvhdlparser.blocks.object.signal.signaldeclarationblock attribute)": [[159, "pyVHDLParser.Blocks.Object.Signal.SignalDeclarationBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.object.signal.signaldeclarationdefaultexpressionblock attribute)": [[159, "pyVHDLParser.Blocks.Object.Signal.SignalDeclarationDefaultExpressionBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.object.signal.signaldeclarationendmarkerblock attribute)": [[159, "pyVHDLParser.Blocks.Object.Signal.SignalDeclarationEndMarkerBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.object.signal.signaldeclarationblock method)": [[159, "pyVHDLParser.Blocks.Object.Signal.SignalDeclarationBlock.__init__"]], "__init__() (pyvhdlparser.blocks.object.signal.signaldeclarationdefaultexpressionblock method)": [[159, "pyVHDLParser.Blocks.Object.Signal.SignalDeclarationDefaultExpressionBlock.__init__"]], "__init__() (pyvhdlparser.blocks.object.signal.signaldeclarationendmarkerblock method)": [[159, "pyVHDLParser.Blocks.Object.Signal.SignalDeclarationEndMarkerBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.object.signal.signaldeclarationblock method)": [[159, "pyVHDLParser.Blocks.Object.Signal.SignalDeclarationBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.object.signal.signaldeclarationdefaultexpressionblock method)": [[159, "pyVHDLParser.Blocks.Object.Signal.SignalDeclarationDefaultExpressionBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.object.signal.signaldeclarationendmarkerblock method)": [[159, "pyVHDLParser.Blocks.Object.Signal.SignalDeclarationEndMarkerBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.object.signal.signaldeclarationblock method)": [[159, "pyVHDLParser.Blocks.Object.Signal.SignalDeclarationBlock.__len__"]], "__len__() (pyvhdlparser.blocks.object.signal.signaldeclarationdefaultexpressionblock method)": [[159, "pyVHDLParser.Blocks.Object.Signal.SignalDeclarationDefaultExpressionBlock.__len__"]], "__len__() (pyvhdlparser.blocks.object.signal.signaldeclarationendmarkerblock method)": [[159, "pyVHDLParser.Blocks.Object.Signal.SignalDeclarationEndMarkerBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.object.signal.signaldeclarationblock method)": [[159, "pyVHDLParser.Blocks.Object.Signal.SignalDeclarationBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.object.signal.signaldeclarationdefaultexpressionblock method)": [[159, "pyVHDLParser.Blocks.Object.Signal.SignalDeclarationDefaultExpressionBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.object.signal.signaldeclarationendmarkerblock method)": [[159, "pyVHDLParser.Blocks.Object.Signal.SignalDeclarationEndMarkerBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.object.signal.signaldeclarationblock method)": [[159, "pyVHDLParser.Blocks.Object.Signal.SignalDeclarationBlock.__str__"]], "__str__() (pyvhdlparser.blocks.object.signal.signaldeclarationdefaultexpressionblock method)": [[159, "pyVHDLParser.Blocks.Object.Signal.SignalDeclarationDefaultExpressionBlock.__str__"]], "__str__() (pyvhdlparser.blocks.object.signal.signaldeclarationendmarkerblock method)": [[159, "pyVHDLParser.Blocks.Object.Signal.SignalDeclarationEndMarkerBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.object.signal.signaldeclarationblock attribute)": [[159, "pyVHDLParser.Blocks.Object.Signal.SignalDeclarationBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.object.signal.signaldeclarationdefaultexpressionblock attribute)": [[159, "pyVHDLParser.Blocks.Object.Signal.SignalDeclarationDefaultExpressionBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.object.signal.signaldeclarationendmarkerblock attribute)": [[159, "pyVHDLParser.Blocks.Object.Signal.SignalDeclarationEndMarkerBlock._previousBlock"]], "pyvhdlparser.blocks.object.signal": [[159, "module-pyVHDLParser.Blocks.Object.Signal"]], "stateerror() (pyvhdlparser.blocks.object.signal.signaldeclarationblock class method)": [[159, "pyVHDLParser.Blocks.Object.Signal.SignalDeclarationBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.object.signal.signaldeclarationdefaultexpressionblock class method)": [[159, "pyVHDLParser.Blocks.Object.Signal.SignalDeclarationDefaultExpressionBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.object.signal.signaldeclarationendmarkerblock class method)": [[159, "pyVHDLParser.Blocks.Object.Signal.SignalDeclarationEndMarkerBlock.stateError"]], "end_block (pyvhdlparser.blocks.object.variable.variabledeclarationblock attribute)": [[160, "pyVHDLParser.Blocks.Object.Variable.VariableDeclarationBlock.END_BLOCK"]], "end_block (pyvhdlparser.blocks.object.variable.variabledeclarationdefaultexpressionblock attribute)": [[160, "pyVHDLParser.Blocks.Object.Variable.VariableDeclarationDefaultExpressionBlock.END_BLOCK"]], "expression_block (pyvhdlparser.blocks.object.variable.variabledeclarationblock attribute)": [[160, "pyVHDLParser.Blocks.Object.Variable.VariableDeclarationBlock.EXPRESSION_BLOCK"]], "endtoken (pyvhdlparser.blocks.object.variable.variabledeclarationblock attribute)": [[160, "pyVHDLParser.Blocks.Object.Variable.VariableDeclarationBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.object.variable.variabledeclarationdefaultexpressionblock attribute)": [[160, "pyVHDLParser.Blocks.Object.Variable.VariableDeclarationDefaultExpressionBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.object.variable.variabledeclarationendmarkerblock attribute)": [[160, "pyVHDLParser.Blocks.Object.Variable.VariableDeclarationEndMarkerBlock.EndToken"]], "length (pyvhdlparser.blocks.object.variable.variabledeclarationblock property)": [[160, "pyVHDLParser.Blocks.Object.Variable.VariableDeclarationBlock.Length"]], "length (pyvhdlparser.blocks.object.variable.variabledeclarationdefaultexpressionblock property)": [[160, "pyVHDLParser.Blocks.Object.Variable.VariableDeclarationDefaultExpressionBlock.Length"]], "length (pyvhdlparser.blocks.object.variable.variabledeclarationendmarkerblock property)": [[160, "pyVHDLParser.Blocks.Object.Variable.VariableDeclarationEndMarkerBlock.Length"]], "multipart (pyvhdlparser.blocks.object.variable.variabledeclarationblock attribute)": [[160, "pyVHDLParser.Blocks.Object.Variable.VariableDeclarationBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.object.variable.variabledeclarationdefaultexpressionblock attribute)": [[160, "pyVHDLParser.Blocks.Object.Variable.VariableDeclarationDefaultExpressionBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.object.variable.variabledeclarationendmarkerblock attribute)": [[160, "pyVHDLParser.Blocks.Object.Variable.VariableDeclarationEndMarkerBlock.MultiPart"]], "nextblock (pyvhdlparser.blocks.object.variable.variabledeclarationblock attribute)": [[160, "pyVHDLParser.Blocks.Object.Variable.VariableDeclarationBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.object.variable.variabledeclarationdefaultexpressionblock attribute)": [[160, "pyVHDLParser.Blocks.Object.Variable.VariableDeclarationDefaultExpressionBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.object.variable.variabledeclarationendmarkerblock attribute)": [[160, "pyVHDLParser.Blocks.Object.Variable.VariableDeclarationEndMarkerBlock.NextBlock"]], "starttoken (pyvhdlparser.blocks.object.variable.variabledeclarationblock attribute)": [[160, "pyVHDLParser.Blocks.Object.Variable.VariableDeclarationBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.object.variable.variabledeclarationdefaultexpressionblock attribute)": [[160, "pyVHDLParser.Blocks.Object.Variable.VariableDeclarationDefaultExpressionBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.object.variable.variabledeclarationendmarkerblock attribute)": [[160, "pyVHDLParser.Blocks.Object.Variable.VariableDeclarationEndMarkerBlock.StartToken"]], "states (pyvhdlparser.blocks.object.variable.variabledeclarationblock property)": [[160, "pyVHDLParser.Blocks.Object.Variable.VariableDeclarationBlock.States"]], "states (pyvhdlparser.blocks.object.variable.variabledeclarationdefaultexpressionblock property)": [[160, "pyVHDLParser.Blocks.Object.Variable.VariableDeclarationDefaultExpressionBlock.States"]], "states (pyvhdlparser.blocks.object.variable.variabledeclarationendmarkerblock property)": [[160, "pyVHDLParser.Blocks.Object.Variable.VariableDeclarationEndMarkerBlock.States"]], "variabledeclarationblock (class in pyvhdlparser.blocks.object.variable)": [[160, "pyVHDLParser.Blocks.Object.Variable.VariableDeclarationBlock"]], "variabledeclarationdefaultexpressionblock (class in pyvhdlparser.blocks.object.variable)": [[160, "pyVHDLParser.Blocks.Object.Variable.VariableDeclarationDefaultExpressionBlock"]], "variabledeclarationendmarkerblock (class in pyvhdlparser.blocks.object.variable)": [[160, "pyVHDLParser.Blocks.Object.Variable.VariableDeclarationEndMarkerBlock"]], "__states__ (pyvhdlparser.blocks.object.variable.variabledeclarationblock attribute)": [[160, "pyVHDLParser.Blocks.Object.Variable.VariableDeclarationBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.object.variable.variabledeclarationdefaultexpressionblock attribute)": [[160, "pyVHDLParser.Blocks.Object.Variable.VariableDeclarationDefaultExpressionBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.object.variable.variabledeclarationendmarkerblock attribute)": [[160, "pyVHDLParser.Blocks.Object.Variable.VariableDeclarationEndMarkerBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.object.variable.variabledeclarationblock method)": [[160, "pyVHDLParser.Blocks.Object.Variable.VariableDeclarationBlock.__init__"]], "__init__() (pyvhdlparser.blocks.object.variable.variabledeclarationdefaultexpressionblock method)": [[160, "pyVHDLParser.Blocks.Object.Variable.VariableDeclarationDefaultExpressionBlock.__init__"]], "__init__() (pyvhdlparser.blocks.object.variable.variabledeclarationendmarkerblock method)": [[160, "pyVHDLParser.Blocks.Object.Variable.VariableDeclarationEndMarkerBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.object.variable.variabledeclarationblock method)": [[160, "pyVHDLParser.Blocks.Object.Variable.VariableDeclarationBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.object.variable.variabledeclarationdefaultexpressionblock method)": [[160, "pyVHDLParser.Blocks.Object.Variable.VariableDeclarationDefaultExpressionBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.object.variable.variabledeclarationendmarkerblock method)": [[160, "pyVHDLParser.Blocks.Object.Variable.VariableDeclarationEndMarkerBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.object.variable.variabledeclarationblock method)": [[160, "pyVHDLParser.Blocks.Object.Variable.VariableDeclarationBlock.__len__"]], "__len__() (pyvhdlparser.blocks.object.variable.variabledeclarationdefaultexpressionblock method)": [[160, "pyVHDLParser.Blocks.Object.Variable.VariableDeclarationDefaultExpressionBlock.__len__"]], "__len__() (pyvhdlparser.blocks.object.variable.variabledeclarationendmarkerblock method)": [[160, "pyVHDLParser.Blocks.Object.Variable.VariableDeclarationEndMarkerBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.object.variable.variabledeclarationblock method)": [[160, "pyVHDLParser.Blocks.Object.Variable.VariableDeclarationBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.object.variable.variabledeclarationdefaultexpressionblock method)": [[160, "pyVHDLParser.Blocks.Object.Variable.VariableDeclarationDefaultExpressionBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.object.variable.variabledeclarationendmarkerblock method)": [[160, "pyVHDLParser.Blocks.Object.Variable.VariableDeclarationEndMarkerBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.object.variable.variabledeclarationblock method)": [[160, "pyVHDLParser.Blocks.Object.Variable.VariableDeclarationBlock.__str__"]], "__str__() (pyvhdlparser.blocks.object.variable.variabledeclarationdefaultexpressionblock method)": [[160, "pyVHDLParser.Blocks.Object.Variable.VariableDeclarationDefaultExpressionBlock.__str__"]], "__str__() (pyvhdlparser.blocks.object.variable.variabledeclarationendmarkerblock method)": [[160, "pyVHDLParser.Blocks.Object.Variable.VariableDeclarationEndMarkerBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.object.variable.variabledeclarationblock attribute)": [[160, "pyVHDLParser.Blocks.Object.Variable.VariableDeclarationBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.object.variable.variabledeclarationdefaultexpressionblock attribute)": [[160, "pyVHDLParser.Blocks.Object.Variable.VariableDeclarationDefaultExpressionBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.object.variable.variabledeclarationendmarkerblock attribute)": [[160, "pyVHDLParser.Blocks.Object.Variable.VariableDeclarationEndMarkerBlock._previousBlock"]], "pyvhdlparser.blocks.object.variable": [[160, "module-pyVHDLParser.Blocks.Object.Variable"]], "stateerror() (pyvhdlparser.blocks.object.variable.variabledeclarationblock class method)": [[160, "pyVHDLParser.Blocks.Object.Variable.VariableDeclarationBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.object.variable.variabledeclarationdefaultexpressionblock class method)": [[160, "pyVHDLParser.Blocks.Object.Variable.VariableDeclarationDefaultExpressionBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.object.variable.variabledeclarationendmarkerblock class method)": [[160, "pyVHDLParser.Blocks.Object.Variable.VariableDeclarationEndMarkerBlock.stateError"]], "pyvhdlparser.blocks.reference": [[161, "module-pyVHDLParser.Blocks.Reference"]], "endblock (class in pyvhdlparser.blocks.reference.context)": [[162, "pyVHDLParser.Blocks.Reference.Context.EndBlock"]], "endtoken (pyvhdlparser.blocks.reference.context.endblock attribute)": [[162, "pyVHDLParser.Blocks.Reference.Context.EndBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.reference.context.nameblock attribute)": [[162, "pyVHDLParser.Blocks.Reference.Context.NameBlock.EndToken"]], "keyword (pyvhdlparser.blocks.reference.context.endblock attribute)": [[162, "pyVHDLParser.Blocks.Reference.Context.EndBlock.KEYWORD"]], "length (pyvhdlparser.blocks.reference.context.endblock property)": [[162, "pyVHDLParser.Blocks.Reference.Context.EndBlock.Length"]], "length (pyvhdlparser.blocks.reference.context.nameblock property)": [[162, "pyVHDLParser.Blocks.Reference.Context.NameBlock.Length"]], "multipart (pyvhdlparser.blocks.reference.context.endblock attribute)": [[162, "pyVHDLParser.Blocks.Reference.Context.EndBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.reference.context.nameblock attribute)": [[162, "pyVHDLParser.Blocks.Reference.Context.NameBlock.MultiPart"]], "nameblock (class in pyvhdlparser.blocks.reference.context)": [[162, "pyVHDLParser.Blocks.Reference.Context.NameBlock"]], "nextblock (pyvhdlparser.blocks.reference.context.endblock attribute)": [[162, "pyVHDLParser.Blocks.Reference.Context.EndBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.reference.context.nameblock attribute)": [[162, "pyVHDLParser.Blocks.Reference.Context.NameBlock.NextBlock"]], "starttoken (pyvhdlparser.blocks.reference.context.endblock attribute)": [[162, "pyVHDLParser.Blocks.Reference.Context.EndBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.reference.context.nameblock attribute)": [[162, "pyVHDLParser.Blocks.Reference.Context.NameBlock.StartToken"]], "states (pyvhdlparser.blocks.reference.context.endblock property)": [[162, "pyVHDLParser.Blocks.Reference.Context.EndBlock.States"]], "states (pyvhdlparser.blocks.reference.context.nameblock property)": [[162, "pyVHDLParser.Blocks.Reference.Context.NameBlock.States"]], "__states__ (pyvhdlparser.blocks.reference.context.endblock attribute)": [[162, "pyVHDLParser.Blocks.Reference.Context.EndBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.reference.context.nameblock attribute)": [[162, "pyVHDLParser.Blocks.Reference.Context.NameBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.reference.context.endblock method)": [[162, "pyVHDLParser.Blocks.Reference.Context.EndBlock.__init__"]], "__init__() (pyvhdlparser.blocks.reference.context.nameblock method)": [[162, "pyVHDLParser.Blocks.Reference.Context.NameBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.reference.context.endblock method)": [[162, "pyVHDLParser.Blocks.Reference.Context.EndBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.reference.context.nameblock method)": [[162, "pyVHDLParser.Blocks.Reference.Context.NameBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.reference.context.endblock method)": [[162, "pyVHDLParser.Blocks.Reference.Context.EndBlock.__len__"]], "__len__() (pyvhdlparser.blocks.reference.context.nameblock method)": [[162, "pyVHDLParser.Blocks.Reference.Context.NameBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.reference.context.endblock method)": [[162, "pyVHDLParser.Blocks.Reference.Context.EndBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.reference.context.nameblock method)": [[162, "pyVHDLParser.Blocks.Reference.Context.NameBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.reference.context.endblock method)": [[162, "pyVHDLParser.Blocks.Reference.Context.EndBlock.__str__"]], "__str__() (pyvhdlparser.blocks.reference.context.nameblock method)": [[162, "pyVHDLParser.Blocks.Reference.Context.NameBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.reference.context.endblock attribute)": [[162, "pyVHDLParser.Blocks.Reference.Context.EndBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.reference.context.nameblock attribute)": [[162, "pyVHDLParser.Blocks.Reference.Context.NameBlock._previousBlock"]], "pyvhdlparser.blocks.reference.context": [[162, "module-pyVHDLParser.Blocks.Reference.Context"]], "stateerror() (pyvhdlparser.blocks.reference.context.endblock class method)": [[162, "pyVHDLParser.Blocks.Reference.Context.EndBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.reference.context.nameblock class method)": [[162, "pyVHDLParser.Blocks.Reference.Context.NameBlock.stateError"]], "delimiterblock (class in pyvhdlparser.blocks.reference.library)": [[163, "pyVHDLParser.Blocks.Reference.Library.DelimiterBlock"]], "endblock (class in pyvhdlparser.blocks.reference.library)": [[163, "pyVHDLParser.Blocks.Reference.Library.EndBlock"]], "endtoken (pyvhdlparser.blocks.reference.library.delimiterblock attribute)": [[163, "pyVHDLParser.Blocks.Reference.Library.DelimiterBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.reference.library.endblock attribute)": [[163, "pyVHDLParser.Blocks.Reference.Library.EndBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.reference.library.librarynameblock attribute)": [[163, "pyVHDLParser.Blocks.Reference.Library.LibraryNameBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.reference.library.startblock attribute)": [[163, "pyVHDLParser.Blocks.Reference.Library.StartBlock.EndToken"]], "length (pyvhdlparser.blocks.reference.library.delimiterblock property)": [[163, "pyVHDLParser.Blocks.Reference.Library.DelimiterBlock.Length"]], "length (pyvhdlparser.blocks.reference.library.endblock property)": [[163, "pyVHDLParser.Blocks.Reference.Library.EndBlock.Length"]], "length (pyvhdlparser.blocks.reference.library.librarynameblock property)": [[163, "pyVHDLParser.Blocks.Reference.Library.LibraryNameBlock.Length"]], "length (pyvhdlparser.blocks.reference.library.startblock property)": [[163, "pyVHDLParser.Blocks.Reference.Library.StartBlock.Length"]], "librarynameblock (class in pyvhdlparser.blocks.reference.library)": [[163, "pyVHDLParser.Blocks.Reference.Library.LibraryNameBlock"]], "multipart (pyvhdlparser.blocks.reference.library.delimiterblock attribute)": [[163, "pyVHDLParser.Blocks.Reference.Library.DelimiterBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.reference.library.endblock attribute)": [[163, "pyVHDLParser.Blocks.Reference.Library.EndBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.reference.library.librarynameblock attribute)": [[163, "pyVHDLParser.Blocks.Reference.Library.LibraryNameBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.reference.library.startblock attribute)": [[163, "pyVHDLParser.Blocks.Reference.Library.StartBlock.MultiPart"]], "nextblock (pyvhdlparser.blocks.reference.library.delimiterblock attribute)": [[163, "pyVHDLParser.Blocks.Reference.Library.DelimiterBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.reference.library.endblock attribute)": [[163, "pyVHDLParser.Blocks.Reference.Library.EndBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.reference.library.librarynameblock attribute)": [[163, "pyVHDLParser.Blocks.Reference.Library.LibraryNameBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.reference.library.startblock attribute)": [[163, "pyVHDLParser.Blocks.Reference.Library.StartBlock.NextBlock"]], "startblock (class in pyvhdlparser.blocks.reference.library)": [[163, "pyVHDLParser.Blocks.Reference.Library.StartBlock"]], "starttoken (pyvhdlparser.blocks.reference.library.delimiterblock attribute)": [[163, "pyVHDLParser.Blocks.Reference.Library.DelimiterBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.reference.library.endblock attribute)": [[163, "pyVHDLParser.Blocks.Reference.Library.EndBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.reference.library.librarynameblock attribute)": [[163, "pyVHDLParser.Blocks.Reference.Library.LibraryNameBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.reference.library.startblock attribute)": [[163, "pyVHDLParser.Blocks.Reference.Library.StartBlock.StartToken"]], "states (pyvhdlparser.blocks.reference.library.delimiterblock property)": [[163, "pyVHDLParser.Blocks.Reference.Library.DelimiterBlock.States"]], "states (pyvhdlparser.blocks.reference.library.endblock property)": [[163, "pyVHDLParser.Blocks.Reference.Library.EndBlock.States"]], "states (pyvhdlparser.blocks.reference.library.librarynameblock property)": [[163, "pyVHDLParser.Blocks.Reference.Library.LibraryNameBlock.States"]], "states (pyvhdlparser.blocks.reference.library.startblock property)": [[163, "pyVHDLParser.Blocks.Reference.Library.StartBlock.States"]], "__states__ (pyvhdlparser.blocks.reference.library.delimiterblock attribute)": [[163, "pyVHDLParser.Blocks.Reference.Library.DelimiterBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.reference.library.endblock attribute)": [[163, "pyVHDLParser.Blocks.Reference.Library.EndBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.reference.library.librarynameblock attribute)": [[163, "pyVHDLParser.Blocks.Reference.Library.LibraryNameBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.reference.library.startblock attribute)": [[163, "pyVHDLParser.Blocks.Reference.Library.StartBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.reference.library.delimiterblock method)": [[163, "pyVHDLParser.Blocks.Reference.Library.DelimiterBlock.__init__"]], "__init__() (pyvhdlparser.blocks.reference.library.endblock method)": [[163, "pyVHDLParser.Blocks.Reference.Library.EndBlock.__init__"]], "__init__() (pyvhdlparser.blocks.reference.library.librarynameblock method)": [[163, "pyVHDLParser.Blocks.Reference.Library.LibraryNameBlock.__init__"]], "__init__() (pyvhdlparser.blocks.reference.library.startblock method)": [[163, "pyVHDLParser.Blocks.Reference.Library.StartBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.reference.library.delimiterblock method)": [[163, "pyVHDLParser.Blocks.Reference.Library.DelimiterBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.reference.library.endblock method)": [[163, "pyVHDLParser.Blocks.Reference.Library.EndBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.reference.library.librarynameblock method)": [[163, "pyVHDLParser.Blocks.Reference.Library.LibraryNameBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.reference.library.startblock method)": [[163, "pyVHDLParser.Blocks.Reference.Library.StartBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.reference.library.delimiterblock method)": [[163, "pyVHDLParser.Blocks.Reference.Library.DelimiterBlock.__len__"]], "__len__() (pyvhdlparser.blocks.reference.library.endblock method)": [[163, "pyVHDLParser.Blocks.Reference.Library.EndBlock.__len__"]], "__len__() (pyvhdlparser.blocks.reference.library.librarynameblock method)": [[163, "pyVHDLParser.Blocks.Reference.Library.LibraryNameBlock.__len__"]], "__len__() (pyvhdlparser.blocks.reference.library.startblock method)": [[163, "pyVHDLParser.Blocks.Reference.Library.StartBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.reference.library.delimiterblock method)": [[163, "pyVHDLParser.Blocks.Reference.Library.DelimiterBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.reference.library.endblock method)": [[163, "pyVHDLParser.Blocks.Reference.Library.EndBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.reference.library.librarynameblock method)": [[163, "pyVHDLParser.Blocks.Reference.Library.LibraryNameBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.reference.library.startblock method)": [[163, "pyVHDLParser.Blocks.Reference.Library.StartBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.reference.library.delimiterblock method)": [[163, "pyVHDLParser.Blocks.Reference.Library.DelimiterBlock.__str__"]], "__str__() (pyvhdlparser.blocks.reference.library.endblock method)": [[163, "pyVHDLParser.Blocks.Reference.Library.EndBlock.__str__"]], "__str__() (pyvhdlparser.blocks.reference.library.librarynameblock method)": [[163, "pyVHDLParser.Blocks.Reference.Library.LibraryNameBlock.__str__"]], "__str__() (pyvhdlparser.blocks.reference.library.startblock method)": [[163, "pyVHDLParser.Blocks.Reference.Library.StartBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.reference.library.delimiterblock attribute)": [[163, "pyVHDLParser.Blocks.Reference.Library.DelimiterBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.reference.library.endblock attribute)": [[163, "pyVHDLParser.Blocks.Reference.Library.EndBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.reference.library.librarynameblock attribute)": [[163, "pyVHDLParser.Blocks.Reference.Library.LibraryNameBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.reference.library.startblock attribute)": [[163, "pyVHDLParser.Blocks.Reference.Library.StartBlock._previousBlock"]], "pyvhdlparser.blocks.reference.library": [[163, "module-pyVHDLParser.Blocks.Reference.Library"]], "stateerror() (pyvhdlparser.blocks.reference.library.delimiterblock class method)": [[163, "pyVHDLParser.Blocks.Reference.Library.DelimiterBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.reference.library.endblock class method)": [[163, "pyVHDLParser.Blocks.Reference.Library.EndBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.reference.library.librarynameblock class method)": [[163, "pyVHDLParser.Blocks.Reference.Library.LibraryNameBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.reference.library.startblock class method)": [[163, "pyVHDLParser.Blocks.Reference.Library.StartBlock.stateError"]], "delimiterblock (class in pyvhdlparser.blocks.reference.use)": [[164, "pyVHDLParser.Blocks.Reference.Use.DelimiterBlock"]], "endblock (class in pyvhdlparser.blocks.reference.use)": [[164, "pyVHDLParser.Blocks.Reference.Use.EndBlock"]], "endtoken (pyvhdlparser.blocks.reference.use.delimiterblock attribute)": [[164, "pyVHDLParser.Blocks.Reference.Use.DelimiterBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.reference.use.endblock attribute)": [[164, "pyVHDLParser.Blocks.Reference.Use.EndBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.reference.use.referencenameblock attribute)": [[164, "pyVHDLParser.Blocks.Reference.Use.ReferenceNameBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.reference.use.startblock attribute)": [[164, "pyVHDLParser.Blocks.Reference.Use.StartBlock.EndToken"]], "length (pyvhdlparser.blocks.reference.use.delimiterblock property)": [[164, "pyVHDLParser.Blocks.Reference.Use.DelimiterBlock.Length"]], "length (pyvhdlparser.blocks.reference.use.endblock property)": [[164, "pyVHDLParser.Blocks.Reference.Use.EndBlock.Length"]], "length (pyvhdlparser.blocks.reference.use.referencenameblock property)": [[164, "pyVHDLParser.Blocks.Reference.Use.ReferenceNameBlock.Length"]], "length (pyvhdlparser.blocks.reference.use.startblock property)": [[164, "pyVHDLParser.Blocks.Reference.Use.StartBlock.Length"]], "multipart (pyvhdlparser.blocks.reference.use.delimiterblock attribute)": [[164, "pyVHDLParser.Blocks.Reference.Use.DelimiterBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.reference.use.endblock attribute)": [[164, "pyVHDLParser.Blocks.Reference.Use.EndBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.reference.use.referencenameblock attribute)": [[164, "pyVHDLParser.Blocks.Reference.Use.ReferenceNameBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.reference.use.startblock attribute)": [[164, "pyVHDLParser.Blocks.Reference.Use.StartBlock.MultiPart"]], "nextblock (pyvhdlparser.blocks.reference.use.delimiterblock attribute)": [[164, "pyVHDLParser.Blocks.Reference.Use.DelimiterBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.reference.use.endblock attribute)": [[164, "pyVHDLParser.Blocks.Reference.Use.EndBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.reference.use.referencenameblock attribute)": [[164, "pyVHDLParser.Blocks.Reference.Use.ReferenceNameBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.reference.use.startblock attribute)": [[164, "pyVHDLParser.Blocks.Reference.Use.StartBlock.NextBlock"]], "referencenameblock (class in pyvhdlparser.blocks.reference.use)": [[164, "pyVHDLParser.Blocks.Reference.Use.ReferenceNameBlock"]], "startblock (class in pyvhdlparser.blocks.reference.use)": [[164, "pyVHDLParser.Blocks.Reference.Use.StartBlock"]], "starttoken (pyvhdlparser.blocks.reference.use.delimiterblock attribute)": [[164, "pyVHDLParser.Blocks.Reference.Use.DelimiterBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.reference.use.endblock attribute)": [[164, "pyVHDLParser.Blocks.Reference.Use.EndBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.reference.use.referencenameblock attribute)": [[164, "pyVHDLParser.Blocks.Reference.Use.ReferenceNameBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.reference.use.startblock attribute)": [[164, "pyVHDLParser.Blocks.Reference.Use.StartBlock.StartToken"]], "states (pyvhdlparser.blocks.reference.use.delimiterblock property)": [[164, "pyVHDLParser.Blocks.Reference.Use.DelimiterBlock.States"]], "states (pyvhdlparser.blocks.reference.use.endblock property)": [[164, "pyVHDLParser.Blocks.Reference.Use.EndBlock.States"]], "states (pyvhdlparser.blocks.reference.use.referencenameblock property)": [[164, "pyVHDLParser.Blocks.Reference.Use.ReferenceNameBlock.States"]], "states (pyvhdlparser.blocks.reference.use.startblock property)": [[164, "pyVHDLParser.Blocks.Reference.Use.StartBlock.States"]], "__states__ (pyvhdlparser.blocks.reference.use.delimiterblock attribute)": [[164, "pyVHDLParser.Blocks.Reference.Use.DelimiterBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.reference.use.endblock attribute)": [[164, "pyVHDLParser.Blocks.Reference.Use.EndBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.reference.use.referencenameblock attribute)": [[164, "pyVHDLParser.Blocks.Reference.Use.ReferenceNameBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.reference.use.startblock attribute)": [[164, "pyVHDLParser.Blocks.Reference.Use.StartBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.reference.use.delimiterblock method)": [[164, "pyVHDLParser.Blocks.Reference.Use.DelimiterBlock.__init__"]], "__init__() (pyvhdlparser.blocks.reference.use.endblock method)": [[164, "pyVHDLParser.Blocks.Reference.Use.EndBlock.__init__"]], "__init__() (pyvhdlparser.blocks.reference.use.referencenameblock method)": [[164, "pyVHDLParser.Blocks.Reference.Use.ReferenceNameBlock.__init__"]], "__init__() (pyvhdlparser.blocks.reference.use.startblock method)": [[164, "pyVHDLParser.Blocks.Reference.Use.StartBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.reference.use.delimiterblock method)": [[164, "pyVHDLParser.Blocks.Reference.Use.DelimiterBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.reference.use.endblock method)": [[164, "pyVHDLParser.Blocks.Reference.Use.EndBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.reference.use.referencenameblock method)": [[164, "pyVHDLParser.Blocks.Reference.Use.ReferenceNameBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.reference.use.startblock method)": [[164, "pyVHDLParser.Blocks.Reference.Use.StartBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.reference.use.delimiterblock method)": [[164, "pyVHDLParser.Blocks.Reference.Use.DelimiterBlock.__len__"]], "__len__() (pyvhdlparser.blocks.reference.use.endblock method)": [[164, "pyVHDLParser.Blocks.Reference.Use.EndBlock.__len__"]], "__len__() (pyvhdlparser.blocks.reference.use.referencenameblock method)": [[164, "pyVHDLParser.Blocks.Reference.Use.ReferenceNameBlock.__len__"]], "__len__() (pyvhdlparser.blocks.reference.use.startblock method)": [[164, "pyVHDLParser.Blocks.Reference.Use.StartBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.reference.use.delimiterblock method)": [[164, "pyVHDLParser.Blocks.Reference.Use.DelimiterBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.reference.use.endblock method)": [[164, "pyVHDLParser.Blocks.Reference.Use.EndBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.reference.use.referencenameblock method)": [[164, "pyVHDLParser.Blocks.Reference.Use.ReferenceNameBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.reference.use.startblock method)": [[164, "pyVHDLParser.Blocks.Reference.Use.StartBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.reference.use.delimiterblock method)": [[164, "pyVHDLParser.Blocks.Reference.Use.DelimiterBlock.__str__"]], "__str__() (pyvhdlparser.blocks.reference.use.endblock method)": [[164, "pyVHDLParser.Blocks.Reference.Use.EndBlock.__str__"]], "__str__() (pyvhdlparser.blocks.reference.use.referencenameblock method)": [[164, "pyVHDLParser.Blocks.Reference.Use.ReferenceNameBlock.__str__"]], "__str__() (pyvhdlparser.blocks.reference.use.startblock method)": [[164, "pyVHDLParser.Blocks.Reference.Use.StartBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.reference.use.delimiterblock attribute)": [[164, "pyVHDLParser.Blocks.Reference.Use.DelimiterBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.reference.use.endblock attribute)": [[164, "pyVHDLParser.Blocks.Reference.Use.EndBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.reference.use.referencenameblock attribute)": [[164, "pyVHDLParser.Blocks.Reference.Use.ReferenceNameBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.reference.use.startblock attribute)": [[164, "pyVHDLParser.Blocks.Reference.Use.StartBlock._previousBlock"]], "pyvhdlparser.blocks.reference.use": [[164, "module-pyVHDLParser.Blocks.Reference.Use"]], "stateerror() (pyvhdlparser.blocks.reference.use.delimiterblock class method)": [[164, "pyVHDLParser.Blocks.Reference.Use.DelimiterBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.reference.use.endblock class method)": [[164, "pyVHDLParser.Blocks.Reference.Use.EndBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.reference.use.referencenameblock class method)": [[164, "pyVHDLParser.Blocks.Reference.Use.ReferenceNameBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.reference.use.startblock class method)": [[164, "pyVHDLParser.Blocks.Reference.Use.StartBlock.stateError"]], "pyvhdlparser.blocks.reporting": [[165, "module-pyVHDLParser.Blocks.Reporting"]], "assertblock (class in pyvhdlparser.blocks.reporting.assert)": [[166, "pyVHDLParser.Blocks.Reporting.Assert.AssertBlock"]], "endtoken (pyvhdlparser.blocks.reporting.assert.assertblock attribute)": [[166, "pyVHDLParser.Blocks.Reporting.Assert.AssertBlock.EndToken"]], "length (pyvhdlparser.blocks.reporting.assert.assertblock property)": [[166, "pyVHDLParser.Blocks.Reporting.Assert.AssertBlock.Length"]], "multipart (pyvhdlparser.blocks.reporting.assert.assertblock attribute)": [[166, "pyVHDLParser.Blocks.Reporting.Assert.AssertBlock.MultiPart"]], "nextblock (pyvhdlparser.blocks.reporting.assert.assertblock attribute)": [[166, "pyVHDLParser.Blocks.Reporting.Assert.AssertBlock.NextBlock"]], "starttoken (pyvhdlparser.blocks.reporting.assert.assertblock attribute)": [[166, "pyVHDLParser.Blocks.Reporting.Assert.AssertBlock.StartToken"]], "states (pyvhdlparser.blocks.reporting.assert.assertblock property)": [[166, "pyVHDLParser.Blocks.Reporting.Assert.AssertBlock.States"]], "__states__ (pyvhdlparser.blocks.reporting.assert.assertblock attribute)": [[166, "pyVHDLParser.Blocks.Reporting.Assert.AssertBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.reporting.assert.assertblock method)": [[166, "pyVHDLParser.Blocks.Reporting.Assert.AssertBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.reporting.assert.assertblock method)": [[166, "pyVHDLParser.Blocks.Reporting.Assert.AssertBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.reporting.assert.assertblock method)": [[166, "pyVHDLParser.Blocks.Reporting.Assert.AssertBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.reporting.assert.assertblock method)": [[166, "pyVHDLParser.Blocks.Reporting.Assert.AssertBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.reporting.assert.assertblock method)": [[166, "pyVHDLParser.Blocks.Reporting.Assert.AssertBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.reporting.assert.assertblock attribute)": [[166, "pyVHDLParser.Blocks.Reporting.Assert.AssertBlock._previousBlock"]], "pyvhdlparser.blocks.reporting.assert": [[166, "module-pyVHDLParser.Blocks.Reporting.Assert"]], "stateerror() (pyvhdlparser.blocks.reporting.assert.assertblock class method)": [[166, "pyVHDLParser.Blocks.Reporting.Assert.AssertBlock.stateError"]], "endtoken (pyvhdlparser.blocks.reporting.report.reportblock attribute)": [[167, "pyVHDLParser.Blocks.Reporting.Report.ReportBlock.EndToken"]], "length (pyvhdlparser.blocks.reporting.report.reportblock property)": [[167, "pyVHDLParser.Blocks.Reporting.Report.ReportBlock.Length"]], "multipart (pyvhdlparser.blocks.reporting.report.reportblock attribute)": [[167, "pyVHDLParser.Blocks.Reporting.Report.ReportBlock.MultiPart"]], "nextblock (pyvhdlparser.blocks.reporting.report.reportblock attribute)": [[167, "pyVHDLParser.Blocks.Reporting.Report.ReportBlock.NextBlock"]], "reportblock (class in pyvhdlparser.blocks.reporting.report)": [[167, "pyVHDLParser.Blocks.Reporting.Report.ReportBlock"]], "starttoken (pyvhdlparser.blocks.reporting.report.reportblock attribute)": [[167, "pyVHDLParser.Blocks.Reporting.Report.ReportBlock.StartToken"]], "states (pyvhdlparser.blocks.reporting.report.reportblock property)": [[167, "pyVHDLParser.Blocks.Reporting.Report.ReportBlock.States"]], "__states__ (pyvhdlparser.blocks.reporting.report.reportblock attribute)": [[167, "pyVHDLParser.Blocks.Reporting.Report.ReportBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.reporting.report.reportblock method)": [[167, "pyVHDLParser.Blocks.Reporting.Report.ReportBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.reporting.report.reportblock method)": [[167, "pyVHDLParser.Blocks.Reporting.Report.ReportBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.reporting.report.reportblock method)": [[167, "pyVHDLParser.Blocks.Reporting.Report.ReportBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.reporting.report.reportblock method)": [[167, "pyVHDLParser.Blocks.Reporting.Report.ReportBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.reporting.report.reportblock method)": [[167, "pyVHDLParser.Blocks.Reporting.Report.ReportBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.reporting.report.reportblock attribute)": [[167, "pyVHDLParser.Blocks.Reporting.Report.ReportBlock._previousBlock"]], "pyvhdlparser.blocks.reporting.report": [[167, "module-pyVHDLParser.Blocks.Reporting.Report"]], "stateerror() (pyvhdlparser.blocks.reporting.report.reportblock class method)": [[167, "pyVHDLParser.Blocks.Reporting.Report.ReportBlock.stateError"]], "pyvhdlparser.blocks.sequential": [[168, "module-pyVHDLParser.Blocks.Sequential"]], "begin_block (pyvhdlparser.blocks.sequential.function.declarativeregion attribute)": [[169, "pyVHDLParser.Blocks.Sequential.Function.DeclarativeRegion.BEGIN_BLOCK"]], "beginblock (class in pyvhdlparser.blocks.sequential.function)": [[169, "pyVHDLParser.Blocks.Sequential.Function.BeginBlock"]], "declarativeregion (class in pyvhdlparser.blocks.sequential.function)": [[169, "pyVHDLParser.Blocks.Sequential.Function.DeclarativeRegion"]], "end_block (pyvhdlparser.blocks.sequential.function.beginblock attribute)": [[169, "pyVHDLParser.Blocks.Sequential.Function.BeginBlock.END_BLOCK"]], "end_block (pyvhdlparser.blocks.sequential.function.declarativeregion attribute)": [[169, "pyVHDLParser.Blocks.Sequential.Function.DeclarativeRegion.END_BLOCK"]], "endblock (class in pyvhdlparser.blocks.sequential.function)": [[169, "pyVHDLParser.Blocks.Sequential.Function.EndBlock"]], "endtoken (pyvhdlparser.blocks.sequential.function.beginblock attribute)": [[169, "pyVHDLParser.Blocks.Sequential.Function.BeginBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.sequential.function.endblock attribute)": [[169, "pyVHDLParser.Blocks.Sequential.Function.EndBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.sequential.function.nameblock attribute)": [[169, "pyVHDLParser.Blocks.Sequential.Function.NameBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.sequential.function.returntypeblock attribute)": [[169, "pyVHDLParser.Blocks.Sequential.Function.ReturnTypeBlock.EndToken"]], "keyword (pyvhdlparser.blocks.sequential.function.endblock attribute)": [[169, "pyVHDLParser.Blocks.Sequential.Function.EndBlock.KEYWORD"]], "length (pyvhdlparser.blocks.sequential.function.beginblock property)": [[169, "pyVHDLParser.Blocks.Sequential.Function.BeginBlock.Length"]], "length (pyvhdlparser.blocks.sequential.function.endblock property)": [[169, "pyVHDLParser.Blocks.Sequential.Function.EndBlock.Length"]], "length (pyvhdlparser.blocks.sequential.function.nameblock property)": [[169, "pyVHDLParser.Blocks.Sequential.Function.NameBlock.Length"]], "length (pyvhdlparser.blocks.sequential.function.returntypeblock property)": [[169, "pyVHDLParser.Blocks.Sequential.Function.ReturnTypeBlock.Length"]], "multipart (pyvhdlparser.blocks.sequential.function.beginblock attribute)": [[169, "pyVHDLParser.Blocks.Sequential.Function.BeginBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.sequential.function.endblock attribute)": [[169, "pyVHDLParser.Blocks.Sequential.Function.EndBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.sequential.function.nameblock attribute)": [[169, "pyVHDLParser.Blocks.Sequential.Function.NameBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.sequential.function.returntypeblock attribute)": [[169, "pyVHDLParser.Blocks.Sequential.Function.ReturnTypeBlock.MultiPart"]], "nameblock (class in pyvhdlparser.blocks.sequential.function)": [[169, "pyVHDLParser.Blocks.Sequential.Function.NameBlock"]], "nextblock (pyvhdlparser.blocks.sequential.function.beginblock attribute)": [[169, "pyVHDLParser.Blocks.Sequential.Function.BeginBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.sequential.function.endblock attribute)": [[169, "pyVHDLParser.Blocks.Sequential.Function.EndBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.sequential.function.nameblock attribute)": [[169, "pyVHDLParser.Blocks.Sequential.Function.NameBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.sequential.function.returntypeblock attribute)": [[169, "pyVHDLParser.Blocks.Sequential.Function.ReturnTypeBlock.NextBlock"]], "returntypeblock (class in pyvhdlparser.blocks.sequential.function)": [[169, "pyVHDLParser.Blocks.Sequential.Function.ReturnTypeBlock"]], "starttoken (pyvhdlparser.blocks.sequential.function.beginblock attribute)": [[169, "pyVHDLParser.Blocks.Sequential.Function.BeginBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.sequential.function.endblock attribute)": [[169, "pyVHDLParser.Blocks.Sequential.Function.EndBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.sequential.function.nameblock attribute)": [[169, "pyVHDLParser.Blocks.Sequential.Function.NameBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.sequential.function.returntypeblock attribute)": [[169, "pyVHDLParser.Blocks.Sequential.Function.ReturnTypeBlock.StartToken"]], "states (pyvhdlparser.blocks.sequential.function.beginblock property)": [[169, "pyVHDLParser.Blocks.Sequential.Function.BeginBlock.States"]], "states (pyvhdlparser.blocks.sequential.function.endblock property)": [[169, "pyVHDLParser.Blocks.Sequential.Function.EndBlock.States"]], "states (pyvhdlparser.blocks.sequential.function.nameblock property)": [[169, "pyVHDLParser.Blocks.Sequential.Function.NameBlock.States"]], "states (pyvhdlparser.blocks.sequential.function.returntypeblock property)": [[169, "pyVHDLParser.Blocks.Sequential.Function.ReturnTypeBlock.States"]], "__states__ (pyvhdlparser.blocks.sequential.function.beginblock attribute)": [[169, "pyVHDLParser.Blocks.Sequential.Function.BeginBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.sequential.function.endblock attribute)": [[169, "pyVHDLParser.Blocks.Sequential.Function.EndBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.sequential.function.nameblock attribute)": [[169, "pyVHDLParser.Blocks.Sequential.Function.NameBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.sequential.function.returntypeblock attribute)": [[169, "pyVHDLParser.Blocks.Sequential.Function.ReturnTypeBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.sequential.function.beginblock method)": [[169, "pyVHDLParser.Blocks.Sequential.Function.BeginBlock.__init__"]], "__init__() (pyvhdlparser.blocks.sequential.function.endblock method)": [[169, "pyVHDLParser.Blocks.Sequential.Function.EndBlock.__init__"]], "__init__() (pyvhdlparser.blocks.sequential.function.nameblock method)": [[169, "pyVHDLParser.Blocks.Sequential.Function.NameBlock.__init__"]], "__init__() (pyvhdlparser.blocks.sequential.function.returntypeblock method)": [[169, "pyVHDLParser.Blocks.Sequential.Function.ReturnTypeBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.sequential.function.beginblock method)": [[169, "pyVHDLParser.Blocks.Sequential.Function.BeginBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.sequential.function.endblock method)": [[169, "pyVHDLParser.Blocks.Sequential.Function.EndBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.sequential.function.nameblock method)": [[169, "pyVHDLParser.Blocks.Sequential.Function.NameBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.sequential.function.returntypeblock method)": [[169, "pyVHDLParser.Blocks.Sequential.Function.ReturnTypeBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.sequential.function.beginblock method)": [[169, "pyVHDLParser.Blocks.Sequential.Function.BeginBlock.__len__"]], "__len__() (pyvhdlparser.blocks.sequential.function.endblock method)": [[169, "pyVHDLParser.Blocks.Sequential.Function.EndBlock.__len__"]], "__len__() (pyvhdlparser.blocks.sequential.function.nameblock method)": [[169, "pyVHDLParser.Blocks.Sequential.Function.NameBlock.__len__"]], "__len__() (pyvhdlparser.blocks.sequential.function.returntypeblock method)": [[169, "pyVHDLParser.Blocks.Sequential.Function.ReturnTypeBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.sequential.function.beginblock method)": [[169, "pyVHDLParser.Blocks.Sequential.Function.BeginBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.sequential.function.endblock method)": [[169, "pyVHDLParser.Blocks.Sequential.Function.EndBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.sequential.function.nameblock method)": [[169, "pyVHDLParser.Blocks.Sequential.Function.NameBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.sequential.function.returntypeblock method)": [[169, "pyVHDLParser.Blocks.Sequential.Function.ReturnTypeBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.sequential.function.beginblock method)": [[169, "pyVHDLParser.Blocks.Sequential.Function.BeginBlock.__str__"]], "__str__() (pyvhdlparser.blocks.sequential.function.endblock method)": [[169, "pyVHDLParser.Blocks.Sequential.Function.EndBlock.__str__"]], "__str__() (pyvhdlparser.blocks.sequential.function.nameblock method)": [[169, "pyVHDLParser.Blocks.Sequential.Function.NameBlock.__str__"]], "__str__() (pyvhdlparser.blocks.sequential.function.returntypeblock method)": [[169, "pyVHDLParser.Blocks.Sequential.Function.ReturnTypeBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.sequential.function.beginblock attribute)": [[169, "pyVHDLParser.Blocks.Sequential.Function.BeginBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.sequential.function.endblock attribute)": [[169, "pyVHDLParser.Blocks.Sequential.Function.EndBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.sequential.function.nameblock attribute)": [[169, "pyVHDLParser.Blocks.Sequential.Function.NameBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.sequential.function.returntypeblock attribute)": [[169, "pyVHDLParser.Blocks.Sequential.Function.ReturnTypeBlock._previousBlock"]], "pyvhdlparser.blocks.sequential.function": [[169, "module-pyVHDLParser.Blocks.Sequential.Function"]], "stateerror() (pyvhdlparser.blocks.sequential.function.beginblock class method)": [[169, "pyVHDLParser.Blocks.Sequential.Function.BeginBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.sequential.function.endblock class method)": [[169, "pyVHDLParser.Blocks.Sequential.Function.EndBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.sequential.function.nameblock class method)": [[169, "pyVHDLParser.Blocks.Sequential.Function.NameBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.sequential.function.returntypeblock class method)": [[169, "pyVHDLParser.Blocks.Sequential.Function.ReturnTypeBlock.stateError"]], "declarativeregion (class in pyvhdlparser.blocks.sequential.package)": [[170, "pyVHDLParser.Blocks.Sequential.Package.DeclarativeRegion"]], "end_block (pyvhdlparser.blocks.sequential.package.declarativeregion attribute)": [[170, "pyVHDLParser.Blocks.Sequential.Package.DeclarativeRegion.END_BLOCK"]], "endblock (class in pyvhdlparser.blocks.sequential.package)": [[170, "pyVHDLParser.Blocks.Sequential.Package.EndBlock"]], "endtoken (pyvhdlparser.blocks.sequential.package.endblock attribute)": [[170, "pyVHDLParser.Blocks.Sequential.Package.EndBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.sequential.package.nameblock attribute)": [[170, "pyVHDLParser.Blocks.Sequential.Package.NameBlock.EndToken"]], "keyword (pyvhdlparser.blocks.sequential.package.endblock attribute)": [[170, "pyVHDLParser.Blocks.Sequential.Package.EndBlock.KEYWORD"]], "length (pyvhdlparser.blocks.sequential.package.endblock property)": [[170, "pyVHDLParser.Blocks.Sequential.Package.EndBlock.Length"]], "length (pyvhdlparser.blocks.sequential.package.nameblock property)": [[170, "pyVHDLParser.Blocks.Sequential.Package.NameBlock.Length"]], "multipart (pyvhdlparser.blocks.sequential.package.endblock attribute)": [[170, "pyVHDLParser.Blocks.Sequential.Package.EndBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.sequential.package.nameblock attribute)": [[170, "pyVHDLParser.Blocks.Sequential.Package.NameBlock.MultiPart"]], "nameblock (class in pyvhdlparser.blocks.sequential.package)": [[170, "pyVHDLParser.Blocks.Sequential.Package.NameBlock"]], "nextblock (pyvhdlparser.blocks.sequential.package.endblock attribute)": [[170, "pyVHDLParser.Blocks.Sequential.Package.EndBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.sequential.package.nameblock attribute)": [[170, "pyVHDLParser.Blocks.Sequential.Package.NameBlock.NextBlock"]], "starttoken (pyvhdlparser.blocks.sequential.package.endblock attribute)": [[170, "pyVHDLParser.Blocks.Sequential.Package.EndBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.sequential.package.nameblock attribute)": [[170, "pyVHDLParser.Blocks.Sequential.Package.NameBlock.StartToken"]], "states (pyvhdlparser.blocks.sequential.package.endblock property)": [[170, "pyVHDLParser.Blocks.Sequential.Package.EndBlock.States"]], "states (pyvhdlparser.blocks.sequential.package.nameblock property)": [[170, "pyVHDLParser.Blocks.Sequential.Package.NameBlock.States"]], "__states__ (pyvhdlparser.blocks.sequential.package.endblock attribute)": [[170, "pyVHDLParser.Blocks.Sequential.Package.EndBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.sequential.package.nameblock attribute)": [[170, "pyVHDLParser.Blocks.Sequential.Package.NameBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.sequential.package.endblock method)": [[170, "pyVHDLParser.Blocks.Sequential.Package.EndBlock.__init__"]], "__init__() (pyvhdlparser.blocks.sequential.package.nameblock method)": [[170, "pyVHDLParser.Blocks.Sequential.Package.NameBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.sequential.package.endblock method)": [[170, "pyVHDLParser.Blocks.Sequential.Package.EndBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.sequential.package.nameblock method)": [[170, "pyVHDLParser.Blocks.Sequential.Package.NameBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.sequential.package.endblock method)": [[170, "pyVHDLParser.Blocks.Sequential.Package.EndBlock.__len__"]], "__len__() (pyvhdlparser.blocks.sequential.package.nameblock method)": [[170, "pyVHDLParser.Blocks.Sequential.Package.NameBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.sequential.package.endblock method)": [[170, "pyVHDLParser.Blocks.Sequential.Package.EndBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.sequential.package.nameblock method)": [[170, "pyVHDLParser.Blocks.Sequential.Package.NameBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.sequential.package.endblock method)": [[170, "pyVHDLParser.Blocks.Sequential.Package.EndBlock.__str__"]], "__str__() (pyvhdlparser.blocks.sequential.package.nameblock method)": [[170, "pyVHDLParser.Blocks.Sequential.Package.NameBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.sequential.package.endblock attribute)": [[170, "pyVHDLParser.Blocks.Sequential.Package.EndBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.sequential.package.nameblock attribute)": [[170, "pyVHDLParser.Blocks.Sequential.Package.NameBlock._previousBlock"]], "pyvhdlparser.blocks.sequential.package": [[170, "module-pyVHDLParser.Blocks.Sequential.Package"]], "stateerror() (pyvhdlparser.blocks.sequential.package.endblock class method)": [[170, "pyVHDLParser.Blocks.Sequential.Package.EndBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.sequential.package.nameblock class method)": [[170, "pyVHDLParser.Blocks.Sequential.Package.NameBlock.stateError"]], "declarativeregion (class in pyvhdlparser.blocks.sequential.packagebody)": [[171, "pyVHDLParser.Blocks.Sequential.PackageBody.DeclarativeRegion"]], "end_block (pyvhdlparser.blocks.sequential.packagebody.declarativeregion attribute)": [[171, "pyVHDLParser.Blocks.Sequential.PackageBody.DeclarativeRegion.END_BLOCK"]], "endblock (class in pyvhdlparser.blocks.sequential.packagebody)": [[171, "pyVHDLParser.Blocks.Sequential.PackageBody.EndBlock"]], "endtoken (pyvhdlparser.blocks.sequential.packagebody.endblock attribute)": [[171, "pyVHDLParser.Blocks.Sequential.PackageBody.EndBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.sequential.packagebody.nameblock attribute)": [[171, "pyVHDLParser.Blocks.Sequential.PackageBody.NameBlock.EndToken"]], "length (pyvhdlparser.blocks.sequential.packagebody.endblock property)": [[171, "pyVHDLParser.Blocks.Sequential.PackageBody.EndBlock.Length"]], "length (pyvhdlparser.blocks.sequential.packagebody.nameblock property)": [[171, "pyVHDLParser.Blocks.Sequential.PackageBody.NameBlock.Length"]], "multipart (pyvhdlparser.blocks.sequential.packagebody.endblock attribute)": [[171, "pyVHDLParser.Blocks.Sequential.PackageBody.EndBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.sequential.packagebody.nameblock attribute)": [[171, "pyVHDLParser.Blocks.Sequential.PackageBody.NameBlock.MultiPart"]], "nameblock (class in pyvhdlparser.blocks.sequential.packagebody)": [[171, "pyVHDLParser.Blocks.Sequential.PackageBody.NameBlock"]], "nextblock (pyvhdlparser.blocks.sequential.packagebody.endblock attribute)": [[171, "pyVHDLParser.Blocks.Sequential.PackageBody.EndBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.sequential.packagebody.nameblock attribute)": [[171, "pyVHDLParser.Blocks.Sequential.PackageBody.NameBlock.NextBlock"]], "starttoken (pyvhdlparser.blocks.sequential.packagebody.endblock attribute)": [[171, "pyVHDLParser.Blocks.Sequential.PackageBody.EndBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.sequential.packagebody.nameblock attribute)": [[171, "pyVHDLParser.Blocks.Sequential.PackageBody.NameBlock.StartToken"]], "states (pyvhdlparser.blocks.sequential.packagebody.endblock property)": [[171, "pyVHDLParser.Blocks.Sequential.PackageBody.EndBlock.States"]], "states (pyvhdlparser.blocks.sequential.packagebody.nameblock property)": [[171, "pyVHDLParser.Blocks.Sequential.PackageBody.NameBlock.States"]], "__states__ (pyvhdlparser.blocks.sequential.packagebody.endblock attribute)": [[171, "pyVHDLParser.Blocks.Sequential.PackageBody.EndBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.sequential.packagebody.nameblock attribute)": [[171, "pyVHDLParser.Blocks.Sequential.PackageBody.NameBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.sequential.packagebody.endblock method)": [[171, "pyVHDLParser.Blocks.Sequential.PackageBody.EndBlock.__init__"]], "__init__() (pyvhdlparser.blocks.sequential.packagebody.nameblock method)": [[171, "pyVHDLParser.Blocks.Sequential.PackageBody.NameBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.sequential.packagebody.endblock method)": [[171, "pyVHDLParser.Blocks.Sequential.PackageBody.EndBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.sequential.packagebody.nameblock method)": [[171, "pyVHDLParser.Blocks.Sequential.PackageBody.NameBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.sequential.packagebody.endblock method)": [[171, "pyVHDLParser.Blocks.Sequential.PackageBody.EndBlock.__len__"]], "__len__() (pyvhdlparser.blocks.sequential.packagebody.nameblock method)": [[171, "pyVHDLParser.Blocks.Sequential.PackageBody.NameBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.sequential.packagebody.endblock method)": [[171, "pyVHDLParser.Blocks.Sequential.PackageBody.EndBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.sequential.packagebody.nameblock method)": [[171, "pyVHDLParser.Blocks.Sequential.PackageBody.NameBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.sequential.packagebody.endblock method)": [[171, "pyVHDLParser.Blocks.Sequential.PackageBody.EndBlock.__str__"]], "__str__() (pyvhdlparser.blocks.sequential.packagebody.nameblock method)": [[171, "pyVHDLParser.Blocks.Sequential.PackageBody.NameBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.sequential.packagebody.endblock attribute)": [[171, "pyVHDLParser.Blocks.Sequential.PackageBody.EndBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.sequential.packagebody.nameblock attribute)": [[171, "pyVHDLParser.Blocks.Sequential.PackageBody.NameBlock._previousBlock"]], "pyvhdlparser.blocks.sequential.packagebody": [[171, "module-pyVHDLParser.Blocks.Sequential.PackageBody"]], "stateerror() (pyvhdlparser.blocks.sequential.packagebody.endblock class method)": [[171, "pyVHDLParser.Blocks.Sequential.PackageBody.EndBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.sequential.packagebody.nameblock class method)": [[171, "pyVHDLParser.Blocks.Sequential.PackageBody.NameBlock.stateError"]], "begin_block (pyvhdlparser.blocks.sequential.procedure.declarativeregion attribute)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.DeclarativeRegion.BEGIN_BLOCK"]], "beginblock (class in pyvhdlparser.blocks.sequential.procedure)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.BeginBlock"]], "declarativeregion (class in pyvhdlparser.blocks.sequential.procedure)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.DeclarativeRegion"]], "end_block (pyvhdlparser.blocks.sequential.procedure.beginblock attribute)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.BeginBlock.END_BLOCK"]], "end_block (pyvhdlparser.blocks.sequential.procedure.declarativeregion attribute)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.DeclarativeRegion.END_BLOCK"]], "endblock (class in pyvhdlparser.blocks.sequential.procedure)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.EndBlock"]], "endtoken (pyvhdlparser.blocks.sequential.procedure.beginblock attribute)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.BeginBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.sequential.procedure.endblock attribute)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.EndBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.sequential.procedure.nameblock attribute)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.NameBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.sequential.procedure.voidblock attribute)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.VoidBlock.EndToken"]], "keyword (pyvhdlparser.blocks.sequential.procedure.endblock attribute)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.EndBlock.KEYWORD"]], "length (pyvhdlparser.blocks.sequential.procedure.beginblock property)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.BeginBlock.Length"]], "length (pyvhdlparser.blocks.sequential.procedure.endblock property)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.EndBlock.Length"]], "length (pyvhdlparser.blocks.sequential.procedure.nameblock property)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.NameBlock.Length"]], "length (pyvhdlparser.blocks.sequential.procedure.voidblock property)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.VoidBlock.Length"]], "multipart (pyvhdlparser.blocks.sequential.procedure.beginblock attribute)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.BeginBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.sequential.procedure.endblock attribute)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.EndBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.sequential.procedure.nameblock attribute)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.NameBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.sequential.procedure.voidblock attribute)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.VoidBlock.MultiPart"]], "nameblock (class in pyvhdlparser.blocks.sequential.procedure)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.NameBlock"]], "nextblock (pyvhdlparser.blocks.sequential.procedure.beginblock attribute)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.BeginBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.sequential.procedure.endblock attribute)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.EndBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.sequential.procedure.nameblock attribute)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.NameBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.sequential.procedure.voidblock attribute)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.VoidBlock.NextBlock"]], "starttoken (pyvhdlparser.blocks.sequential.procedure.beginblock attribute)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.BeginBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.sequential.procedure.endblock attribute)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.EndBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.sequential.procedure.nameblock attribute)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.NameBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.sequential.procedure.voidblock attribute)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.VoidBlock.StartToken"]], "states (pyvhdlparser.blocks.sequential.procedure.beginblock property)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.BeginBlock.States"]], "states (pyvhdlparser.blocks.sequential.procedure.endblock property)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.EndBlock.States"]], "states (pyvhdlparser.blocks.sequential.procedure.nameblock property)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.NameBlock.States"]], "states (pyvhdlparser.blocks.sequential.procedure.voidblock property)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.VoidBlock.States"]], "voidblock (class in pyvhdlparser.blocks.sequential.procedure)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.VoidBlock"]], "__states__ (pyvhdlparser.blocks.sequential.procedure.beginblock attribute)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.BeginBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.sequential.procedure.endblock attribute)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.EndBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.sequential.procedure.nameblock attribute)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.NameBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.sequential.procedure.voidblock attribute)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.VoidBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.sequential.procedure.beginblock method)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.BeginBlock.__init__"]], "__init__() (pyvhdlparser.blocks.sequential.procedure.endblock method)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.EndBlock.__init__"]], "__init__() (pyvhdlparser.blocks.sequential.procedure.nameblock method)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.NameBlock.__init__"]], "__init__() (pyvhdlparser.blocks.sequential.procedure.voidblock method)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.VoidBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.sequential.procedure.beginblock method)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.BeginBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.sequential.procedure.endblock method)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.EndBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.sequential.procedure.nameblock method)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.NameBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.sequential.procedure.voidblock method)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.VoidBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.sequential.procedure.beginblock method)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.BeginBlock.__len__"]], "__len__() (pyvhdlparser.blocks.sequential.procedure.endblock method)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.EndBlock.__len__"]], "__len__() (pyvhdlparser.blocks.sequential.procedure.nameblock method)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.NameBlock.__len__"]], "__len__() (pyvhdlparser.blocks.sequential.procedure.voidblock method)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.VoidBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.sequential.procedure.beginblock method)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.BeginBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.sequential.procedure.endblock method)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.EndBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.sequential.procedure.nameblock method)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.NameBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.sequential.procedure.voidblock method)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.VoidBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.sequential.procedure.beginblock method)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.BeginBlock.__str__"]], "__str__() (pyvhdlparser.blocks.sequential.procedure.endblock method)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.EndBlock.__str__"]], "__str__() (pyvhdlparser.blocks.sequential.procedure.nameblock method)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.NameBlock.__str__"]], "__str__() (pyvhdlparser.blocks.sequential.procedure.voidblock method)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.VoidBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.sequential.procedure.beginblock attribute)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.BeginBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.sequential.procedure.endblock attribute)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.EndBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.sequential.procedure.nameblock attribute)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.NameBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.sequential.procedure.voidblock attribute)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.VoidBlock._previousBlock"]], "pyvhdlparser.blocks.sequential.procedure": [[172, "module-pyVHDLParser.Blocks.Sequential.Procedure"]], "stateerror() (pyvhdlparser.blocks.sequential.procedure.beginblock class method)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.BeginBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.sequential.procedure.endblock class method)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.EndBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.sequential.procedure.nameblock class method)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.NameBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.sequential.procedure.voidblock class method)": [[172, "pyVHDLParser.Blocks.Sequential.Procedure.VoidBlock.stateError"]], "begin_block (pyvhdlparser.blocks.sequential.process.declarativeregion attribute)": [[173, "pyVHDLParser.Blocks.Sequential.Process.DeclarativeRegion.BEGIN_BLOCK"]], "beginblock (class in pyvhdlparser.blocks.sequential.process)": [[173, "pyVHDLParser.Blocks.Sequential.Process.BeginBlock"]], "declarativeregion (class in pyvhdlparser.blocks.sequential.process)": [[173, "pyVHDLParser.Blocks.Sequential.Process.DeclarativeRegion"]], "end_block (pyvhdlparser.blocks.sequential.process.beginblock attribute)": [[173, "pyVHDLParser.Blocks.Sequential.Process.BeginBlock.END_BLOCK"]], "end_block (pyvhdlparser.blocks.sequential.process.declarativeregion attribute)": [[173, "pyVHDLParser.Blocks.Sequential.Process.DeclarativeRegion.END_BLOCK"]], "endblock (class in pyvhdlparser.blocks.sequential.process)": [[173, "pyVHDLParser.Blocks.Sequential.Process.EndBlock"]], "endtoken (pyvhdlparser.blocks.sequential.process.beginblock attribute)": [[173, "pyVHDLParser.Blocks.Sequential.Process.BeginBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.sequential.process.endblock attribute)": [[173, "pyVHDLParser.Blocks.Sequential.Process.EndBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.sequential.process.openblock attribute)": [[173, "pyVHDLParser.Blocks.Sequential.Process.OpenBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.sequential.process.openblock2 attribute)": [[173, "pyVHDLParser.Blocks.Sequential.Process.OpenBlock2.EndToken"]], "keyword (pyvhdlparser.blocks.sequential.process.endblock attribute)": [[173, "pyVHDLParser.Blocks.Sequential.Process.EndBlock.KEYWORD"]], "length (pyvhdlparser.blocks.sequential.process.beginblock property)": [[173, "pyVHDLParser.Blocks.Sequential.Process.BeginBlock.Length"]], "length (pyvhdlparser.blocks.sequential.process.endblock property)": [[173, "pyVHDLParser.Blocks.Sequential.Process.EndBlock.Length"]], "length (pyvhdlparser.blocks.sequential.process.openblock property)": [[173, "pyVHDLParser.Blocks.Sequential.Process.OpenBlock.Length"]], "length (pyvhdlparser.blocks.sequential.process.openblock2 property)": [[173, "pyVHDLParser.Blocks.Sequential.Process.OpenBlock2.Length"]], "multipart (pyvhdlparser.blocks.sequential.process.beginblock attribute)": [[173, "pyVHDLParser.Blocks.Sequential.Process.BeginBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.sequential.process.endblock attribute)": [[173, "pyVHDLParser.Blocks.Sequential.Process.EndBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.sequential.process.openblock attribute)": [[173, "pyVHDLParser.Blocks.Sequential.Process.OpenBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.sequential.process.openblock2 attribute)": [[173, "pyVHDLParser.Blocks.Sequential.Process.OpenBlock2.MultiPart"]], "nextblock (pyvhdlparser.blocks.sequential.process.beginblock attribute)": [[173, "pyVHDLParser.Blocks.Sequential.Process.BeginBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.sequential.process.endblock attribute)": [[173, "pyVHDLParser.Blocks.Sequential.Process.EndBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.sequential.process.openblock attribute)": [[173, "pyVHDLParser.Blocks.Sequential.Process.OpenBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.sequential.process.openblock2 attribute)": [[173, "pyVHDLParser.Blocks.Sequential.Process.OpenBlock2.NextBlock"]], "openblock (class in pyvhdlparser.blocks.sequential.process)": [[173, "pyVHDLParser.Blocks.Sequential.Process.OpenBlock"]], "openblock2 (class in pyvhdlparser.blocks.sequential.process)": [[173, "pyVHDLParser.Blocks.Sequential.Process.OpenBlock2"]], "starttoken (pyvhdlparser.blocks.sequential.process.beginblock attribute)": [[173, "pyVHDLParser.Blocks.Sequential.Process.BeginBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.sequential.process.endblock attribute)": [[173, "pyVHDLParser.Blocks.Sequential.Process.EndBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.sequential.process.openblock attribute)": [[173, "pyVHDLParser.Blocks.Sequential.Process.OpenBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.sequential.process.openblock2 attribute)": [[173, "pyVHDLParser.Blocks.Sequential.Process.OpenBlock2.StartToken"]], "states (pyvhdlparser.blocks.sequential.process.beginblock property)": [[173, "pyVHDLParser.Blocks.Sequential.Process.BeginBlock.States"]], "states (pyvhdlparser.blocks.sequential.process.endblock property)": [[173, "pyVHDLParser.Blocks.Sequential.Process.EndBlock.States"]], "states (pyvhdlparser.blocks.sequential.process.openblock property)": [[173, "pyVHDLParser.Blocks.Sequential.Process.OpenBlock.States"]], "states (pyvhdlparser.blocks.sequential.process.openblock2 property)": [[173, "pyVHDLParser.Blocks.Sequential.Process.OpenBlock2.States"]], "__states__ (pyvhdlparser.blocks.sequential.process.beginblock attribute)": [[173, "pyVHDLParser.Blocks.Sequential.Process.BeginBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.sequential.process.endblock attribute)": [[173, "pyVHDLParser.Blocks.Sequential.Process.EndBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.sequential.process.openblock attribute)": [[173, "pyVHDLParser.Blocks.Sequential.Process.OpenBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.sequential.process.openblock2 attribute)": [[173, "pyVHDLParser.Blocks.Sequential.Process.OpenBlock2.__STATES__"]], "__init__() (pyvhdlparser.blocks.sequential.process.beginblock method)": [[173, "pyVHDLParser.Blocks.Sequential.Process.BeginBlock.__init__"]], "__init__() (pyvhdlparser.blocks.sequential.process.endblock method)": [[173, "pyVHDLParser.Blocks.Sequential.Process.EndBlock.__init__"]], "__init__() (pyvhdlparser.blocks.sequential.process.openblock method)": [[173, "pyVHDLParser.Blocks.Sequential.Process.OpenBlock.__init__"]], "__init__() (pyvhdlparser.blocks.sequential.process.openblock2 method)": [[173, "pyVHDLParser.Blocks.Sequential.Process.OpenBlock2.__init__"]], "__iter__() (pyvhdlparser.blocks.sequential.process.beginblock method)": [[173, "pyVHDLParser.Blocks.Sequential.Process.BeginBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.sequential.process.endblock method)": [[173, "pyVHDLParser.Blocks.Sequential.Process.EndBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.sequential.process.openblock method)": [[173, "pyVHDLParser.Blocks.Sequential.Process.OpenBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.sequential.process.openblock2 method)": [[173, "pyVHDLParser.Blocks.Sequential.Process.OpenBlock2.__iter__"]], "__len__() (pyvhdlparser.blocks.sequential.process.beginblock method)": [[173, "pyVHDLParser.Blocks.Sequential.Process.BeginBlock.__len__"]], "__len__() (pyvhdlparser.blocks.sequential.process.endblock method)": [[173, "pyVHDLParser.Blocks.Sequential.Process.EndBlock.__len__"]], "__len__() (pyvhdlparser.blocks.sequential.process.openblock method)": [[173, "pyVHDLParser.Blocks.Sequential.Process.OpenBlock.__len__"]], "__len__() (pyvhdlparser.blocks.sequential.process.openblock2 method)": [[173, "pyVHDLParser.Blocks.Sequential.Process.OpenBlock2.__len__"]], "__repr__() (pyvhdlparser.blocks.sequential.process.beginblock method)": [[173, "pyVHDLParser.Blocks.Sequential.Process.BeginBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.sequential.process.endblock method)": [[173, "pyVHDLParser.Blocks.Sequential.Process.EndBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.sequential.process.openblock method)": [[173, "pyVHDLParser.Blocks.Sequential.Process.OpenBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.sequential.process.openblock2 method)": [[173, "pyVHDLParser.Blocks.Sequential.Process.OpenBlock2.__repr__"]], "__str__() (pyvhdlparser.blocks.sequential.process.beginblock method)": [[173, "pyVHDLParser.Blocks.Sequential.Process.BeginBlock.__str__"]], "__str__() (pyvhdlparser.blocks.sequential.process.endblock method)": [[173, "pyVHDLParser.Blocks.Sequential.Process.EndBlock.__str__"]], "__str__() (pyvhdlparser.blocks.sequential.process.openblock method)": [[173, "pyVHDLParser.Blocks.Sequential.Process.OpenBlock.__str__"]], "__str__() (pyvhdlparser.blocks.sequential.process.openblock2 method)": [[173, "pyVHDLParser.Blocks.Sequential.Process.OpenBlock2.__str__"]], "_previousblock (pyvhdlparser.blocks.sequential.process.beginblock attribute)": [[173, "pyVHDLParser.Blocks.Sequential.Process.BeginBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.sequential.process.endblock attribute)": [[173, "pyVHDLParser.Blocks.Sequential.Process.EndBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.sequential.process.openblock attribute)": [[173, "pyVHDLParser.Blocks.Sequential.Process.OpenBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.sequential.process.openblock2 attribute)": [[173, "pyVHDLParser.Blocks.Sequential.Process.OpenBlock2._previousBlock"]], "pyvhdlparser.blocks.sequential.process": [[173, "module-pyVHDLParser.Blocks.Sequential.Process"]], "stateerror() (pyvhdlparser.blocks.sequential.process.beginblock class method)": [[173, "pyVHDLParser.Blocks.Sequential.Process.BeginBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.sequential.process.endblock class method)": [[173, "pyVHDLParser.Blocks.Sequential.Process.EndBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.sequential.process.openblock class method)": [[173, "pyVHDLParser.Blocks.Sequential.Process.OpenBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.sequential.process.openblock2 class method)": [[173, "pyVHDLParser.Blocks.Sequential.Process.OpenBlock2.stateError"]], "pyvhdlparser.blocks.structural": [[174, "module-pyVHDLParser.Blocks.Structural"]], "begin_block (pyvhdlparser.blocks.structural.architecture.declarativeregion attribute)": [[175, "pyVHDLParser.Blocks.Structural.Architecture.DeclarativeRegion.BEGIN_BLOCK"]], "beginblock (class in pyvhdlparser.blocks.structural.architecture)": [[175, "pyVHDLParser.Blocks.Structural.Architecture.BeginBlock"]], "declarativeregion (class in pyvhdlparser.blocks.structural.architecture)": [[175, "pyVHDLParser.Blocks.Structural.Architecture.DeclarativeRegion"]], "end_block (pyvhdlparser.blocks.structural.architecture.beginblock attribute)": [[175, "pyVHDLParser.Blocks.Structural.Architecture.BeginBlock.END_BLOCK"]], "end_block (pyvhdlparser.blocks.structural.architecture.declarativeregion attribute)": [[175, "pyVHDLParser.Blocks.Structural.Architecture.DeclarativeRegion.END_BLOCK"]], "endblock (class in pyvhdlparser.blocks.structural.architecture)": [[175, "pyVHDLParser.Blocks.Structural.Architecture.EndBlock"]], "endtoken (pyvhdlparser.blocks.structural.architecture.beginblock attribute)": [[175, "pyVHDLParser.Blocks.Structural.Architecture.BeginBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.structural.architecture.endblock attribute)": [[175, "pyVHDLParser.Blocks.Structural.Architecture.EndBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.structural.architecture.nameblock attribute)": [[175, "pyVHDLParser.Blocks.Structural.Architecture.NameBlock.EndToken"]], "keyword (pyvhdlparser.blocks.structural.architecture.endblock attribute)": [[175, "pyVHDLParser.Blocks.Structural.Architecture.EndBlock.KEYWORD"]], "length (pyvhdlparser.blocks.structural.architecture.beginblock property)": [[175, "pyVHDLParser.Blocks.Structural.Architecture.BeginBlock.Length"]], "length (pyvhdlparser.blocks.structural.architecture.endblock property)": [[175, "pyVHDLParser.Blocks.Structural.Architecture.EndBlock.Length"]], "length (pyvhdlparser.blocks.structural.architecture.nameblock property)": [[175, "pyVHDLParser.Blocks.Structural.Architecture.NameBlock.Length"]], "multipart (pyvhdlparser.blocks.structural.architecture.beginblock attribute)": [[175, "pyVHDLParser.Blocks.Structural.Architecture.BeginBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.structural.architecture.endblock attribute)": [[175, "pyVHDLParser.Blocks.Structural.Architecture.EndBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.structural.architecture.nameblock attribute)": [[175, "pyVHDLParser.Blocks.Structural.Architecture.NameBlock.MultiPart"]], "nameblock (class in pyvhdlparser.blocks.structural.architecture)": [[175, "pyVHDLParser.Blocks.Structural.Architecture.NameBlock"]], "nextblock (pyvhdlparser.blocks.structural.architecture.beginblock attribute)": [[175, "pyVHDLParser.Blocks.Structural.Architecture.BeginBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.structural.architecture.endblock attribute)": [[175, "pyVHDLParser.Blocks.Structural.Architecture.EndBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.structural.architecture.nameblock attribute)": [[175, "pyVHDLParser.Blocks.Structural.Architecture.NameBlock.NextBlock"]], "starttoken (pyvhdlparser.blocks.structural.architecture.beginblock attribute)": [[175, "pyVHDLParser.Blocks.Structural.Architecture.BeginBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.structural.architecture.endblock attribute)": [[175, "pyVHDLParser.Blocks.Structural.Architecture.EndBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.structural.architecture.nameblock attribute)": [[175, "pyVHDLParser.Blocks.Structural.Architecture.NameBlock.StartToken"]], "states (pyvhdlparser.blocks.structural.architecture.beginblock property)": [[175, "pyVHDLParser.Blocks.Structural.Architecture.BeginBlock.States"]], "states (pyvhdlparser.blocks.structural.architecture.endblock property)": [[175, "pyVHDLParser.Blocks.Structural.Architecture.EndBlock.States"]], "states (pyvhdlparser.blocks.structural.architecture.nameblock property)": [[175, "pyVHDLParser.Blocks.Structural.Architecture.NameBlock.States"]], "__states__ (pyvhdlparser.blocks.structural.architecture.beginblock attribute)": [[175, "pyVHDLParser.Blocks.Structural.Architecture.BeginBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.structural.architecture.endblock attribute)": [[175, "pyVHDLParser.Blocks.Structural.Architecture.EndBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.structural.architecture.nameblock attribute)": [[175, "pyVHDLParser.Blocks.Structural.Architecture.NameBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.structural.architecture.beginblock method)": [[175, "pyVHDLParser.Blocks.Structural.Architecture.BeginBlock.__init__"]], "__init__() (pyvhdlparser.blocks.structural.architecture.endblock method)": [[175, "pyVHDLParser.Blocks.Structural.Architecture.EndBlock.__init__"]], "__init__() (pyvhdlparser.blocks.structural.architecture.nameblock method)": [[175, "pyVHDLParser.Blocks.Structural.Architecture.NameBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.structural.architecture.beginblock method)": [[175, "pyVHDLParser.Blocks.Structural.Architecture.BeginBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.structural.architecture.endblock method)": [[175, "pyVHDLParser.Blocks.Structural.Architecture.EndBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.structural.architecture.nameblock method)": [[175, "pyVHDLParser.Blocks.Structural.Architecture.NameBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.structural.architecture.beginblock method)": [[175, "pyVHDLParser.Blocks.Structural.Architecture.BeginBlock.__len__"]], "__len__() (pyvhdlparser.blocks.structural.architecture.endblock method)": [[175, "pyVHDLParser.Blocks.Structural.Architecture.EndBlock.__len__"]], "__len__() (pyvhdlparser.blocks.structural.architecture.nameblock method)": [[175, "pyVHDLParser.Blocks.Structural.Architecture.NameBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.structural.architecture.beginblock method)": [[175, "pyVHDLParser.Blocks.Structural.Architecture.BeginBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.structural.architecture.endblock method)": [[175, "pyVHDLParser.Blocks.Structural.Architecture.EndBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.structural.architecture.nameblock method)": [[175, "pyVHDLParser.Blocks.Structural.Architecture.NameBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.structural.architecture.beginblock method)": [[175, "pyVHDLParser.Blocks.Structural.Architecture.BeginBlock.__str__"]], "__str__() (pyvhdlparser.blocks.structural.architecture.endblock method)": [[175, "pyVHDLParser.Blocks.Structural.Architecture.EndBlock.__str__"]], "__str__() (pyvhdlparser.blocks.structural.architecture.nameblock method)": [[175, "pyVHDLParser.Blocks.Structural.Architecture.NameBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.structural.architecture.beginblock attribute)": [[175, "pyVHDLParser.Blocks.Structural.Architecture.BeginBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.structural.architecture.endblock attribute)": [[175, "pyVHDLParser.Blocks.Structural.Architecture.EndBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.structural.architecture.nameblock attribute)": [[175, "pyVHDLParser.Blocks.Structural.Architecture.NameBlock._previousBlock"]], "pyvhdlparser.blocks.structural.architecture": [[175, "module-pyVHDLParser.Blocks.Structural.Architecture"]], "stateerror() (pyvhdlparser.blocks.structural.architecture.beginblock class method)": [[175, "pyVHDLParser.Blocks.Structural.Architecture.BeginBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.structural.architecture.endblock class method)": [[175, "pyVHDLParser.Blocks.Structural.Architecture.EndBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.structural.architecture.nameblock class method)": [[175, "pyVHDLParser.Blocks.Structural.Architecture.NameBlock.stateError"]], "begin_block (pyvhdlparser.blocks.structural.block.declarativeregion attribute)": [[176, "pyVHDLParser.Blocks.Structural.Block.DeclarativeRegion.BEGIN_BLOCK"]], "beginblock (class in pyvhdlparser.blocks.structural.block)": [[176, "pyVHDLParser.Blocks.Structural.Block.BeginBlock"]], "declarativeregion (class in pyvhdlparser.blocks.structural.block)": [[176, "pyVHDLParser.Blocks.Structural.Block.DeclarativeRegion"]], "end_block (pyvhdlparser.blocks.structural.block.beginblock attribute)": [[176, "pyVHDLParser.Blocks.Structural.Block.BeginBlock.END_BLOCK"]], "end_block (pyvhdlparser.blocks.structural.block.declarativeregion attribute)": [[176, "pyVHDLParser.Blocks.Structural.Block.DeclarativeRegion.END_BLOCK"]], "endblock (class in pyvhdlparser.blocks.structural.block)": [[176, "pyVHDLParser.Blocks.Structural.Block.EndBlock"]], "endtoken (pyvhdlparser.blocks.structural.block.beginblock attribute)": [[176, "pyVHDLParser.Blocks.Structural.Block.BeginBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.structural.block.endblock attribute)": [[176, "pyVHDLParser.Blocks.Structural.Block.EndBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.structural.block.nameblock attribute)": [[176, "pyVHDLParser.Blocks.Structural.Block.NameBlock.EndToken"]], "keyword (pyvhdlparser.blocks.structural.block.endblock attribute)": [[176, "pyVHDLParser.Blocks.Structural.Block.EndBlock.KEYWORD"]], "length (pyvhdlparser.blocks.structural.block.beginblock property)": [[176, "pyVHDLParser.Blocks.Structural.Block.BeginBlock.Length"]], "length (pyvhdlparser.blocks.structural.block.endblock property)": [[176, "pyVHDLParser.Blocks.Structural.Block.EndBlock.Length"]], "length (pyvhdlparser.blocks.structural.block.nameblock property)": [[176, "pyVHDLParser.Blocks.Structural.Block.NameBlock.Length"]], "multipart (pyvhdlparser.blocks.structural.block.beginblock attribute)": [[176, "pyVHDLParser.Blocks.Structural.Block.BeginBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.structural.block.endblock attribute)": [[176, "pyVHDLParser.Blocks.Structural.Block.EndBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.structural.block.nameblock attribute)": [[176, "pyVHDLParser.Blocks.Structural.Block.NameBlock.MultiPart"]], "nameblock (class in pyvhdlparser.blocks.structural.block)": [[176, "pyVHDLParser.Blocks.Structural.Block.NameBlock"]], "nextblock (pyvhdlparser.blocks.structural.block.beginblock attribute)": [[176, "pyVHDLParser.Blocks.Structural.Block.BeginBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.structural.block.endblock attribute)": [[176, "pyVHDLParser.Blocks.Structural.Block.EndBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.structural.block.nameblock attribute)": [[176, "pyVHDLParser.Blocks.Structural.Block.NameBlock.NextBlock"]], "starttoken (pyvhdlparser.blocks.structural.block.beginblock attribute)": [[176, "pyVHDLParser.Blocks.Structural.Block.BeginBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.structural.block.endblock attribute)": [[176, "pyVHDLParser.Blocks.Structural.Block.EndBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.structural.block.nameblock attribute)": [[176, "pyVHDLParser.Blocks.Structural.Block.NameBlock.StartToken"]], "states (pyvhdlparser.blocks.structural.block.beginblock property)": [[176, "pyVHDLParser.Blocks.Structural.Block.BeginBlock.States"]], "states (pyvhdlparser.blocks.structural.block.endblock property)": [[176, "pyVHDLParser.Blocks.Structural.Block.EndBlock.States"]], "states (pyvhdlparser.blocks.structural.block.nameblock property)": [[176, "pyVHDLParser.Blocks.Structural.Block.NameBlock.States"]], "__states__ (pyvhdlparser.blocks.structural.block.beginblock attribute)": [[176, "pyVHDLParser.Blocks.Structural.Block.BeginBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.structural.block.endblock attribute)": [[176, "pyVHDLParser.Blocks.Structural.Block.EndBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.structural.block.nameblock attribute)": [[176, "pyVHDLParser.Blocks.Structural.Block.NameBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.structural.block.beginblock method)": [[176, "pyVHDLParser.Blocks.Structural.Block.BeginBlock.__init__"]], "__init__() (pyvhdlparser.blocks.structural.block.endblock method)": [[176, "pyVHDLParser.Blocks.Structural.Block.EndBlock.__init__"]], "__init__() (pyvhdlparser.blocks.structural.block.nameblock method)": [[176, "pyVHDLParser.Blocks.Structural.Block.NameBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.structural.block.beginblock method)": [[176, "pyVHDLParser.Blocks.Structural.Block.BeginBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.structural.block.endblock method)": [[176, "pyVHDLParser.Blocks.Structural.Block.EndBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.structural.block.nameblock method)": [[176, "pyVHDLParser.Blocks.Structural.Block.NameBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.structural.block.beginblock method)": [[176, "pyVHDLParser.Blocks.Structural.Block.BeginBlock.__len__"]], "__len__() (pyvhdlparser.blocks.structural.block.endblock method)": [[176, "pyVHDLParser.Blocks.Structural.Block.EndBlock.__len__"]], "__len__() (pyvhdlparser.blocks.structural.block.nameblock method)": [[176, "pyVHDLParser.Blocks.Structural.Block.NameBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.structural.block.beginblock method)": [[176, "pyVHDLParser.Blocks.Structural.Block.BeginBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.structural.block.endblock method)": [[176, "pyVHDLParser.Blocks.Structural.Block.EndBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.structural.block.nameblock method)": [[176, "pyVHDLParser.Blocks.Structural.Block.NameBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.structural.block.beginblock method)": [[176, "pyVHDLParser.Blocks.Structural.Block.BeginBlock.__str__"]], "__str__() (pyvhdlparser.blocks.structural.block.endblock method)": [[176, "pyVHDLParser.Blocks.Structural.Block.EndBlock.__str__"]], "__str__() (pyvhdlparser.blocks.structural.block.nameblock method)": [[176, "pyVHDLParser.Blocks.Structural.Block.NameBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.structural.block.beginblock attribute)": [[176, "pyVHDLParser.Blocks.Structural.Block.BeginBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.structural.block.endblock attribute)": [[176, "pyVHDLParser.Blocks.Structural.Block.EndBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.structural.block.nameblock attribute)": [[176, "pyVHDLParser.Blocks.Structural.Block.NameBlock._previousBlock"]], "pyvhdlparser.blocks.structural.block": [[176, "module-pyVHDLParser.Blocks.Structural.Block"]], "stateerror() (pyvhdlparser.blocks.structural.block.beginblock class method)": [[176, "pyVHDLParser.Blocks.Structural.Block.BeginBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.structural.block.endblock class method)": [[176, "pyVHDLParser.Blocks.Structural.Block.EndBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.structural.block.nameblock class method)": [[176, "pyVHDLParser.Blocks.Structural.Block.NameBlock.stateError"]], "endblock (class in pyvhdlparser.blocks.structural.component)": [[177, "pyVHDLParser.Blocks.Structural.Component.EndBlock"]], "endtoken (pyvhdlparser.blocks.structural.component.endblock attribute)": [[177, "pyVHDLParser.Blocks.Structural.Component.EndBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.structural.component.nameblock attribute)": [[177, "pyVHDLParser.Blocks.Structural.Component.NameBlock.EndToken"]], "keyword (pyvhdlparser.blocks.structural.component.endblock attribute)": [[177, "pyVHDLParser.Blocks.Structural.Component.EndBlock.KEYWORD"]], "length (pyvhdlparser.blocks.structural.component.endblock property)": [[177, "pyVHDLParser.Blocks.Structural.Component.EndBlock.Length"]], "length (pyvhdlparser.blocks.structural.component.nameblock property)": [[177, "pyVHDLParser.Blocks.Structural.Component.NameBlock.Length"]], "multipart (pyvhdlparser.blocks.structural.component.endblock attribute)": [[177, "pyVHDLParser.Blocks.Structural.Component.EndBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.structural.component.nameblock attribute)": [[177, "pyVHDLParser.Blocks.Structural.Component.NameBlock.MultiPart"]], "nameblock (class in pyvhdlparser.blocks.structural.component)": [[177, "pyVHDLParser.Blocks.Structural.Component.NameBlock"]], "nextblock (pyvhdlparser.blocks.structural.component.endblock attribute)": [[177, "pyVHDLParser.Blocks.Structural.Component.EndBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.structural.component.nameblock attribute)": [[177, "pyVHDLParser.Blocks.Structural.Component.NameBlock.NextBlock"]], "starttoken (pyvhdlparser.blocks.structural.component.endblock attribute)": [[177, "pyVHDLParser.Blocks.Structural.Component.EndBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.structural.component.nameblock attribute)": [[177, "pyVHDLParser.Blocks.Structural.Component.NameBlock.StartToken"]], "states (pyvhdlparser.blocks.structural.component.endblock property)": [[177, "pyVHDLParser.Blocks.Structural.Component.EndBlock.States"]], "states (pyvhdlparser.blocks.structural.component.nameblock property)": [[177, "pyVHDLParser.Blocks.Structural.Component.NameBlock.States"]], "__states__ (pyvhdlparser.blocks.structural.component.endblock attribute)": [[177, "pyVHDLParser.Blocks.Structural.Component.EndBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.structural.component.nameblock attribute)": [[177, "pyVHDLParser.Blocks.Structural.Component.NameBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.structural.component.endblock method)": [[177, "pyVHDLParser.Blocks.Structural.Component.EndBlock.__init__"]], "__init__() (pyvhdlparser.blocks.structural.component.nameblock method)": [[177, "pyVHDLParser.Blocks.Structural.Component.NameBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.structural.component.endblock method)": [[177, "pyVHDLParser.Blocks.Structural.Component.EndBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.structural.component.nameblock method)": [[177, "pyVHDLParser.Blocks.Structural.Component.NameBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.structural.component.endblock method)": [[177, "pyVHDLParser.Blocks.Structural.Component.EndBlock.__len__"]], "__len__() (pyvhdlparser.blocks.structural.component.nameblock method)": [[177, "pyVHDLParser.Blocks.Structural.Component.NameBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.structural.component.endblock method)": [[177, "pyVHDLParser.Blocks.Structural.Component.EndBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.structural.component.nameblock method)": [[177, "pyVHDLParser.Blocks.Structural.Component.NameBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.structural.component.endblock method)": [[177, "pyVHDLParser.Blocks.Structural.Component.EndBlock.__str__"]], "__str__() (pyvhdlparser.blocks.structural.component.nameblock method)": [[177, "pyVHDLParser.Blocks.Structural.Component.NameBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.structural.component.endblock attribute)": [[177, "pyVHDLParser.Blocks.Structural.Component.EndBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.structural.component.nameblock attribute)": [[177, "pyVHDLParser.Blocks.Structural.Component.NameBlock._previousBlock"]], "pyvhdlparser.blocks.structural.component": [[177, "module-pyVHDLParser.Blocks.Structural.Component"]], "stateerror() (pyvhdlparser.blocks.structural.component.endblock class method)": [[177, "pyVHDLParser.Blocks.Structural.Component.EndBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.structural.component.nameblock class method)": [[177, "pyVHDLParser.Blocks.Structural.Component.NameBlock.stateError"]], "beginblock (class in pyvhdlparser.blocks.structural.configuration)": [[178, "pyVHDLParser.Blocks.Structural.Configuration.BeginBlock"]], "end_block (pyvhdlparser.blocks.structural.configuration.beginblock attribute)": [[178, "pyVHDLParser.Blocks.Structural.Configuration.BeginBlock.END_BLOCK"]], "endblock (class in pyvhdlparser.blocks.structural.configuration)": [[178, "pyVHDLParser.Blocks.Structural.Configuration.EndBlock"]], "endtoken (pyvhdlparser.blocks.structural.configuration.beginblock attribute)": [[178, "pyVHDLParser.Blocks.Structural.Configuration.BeginBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.structural.configuration.endblock attribute)": [[178, "pyVHDLParser.Blocks.Structural.Configuration.EndBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.structural.configuration.nameblock attribute)": [[178, "pyVHDLParser.Blocks.Structural.Configuration.NameBlock.EndToken"]], "keyword (pyvhdlparser.blocks.structural.configuration.endblock attribute)": [[178, "pyVHDLParser.Blocks.Structural.Configuration.EndBlock.KEYWORD"]], "length (pyvhdlparser.blocks.structural.configuration.beginblock property)": [[178, "pyVHDLParser.Blocks.Structural.Configuration.BeginBlock.Length"]], "length (pyvhdlparser.blocks.structural.configuration.endblock property)": [[178, "pyVHDLParser.Blocks.Structural.Configuration.EndBlock.Length"]], "length (pyvhdlparser.blocks.structural.configuration.nameblock property)": [[178, "pyVHDLParser.Blocks.Structural.Configuration.NameBlock.Length"]], "multipart (pyvhdlparser.blocks.structural.configuration.beginblock attribute)": [[178, "pyVHDLParser.Blocks.Structural.Configuration.BeginBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.structural.configuration.endblock attribute)": [[178, "pyVHDLParser.Blocks.Structural.Configuration.EndBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.structural.configuration.nameblock attribute)": [[178, "pyVHDLParser.Blocks.Structural.Configuration.NameBlock.MultiPart"]], "nameblock (class in pyvhdlparser.blocks.structural.configuration)": [[178, "pyVHDLParser.Blocks.Structural.Configuration.NameBlock"]], "nextblock (pyvhdlparser.blocks.structural.configuration.beginblock attribute)": [[178, "pyVHDLParser.Blocks.Structural.Configuration.BeginBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.structural.configuration.endblock attribute)": [[178, "pyVHDLParser.Blocks.Structural.Configuration.EndBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.structural.configuration.nameblock attribute)": [[178, "pyVHDLParser.Blocks.Structural.Configuration.NameBlock.NextBlock"]], "starttoken (pyvhdlparser.blocks.structural.configuration.beginblock attribute)": [[178, "pyVHDLParser.Blocks.Structural.Configuration.BeginBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.structural.configuration.endblock attribute)": [[178, "pyVHDLParser.Blocks.Structural.Configuration.EndBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.structural.configuration.nameblock attribute)": [[178, "pyVHDLParser.Blocks.Structural.Configuration.NameBlock.StartToken"]], "states (pyvhdlparser.blocks.structural.configuration.beginblock property)": [[178, "pyVHDLParser.Blocks.Structural.Configuration.BeginBlock.States"]], "states (pyvhdlparser.blocks.structural.configuration.endblock property)": [[178, "pyVHDLParser.Blocks.Structural.Configuration.EndBlock.States"]], "states (pyvhdlparser.blocks.structural.configuration.nameblock property)": [[178, "pyVHDLParser.Blocks.Structural.Configuration.NameBlock.States"]], "__states__ (pyvhdlparser.blocks.structural.configuration.beginblock attribute)": [[178, "pyVHDLParser.Blocks.Structural.Configuration.BeginBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.structural.configuration.endblock attribute)": [[178, "pyVHDLParser.Blocks.Structural.Configuration.EndBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.structural.configuration.nameblock attribute)": [[178, "pyVHDLParser.Blocks.Structural.Configuration.NameBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.structural.configuration.beginblock method)": [[178, "pyVHDLParser.Blocks.Structural.Configuration.BeginBlock.__init__"]], "__init__() (pyvhdlparser.blocks.structural.configuration.endblock method)": [[178, "pyVHDLParser.Blocks.Structural.Configuration.EndBlock.__init__"]], "__init__() (pyvhdlparser.blocks.structural.configuration.nameblock method)": [[178, "pyVHDLParser.Blocks.Structural.Configuration.NameBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.structural.configuration.beginblock method)": [[178, "pyVHDLParser.Blocks.Structural.Configuration.BeginBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.structural.configuration.endblock method)": [[178, "pyVHDLParser.Blocks.Structural.Configuration.EndBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.structural.configuration.nameblock method)": [[178, "pyVHDLParser.Blocks.Structural.Configuration.NameBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.structural.configuration.beginblock method)": [[178, "pyVHDLParser.Blocks.Structural.Configuration.BeginBlock.__len__"]], "__len__() (pyvhdlparser.blocks.structural.configuration.endblock method)": [[178, "pyVHDLParser.Blocks.Structural.Configuration.EndBlock.__len__"]], "__len__() (pyvhdlparser.blocks.structural.configuration.nameblock method)": [[178, "pyVHDLParser.Blocks.Structural.Configuration.NameBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.structural.configuration.beginblock method)": [[178, "pyVHDLParser.Blocks.Structural.Configuration.BeginBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.structural.configuration.endblock method)": [[178, "pyVHDLParser.Blocks.Structural.Configuration.EndBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.structural.configuration.nameblock method)": [[178, "pyVHDLParser.Blocks.Structural.Configuration.NameBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.structural.configuration.beginblock method)": [[178, "pyVHDLParser.Blocks.Structural.Configuration.BeginBlock.__str__"]], "__str__() (pyvhdlparser.blocks.structural.configuration.endblock method)": [[178, "pyVHDLParser.Blocks.Structural.Configuration.EndBlock.__str__"]], "__str__() (pyvhdlparser.blocks.structural.configuration.nameblock method)": [[178, "pyVHDLParser.Blocks.Structural.Configuration.NameBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.structural.configuration.beginblock attribute)": [[178, "pyVHDLParser.Blocks.Structural.Configuration.BeginBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.structural.configuration.endblock attribute)": [[178, "pyVHDLParser.Blocks.Structural.Configuration.EndBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.structural.configuration.nameblock attribute)": [[178, "pyVHDLParser.Blocks.Structural.Configuration.NameBlock._previousBlock"]], "pyvhdlparser.blocks.structural.configuration": [[178, "module-pyVHDLParser.Blocks.Structural.Configuration"]], "stateerror() (pyvhdlparser.blocks.structural.configuration.beginblock class method)": [[178, "pyVHDLParser.Blocks.Structural.Configuration.BeginBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.structural.configuration.endblock class method)": [[178, "pyVHDLParser.Blocks.Structural.Configuration.EndBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.structural.configuration.nameblock class method)": [[178, "pyVHDLParser.Blocks.Structural.Configuration.NameBlock.stateError"]], "begin_block (pyvhdlparser.blocks.structural.entity.declarativeregion attribute)": [[179, "pyVHDLParser.Blocks.Structural.Entity.DeclarativeRegion.BEGIN_BLOCK"]], "beginblock (class in pyvhdlparser.blocks.structural.entity)": [[179, "pyVHDLParser.Blocks.Structural.Entity.BeginBlock"]], "declarativeregion (class in pyvhdlparser.blocks.structural.entity)": [[179, "pyVHDLParser.Blocks.Structural.Entity.DeclarativeRegion"]], "end_block (pyvhdlparser.blocks.structural.entity.beginblock attribute)": [[179, "pyVHDLParser.Blocks.Structural.Entity.BeginBlock.END_BLOCK"]], "end_block (pyvhdlparser.blocks.structural.entity.declarativeregion attribute)": [[179, "pyVHDLParser.Blocks.Structural.Entity.DeclarativeRegion.END_BLOCK"]], "endblock (class in pyvhdlparser.blocks.structural.entity)": [[179, "pyVHDLParser.Blocks.Structural.Entity.EndBlock"]], "endtoken (pyvhdlparser.blocks.structural.entity.beginblock attribute)": [[179, "pyVHDLParser.Blocks.Structural.Entity.BeginBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.structural.entity.endblock attribute)": [[179, "pyVHDLParser.Blocks.Structural.Entity.EndBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.structural.entity.nameblock attribute)": [[179, "pyVHDLParser.Blocks.Structural.Entity.NameBlock.EndToken"]], "keyword (pyvhdlparser.blocks.structural.entity.endblock attribute)": [[179, "pyVHDLParser.Blocks.Structural.Entity.EndBlock.KEYWORD"]], "length (pyvhdlparser.blocks.structural.entity.beginblock property)": [[179, "pyVHDLParser.Blocks.Structural.Entity.BeginBlock.Length"]], "length (pyvhdlparser.blocks.structural.entity.endblock property)": [[179, "pyVHDLParser.Blocks.Structural.Entity.EndBlock.Length"]], "length (pyvhdlparser.blocks.structural.entity.nameblock property)": [[179, "pyVHDLParser.Blocks.Structural.Entity.NameBlock.Length"]], "multipart (pyvhdlparser.blocks.structural.entity.beginblock attribute)": [[179, "pyVHDLParser.Blocks.Structural.Entity.BeginBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.structural.entity.endblock attribute)": [[179, "pyVHDLParser.Blocks.Structural.Entity.EndBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.structural.entity.nameblock attribute)": [[179, "pyVHDLParser.Blocks.Structural.Entity.NameBlock.MultiPart"]], "nameblock (class in pyvhdlparser.blocks.structural.entity)": [[179, "pyVHDLParser.Blocks.Structural.Entity.NameBlock"]], "nextblock (pyvhdlparser.blocks.structural.entity.beginblock attribute)": [[179, "pyVHDLParser.Blocks.Structural.Entity.BeginBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.structural.entity.endblock attribute)": [[179, "pyVHDLParser.Blocks.Structural.Entity.EndBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.structural.entity.nameblock attribute)": [[179, "pyVHDLParser.Blocks.Structural.Entity.NameBlock.NextBlock"]], "starttoken (pyvhdlparser.blocks.structural.entity.beginblock attribute)": [[179, "pyVHDLParser.Blocks.Structural.Entity.BeginBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.structural.entity.endblock attribute)": [[179, "pyVHDLParser.Blocks.Structural.Entity.EndBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.structural.entity.nameblock attribute)": [[179, "pyVHDLParser.Blocks.Structural.Entity.NameBlock.StartToken"]], "states (pyvhdlparser.blocks.structural.entity.beginblock property)": [[179, "pyVHDLParser.Blocks.Structural.Entity.BeginBlock.States"]], "states (pyvhdlparser.blocks.structural.entity.endblock property)": [[179, "pyVHDLParser.Blocks.Structural.Entity.EndBlock.States"]], "states (pyvhdlparser.blocks.structural.entity.nameblock property)": [[179, "pyVHDLParser.Blocks.Structural.Entity.NameBlock.States"]], "__states__ (pyvhdlparser.blocks.structural.entity.beginblock attribute)": [[179, "pyVHDLParser.Blocks.Structural.Entity.BeginBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.structural.entity.endblock attribute)": [[179, "pyVHDLParser.Blocks.Structural.Entity.EndBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.structural.entity.nameblock attribute)": [[179, "pyVHDLParser.Blocks.Structural.Entity.NameBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.structural.entity.beginblock method)": [[179, "pyVHDLParser.Blocks.Structural.Entity.BeginBlock.__init__"]], "__init__() (pyvhdlparser.blocks.structural.entity.endblock method)": [[179, "pyVHDLParser.Blocks.Structural.Entity.EndBlock.__init__"]], "__init__() (pyvhdlparser.blocks.structural.entity.nameblock method)": [[179, "pyVHDLParser.Blocks.Structural.Entity.NameBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.structural.entity.beginblock method)": [[179, "pyVHDLParser.Blocks.Structural.Entity.BeginBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.structural.entity.endblock method)": [[179, "pyVHDLParser.Blocks.Structural.Entity.EndBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.structural.entity.nameblock method)": [[179, "pyVHDLParser.Blocks.Structural.Entity.NameBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.structural.entity.beginblock method)": [[179, "pyVHDLParser.Blocks.Structural.Entity.BeginBlock.__len__"]], "__len__() (pyvhdlparser.blocks.structural.entity.endblock method)": [[179, "pyVHDLParser.Blocks.Structural.Entity.EndBlock.__len__"]], "__len__() (pyvhdlparser.blocks.structural.entity.nameblock method)": [[179, "pyVHDLParser.Blocks.Structural.Entity.NameBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.structural.entity.beginblock method)": [[179, "pyVHDLParser.Blocks.Structural.Entity.BeginBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.structural.entity.endblock method)": [[179, "pyVHDLParser.Blocks.Structural.Entity.EndBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.structural.entity.nameblock method)": [[179, "pyVHDLParser.Blocks.Structural.Entity.NameBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.structural.entity.beginblock method)": [[179, "pyVHDLParser.Blocks.Structural.Entity.BeginBlock.__str__"]], "__str__() (pyvhdlparser.blocks.structural.entity.endblock method)": [[179, "pyVHDLParser.Blocks.Structural.Entity.EndBlock.__str__"]], "__str__() (pyvhdlparser.blocks.structural.entity.nameblock method)": [[179, "pyVHDLParser.Blocks.Structural.Entity.NameBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.structural.entity.beginblock attribute)": [[179, "pyVHDLParser.Blocks.Structural.Entity.BeginBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.structural.entity.endblock attribute)": [[179, "pyVHDLParser.Blocks.Structural.Entity.EndBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.structural.entity.nameblock attribute)": [[179, "pyVHDLParser.Blocks.Structural.Entity.NameBlock._previousBlock"]], "pyvhdlparser.blocks.structural.entity": [[179, "module-pyVHDLParser.Blocks.Structural.Entity"]], "stateerror() (pyvhdlparser.blocks.structural.entity.beginblock class method)": [[179, "pyVHDLParser.Blocks.Structural.Entity.BeginBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.structural.entity.endblock class method)": [[179, "pyVHDLParser.Blocks.Structural.Entity.EndBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.structural.entity.nameblock class method)": [[179, "pyVHDLParser.Blocks.Structural.Entity.NameBlock.stateError"]], "pyvhdlparser.blocks.type": [[180, "module-pyVHDLParser.Blocks.Type"]], "arrayresolutionindicationblock (class in pyvhdlparser.blocks.type.resolutionindication)": [[181, "pyVHDLParser.Blocks.Type.ResolutionIndication.ArrayResolutionIndicationBlock"]], "endtoken (pyvhdlparser.blocks.type.resolutionindication.arrayresolutionindicationblock attribute)": [[181, "pyVHDLParser.Blocks.Type.ResolutionIndication.ArrayResolutionIndicationBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.type.resolutionindication.recordresolutionindicationblock attribute)": [[181, "pyVHDLParser.Blocks.Type.ResolutionIndication.RecordResolutionIndicationBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.type.resolutionindication.simpleresolutionindicationblock attribute)": [[181, "pyVHDLParser.Blocks.Type.ResolutionIndication.SimpleResolutionIndicationBlock.EndToken"]], "length (pyvhdlparser.blocks.type.resolutionindication.arrayresolutionindicationblock property)": [[181, "pyVHDLParser.Blocks.Type.ResolutionIndication.ArrayResolutionIndicationBlock.Length"]], "length (pyvhdlparser.blocks.type.resolutionindication.recordresolutionindicationblock property)": [[181, "pyVHDLParser.Blocks.Type.ResolutionIndication.RecordResolutionIndicationBlock.Length"]], "length (pyvhdlparser.blocks.type.resolutionindication.simpleresolutionindicationblock property)": [[181, "pyVHDLParser.Blocks.Type.ResolutionIndication.SimpleResolutionIndicationBlock.Length"]], "multipart (pyvhdlparser.blocks.type.resolutionindication.arrayresolutionindicationblock attribute)": [[181, "pyVHDLParser.Blocks.Type.ResolutionIndication.ArrayResolutionIndicationBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.type.resolutionindication.recordresolutionindicationblock attribute)": [[181, "pyVHDLParser.Blocks.Type.ResolutionIndication.RecordResolutionIndicationBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.type.resolutionindication.simpleresolutionindicationblock attribute)": [[181, "pyVHDLParser.Blocks.Type.ResolutionIndication.SimpleResolutionIndicationBlock.MultiPart"]], "nextblock (pyvhdlparser.blocks.type.resolutionindication.arrayresolutionindicationblock attribute)": [[181, "pyVHDLParser.Blocks.Type.ResolutionIndication.ArrayResolutionIndicationBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.type.resolutionindication.recordresolutionindicationblock attribute)": [[181, "pyVHDLParser.Blocks.Type.ResolutionIndication.RecordResolutionIndicationBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.type.resolutionindication.simpleresolutionindicationblock attribute)": [[181, "pyVHDLParser.Blocks.Type.ResolutionIndication.SimpleResolutionIndicationBlock.NextBlock"]], "recordresolutionindicationblock (class in pyvhdlparser.blocks.type.resolutionindication)": [[181, "pyVHDLParser.Blocks.Type.ResolutionIndication.RecordResolutionIndicationBlock"]], "simpleresolutionindicationblock (class in pyvhdlparser.blocks.type.resolutionindication)": [[181, "pyVHDLParser.Blocks.Type.ResolutionIndication.SimpleResolutionIndicationBlock"]], "starttoken (pyvhdlparser.blocks.type.resolutionindication.arrayresolutionindicationblock attribute)": [[181, "pyVHDLParser.Blocks.Type.ResolutionIndication.ArrayResolutionIndicationBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.type.resolutionindication.recordresolutionindicationblock attribute)": [[181, "pyVHDLParser.Blocks.Type.ResolutionIndication.RecordResolutionIndicationBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.type.resolutionindication.simpleresolutionindicationblock attribute)": [[181, "pyVHDLParser.Blocks.Type.ResolutionIndication.SimpleResolutionIndicationBlock.StartToken"]], "states (pyvhdlparser.blocks.type.resolutionindication.arrayresolutionindicationblock property)": [[181, "pyVHDLParser.Blocks.Type.ResolutionIndication.ArrayResolutionIndicationBlock.States"]], "states (pyvhdlparser.blocks.type.resolutionindication.recordresolutionindicationblock property)": [[181, "pyVHDLParser.Blocks.Type.ResolutionIndication.RecordResolutionIndicationBlock.States"]], "states (pyvhdlparser.blocks.type.resolutionindication.simpleresolutionindicationblock property)": [[181, "pyVHDLParser.Blocks.Type.ResolutionIndication.SimpleResolutionIndicationBlock.States"]], "__states__ (pyvhdlparser.blocks.type.resolutionindication.arrayresolutionindicationblock attribute)": [[181, "pyVHDLParser.Blocks.Type.ResolutionIndication.ArrayResolutionIndicationBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.type.resolutionindication.recordresolutionindicationblock attribute)": [[181, "pyVHDLParser.Blocks.Type.ResolutionIndication.RecordResolutionIndicationBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.type.resolutionindication.simpleresolutionindicationblock attribute)": [[181, "pyVHDLParser.Blocks.Type.ResolutionIndication.SimpleResolutionIndicationBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.type.resolutionindication.arrayresolutionindicationblock method)": [[181, "pyVHDLParser.Blocks.Type.ResolutionIndication.ArrayResolutionIndicationBlock.__init__"]], "__init__() (pyvhdlparser.blocks.type.resolutionindication.recordresolutionindicationblock method)": [[181, "pyVHDLParser.Blocks.Type.ResolutionIndication.RecordResolutionIndicationBlock.__init__"]], "__init__() (pyvhdlparser.blocks.type.resolutionindication.simpleresolutionindicationblock method)": [[181, "pyVHDLParser.Blocks.Type.ResolutionIndication.SimpleResolutionIndicationBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.type.resolutionindication.arrayresolutionindicationblock method)": [[181, "pyVHDLParser.Blocks.Type.ResolutionIndication.ArrayResolutionIndicationBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.type.resolutionindication.recordresolutionindicationblock method)": [[181, "pyVHDLParser.Blocks.Type.ResolutionIndication.RecordResolutionIndicationBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.type.resolutionindication.simpleresolutionindicationblock method)": [[181, "pyVHDLParser.Blocks.Type.ResolutionIndication.SimpleResolutionIndicationBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.type.resolutionindication.arrayresolutionindicationblock method)": [[181, "pyVHDLParser.Blocks.Type.ResolutionIndication.ArrayResolutionIndicationBlock.__len__"]], "__len__() (pyvhdlparser.blocks.type.resolutionindication.recordresolutionindicationblock method)": [[181, "pyVHDLParser.Blocks.Type.ResolutionIndication.RecordResolutionIndicationBlock.__len__"]], "__len__() (pyvhdlparser.blocks.type.resolutionindication.simpleresolutionindicationblock method)": [[181, "pyVHDLParser.Blocks.Type.ResolutionIndication.SimpleResolutionIndicationBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.type.resolutionindication.arrayresolutionindicationblock method)": [[181, "pyVHDLParser.Blocks.Type.ResolutionIndication.ArrayResolutionIndicationBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.type.resolutionindication.recordresolutionindicationblock method)": [[181, "pyVHDLParser.Blocks.Type.ResolutionIndication.RecordResolutionIndicationBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.type.resolutionindication.simpleresolutionindicationblock method)": [[181, "pyVHDLParser.Blocks.Type.ResolutionIndication.SimpleResolutionIndicationBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.type.resolutionindication.arrayresolutionindicationblock method)": [[181, "pyVHDLParser.Blocks.Type.ResolutionIndication.ArrayResolutionIndicationBlock.__str__"]], "__str__() (pyvhdlparser.blocks.type.resolutionindication.recordresolutionindicationblock method)": [[181, "pyVHDLParser.Blocks.Type.ResolutionIndication.RecordResolutionIndicationBlock.__str__"]], "__str__() (pyvhdlparser.blocks.type.resolutionindication.simpleresolutionindicationblock method)": [[181, "pyVHDLParser.Blocks.Type.ResolutionIndication.SimpleResolutionIndicationBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.type.resolutionindication.arrayresolutionindicationblock attribute)": [[181, "pyVHDLParser.Blocks.Type.ResolutionIndication.ArrayResolutionIndicationBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.type.resolutionindication.recordresolutionindicationblock attribute)": [[181, "pyVHDLParser.Blocks.Type.ResolutionIndication.RecordResolutionIndicationBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.type.resolutionindication.simpleresolutionindicationblock attribute)": [[181, "pyVHDLParser.Blocks.Type.ResolutionIndication.SimpleResolutionIndicationBlock._previousBlock"]], "pyvhdlparser.blocks.type.resolutionindication": [[181, "module-pyVHDLParser.Blocks.Type.ResolutionIndication"]], "stateerror() (pyvhdlparser.blocks.type.resolutionindication.arrayresolutionindicationblock class method)": [[181, "pyVHDLParser.Blocks.Type.ResolutionIndication.ArrayResolutionIndicationBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.type.resolutionindication.recordresolutionindicationblock class method)": [[181, "pyVHDLParser.Blocks.Type.ResolutionIndication.RecordResolutionIndicationBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.type.resolutionindication.simpleresolutionindicationblock class method)": [[181, "pyVHDLParser.Blocks.Type.ResolutionIndication.SimpleResolutionIndicationBlock.stateError"]], "endtoken (pyvhdlparser.blocks.type.subtype.subtypeblock attribute)": [[182, "pyVHDLParser.Blocks.Type.Subtype.SubtypeBlock.EndToken"]], "length (pyvhdlparser.blocks.type.subtype.subtypeblock property)": [[182, "pyVHDLParser.Blocks.Type.Subtype.SubtypeBlock.Length"]], "multipart (pyvhdlparser.blocks.type.subtype.subtypeblock attribute)": [[182, "pyVHDLParser.Blocks.Type.Subtype.SubtypeBlock.MultiPart"]], "nextblock (pyvhdlparser.blocks.type.subtype.subtypeblock attribute)": [[182, "pyVHDLParser.Blocks.Type.Subtype.SubtypeBlock.NextBlock"]], "starttoken (pyvhdlparser.blocks.type.subtype.subtypeblock attribute)": [[182, "pyVHDLParser.Blocks.Type.Subtype.SubtypeBlock.StartToken"]], "states (pyvhdlparser.blocks.type.subtype.subtypeblock property)": [[182, "pyVHDLParser.Blocks.Type.Subtype.SubtypeBlock.States"]], "subtypeblock (class in pyvhdlparser.blocks.type.subtype)": [[182, "pyVHDLParser.Blocks.Type.Subtype.SubtypeBlock"]], "__states__ (pyvhdlparser.blocks.type.subtype.subtypeblock attribute)": [[182, "pyVHDLParser.Blocks.Type.Subtype.SubtypeBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.type.subtype.subtypeblock method)": [[182, "pyVHDLParser.Blocks.Type.Subtype.SubtypeBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.type.subtype.subtypeblock method)": [[182, "pyVHDLParser.Blocks.Type.Subtype.SubtypeBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.type.subtype.subtypeblock method)": [[182, "pyVHDLParser.Blocks.Type.Subtype.SubtypeBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.type.subtype.subtypeblock method)": [[182, "pyVHDLParser.Blocks.Type.Subtype.SubtypeBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.type.subtype.subtypeblock method)": [[182, "pyVHDLParser.Blocks.Type.Subtype.SubtypeBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.type.subtype.subtypeblock attribute)": [[182, "pyVHDLParser.Blocks.Type.Subtype.SubtypeBlock._previousBlock"]], "pyvhdlparser.blocks.type.subtype": [[182, "module-pyVHDLParser.Blocks.Type.Subtype"]], "stateerror() (pyvhdlparser.blocks.type.subtype.subtypeblock class method)": [[182, "pyVHDLParser.Blocks.Type.Subtype.SubtypeBlock.stateError"]], "arrayconstrainedsubtypeindicationblock (class in pyvhdlparser.blocks.type.subtypeindication)": [[183, "pyVHDLParser.Blocks.Type.SubtypeIndication.ArrayConstrainedSubtypeIndicationBlock"]], "endtoken (pyvhdlparser.blocks.type.subtypeindication.arrayconstrainedsubtypeindicationblock attribute)": [[183, "pyVHDLParser.Blocks.Type.SubtypeIndication.ArrayConstrainedSubtypeIndicationBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.type.subtypeindication.recordconstrainedsubtypeindicationblock attribute)": [[183, "pyVHDLParser.Blocks.Type.SubtypeIndication.RecordConstrainedSubtypeIndicationBlock.EndToken"]], "endtoken (pyvhdlparser.blocks.type.subtypeindication.subtypeindicationblock attribute)": [[183, "pyVHDLParser.Blocks.Type.SubtypeIndication.SubtypeIndicationBlock.EndToken"]], "length (pyvhdlparser.blocks.type.subtypeindication.arrayconstrainedsubtypeindicationblock property)": [[183, "pyVHDLParser.Blocks.Type.SubtypeIndication.ArrayConstrainedSubtypeIndicationBlock.Length"]], "length (pyvhdlparser.blocks.type.subtypeindication.recordconstrainedsubtypeindicationblock property)": [[183, "pyVHDLParser.Blocks.Type.SubtypeIndication.RecordConstrainedSubtypeIndicationBlock.Length"]], "length (pyvhdlparser.blocks.type.subtypeindication.subtypeindicationblock property)": [[183, "pyVHDLParser.Blocks.Type.SubtypeIndication.SubtypeIndicationBlock.Length"]], "multipart (pyvhdlparser.blocks.type.subtypeindication.arrayconstrainedsubtypeindicationblock attribute)": [[183, "pyVHDLParser.Blocks.Type.SubtypeIndication.ArrayConstrainedSubtypeIndicationBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.type.subtypeindication.recordconstrainedsubtypeindicationblock attribute)": [[183, "pyVHDLParser.Blocks.Type.SubtypeIndication.RecordConstrainedSubtypeIndicationBlock.MultiPart"]], "multipart (pyvhdlparser.blocks.type.subtypeindication.subtypeindicationblock attribute)": [[183, "pyVHDLParser.Blocks.Type.SubtypeIndication.SubtypeIndicationBlock.MultiPart"]], "nextblock (pyvhdlparser.blocks.type.subtypeindication.arrayconstrainedsubtypeindicationblock attribute)": [[183, "pyVHDLParser.Blocks.Type.SubtypeIndication.ArrayConstrainedSubtypeIndicationBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.type.subtypeindication.recordconstrainedsubtypeindicationblock attribute)": [[183, "pyVHDLParser.Blocks.Type.SubtypeIndication.RecordConstrainedSubtypeIndicationBlock.NextBlock"]], "nextblock (pyvhdlparser.blocks.type.subtypeindication.subtypeindicationblock attribute)": [[183, "pyVHDLParser.Blocks.Type.SubtypeIndication.SubtypeIndicationBlock.NextBlock"]], "recordconstrainedsubtypeindicationblock (class in pyvhdlparser.blocks.type.subtypeindication)": [[183, "pyVHDLParser.Blocks.Type.SubtypeIndication.RecordConstrainedSubtypeIndicationBlock"]], "starttoken (pyvhdlparser.blocks.type.subtypeindication.arrayconstrainedsubtypeindicationblock attribute)": [[183, "pyVHDLParser.Blocks.Type.SubtypeIndication.ArrayConstrainedSubtypeIndicationBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.type.subtypeindication.recordconstrainedsubtypeindicationblock attribute)": [[183, "pyVHDLParser.Blocks.Type.SubtypeIndication.RecordConstrainedSubtypeIndicationBlock.StartToken"]], "starttoken (pyvhdlparser.blocks.type.subtypeindication.subtypeindicationblock attribute)": [[183, "pyVHDLParser.Blocks.Type.SubtypeIndication.SubtypeIndicationBlock.StartToken"]], "states (pyvhdlparser.blocks.type.subtypeindication.arrayconstrainedsubtypeindicationblock property)": [[183, "pyVHDLParser.Blocks.Type.SubtypeIndication.ArrayConstrainedSubtypeIndicationBlock.States"]], "states (pyvhdlparser.blocks.type.subtypeindication.recordconstrainedsubtypeindicationblock property)": [[183, "pyVHDLParser.Blocks.Type.SubtypeIndication.RecordConstrainedSubtypeIndicationBlock.States"]], "states (pyvhdlparser.blocks.type.subtypeindication.subtypeindicationblock property)": [[183, "pyVHDLParser.Blocks.Type.SubtypeIndication.SubtypeIndicationBlock.States"]], "subtypeindicationblock (class in pyvhdlparser.blocks.type.subtypeindication)": [[183, "pyVHDLParser.Blocks.Type.SubtypeIndication.SubtypeIndicationBlock"]], "__states__ (pyvhdlparser.blocks.type.subtypeindication.arrayconstrainedsubtypeindicationblock attribute)": [[183, "pyVHDLParser.Blocks.Type.SubtypeIndication.ArrayConstrainedSubtypeIndicationBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.type.subtypeindication.recordconstrainedsubtypeindicationblock attribute)": [[183, "pyVHDLParser.Blocks.Type.SubtypeIndication.RecordConstrainedSubtypeIndicationBlock.__STATES__"]], "__states__ (pyvhdlparser.blocks.type.subtypeindication.subtypeindicationblock attribute)": [[183, "pyVHDLParser.Blocks.Type.SubtypeIndication.SubtypeIndicationBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.type.subtypeindication.arrayconstrainedsubtypeindicationblock method)": [[183, "pyVHDLParser.Blocks.Type.SubtypeIndication.ArrayConstrainedSubtypeIndicationBlock.__init__"]], "__init__() (pyvhdlparser.blocks.type.subtypeindication.recordconstrainedsubtypeindicationblock method)": [[183, "pyVHDLParser.Blocks.Type.SubtypeIndication.RecordConstrainedSubtypeIndicationBlock.__init__"]], "__init__() (pyvhdlparser.blocks.type.subtypeindication.subtypeindicationblock method)": [[183, "pyVHDLParser.Blocks.Type.SubtypeIndication.SubtypeIndicationBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.type.subtypeindication.arrayconstrainedsubtypeindicationblock method)": [[183, "pyVHDLParser.Blocks.Type.SubtypeIndication.ArrayConstrainedSubtypeIndicationBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.type.subtypeindication.recordconstrainedsubtypeindicationblock method)": [[183, "pyVHDLParser.Blocks.Type.SubtypeIndication.RecordConstrainedSubtypeIndicationBlock.__iter__"]], "__iter__() (pyvhdlparser.blocks.type.subtypeindication.subtypeindicationblock method)": [[183, "pyVHDLParser.Blocks.Type.SubtypeIndication.SubtypeIndicationBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.type.subtypeindication.arrayconstrainedsubtypeindicationblock method)": [[183, "pyVHDLParser.Blocks.Type.SubtypeIndication.ArrayConstrainedSubtypeIndicationBlock.__len__"]], "__len__() (pyvhdlparser.blocks.type.subtypeindication.recordconstrainedsubtypeindicationblock method)": [[183, "pyVHDLParser.Blocks.Type.SubtypeIndication.RecordConstrainedSubtypeIndicationBlock.__len__"]], "__len__() (pyvhdlparser.blocks.type.subtypeindication.subtypeindicationblock method)": [[183, "pyVHDLParser.Blocks.Type.SubtypeIndication.SubtypeIndicationBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.type.subtypeindication.arrayconstrainedsubtypeindicationblock method)": [[183, "pyVHDLParser.Blocks.Type.SubtypeIndication.ArrayConstrainedSubtypeIndicationBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.type.subtypeindication.recordconstrainedsubtypeindicationblock method)": [[183, "pyVHDLParser.Blocks.Type.SubtypeIndication.RecordConstrainedSubtypeIndicationBlock.__repr__"]], "__repr__() (pyvhdlparser.blocks.type.subtypeindication.subtypeindicationblock method)": [[183, "pyVHDLParser.Blocks.Type.SubtypeIndication.SubtypeIndicationBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.type.subtypeindication.arrayconstrainedsubtypeindicationblock method)": [[183, "pyVHDLParser.Blocks.Type.SubtypeIndication.ArrayConstrainedSubtypeIndicationBlock.__str__"]], "__str__() (pyvhdlparser.blocks.type.subtypeindication.recordconstrainedsubtypeindicationblock method)": [[183, "pyVHDLParser.Blocks.Type.SubtypeIndication.RecordConstrainedSubtypeIndicationBlock.__str__"]], "__str__() (pyvhdlparser.blocks.type.subtypeindication.subtypeindicationblock method)": [[183, "pyVHDLParser.Blocks.Type.SubtypeIndication.SubtypeIndicationBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.type.subtypeindication.arrayconstrainedsubtypeindicationblock attribute)": [[183, "pyVHDLParser.Blocks.Type.SubtypeIndication.ArrayConstrainedSubtypeIndicationBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.type.subtypeindication.recordconstrainedsubtypeindicationblock attribute)": [[183, "pyVHDLParser.Blocks.Type.SubtypeIndication.RecordConstrainedSubtypeIndicationBlock._previousBlock"]], "_previousblock (pyvhdlparser.blocks.type.subtypeindication.subtypeindicationblock attribute)": [[183, "pyVHDLParser.Blocks.Type.SubtypeIndication.SubtypeIndicationBlock._previousBlock"]], "pyvhdlparser.blocks.type.subtypeindication": [[183, "module-pyVHDLParser.Blocks.Type.SubtypeIndication"]], "stateerror() (pyvhdlparser.blocks.type.subtypeindication.arrayconstrainedsubtypeindicationblock class method)": [[183, "pyVHDLParser.Blocks.Type.SubtypeIndication.ArrayConstrainedSubtypeIndicationBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.type.subtypeindication.recordconstrainedsubtypeindicationblock class method)": [[183, "pyVHDLParser.Blocks.Type.SubtypeIndication.RecordConstrainedSubtypeIndicationBlock.stateError"]], "stateerror() (pyvhdlparser.blocks.type.subtypeindication.subtypeindicationblock class method)": [[183, "pyVHDLParser.Blocks.Type.SubtypeIndication.SubtypeIndicationBlock.stateError"]], "endtoken (pyvhdlparser.blocks.type.type.typeblock attribute)": [[184, "pyVHDLParser.Blocks.Type.Type.TypeBlock.EndToken"]], "length (pyvhdlparser.blocks.type.type.typeblock property)": [[184, "pyVHDLParser.Blocks.Type.Type.TypeBlock.Length"]], "multipart (pyvhdlparser.blocks.type.type.typeblock attribute)": [[184, "pyVHDLParser.Blocks.Type.Type.TypeBlock.MultiPart"]], "nextblock (pyvhdlparser.blocks.type.type.typeblock attribute)": [[184, "pyVHDLParser.Blocks.Type.Type.TypeBlock.NextBlock"]], "starttoken (pyvhdlparser.blocks.type.type.typeblock attribute)": [[184, "pyVHDLParser.Blocks.Type.Type.TypeBlock.StartToken"]], "states (pyvhdlparser.blocks.type.type.typeblock property)": [[184, "pyVHDLParser.Blocks.Type.Type.TypeBlock.States"]], "typeblock (class in pyvhdlparser.blocks.type.type)": [[184, "pyVHDLParser.Blocks.Type.Type.TypeBlock"]], "__states__ (pyvhdlparser.blocks.type.type.typeblock attribute)": [[184, "pyVHDLParser.Blocks.Type.Type.TypeBlock.__STATES__"]], "__init__() (pyvhdlparser.blocks.type.type.typeblock method)": [[184, "pyVHDLParser.Blocks.Type.Type.TypeBlock.__init__"]], "__iter__() (pyvhdlparser.blocks.type.type.typeblock method)": [[184, "pyVHDLParser.Blocks.Type.Type.TypeBlock.__iter__"]], "__len__() (pyvhdlparser.blocks.type.type.typeblock method)": [[184, "pyVHDLParser.Blocks.Type.Type.TypeBlock.__len__"]], "__repr__() (pyvhdlparser.blocks.type.type.typeblock method)": [[184, "pyVHDLParser.Blocks.Type.Type.TypeBlock.__repr__"]], "__str__() (pyvhdlparser.blocks.type.type.typeblock method)": [[184, "pyVHDLParser.Blocks.Type.Type.TypeBlock.__str__"]], "_previousblock (pyvhdlparser.blocks.type.type.typeblock attribute)": [[184, "pyVHDLParser.Blocks.Type.Type.TypeBlock._previousBlock"]], "pyvhdlparser.blocks.type.type": [[184, "module-pyVHDLParser.Blocks.Type.Type"]], "stateerror() (pyvhdlparser.blocks.type.type.typeblock class method)": [[184, "pyVHDLParser.Blocks.Type.Type.TypeBlock.stateError"]], "pyvhdlparser.cli": [[185, "module-pyVHDLParser.CLI"]], "pyvhdlparser.cli.antlr": [[186, "module-pyVHDLParser.CLI.ANTLR"]], "pyvhdlparser.cli.block": [[187, "module-pyVHDLParser.CLI.Block"]], "pyvhdlparser.cli.codedom": [[188, "module-pyVHDLParser.CLI.CodeDOM"]], "pyvhdlparser.cli.graphml": [[189, "module-pyVHDLParser.CLI.GraphML"]], "pyvhdlparser.cli.group": [[190, "module-pyVHDLParser.CLI.Group"]], "pyvhdlparser.cli.token": [[191, "module-pyVHDLParser.CLI.Token"]], "application (class in pyvhdlparser.cli.vhdlparser)": [[192, "pyVHDLParser.CLI.VHDLParser.Application"]], "debug (pyvhdlparser.cli.vhdlparser.application property)": [[192, "pyVHDLParser.CLI.VHDLParser.Application.Debug"]], "exitonpreviouserrors() (pyvhdlparser.cli.vhdlparser.application method)": [[192, "pyVHDLParser.CLI.VHDLParser.Application.ExitOnPreviousErrors"]], "exitonpreviouswarnings() (pyvhdlparser.cli.vhdlparser.application method)": [[192, "pyVHDLParser.CLI.VHDLParser.Application.ExitOnPreviousWarnings"]], "foreground (pyvhdlparser.cli.vhdlparser.application attribute)": [[192, "pyVHDLParser.CLI.VHDLParser.Application.Foreground"]], "getattributes() (pyvhdlparser.cli.vhdlparser.application static method)": [[192, "pyVHDLParser.CLI.VHDLParser.Application.GetAttributes"]], "getterminalsize() (pyvhdlparser.cli.vhdlparser.application static method)": [[192, "pyVHDLParser.CLI.VHDLParser.Application.GetTerminalSize"]], "hasattribute() (pyvhdlparser.cli.vhdlparser.application static method)": [[192, "pyVHDLParser.CLI.VHDLParser.Application.HasAttribute"]], "height (pyvhdlparser.cli.vhdlparser.application property)": [[192, "pyVHDLParser.CLI.VHDLParser.Application.Height"]], "loglevel (pyvhdlparser.cli.vhdlparser.application property)": [[192, "pyVHDLParser.CLI.VHDLParser.Application.LogLevel"]], "mainparser (pyvhdlparser.cli.vhdlparser.application property)": [[192, "pyVHDLParser.CLI.VHDLParser.Application.MainParser"]], "quiet (pyvhdlparser.cli.vhdlparser.application property)": [[192, "pyVHDLParser.CLI.VHDLParser.Application.Quiet"]], "subparsers (pyvhdlparser.cli.vhdlparser.application property)": [[192, "pyVHDLParser.CLI.VHDLParser.Application.SubParsers"]], "terminal (pyvhdlparser.cli.vhdlparser.application property)": [[192, "pyVHDLParser.CLI.VHDLParser.Application.Terminal"]], "verbose (pyvhdlparser.cli.vhdlparser.application property)": [[192, "pyVHDLParser.CLI.VHDLParser.Application.Verbose"]], "width (pyvhdlparser.cli.vhdlparser.application property)": [[192, "pyVHDLParser.CLI.VHDLParser.Application.Width"]], "writedebug() (pyvhdlparser.cli.vhdlparser.application method)": [[192, "pyVHDLParser.CLI.VHDLParser.Application.WriteDebug"]], "writedryrun() (pyvhdlparser.cli.vhdlparser.application method)": [[192, "pyVHDLParser.CLI.VHDLParser.Application.WriteDryRun"]], "writeerror() (pyvhdlparser.cli.vhdlparser.application method)": [[192, "pyVHDLParser.CLI.VHDLParser.Application.WriteError"]], "writefatal() (pyvhdlparser.cli.vhdlparser.application method)": [[192, "pyVHDLParser.CLI.VHDLParser.Application.WriteFatal"]], "writeinfo() (pyvhdlparser.cli.vhdlparser.application method)": [[192, "pyVHDLParser.CLI.VHDLParser.Application.WriteInfo"]], "writeline() (pyvhdlparser.cli.vhdlparser.application method)": [[192, "pyVHDLParser.CLI.VHDLParser.Application.WriteLine"]], "writenormal() (pyvhdlparser.cli.vhdlparser.application method)": [[192, "pyVHDLParser.CLI.VHDLParser.Application.WriteNormal"]], "writequiet() (pyvhdlparser.cli.vhdlparser.application method)": [[192, "pyVHDLParser.CLI.VHDLParser.Application.WriteQuiet"]], "writeverbose() (pyvhdlparser.cli.vhdlparser.application method)": [[192, "pyVHDLParser.CLI.VHDLParser.Application.WriteVerbose"]], "writewarning() (pyvhdlparser.cli.vhdlparser.application method)": [[192, "pyVHDLParser.CLI.VHDLParser.Application.WriteWarning"]], "_log_message_format__ (pyvhdlparser.cli.vhdlparser.application attribute)": [[192, "pyVHDLParser.CLI.VHDLParser.Application._LOG_MESSAGE_FORMAT__"]], "__init__() (pyvhdlparser.cli.vhdlparser.application method)": [[192, "pyVHDLParser.CLI.VHDLParser.Application.__init__"]], "__new__() (pyvhdlparser.cli.vhdlparser.application method)": [[192, "pyVHDLParser.CLI.VHDLParser.Application.__new__"]], "_height (pyvhdlparser.cli.vhdlparser.application attribute)": [[192, "pyVHDLParser.CLI.VHDLParser.Application._height"]], "_width (pyvhdlparser.cli.vhdlparser.application attribute)": [[192, "pyVHDLParser.CLI.VHDLParser.Application._width"]], "deinitcolors() (pyvhdlparser.cli.vhdlparser.application class method)": [[192, "pyVHDLParser.CLI.VHDLParser.Application.deinitColors"]], "exit() (pyvhdlparser.cli.vhdlparser.application class method)": [[192, "pyVHDLParser.CLI.VHDLParser.Application.exit"]], "fatalexit() (pyvhdlparser.cli.vhdlparser.application class method)": [[192, "pyVHDLParser.CLI.VHDLParser.Application.fatalExit"]], "initcolors() (pyvhdlparser.cli.vhdlparser.application class method)": [[192, "pyVHDLParser.CLI.VHDLParser.Application.initColors"]], "printexception() (pyvhdlparser.cli.vhdlparser.application class method)": [[192, "pyVHDLParser.CLI.VHDLParser.Application.printException"]], "printimporterror() (in module pyvhdlparser.cli.vhdlparser)": [[192, "pyVHDLParser.CLI.VHDLParser.printImportError"]], "printnotimplementederror() (pyvhdlparser.cli.vhdlparser.application class method)": [[192, "pyVHDLParser.CLI.VHDLParser.Application.printNotImplementedError"]], "pyvhdlparser.cli.vhdlparser": [[192, "module-pyVHDLParser.CLI.VHDLParser"]], "versioncheck() (pyvhdlparser.cli.vhdlparser.application class method)": [[192, "pyVHDLParser.CLI.VHDLParser.Application.versionCheck"]], "pyvhdlparser.decorators": [[193, "module-pyVHDLParser.Decorators"]], "architectures (pyvhdlparser.documentmodel.document property)": [[194, "pyVHDLParser.DocumentModel.Document.Architectures"]], "configurations (pyvhdlparser.documentmodel.document property)": [[194, "pyVHDLParser.DocumentModel.Document.Configurations"]], "contexts (pyvhdlparser.documentmodel.document property)": [[194, "pyVHDLParser.DocumentModel.Document.Contexts"]], "domparserexception": [[194, "pyVHDLParser.DocumentModel.DOMParserException"]], "designunits (pyvhdlparser.documentmodel.document property)": [[194, "pyVHDLParser.DocumentModel.Document.DesignUnits"]], "document (class in pyvhdlparser.documentmodel)": [[194, "pyVHDLParser.DocumentModel.Document"]], "documentation (pyvhdlparser.documentmodel.document property)": [[194, "pyVHDLParser.DocumentModel.Document.Documentation"]], "entities (pyvhdlparser.documentmodel.document property)": [[194, "pyVHDLParser.DocumentModel.Document.Entities"]], "packagebodies (pyvhdlparser.documentmodel.document property)": [[194, "pyVHDLParser.DocumentModel.Document.PackageBodies"]], "packages (pyvhdlparser.documentmodel.document property)": [[194, "pyVHDLParser.DocumentModel.Document.Packages"]], "parent (pyvhdlparser.documentmodel.document property)": [[194, "pyVHDLParser.DocumentModel.Document.Parent"]], "verificationmodes (pyvhdlparser.documentmodel.document property)": [[194, "pyVHDLParser.DocumentModel.Document.VerificationModes"]], "verificationproperties (pyvhdlparser.documentmodel.document property)": [[194, "pyVHDLParser.DocumentModel.Document.VerificationProperties"]], "verificationunits (pyvhdlparser.documentmodel.document property)": [[194, "pyVHDLParser.DocumentModel.Document.VerificationUnits"]], "__init__() (pyvhdlparser.documentmodel.domparserexception method)": [[194, "pyVHDLParser.DocumentModel.DOMParserException.__init__"]], "__init__() (pyvhdlparser.documentmodel.document method)": [[194, "pyVHDLParser.DocumentModel.Document.__init__"]], "__new__() (pyvhdlparser.documentmodel.domparserexception method)": [[194, "pyVHDLParser.DocumentModel.DOMParserException.__new__"]], "_architectures (pyvhdlparser.documentmodel.document attribute)": [[194, "pyVHDLParser.DocumentModel.Document._architectures"]], "_configurations (pyvhdlparser.documentmodel.document attribute)": [[194, "pyVHDLParser.DocumentModel.Document._configurations"]], "_contexts (pyvhdlparser.documentmodel.document attribute)": [[194, "pyVHDLParser.DocumentModel.Document._contexts"]], "_designunits (pyvhdlparser.documentmodel.document attribute)": [[194, "pyVHDLParser.DocumentModel.Document._designUnits"]], "_documentation (pyvhdlparser.documentmodel.document attribute)": [[194, "pyVHDLParser.DocumentModel.Document._documentation"]], "_entities (pyvhdlparser.documentmodel.document attribute)": [[194, "pyVHDLParser.DocumentModel.Document._entities"]], "_packagebodies (pyvhdlparser.documentmodel.document attribute)": [[194, "pyVHDLParser.DocumentModel.Document._packageBodies"]], "_packages (pyvhdlparser.documentmodel.document attribute)": [[194, "pyVHDLParser.DocumentModel.Document._packages"]], "_parent (pyvhdlparser.documentmodel.document attribute)": [[194, "pyVHDLParser.DocumentModel.Document._parent"]], "_path (pyvhdlparser.documentmodel.document attribute)": [[194, "pyVHDLParser.DocumentModel.Document._path"]], "_verificationmodes (pyvhdlparser.documentmodel.document attribute)": [[194, "pyVHDLParser.DocumentModel.Document._verificationModes"]], "_verificationproperties (pyvhdlparser.documentmodel.document attribute)": [[194, "pyVHDLParser.DocumentModel.Document._verificationProperties"]], "_verificationunits (pyvhdlparser.documentmodel.document attribute)": [[194, "pyVHDLParser.DocumentModel.Document._verificationUnits"]], "pyvhdlparser.documentmodel": [[194, "module-pyVHDLParser.DocumentModel"]], "pyvhdlparser.documentmodel.designunit": [[195, "module-pyVHDLParser.DocumentModel.DesignUnit"]], "architecture (class in pyvhdlparser.documentmodel.designunit.architecture)": [[196, "pyVHDLParser.DocumentModel.DesignUnit.Architecture.Architecture"]], "contextitems (pyvhdlparser.documentmodel.designunit.architecture.architecture property)": [[196, "pyVHDLParser.DocumentModel.DesignUnit.Architecture.Architecture.ContextItems"]], "contextreferences (pyvhdlparser.documentmodel.designunit.architecture.architecture property)": [[196, "pyVHDLParser.DocumentModel.DesignUnit.Architecture.Architecture.ContextReferences"]], "documentation (pyvhdlparser.documentmodel.designunit.architecture.architecture property)": [[196, "pyVHDLParser.DocumentModel.DesignUnit.Architecture.Architecture.Documentation"]], "identifier (pyvhdlparser.documentmodel.designunit.architecture.architecture property)": [[196, "pyVHDLParser.DocumentModel.DesignUnit.Architecture.Architecture.Identifier"]], "libraryreferences (pyvhdlparser.documentmodel.designunit.architecture.architecture property)": [[196, "pyVHDLParser.DocumentModel.DesignUnit.Architecture.Architecture.LibraryReferences"]], "normalizedidentifier (pyvhdlparser.documentmodel.designunit.architecture.architecture property)": [[196, "pyVHDLParser.DocumentModel.DesignUnit.Architecture.Architecture.NormalizedIdentifier"]], "packagereferences (pyvhdlparser.documentmodel.designunit.architecture.architecture property)": [[196, "pyVHDLParser.DocumentModel.DesignUnit.Architecture.Architecture.PackageReferences"]], "parent (pyvhdlparser.documentmodel.designunit.architecture.architecture property)": [[196, "pyVHDLParser.DocumentModel.DesignUnit.Architecture.Architecture.Parent"]], "__init__() (pyvhdlparser.documentmodel.designunit.architecture.architecture method)": [[196, "pyVHDLParser.DocumentModel.DesignUnit.Architecture.Architecture.__init__"]], "__repr__() (pyvhdlparser.documentmodel.designunit.architecture.architecture method)": [[196, "pyVHDLParser.DocumentModel.DesignUnit.Architecture.Architecture.__repr__"]], "__str__() (pyvhdlparser.documentmodel.designunit.architecture.architecture method)": [[196, "pyVHDLParser.DocumentModel.DesignUnit.Architecture.Architecture.__str__"]], "_contextitems (pyvhdlparser.documentmodel.designunit.architecture.architecture attribute)": [[196, "pyVHDLParser.DocumentModel.DesignUnit.Architecture.Architecture._contextItems"]], "_contextreferences (pyvhdlparser.documentmodel.designunit.architecture.architecture attribute)": [[196, "pyVHDLParser.DocumentModel.DesignUnit.Architecture.Architecture._contextReferences"]], "_dependencyvertex (pyvhdlparser.documentmodel.designunit.architecture.architecture attribute)": [[196, "pyVHDLParser.DocumentModel.DesignUnit.Architecture.Architecture._dependencyVertex"]], "_documentation (pyvhdlparser.documentmodel.designunit.architecture.architecture attribute)": [[196, "pyVHDLParser.DocumentModel.DesignUnit.Architecture.Architecture._documentation"]], "_hierarchyvertex (pyvhdlparser.documentmodel.designunit.architecture.architecture attribute)": [[196, "pyVHDLParser.DocumentModel.DesignUnit.Architecture.Architecture._hierarchyVertex"]], "_identifier (pyvhdlparser.documentmodel.designunit.architecture.architecture attribute)": [[196, "pyVHDLParser.DocumentModel.DesignUnit.Architecture.Architecture._identifier"]], "_library (pyvhdlparser.documentmodel.designunit.architecture.architecture attribute)": [[196, "pyVHDLParser.DocumentModel.DesignUnit.Architecture.Architecture._library"]], "_libraryreferences (pyvhdlparser.documentmodel.designunit.architecture.architecture attribute)": [[196, "pyVHDLParser.DocumentModel.DesignUnit.Architecture.Architecture._libraryReferences"]], "_normalizedidentifier (pyvhdlparser.documentmodel.designunit.architecture.architecture attribute)": [[196, "pyVHDLParser.DocumentModel.DesignUnit.Architecture.Architecture._normalizedIdentifier"]], "_packagereferences (pyvhdlparser.documentmodel.designunit.architecture.architecture attribute)": [[196, "pyVHDLParser.DocumentModel.DesignUnit.Architecture.Architecture._packageReferences"]], "_parent (pyvhdlparser.documentmodel.designunit.architecture.architecture attribute)": [[196, "pyVHDLParser.DocumentModel.DesignUnit.Architecture.Architecture._parent"]], "_referencedcontexts (pyvhdlparser.documentmodel.designunit.architecture.architecture attribute)": [[196, "pyVHDLParser.DocumentModel.DesignUnit.Architecture.Architecture._referencedContexts"]], "_referencedlibraries (pyvhdlparser.documentmodel.designunit.architecture.architecture attribute)": [[196, "pyVHDLParser.DocumentModel.DesignUnit.Architecture.Architecture._referencedLibraries"]], "_referencedpackages (pyvhdlparser.documentmodel.designunit.architecture.architecture attribute)": [[196, "pyVHDLParser.DocumentModel.DesignUnit.Architecture.Architecture._referencedPackages"]], "pyvhdlparser.documentmodel.designunit.architecture": [[196, "module-pyVHDLParser.DocumentModel.DesignUnit.Architecture"]], "context (class in pyvhdlparser.documentmodel.designunit.context)": [[197, "pyVHDLParser.DocumentModel.DesignUnit.Context.Context"]], "contextitems (pyvhdlparser.documentmodel.designunit.context.context property)": [[197, "pyVHDLParser.DocumentModel.DesignUnit.Context.Context.ContextItems"]], "contextreferences (pyvhdlparser.documentmodel.designunit.context.context property)": [[197, "pyVHDLParser.DocumentModel.DesignUnit.Context.Context.ContextReferences"]], "documentation (pyvhdlparser.documentmodel.designunit.context.context property)": [[197, "pyVHDLParser.DocumentModel.DesignUnit.Context.Context.Documentation"]], "identifier (pyvhdlparser.documentmodel.designunit.context.context property)": [[197, "pyVHDLParser.DocumentModel.DesignUnit.Context.Context.Identifier"]], "libraryreferences (pyvhdlparser.documentmodel.designunit.context.context property)": [[197, "pyVHDLParser.DocumentModel.DesignUnit.Context.Context.LibraryReferences"]], "normalizedidentifier (pyvhdlparser.documentmodel.designunit.context.context property)": [[197, "pyVHDLParser.DocumentModel.DesignUnit.Context.Context.NormalizedIdentifier"]], "packagereferences (pyvhdlparser.documentmodel.designunit.context.context property)": [[197, "pyVHDLParser.DocumentModel.DesignUnit.Context.Context.PackageReferences"]], "parent (pyvhdlparser.documentmodel.designunit.context.context property)": [[197, "pyVHDLParser.DocumentModel.DesignUnit.Context.Context.Parent"]], "__init__() (pyvhdlparser.documentmodel.designunit.context.context method)": [[197, "pyVHDLParser.DocumentModel.DesignUnit.Context.Context.__init__"]], "__str__() (pyvhdlparser.documentmodel.designunit.context.context method)": [[197, "pyVHDLParser.DocumentModel.DesignUnit.Context.Context.__str__"]], "_contextitems (pyvhdlparser.documentmodel.designunit.context.context attribute)": [[197, "pyVHDLParser.DocumentModel.DesignUnit.Context.Context._contextItems"]], "_contextreferences (pyvhdlparser.documentmodel.designunit.context.context attribute)": [[197, "pyVHDLParser.DocumentModel.DesignUnit.Context.Context._contextReferences"]], "_dependencyvertex (pyvhdlparser.documentmodel.designunit.context.context attribute)": [[197, "pyVHDLParser.DocumentModel.DesignUnit.Context.Context._dependencyVertex"]], "_documentation (pyvhdlparser.documentmodel.designunit.context.context attribute)": [[197, "pyVHDLParser.DocumentModel.DesignUnit.Context.Context._documentation"]], "_hierarchyvertex (pyvhdlparser.documentmodel.designunit.context.context attribute)": [[197, "pyVHDLParser.DocumentModel.DesignUnit.Context.Context._hierarchyVertex"]], "_identifier (pyvhdlparser.documentmodel.designunit.context.context attribute)": [[197, "pyVHDLParser.DocumentModel.DesignUnit.Context.Context._identifier"]], "_library (pyvhdlparser.documentmodel.designunit.context.context attribute)": [[197, "pyVHDLParser.DocumentModel.DesignUnit.Context.Context._library"]], "_libraryreferences (pyvhdlparser.documentmodel.designunit.context.context attribute)": [[197, "pyVHDLParser.DocumentModel.DesignUnit.Context.Context._libraryReferences"]], "_normalizedidentifier (pyvhdlparser.documentmodel.designunit.context.context attribute)": [[197, "pyVHDLParser.DocumentModel.DesignUnit.Context.Context._normalizedIdentifier"]], "_packagereferences (pyvhdlparser.documentmodel.designunit.context.context attribute)": [[197, "pyVHDLParser.DocumentModel.DesignUnit.Context.Context._packageReferences"]], "_parent (pyvhdlparser.documentmodel.designunit.context.context attribute)": [[197, "pyVHDLParser.DocumentModel.DesignUnit.Context.Context._parent"]], "_referencedcontexts (pyvhdlparser.documentmodel.designunit.context.context attribute)": [[197, "pyVHDLParser.DocumentModel.DesignUnit.Context.Context._referencedContexts"]], "_referencedlibraries (pyvhdlparser.documentmodel.designunit.context.context attribute)": [[197, "pyVHDLParser.DocumentModel.DesignUnit.Context.Context._referencedLibraries"]], "_referencedpackages (pyvhdlparser.documentmodel.designunit.context.context attribute)": [[197, "pyVHDLParser.DocumentModel.DesignUnit.Context.Context._referencedPackages"]], "pyvhdlparser.documentmodel.designunit.context": [[197, "module-pyVHDLParser.DocumentModel.DesignUnit.Context"]], "contextitems (pyvhdlparser.documentmodel.designunit.entity.entity property)": [[198, "pyVHDLParser.DocumentModel.DesignUnit.Entity.Entity.ContextItems"]], "contextreferences (pyvhdlparser.documentmodel.designunit.entity.entity property)": [[198, "pyVHDLParser.DocumentModel.DesignUnit.Entity.Entity.ContextReferences"]], "documentation (pyvhdlparser.documentmodel.designunit.entity.entity property)": [[198, "pyVHDLParser.DocumentModel.DesignUnit.Entity.Entity.Documentation"]], "entity (class in pyvhdlparser.documentmodel.designunit.entity)": [[198, "pyVHDLParser.DocumentModel.DesignUnit.Entity.Entity"]], "identifier (pyvhdlparser.documentmodel.designunit.entity.entity property)": [[198, "pyVHDLParser.DocumentModel.DesignUnit.Entity.Entity.Identifier"]], "libraryreferences (pyvhdlparser.documentmodel.designunit.entity.entity property)": [[198, "pyVHDLParser.DocumentModel.DesignUnit.Entity.Entity.LibraryReferences"]], "normalizedidentifier (pyvhdlparser.documentmodel.designunit.entity.entity property)": [[198, "pyVHDLParser.DocumentModel.DesignUnit.Entity.Entity.NormalizedIdentifier"]], "packagereferences (pyvhdlparser.documentmodel.designunit.entity.entity property)": [[198, "pyVHDLParser.DocumentModel.DesignUnit.Entity.Entity.PackageReferences"]], "parent (pyvhdlparser.documentmodel.designunit.entity.entity property)": [[198, "pyVHDLParser.DocumentModel.DesignUnit.Entity.Entity.Parent"]], "__init__() (pyvhdlparser.documentmodel.designunit.entity.entity method)": [[198, "pyVHDLParser.DocumentModel.DesignUnit.Entity.Entity.__init__"]], "__repr__() (pyvhdlparser.documentmodel.designunit.entity.entity method)": [[198, "pyVHDLParser.DocumentModel.DesignUnit.Entity.Entity.__repr__"]], "__str__() (pyvhdlparser.documentmodel.designunit.entity.entity method)": [[198, "pyVHDLParser.DocumentModel.DesignUnit.Entity.Entity.__str__"]], "_contextitems (pyvhdlparser.documentmodel.designunit.entity.entity attribute)": [[198, "pyVHDLParser.DocumentModel.DesignUnit.Entity.Entity._contextItems"]], "_contextreferences (pyvhdlparser.documentmodel.designunit.entity.entity attribute)": [[198, "pyVHDLParser.DocumentModel.DesignUnit.Entity.Entity._contextReferences"]], "_dependencyvertex (pyvhdlparser.documentmodel.designunit.entity.entity attribute)": [[198, "pyVHDLParser.DocumentModel.DesignUnit.Entity.Entity._dependencyVertex"]], "_documentation (pyvhdlparser.documentmodel.designunit.entity.entity attribute)": [[198, "pyVHDLParser.DocumentModel.DesignUnit.Entity.Entity._documentation"]], "_hierarchyvertex (pyvhdlparser.documentmodel.designunit.entity.entity attribute)": [[198, "pyVHDLParser.DocumentModel.DesignUnit.Entity.Entity._hierarchyVertex"]], "_identifier (pyvhdlparser.documentmodel.designunit.entity.entity attribute)": [[198, "pyVHDLParser.DocumentModel.DesignUnit.Entity.Entity._identifier"]], "_library (pyvhdlparser.documentmodel.designunit.entity.entity attribute)": [[198, "pyVHDLParser.DocumentModel.DesignUnit.Entity.Entity._library"]], "_libraryreferences (pyvhdlparser.documentmodel.designunit.entity.entity attribute)": [[198, "pyVHDLParser.DocumentModel.DesignUnit.Entity.Entity._libraryReferences"]], "_normalizedidentifier (pyvhdlparser.documentmodel.designunit.entity.entity attribute)": [[198, "pyVHDLParser.DocumentModel.DesignUnit.Entity.Entity._normalizedIdentifier"]], "_packagereferences (pyvhdlparser.documentmodel.designunit.entity.entity attribute)": [[198, "pyVHDLParser.DocumentModel.DesignUnit.Entity.Entity._packageReferences"]], "_parent (pyvhdlparser.documentmodel.designunit.entity.entity attribute)": [[198, "pyVHDLParser.DocumentModel.DesignUnit.Entity.Entity._parent"]], "_referencedcontexts (pyvhdlparser.documentmodel.designunit.entity.entity attribute)": [[198, "pyVHDLParser.DocumentModel.DesignUnit.Entity.Entity._referencedContexts"]], "_referencedlibraries (pyvhdlparser.documentmodel.designunit.entity.entity attribute)": [[198, "pyVHDLParser.DocumentModel.DesignUnit.Entity.Entity._referencedLibraries"]], "_referencedpackages (pyvhdlparser.documentmodel.designunit.entity.entity attribute)": [[198, "pyVHDLParser.DocumentModel.DesignUnit.Entity.Entity._referencedPackages"]], "pyvhdlparser.documentmodel.designunit.entity": [[198, "module-pyVHDLParser.DocumentModel.DesignUnit.Entity"]], "contextitems (pyvhdlparser.documentmodel.designunit.package.package property)": [[199, "pyVHDLParser.DocumentModel.DesignUnit.Package.Package.ContextItems"]], "contextreferences (pyvhdlparser.documentmodel.designunit.package.package property)": [[199, "pyVHDLParser.DocumentModel.DesignUnit.Package.Package.ContextReferences"]], "documentation (pyvhdlparser.documentmodel.designunit.package.package property)": [[199, "pyVHDLParser.DocumentModel.DesignUnit.Package.Package.Documentation"]], "identifier (pyvhdlparser.documentmodel.designunit.package.package property)": [[199, "pyVHDLParser.DocumentModel.DesignUnit.Package.Package.Identifier"]], "libraryreferences (pyvhdlparser.documentmodel.designunit.package.package property)": [[199, "pyVHDLParser.DocumentModel.DesignUnit.Package.Package.LibraryReferences"]], "normalizedidentifier (pyvhdlparser.documentmodel.designunit.package.package property)": [[199, "pyVHDLParser.DocumentModel.DesignUnit.Package.Package.NormalizedIdentifier"]], "package (class in pyvhdlparser.documentmodel.designunit.package)": [[199, "pyVHDLParser.DocumentModel.DesignUnit.Package.Package"]], "packagereferences (pyvhdlparser.documentmodel.designunit.package.package property)": [[199, "pyVHDLParser.DocumentModel.DesignUnit.Package.Package.PackageReferences"]], "parent (pyvhdlparser.documentmodel.designunit.package.package property)": [[199, "pyVHDLParser.DocumentModel.DesignUnit.Package.Package.Parent"]], "__init__() (pyvhdlparser.documentmodel.designunit.package.package method)": [[199, "pyVHDLParser.DocumentModel.DesignUnit.Package.Package.__init__"]], "__repr__() (pyvhdlparser.documentmodel.designunit.package.package method)": [[199, "pyVHDLParser.DocumentModel.DesignUnit.Package.Package.__repr__"]], "__str__() (pyvhdlparser.documentmodel.designunit.package.package method)": [[199, "pyVHDLParser.DocumentModel.DesignUnit.Package.Package.__str__"]], "_contextitems (pyvhdlparser.documentmodel.designunit.package.package attribute)": [[199, "pyVHDLParser.DocumentModel.DesignUnit.Package.Package._contextItems"]], "_contextreferences (pyvhdlparser.documentmodel.designunit.package.package attribute)": [[199, "pyVHDLParser.DocumentModel.DesignUnit.Package.Package._contextReferences"]], "_dependencyvertex (pyvhdlparser.documentmodel.designunit.package.package attribute)": [[199, "pyVHDLParser.DocumentModel.DesignUnit.Package.Package._dependencyVertex"]], "_documentation (pyvhdlparser.documentmodel.designunit.package.package attribute)": [[199, "pyVHDLParser.DocumentModel.DesignUnit.Package.Package._documentation"]], "_hierarchyvertex (pyvhdlparser.documentmodel.designunit.package.package attribute)": [[199, "pyVHDLParser.DocumentModel.DesignUnit.Package.Package._hierarchyVertex"]], "_identifier (pyvhdlparser.documentmodel.designunit.package.package attribute)": [[199, "pyVHDLParser.DocumentModel.DesignUnit.Package.Package._identifier"]], "_library (pyvhdlparser.documentmodel.designunit.package.package attribute)": [[199, "pyVHDLParser.DocumentModel.DesignUnit.Package.Package._library"]], "_libraryreferences (pyvhdlparser.documentmodel.designunit.package.package attribute)": [[199, "pyVHDLParser.DocumentModel.DesignUnit.Package.Package._libraryReferences"]], "_normalizedidentifier (pyvhdlparser.documentmodel.designunit.package.package attribute)": [[199, "pyVHDLParser.DocumentModel.DesignUnit.Package.Package._normalizedIdentifier"]], "_packagereferences (pyvhdlparser.documentmodel.designunit.package.package attribute)": [[199, "pyVHDLParser.DocumentModel.DesignUnit.Package.Package._packageReferences"]], "_parent (pyvhdlparser.documentmodel.designunit.package.package attribute)": [[199, "pyVHDLParser.DocumentModel.DesignUnit.Package.Package._parent"]], "_referencedcontexts (pyvhdlparser.documentmodel.designunit.package.package attribute)": [[199, "pyVHDLParser.DocumentModel.DesignUnit.Package.Package._referencedContexts"]], "_referencedlibraries (pyvhdlparser.documentmodel.designunit.package.package attribute)": [[199, "pyVHDLParser.DocumentModel.DesignUnit.Package.Package._referencedLibraries"]], "_referencedpackages (pyvhdlparser.documentmodel.designunit.package.package attribute)": [[199, "pyVHDLParser.DocumentModel.DesignUnit.Package.Package._referencedPackages"]], "pyvhdlparser.documentmodel.designunit.package": [[199, "module-pyVHDLParser.DocumentModel.DesignUnit.Package"]], "contextitems (pyvhdlparser.documentmodel.designunit.packagebody.packagebody property)": [[200, "pyVHDLParser.DocumentModel.DesignUnit.PackageBody.PackageBody.ContextItems"]], "contextreferences (pyvhdlparser.documentmodel.designunit.packagebody.packagebody property)": [[200, "pyVHDLParser.DocumentModel.DesignUnit.PackageBody.PackageBody.ContextReferences"]], "documentation (pyvhdlparser.documentmodel.designunit.packagebody.packagebody property)": [[200, "pyVHDLParser.DocumentModel.DesignUnit.PackageBody.PackageBody.Documentation"]], "identifier (pyvhdlparser.documentmodel.designunit.packagebody.packagebody property)": [[200, "pyVHDLParser.DocumentModel.DesignUnit.PackageBody.PackageBody.Identifier"]], "libraryreferences (pyvhdlparser.documentmodel.designunit.packagebody.packagebody property)": [[200, "pyVHDLParser.DocumentModel.DesignUnit.PackageBody.PackageBody.LibraryReferences"]], "normalizedidentifier (pyvhdlparser.documentmodel.designunit.packagebody.packagebody property)": [[200, "pyVHDLParser.DocumentModel.DesignUnit.PackageBody.PackageBody.NormalizedIdentifier"]], "packagebody (class in pyvhdlparser.documentmodel.designunit.packagebody)": [[200, "pyVHDLParser.DocumentModel.DesignUnit.PackageBody.PackageBody"]], "packagereferences (pyvhdlparser.documentmodel.designunit.packagebody.packagebody property)": [[200, "pyVHDLParser.DocumentModel.DesignUnit.PackageBody.PackageBody.PackageReferences"]], "parent (pyvhdlparser.documentmodel.designunit.packagebody.packagebody property)": [[200, "pyVHDLParser.DocumentModel.DesignUnit.PackageBody.PackageBody.Parent"]], "__init__() (pyvhdlparser.documentmodel.designunit.packagebody.packagebody method)": [[200, "pyVHDLParser.DocumentModel.DesignUnit.PackageBody.PackageBody.__init__"]], "__repr__() (pyvhdlparser.documentmodel.designunit.packagebody.packagebody method)": [[200, "pyVHDLParser.DocumentModel.DesignUnit.PackageBody.PackageBody.__repr__"]], "__str__() (pyvhdlparser.documentmodel.designunit.packagebody.packagebody method)": [[200, "pyVHDLParser.DocumentModel.DesignUnit.PackageBody.PackageBody.__str__"]], "_contextitems (pyvhdlparser.documentmodel.designunit.packagebody.packagebody attribute)": [[200, "pyVHDLParser.DocumentModel.DesignUnit.PackageBody.PackageBody._contextItems"]], "_contextreferences (pyvhdlparser.documentmodel.designunit.packagebody.packagebody attribute)": [[200, "pyVHDLParser.DocumentModel.DesignUnit.PackageBody.PackageBody._contextReferences"]], "_dependencyvertex (pyvhdlparser.documentmodel.designunit.packagebody.packagebody attribute)": [[200, "pyVHDLParser.DocumentModel.DesignUnit.PackageBody.PackageBody._dependencyVertex"]], "_documentation (pyvhdlparser.documentmodel.designunit.packagebody.packagebody attribute)": [[200, "pyVHDLParser.DocumentModel.DesignUnit.PackageBody.PackageBody._documentation"]], "_hierarchyvertex (pyvhdlparser.documentmodel.designunit.packagebody.packagebody attribute)": [[200, "pyVHDLParser.DocumentModel.DesignUnit.PackageBody.PackageBody._hierarchyVertex"]], "_identifier (pyvhdlparser.documentmodel.designunit.packagebody.packagebody attribute)": [[200, "pyVHDLParser.DocumentModel.DesignUnit.PackageBody.PackageBody._identifier"]], "_library (pyvhdlparser.documentmodel.designunit.packagebody.packagebody attribute)": [[200, "pyVHDLParser.DocumentModel.DesignUnit.PackageBody.PackageBody._library"]], "_libraryreferences (pyvhdlparser.documentmodel.designunit.packagebody.packagebody attribute)": [[200, "pyVHDLParser.DocumentModel.DesignUnit.PackageBody.PackageBody._libraryReferences"]], "_normalizedidentifier (pyvhdlparser.documentmodel.designunit.packagebody.packagebody attribute)": [[200, "pyVHDLParser.DocumentModel.DesignUnit.PackageBody.PackageBody._normalizedIdentifier"]], "_packagereferences (pyvhdlparser.documentmodel.designunit.packagebody.packagebody attribute)": [[200, "pyVHDLParser.DocumentModel.DesignUnit.PackageBody.PackageBody._packageReferences"]], "_parent (pyvhdlparser.documentmodel.designunit.packagebody.packagebody attribute)": [[200, "pyVHDLParser.DocumentModel.DesignUnit.PackageBody.PackageBody._parent"]], "_referencedcontexts (pyvhdlparser.documentmodel.designunit.packagebody.packagebody attribute)": [[200, "pyVHDLParser.DocumentModel.DesignUnit.PackageBody.PackageBody._referencedContexts"]], "_referencedlibraries (pyvhdlparser.documentmodel.designunit.packagebody.packagebody attribute)": [[200, "pyVHDLParser.DocumentModel.DesignUnit.PackageBody.PackageBody._referencedLibraries"]], "_referencedpackages (pyvhdlparser.documentmodel.designunit.packagebody.packagebody attribute)": [[200, "pyVHDLParser.DocumentModel.DesignUnit.PackageBody.PackageBody._referencedPackages"]], "pyvhdlparser.documentmodel.designunit.packagebody": [[200, "module-pyVHDLParser.DocumentModel.DesignUnit.PackageBody"]], "pyvhdlparser.documentmodel.objectdeclaration": [[201, "module-pyVHDLParser.DocumentModel.ObjectDeclaration"]], "pyvhdlparser.documentmodel.reference": [[202, "module-pyVHDLParser.DocumentModel.Reference"]], "pyvhdlparser.documentmodel.sequential": [[203, "module-pyVHDLParser.DocumentModel.Sequential"]], "pyvhdlparser.documentmodel.sequential.function": [[204, "module-pyVHDLParser.DocumentModel.Sequential.Function"]], "pyvhdlparser.filters": [[205, "module-pyVHDLParser.Filters"]], "pyvhdlparser.filters.comment": [[206, "module-pyVHDLParser.Filters.Comment"]], "blockiterator (class in pyvhdlparser.groups)": [[207, "pyVHDLParser.Groups.BlockIterator"]], "blocktogroupparser (class in pyvhdlparser.groups)": [[207, "pyVHDLParser.Groups.BlockToGroupParser"]], "endblock (pyvhdlparser.groups.endofdocumentgroup attribute)": [[207, "pyVHDLParser.Groups.EndOfDocumentGroup.EndBlock"]], "endblock (pyvhdlparser.groups.endofgroup attribute)": [[207, "pyVHDLParser.Groups.EndOfGroup.EndBlock"]], "endblock (pyvhdlparser.groups.endofsnippetgroup attribute)": [[207, "pyVHDLParser.Groups.EndOfSnippetGroup.EndBlock"]], "endblock (pyvhdlparser.groups.group attribute)": [[207, "pyVHDLParser.Groups.Group.EndBlock"]], "endblock (pyvhdlparser.groups.startofdocumentgroup attribute)": [[207, "pyVHDLParser.Groups.StartOfDocumentGroup.EndBlock"]], "endblock (pyvhdlparser.groups.startofgroup attribute)": [[207, "pyVHDLParser.Groups.StartOfGroup.EndBlock"]], "endblock (pyvhdlparser.groups.startofsnippetgroup attribute)": [[207, "pyVHDLParser.Groups.StartOfSnippetGroup.EndBlock"]], "endofdocumentgroup (class in pyvhdlparser.groups)": [[207, "pyVHDLParser.Groups.EndOfDocumentGroup"]], "endofgroup (class in pyvhdlparser.groups)": [[207, "pyVHDLParser.Groups.EndOfGroup"]], "endofsnippetgroup (class in pyvhdlparser.groups)": [[207, "pyVHDLParser.Groups.EndOfSnippetGroup"]], "group (class in pyvhdlparser.groups)": [[207, "pyVHDLParser.Groups.Group"]], "groupparserexception": [[207, "pyVHDLParser.Groups.GroupParserException"]], "innergroup (pyvhdlparser.groups.endofdocumentgroup attribute)": [[207, "pyVHDLParser.Groups.EndOfDocumentGroup.InnerGroup"]], "innergroup (pyvhdlparser.groups.endofgroup attribute)": [[207, "pyVHDLParser.Groups.EndOfGroup.InnerGroup"]], "innergroup (pyvhdlparser.groups.endofsnippetgroup attribute)": [[207, "pyVHDLParser.Groups.EndOfSnippetGroup.InnerGroup"]], "innergroup (pyvhdlparser.groups.group attribute)": [[207, "pyVHDLParser.Groups.Group.InnerGroup"]], "innergroup (pyvhdlparser.groups.startofdocumentgroup attribute)": [[207, "pyVHDLParser.Groups.StartOfDocumentGroup.InnerGroup"]], "innergroup (pyvhdlparser.groups.startofgroup attribute)": [[207, "pyVHDLParser.Groups.StartOfGroup.InnerGroup"]], "innergroup (pyvhdlparser.groups.startofsnippetgroup attribute)": [[207, "pyVHDLParser.Groups.StartOfSnippetGroup.InnerGroup"]], "metagroup (class in pyvhdlparser.groups)": [[207, "pyVHDLParser.Groups.MetaGroup"]], "multipart (pyvhdlparser.groups.endofdocumentgroup attribute)": [[207, "pyVHDLParser.Groups.EndOfDocumentGroup.MultiPart"]], "multipart (pyvhdlparser.groups.endofgroup attribute)": [[207, "pyVHDLParser.Groups.EndOfGroup.MultiPart"]], "multipart (pyvhdlparser.groups.endofsnippetgroup attribute)": [[207, "pyVHDLParser.Groups.EndOfSnippetGroup.MultiPart"]], "multipart (pyvhdlparser.groups.group attribute)": [[207, "pyVHDLParser.Groups.Group.MultiPart"]], "multipart (pyvhdlparser.groups.startofdocumentgroup attribute)": [[207, "pyVHDLParser.Groups.StartOfDocumentGroup.MultiPart"]], "multipart (pyvhdlparser.groups.startofgroup attribute)": [[207, "pyVHDLParser.Groups.StartOfGroup.MultiPart"]], "multipart (pyvhdlparser.groups.startofsnippetgroup attribute)": [[207, "pyVHDLParser.Groups.StartOfSnippetGroup.MultiPart"]], "nextgroup (pyvhdlparser.groups.endofdocumentgroup attribute)": [[207, "pyVHDLParser.Groups.EndOfDocumentGroup.NextGroup"]], "nextgroup (pyvhdlparser.groups.endofgroup attribute)": [[207, "pyVHDLParser.Groups.EndOfGroup.NextGroup"]], "nextgroup (pyvhdlparser.groups.endofsnippetgroup attribute)": [[207, "pyVHDLParser.Groups.EndOfSnippetGroup.NextGroup"]], "nextgroup (pyvhdlparser.groups.group attribute)": [[207, "pyVHDLParser.Groups.Group.NextGroup"]], "nextgroup (pyvhdlparser.groups.startofdocumentgroup attribute)": [[207, "pyVHDLParser.Groups.StartOfDocumentGroup.NextGroup"]], "nextgroup (pyvhdlparser.groups.startofgroup attribute)": [[207, "pyVHDLParser.Groups.StartOfGroup.NextGroup"]], "nextgroup (pyvhdlparser.groups.startofsnippetgroup attribute)": [[207, "pyVHDLParser.Groups.StartOfSnippetGroup.NextGroup"]], "startblock (pyvhdlparser.groups.endofdocumentgroup attribute)": [[207, "pyVHDLParser.Groups.EndOfDocumentGroup.StartBlock"]], "startblock (pyvhdlparser.groups.endofgroup attribute)": [[207, "pyVHDLParser.Groups.EndOfGroup.StartBlock"]], "startblock (pyvhdlparser.groups.endofsnippetgroup attribute)": [[207, "pyVHDLParser.Groups.EndOfSnippetGroup.StartBlock"]], "startblock (pyvhdlparser.groups.group attribute)": [[207, "pyVHDLParser.Groups.Group.StartBlock"]], "startblock (pyvhdlparser.groups.startofdocumentgroup attribute)": [[207, "pyVHDLParser.Groups.StartOfDocumentGroup.StartBlock"]], "startblock (pyvhdlparser.groups.startofgroup attribute)": [[207, "pyVHDLParser.Groups.StartOfGroup.StartBlock"]], "startblock (pyvhdlparser.groups.startofsnippetgroup attribute)": [[207, "pyVHDLParser.Groups.StartOfSnippetGroup.StartBlock"]], "startofdocumentgroup (class in pyvhdlparser.groups)": [[207, "pyVHDLParser.Groups.StartOfDocumentGroup"]], "startofgroup (class in pyvhdlparser.groups)": [[207, "pyVHDLParser.Groups.StartOfGroup"]], "startofsnippetgroup (class in pyvhdlparser.groups)": [[207, "pyVHDLParser.Groups.StartOfSnippetGroup"]], "__base__ (pyvhdlparser.groups.metagroup attribute)": [[207, "pyVHDLParser.Groups.MetaGroup.__base__"]], "__call__() (pyvhdlparser.groups.blocktogroupparser method)": [[207, "pyVHDLParser.Groups.BlockToGroupParser.__call__"]], "__call__() (pyvhdlparser.groups.metagroup method)": [[207, "pyVHDLParser.Groups.MetaGroup.__call__"]], "__delattr__() (pyvhdlparser.groups.metagroup method)": [[207, "pyVHDLParser.Groups.MetaGroup.__delattr__"]], "__dir__() (pyvhdlparser.groups.metagroup method)": [[207, "pyVHDLParser.Groups.MetaGroup.__dir__"]], "__eq__() (pyvhdlparser.groups.blocktogroupparser method)": [[207, "pyVHDLParser.Groups.BlockToGroupParser.__eq__"]], "__getattribute__() (pyvhdlparser.groups.metagroup method)": [[207, "pyVHDLParser.Groups.MetaGroup.__getattribute__"]], "__hash__ (pyvhdlparser.groups.blocktogroupparser attribute)": [[207, "pyVHDLParser.Groups.BlockToGroupParser.__hash__"]], "__init__() (pyvhdlparser.groups.blockiterator method)": [[207, "pyVHDLParser.Groups.BlockIterator.__init__"]], "__init__() (pyvhdlparser.groups.blocktogroupparser method)": [[207, "pyVHDLParser.Groups.BlockToGroupParser.__init__"]], "__init__() (pyvhdlparser.groups.endofdocumentgroup method)": [[207, "pyVHDLParser.Groups.EndOfDocumentGroup.__init__"]], "__init__() (pyvhdlparser.groups.endofgroup method)": [[207, "pyVHDLParser.Groups.EndOfGroup.__init__"]], "__init__() (pyvhdlparser.groups.endofsnippetgroup method)": [[207, "pyVHDLParser.Groups.EndOfSnippetGroup.__init__"]], "__init__() (pyvhdlparser.groups.group method)": [[207, "pyVHDLParser.Groups.Group.__init__"]], "__init__() (pyvhdlparser.groups.groupparserexception method)": [[207, "pyVHDLParser.Groups.GroupParserException.__init__"]], "__init__() (pyvhdlparser.groups.metagroup method)": [[207, "pyVHDLParser.Groups.MetaGroup.__init__"]], "__init__() (pyvhdlparser.groups.startofdocumentgroup method)": [[207, "pyVHDLParser.Groups.StartOfDocumentGroup.__init__"]], "__init__() (pyvhdlparser.groups.startofgroup method)": [[207, "pyVHDLParser.Groups.StartOfGroup.__init__"]], "__init__() (pyvhdlparser.groups.startofsnippetgroup method)": [[207, "pyVHDLParser.Groups.StartOfSnippetGroup.__init__"]], "__instancecheck__() (pyvhdlparser.groups.metagroup method)": [[207, "pyVHDLParser.Groups.MetaGroup.__instancecheck__"]], "__ne__() (pyvhdlparser.groups.blocktogroupparser method)": [[207, "pyVHDLParser.Groups.BlockToGroupParser.__ne__"]], "__new__() (pyvhdlparser.groups.groupparserexception method)": [[207, "pyVHDLParser.Groups.GroupParserException.__new__"]], "__new__() (pyvhdlparser.groups.metagroup static method)": [[207, "pyVHDLParser.Groups.MetaGroup.__new__"]], "__or__() (pyvhdlparser.groups.metagroup method)": [[207, "pyVHDLParser.Groups.MetaGroup.__or__"]], "__prepare__() (pyvhdlparser.groups.metagroup method)": [[207, "pyVHDLParser.Groups.MetaGroup.__prepare__"]], "__repr__() (pyvhdlparser.groups.endofdocumentgroup method)": [[207, "pyVHDLParser.Groups.EndOfDocumentGroup.__repr__"]], "__repr__() (pyvhdlparser.groups.endofgroup method)": [[207, "pyVHDLParser.Groups.EndOfGroup.__repr__"]], "__repr__() (pyvhdlparser.groups.endofsnippetgroup method)": [[207, "pyVHDLParser.Groups.EndOfSnippetGroup.__repr__"]], "__repr__() (pyvhdlparser.groups.group method)": [[207, "pyVHDLParser.Groups.Group.__repr__"]], "__repr__() (pyvhdlparser.groups.metagroup method)": [[207, "pyVHDLParser.Groups.MetaGroup.__repr__"]], "__repr__() (pyvhdlparser.groups.startofdocumentgroup method)": [[207, "pyVHDLParser.Groups.StartOfDocumentGroup.__repr__"]], "__repr__() (pyvhdlparser.groups.startofgroup method)": [[207, "pyVHDLParser.Groups.StartOfGroup.__repr__"]], "__repr__() (pyvhdlparser.groups.startofsnippetgroup method)": [[207, "pyVHDLParser.Groups.StartOfSnippetGroup.__repr__"]], "__ror__() (pyvhdlparser.groups.metagroup method)": [[207, "pyVHDLParser.Groups.MetaGroup.__ror__"]], "__setattr__() (pyvhdlparser.groups.metagroup method)": [[207, "pyVHDLParser.Groups.MetaGroup.__setattr__"]], "__sizeof__() (pyvhdlparser.groups.metagroup method)": [[207, "pyVHDLParser.Groups.MetaGroup.__sizeof__"]], "__str__() (pyvhdlparser.groups.blocktogroupparser method)": [[207, "pyVHDLParser.Groups.BlockToGroupParser.__str__"]], "__str__() (pyvhdlparser.groups.endofdocumentgroup method)": [[207, "pyVHDLParser.Groups.EndOfDocumentGroup.__str__"]], "__str__() (pyvhdlparser.groups.endofgroup method)": [[207, "pyVHDLParser.Groups.EndOfGroup.__str__"]], "__str__() (pyvhdlparser.groups.endofsnippetgroup method)": [[207, "pyVHDLParser.Groups.EndOfSnippetGroup.__str__"]], "__str__() (pyvhdlparser.groups.group method)": [[207, "pyVHDLParser.Groups.Group.__str__"]], "__str__() (pyvhdlparser.groups.startofdocumentgroup method)": [[207, "pyVHDLParser.Groups.StartOfDocumentGroup.__str__"]], "__str__() (pyvhdlparser.groups.startofgroup method)": [[207, "pyVHDLParser.Groups.StartOfGroup.__str__"]], "__str__() (pyvhdlparser.groups.startofsnippetgroup method)": [[207, "pyVHDLParser.Groups.StartOfSnippetGroup.__str__"]], "__subclasscheck__() (pyvhdlparser.groups.metagroup method)": [[207, "pyVHDLParser.Groups.MetaGroup.__subclasscheck__"]], "__subclasses__() (pyvhdlparser.groups.metagroup method)": [[207, "pyVHDLParser.Groups.MetaGroup.__subclasses__"]], "__text_signature__ (pyvhdlparser.groups.metagroup attribute)": [[207, "pyVHDLParser.Groups.MetaGroup.__text_signature__"]], "_checkforabstractmethods() (pyvhdlparser.groups.metagroup class method)": [[207, "pyVHDLParser.Groups.MetaGroup._checkForAbstractMethods"]], "_previousgroup (pyvhdlparser.groups.endofdocumentgroup attribute)": [[207, "pyVHDLParser.Groups.EndOfDocumentGroup._previousGroup"]], "_previousgroup (pyvhdlparser.groups.endofgroup attribute)": [[207, "pyVHDLParser.Groups.EndOfGroup._previousGroup"]], "_previousgroup (pyvhdlparser.groups.endofsnippetgroup attribute)": [[207, "pyVHDLParser.Groups.EndOfSnippetGroup._previousGroup"]], "_previousgroup (pyvhdlparser.groups.group attribute)": [[207, "pyVHDLParser.Groups.Group._previousGroup"]], "_previousgroup (pyvhdlparser.groups.startofdocumentgroup attribute)": [[207, "pyVHDLParser.Groups.StartOfDocumentGroup._previousGroup"]], "_previousgroup (pyvhdlparser.groups.startofgroup attribute)": [[207, "pyVHDLParser.Groups.StartOfGroup._previousGroup"]], "_previousgroup (pyvhdlparser.groups.startofsnippetgroup attribute)": [[207, "pyVHDLParser.Groups.StartOfSnippetGroup._previousGroup"]], "_subgroups (pyvhdlparser.groups.endofdocumentgroup attribute)": [[207, "pyVHDLParser.Groups.EndOfDocumentGroup._subGroups"]], "_subgroups (pyvhdlparser.groups.endofgroup attribute)": [[207, "pyVHDLParser.Groups.EndOfGroup._subGroups"]], "_subgroups (pyvhdlparser.groups.endofsnippetgroup attribute)": [[207, "pyVHDLParser.Groups.EndOfSnippetGroup._subGroups"]], "_subgroups (pyvhdlparser.groups.group attribute)": [[207, "pyVHDLParser.Groups.Group._subGroups"]], "_subgroups (pyvhdlparser.groups.startofdocumentgroup attribute)": [[207, "pyVHDLParser.Groups.StartOfDocumentGroup._subGroups"]], "_subgroups (pyvhdlparser.groups.startofgroup attribute)": [[207, "pyVHDLParser.Groups.StartOfGroup._subGroups"]], "_subgroups (pyvhdlparser.groups.startofsnippetgroup attribute)": [[207, "pyVHDLParser.Groups.StartOfSnippetGroup._subGroups"]], "_wrapnewmethodifabstract() (pyvhdlparser.groups.metagroup static method)": [[207, "pyVHDLParser.Groups.MetaGroup._wrapNewMethodIfAbstract"]], "_wrapnewmethodifsingleton() (pyvhdlparser.groups.metagroup static method)": [[207, "pyVHDLParser.Groups.MetaGroup._wrapNewMethodIfSingleton"]], "mro() (pyvhdlparser.groups.metagroup method)": [[207, "pyVHDLParser.Groups.MetaGroup.mro"]], "pyvhdlparser.groups": [[207, "module-pyVHDLParser.Groups"]], "commentgroup (class in pyvhdlparser.groups.comment)": [[208, "pyVHDLParser.Groups.Comment.CommentGroup"]], "endblock (pyvhdlparser.groups.comment.commentgroup attribute)": [[208, "pyVHDLParser.Groups.Comment.CommentGroup.EndBlock"]], "endblock (pyvhdlparser.groups.comment.whitespacegroup attribute)": [[208, "pyVHDLParser.Groups.Comment.WhitespaceGroup.EndBlock"]], "innergroup (pyvhdlparser.groups.comment.commentgroup attribute)": [[208, "pyVHDLParser.Groups.Comment.CommentGroup.InnerGroup"]], "innergroup (pyvhdlparser.groups.comment.whitespacegroup attribute)": [[208, "pyVHDLParser.Groups.Comment.WhitespaceGroup.InnerGroup"]], "multipart (pyvhdlparser.groups.comment.commentgroup attribute)": [[208, "pyVHDLParser.Groups.Comment.CommentGroup.MultiPart"]], "multipart (pyvhdlparser.groups.comment.whitespacegroup attribute)": [[208, "pyVHDLParser.Groups.Comment.WhitespaceGroup.MultiPart"]], "nextgroup (pyvhdlparser.groups.comment.commentgroup attribute)": [[208, "pyVHDLParser.Groups.Comment.CommentGroup.NextGroup"]], "nextgroup (pyvhdlparser.groups.comment.whitespacegroup attribute)": [[208, "pyVHDLParser.Groups.Comment.WhitespaceGroup.NextGroup"]], "startblock (pyvhdlparser.groups.comment.commentgroup attribute)": [[208, "pyVHDLParser.Groups.Comment.CommentGroup.StartBlock"]], "startblock (pyvhdlparser.groups.comment.whitespacegroup attribute)": [[208, "pyVHDLParser.Groups.Comment.WhitespaceGroup.StartBlock"]], "whitespacegroup (class in pyvhdlparser.groups.comment)": [[208, "pyVHDLParser.Groups.Comment.WhitespaceGroup"]], "__init__() (pyvhdlparser.groups.comment.commentgroup method)": [[208, "pyVHDLParser.Groups.Comment.CommentGroup.__init__"]], "__init__() (pyvhdlparser.groups.comment.whitespacegroup method)": [[208, "pyVHDLParser.Groups.Comment.WhitespaceGroup.__init__"]], "__repr__() (pyvhdlparser.groups.comment.commentgroup method)": [[208, "pyVHDLParser.Groups.Comment.CommentGroup.__repr__"]], "__repr__() (pyvhdlparser.groups.comment.whitespacegroup method)": [[208, "pyVHDLParser.Groups.Comment.WhitespaceGroup.__repr__"]], "__str__() (pyvhdlparser.groups.comment.commentgroup method)": [[208, "pyVHDLParser.Groups.Comment.CommentGroup.__str__"]], "__str__() (pyvhdlparser.groups.comment.whitespacegroup method)": [[208, "pyVHDLParser.Groups.Comment.WhitespaceGroup.__str__"]], "_previousgroup (pyvhdlparser.groups.comment.commentgroup attribute)": [[208, "pyVHDLParser.Groups.Comment.CommentGroup._previousGroup"]], "_previousgroup (pyvhdlparser.groups.comment.whitespacegroup attribute)": [[208, "pyVHDLParser.Groups.Comment.WhitespaceGroup._previousGroup"]], "_subgroups (pyvhdlparser.groups.comment.commentgroup attribute)": [[208, "pyVHDLParser.Groups.Comment.CommentGroup._subGroups"]], "_subgroups (pyvhdlparser.groups.comment.whitespacegroup attribute)": [[208, "pyVHDLParser.Groups.Comment.WhitespaceGroup._subGroups"]], "pyvhdlparser.groups.comment": [[208, "module-pyVHDLParser.Groups.Comment"]], "assertgroup (class in pyvhdlparser.groups.concurrent)": [[209, "pyVHDLParser.Groups.Concurrent.AssertGroup"]], "endblock (pyvhdlparser.groups.concurrent.assertgroup attribute)": [[209, "pyVHDLParser.Groups.Concurrent.AssertGroup.EndBlock"]], "endblock (pyvhdlparser.groups.concurrent.reportgroup attribute)": [[209, "pyVHDLParser.Groups.Concurrent.ReportGroup.EndBlock"]], "endblock (pyvhdlparser.groups.concurrent.signalassignmentgroup attribute)": [[209, "pyVHDLParser.Groups.Concurrent.SignalAssignmentGroup.EndBlock"]], "innergroup (pyvhdlparser.groups.concurrent.assertgroup attribute)": [[209, "pyVHDLParser.Groups.Concurrent.AssertGroup.InnerGroup"]], "innergroup (pyvhdlparser.groups.concurrent.reportgroup attribute)": [[209, "pyVHDLParser.Groups.Concurrent.ReportGroup.InnerGroup"]], "innergroup (pyvhdlparser.groups.concurrent.signalassignmentgroup attribute)": [[209, "pyVHDLParser.Groups.Concurrent.SignalAssignmentGroup.InnerGroup"]], "multipart (pyvhdlparser.groups.concurrent.assertgroup attribute)": [[209, "pyVHDLParser.Groups.Concurrent.AssertGroup.MultiPart"]], "multipart (pyvhdlparser.groups.concurrent.reportgroup attribute)": [[209, "pyVHDLParser.Groups.Concurrent.ReportGroup.MultiPart"]], "multipart (pyvhdlparser.groups.concurrent.signalassignmentgroup attribute)": [[209, "pyVHDLParser.Groups.Concurrent.SignalAssignmentGroup.MultiPart"]], "nextgroup (pyvhdlparser.groups.concurrent.assertgroup attribute)": [[209, "pyVHDLParser.Groups.Concurrent.AssertGroup.NextGroup"]], "nextgroup (pyvhdlparser.groups.concurrent.reportgroup attribute)": [[209, "pyVHDLParser.Groups.Concurrent.ReportGroup.NextGroup"]], "nextgroup (pyvhdlparser.groups.concurrent.signalassignmentgroup attribute)": [[209, "pyVHDLParser.Groups.Concurrent.SignalAssignmentGroup.NextGroup"]], "reportgroup (class in pyvhdlparser.groups.concurrent)": [[209, "pyVHDLParser.Groups.Concurrent.ReportGroup"]], "signalassignmentgroup (class in pyvhdlparser.groups.concurrent)": [[209, "pyVHDLParser.Groups.Concurrent.SignalAssignmentGroup"]], "startblock (pyvhdlparser.groups.concurrent.assertgroup attribute)": [[209, "pyVHDLParser.Groups.Concurrent.AssertGroup.StartBlock"]], "startblock (pyvhdlparser.groups.concurrent.reportgroup attribute)": [[209, "pyVHDLParser.Groups.Concurrent.ReportGroup.StartBlock"]], "startblock (pyvhdlparser.groups.concurrent.signalassignmentgroup attribute)": [[209, "pyVHDLParser.Groups.Concurrent.SignalAssignmentGroup.StartBlock"]], "__init__() (pyvhdlparser.groups.concurrent.assertgroup method)": [[209, "pyVHDLParser.Groups.Concurrent.AssertGroup.__init__"]], "__init__() (pyvhdlparser.groups.concurrent.reportgroup method)": [[209, "pyVHDLParser.Groups.Concurrent.ReportGroup.__init__"]], "__init__() (pyvhdlparser.groups.concurrent.signalassignmentgroup method)": [[209, "pyVHDLParser.Groups.Concurrent.SignalAssignmentGroup.__init__"]], "__repr__() (pyvhdlparser.groups.concurrent.assertgroup method)": [[209, "pyVHDLParser.Groups.Concurrent.AssertGroup.__repr__"]], "__repr__() (pyvhdlparser.groups.concurrent.reportgroup method)": [[209, "pyVHDLParser.Groups.Concurrent.ReportGroup.__repr__"]], "__repr__() (pyvhdlparser.groups.concurrent.signalassignmentgroup method)": [[209, "pyVHDLParser.Groups.Concurrent.SignalAssignmentGroup.__repr__"]], "__str__() (pyvhdlparser.groups.concurrent.assertgroup method)": [[209, "pyVHDLParser.Groups.Concurrent.AssertGroup.__str__"]], "__str__() (pyvhdlparser.groups.concurrent.reportgroup method)": [[209, "pyVHDLParser.Groups.Concurrent.ReportGroup.__str__"]], "__str__() (pyvhdlparser.groups.concurrent.signalassignmentgroup method)": [[209, "pyVHDLParser.Groups.Concurrent.SignalAssignmentGroup.__str__"]], "_previousgroup (pyvhdlparser.groups.concurrent.assertgroup attribute)": [[209, "pyVHDLParser.Groups.Concurrent.AssertGroup._previousGroup"]], "_previousgroup (pyvhdlparser.groups.concurrent.reportgroup attribute)": [[209, "pyVHDLParser.Groups.Concurrent.ReportGroup._previousGroup"]], "_previousgroup (pyvhdlparser.groups.concurrent.signalassignmentgroup attribute)": [[209, "pyVHDLParser.Groups.Concurrent.SignalAssignmentGroup._previousGroup"]], "_subgroups (pyvhdlparser.groups.concurrent.assertgroup attribute)": [[209, "pyVHDLParser.Groups.Concurrent.AssertGroup._subGroups"]], "_subgroups (pyvhdlparser.groups.concurrent.reportgroup attribute)": [[209, "pyVHDLParser.Groups.Concurrent.ReportGroup._subGroups"]], "_subgroups (pyvhdlparser.groups.concurrent.signalassignmentgroup attribute)": [[209, "pyVHDLParser.Groups.Concurrent.SignalAssignmentGroup._subGroups"]], "pyvhdlparser.groups.concurrent": [[209, "module-pyVHDLParser.Groups.Concurrent"]], "architecturegroup (class in pyvhdlparser.groups.designunit)": [[210, "pyVHDLParser.Groups.DesignUnit.ArchitectureGroup"]], "componentgroup (class in pyvhdlparser.groups.designunit)": [[210, "pyVHDLParser.Groups.DesignUnit.ComponentGroup"]], "configurationgroup (class in pyvhdlparser.groups.designunit)": [[210, "pyVHDLParser.Groups.DesignUnit.ConfigurationGroup"]], "contextgroup (class in pyvhdlparser.groups.designunit)": [[210, "pyVHDLParser.Groups.DesignUnit.ContextGroup"]], "endblock (pyvhdlparser.groups.designunit.architecturegroup attribute)": [[210, "pyVHDLParser.Groups.DesignUnit.ArchitectureGroup.EndBlock"]], "endblock (pyvhdlparser.groups.designunit.componentgroup attribute)": [[210, "pyVHDLParser.Groups.DesignUnit.ComponentGroup.EndBlock"]], "endblock (pyvhdlparser.groups.designunit.configurationgroup attribute)": [[210, "pyVHDLParser.Groups.DesignUnit.ConfigurationGroup.EndBlock"]], "endblock (pyvhdlparser.groups.designunit.contextgroup attribute)": [[210, "pyVHDLParser.Groups.DesignUnit.ContextGroup.EndBlock"]], "endblock (pyvhdlparser.groups.designunit.entitygroup attribute)": [[210, "pyVHDLParser.Groups.DesignUnit.EntityGroup.EndBlock"]], "endblock (pyvhdlparser.groups.designunit.packagebodygroup attribute)": [[210, "pyVHDLParser.Groups.DesignUnit.PackageBodyGroup.EndBlock"]], "endblock (pyvhdlparser.groups.designunit.packagegroup attribute)": [[210, "pyVHDLParser.Groups.DesignUnit.PackageGroup.EndBlock"]], "entitygroup (class in pyvhdlparser.groups.designunit)": [[210, "pyVHDLParser.Groups.DesignUnit.EntityGroup"]], "innergroup (pyvhdlparser.groups.designunit.architecturegroup attribute)": [[210, "pyVHDLParser.Groups.DesignUnit.ArchitectureGroup.InnerGroup"]], "innergroup (pyvhdlparser.groups.designunit.componentgroup attribute)": [[210, "pyVHDLParser.Groups.DesignUnit.ComponentGroup.InnerGroup"]], "innergroup (pyvhdlparser.groups.designunit.configurationgroup attribute)": [[210, "pyVHDLParser.Groups.DesignUnit.ConfigurationGroup.InnerGroup"]], "innergroup (pyvhdlparser.groups.designunit.contextgroup attribute)": [[210, "pyVHDLParser.Groups.DesignUnit.ContextGroup.InnerGroup"]], "innergroup (pyvhdlparser.groups.designunit.entitygroup attribute)": [[210, "pyVHDLParser.Groups.DesignUnit.EntityGroup.InnerGroup"]], "innergroup (pyvhdlparser.groups.designunit.packagebodygroup attribute)": [[210, "pyVHDLParser.Groups.DesignUnit.PackageBodyGroup.InnerGroup"]], "innergroup (pyvhdlparser.groups.designunit.packagegroup attribute)": [[210, "pyVHDLParser.Groups.DesignUnit.PackageGroup.InnerGroup"]], "multipart (pyvhdlparser.groups.designunit.architecturegroup attribute)": [[210, "pyVHDLParser.Groups.DesignUnit.ArchitectureGroup.MultiPart"]], "multipart (pyvhdlparser.groups.designunit.componentgroup attribute)": [[210, "pyVHDLParser.Groups.DesignUnit.ComponentGroup.MultiPart"]], "multipart (pyvhdlparser.groups.designunit.configurationgroup attribute)": [[210, "pyVHDLParser.Groups.DesignUnit.ConfigurationGroup.MultiPart"]], "multipart (pyvhdlparser.groups.designunit.contextgroup attribute)": [[210, "pyVHDLParser.Groups.DesignUnit.ContextGroup.MultiPart"]], "multipart (pyvhdlparser.groups.designunit.entitygroup attribute)": [[210, "pyVHDLParser.Groups.DesignUnit.EntityGroup.MultiPart"]], "multipart (pyvhdlparser.groups.designunit.packagebodygroup attribute)": [[210, "pyVHDLParser.Groups.DesignUnit.PackageBodyGroup.MultiPart"]], "multipart (pyvhdlparser.groups.designunit.packagegroup attribute)": [[210, "pyVHDLParser.Groups.DesignUnit.PackageGroup.MultiPart"]], "nextgroup (pyvhdlparser.groups.designunit.architecturegroup attribute)": [[210, "pyVHDLParser.Groups.DesignUnit.ArchitectureGroup.NextGroup"]], "nextgroup (pyvhdlparser.groups.designunit.componentgroup attribute)": [[210, "pyVHDLParser.Groups.DesignUnit.ComponentGroup.NextGroup"]], "nextgroup (pyvhdlparser.groups.designunit.configurationgroup attribute)": [[210, "pyVHDLParser.Groups.DesignUnit.ConfigurationGroup.NextGroup"]], "nextgroup (pyvhdlparser.groups.designunit.contextgroup attribute)": [[210, "pyVHDLParser.Groups.DesignUnit.ContextGroup.NextGroup"]], "nextgroup (pyvhdlparser.groups.designunit.entitygroup attribute)": [[210, "pyVHDLParser.Groups.DesignUnit.EntityGroup.NextGroup"]], "nextgroup (pyvhdlparser.groups.designunit.packagebodygroup attribute)": [[210, "pyVHDLParser.Groups.DesignUnit.PackageBodyGroup.NextGroup"]], "nextgroup (pyvhdlparser.groups.designunit.packagegroup attribute)": [[210, "pyVHDLParser.Groups.DesignUnit.PackageGroup.NextGroup"]], "packagebodygroup (class in pyvhdlparser.groups.designunit)": [[210, "pyVHDLParser.Groups.DesignUnit.PackageBodyGroup"]], "packagegroup (class in pyvhdlparser.groups.designunit)": [[210, "pyVHDLParser.Groups.DesignUnit.PackageGroup"]], "startblock (pyvhdlparser.groups.designunit.architecturegroup attribute)": [[210, "pyVHDLParser.Groups.DesignUnit.ArchitectureGroup.StartBlock"]], "startblock (pyvhdlparser.groups.designunit.componentgroup attribute)": [[210, "pyVHDLParser.Groups.DesignUnit.ComponentGroup.StartBlock"]], "startblock (pyvhdlparser.groups.designunit.configurationgroup attribute)": [[210, "pyVHDLParser.Groups.DesignUnit.ConfigurationGroup.StartBlock"]], "startblock (pyvhdlparser.groups.designunit.contextgroup attribute)": [[210, "pyVHDLParser.Groups.DesignUnit.ContextGroup.StartBlock"]], "startblock (pyvhdlparser.groups.designunit.entitygroup attribute)": [[210, "pyVHDLParser.Groups.DesignUnit.EntityGroup.StartBlock"]], "startblock (pyvhdlparser.groups.designunit.packagebodygroup attribute)": [[210, "pyVHDLParser.Groups.DesignUnit.PackageBodyGroup.StartBlock"]], "startblock (pyvhdlparser.groups.designunit.packagegroup attribute)": [[210, "pyVHDLParser.Groups.DesignUnit.PackageGroup.StartBlock"]], "__init__() (pyvhdlparser.groups.designunit.architecturegroup method)": [[210, "pyVHDLParser.Groups.DesignUnit.ArchitectureGroup.__init__"]], "__init__() (pyvhdlparser.groups.designunit.componentgroup method)": [[210, "pyVHDLParser.Groups.DesignUnit.ComponentGroup.__init__"]], "__init__() (pyvhdlparser.groups.designunit.configurationgroup method)": [[210, "pyVHDLParser.Groups.DesignUnit.ConfigurationGroup.__init__"]], "__init__() (pyvhdlparser.groups.designunit.contextgroup method)": [[210, "pyVHDLParser.Groups.DesignUnit.ContextGroup.__init__"]], "__init__() (pyvhdlparser.groups.designunit.entitygroup method)": [[210, "pyVHDLParser.Groups.DesignUnit.EntityGroup.__init__"]], "__init__() (pyvhdlparser.groups.designunit.packagebodygroup method)": [[210, "pyVHDLParser.Groups.DesignUnit.PackageBodyGroup.__init__"]], "__init__() (pyvhdlparser.groups.designunit.packagegroup method)": [[210, "pyVHDLParser.Groups.DesignUnit.PackageGroup.__init__"]], "__repr__() (pyvhdlparser.groups.designunit.architecturegroup method)": [[210, "pyVHDLParser.Groups.DesignUnit.ArchitectureGroup.__repr__"]], "__repr__() (pyvhdlparser.groups.designunit.componentgroup method)": [[210, "pyVHDLParser.Groups.DesignUnit.ComponentGroup.__repr__"]], "__repr__() (pyvhdlparser.groups.designunit.configurationgroup method)": [[210, "pyVHDLParser.Groups.DesignUnit.ConfigurationGroup.__repr__"]], "__repr__() (pyvhdlparser.groups.designunit.contextgroup method)": [[210, "pyVHDLParser.Groups.DesignUnit.ContextGroup.__repr__"]], "__repr__() (pyvhdlparser.groups.designunit.entitygroup method)": [[210, "pyVHDLParser.Groups.DesignUnit.EntityGroup.__repr__"]], "__repr__() (pyvhdlparser.groups.designunit.packagebodygroup method)": [[210, "pyVHDLParser.Groups.DesignUnit.PackageBodyGroup.__repr__"]], "__repr__() (pyvhdlparser.groups.designunit.packagegroup method)": [[210, "pyVHDLParser.Groups.DesignUnit.PackageGroup.__repr__"]], "__str__() (pyvhdlparser.groups.designunit.architecturegroup method)": [[210, "pyVHDLParser.Groups.DesignUnit.ArchitectureGroup.__str__"]], "__str__() (pyvhdlparser.groups.designunit.componentgroup method)": [[210, "pyVHDLParser.Groups.DesignUnit.ComponentGroup.__str__"]], "__str__() (pyvhdlparser.groups.designunit.configurationgroup method)": [[210, "pyVHDLParser.Groups.DesignUnit.ConfigurationGroup.__str__"]], "__str__() (pyvhdlparser.groups.designunit.contextgroup method)": [[210, "pyVHDLParser.Groups.DesignUnit.ContextGroup.__str__"]], "__str__() (pyvhdlparser.groups.designunit.entitygroup method)": [[210, "pyVHDLParser.Groups.DesignUnit.EntityGroup.__str__"]], "__str__() (pyvhdlparser.groups.designunit.packagebodygroup method)": [[210, "pyVHDLParser.Groups.DesignUnit.PackageBodyGroup.__str__"]], "__str__() (pyvhdlparser.groups.designunit.packagegroup method)": [[210, "pyVHDLParser.Groups.DesignUnit.PackageGroup.__str__"]], "_previousgroup (pyvhdlparser.groups.designunit.architecturegroup attribute)": [[210, "pyVHDLParser.Groups.DesignUnit.ArchitectureGroup._previousGroup"]], "_previousgroup (pyvhdlparser.groups.designunit.componentgroup attribute)": [[210, "pyVHDLParser.Groups.DesignUnit.ComponentGroup._previousGroup"]], "_previousgroup (pyvhdlparser.groups.designunit.configurationgroup attribute)": [[210, "pyVHDLParser.Groups.DesignUnit.ConfigurationGroup._previousGroup"]], "_previousgroup (pyvhdlparser.groups.designunit.contextgroup attribute)": [[210, "pyVHDLParser.Groups.DesignUnit.ContextGroup._previousGroup"]], "_previousgroup (pyvhdlparser.groups.designunit.entitygroup attribute)": [[210, "pyVHDLParser.Groups.DesignUnit.EntityGroup._previousGroup"]], "_previousgroup (pyvhdlparser.groups.designunit.packagebodygroup attribute)": [[210, "pyVHDLParser.Groups.DesignUnit.PackageBodyGroup._previousGroup"]], "_previousgroup (pyvhdlparser.groups.designunit.packagegroup attribute)": [[210, "pyVHDLParser.Groups.DesignUnit.PackageGroup._previousGroup"]], "_subgroups (pyvhdlparser.groups.designunit.architecturegroup attribute)": [[210, "pyVHDLParser.Groups.DesignUnit.ArchitectureGroup._subGroups"]], "_subgroups (pyvhdlparser.groups.designunit.componentgroup attribute)": [[210, "pyVHDLParser.Groups.DesignUnit.ComponentGroup._subGroups"]], "_subgroups (pyvhdlparser.groups.designunit.configurationgroup attribute)": [[210, "pyVHDLParser.Groups.DesignUnit.ConfigurationGroup._subGroups"]], "_subgroups (pyvhdlparser.groups.designunit.contextgroup attribute)": [[210, "pyVHDLParser.Groups.DesignUnit.ContextGroup._subGroups"]], "_subgroups (pyvhdlparser.groups.designunit.entitygroup attribute)": [[210, "pyVHDLParser.Groups.DesignUnit.EntityGroup._subGroups"]], "_subgroups (pyvhdlparser.groups.designunit.packagebodygroup attribute)": [[210, "pyVHDLParser.Groups.DesignUnit.PackageBodyGroup._subGroups"]], "_subgroups (pyvhdlparser.groups.designunit.packagegroup attribute)": [[210, "pyVHDLParser.Groups.DesignUnit.PackageGroup._subGroups"]], "pyvhdlparser.groups.designunit": [[210, "module-pyVHDLParser.Groups.DesignUnit"]], "endblock (pyvhdlparser.groups.list.genericlistgroup attribute)": [[211, "pyVHDLParser.Groups.List.GenericListGroup.EndBlock"]], "endblock (pyvhdlparser.groups.list.genericlistitemgroup attribute)": [[211, "pyVHDLParser.Groups.List.GenericListItemGroup.EndBlock"]], "endblock (pyvhdlparser.groups.list.genericmapgroup attribute)": [[211, "pyVHDLParser.Groups.List.GenericMapGroup.EndBlock"]], "endblock (pyvhdlparser.groups.list.genericmapitemgroup attribute)": [[211, "pyVHDLParser.Groups.List.GenericMapItemGroup.EndBlock"]], "endblock (pyvhdlparser.groups.list.parameterlistgroup attribute)": [[211, "pyVHDLParser.Groups.List.ParameterListGroup.EndBlock"]], "endblock (pyvhdlparser.groups.list.parameterlistitemgroup attribute)": [[211, "pyVHDLParser.Groups.List.ParameterListItemGroup.EndBlock"]], "endblock (pyvhdlparser.groups.list.parametermapgroup attribute)": [[211, "pyVHDLParser.Groups.List.ParameterMapGroup.EndBlock"]], "endblock (pyvhdlparser.groups.list.parametermapitemgroup attribute)": [[211, "pyVHDLParser.Groups.List.ParameterMapItemGroup.EndBlock"]], "endblock (pyvhdlparser.groups.list.portlistgroup attribute)": [[211, "pyVHDLParser.Groups.List.PortListGroup.EndBlock"]], "endblock (pyvhdlparser.groups.list.portlistitemgroup attribute)": [[211, "pyVHDLParser.Groups.List.PortListItemGroup.EndBlock"]], "endblock (pyvhdlparser.groups.list.portmapgroup attribute)": [[211, "pyVHDLParser.Groups.List.PortMapGroup.EndBlock"]], "endblock (pyvhdlparser.groups.list.portmapitemgroup attribute)": [[211, "pyVHDLParser.Groups.List.PortMapItemGroup.EndBlock"]], "endblock (pyvhdlparser.groups.list.sensitivitylistgroup attribute)": [[211, "pyVHDLParser.Groups.List.SensitivityListGroup.EndBlock"]], "endblock (pyvhdlparser.groups.list.sensitivitylistitemgroup attribute)": [[211, "pyVHDLParser.Groups.List.SensitivityListItemGroup.EndBlock"]], "genericlistgroup (class in pyvhdlparser.groups.list)": [[211, "pyVHDLParser.Groups.List.GenericListGroup"]], "genericlistitemgroup (class in pyvhdlparser.groups.list)": [[211, "pyVHDLParser.Groups.List.GenericListItemGroup"]], "genericmapgroup (class in pyvhdlparser.groups.list)": [[211, "pyVHDLParser.Groups.List.GenericMapGroup"]], "genericmapitemgroup (class in pyvhdlparser.groups.list)": [[211, "pyVHDLParser.Groups.List.GenericMapItemGroup"]], "innergroup (pyvhdlparser.groups.list.genericlistgroup attribute)": [[211, "pyVHDLParser.Groups.List.GenericListGroup.InnerGroup"]], "innergroup (pyvhdlparser.groups.list.genericlistitemgroup attribute)": [[211, "pyVHDLParser.Groups.List.GenericListItemGroup.InnerGroup"]], "innergroup (pyvhdlparser.groups.list.genericmapgroup attribute)": [[211, "pyVHDLParser.Groups.List.GenericMapGroup.InnerGroup"]], "innergroup (pyvhdlparser.groups.list.genericmapitemgroup attribute)": [[211, "pyVHDLParser.Groups.List.GenericMapItemGroup.InnerGroup"]], "innergroup (pyvhdlparser.groups.list.parameterlistgroup attribute)": [[211, "pyVHDLParser.Groups.List.ParameterListGroup.InnerGroup"]], "innergroup (pyvhdlparser.groups.list.parameterlistitemgroup attribute)": [[211, "pyVHDLParser.Groups.List.ParameterListItemGroup.InnerGroup"]], "innergroup (pyvhdlparser.groups.list.parametermapgroup attribute)": [[211, "pyVHDLParser.Groups.List.ParameterMapGroup.InnerGroup"]], "innergroup (pyvhdlparser.groups.list.parametermapitemgroup attribute)": [[211, "pyVHDLParser.Groups.List.ParameterMapItemGroup.InnerGroup"]], "innergroup (pyvhdlparser.groups.list.portlistgroup attribute)": [[211, "pyVHDLParser.Groups.List.PortListGroup.InnerGroup"]], "innergroup (pyvhdlparser.groups.list.portlistitemgroup attribute)": [[211, "pyVHDLParser.Groups.List.PortListItemGroup.InnerGroup"]], "innergroup (pyvhdlparser.groups.list.portmapgroup attribute)": [[211, "pyVHDLParser.Groups.List.PortMapGroup.InnerGroup"]], "innergroup (pyvhdlparser.groups.list.portmapitemgroup attribute)": [[211, "pyVHDLParser.Groups.List.PortMapItemGroup.InnerGroup"]], "innergroup (pyvhdlparser.groups.list.sensitivitylistgroup attribute)": [[211, "pyVHDLParser.Groups.List.SensitivityListGroup.InnerGroup"]], "innergroup (pyvhdlparser.groups.list.sensitivitylistitemgroup attribute)": [[211, "pyVHDLParser.Groups.List.SensitivityListItemGroup.InnerGroup"]], "multipart (pyvhdlparser.groups.list.genericlistgroup attribute)": [[211, "pyVHDLParser.Groups.List.GenericListGroup.MultiPart"]], "multipart (pyvhdlparser.groups.list.genericlistitemgroup attribute)": [[211, "pyVHDLParser.Groups.List.GenericListItemGroup.MultiPart"]], "multipart (pyvhdlparser.groups.list.genericmapgroup attribute)": [[211, "pyVHDLParser.Groups.List.GenericMapGroup.MultiPart"]], "multipart (pyvhdlparser.groups.list.genericmapitemgroup attribute)": [[211, "pyVHDLParser.Groups.List.GenericMapItemGroup.MultiPart"]], "multipart (pyvhdlparser.groups.list.parameterlistgroup attribute)": [[211, "pyVHDLParser.Groups.List.ParameterListGroup.MultiPart"]], "multipart (pyvhdlparser.groups.list.parameterlistitemgroup attribute)": [[211, "pyVHDLParser.Groups.List.ParameterListItemGroup.MultiPart"]], "multipart (pyvhdlparser.groups.list.parametermapgroup attribute)": [[211, "pyVHDLParser.Groups.List.ParameterMapGroup.MultiPart"]], "multipart (pyvhdlparser.groups.list.parametermapitemgroup attribute)": [[211, "pyVHDLParser.Groups.List.ParameterMapItemGroup.MultiPart"]], "multipart (pyvhdlparser.groups.list.portlistgroup attribute)": [[211, "pyVHDLParser.Groups.List.PortListGroup.MultiPart"]], "multipart (pyvhdlparser.groups.list.portlistitemgroup attribute)": [[211, "pyVHDLParser.Groups.List.PortListItemGroup.MultiPart"]], "multipart (pyvhdlparser.groups.list.portmapgroup attribute)": [[211, "pyVHDLParser.Groups.List.PortMapGroup.MultiPart"]], "multipart (pyvhdlparser.groups.list.portmapitemgroup attribute)": [[211, "pyVHDLParser.Groups.List.PortMapItemGroup.MultiPart"]], "multipart (pyvhdlparser.groups.list.sensitivitylistgroup attribute)": [[211, "pyVHDLParser.Groups.List.SensitivityListGroup.MultiPart"]], "multipart (pyvhdlparser.groups.list.sensitivitylistitemgroup attribute)": [[211, "pyVHDLParser.Groups.List.SensitivityListItemGroup.MultiPart"]], "nextgroup (pyvhdlparser.groups.list.genericlistgroup attribute)": [[211, "pyVHDLParser.Groups.List.GenericListGroup.NextGroup"]], "nextgroup (pyvhdlparser.groups.list.genericlistitemgroup attribute)": [[211, "pyVHDLParser.Groups.List.GenericListItemGroup.NextGroup"]], "nextgroup (pyvhdlparser.groups.list.genericmapgroup attribute)": [[211, "pyVHDLParser.Groups.List.GenericMapGroup.NextGroup"]], "nextgroup (pyvhdlparser.groups.list.genericmapitemgroup attribute)": [[211, "pyVHDLParser.Groups.List.GenericMapItemGroup.NextGroup"]], "nextgroup (pyvhdlparser.groups.list.parameterlistgroup attribute)": [[211, "pyVHDLParser.Groups.List.ParameterListGroup.NextGroup"]], "nextgroup (pyvhdlparser.groups.list.parameterlistitemgroup attribute)": [[211, "pyVHDLParser.Groups.List.ParameterListItemGroup.NextGroup"]], "nextgroup (pyvhdlparser.groups.list.parametermapgroup attribute)": [[211, "pyVHDLParser.Groups.List.ParameterMapGroup.NextGroup"]], "nextgroup (pyvhdlparser.groups.list.parametermapitemgroup attribute)": [[211, "pyVHDLParser.Groups.List.ParameterMapItemGroup.NextGroup"]], "nextgroup (pyvhdlparser.groups.list.portlistgroup attribute)": [[211, "pyVHDLParser.Groups.List.PortListGroup.NextGroup"]], "nextgroup (pyvhdlparser.groups.list.portlistitemgroup attribute)": [[211, "pyVHDLParser.Groups.List.PortListItemGroup.NextGroup"]], "nextgroup (pyvhdlparser.groups.list.portmapgroup attribute)": [[211, "pyVHDLParser.Groups.List.PortMapGroup.NextGroup"]], "nextgroup (pyvhdlparser.groups.list.portmapitemgroup attribute)": [[211, "pyVHDLParser.Groups.List.PortMapItemGroup.NextGroup"]], "nextgroup (pyvhdlparser.groups.list.sensitivitylistgroup attribute)": [[211, "pyVHDLParser.Groups.List.SensitivityListGroup.NextGroup"]], "nextgroup (pyvhdlparser.groups.list.sensitivitylistitemgroup attribute)": [[211, "pyVHDLParser.Groups.List.SensitivityListItemGroup.NextGroup"]], "parameterlistgroup (class in pyvhdlparser.groups.list)": [[211, "pyVHDLParser.Groups.List.ParameterListGroup"]], "parameterlistitemgroup (class in pyvhdlparser.groups.list)": [[211, "pyVHDLParser.Groups.List.ParameterListItemGroup"]], "parametermapgroup (class in pyvhdlparser.groups.list)": [[211, "pyVHDLParser.Groups.List.ParameterMapGroup"]], "parametermapitemgroup (class in pyvhdlparser.groups.list)": [[211, "pyVHDLParser.Groups.List.ParameterMapItemGroup"]], "portlistgroup (class in pyvhdlparser.groups.list)": [[211, "pyVHDLParser.Groups.List.PortListGroup"]], "portlistitemgroup (class in pyvhdlparser.groups.list)": [[211, "pyVHDLParser.Groups.List.PortListItemGroup"]], "portmapgroup (class in pyvhdlparser.groups.list)": [[211, "pyVHDLParser.Groups.List.PortMapGroup"]], "portmapitemgroup (class in pyvhdlparser.groups.list)": [[211, "pyVHDLParser.Groups.List.PortMapItemGroup"]], "sensitivitylistgroup (class in pyvhdlparser.groups.list)": [[211, "pyVHDLParser.Groups.List.SensitivityListGroup"]], "sensitivitylistitemgroup (class in pyvhdlparser.groups.list)": [[211, "pyVHDLParser.Groups.List.SensitivityListItemGroup"]], "startblock (pyvhdlparser.groups.list.genericlistgroup attribute)": [[211, "pyVHDLParser.Groups.List.GenericListGroup.StartBlock"]], "startblock (pyvhdlparser.groups.list.genericlistitemgroup attribute)": [[211, "pyVHDLParser.Groups.List.GenericListItemGroup.StartBlock"]], "startblock (pyvhdlparser.groups.list.genericmapgroup attribute)": [[211, "pyVHDLParser.Groups.List.GenericMapGroup.StartBlock"]], "startblock (pyvhdlparser.groups.list.genericmapitemgroup attribute)": [[211, "pyVHDLParser.Groups.List.GenericMapItemGroup.StartBlock"]], "startblock (pyvhdlparser.groups.list.parameterlistgroup attribute)": [[211, "pyVHDLParser.Groups.List.ParameterListGroup.StartBlock"]], "startblock (pyvhdlparser.groups.list.parameterlistitemgroup attribute)": [[211, "pyVHDLParser.Groups.List.ParameterListItemGroup.StartBlock"]], "startblock (pyvhdlparser.groups.list.parametermapgroup attribute)": [[211, "pyVHDLParser.Groups.List.ParameterMapGroup.StartBlock"]], "startblock (pyvhdlparser.groups.list.parametermapitemgroup attribute)": [[211, "pyVHDLParser.Groups.List.ParameterMapItemGroup.StartBlock"]], "startblock (pyvhdlparser.groups.list.portlistgroup attribute)": [[211, "pyVHDLParser.Groups.List.PortListGroup.StartBlock"]], "startblock (pyvhdlparser.groups.list.portlistitemgroup attribute)": [[211, "pyVHDLParser.Groups.List.PortListItemGroup.StartBlock"]], "startblock (pyvhdlparser.groups.list.portmapgroup attribute)": [[211, "pyVHDLParser.Groups.List.PortMapGroup.StartBlock"]], "startblock (pyvhdlparser.groups.list.portmapitemgroup attribute)": [[211, "pyVHDLParser.Groups.List.PortMapItemGroup.StartBlock"]], "startblock (pyvhdlparser.groups.list.sensitivitylistgroup attribute)": [[211, "pyVHDLParser.Groups.List.SensitivityListGroup.StartBlock"]], "startblock (pyvhdlparser.groups.list.sensitivitylistitemgroup attribute)": [[211, "pyVHDLParser.Groups.List.SensitivityListItemGroup.StartBlock"]], "__init__() (pyvhdlparser.groups.list.genericlistgroup method)": [[211, "pyVHDLParser.Groups.List.GenericListGroup.__init__"]], "__init__() (pyvhdlparser.groups.list.genericlistitemgroup method)": [[211, "pyVHDLParser.Groups.List.GenericListItemGroup.__init__"]], "__init__() (pyvhdlparser.groups.list.genericmapgroup method)": [[211, "pyVHDLParser.Groups.List.GenericMapGroup.__init__"]], "__init__() (pyvhdlparser.groups.list.genericmapitemgroup method)": [[211, "pyVHDLParser.Groups.List.GenericMapItemGroup.__init__"]], "__init__() (pyvhdlparser.groups.list.parameterlistgroup method)": [[211, "pyVHDLParser.Groups.List.ParameterListGroup.__init__"]], "__init__() (pyvhdlparser.groups.list.parameterlistitemgroup method)": [[211, "pyVHDLParser.Groups.List.ParameterListItemGroup.__init__"]], "__init__() (pyvhdlparser.groups.list.parametermapgroup method)": [[211, "pyVHDLParser.Groups.List.ParameterMapGroup.__init__"]], "__init__() (pyvhdlparser.groups.list.parametermapitemgroup method)": [[211, "pyVHDLParser.Groups.List.ParameterMapItemGroup.__init__"]], "__init__() (pyvhdlparser.groups.list.portlistgroup method)": [[211, "pyVHDLParser.Groups.List.PortListGroup.__init__"]], "__init__() (pyvhdlparser.groups.list.portlistitemgroup method)": [[211, "pyVHDLParser.Groups.List.PortListItemGroup.__init__"]], "__init__() (pyvhdlparser.groups.list.portmapgroup method)": [[211, "pyVHDLParser.Groups.List.PortMapGroup.__init__"]], "__init__() (pyvhdlparser.groups.list.portmapitemgroup method)": [[211, "pyVHDLParser.Groups.List.PortMapItemGroup.__init__"]], "__init__() (pyvhdlparser.groups.list.sensitivitylistgroup method)": [[211, "pyVHDLParser.Groups.List.SensitivityListGroup.__init__"]], "__init__() (pyvhdlparser.groups.list.sensitivitylistitemgroup method)": [[211, "pyVHDLParser.Groups.List.SensitivityListItemGroup.__init__"]], "__repr__() (pyvhdlparser.groups.list.genericlistgroup method)": [[211, "pyVHDLParser.Groups.List.GenericListGroup.__repr__"]], "__repr__() (pyvhdlparser.groups.list.genericlistitemgroup method)": [[211, "pyVHDLParser.Groups.List.GenericListItemGroup.__repr__"]], "__repr__() (pyvhdlparser.groups.list.genericmapgroup method)": [[211, "pyVHDLParser.Groups.List.GenericMapGroup.__repr__"]], "__repr__() (pyvhdlparser.groups.list.genericmapitemgroup method)": [[211, "pyVHDLParser.Groups.List.GenericMapItemGroup.__repr__"]], "__repr__() (pyvhdlparser.groups.list.parameterlistgroup method)": [[211, "pyVHDLParser.Groups.List.ParameterListGroup.__repr__"]], "__repr__() (pyvhdlparser.groups.list.parameterlistitemgroup method)": [[211, "pyVHDLParser.Groups.List.ParameterListItemGroup.__repr__"]], "__repr__() (pyvhdlparser.groups.list.parametermapgroup method)": [[211, "pyVHDLParser.Groups.List.ParameterMapGroup.__repr__"]], "__repr__() (pyvhdlparser.groups.list.parametermapitemgroup method)": [[211, "pyVHDLParser.Groups.List.ParameterMapItemGroup.__repr__"]], "__repr__() (pyvhdlparser.groups.list.portlistgroup method)": [[211, "pyVHDLParser.Groups.List.PortListGroup.__repr__"]], "__repr__() (pyvhdlparser.groups.list.portlistitemgroup method)": [[211, "pyVHDLParser.Groups.List.PortListItemGroup.__repr__"]], "__repr__() (pyvhdlparser.groups.list.portmapgroup method)": [[211, "pyVHDLParser.Groups.List.PortMapGroup.__repr__"]], "__repr__() (pyvhdlparser.groups.list.portmapitemgroup method)": [[211, "pyVHDLParser.Groups.List.PortMapItemGroup.__repr__"]], "__repr__() (pyvhdlparser.groups.list.sensitivitylistgroup method)": [[211, "pyVHDLParser.Groups.List.SensitivityListGroup.__repr__"]], "__repr__() (pyvhdlparser.groups.list.sensitivitylistitemgroup method)": [[211, "pyVHDLParser.Groups.List.SensitivityListItemGroup.__repr__"]], "__str__() (pyvhdlparser.groups.list.genericlistgroup method)": [[211, "pyVHDLParser.Groups.List.GenericListGroup.__str__"]], "__str__() (pyvhdlparser.groups.list.genericlistitemgroup method)": [[211, "pyVHDLParser.Groups.List.GenericListItemGroup.__str__"]], "__str__() (pyvhdlparser.groups.list.genericmapgroup method)": [[211, "pyVHDLParser.Groups.List.GenericMapGroup.__str__"]], "__str__() (pyvhdlparser.groups.list.genericmapitemgroup method)": [[211, "pyVHDLParser.Groups.List.GenericMapItemGroup.__str__"]], "__str__() (pyvhdlparser.groups.list.parameterlistgroup method)": [[211, "pyVHDLParser.Groups.List.ParameterListGroup.__str__"]], "__str__() (pyvhdlparser.groups.list.parameterlistitemgroup method)": [[211, "pyVHDLParser.Groups.List.ParameterListItemGroup.__str__"]], "__str__() (pyvhdlparser.groups.list.parametermapgroup method)": [[211, "pyVHDLParser.Groups.List.ParameterMapGroup.__str__"]], "__str__() (pyvhdlparser.groups.list.parametermapitemgroup method)": [[211, "pyVHDLParser.Groups.List.ParameterMapItemGroup.__str__"]], "__str__() (pyvhdlparser.groups.list.portlistgroup method)": [[211, "pyVHDLParser.Groups.List.PortListGroup.__str__"]], "__str__() (pyvhdlparser.groups.list.portlistitemgroup method)": [[211, "pyVHDLParser.Groups.List.PortListItemGroup.__str__"]], "__str__() (pyvhdlparser.groups.list.portmapgroup method)": [[211, "pyVHDLParser.Groups.List.PortMapGroup.__str__"]], "__str__() (pyvhdlparser.groups.list.portmapitemgroup method)": [[211, "pyVHDLParser.Groups.List.PortMapItemGroup.__str__"]], "__str__() (pyvhdlparser.groups.list.sensitivitylistgroup method)": [[211, "pyVHDLParser.Groups.List.SensitivityListGroup.__str__"]], "__str__() (pyvhdlparser.groups.list.sensitivitylistitemgroup method)": [[211, "pyVHDLParser.Groups.List.SensitivityListItemGroup.__str__"]], "_previousgroup (pyvhdlparser.groups.list.genericlistgroup attribute)": [[211, "pyVHDLParser.Groups.List.GenericListGroup._previousGroup"]], "_previousgroup (pyvhdlparser.groups.list.genericlistitemgroup attribute)": [[211, "pyVHDLParser.Groups.List.GenericListItemGroup._previousGroup"]], "_previousgroup (pyvhdlparser.groups.list.genericmapgroup attribute)": [[211, "pyVHDLParser.Groups.List.GenericMapGroup._previousGroup"]], "_previousgroup (pyvhdlparser.groups.list.genericmapitemgroup attribute)": [[211, "pyVHDLParser.Groups.List.GenericMapItemGroup._previousGroup"]], "_previousgroup (pyvhdlparser.groups.list.parameterlistgroup attribute)": [[211, "pyVHDLParser.Groups.List.ParameterListGroup._previousGroup"]], "_previousgroup (pyvhdlparser.groups.list.parameterlistitemgroup attribute)": [[211, "pyVHDLParser.Groups.List.ParameterListItemGroup._previousGroup"]], "_previousgroup (pyvhdlparser.groups.list.parametermapgroup attribute)": [[211, "pyVHDLParser.Groups.List.ParameterMapGroup._previousGroup"]], "_previousgroup (pyvhdlparser.groups.list.parametermapitemgroup attribute)": [[211, "pyVHDLParser.Groups.List.ParameterMapItemGroup._previousGroup"]], "_previousgroup (pyvhdlparser.groups.list.portlistgroup attribute)": [[211, "pyVHDLParser.Groups.List.PortListGroup._previousGroup"]], "_previousgroup (pyvhdlparser.groups.list.portlistitemgroup attribute)": [[211, "pyVHDLParser.Groups.List.PortListItemGroup._previousGroup"]], "_previousgroup (pyvhdlparser.groups.list.portmapgroup attribute)": [[211, "pyVHDLParser.Groups.List.PortMapGroup._previousGroup"]], "_previousgroup (pyvhdlparser.groups.list.portmapitemgroup attribute)": [[211, "pyVHDLParser.Groups.List.PortMapItemGroup._previousGroup"]], "_previousgroup (pyvhdlparser.groups.list.sensitivitylistgroup attribute)": [[211, "pyVHDLParser.Groups.List.SensitivityListGroup._previousGroup"]], "_previousgroup (pyvhdlparser.groups.list.sensitivitylistitemgroup attribute)": [[211, "pyVHDLParser.Groups.List.SensitivityListItemGroup._previousGroup"]], "_subgroups (pyvhdlparser.groups.list.genericlistgroup attribute)": [[211, "pyVHDLParser.Groups.List.GenericListGroup._subGroups"]], "_subgroups (pyvhdlparser.groups.list.genericlistitemgroup attribute)": [[211, "pyVHDLParser.Groups.List.GenericListItemGroup._subGroups"]], "_subgroups (pyvhdlparser.groups.list.genericmapgroup attribute)": [[211, "pyVHDLParser.Groups.List.GenericMapGroup._subGroups"]], "_subgroups (pyvhdlparser.groups.list.genericmapitemgroup attribute)": [[211, "pyVHDLParser.Groups.List.GenericMapItemGroup._subGroups"]], "_subgroups (pyvhdlparser.groups.list.parameterlistgroup attribute)": [[211, "pyVHDLParser.Groups.List.ParameterListGroup._subGroups"]], "_subgroups (pyvhdlparser.groups.list.parameterlistitemgroup attribute)": [[211, "pyVHDLParser.Groups.List.ParameterListItemGroup._subGroups"]], "_subgroups (pyvhdlparser.groups.list.parametermapgroup attribute)": [[211, "pyVHDLParser.Groups.List.ParameterMapGroup._subGroups"]], "_subgroups (pyvhdlparser.groups.list.parametermapitemgroup attribute)": [[211, "pyVHDLParser.Groups.List.ParameterMapItemGroup._subGroups"]], "_subgroups (pyvhdlparser.groups.list.portlistgroup attribute)": [[211, "pyVHDLParser.Groups.List.PortListGroup._subGroups"]], "_subgroups (pyvhdlparser.groups.list.portlistitemgroup attribute)": [[211, "pyVHDLParser.Groups.List.PortListItemGroup._subGroups"]], "_subgroups (pyvhdlparser.groups.list.portmapgroup attribute)": [[211, "pyVHDLParser.Groups.List.PortMapGroup._subGroups"]], "_subgroups (pyvhdlparser.groups.list.portmapitemgroup attribute)": [[211, "pyVHDLParser.Groups.List.PortMapItemGroup._subGroups"]], "_subgroups (pyvhdlparser.groups.list.sensitivitylistgroup attribute)": [[211, "pyVHDLParser.Groups.List.SensitivityListGroup._subGroups"]], "_subgroups (pyvhdlparser.groups.list.sensitivitylistitemgroup attribute)": [[211, "pyVHDLParser.Groups.List.SensitivityListItemGroup._subGroups"]], "pyvhdlparser.groups.list": [[211, "module-pyVHDLParser.Groups.List"]], "constantgroup (class in pyvhdlparser.groups.object)": [[212, "pyVHDLParser.Groups.Object.ConstantGroup"]], "endblock (pyvhdlparser.groups.object.constantgroup attribute)": [[212, "pyVHDLParser.Groups.Object.ConstantGroup.EndBlock"]], "endblock (pyvhdlparser.groups.object.signalgroup attribute)": [[212, "pyVHDLParser.Groups.Object.SignalGroup.EndBlock"]], "endblock (pyvhdlparser.groups.object.variablegroup attribute)": [[212, "pyVHDLParser.Groups.Object.VariableGroup.EndBlock"]], "innergroup (pyvhdlparser.groups.object.constantgroup attribute)": [[212, "pyVHDLParser.Groups.Object.ConstantGroup.InnerGroup"]], "innergroup (pyvhdlparser.groups.object.signalgroup attribute)": [[212, "pyVHDLParser.Groups.Object.SignalGroup.InnerGroup"]], "innergroup (pyvhdlparser.groups.object.variablegroup attribute)": [[212, "pyVHDLParser.Groups.Object.VariableGroup.InnerGroup"]], "multipart (pyvhdlparser.groups.object.constantgroup attribute)": [[212, "pyVHDLParser.Groups.Object.ConstantGroup.MultiPart"]], "multipart (pyvhdlparser.groups.object.signalgroup attribute)": [[212, "pyVHDLParser.Groups.Object.SignalGroup.MultiPart"]], "multipart (pyvhdlparser.groups.object.variablegroup attribute)": [[212, "pyVHDLParser.Groups.Object.VariableGroup.MultiPart"]], "nextgroup (pyvhdlparser.groups.object.constantgroup attribute)": [[212, "pyVHDLParser.Groups.Object.ConstantGroup.NextGroup"]], "nextgroup (pyvhdlparser.groups.object.signalgroup attribute)": [[212, "pyVHDLParser.Groups.Object.SignalGroup.NextGroup"]], "nextgroup (pyvhdlparser.groups.object.variablegroup attribute)": [[212, "pyVHDLParser.Groups.Object.VariableGroup.NextGroup"]], "signalgroup (class in pyvhdlparser.groups.object)": [[212, "pyVHDLParser.Groups.Object.SignalGroup"]], "startblock (pyvhdlparser.groups.object.constantgroup attribute)": [[212, "pyVHDLParser.Groups.Object.ConstantGroup.StartBlock"]], "startblock (pyvhdlparser.groups.object.signalgroup attribute)": [[212, "pyVHDLParser.Groups.Object.SignalGroup.StartBlock"]], "startblock (pyvhdlparser.groups.object.variablegroup attribute)": [[212, "pyVHDLParser.Groups.Object.VariableGroup.StartBlock"]], "variablegroup (class in pyvhdlparser.groups.object)": [[212, "pyVHDLParser.Groups.Object.VariableGroup"]], "__init__() (pyvhdlparser.groups.object.constantgroup method)": [[212, "pyVHDLParser.Groups.Object.ConstantGroup.__init__"]], "__init__() (pyvhdlparser.groups.object.signalgroup method)": [[212, "pyVHDLParser.Groups.Object.SignalGroup.__init__"]], "__init__() (pyvhdlparser.groups.object.variablegroup method)": [[212, "pyVHDLParser.Groups.Object.VariableGroup.__init__"]], "__repr__() (pyvhdlparser.groups.object.constantgroup method)": [[212, "pyVHDLParser.Groups.Object.ConstantGroup.__repr__"]], "__repr__() (pyvhdlparser.groups.object.signalgroup method)": [[212, "pyVHDLParser.Groups.Object.SignalGroup.__repr__"]], "__repr__() (pyvhdlparser.groups.object.variablegroup method)": [[212, "pyVHDLParser.Groups.Object.VariableGroup.__repr__"]], "__str__() (pyvhdlparser.groups.object.constantgroup method)": [[212, "pyVHDLParser.Groups.Object.ConstantGroup.__str__"]], "__str__() (pyvhdlparser.groups.object.signalgroup method)": [[212, "pyVHDLParser.Groups.Object.SignalGroup.__str__"]], "__str__() (pyvhdlparser.groups.object.variablegroup method)": [[212, "pyVHDLParser.Groups.Object.VariableGroup.__str__"]], "_previousgroup (pyvhdlparser.groups.object.constantgroup attribute)": [[212, "pyVHDLParser.Groups.Object.ConstantGroup._previousGroup"]], "_previousgroup (pyvhdlparser.groups.object.signalgroup attribute)": [[212, "pyVHDLParser.Groups.Object.SignalGroup._previousGroup"]], "_previousgroup (pyvhdlparser.groups.object.variablegroup attribute)": [[212, "pyVHDLParser.Groups.Object.VariableGroup._previousGroup"]], "_subgroups (pyvhdlparser.groups.object.constantgroup attribute)": [[212, "pyVHDLParser.Groups.Object.ConstantGroup._subGroups"]], "_subgroups (pyvhdlparser.groups.object.signalgroup attribute)": [[212, "pyVHDLParser.Groups.Object.SignalGroup._subGroups"]], "_subgroups (pyvhdlparser.groups.object.variablegroup attribute)": [[212, "pyVHDLParser.Groups.Object.VariableGroup._subGroups"]], "pyvhdlparser.groups.object": [[212, "module-pyVHDLParser.Groups.Object"]], "endblock (pyvhdlparser.groups.reference.librarygroup attribute)": [[213, "pyVHDLParser.Groups.Reference.LibraryGroup.EndBlock"]], "endblock (pyvhdlparser.groups.reference.usegroup attribute)": [[213, "pyVHDLParser.Groups.Reference.UseGroup.EndBlock"]], "innergroup (pyvhdlparser.groups.reference.librarygroup attribute)": [[213, "pyVHDLParser.Groups.Reference.LibraryGroup.InnerGroup"]], "innergroup (pyvhdlparser.groups.reference.usegroup attribute)": [[213, "pyVHDLParser.Groups.Reference.UseGroup.InnerGroup"]], "librarygroup (class in pyvhdlparser.groups.reference)": [[213, "pyVHDLParser.Groups.Reference.LibraryGroup"]], "multipart (pyvhdlparser.groups.reference.librarygroup attribute)": [[213, "pyVHDLParser.Groups.Reference.LibraryGroup.MultiPart"]], "multipart (pyvhdlparser.groups.reference.usegroup attribute)": [[213, "pyVHDLParser.Groups.Reference.UseGroup.MultiPart"]], "nextgroup (pyvhdlparser.groups.reference.librarygroup attribute)": [[213, "pyVHDLParser.Groups.Reference.LibraryGroup.NextGroup"]], "nextgroup (pyvhdlparser.groups.reference.usegroup attribute)": [[213, "pyVHDLParser.Groups.Reference.UseGroup.NextGroup"]], "startblock (pyvhdlparser.groups.reference.librarygroup attribute)": [[213, "pyVHDLParser.Groups.Reference.LibraryGroup.StartBlock"]], "startblock (pyvhdlparser.groups.reference.usegroup attribute)": [[213, "pyVHDLParser.Groups.Reference.UseGroup.StartBlock"]], "usegroup (class in pyvhdlparser.groups.reference)": [[213, "pyVHDLParser.Groups.Reference.UseGroup"]], "__init__() (pyvhdlparser.groups.reference.librarygroup method)": [[213, "pyVHDLParser.Groups.Reference.LibraryGroup.__init__"]], "__init__() (pyvhdlparser.groups.reference.usegroup method)": [[213, "pyVHDLParser.Groups.Reference.UseGroup.__init__"]], "__repr__() (pyvhdlparser.groups.reference.librarygroup method)": [[213, "pyVHDLParser.Groups.Reference.LibraryGroup.__repr__"]], "__repr__() (pyvhdlparser.groups.reference.usegroup method)": [[213, "pyVHDLParser.Groups.Reference.UseGroup.__repr__"]], "__str__() (pyvhdlparser.groups.reference.librarygroup method)": [[213, "pyVHDLParser.Groups.Reference.LibraryGroup.__str__"]], "__str__() (pyvhdlparser.groups.reference.usegroup method)": [[213, "pyVHDLParser.Groups.Reference.UseGroup.__str__"]], "_previousgroup (pyvhdlparser.groups.reference.librarygroup attribute)": [[213, "pyVHDLParser.Groups.Reference.LibraryGroup._previousGroup"]], "_previousgroup (pyvhdlparser.groups.reference.usegroup attribute)": [[213, "pyVHDLParser.Groups.Reference.UseGroup._previousGroup"]], "_subgroups (pyvhdlparser.groups.reference.librarygroup attribute)": [[213, "pyVHDLParser.Groups.Reference.LibraryGroup._subGroups"]], "_subgroups (pyvhdlparser.groups.reference.usegroup attribute)": [[213, "pyVHDLParser.Groups.Reference.UseGroup._subGroups"]], "pyvhdlparser.groups.reference": [[213, "module-pyVHDLParser.Groups.Reference"]], "pyvhdlparser.groups.sequential": [[214, "module-pyVHDLParser.Groups.Sequential"]], "endblock (pyvhdlparser.groups.sequential.function.functiongroup attribute)": [[215, "pyVHDLParser.Groups.Sequential.Function.FunctionGroup.EndBlock"]], "endblock (pyvhdlparser.groups.sequential.function.returntypegroup attribute)": [[215, "pyVHDLParser.Groups.Sequential.Function.ReturnTypeGroup.EndBlock"]], "functiongroup (class in pyvhdlparser.groups.sequential.function)": [[215, "pyVHDLParser.Groups.Sequential.Function.FunctionGroup"]], "innergroup (pyvhdlparser.groups.sequential.function.functiongroup attribute)": [[215, "pyVHDLParser.Groups.Sequential.Function.FunctionGroup.InnerGroup"]], "innergroup (pyvhdlparser.groups.sequential.function.returntypegroup attribute)": [[215, "pyVHDLParser.Groups.Sequential.Function.ReturnTypeGroup.InnerGroup"]], "multipart (pyvhdlparser.groups.sequential.function.functiongroup attribute)": [[215, "pyVHDLParser.Groups.Sequential.Function.FunctionGroup.MultiPart"]], "multipart (pyvhdlparser.groups.sequential.function.returntypegroup attribute)": [[215, "pyVHDLParser.Groups.Sequential.Function.ReturnTypeGroup.MultiPart"]], "nextgroup (pyvhdlparser.groups.sequential.function.functiongroup attribute)": [[215, "pyVHDLParser.Groups.Sequential.Function.FunctionGroup.NextGroup"]], "nextgroup (pyvhdlparser.groups.sequential.function.returntypegroup attribute)": [[215, "pyVHDLParser.Groups.Sequential.Function.ReturnTypeGroup.NextGroup"]], "returntypegroup (class in pyvhdlparser.groups.sequential.function)": [[215, "pyVHDLParser.Groups.Sequential.Function.ReturnTypeGroup"]], "startblock (pyvhdlparser.groups.sequential.function.functiongroup attribute)": [[215, "pyVHDLParser.Groups.Sequential.Function.FunctionGroup.StartBlock"]], "startblock (pyvhdlparser.groups.sequential.function.returntypegroup attribute)": [[215, "pyVHDLParser.Groups.Sequential.Function.ReturnTypeGroup.StartBlock"]], "__init__() (pyvhdlparser.groups.sequential.function.functiongroup method)": [[215, "pyVHDLParser.Groups.Sequential.Function.FunctionGroup.__init__"]], "__init__() (pyvhdlparser.groups.sequential.function.returntypegroup method)": [[215, "pyVHDLParser.Groups.Sequential.Function.ReturnTypeGroup.__init__"]], "__repr__() (pyvhdlparser.groups.sequential.function.functiongroup method)": [[215, "pyVHDLParser.Groups.Sequential.Function.FunctionGroup.__repr__"]], "__repr__() (pyvhdlparser.groups.sequential.function.returntypegroup method)": [[215, "pyVHDLParser.Groups.Sequential.Function.ReturnTypeGroup.__repr__"]], "__str__() (pyvhdlparser.groups.sequential.function.functiongroup method)": [[215, "pyVHDLParser.Groups.Sequential.Function.FunctionGroup.__str__"]], "__str__() (pyvhdlparser.groups.sequential.function.returntypegroup method)": [[215, "pyVHDLParser.Groups.Sequential.Function.ReturnTypeGroup.__str__"]], "_previousgroup (pyvhdlparser.groups.sequential.function.functiongroup attribute)": [[215, "pyVHDLParser.Groups.Sequential.Function.FunctionGroup._previousGroup"]], "_previousgroup (pyvhdlparser.groups.sequential.function.returntypegroup attribute)": [[215, "pyVHDLParser.Groups.Sequential.Function.ReturnTypeGroup._previousGroup"]], "_subgroups (pyvhdlparser.groups.sequential.function.functiongroup attribute)": [[215, "pyVHDLParser.Groups.Sequential.Function.FunctionGroup._subGroups"]], "_subgroups (pyvhdlparser.groups.sequential.function.returntypegroup attribute)": [[215, "pyVHDLParser.Groups.Sequential.Function.ReturnTypeGroup._subGroups"]], "pyvhdlparser.groups.sequential.function": [[215, "module-pyVHDLParser.Groups.Sequential.Function"]], "endblock (pyvhdlparser.groups.sequential.procedure.proceduregroup attribute)": [[216, "pyVHDLParser.Groups.Sequential.Procedure.ProcedureGroup.EndBlock"]], "innergroup (pyvhdlparser.groups.sequential.procedure.proceduregroup attribute)": [[216, "pyVHDLParser.Groups.Sequential.Procedure.ProcedureGroup.InnerGroup"]], "multipart (pyvhdlparser.groups.sequential.procedure.proceduregroup attribute)": [[216, "pyVHDLParser.Groups.Sequential.Procedure.ProcedureGroup.MultiPart"]], "nextgroup (pyvhdlparser.groups.sequential.procedure.proceduregroup attribute)": [[216, "pyVHDLParser.Groups.Sequential.Procedure.ProcedureGroup.NextGroup"]], "proceduregroup (class in pyvhdlparser.groups.sequential.procedure)": [[216, "pyVHDLParser.Groups.Sequential.Procedure.ProcedureGroup"]], "startblock (pyvhdlparser.groups.sequential.procedure.proceduregroup attribute)": [[216, "pyVHDLParser.Groups.Sequential.Procedure.ProcedureGroup.StartBlock"]], "__init__() (pyvhdlparser.groups.sequential.procedure.proceduregroup method)": [[216, "pyVHDLParser.Groups.Sequential.Procedure.ProcedureGroup.__init__"]], "__repr__() (pyvhdlparser.groups.sequential.procedure.proceduregroup method)": [[216, "pyVHDLParser.Groups.Sequential.Procedure.ProcedureGroup.__repr__"]], "__str__() (pyvhdlparser.groups.sequential.procedure.proceduregroup method)": [[216, "pyVHDLParser.Groups.Sequential.Procedure.ProcedureGroup.__str__"]], "_previousgroup (pyvhdlparser.groups.sequential.procedure.proceduregroup attribute)": [[216, "pyVHDLParser.Groups.Sequential.Procedure.ProcedureGroup._previousGroup"]], "_subgroups (pyvhdlparser.groups.sequential.procedure.proceduregroup attribute)": [[216, "pyVHDLParser.Groups.Sequential.Procedure.ProcedureGroup._subGroups"]], "pyvhdlparser.groups.sequential.procedure": [[216, "module-pyVHDLParser.Groups.Sequential.Procedure"]], "casegroup (class in pyvhdlparser.groups.sequential.process)": [[217, "pyVHDLParser.Groups.Sequential.Process.CaseGroup"]], "choicegroup (class in pyvhdlparser.groups.sequential.process)": [[217, "pyVHDLParser.Groups.Sequential.Process.ChoiceGroup"]], "elsifbranchgroup (class in pyvhdlparser.groups.sequential.process)": [[217, "pyVHDLParser.Groups.Sequential.Process.ElsIfBranchGroup"]], "elsebranchgroup (class in pyvhdlparser.groups.sequential.process)": [[217, "pyVHDLParser.Groups.Sequential.Process.ElseBranchGroup"]], "endblock (pyvhdlparser.groups.sequential.process.casegroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.CaseGroup.EndBlock"]], "endblock (pyvhdlparser.groups.sequential.process.choicegroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.ChoiceGroup.EndBlock"]], "endblock (pyvhdlparser.groups.sequential.process.elsifbranchgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.ElsIfBranchGroup.EndBlock"]], "endblock (pyvhdlparser.groups.sequential.process.elsebranchgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.ElseBranchGroup.EndBlock"]], "endblock (pyvhdlparser.groups.sequential.process.exitgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.ExitGroup.EndBlock"]], "endblock (pyvhdlparser.groups.sequential.process.forloopgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.ForLoopGroup.EndBlock"]], "endblock (pyvhdlparser.groups.sequential.process.ifbranchgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.IfBranchGroup.EndBlock"]], "endblock (pyvhdlparser.groups.sequential.process.ifgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.IfGroup.EndBlock"]], "endblock (pyvhdlparser.groups.sequential.process.nextgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.NextGroup.EndBlock"]], "endblock (pyvhdlparser.groups.sequential.process.processgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.ProcessGroup.EndBlock"]], "endblock (pyvhdlparser.groups.sequential.process.returngroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.ReturnGroup.EndBlock"]], "endblock (pyvhdlparser.groups.sequential.process.signalassignmentgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.SignalAssignmentGroup.EndBlock"]], "endblock (pyvhdlparser.groups.sequential.process.variableassignmentgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.VariableAssignmentGroup.EndBlock"]], "endblock (pyvhdlparser.groups.sequential.process.whileloopgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.WhileLoopGroup.EndBlock"]], "exitgroup (class in pyvhdlparser.groups.sequential.process)": [[217, "pyVHDLParser.Groups.Sequential.Process.ExitGroup"]], "forloopgroup (class in pyvhdlparser.groups.sequential.process)": [[217, "pyVHDLParser.Groups.Sequential.Process.ForLoopGroup"]], "ifbranchgroup (class in pyvhdlparser.groups.sequential.process)": [[217, "pyVHDLParser.Groups.Sequential.Process.IfBranchGroup"]], "ifgroup (class in pyvhdlparser.groups.sequential.process)": [[217, "pyVHDLParser.Groups.Sequential.Process.IfGroup"]], "innergroup (pyvhdlparser.groups.sequential.process.casegroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.CaseGroup.InnerGroup"]], "innergroup (pyvhdlparser.groups.sequential.process.choicegroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.ChoiceGroup.InnerGroup"]], "innergroup (pyvhdlparser.groups.sequential.process.elsifbranchgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.ElsIfBranchGroup.InnerGroup"]], "innergroup (pyvhdlparser.groups.sequential.process.elsebranchgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.ElseBranchGroup.InnerGroup"]], "innergroup (pyvhdlparser.groups.sequential.process.exitgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.ExitGroup.InnerGroup"]], "innergroup (pyvhdlparser.groups.sequential.process.forloopgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.ForLoopGroup.InnerGroup"]], "innergroup (pyvhdlparser.groups.sequential.process.ifbranchgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.IfBranchGroup.InnerGroup"]], "innergroup (pyvhdlparser.groups.sequential.process.ifgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.IfGroup.InnerGroup"]], "innergroup (pyvhdlparser.groups.sequential.process.nextgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.NextGroup.InnerGroup"]], "innergroup (pyvhdlparser.groups.sequential.process.processgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.ProcessGroup.InnerGroup"]], "innergroup (pyvhdlparser.groups.sequential.process.returngroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.ReturnGroup.InnerGroup"]], "innergroup (pyvhdlparser.groups.sequential.process.signalassignmentgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.SignalAssignmentGroup.InnerGroup"]], "innergroup (pyvhdlparser.groups.sequential.process.variableassignmentgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.VariableAssignmentGroup.InnerGroup"]], "innergroup (pyvhdlparser.groups.sequential.process.whileloopgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.WhileLoopGroup.InnerGroup"]], "multipart (pyvhdlparser.groups.sequential.process.casegroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.CaseGroup.MultiPart"]], "multipart (pyvhdlparser.groups.sequential.process.choicegroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.ChoiceGroup.MultiPart"]], "multipart (pyvhdlparser.groups.sequential.process.elsifbranchgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.ElsIfBranchGroup.MultiPart"]], "multipart (pyvhdlparser.groups.sequential.process.elsebranchgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.ElseBranchGroup.MultiPart"]], "multipart (pyvhdlparser.groups.sequential.process.exitgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.ExitGroup.MultiPart"]], "multipart (pyvhdlparser.groups.sequential.process.forloopgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.ForLoopGroup.MultiPart"]], "multipart (pyvhdlparser.groups.sequential.process.ifbranchgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.IfBranchGroup.MultiPart"]], "multipart (pyvhdlparser.groups.sequential.process.ifgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.IfGroup.MultiPart"]], "multipart (pyvhdlparser.groups.sequential.process.nextgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.NextGroup.MultiPart"]], "multipart (pyvhdlparser.groups.sequential.process.processgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.ProcessGroup.MultiPart"]], "multipart (pyvhdlparser.groups.sequential.process.returngroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.ReturnGroup.MultiPart"]], "multipart (pyvhdlparser.groups.sequential.process.signalassignmentgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.SignalAssignmentGroup.MultiPart"]], "multipart (pyvhdlparser.groups.sequential.process.variableassignmentgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.VariableAssignmentGroup.MultiPart"]], "multipart (pyvhdlparser.groups.sequential.process.whileloopgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.WhileLoopGroup.MultiPart"]], "nextgroup (class in pyvhdlparser.groups.sequential.process)": [[217, "pyVHDLParser.Groups.Sequential.Process.NextGroup"]], "nextgroup (pyvhdlparser.groups.sequential.process.casegroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.CaseGroup.NextGroup"]], "nextgroup (pyvhdlparser.groups.sequential.process.choicegroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.ChoiceGroup.NextGroup"]], "nextgroup (pyvhdlparser.groups.sequential.process.elsifbranchgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.ElsIfBranchGroup.NextGroup"]], "nextgroup (pyvhdlparser.groups.sequential.process.elsebranchgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.ElseBranchGroup.NextGroup"]], "nextgroup (pyvhdlparser.groups.sequential.process.exitgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.ExitGroup.NextGroup"]], "nextgroup (pyvhdlparser.groups.sequential.process.forloopgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.ForLoopGroup.NextGroup"]], "nextgroup (pyvhdlparser.groups.sequential.process.ifbranchgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.IfBranchGroup.NextGroup"]], "nextgroup (pyvhdlparser.groups.sequential.process.ifgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.IfGroup.NextGroup"]], "nextgroup (pyvhdlparser.groups.sequential.process.nextgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.NextGroup.NextGroup"]], "nextgroup (pyvhdlparser.groups.sequential.process.processgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.ProcessGroup.NextGroup"]], "nextgroup (pyvhdlparser.groups.sequential.process.returngroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.ReturnGroup.NextGroup"]], "nextgroup (pyvhdlparser.groups.sequential.process.signalassignmentgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.SignalAssignmentGroup.NextGroup"]], "nextgroup (pyvhdlparser.groups.sequential.process.variableassignmentgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.VariableAssignmentGroup.NextGroup"]], "nextgroup (pyvhdlparser.groups.sequential.process.whileloopgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.WhileLoopGroup.NextGroup"]], "processgroup (class in pyvhdlparser.groups.sequential.process)": [[217, "pyVHDLParser.Groups.Sequential.Process.ProcessGroup"]], "returngroup (class in pyvhdlparser.groups.sequential.process)": [[217, "pyVHDLParser.Groups.Sequential.Process.ReturnGroup"]], "signalassignmentgroup (class in pyvhdlparser.groups.sequential.process)": [[217, "pyVHDLParser.Groups.Sequential.Process.SignalAssignmentGroup"]], "startblock (pyvhdlparser.groups.sequential.process.casegroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.CaseGroup.StartBlock"]], "startblock (pyvhdlparser.groups.sequential.process.choicegroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.ChoiceGroup.StartBlock"]], "startblock (pyvhdlparser.groups.sequential.process.elsifbranchgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.ElsIfBranchGroup.StartBlock"]], "startblock (pyvhdlparser.groups.sequential.process.elsebranchgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.ElseBranchGroup.StartBlock"]], "startblock (pyvhdlparser.groups.sequential.process.exitgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.ExitGroup.StartBlock"]], "startblock (pyvhdlparser.groups.sequential.process.forloopgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.ForLoopGroup.StartBlock"]], "startblock (pyvhdlparser.groups.sequential.process.ifbranchgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.IfBranchGroup.StartBlock"]], "startblock (pyvhdlparser.groups.sequential.process.ifgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.IfGroup.StartBlock"]], "startblock (pyvhdlparser.groups.sequential.process.nextgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.NextGroup.StartBlock"]], "startblock (pyvhdlparser.groups.sequential.process.processgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.ProcessGroup.StartBlock"]], "startblock (pyvhdlparser.groups.sequential.process.returngroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.ReturnGroup.StartBlock"]], "startblock (pyvhdlparser.groups.sequential.process.signalassignmentgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.SignalAssignmentGroup.StartBlock"]], "startblock (pyvhdlparser.groups.sequential.process.variableassignmentgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.VariableAssignmentGroup.StartBlock"]], "startblock (pyvhdlparser.groups.sequential.process.whileloopgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.WhileLoopGroup.StartBlock"]], "variableassignmentgroup (class in pyvhdlparser.groups.sequential.process)": [[217, "pyVHDLParser.Groups.Sequential.Process.VariableAssignmentGroup"]], "whileloopgroup (class in pyvhdlparser.groups.sequential.process)": [[217, "pyVHDLParser.Groups.Sequential.Process.WhileLoopGroup"]], "__init__() (pyvhdlparser.groups.sequential.process.casegroup method)": [[217, "pyVHDLParser.Groups.Sequential.Process.CaseGroup.__init__"]], "__init__() (pyvhdlparser.groups.sequential.process.choicegroup method)": [[217, "pyVHDLParser.Groups.Sequential.Process.ChoiceGroup.__init__"]], "__init__() (pyvhdlparser.groups.sequential.process.elsifbranchgroup method)": [[217, "pyVHDLParser.Groups.Sequential.Process.ElsIfBranchGroup.__init__"]], "__init__() (pyvhdlparser.groups.sequential.process.elsebranchgroup method)": [[217, "pyVHDLParser.Groups.Sequential.Process.ElseBranchGroup.__init__"]], "__init__() (pyvhdlparser.groups.sequential.process.exitgroup method)": [[217, "pyVHDLParser.Groups.Sequential.Process.ExitGroup.__init__"]], "__init__() (pyvhdlparser.groups.sequential.process.forloopgroup method)": [[217, "pyVHDLParser.Groups.Sequential.Process.ForLoopGroup.__init__"]], "__init__() (pyvhdlparser.groups.sequential.process.ifbranchgroup method)": [[217, "pyVHDLParser.Groups.Sequential.Process.IfBranchGroup.__init__"]], "__init__() (pyvhdlparser.groups.sequential.process.ifgroup method)": [[217, "pyVHDLParser.Groups.Sequential.Process.IfGroup.__init__"]], "__init__() (pyvhdlparser.groups.sequential.process.nextgroup method)": [[217, "pyVHDLParser.Groups.Sequential.Process.NextGroup.__init__"]], "__init__() (pyvhdlparser.groups.sequential.process.processgroup method)": [[217, "pyVHDLParser.Groups.Sequential.Process.ProcessGroup.__init__"]], "__init__() (pyvhdlparser.groups.sequential.process.returngroup method)": [[217, "pyVHDLParser.Groups.Sequential.Process.ReturnGroup.__init__"]], "__init__() (pyvhdlparser.groups.sequential.process.signalassignmentgroup method)": [[217, "pyVHDLParser.Groups.Sequential.Process.SignalAssignmentGroup.__init__"]], "__init__() (pyvhdlparser.groups.sequential.process.variableassignmentgroup method)": [[217, "pyVHDLParser.Groups.Sequential.Process.VariableAssignmentGroup.__init__"]], "__init__() (pyvhdlparser.groups.sequential.process.whileloopgroup method)": [[217, "pyVHDLParser.Groups.Sequential.Process.WhileLoopGroup.__init__"]], "__repr__() (pyvhdlparser.groups.sequential.process.casegroup method)": [[217, "pyVHDLParser.Groups.Sequential.Process.CaseGroup.__repr__"]], "__repr__() (pyvhdlparser.groups.sequential.process.choicegroup method)": [[217, "pyVHDLParser.Groups.Sequential.Process.ChoiceGroup.__repr__"]], "__repr__() (pyvhdlparser.groups.sequential.process.elsifbranchgroup method)": [[217, "pyVHDLParser.Groups.Sequential.Process.ElsIfBranchGroup.__repr__"]], "__repr__() (pyvhdlparser.groups.sequential.process.elsebranchgroup method)": [[217, "pyVHDLParser.Groups.Sequential.Process.ElseBranchGroup.__repr__"]], "__repr__() (pyvhdlparser.groups.sequential.process.exitgroup method)": [[217, "pyVHDLParser.Groups.Sequential.Process.ExitGroup.__repr__"]], "__repr__() (pyvhdlparser.groups.sequential.process.forloopgroup method)": [[217, "pyVHDLParser.Groups.Sequential.Process.ForLoopGroup.__repr__"]], "__repr__() (pyvhdlparser.groups.sequential.process.ifbranchgroup method)": [[217, "pyVHDLParser.Groups.Sequential.Process.IfBranchGroup.__repr__"]], "__repr__() (pyvhdlparser.groups.sequential.process.ifgroup method)": [[217, "pyVHDLParser.Groups.Sequential.Process.IfGroup.__repr__"]], "__repr__() (pyvhdlparser.groups.sequential.process.nextgroup method)": [[217, "pyVHDLParser.Groups.Sequential.Process.NextGroup.__repr__"]], "__repr__() (pyvhdlparser.groups.sequential.process.processgroup method)": [[217, "pyVHDLParser.Groups.Sequential.Process.ProcessGroup.__repr__"]], "__repr__() (pyvhdlparser.groups.sequential.process.returngroup method)": [[217, "pyVHDLParser.Groups.Sequential.Process.ReturnGroup.__repr__"]], "__repr__() (pyvhdlparser.groups.sequential.process.signalassignmentgroup method)": [[217, "pyVHDLParser.Groups.Sequential.Process.SignalAssignmentGroup.__repr__"]], "__repr__() (pyvhdlparser.groups.sequential.process.variableassignmentgroup method)": [[217, "pyVHDLParser.Groups.Sequential.Process.VariableAssignmentGroup.__repr__"]], "__repr__() (pyvhdlparser.groups.sequential.process.whileloopgroup method)": [[217, "pyVHDLParser.Groups.Sequential.Process.WhileLoopGroup.__repr__"]], "__str__() (pyvhdlparser.groups.sequential.process.casegroup method)": [[217, "pyVHDLParser.Groups.Sequential.Process.CaseGroup.__str__"]], "__str__() (pyvhdlparser.groups.sequential.process.choicegroup method)": [[217, "pyVHDLParser.Groups.Sequential.Process.ChoiceGroup.__str__"]], "__str__() (pyvhdlparser.groups.sequential.process.elsifbranchgroup method)": [[217, "pyVHDLParser.Groups.Sequential.Process.ElsIfBranchGroup.__str__"]], "__str__() (pyvhdlparser.groups.sequential.process.elsebranchgroup method)": [[217, "pyVHDLParser.Groups.Sequential.Process.ElseBranchGroup.__str__"]], "__str__() (pyvhdlparser.groups.sequential.process.exitgroup method)": [[217, "pyVHDLParser.Groups.Sequential.Process.ExitGroup.__str__"]], "__str__() (pyvhdlparser.groups.sequential.process.forloopgroup method)": [[217, "pyVHDLParser.Groups.Sequential.Process.ForLoopGroup.__str__"]], "__str__() (pyvhdlparser.groups.sequential.process.ifbranchgroup method)": [[217, "pyVHDLParser.Groups.Sequential.Process.IfBranchGroup.__str__"]], "__str__() (pyvhdlparser.groups.sequential.process.ifgroup method)": [[217, "pyVHDLParser.Groups.Sequential.Process.IfGroup.__str__"]], "__str__() (pyvhdlparser.groups.sequential.process.nextgroup method)": [[217, "pyVHDLParser.Groups.Sequential.Process.NextGroup.__str__"]], "__str__() (pyvhdlparser.groups.sequential.process.processgroup method)": [[217, "pyVHDLParser.Groups.Sequential.Process.ProcessGroup.__str__"]], "__str__() (pyvhdlparser.groups.sequential.process.returngroup method)": [[217, "pyVHDLParser.Groups.Sequential.Process.ReturnGroup.__str__"]], "__str__() (pyvhdlparser.groups.sequential.process.signalassignmentgroup method)": [[217, "pyVHDLParser.Groups.Sequential.Process.SignalAssignmentGroup.__str__"]], "__str__() (pyvhdlparser.groups.sequential.process.variableassignmentgroup method)": [[217, "pyVHDLParser.Groups.Sequential.Process.VariableAssignmentGroup.__str__"]], "__str__() (pyvhdlparser.groups.sequential.process.whileloopgroup method)": [[217, "pyVHDLParser.Groups.Sequential.Process.WhileLoopGroup.__str__"]], "_previousgroup (pyvhdlparser.groups.sequential.process.casegroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.CaseGroup._previousGroup"]], "_previousgroup (pyvhdlparser.groups.sequential.process.choicegroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.ChoiceGroup._previousGroup"]], "_previousgroup (pyvhdlparser.groups.sequential.process.elsifbranchgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.ElsIfBranchGroup._previousGroup"]], "_previousgroup (pyvhdlparser.groups.sequential.process.elsebranchgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.ElseBranchGroup._previousGroup"]], "_previousgroup (pyvhdlparser.groups.sequential.process.exitgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.ExitGroup._previousGroup"]], "_previousgroup (pyvhdlparser.groups.sequential.process.forloopgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.ForLoopGroup._previousGroup"]], "_previousgroup (pyvhdlparser.groups.sequential.process.ifbranchgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.IfBranchGroup._previousGroup"]], "_previousgroup (pyvhdlparser.groups.sequential.process.ifgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.IfGroup._previousGroup"]], "_previousgroup (pyvhdlparser.groups.sequential.process.nextgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.NextGroup._previousGroup"]], "_previousgroup (pyvhdlparser.groups.sequential.process.processgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.ProcessGroup._previousGroup"]], "_previousgroup (pyvhdlparser.groups.sequential.process.returngroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.ReturnGroup._previousGroup"]], "_previousgroup (pyvhdlparser.groups.sequential.process.signalassignmentgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.SignalAssignmentGroup._previousGroup"]], "_previousgroup (pyvhdlparser.groups.sequential.process.variableassignmentgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.VariableAssignmentGroup._previousGroup"]], "_previousgroup (pyvhdlparser.groups.sequential.process.whileloopgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.WhileLoopGroup._previousGroup"]], "_subgroups (pyvhdlparser.groups.sequential.process.casegroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.CaseGroup._subGroups"]], "_subgroups (pyvhdlparser.groups.sequential.process.choicegroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.ChoiceGroup._subGroups"]], "_subgroups (pyvhdlparser.groups.sequential.process.elsifbranchgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.ElsIfBranchGroup._subGroups"]], "_subgroups (pyvhdlparser.groups.sequential.process.elsebranchgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.ElseBranchGroup._subGroups"]], "_subgroups (pyvhdlparser.groups.sequential.process.exitgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.ExitGroup._subGroups"]], "_subgroups (pyvhdlparser.groups.sequential.process.forloopgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.ForLoopGroup._subGroups"]], "_subgroups (pyvhdlparser.groups.sequential.process.ifbranchgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.IfBranchGroup._subGroups"]], "_subgroups (pyvhdlparser.groups.sequential.process.ifgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.IfGroup._subGroups"]], "_subgroups (pyvhdlparser.groups.sequential.process.nextgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.NextGroup._subGroups"]], "_subgroups (pyvhdlparser.groups.sequential.process.processgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.ProcessGroup._subGroups"]], "_subgroups (pyvhdlparser.groups.sequential.process.returngroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.ReturnGroup._subGroups"]], "_subgroups (pyvhdlparser.groups.sequential.process.signalassignmentgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.SignalAssignmentGroup._subGroups"]], "_subgroups (pyvhdlparser.groups.sequential.process.variableassignmentgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.VariableAssignmentGroup._subGroups"]], "_subgroups (pyvhdlparser.groups.sequential.process.whileloopgroup attribute)": [[217, "pyVHDLParser.Groups.Sequential.Process.WhileLoopGroup._subGroups"]], "pyvhdlparser.groups.sequential.process": [[217, "module-pyVHDLParser.Groups.Sequential.Process"]], "pyvhdlparser.languagemodel": [[218, "module-pyVHDLParser.LanguageModel"]], "architecture (class in pyvhdlparser.languagemodel.designunit)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Architecture"]], "configuration (class in pyvhdlparser.languagemodel.designunit)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Configuration"]], "context (class in pyvhdlparser.languagemodel.designunit)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Context"]], "contextitems (pyvhdlparser.languagemodel.designunit.architecture property)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Architecture.ContextItems"]], "contextitems (pyvhdlparser.languagemodel.designunit.configuration property)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Configuration.ContextItems"]], "contextitems (pyvhdlparser.languagemodel.designunit.context property)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Context.ContextItems"]], "contextitems (pyvhdlparser.languagemodel.designunit.entity property)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Entity.ContextItems"]], "contextitems (pyvhdlparser.languagemodel.designunit.package property)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Package.ContextItems"]], "contextitems (pyvhdlparser.languagemodel.designunit.packagebody property)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.PackageBody.ContextItems"]], "contextreferences (pyvhdlparser.languagemodel.designunit.architecture property)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Architecture.ContextReferences"]], "contextreferences (pyvhdlparser.languagemodel.designunit.configuration property)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Configuration.ContextReferences"]], "contextreferences (pyvhdlparser.languagemodel.designunit.context property)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Context.ContextReferences"]], "contextreferences (pyvhdlparser.languagemodel.designunit.entity property)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Entity.ContextReferences"]], "contextreferences (pyvhdlparser.languagemodel.designunit.package property)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Package.ContextReferences"]], "contextreferences (pyvhdlparser.languagemodel.designunit.packagebody property)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.PackageBody.ContextReferences"]], "documentation (pyvhdlparser.languagemodel.designunit.architecture property)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Architecture.Documentation"]], "documentation (pyvhdlparser.languagemodel.designunit.configuration property)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Configuration.Documentation"]], "documentation (pyvhdlparser.languagemodel.designunit.context property)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Context.Documentation"]], "documentation (pyvhdlparser.languagemodel.designunit.entity property)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Entity.Documentation"]], "documentation (pyvhdlparser.languagemodel.designunit.package property)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Package.Documentation"]], "documentation (pyvhdlparser.languagemodel.designunit.packagebody property)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.PackageBody.Documentation"]], "entity (class in pyvhdlparser.languagemodel.designunit)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Entity"]], "identifier (pyvhdlparser.languagemodel.designunit.architecture property)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Architecture.Identifier"]], "identifier (pyvhdlparser.languagemodel.designunit.configuration property)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Configuration.Identifier"]], "identifier (pyvhdlparser.languagemodel.designunit.context property)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Context.Identifier"]], "identifier (pyvhdlparser.languagemodel.designunit.entity property)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Entity.Identifier"]], "identifier (pyvhdlparser.languagemodel.designunit.package property)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Package.Identifier"]], "identifier (pyvhdlparser.languagemodel.designunit.packagebody property)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.PackageBody.Identifier"]], "libraryreferences (pyvhdlparser.languagemodel.designunit.architecture property)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Architecture.LibraryReferences"]], "libraryreferences (pyvhdlparser.languagemodel.designunit.configuration property)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Configuration.LibraryReferences"]], "libraryreferences (pyvhdlparser.languagemodel.designunit.context property)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Context.LibraryReferences"]], "libraryreferences (pyvhdlparser.languagemodel.designunit.entity property)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Entity.LibraryReferences"]], "libraryreferences (pyvhdlparser.languagemodel.designunit.package property)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Package.LibraryReferences"]], "libraryreferences (pyvhdlparser.languagemodel.designunit.packagebody property)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.PackageBody.LibraryReferences"]], "normalizedidentifier (pyvhdlparser.languagemodel.designunit.architecture property)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Architecture.NormalizedIdentifier"]], "normalizedidentifier (pyvhdlparser.languagemodel.designunit.configuration property)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Configuration.NormalizedIdentifier"]], "normalizedidentifier (pyvhdlparser.languagemodel.designunit.context property)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Context.NormalizedIdentifier"]], "normalizedidentifier (pyvhdlparser.languagemodel.designunit.entity property)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Entity.NormalizedIdentifier"]], "normalizedidentifier (pyvhdlparser.languagemodel.designunit.package property)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Package.NormalizedIdentifier"]], "normalizedidentifier (pyvhdlparser.languagemodel.designunit.packagebody property)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.PackageBody.NormalizedIdentifier"]], "package (class in pyvhdlparser.languagemodel.designunit)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Package"]], "packagebody (class in pyvhdlparser.languagemodel.designunit)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.PackageBody"]], "packagereferences (pyvhdlparser.languagemodel.designunit.architecture property)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Architecture.PackageReferences"]], "packagereferences (pyvhdlparser.languagemodel.designunit.configuration property)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Configuration.PackageReferences"]], "packagereferences (pyvhdlparser.languagemodel.designunit.context property)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Context.PackageReferences"]], "packagereferences (pyvhdlparser.languagemodel.designunit.entity property)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Entity.PackageReferences"]], "packagereferences (pyvhdlparser.languagemodel.designunit.package property)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Package.PackageReferences"]], "packagereferences (pyvhdlparser.languagemodel.designunit.packagebody property)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.PackageBody.PackageReferences"]], "parent (pyvhdlparser.languagemodel.designunit.architecture property)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Architecture.Parent"]], "parent (pyvhdlparser.languagemodel.designunit.configuration property)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Configuration.Parent"]], "parent (pyvhdlparser.languagemodel.designunit.context property)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Context.Parent"]], "parent (pyvhdlparser.languagemodel.designunit.entity property)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Entity.Parent"]], "parent (pyvhdlparser.languagemodel.designunit.package property)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Package.Parent"]], "parent (pyvhdlparser.languagemodel.designunit.packagebody property)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.PackageBody.Parent"]], "__init__() (pyvhdlparser.languagemodel.designunit.architecture method)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Architecture.__init__"]], "__init__() (pyvhdlparser.languagemodel.designunit.configuration method)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Configuration.__init__"]], "__init__() (pyvhdlparser.languagemodel.designunit.context method)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Context.__init__"]], "__init__() (pyvhdlparser.languagemodel.designunit.entity method)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Entity.__init__"]], "__init__() (pyvhdlparser.languagemodel.designunit.package method)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Package.__init__"]], "__init__() (pyvhdlparser.languagemodel.designunit.packagebody method)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.PackageBody.__init__"]], "__repr__() (pyvhdlparser.languagemodel.designunit.architecture method)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Architecture.__repr__"]], "__repr__() (pyvhdlparser.languagemodel.designunit.configuration method)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Configuration.__repr__"]], "__repr__() (pyvhdlparser.languagemodel.designunit.entity method)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Entity.__repr__"]], "__repr__() (pyvhdlparser.languagemodel.designunit.package method)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Package.__repr__"]], "__repr__() (pyvhdlparser.languagemodel.designunit.packagebody method)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.PackageBody.__repr__"]], "__str__() (pyvhdlparser.languagemodel.designunit.architecture method)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Architecture.__str__"]], "__str__() (pyvhdlparser.languagemodel.designunit.configuration method)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Configuration.__str__"]], "__str__() (pyvhdlparser.languagemodel.designunit.context method)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Context.__str__"]], "__str__() (pyvhdlparser.languagemodel.designunit.entity method)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Entity.__str__"]], "__str__() (pyvhdlparser.languagemodel.designunit.package method)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Package.__str__"]], "__str__() (pyvhdlparser.languagemodel.designunit.packagebody method)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.PackageBody.__str__"]], "_contextitems (pyvhdlparser.languagemodel.designunit.architecture attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Architecture._contextItems"]], "_contextitems (pyvhdlparser.languagemodel.designunit.configuration attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Configuration._contextItems"]], "_contextitems (pyvhdlparser.languagemodel.designunit.context attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Context._contextItems"]], "_contextitems (pyvhdlparser.languagemodel.designunit.entity attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Entity._contextItems"]], "_contextitems (pyvhdlparser.languagemodel.designunit.package attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Package._contextItems"]], "_contextitems (pyvhdlparser.languagemodel.designunit.packagebody attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.PackageBody._contextItems"]], "_contextreferences (pyvhdlparser.languagemodel.designunit.architecture attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Architecture._contextReferences"]], "_contextreferences (pyvhdlparser.languagemodel.designunit.configuration attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Configuration._contextReferences"]], "_contextreferences (pyvhdlparser.languagemodel.designunit.context attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Context._contextReferences"]], "_contextreferences (pyvhdlparser.languagemodel.designunit.entity attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Entity._contextReferences"]], "_contextreferences (pyvhdlparser.languagemodel.designunit.package attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Package._contextReferences"]], "_contextreferences (pyvhdlparser.languagemodel.designunit.packagebody attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.PackageBody._contextReferences"]], "_dependencyvertex (pyvhdlparser.languagemodel.designunit.architecture attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Architecture._dependencyVertex"]], "_dependencyvertex (pyvhdlparser.languagemodel.designunit.configuration attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Configuration._dependencyVertex"]], "_dependencyvertex (pyvhdlparser.languagemodel.designunit.context attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Context._dependencyVertex"]], "_dependencyvertex (pyvhdlparser.languagemodel.designunit.entity attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Entity._dependencyVertex"]], "_dependencyvertex (pyvhdlparser.languagemodel.designunit.package attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Package._dependencyVertex"]], "_dependencyvertex (pyvhdlparser.languagemodel.designunit.packagebody attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.PackageBody._dependencyVertex"]], "_documentation (pyvhdlparser.languagemodel.designunit.architecture attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Architecture._documentation"]], "_documentation (pyvhdlparser.languagemodel.designunit.configuration attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Configuration._documentation"]], "_documentation (pyvhdlparser.languagemodel.designunit.context attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Context._documentation"]], "_documentation (pyvhdlparser.languagemodel.designunit.entity attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Entity._documentation"]], "_documentation (pyvhdlparser.languagemodel.designunit.package attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Package._documentation"]], "_documentation (pyvhdlparser.languagemodel.designunit.packagebody attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.PackageBody._documentation"]], "_hierarchyvertex (pyvhdlparser.languagemodel.designunit.architecture attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Architecture._hierarchyVertex"]], "_hierarchyvertex (pyvhdlparser.languagemodel.designunit.configuration attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Configuration._hierarchyVertex"]], "_hierarchyvertex (pyvhdlparser.languagemodel.designunit.context attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Context._hierarchyVertex"]], "_hierarchyvertex (pyvhdlparser.languagemodel.designunit.entity attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Entity._hierarchyVertex"]], "_hierarchyvertex (pyvhdlparser.languagemodel.designunit.package attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Package._hierarchyVertex"]], "_hierarchyvertex (pyvhdlparser.languagemodel.designunit.packagebody attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.PackageBody._hierarchyVertex"]], "_identifier (pyvhdlparser.languagemodel.designunit.architecture attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Architecture._identifier"]], "_identifier (pyvhdlparser.languagemodel.designunit.configuration attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Configuration._identifier"]], "_identifier (pyvhdlparser.languagemodel.designunit.context attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Context._identifier"]], "_identifier (pyvhdlparser.languagemodel.designunit.entity attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Entity._identifier"]], "_identifier (pyvhdlparser.languagemodel.designunit.package attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Package._identifier"]], "_identifier (pyvhdlparser.languagemodel.designunit.packagebody attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.PackageBody._identifier"]], "_library (pyvhdlparser.languagemodel.designunit.architecture attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Architecture._library"]], "_library (pyvhdlparser.languagemodel.designunit.configuration attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Configuration._library"]], "_library (pyvhdlparser.languagemodel.designunit.context attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Context._library"]], "_library (pyvhdlparser.languagemodel.designunit.entity attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Entity._library"]], "_library (pyvhdlparser.languagemodel.designunit.package attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Package._library"]], "_library (pyvhdlparser.languagemodel.designunit.packagebody attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.PackageBody._library"]], "_libraryreferences (pyvhdlparser.languagemodel.designunit.architecture attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Architecture._libraryReferences"]], "_libraryreferences (pyvhdlparser.languagemodel.designunit.configuration attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Configuration._libraryReferences"]], "_libraryreferences (pyvhdlparser.languagemodel.designunit.context attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Context._libraryReferences"]], "_libraryreferences (pyvhdlparser.languagemodel.designunit.entity attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Entity._libraryReferences"]], "_libraryreferences (pyvhdlparser.languagemodel.designunit.package attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Package._libraryReferences"]], "_libraryreferences (pyvhdlparser.languagemodel.designunit.packagebody attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.PackageBody._libraryReferences"]], "_normalizedidentifier (pyvhdlparser.languagemodel.designunit.architecture attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Architecture._normalizedIdentifier"]], "_normalizedidentifier (pyvhdlparser.languagemodel.designunit.configuration attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Configuration._normalizedIdentifier"]], "_normalizedidentifier (pyvhdlparser.languagemodel.designunit.context attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Context._normalizedIdentifier"]], "_normalizedidentifier (pyvhdlparser.languagemodel.designunit.entity attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Entity._normalizedIdentifier"]], "_normalizedidentifier (pyvhdlparser.languagemodel.designunit.package attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Package._normalizedIdentifier"]], "_normalizedidentifier (pyvhdlparser.languagemodel.designunit.packagebody attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.PackageBody._normalizedIdentifier"]], "_packagereferences (pyvhdlparser.languagemodel.designunit.architecture attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Architecture._packageReferences"]], "_packagereferences (pyvhdlparser.languagemodel.designunit.configuration attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Configuration._packageReferences"]], "_packagereferences (pyvhdlparser.languagemodel.designunit.context attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Context._packageReferences"]], "_packagereferences (pyvhdlparser.languagemodel.designunit.entity attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Entity._packageReferences"]], "_packagereferences (pyvhdlparser.languagemodel.designunit.package attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Package._packageReferences"]], "_packagereferences (pyvhdlparser.languagemodel.designunit.packagebody attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.PackageBody._packageReferences"]], "_parent (pyvhdlparser.languagemodel.designunit.architecture attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Architecture._parent"]], "_parent (pyvhdlparser.languagemodel.designunit.configuration attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Configuration._parent"]], "_parent (pyvhdlparser.languagemodel.designunit.context attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Context._parent"]], "_parent (pyvhdlparser.languagemodel.designunit.entity attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Entity._parent"]], "_parent (pyvhdlparser.languagemodel.designunit.package attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Package._parent"]], "_parent (pyvhdlparser.languagemodel.designunit.packagebody attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.PackageBody._parent"]], "_referencedcontexts (pyvhdlparser.languagemodel.designunit.architecture attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Architecture._referencedContexts"]], "_referencedcontexts (pyvhdlparser.languagemodel.designunit.configuration attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Configuration._referencedContexts"]], "_referencedcontexts (pyvhdlparser.languagemodel.designunit.context attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Context._referencedContexts"]], "_referencedcontexts (pyvhdlparser.languagemodel.designunit.entity attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Entity._referencedContexts"]], "_referencedcontexts (pyvhdlparser.languagemodel.designunit.package attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Package._referencedContexts"]], "_referencedcontexts (pyvhdlparser.languagemodel.designunit.packagebody attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.PackageBody._referencedContexts"]], "_referencedlibraries (pyvhdlparser.languagemodel.designunit.architecture attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Architecture._referencedLibraries"]], "_referencedlibraries (pyvhdlparser.languagemodel.designunit.configuration attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Configuration._referencedLibraries"]], "_referencedlibraries (pyvhdlparser.languagemodel.designunit.context attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Context._referencedLibraries"]], "_referencedlibraries (pyvhdlparser.languagemodel.designunit.entity attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Entity._referencedLibraries"]], "_referencedlibraries (pyvhdlparser.languagemodel.designunit.package attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Package._referencedLibraries"]], "_referencedlibraries (pyvhdlparser.languagemodel.designunit.packagebody attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.PackageBody._referencedLibraries"]], "_referencedpackages (pyvhdlparser.languagemodel.designunit.architecture attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Architecture._referencedPackages"]], "_referencedpackages (pyvhdlparser.languagemodel.designunit.configuration attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Configuration._referencedPackages"]], "_referencedpackages (pyvhdlparser.languagemodel.designunit.context attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Context._referencedPackages"]], "_referencedpackages (pyvhdlparser.languagemodel.designunit.entity attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Entity._referencedPackages"]], "_referencedpackages (pyvhdlparser.languagemodel.designunit.package attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.Package._referencedPackages"]], "_referencedpackages (pyvhdlparser.languagemodel.designunit.packagebody attribute)": [[219, "pyVHDLParser.LanguageModel.DesignUnit.PackageBody._referencedPackages"]], "pyvhdlparser.languagemodel.designunit": [[219, "module-pyVHDLParser.LanguageModel.DesignUnit"]], "pyvhdlparser.languagemodel.expression": [[220, "module-pyVHDLParser.LanguageModel.Expression"]], "pyvhdlparser.languagemodel.interfaceitem": [[221, "module-pyVHDLParser.LanguageModel.InterfaceItem"]], "pyvhdlparser.languagemodel.reference": [[222, "module-pyVHDLParser.LanguageModel.Reference"]], "pyvhdlparser.netlistmodel": [[223, "module-pyVHDLParser.NetlistModel"]], "modelbase (class in pyvhdlparser.netlistmodel.netlistmodel)": [[224, "pyVHDLParser.NetlistModel.NetlistModel.ModelBase"]], "netlist (class in pyvhdlparser.netlistmodel.netlistmodel)": [[224, "pyVHDLParser.NetlistModel.NetlistModel.Netlist"]], "primitive (class in pyvhdlparser.netlistmodel.netlistmodel)": [[224, "pyVHDLParser.NetlistModel.NetlistModel.Primitive"]], "wire (class in pyvhdlparser.netlistmodel.netlistmodel)": [[224, "pyVHDLParser.NetlistModel.NetlistModel.Wire"]], "pyvhdlparser.netlistmodel.netlistmodel": [[224, "module-pyVHDLParser.NetlistModel.NetlistModel"]], "pyvhdlparser.simulationmodel": [[225, "module-pyVHDLParser.SimulationModel"]], "event (class in pyvhdlparser.simulationmodel.eventsystem)": [[226, "pyVHDLParser.SimulationModel.EventSystem.Event"]], "projectedwaveform (class in pyvhdlparser.simulationmodel.eventsystem)": [[226, "pyVHDLParser.SimulationModel.EventSystem.ProjectedWaveform"]], "scheduler (class in pyvhdlparser.simulationmodel.eventsystem)": [[226, "pyVHDLParser.SimulationModel.EventSystem.Scheduler"]], "timeline (class in pyvhdlparser.simulationmodel.eventsystem)": [[226, "pyVHDLParser.SimulationModel.EventSystem.TimeLine"]], "transaction (class in pyvhdlparser.simulationmodel.eventsystem)": [[226, "pyVHDLParser.SimulationModel.EventSystem.Transaction"]], "waveform (class in pyvhdlparser.simulationmodel.eventsystem)": [[226, "pyVHDLParser.SimulationModel.EventSystem.Waveform"]], "__init__() (pyvhdlparser.simulationmodel.eventsystem.event method)": [[226, "pyVHDLParser.SimulationModel.EventSystem.Event.__init__"]], "__init__() (pyvhdlparser.simulationmodel.eventsystem.projectedwaveform method)": [[226, "pyVHDLParser.SimulationModel.EventSystem.ProjectedWaveform.__init__"]], "__init__() (pyvhdlparser.simulationmodel.eventsystem.scheduler method)": [[226, "pyVHDLParser.SimulationModel.EventSystem.Scheduler.__init__"]], "__init__() (pyvhdlparser.simulationmodel.eventsystem.timeline method)": [[226, "pyVHDLParser.SimulationModel.EventSystem.TimeLine.__init__"]], "__init__() (pyvhdlparser.simulationmodel.eventsystem.transaction method)": [[226, "pyVHDLParser.SimulationModel.EventSystem.Transaction.__init__"]], "__init__() (pyvhdlparser.simulationmodel.eventsystem.waveform method)": [[226, "pyVHDLParser.SimulationModel.EventSystem.Waveform.__init__"]], "__repr__() (pyvhdlparser.simulationmodel.eventsystem.transaction method)": [[226, "pyVHDLParser.SimulationModel.EventSystem.Transaction.__repr__"]], "__str__() (pyvhdlparser.simulationmodel.eventsystem.transaction method)": [[226, "pyVHDLParser.SimulationModel.EventSystem.Transaction.__str__"]], "pyvhdlparser.simulationmodel.eventsystem": [[226, "module-pyVHDLParser.SimulationModel.EventSystem"]], "driver (class in pyvhdlparser.simulationmodel.simulationmodel)": [[227, "pyVHDLParser.SimulationModel.SimulationModel.Driver"]], "drivingvalue (class in pyvhdlparser.simulationmodel.simulationmodel)": [[227, "pyVHDLParser.SimulationModel.SimulationModel.DrivingValue"]], "path (class in pyvhdlparser.simulationmodel.simulationmodel)": [[227, "pyVHDLParser.SimulationModel.SimulationModel.Path"]], "process (class in pyvhdlparser.simulationmodel.simulationmodel)": [[227, "pyVHDLParser.SimulationModel.SimulationModel.Process"]], "resolutionfunction (class in pyvhdlparser.simulationmodel.simulationmodel)": [[227, "pyVHDLParser.SimulationModel.SimulationModel.ResolutionFunction"]], "signal (class in pyvhdlparser.simulationmodel.simulationmodel)": [[227, "pyVHDLParser.SimulationModel.SimulationModel.Signal"]], "simulation (class in pyvhdlparser.simulationmodel.simulationmodel)": [[227, "pyVHDLParser.SimulationModel.SimulationModel.Simulation"]], "source (class in pyvhdlparser.simulationmodel.simulationmodel)": [[227, "pyVHDLParser.SimulationModel.SimulationModel.Source"]], "__init__() (pyvhdlparser.simulationmodel.simulationmodel.path method)": [[227, "pyVHDLParser.SimulationModel.SimulationModel.Path.__init__"]], "__init__() (pyvhdlparser.simulationmodel.simulationmodel.process method)": [[227, "pyVHDLParser.SimulationModel.SimulationModel.Process.__init__"]], "__init__() (pyvhdlparser.simulationmodel.simulationmodel.resolutionfunction method)": [[227, "pyVHDLParser.SimulationModel.SimulationModel.ResolutionFunction.__init__"]], "__init__() (pyvhdlparser.simulationmodel.simulationmodel.signal method)": [[227, "pyVHDLParser.SimulationModel.SimulationModel.Signal.__init__"]], "__init__() (pyvhdlparser.simulationmodel.simulationmodel.simulation method)": [[227, "pyVHDLParser.SimulationModel.SimulationModel.Simulation.__init__"]], "__repr__() (pyvhdlparser.simulationmodel.simulationmodel.path method)": [[227, "pyVHDLParser.SimulationModel.SimulationModel.Path.__repr__"]], "__repr__() (pyvhdlparser.simulationmodel.simulationmodel.signal method)": [[227, "pyVHDLParser.SimulationModel.SimulationModel.Signal.__repr__"]], "__str__() (pyvhdlparser.simulationmodel.simulationmodel.path method)": [[227, "pyVHDLParser.SimulationModel.SimulationModel.Path.__str__"]], "__str__() (pyvhdlparser.simulationmodel.simulationmodel.signal method)": [[227, "pyVHDLParser.SimulationModel.SimulationModel.Signal.__str__"]], "pyvhdlparser.simulationmodel.simulationmodel": [[227, "module-pyVHDLParser.SimulationModel.SimulationModel"]], "pyvhdlparser.stylechecks": [[228, "module-pyVHDLParser.StyleChecks"]], "bitstringliteraltoken (class in pyvhdlparser.token)": [[229, "pyVHDLParser.Token.BitStringLiteralToken"]], "characterliteraltoken (class in pyvhdlparser.token)": [[229, "pyVHDLParser.Token.CharacterLiteralToken"]], "charactertoken (class in pyvhdlparser.token)": [[229, "pyVHDLParser.Token.CharacterToken"]], "charactertranslation() (in module pyvhdlparser.token)": [[229, "pyVHDLParser.Token.CharacterTranslation"]], "commenttoken (class in pyvhdlparser.token)": [[229, "pyVHDLParser.Token.CommentToken"]], "directivetoken (class in pyvhdlparser.token)": [[229, "pyVHDLParser.Token.DirectiveToken"]], "end (pyvhdlparser.token.bitstringliteraltoken attribute)": [[229, "pyVHDLParser.Token.BitStringLiteralToken.End"]], "end (pyvhdlparser.token.characterliteraltoken attribute)": [[229, "pyVHDLParser.Token.CharacterLiteralToken.End"]], "end (pyvhdlparser.token.charactertoken attribute)": [[229, "pyVHDLParser.Token.CharacterToken.End"]], "end (pyvhdlparser.token.commenttoken attribute)": [[229, "pyVHDLParser.Token.CommentToken.End"]], "end (pyvhdlparser.token.directivetoken attribute)": [[229, "pyVHDLParser.Token.DirectiveToken.End"]], "end (pyvhdlparser.token.endofdocumenttoken attribute)": [[229, "pyVHDLParser.Token.EndOfDocumentToken.End"]], "end (pyvhdlparser.token.endofsnippettoken attribute)": [[229, "pyVHDLParser.Token.EndOfSnippetToken.End"]], "end (pyvhdlparser.token.endoftoken attribute)": [[229, "pyVHDLParser.Token.EndOfToken.End"]], "end (pyvhdlparser.token.extendedidentifier attribute)": [[229, "pyVHDLParser.Token.ExtendedIdentifier.End"]], "end (pyvhdlparser.token.fusedcharactertoken attribute)": [[229, "pyVHDLParser.Token.FusedCharacterToken.End"]], "end (pyvhdlparser.token.indentationtoken attribute)": [[229, "pyVHDLParser.Token.IndentationToken.End"]], "end (pyvhdlparser.token.integerliteraltoken attribute)": [[229, "pyVHDLParser.Token.IntegerLiteralToken.End"]], "end (pyvhdlparser.token.linebreaktoken attribute)": [[229, "pyVHDLParser.Token.LinebreakToken.End"]], "end (pyvhdlparser.token.literaltoken attribute)": [[229, "pyVHDLParser.Token.LiteralToken.End"]], "end (pyvhdlparser.token.multilinecommenttoken attribute)": [[229, "pyVHDLParser.Token.MultiLineCommentToken.End"]], "end (pyvhdlparser.token.realliteraltoken attribute)": [[229, "pyVHDLParser.Token.RealLiteralToken.End"]], "end (pyvhdlparser.token.singlelinecommenttoken attribute)": [[229, "pyVHDLParser.Token.SingleLineCommentToken.End"]], "end (pyvhdlparser.token.spacetoken attribute)": [[229, "pyVHDLParser.Token.SpaceToken.End"]], "end (pyvhdlparser.token.startofdocumenttoken attribute)": [[229, "pyVHDLParser.Token.StartOfDocumentToken.End"]], "end (pyvhdlparser.token.startofsnippettoken attribute)": [[229, "pyVHDLParser.Token.StartOfSnippetToken.End"]], "end (pyvhdlparser.token.startoftoken attribute)": [[229, "pyVHDLParser.Token.StartOfToken.End"]], "end (pyvhdlparser.token.stringliteraltoken attribute)": [[229, "pyVHDLParser.Token.StringLiteralToken.End"]], "end (pyvhdlparser.token.token attribute)": [[229, "pyVHDLParser.Token.Token.End"]], "end (pyvhdlparser.token.vhdltoken attribute)": [[229, "pyVHDLParser.Token.VHDLToken.End"]], "end (pyvhdlparser.token.valuedtoken attribute)": [[229, "pyVHDLParser.Token.ValuedToken.End"]], "end (pyvhdlparser.token.wordtoken attribute)": [[229, "pyVHDLParser.Token.WordToken.End"]], "endofdocumenttoken (class in pyvhdlparser.token)": [[229, "pyVHDLParser.Token.EndOfDocumentToken"]], "endofsnippettoken (class in pyvhdlparser.token)": [[229, "pyVHDLParser.Token.EndOfSnippetToken"]], "endoftoken (class in pyvhdlparser.token)": [[229, "pyVHDLParser.Token.EndOfToken"]], "extendedidentifier (class in pyvhdlparser.token)": [[229, "pyVHDLParser.Token.ExtendedIdentifier"]], "fusedcharactertoken (class in pyvhdlparser.token)": [[229, "pyVHDLParser.Token.FusedCharacterToken"]], "indentationtoken (class in pyvhdlparser.token)": [[229, "pyVHDLParser.Token.IndentationToken"]], "integerliteraltoken (class in pyvhdlparser.token)": [[229, "pyVHDLParser.Token.IntegerLiteralToken"]], "linebreaktoken (class in pyvhdlparser.token)": [[229, "pyVHDLParser.Token.LinebreakToken"]], "literaltoken (class in pyvhdlparser.token)": [[229, "pyVHDLParser.Token.LiteralToken"]], "multilinecommenttoken (class in pyvhdlparser.token)": [[229, "pyVHDLParser.Token.MultiLineCommentToken"]], "nexttoken (pyvhdlparser.token.bitstringliteraltoken attribute)": [[229, "pyVHDLParser.Token.BitStringLiteralToken.NextToken"]], "nexttoken (pyvhdlparser.token.characterliteraltoken attribute)": [[229, "pyVHDLParser.Token.CharacterLiteralToken.NextToken"]], "nexttoken (pyvhdlparser.token.charactertoken attribute)": [[229, "pyVHDLParser.Token.CharacterToken.NextToken"]], "nexttoken (pyvhdlparser.token.commenttoken attribute)": [[229, "pyVHDLParser.Token.CommentToken.NextToken"]], "nexttoken (pyvhdlparser.token.directivetoken attribute)": [[229, "pyVHDLParser.Token.DirectiveToken.NextToken"]], "nexttoken (pyvhdlparser.token.endofdocumenttoken attribute)": [[229, "pyVHDLParser.Token.EndOfDocumentToken.NextToken"]], "nexttoken (pyvhdlparser.token.endofsnippettoken attribute)": [[229, "pyVHDLParser.Token.EndOfSnippetToken.NextToken"]], "nexttoken (pyvhdlparser.token.endoftoken attribute)": [[229, "pyVHDLParser.Token.EndOfToken.NextToken"]], "nexttoken (pyvhdlparser.token.extendedidentifier attribute)": [[229, "pyVHDLParser.Token.ExtendedIdentifier.NextToken"]], "nexttoken (pyvhdlparser.token.fusedcharactertoken attribute)": [[229, "pyVHDLParser.Token.FusedCharacterToken.NextToken"]], "nexttoken (pyvhdlparser.token.indentationtoken attribute)": [[229, "pyVHDLParser.Token.IndentationToken.NextToken"]], "nexttoken (pyvhdlparser.token.integerliteraltoken attribute)": [[229, "pyVHDLParser.Token.IntegerLiteralToken.NextToken"]], "nexttoken (pyvhdlparser.token.linebreaktoken attribute)": [[229, "pyVHDLParser.Token.LinebreakToken.NextToken"]], "nexttoken (pyvhdlparser.token.literaltoken attribute)": [[229, "pyVHDLParser.Token.LiteralToken.NextToken"]], "nexttoken (pyvhdlparser.token.multilinecommenttoken attribute)": [[229, "pyVHDLParser.Token.MultiLineCommentToken.NextToken"]], "nexttoken (pyvhdlparser.token.realliteraltoken attribute)": [[229, "pyVHDLParser.Token.RealLiteralToken.NextToken"]], "nexttoken (pyvhdlparser.token.singlelinecommenttoken attribute)": [[229, "pyVHDLParser.Token.SingleLineCommentToken.NextToken"]], "nexttoken (pyvhdlparser.token.spacetoken attribute)": [[229, "pyVHDLParser.Token.SpaceToken.NextToken"]], "nexttoken (pyvhdlparser.token.startofdocumenttoken attribute)": [[229, "pyVHDLParser.Token.StartOfDocumentToken.NextToken"]], "nexttoken (pyvhdlparser.token.startofsnippettoken attribute)": [[229, "pyVHDLParser.Token.StartOfSnippetToken.NextToken"]], "nexttoken (pyvhdlparser.token.startoftoken attribute)": [[229, "pyVHDLParser.Token.StartOfToken.NextToken"]], "nexttoken (pyvhdlparser.token.stringliteraltoken attribute)": [[229, "pyVHDLParser.Token.StringLiteralToken.NextToken"]], "nexttoken (pyvhdlparser.token.token attribute)": [[229, "pyVHDLParser.Token.Token.NextToken"]], "nexttoken (pyvhdlparser.token.vhdltoken attribute)": [[229, "pyVHDLParser.Token.VHDLToken.NextToken"]], "nexttoken (pyvhdlparser.token.valuedtoken attribute)": [[229, "pyVHDLParser.Token.ValuedToken.NextToken"]], "nexttoken (pyvhdlparser.token.wordtoken attribute)": [[229, "pyVHDLParser.Token.WordToken.NextToken"]], "realliteraltoken (class in pyvhdlparser.token)": [[229, "pyVHDLParser.Token.RealLiteralToken"]], "singlelinecommenttoken (class in pyvhdlparser.token)": [[229, "pyVHDLParser.Token.SingleLineCommentToken"]], "spacetoken (class in pyvhdlparser.token)": [[229, "pyVHDLParser.Token.SpaceToken"]], "start (pyvhdlparser.token.bitstringliteraltoken attribute)": [[229, "pyVHDLParser.Token.BitStringLiteralToken.Start"]], "start (pyvhdlparser.token.characterliteraltoken attribute)": [[229, "pyVHDLParser.Token.CharacterLiteralToken.Start"]], "start (pyvhdlparser.token.charactertoken attribute)": [[229, "pyVHDLParser.Token.CharacterToken.Start"]], "start (pyvhdlparser.token.commenttoken attribute)": [[229, "pyVHDLParser.Token.CommentToken.Start"]], "start (pyvhdlparser.token.directivetoken attribute)": [[229, "pyVHDLParser.Token.DirectiveToken.Start"]], "start (pyvhdlparser.token.endofdocumenttoken attribute)": [[229, "pyVHDLParser.Token.EndOfDocumentToken.Start"]], "start (pyvhdlparser.token.endofsnippettoken attribute)": [[229, "pyVHDLParser.Token.EndOfSnippetToken.Start"]], "start (pyvhdlparser.token.endoftoken attribute)": [[229, "pyVHDLParser.Token.EndOfToken.Start"]], "start (pyvhdlparser.token.extendedidentifier attribute)": [[229, "pyVHDLParser.Token.ExtendedIdentifier.Start"]], "start (pyvhdlparser.token.fusedcharactertoken attribute)": [[229, "pyVHDLParser.Token.FusedCharacterToken.Start"]], "start (pyvhdlparser.token.indentationtoken attribute)": [[229, "pyVHDLParser.Token.IndentationToken.Start"]], "start (pyvhdlparser.token.integerliteraltoken attribute)": [[229, "pyVHDLParser.Token.IntegerLiteralToken.Start"]], "start (pyvhdlparser.token.linebreaktoken attribute)": [[229, "pyVHDLParser.Token.LinebreakToken.Start"]], "start (pyvhdlparser.token.literaltoken attribute)": [[229, "pyVHDLParser.Token.LiteralToken.Start"]], "start (pyvhdlparser.token.multilinecommenttoken attribute)": [[229, "pyVHDLParser.Token.MultiLineCommentToken.Start"]], "start (pyvhdlparser.token.realliteraltoken attribute)": [[229, "pyVHDLParser.Token.RealLiteralToken.Start"]], "start (pyvhdlparser.token.singlelinecommenttoken attribute)": [[229, "pyVHDLParser.Token.SingleLineCommentToken.Start"]], "start (pyvhdlparser.token.spacetoken attribute)": [[229, "pyVHDLParser.Token.SpaceToken.Start"]], "start (pyvhdlparser.token.startofdocumenttoken attribute)": [[229, "pyVHDLParser.Token.StartOfDocumentToken.Start"]], "start (pyvhdlparser.token.startofsnippettoken attribute)": [[229, "pyVHDLParser.Token.StartOfSnippetToken.Start"]], "start (pyvhdlparser.token.startoftoken attribute)": [[229, "pyVHDLParser.Token.StartOfToken.Start"]], "start (pyvhdlparser.token.stringliteraltoken attribute)": [[229, "pyVHDLParser.Token.StringLiteralToken.Start"]], "start (pyvhdlparser.token.token attribute)": [[229, "pyVHDLParser.Token.Token.Start"]], "start (pyvhdlparser.token.vhdltoken attribute)": [[229, "pyVHDLParser.Token.VHDLToken.Start"]], "start (pyvhdlparser.token.valuedtoken attribute)": [[229, "pyVHDLParser.Token.ValuedToken.Start"]], "start (pyvhdlparser.token.wordtoken attribute)": [[229, "pyVHDLParser.Token.WordToken.Start"]], "startofdocumenttoken (class in pyvhdlparser.token)": [[229, "pyVHDLParser.Token.StartOfDocumentToken"]], "startofsnippettoken (class in pyvhdlparser.token)": [[229, "pyVHDLParser.Token.StartOfSnippetToken"]], "startoftoken (class in pyvhdlparser.token)": [[229, "pyVHDLParser.Token.StartOfToken"]], "stringliteraltoken (class in pyvhdlparser.token)": [[229, "pyVHDLParser.Token.StringLiteralToken"]], "token (class in pyvhdlparser.token)": [[229, "pyVHDLParser.Token.Token"]], "tokeniterator (class in pyvhdlparser.token)": [[229, "pyVHDLParser.Token.TokenIterator"]], "tokenreverseiterator (class in pyvhdlparser.token)": [[229, "pyVHDLParser.Token.TokenReverseIterator"]], "vhdltoken (class in pyvhdlparser.token)": [[229, "pyVHDLParser.Token.VHDLToken"]], "value (pyvhdlparser.token.bitstringliteraltoken attribute)": [[229, "pyVHDLParser.Token.BitStringLiteralToken.Value"]], "value (pyvhdlparser.token.characterliteraltoken attribute)": [[229, "pyVHDLParser.Token.CharacterLiteralToken.Value"]], "value (pyvhdlparser.token.charactertoken attribute)": [[229, "pyVHDLParser.Token.CharacterToken.Value"]], "value (pyvhdlparser.token.commenttoken attribute)": [[229, "pyVHDLParser.Token.CommentToken.Value"]], "value (pyvhdlparser.token.directivetoken attribute)": [[229, "pyVHDLParser.Token.DirectiveToken.Value"]], "value (pyvhdlparser.token.extendedidentifier attribute)": [[229, "pyVHDLParser.Token.ExtendedIdentifier.Value"]], "value (pyvhdlparser.token.fusedcharactertoken attribute)": [[229, "pyVHDLParser.Token.FusedCharacterToken.Value"]], "value (pyvhdlparser.token.indentationtoken attribute)": [[229, "pyVHDLParser.Token.IndentationToken.Value"]], "value (pyvhdlparser.token.integerliteraltoken attribute)": [[229, "pyVHDLParser.Token.IntegerLiteralToken.Value"]], "value (pyvhdlparser.token.linebreaktoken attribute)": [[229, "pyVHDLParser.Token.LinebreakToken.Value"]], "value (pyvhdlparser.token.literaltoken attribute)": [[229, "pyVHDLParser.Token.LiteralToken.Value"]], "value (pyvhdlparser.token.multilinecommenttoken attribute)": [[229, "pyVHDLParser.Token.MultiLineCommentToken.Value"]], "value (pyvhdlparser.token.realliteraltoken attribute)": [[229, "pyVHDLParser.Token.RealLiteralToken.Value"]], "value (pyvhdlparser.token.singlelinecommenttoken attribute)": [[229, "pyVHDLParser.Token.SingleLineCommentToken.Value"]], "value (pyvhdlparser.token.spacetoken attribute)": [[229, "pyVHDLParser.Token.SpaceToken.Value"]], "value (pyvhdlparser.token.stringliteraltoken attribute)": [[229, "pyVHDLParser.Token.StringLiteralToken.Value"]], "value (pyvhdlparser.token.vhdltoken attribute)": [[229, "pyVHDLParser.Token.VHDLToken.Value"]], "value (pyvhdlparser.token.valuedtoken attribute)": [[229, "pyVHDLParser.Token.ValuedToken.Value"]], "value (pyvhdlparser.token.wordtoken attribute)": [[229, "pyVHDLParser.Token.WordToken.Value"]], "valuedtoken (class in pyvhdlparser.token)": [[229, "pyVHDLParser.Token.ValuedToken"]], "wordtoken (class in pyvhdlparser.token)": [[229, "pyVHDLParser.Token.WordToken"]], "__eq__() (pyvhdlparser.token.bitstringliteraltoken method)": [[229, "pyVHDLParser.Token.BitStringLiteralToken.__eq__"]], "__eq__() (pyvhdlparser.token.characterliteraltoken method)": [[229, "pyVHDLParser.Token.CharacterLiteralToken.__eq__"]], "__eq__() (pyvhdlparser.token.charactertoken method)": [[229, "pyVHDLParser.Token.CharacterToken.__eq__"]], "__eq__() (pyvhdlparser.token.commenttoken method)": [[229, "pyVHDLParser.Token.CommentToken.__eq__"]], "__eq__() (pyvhdlparser.token.directivetoken method)": [[229, "pyVHDLParser.Token.DirectiveToken.__eq__"]], "__eq__() (pyvhdlparser.token.extendedidentifier method)": [[229, "pyVHDLParser.Token.ExtendedIdentifier.__eq__"]], "__eq__() (pyvhdlparser.token.fusedcharactertoken method)": [[229, "pyVHDLParser.Token.FusedCharacterToken.__eq__"]], "__eq__() (pyvhdlparser.token.indentationtoken method)": [[229, "pyVHDLParser.Token.IndentationToken.__eq__"]], "__eq__() (pyvhdlparser.token.integerliteraltoken method)": [[229, "pyVHDLParser.Token.IntegerLiteralToken.__eq__"]], "__eq__() (pyvhdlparser.token.linebreaktoken method)": [[229, "pyVHDLParser.Token.LinebreakToken.__eq__"]], "__eq__() (pyvhdlparser.token.literaltoken method)": [[229, "pyVHDLParser.Token.LiteralToken.__eq__"]], "__eq__() (pyvhdlparser.token.multilinecommenttoken method)": [[229, "pyVHDLParser.Token.MultiLineCommentToken.__eq__"]], "__eq__() (pyvhdlparser.token.realliteraltoken method)": [[229, "pyVHDLParser.Token.RealLiteralToken.__eq__"]], "__eq__() (pyvhdlparser.token.singlelinecommenttoken method)": [[229, "pyVHDLParser.Token.SingleLineCommentToken.__eq__"]], "__eq__() (pyvhdlparser.token.spacetoken method)": [[229, "pyVHDLParser.Token.SpaceToken.__eq__"]], "__eq__() (pyvhdlparser.token.stringliteraltoken method)": [[229, "pyVHDLParser.Token.StringLiteralToken.__eq__"]], "__eq__() (pyvhdlparser.token.vhdltoken method)": [[229, "pyVHDLParser.Token.VHDLToken.__eq__"]], "__eq__() (pyvhdlparser.token.valuedtoken method)": [[229, "pyVHDLParser.Token.ValuedToken.__eq__"]], "__eq__() (pyvhdlparser.token.wordtoken method)": [[229, "pyVHDLParser.Token.WordToken.__eq__"]], "__ge__() (pyvhdlparser.token.wordtoken method)": [[229, "pyVHDLParser.Token.WordToken.__ge__"]], "__hash__() (pyvhdlparser.token.bitstringliteraltoken method)": [[229, "pyVHDLParser.Token.BitStringLiteralToken.__hash__"]], "__hash__() (pyvhdlparser.token.characterliteraltoken method)": [[229, "pyVHDLParser.Token.CharacterLiteralToken.__hash__"]], "__hash__() (pyvhdlparser.token.charactertoken method)": [[229, "pyVHDLParser.Token.CharacterToken.__hash__"]], "__hash__() (pyvhdlparser.token.commenttoken method)": [[229, "pyVHDLParser.Token.CommentToken.__hash__"]], "__hash__() (pyvhdlparser.token.directivetoken method)": [[229, "pyVHDLParser.Token.DirectiveToken.__hash__"]], "__hash__() (pyvhdlparser.token.extendedidentifier method)": [[229, "pyVHDLParser.Token.ExtendedIdentifier.__hash__"]], "__hash__() (pyvhdlparser.token.fusedcharactertoken method)": [[229, "pyVHDLParser.Token.FusedCharacterToken.__hash__"]], "__hash__() (pyvhdlparser.token.indentationtoken method)": [[229, "pyVHDLParser.Token.IndentationToken.__hash__"]], "__hash__() (pyvhdlparser.token.integerliteraltoken method)": [[229, "pyVHDLParser.Token.IntegerLiteralToken.__hash__"]], "__hash__() (pyvhdlparser.token.linebreaktoken method)": [[229, "pyVHDLParser.Token.LinebreakToken.__hash__"]], "__hash__() (pyvhdlparser.token.literaltoken method)": [[229, "pyVHDLParser.Token.LiteralToken.__hash__"]], "__hash__() (pyvhdlparser.token.multilinecommenttoken method)": [[229, "pyVHDLParser.Token.MultiLineCommentToken.__hash__"]], "__hash__() (pyvhdlparser.token.realliteraltoken method)": [[229, "pyVHDLParser.Token.RealLiteralToken.__hash__"]], "__hash__() (pyvhdlparser.token.singlelinecommenttoken method)": [[229, "pyVHDLParser.Token.SingleLineCommentToken.__hash__"]], "__hash__() (pyvhdlparser.token.spacetoken method)": [[229, "pyVHDLParser.Token.SpaceToken.__hash__"]], "__hash__() (pyvhdlparser.token.stringliteraltoken method)": [[229, "pyVHDLParser.Token.StringLiteralToken.__hash__"]], "__hash__() (pyvhdlparser.token.vhdltoken method)": [[229, "pyVHDLParser.Token.VHDLToken.__hash__"]], "__hash__() (pyvhdlparser.token.valuedtoken method)": [[229, "pyVHDLParser.Token.ValuedToken.__hash__"]], "__hash__() (pyvhdlparser.token.wordtoken method)": [[229, "pyVHDLParser.Token.WordToken.__hash__"]], "__init__() (pyvhdlparser.token.bitstringliteraltoken method)": [[229, "pyVHDLParser.Token.BitStringLiteralToken.__init__"]], "__init__() (pyvhdlparser.token.characterliteraltoken method)": [[229, "pyVHDLParser.Token.CharacterLiteralToken.__init__"]], "__init__() (pyvhdlparser.token.charactertoken method)": [[229, "pyVHDLParser.Token.CharacterToken.__init__"]], "__init__() (pyvhdlparser.token.commenttoken method)": [[229, "pyVHDLParser.Token.CommentToken.__init__"]], "__init__() (pyvhdlparser.token.directivetoken method)": [[229, "pyVHDLParser.Token.DirectiveToken.__init__"]], "__init__() (pyvhdlparser.token.endofdocumenttoken method)": [[229, "pyVHDLParser.Token.EndOfDocumentToken.__init__"]], "__init__() (pyvhdlparser.token.endofsnippettoken method)": [[229, "pyVHDLParser.Token.EndOfSnippetToken.__init__"]], "__init__() (pyvhdlparser.token.endoftoken method)": [[229, "pyVHDLParser.Token.EndOfToken.__init__"]], "__init__() (pyvhdlparser.token.extendedidentifier method)": [[229, "pyVHDLParser.Token.ExtendedIdentifier.__init__"]], "__init__() (pyvhdlparser.token.fusedcharactertoken method)": [[229, "pyVHDLParser.Token.FusedCharacterToken.__init__"]], "__init__() (pyvhdlparser.token.indentationtoken method)": [[229, "pyVHDLParser.Token.IndentationToken.__init__"]], "__init__() (pyvhdlparser.token.integerliteraltoken method)": [[229, "pyVHDLParser.Token.IntegerLiteralToken.__init__"]], "__init__() (pyvhdlparser.token.linebreaktoken method)": [[229, "pyVHDLParser.Token.LinebreakToken.__init__"]], "__init__() (pyvhdlparser.token.literaltoken method)": [[229, "pyVHDLParser.Token.LiteralToken.__init__"]], "__init__() (pyvhdlparser.token.multilinecommenttoken method)": [[229, "pyVHDLParser.Token.MultiLineCommentToken.__init__"]], "__init__() (pyvhdlparser.token.realliteraltoken method)": [[229, "pyVHDLParser.Token.RealLiteralToken.__init__"]], "__init__() (pyvhdlparser.token.singlelinecommenttoken method)": [[229, "pyVHDLParser.Token.SingleLineCommentToken.__init__"]], "__init__() (pyvhdlparser.token.spacetoken method)": [[229, "pyVHDLParser.Token.SpaceToken.__init__"]], "__init__() (pyvhdlparser.token.startofdocumenttoken method)": [[229, "pyVHDLParser.Token.StartOfDocumentToken.__init__"]], "__init__() (pyvhdlparser.token.startofsnippettoken method)": [[229, "pyVHDLParser.Token.StartOfSnippetToken.__init__"]], "__init__() (pyvhdlparser.token.startoftoken method)": [[229, "pyVHDLParser.Token.StartOfToken.__init__"]], "__init__() (pyvhdlparser.token.stringliteraltoken method)": [[229, "pyVHDLParser.Token.StringLiteralToken.__init__"]], "__init__() (pyvhdlparser.token.token method)": [[229, "pyVHDLParser.Token.Token.__init__"]], "__init__() (pyvhdlparser.token.tokeniterator method)": [[229, "pyVHDLParser.Token.TokenIterator.__init__"]], "__init__() (pyvhdlparser.token.tokenreverseiterator method)": [[229, "pyVHDLParser.Token.TokenReverseIterator.__init__"]], "__init__() (pyvhdlparser.token.vhdltoken method)": [[229, "pyVHDLParser.Token.VHDLToken.__init__"]], "__init__() (pyvhdlparser.token.valuedtoken method)": [[229, "pyVHDLParser.Token.ValuedToken.__init__"]], "__init__() (pyvhdlparser.token.wordtoken method)": [[229, "pyVHDLParser.Token.WordToken.__init__"]], "__le__() (pyvhdlparser.token.wordtoken method)": [[229, "pyVHDLParser.Token.WordToken.__le__"]], "__len__() (pyvhdlparser.token.endofdocumenttoken method)": [[229, "pyVHDLParser.Token.EndOfDocumentToken.__len__"]], "__len__() (pyvhdlparser.token.endofsnippettoken method)": [[229, "pyVHDLParser.Token.EndOfSnippetToken.__len__"]], "__len__() (pyvhdlparser.token.endoftoken method)": [[229, "pyVHDLParser.Token.EndOfToken.__len__"]], "__len__() (pyvhdlparser.token.startofdocumenttoken method)": [[229, "pyVHDLParser.Token.StartOfDocumentToken.__len__"]], "__len__() (pyvhdlparser.token.startofsnippettoken method)": [[229, "pyVHDLParser.Token.StartOfSnippetToken.__len__"]], "__len__() (pyvhdlparser.token.startoftoken method)": [[229, "pyVHDLParser.Token.StartOfToken.__len__"]], "__ne__() (pyvhdlparser.token.bitstringliteraltoken method)": [[229, "pyVHDLParser.Token.BitStringLiteralToken.__ne__"]], "__ne__() (pyvhdlparser.token.characterliteraltoken method)": [[229, "pyVHDLParser.Token.CharacterLiteralToken.__ne__"]], "__ne__() (pyvhdlparser.token.charactertoken method)": [[229, "pyVHDLParser.Token.CharacterToken.__ne__"]], "__ne__() (pyvhdlparser.token.commenttoken method)": [[229, "pyVHDLParser.Token.CommentToken.__ne__"]], "__ne__() (pyvhdlparser.token.directivetoken method)": [[229, "pyVHDLParser.Token.DirectiveToken.__ne__"]], "__ne__() (pyvhdlparser.token.extendedidentifier method)": [[229, "pyVHDLParser.Token.ExtendedIdentifier.__ne__"]], "__ne__() (pyvhdlparser.token.fusedcharactertoken method)": [[229, "pyVHDLParser.Token.FusedCharacterToken.__ne__"]], "__ne__() (pyvhdlparser.token.indentationtoken method)": [[229, "pyVHDLParser.Token.IndentationToken.__ne__"]], "__ne__() (pyvhdlparser.token.integerliteraltoken method)": [[229, "pyVHDLParser.Token.IntegerLiteralToken.__ne__"]], "__ne__() (pyvhdlparser.token.linebreaktoken method)": [[229, "pyVHDLParser.Token.LinebreakToken.__ne__"]], "__ne__() (pyvhdlparser.token.literaltoken method)": [[229, "pyVHDLParser.Token.LiteralToken.__ne__"]], "__ne__() (pyvhdlparser.token.multilinecommenttoken method)": [[229, "pyVHDLParser.Token.MultiLineCommentToken.__ne__"]], "__ne__() (pyvhdlparser.token.realliteraltoken method)": [[229, "pyVHDLParser.Token.RealLiteralToken.__ne__"]], "__ne__() (pyvhdlparser.token.singlelinecommenttoken method)": [[229, "pyVHDLParser.Token.SingleLineCommentToken.__ne__"]], "__ne__() (pyvhdlparser.token.spacetoken method)": [[229, "pyVHDLParser.Token.SpaceToken.__ne__"]], "__ne__() (pyvhdlparser.token.stringliteraltoken method)": [[229, "pyVHDLParser.Token.StringLiteralToken.__ne__"]], "__ne__() (pyvhdlparser.token.vhdltoken method)": [[229, "pyVHDLParser.Token.VHDLToken.__ne__"]], "__ne__() (pyvhdlparser.token.valuedtoken method)": [[229, "pyVHDLParser.Token.ValuedToken.__ne__"]], "__ne__() (pyvhdlparser.token.wordtoken method)": [[229, "pyVHDLParser.Token.WordToken.__ne__"]], "__repr__() (pyvhdlparser.token.bitstringliteraltoken method)": [[229, "pyVHDLParser.Token.BitStringLiteralToken.__repr__"]], "__repr__() (pyvhdlparser.token.characterliteraltoken method)": [[229, "pyVHDLParser.Token.CharacterLiteralToken.__repr__"]], "__repr__() (pyvhdlparser.token.charactertoken method)": [[229, "pyVHDLParser.Token.CharacterToken.__repr__"]], "__repr__() (pyvhdlparser.token.commenttoken method)": [[229, "pyVHDLParser.Token.CommentToken.__repr__"]], "__repr__() (pyvhdlparser.token.directivetoken method)": [[229, "pyVHDLParser.Token.DirectiveToken.__repr__"]], "__repr__() (pyvhdlparser.token.endofdocumenttoken method)": [[229, "pyVHDLParser.Token.EndOfDocumentToken.__repr__"]], "__repr__() (pyvhdlparser.token.endofsnippettoken method)": [[229, "pyVHDLParser.Token.EndOfSnippetToken.__repr__"]], "__repr__() (pyvhdlparser.token.endoftoken method)": [[229, "pyVHDLParser.Token.EndOfToken.__repr__"]], "__repr__() (pyvhdlparser.token.extendedidentifier method)": [[229, "pyVHDLParser.Token.ExtendedIdentifier.__repr__"]], "__repr__() (pyvhdlparser.token.fusedcharactertoken method)": [[229, "pyVHDLParser.Token.FusedCharacterToken.__repr__"]], "__repr__() (pyvhdlparser.token.indentationtoken method)": [[229, "pyVHDLParser.Token.IndentationToken.__repr__"]], "__repr__() (pyvhdlparser.token.integerliteraltoken method)": [[229, "pyVHDLParser.Token.IntegerLiteralToken.__repr__"]], "__repr__() (pyvhdlparser.token.linebreaktoken method)": [[229, "pyVHDLParser.Token.LinebreakToken.__repr__"]], "__repr__() (pyvhdlparser.token.literaltoken method)": [[229, "pyVHDLParser.Token.LiteralToken.__repr__"]], "__repr__() (pyvhdlparser.token.multilinecommenttoken method)": [[229, "pyVHDLParser.Token.MultiLineCommentToken.__repr__"]], "__repr__() (pyvhdlparser.token.realliteraltoken method)": [[229, "pyVHDLParser.Token.RealLiteralToken.__repr__"]], "__repr__() (pyvhdlparser.token.singlelinecommenttoken method)": [[229, "pyVHDLParser.Token.SingleLineCommentToken.__repr__"]], "__repr__() (pyvhdlparser.token.spacetoken method)": [[229, "pyVHDLParser.Token.SpaceToken.__repr__"]], "__repr__() (pyvhdlparser.token.startofdocumenttoken method)": [[229, "pyVHDLParser.Token.StartOfDocumentToken.__repr__"]], "__repr__() (pyvhdlparser.token.startofsnippettoken method)": [[229, "pyVHDLParser.Token.StartOfSnippetToken.__repr__"]], "__repr__() (pyvhdlparser.token.startoftoken method)": [[229, "pyVHDLParser.Token.StartOfToken.__repr__"]], "__repr__() (pyvhdlparser.token.stringliteraltoken method)": [[229, "pyVHDLParser.Token.StringLiteralToken.__repr__"]], "__repr__() (pyvhdlparser.token.token method)": [[229, "pyVHDLParser.Token.Token.__repr__"]], "__repr__() (pyvhdlparser.token.vhdltoken method)": [[229, "pyVHDLParser.Token.VHDLToken.__repr__"]], "__repr__() (pyvhdlparser.token.valuedtoken method)": [[229, "pyVHDLParser.Token.ValuedToken.__repr__"]], "__repr__() (pyvhdlparser.token.wordtoken method)": [[229, "pyVHDLParser.Token.WordToken.__repr__"]], "__str__() (pyvhdlparser.token.bitstringliteraltoken method)": [[229, "pyVHDLParser.Token.BitStringLiteralToken.__str__"]], "__str__() (pyvhdlparser.token.characterliteraltoken method)": [[229, "pyVHDLParser.Token.CharacterLiteralToken.__str__"]], "__str__() (pyvhdlparser.token.charactertoken method)": [[229, "pyVHDLParser.Token.CharacterToken.__str__"]], "__str__() (pyvhdlparser.token.commenttoken method)": [[229, "pyVHDLParser.Token.CommentToken.__str__"]], "__str__() (pyvhdlparser.token.directivetoken method)": [[229, "pyVHDLParser.Token.DirectiveToken.__str__"]], "__str__() (pyvhdlparser.token.endofdocumenttoken method)": [[229, "pyVHDLParser.Token.EndOfDocumentToken.__str__"]], "__str__() (pyvhdlparser.token.endofsnippettoken method)": [[229, "pyVHDLParser.Token.EndOfSnippetToken.__str__"]], "__str__() (pyvhdlparser.token.endoftoken method)": [[229, "pyVHDLParser.Token.EndOfToken.__str__"]], "__str__() (pyvhdlparser.token.extendedidentifier method)": [[229, "pyVHDLParser.Token.ExtendedIdentifier.__str__"]], "__str__() (pyvhdlparser.token.fusedcharactertoken method)": [[229, "pyVHDLParser.Token.FusedCharacterToken.__str__"]], "__str__() (pyvhdlparser.token.indentationtoken method)": [[229, "pyVHDLParser.Token.IndentationToken.__str__"]], "__str__() (pyvhdlparser.token.integerliteraltoken method)": [[229, "pyVHDLParser.Token.IntegerLiteralToken.__str__"]], "__str__() (pyvhdlparser.token.linebreaktoken method)": [[229, "pyVHDLParser.Token.LinebreakToken.__str__"]], "__str__() (pyvhdlparser.token.literaltoken method)": [[229, "pyVHDLParser.Token.LiteralToken.__str__"]], "__str__() (pyvhdlparser.token.multilinecommenttoken method)": [[229, "pyVHDLParser.Token.MultiLineCommentToken.__str__"]], "__str__() (pyvhdlparser.token.realliteraltoken method)": [[229, "pyVHDLParser.Token.RealLiteralToken.__str__"]], "__str__() (pyvhdlparser.token.singlelinecommenttoken method)": [[229, "pyVHDLParser.Token.SingleLineCommentToken.__str__"]], "__str__() (pyvhdlparser.token.spacetoken method)": [[229, "pyVHDLParser.Token.SpaceToken.__str__"]], "__str__() (pyvhdlparser.token.startofdocumenttoken method)": [[229, "pyVHDLParser.Token.StartOfDocumentToken.__str__"]], "__str__() (pyvhdlparser.token.startofsnippettoken method)": [[229, "pyVHDLParser.Token.StartOfSnippetToken.__str__"]], "__str__() (pyvhdlparser.token.startoftoken method)": [[229, "pyVHDLParser.Token.StartOfToken.__str__"]], "__str__() (pyvhdlparser.token.stringliteraltoken method)": [[229, "pyVHDLParser.Token.StringLiteralToken.__str__"]], "__str__() (pyvhdlparser.token.token method)": [[229, "pyVHDLParser.Token.Token.__str__"]], "__str__() (pyvhdlparser.token.vhdltoken method)": [[229, "pyVHDLParser.Token.VHDLToken.__str__"]], "__str__() (pyvhdlparser.token.valuedtoken method)": [[229, "pyVHDLParser.Token.ValuedToken.__str__"]], "__str__() (pyvhdlparser.token.wordtoken method)": [[229, "pyVHDLParser.Token.WordToken.__str__"]], "_previoustoken (pyvhdlparser.token.bitstringliteraltoken attribute)": [[229, "pyVHDLParser.Token.BitStringLiteralToken._previousToken"]], "_previoustoken (pyvhdlparser.token.characterliteraltoken attribute)": [[229, "pyVHDLParser.Token.CharacterLiteralToken._previousToken"]], "_previoustoken (pyvhdlparser.token.charactertoken attribute)": [[229, "pyVHDLParser.Token.CharacterToken._previousToken"]], "_previoustoken (pyvhdlparser.token.commenttoken attribute)": [[229, "pyVHDLParser.Token.CommentToken._previousToken"]], "_previoustoken (pyvhdlparser.token.directivetoken attribute)": [[229, "pyVHDLParser.Token.DirectiveToken._previousToken"]], "_previoustoken (pyvhdlparser.token.endofdocumenttoken attribute)": [[229, "pyVHDLParser.Token.EndOfDocumentToken._previousToken"]], "_previoustoken (pyvhdlparser.token.endofsnippettoken attribute)": [[229, "pyVHDLParser.Token.EndOfSnippetToken._previousToken"]], "_previoustoken (pyvhdlparser.token.endoftoken attribute)": [[229, "pyVHDLParser.Token.EndOfToken._previousToken"]], "_previoustoken (pyvhdlparser.token.extendedidentifier attribute)": [[229, "pyVHDLParser.Token.ExtendedIdentifier._previousToken"]], "_previoustoken (pyvhdlparser.token.fusedcharactertoken attribute)": [[229, "pyVHDLParser.Token.FusedCharacterToken._previousToken"]], "_previoustoken (pyvhdlparser.token.indentationtoken attribute)": [[229, "pyVHDLParser.Token.IndentationToken._previousToken"]], "_previoustoken (pyvhdlparser.token.integerliteraltoken attribute)": [[229, "pyVHDLParser.Token.IntegerLiteralToken._previousToken"]], "_previoustoken (pyvhdlparser.token.linebreaktoken attribute)": [[229, "pyVHDLParser.Token.LinebreakToken._previousToken"]], "_previoustoken (pyvhdlparser.token.literaltoken attribute)": [[229, "pyVHDLParser.Token.LiteralToken._previousToken"]], "_previoustoken (pyvhdlparser.token.multilinecommenttoken attribute)": [[229, "pyVHDLParser.Token.MultiLineCommentToken._previousToken"]], "_previoustoken (pyvhdlparser.token.realliteraltoken attribute)": [[229, "pyVHDLParser.Token.RealLiteralToken._previousToken"]], "_previoustoken (pyvhdlparser.token.singlelinecommenttoken attribute)": [[229, "pyVHDLParser.Token.SingleLineCommentToken._previousToken"]], "_previoustoken (pyvhdlparser.token.spacetoken attribute)": [[229, "pyVHDLParser.Token.SpaceToken._previousToken"]], "_previoustoken (pyvhdlparser.token.startofdocumenttoken attribute)": [[229, "pyVHDLParser.Token.StartOfDocumentToken._previousToken"]], "_previoustoken (pyvhdlparser.token.startofsnippettoken attribute)": [[229, "pyVHDLParser.Token.StartOfSnippetToken._previousToken"]], "_previoustoken (pyvhdlparser.token.startoftoken attribute)": [[229, "pyVHDLParser.Token.StartOfToken._previousToken"]], "_previoustoken (pyvhdlparser.token.stringliteraltoken attribute)": [[229, "pyVHDLParser.Token.StringLiteralToken._previousToken"]], "_previoustoken (pyvhdlparser.token.token attribute)": [[229, "pyVHDLParser.Token.Token._previousToken"]], "_previoustoken (pyvhdlparser.token.vhdltoken attribute)": [[229, "pyVHDLParser.Token.VHDLToken._previousToken"]], "_previoustoken (pyvhdlparser.token.valuedtoken attribute)": [[229, "pyVHDLParser.Token.ValuedToken._previousToken"]], "_previoustoken (pyvhdlparser.token.wordtoken attribute)": [[229, "pyVHDLParser.Token.WordToken._previousToken"]], "pyvhdlparser.token": [[229, "module-pyVHDLParser.Token"]], "state (pyvhdlparser.token.tokeniterator attribute)": [[229, "pyVHDLParser.Token.TokenIterator.state"]], "state (pyvhdlparser.token.tokenreverseiterator attribute)": [[229, "pyVHDLParser.Token.TokenReverseIterator.state"]], "absoperator (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.AbsOperator"]], "accesskeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.AccessKeyword"]], "afterkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.AfterKeyword"]], "aliaskeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.AliasKeyword"]], "allkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.AllKeyword"]], "andoperator (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.AndOperator"]], "anglebrackettoken (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.AngleBracketToken"]], "architecturekeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.ArchitectureKeyword"]], "arraykeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.ArrayKeyword"]], "assertkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.AssertKeyword"]], "assignmentkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.AssignmentKeyword"]], "associationkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.AssociationKeyword"]], "attributekeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.AttributeKeyword"]], "beginkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.BeginKeyword"]], "blockkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.BlockKeyword"]], "bodykeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.BodyKeyword"]], "boundarytoken (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.BoundaryToken"]], "brackettoken (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.BracketToken"]], "bufferkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.BufferKeyword"]], "buskeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.BusKeyword"]], "casekeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.CaseKeyword"]], "closinganglebrackettoken (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.ClosingAngleBracketToken"]], "closingcurlybrackettoken (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.ClosingCurlyBracketToken"]], "closingroundbrackettoken (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.ClosingRoundBracketToken"]], "closingsquarebrackettoken (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.ClosingSquareBracketToken"]], "commentkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.CommentKeyword"]], "componentkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.ComponentKeyword"]], "concatoperator (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.ConcatOperator"]], "configurationkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.ConfigurationKeyword"]], "constantkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.ConstantKeyword"]], "contextkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.ContextKeyword"]], "curlybrackettoken (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.CurlyBracketToken"]], "defaultkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.DefaultKeyword"]], "delimitertoken (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.DelimiterToken"]], "directionkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.DirectionKeyword"]], "disconnectkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.DisconnectKeyword"]], "divideoperator (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.DivideOperator"]], "downtokeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.DowntoKeyword"]], "elsifkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.ElsIfKeyword"]], "elsekeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.ElseKeyword"]], "end (pyvhdlparser.token.keywords.absoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.AbsOperator.End"]], "end (pyvhdlparser.token.keywords.accesskeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.AccessKeyword.End"]], "end (pyvhdlparser.token.keywords.afterkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.AfterKeyword.End"]], "end (pyvhdlparser.token.keywords.aliaskeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.AliasKeyword.End"]], "end (pyvhdlparser.token.keywords.allkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.AllKeyword.End"]], "end (pyvhdlparser.token.keywords.andoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.AndOperator.End"]], "end (pyvhdlparser.token.keywords.anglebrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.AngleBracketToken.End"]], "end (pyvhdlparser.token.keywords.architecturekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ArchitectureKeyword.End"]], "end (pyvhdlparser.token.keywords.arraykeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ArrayKeyword.End"]], "end (pyvhdlparser.token.keywords.assertkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.AssertKeyword.End"]], "end (pyvhdlparser.token.keywords.assignmentkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.AssignmentKeyword.End"]], "end (pyvhdlparser.token.keywords.associationkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.AssociationKeyword.End"]], "end (pyvhdlparser.token.keywords.attributekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.AttributeKeyword.End"]], "end (pyvhdlparser.token.keywords.beginkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.BeginKeyword.End"]], "end (pyvhdlparser.token.keywords.blockkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.BlockKeyword.End"]], "end (pyvhdlparser.token.keywords.bodykeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.BodyKeyword.End"]], "end (pyvhdlparser.token.keywords.boundarytoken attribute)": [[230, "pyVHDLParser.Token.Keywords.BoundaryToken.End"]], "end (pyvhdlparser.token.keywords.brackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.BracketToken.End"]], "end (pyvhdlparser.token.keywords.bufferkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.BufferKeyword.End"]], "end (pyvhdlparser.token.keywords.buskeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.BusKeyword.End"]], "end (pyvhdlparser.token.keywords.casekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.CaseKeyword.End"]], "end (pyvhdlparser.token.keywords.closinganglebrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.ClosingAngleBracketToken.End"]], "end (pyvhdlparser.token.keywords.closingcurlybrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.ClosingCurlyBracketToken.End"]], "end (pyvhdlparser.token.keywords.closingroundbrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.ClosingRoundBracketToken.End"]], "end (pyvhdlparser.token.keywords.closingsquarebrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.ClosingSquareBracketToken.End"]], "end (pyvhdlparser.token.keywords.commentkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.CommentKeyword.End"]], "end (pyvhdlparser.token.keywords.componentkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ComponentKeyword.End"]], "end (pyvhdlparser.token.keywords.concatoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.ConcatOperator.End"]], "end (pyvhdlparser.token.keywords.configurationkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ConfigurationKeyword.End"]], "end (pyvhdlparser.token.keywords.constantkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ConstantKeyword.End"]], "end (pyvhdlparser.token.keywords.contextkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ContextKeyword.End"]], "end (pyvhdlparser.token.keywords.curlybrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.CurlyBracketToken.End"]], "end (pyvhdlparser.token.keywords.defaultkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.DefaultKeyword.End"]], "end (pyvhdlparser.token.keywords.delimitertoken attribute)": [[230, "pyVHDLParser.Token.Keywords.DelimiterToken.End"]], "end (pyvhdlparser.token.keywords.directionkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.DirectionKeyword.End"]], "end (pyvhdlparser.token.keywords.disconnectkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.DisconnectKeyword.End"]], "end (pyvhdlparser.token.keywords.divideoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.DivideOperator.End"]], "end (pyvhdlparser.token.keywords.downtokeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.DowntoKeyword.End"]], "end (pyvhdlparser.token.keywords.elsifkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ElsIfKeyword.End"]], "end (pyvhdlparser.token.keywords.elsekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ElseKeyword.End"]], "end (pyvhdlparser.token.keywords.endkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.EndKeyword.End"]], "end (pyvhdlparser.token.keywords.endtoken attribute)": [[230, "pyVHDLParser.Token.Keywords.EndToken.End"]], "end (pyvhdlparser.token.keywords.entitykeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.EntityKeyword.End"]], "end (pyvhdlparser.token.keywords.equaloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.EqualOperator.End"]], "end (pyvhdlparser.token.keywords.exitkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ExitKeyword.End"]], "end (pyvhdlparser.token.keywords.filekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.FileKeyword.End"]], "end (pyvhdlparser.token.keywords.forkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ForKeyword.End"]], "end (pyvhdlparser.token.keywords.forcekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ForceKeyword.End"]], "end (pyvhdlparser.token.keywords.functionkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.FunctionKeyword.End"]], "end (pyvhdlparser.token.keywords.generatekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.GenerateKeyword.End"]], "end (pyvhdlparser.token.keywords.generickeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.GenericKeyword.End"]], "end (pyvhdlparser.token.keywords.greaterthanoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.GreaterThanOperator.End"]], "end (pyvhdlparser.token.keywords.greaterthanorequaloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.GreaterThanOrEqualOperator.End"]], "end (pyvhdlparser.token.keywords.groupkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.GroupKeyword.End"]], "end (pyvhdlparser.token.keywords.guardedkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.GuardedKeyword.End"]], "end (pyvhdlparser.token.keywords.identifiertoken attribute)": [[230, "pyVHDLParser.Token.Keywords.IdentifierToken.End"]], "end (pyvhdlparser.token.keywords.ifkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.IfKeyword.End"]], "end (pyvhdlparser.token.keywords.impurekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ImpureKeyword.End"]], "end (pyvhdlparser.token.keywords.inkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.InKeyword.End"]], "end (pyvhdlparser.token.keywords.inertialkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.InertialKeyword.End"]], "end (pyvhdlparser.token.keywords.inoutkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.InoutKeyword.End"]], "end (pyvhdlparser.token.keywords.iskeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.IsKeyword.End"]], "end (pyvhdlparser.token.keywords.keywordtoken attribute)": [[230, "pyVHDLParser.Token.Keywords.KeywordToken.End"]], "end (pyvhdlparser.token.keywords.labelkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.LabelKeyword.End"]], "end (pyvhdlparser.token.keywords.labeltoken attribute)": [[230, "pyVHDLParser.Token.Keywords.LabelToken.End"]], "end (pyvhdlparser.token.keywords.lessthanoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.LessThanOperator.End"]], "end (pyvhdlparser.token.keywords.lessthanorequaloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.LessThanOrEqualOperator.End"]], "end (pyvhdlparser.token.keywords.librarykeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.LibraryKeyword.End"]], "end (pyvhdlparser.token.keywords.linkagekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.LinkageKeyword.End"]], "end (pyvhdlparser.token.keywords.literalkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.LiteralKeyword.End"]], "end (pyvhdlparser.token.keywords.logicaloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.LogicalOperator.End"]], "end (pyvhdlparser.token.keywords.loopkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.LoopKeyword.End"]], "end (pyvhdlparser.token.keywords.mapassociationkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.MapAssociationKeyword.End"]], "end (pyvhdlparser.token.keywords.mapkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.MapKeyword.End"]], "end (pyvhdlparser.token.keywords.matchingequaloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.MatchingEqualOperator.End"]], "end (pyvhdlparser.token.keywords.matchinggreaterthanoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.MatchingGreaterThanOperator.End"]], "end (pyvhdlparser.token.keywords.matchinggreaterthanorequaloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.MatchingGreaterThanOrEqualOperator.End"]], "end (pyvhdlparser.token.keywords.matchinglessthanoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.MatchingLessThanOperator.End"]], "end (pyvhdlparser.token.keywords.matchinglessthanorequaloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.MatchingLessThanOrEqualOperator.End"]], "end (pyvhdlparser.token.keywords.matchingunequaloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.MatchingUnequalOperator.End"]], "end (pyvhdlparser.token.keywords.minusoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.MinusOperator.End"]], "end (pyvhdlparser.token.keywords.miscellaneousoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.MiscellaneousOperator.End"]], "end (pyvhdlparser.token.keywords.modulooperator attribute)": [[230, "pyVHDLParser.Token.Keywords.ModuloOperator.End"]], "end (pyvhdlparser.token.keywords.multicharkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.MultiCharKeyword.End"]], "end (pyvhdlparser.token.keywords.multilinecommentendkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.MultiLineCommentEndKeyword.End"]], "end (pyvhdlparser.token.keywords.multilinecommentkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.MultiLineCommentKeyword.End"]], "end (pyvhdlparser.token.keywords.multilinecommentstartkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.MultiLineCommentStartKeyword.End"]], "end (pyvhdlparser.token.keywords.multiplyoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.MultiplyOperator.End"]], "end (pyvhdlparser.token.keywords.nandoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.NandOperator.End"]], "end (pyvhdlparser.token.keywords.newkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.NewKeyword.End"]], "end (pyvhdlparser.token.keywords.nextkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.NextKeyword.End"]], "end (pyvhdlparser.token.keywords.noroperator attribute)": [[230, "pyVHDLParser.Token.Keywords.NorOperator.End"]], "end (pyvhdlparser.token.keywords.notoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.NotOperator.End"]], "end (pyvhdlparser.token.keywords.nullkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.NullKeyword.End"]], "end (pyvhdlparser.token.keywords.ofkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.OfKeyword.End"]], "end (pyvhdlparser.token.keywords.onkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.OnKeyword.End"]], "end (pyvhdlparser.token.keywords.openkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.OpenKeyword.End"]], "end (pyvhdlparser.token.keywords.openinganglebrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.OpeningAngleBracketToken.End"]], "end (pyvhdlparser.token.keywords.openingcurlybrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.OpeningCurlyBracketToken.End"]], "end (pyvhdlparser.token.keywords.openingroundbrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.OpeningRoundBracketToken.End"]], "end (pyvhdlparser.token.keywords.openingsquarebrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.OpeningSquareBracketToken.End"]], "end (pyvhdlparser.token.keywords.operator attribute)": [[230, "pyVHDLParser.Token.Keywords.Operator.End"]], "end (pyvhdlparser.token.keywords.operatortoken attribute)": [[230, "pyVHDLParser.Token.Keywords.OperatorToken.End"]], "end (pyvhdlparser.token.keywords.oroperator attribute)": [[230, "pyVHDLParser.Token.Keywords.OrOperator.End"]], "end (pyvhdlparser.token.keywords.otherskeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.OthersKeyword.End"]], "end (pyvhdlparser.token.keywords.outkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.OutKeyword.End"]], "end (pyvhdlparser.token.keywords.packagekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.PackageKeyword.End"]], "end (pyvhdlparser.token.keywords.parameterkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ParameterKeyword.End"]], "end (pyvhdlparser.token.keywords.plusoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.PlusOperator.End"]], "end (pyvhdlparser.token.keywords.portkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.PortKeyword.End"]], "end (pyvhdlparser.token.keywords.postponedkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.PostponedKeyword.End"]], "end (pyvhdlparser.token.keywords.poweroperator attribute)": [[230, "pyVHDLParser.Token.Keywords.PowerOperator.End"]], "end (pyvhdlparser.token.keywords.privatekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.PrivateKeyword.End"]], "end (pyvhdlparser.token.keywords.procedurekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ProcedureKeyword.End"]], "end (pyvhdlparser.token.keywords.processkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ProcessKeyword.End"]], "end (pyvhdlparser.token.keywords.propertykeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.PropertyKeyword.End"]], "end (pyvhdlparser.token.keywords.protectedkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ProtectedKeyword.End"]], "end (pyvhdlparser.token.keywords.purekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.PureKeyword.End"]], "end (pyvhdlparser.token.keywords.rangekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.RangeKeyword.End"]], "end (pyvhdlparser.token.keywords.recordkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.RecordKeyword.End"]], "end (pyvhdlparser.token.keywords.registerkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.RegisterKeyword.End"]], "end (pyvhdlparser.token.keywords.rejectkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.RejectKeyword.End"]], "end (pyvhdlparser.token.keywords.relationaloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.RelationalOperator.End"]], "end (pyvhdlparser.token.keywords.releasekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ReleaseKeyword.End"]], "end (pyvhdlparser.token.keywords.remainderoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.RemainderOperator.End"]], "end (pyvhdlparser.token.keywords.repeatedidentifiertoken attribute)": [[230, "pyVHDLParser.Token.Keywords.RepeatedIdentifierToken.End"]], "end (pyvhdlparser.token.keywords.repeatedlabeltoken attribute)": [[230, "pyVHDLParser.Token.Keywords.RepeatedLabelToken.End"]], "end (pyvhdlparser.token.keywords.reportkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ReportKeyword.End"]], "end (pyvhdlparser.token.keywords.returnkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ReturnKeyword.End"]], "end (pyvhdlparser.token.keywords.roloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.RolOperator.End"]], "end (pyvhdlparser.token.keywords.roroperator attribute)": [[230, "pyVHDLParser.Token.Keywords.RorOperator.End"]], "end (pyvhdlparser.token.keywords.roundbrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.RoundBracketToken.End"]], "end (pyvhdlparser.token.keywords.selectkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.SelectKeyword.End"]], "end (pyvhdlparser.token.keywords.sequencekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.SequenceKeyword.End"]], "end (pyvhdlparser.token.keywords.severitykeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.SeverityKeyword.End"]], "end (pyvhdlparser.token.keywords.sharedkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.SharedKeyword.End"]], "end (pyvhdlparser.token.keywords.shiftoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.ShiftOperator.End"]], "end (pyvhdlparser.token.keywords.signalassignmentkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.SignalAssignmentKeyword.End"]], "end (pyvhdlparser.token.keywords.signalassociationkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.SignalAssociationKeyword.End"]], "end (pyvhdlparser.token.keywords.signalkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.SignalKeyword.End"]], "end (pyvhdlparser.token.keywords.simplenametoken attribute)": [[230, "pyVHDLParser.Token.Keywords.SimpleNameToken.End"]], "end (pyvhdlparser.token.keywords.singlelinecommentkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.SingleLineCommentKeyword.End"]], "end (pyvhdlparser.token.keywords.slaoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.SlaOperator.End"]], "end (pyvhdlparser.token.keywords.slloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.SllOperator.End"]], "end (pyvhdlparser.token.keywords.specificvhdltoken attribute)": [[230, "pyVHDLParser.Token.Keywords.SpecificVHDLToken.End"]], "end (pyvhdlparser.token.keywords.squarebrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.SquareBracketToken.End"]], "end (pyvhdlparser.token.keywords.sraoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.SraOperator.End"]], "end (pyvhdlparser.token.keywords.srloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.SrlOperator.End"]], "end (pyvhdlparser.token.keywords.subtypekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.SubtypeKeyword.End"]], "end (pyvhdlparser.token.keywords.thenkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ThenKeyword.End"]], "end (pyvhdlparser.token.keywords.tokeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ToKeyword.End"]], "end (pyvhdlparser.token.keywords.transportkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.TransportKeyword.End"]], "end (pyvhdlparser.token.keywords.typekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.TypeKeyword.End"]], "end (pyvhdlparser.token.keywords.unaffectedkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.UnaffectedKeyword.End"]], "end (pyvhdlparser.token.keywords.unbufferedkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.UnbufferedKeyword.End"]], "end (pyvhdlparser.token.keywords.unequaloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.UnequalOperator.End"]], "end (pyvhdlparser.token.keywords.unitskeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.UnitsKeyword.End"]], "end (pyvhdlparser.token.keywords.untilkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.UntilKeyword.End"]], "end (pyvhdlparser.token.keywords.usekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.UseKeyword.End"]], "end (pyvhdlparser.token.keywords.variableassignmentkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.VariableAssignmentKeyword.End"]], "end (pyvhdlparser.token.keywords.variablekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.VariableKeyword.End"]], "end (pyvhdlparser.token.keywords.viewkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ViewKeyword.End"]], "end (pyvhdlparser.token.keywords.vunitkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.VunitKeyword.End"]], "end (pyvhdlparser.token.keywords.waitkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.WaitKeyword.End"]], "end (pyvhdlparser.token.keywords.whenkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.WhenKeyword.End"]], "end (pyvhdlparser.token.keywords.whilekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.WhileKeyword.End"]], "end (pyvhdlparser.token.keywords.withkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.WithKeyword.End"]], "end (pyvhdlparser.token.keywords.xnoroperator attribute)": [[230, "pyVHDLParser.Token.Keywords.XnorOperator.End"]], "end (pyvhdlparser.token.keywords.xoroperator attribute)": [[230, "pyVHDLParser.Token.Keywords.XorOperator.End"]], "endkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.EndKeyword"]], "endtoken (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.EndToken"]], "entitykeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.EntityKeyword"]], "equaloperator (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.EqualOperator"]], "exitkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.ExitKeyword"]], "filekeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.FileKeyword"]], "forkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.ForKeyword"]], "forcekeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.ForceKeyword"]], "functionkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.FunctionKeyword"]], "generatekeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.GenerateKeyword"]], "generickeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.GenericKeyword"]], "greaterthanoperator (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.GreaterThanOperator"]], "greaterthanorequaloperator (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.GreaterThanOrEqualOperator"]], "groupkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.GroupKeyword"]], "guardedkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.GuardedKeyword"]], "identifiertoken (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.IdentifierToken"]], "ifkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.IfKeyword"]], "impurekeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.ImpureKeyword"]], "inkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.InKeyword"]], "inertialkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.InertialKeyword"]], "inoutkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.InoutKeyword"]], "iskeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.IsKeyword"]], "keywordtoken (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.KeywordToken"]], "labelkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.LabelKeyword"]], "labeltoken (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.LabelToken"]], "lessthanoperator (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.LessThanOperator"]], "lessthanorequaloperator (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.LessThanOrEqualOperator"]], "librarykeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.LibraryKeyword"]], "linkagekeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.LinkageKeyword"]], "literalkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.LiteralKeyword"]], "logicaloperator (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.LogicalOperator"]], "loopkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.LoopKeyword"]], "mapassociationkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.MapAssociationKeyword"]], "mapkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.MapKeyword"]], "matchingequaloperator (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.MatchingEqualOperator"]], "matchinggreaterthanoperator (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.MatchingGreaterThanOperator"]], "matchinggreaterthanorequaloperator (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.MatchingGreaterThanOrEqualOperator"]], "matchinglessthanoperator (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.MatchingLessThanOperator"]], "matchinglessthanorequaloperator (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.MatchingLessThanOrEqualOperator"]], "matchingunequaloperator (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.MatchingUnequalOperator"]], "minusoperator (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.MinusOperator"]], "miscellaneousoperator (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.MiscellaneousOperator"]], "modulooperator (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.ModuloOperator"]], "multicharkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.MultiCharKeyword"]], "multilinecommentendkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.MultiLineCommentEndKeyword"]], "multilinecommentkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.MultiLineCommentKeyword"]], "multilinecommentstartkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.MultiLineCommentStartKeyword"]], "multiplyoperator (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.MultiplyOperator"]], "nandoperator (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.NandOperator"]], "newkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.NewKeyword"]], "nextkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.NextKeyword"]], "nexttoken (pyvhdlparser.token.keywords.absoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.AbsOperator.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.accesskeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.AccessKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.afterkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.AfterKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.aliaskeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.AliasKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.allkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.AllKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.andoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.AndOperator.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.anglebrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.AngleBracketToken.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.architecturekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ArchitectureKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.arraykeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ArrayKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.assertkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.AssertKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.assignmentkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.AssignmentKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.associationkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.AssociationKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.attributekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.AttributeKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.beginkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.BeginKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.blockkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.BlockKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.bodykeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.BodyKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.boundarytoken attribute)": [[230, "pyVHDLParser.Token.Keywords.BoundaryToken.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.brackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.BracketToken.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.bufferkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.BufferKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.buskeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.BusKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.casekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.CaseKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.closinganglebrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.ClosingAngleBracketToken.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.closingcurlybrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.ClosingCurlyBracketToken.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.closingroundbrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.ClosingRoundBracketToken.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.closingsquarebrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.ClosingSquareBracketToken.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.commentkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.CommentKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.componentkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ComponentKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.concatoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.ConcatOperator.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.configurationkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ConfigurationKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.constantkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ConstantKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.contextkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ContextKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.curlybrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.CurlyBracketToken.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.defaultkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.DefaultKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.delimitertoken attribute)": [[230, "pyVHDLParser.Token.Keywords.DelimiterToken.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.directionkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.DirectionKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.disconnectkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.DisconnectKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.divideoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.DivideOperator.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.downtokeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.DowntoKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.elsifkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ElsIfKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.elsekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ElseKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.endkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.EndKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.endtoken attribute)": [[230, "pyVHDLParser.Token.Keywords.EndToken.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.entitykeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.EntityKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.equaloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.EqualOperator.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.exitkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ExitKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.filekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.FileKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.forkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ForKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.forcekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ForceKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.functionkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.FunctionKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.generatekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.GenerateKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.generickeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.GenericKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.greaterthanoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.GreaterThanOperator.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.greaterthanorequaloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.GreaterThanOrEqualOperator.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.groupkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.GroupKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.guardedkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.GuardedKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.identifiertoken attribute)": [[230, "pyVHDLParser.Token.Keywords.IdentifierToken.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.ifkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.IfKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.impurekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ImpureKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.inkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.InKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.inertialkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.InertialKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.inoutkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.InoutKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.iskeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.IsKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.keywordtoken attribute)": [[230, "pyVHDLParser.Token.Keywords.KeywordToken.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.labelkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.LabelKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.labeltoken attribute)": [[230, "pyVHDLParser.Token.Keywords.LabelToken.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.lessthanoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.LessThanOperator.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.lessthanorequaloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.LessThanOrEqualOperator.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.librarykeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.LibraryKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.linkagekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.LinkageKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.literalkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.LiteralKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.logicaloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.LogicalOperator.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.loopkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.LoopKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.mapassociationkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.MapAssociationKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.mapkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.MapKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.matchingequaloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.MatchingEqualOperator.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.matchinggreaterthanoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.MatchingGreaterThanOperator.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.matchinggreaterthanorequaloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.MatchingGreaterThanOrEqualOperator.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.matchinglessthanoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.MatchingLessThanOperator.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.matchinglessthanorequaloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.MatchingLessThanOrEqualOperator.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.matchingunequaloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.MatchingUnequalOperator.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.minusoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.MinusOperator.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.miscellaneousoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.MiscellaneousOperator.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.modulooperator attribute)": [[230, "pyVHDLParser.Token.Keywords.ModuloOperator.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.multicharkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.MultiCharKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.multilinecommentendkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.MultiLineCommentEndKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.multilinecommentkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.MultiLineCommentKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.multilinecommentstartkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.MultiLineCommentStartKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.multiplyoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.MultiplyOperator.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.nandoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.NandOperator.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.newkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.NewKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.nextkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.NextKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.noroperator attribute)": [[230, "pyVHDLParser.Token.Keywords.NorOperator.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.notoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.NotOperator.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.nullkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.NullKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.ofkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.OfKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.onkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.OnKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.openkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.OpenKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.openinganglebrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.OpeningAngleBracketToken.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.openingcurlybrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.OpeningCurlyBracketToken.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.openingroundbrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.OpeningRoundBracketToken.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.openingsquarebrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.OpeningSquareBracketToken.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.operator attribute)": [[230, "pyVHDLParser.Token.Keywords.Operator.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.operatortoken attribute)": [[230, "pyVHDLParser.Token.Keywords.OperatorToken.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.oroperator attribute)": [[230, "pyVHDLParser.Token.Keywords.OrOperator.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.otherskeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.OthersKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.outkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.OutKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.packagekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.PackageKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.parameterkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ParameterKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.plusoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.PlusOperator.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.portkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.PortKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.postponedkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.PostponedKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.poweroperator attribute)": [[230, "pyVHDLParser.Token.Keywords.PowerOperator.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.privatekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.PrivateKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.procedurekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ProcedureKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.processkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ProcessKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.propertykeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.PropertyKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.protectedkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ProtectedKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.purekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.PureKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.rangekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.RangeKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.recordkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.RecordKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.registerkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.RegisterKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.rejectkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.RejectKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.relationaloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.RelationalOperator.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.releasekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ReleaseKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.remainderoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.RemainderOperator.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.repeatedidentifiertoken attribute)": [[230, "pyVHDLParser.Token.Keywords.RepeatedIdentifierToken.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.repeatedlabeltoken attribute)": [[230, "pyVHDLParser.Token.Keywords.RepeatedLabelToken.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.reportkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ReportKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.returnkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ReturnKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.roloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.RolOperator.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.roroperator attribute)": [[230, "pyVHDLParser.Token.Keywords.RorOperator.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.roundbrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.RoundBracketToken.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.selectkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.SelectKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.sequencekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.SequenceKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.severitykeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.SeverityKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.sharedkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.SharedKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.shiftoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.ShiftOperator.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.signalassignmentkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.SignalAssignmentKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.signalassociationkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.SignalAssociationKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.signalkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.SignalKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.simplenametoken attribute)": [[230, "pyVHDLParser.Token.Keywords.SimpleNameToken.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.singlelinecommentkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.SingleLineCommentKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.slaoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.SlaOperator.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.slloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.SllOperator.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.specificvhdltoken attribute)": [[230, "pyVHDLParser.Token.Keywords.SpecificVHDLToken.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.squarebrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.SquareBracketToken.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.sraoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.SraOperator.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.srloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.SrlOperator.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.subtypekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.SubtypeKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.thenkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ThenKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.tokeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ToKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.transportkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.TransportKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.typekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.TypeKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.unaffectedkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.UnaffectedKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.unbufferedkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.UnbufferedKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.unequaloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.UnequalOperator.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.unitskeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.UnitsKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.untilkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.UntilKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.usekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.UseKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.variableassignmentkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.VariableAssignmentKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.variablekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.VariableKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.viewkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ViewKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.vunitkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.VunitKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.waitkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.WaitKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.whenkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.WhenKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.whilekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.WhileKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.withkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.WithKeyword.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.xnoroperator attribute)": [[230, "pyVHDLParser.Token.Keywords.XnorOperator.NextToken"]], "nexttoken (pyvhdlparser.token.keywords.xoroperator attribute)": [[230, "pyVHDLParser.Token.Keywords.XorOperator.NextToken"]], "noroperator (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.NorOperator"]], "notoperator (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.NotOperator"]], "nullkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.NullKeyword"]], "ofkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.OfKeyword"]], "onkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.OnKeyword"]], "openkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.OpenKeyword"]], "openinganglebrackettoken (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.OpeningAngleBracketToken"]], "openingcurlybrackettoken (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.OpeningCurlyBracketToken"]], "openingroundbrackettoken (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.OpeningRoundBracketToken"]], "openingsquarebrackettoken (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.OpeningSquareBracketToken"]], "operator (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.Operator"]], "operatortoken (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.OperatorToken"]], "oroperator (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.OrOperator"]], "otherskeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.OthersKeyword"]], "outkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.OutKeyword"]], "packagekeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.PackageKeyword"]], "parameterkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.ParameterKeyword"]], "plusoperator (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.PlusOperator"]], "portkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.PortKeyword"]], "postponedkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.PostponedKeyword"]], "poweroperator (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.PowerOperator"]], "privatekeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.PrivateKeyword"]], "procedurekeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.ProcedureKeyword"]], "processkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.ProcessKeyword"]], "propertykeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.PropertyKeyword"]], "protectedkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.ProtectedKeyword"]], "purekeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.PureKeyword"]], "rangekeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.RangeKeyword"]], "recordkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.RecordKeyword"]], "registerkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.RegisterKeyword"]], "rejectkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.RejectKeyword"]], "relationaloperator (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.RelationalOperator"]], "releasekeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.ReleaseKeyword"]], "remainderoperator (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.RemainderOperator"]], "repeatedidentifiertoken (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.RepeatedIdentifierToken"]], "repeatedlabeltoken (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.RepeatedLabelToken"]], "reportkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.ReportKeyword"]], "returnkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.ReturnKeyword"]], "roloperator (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.RolOperator"]], "roroperator (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.RorOperator"]], "roundbrackettoken (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.RoundBracketToken"]], "selectkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.SelectKeyword"]], "sequencekeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.SequenceKeyword"]], "severitykeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.SeverityKeyword"]], "sharedkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.SharedKeyword"]], "shiftoperator (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.ShiftOperator"]], "signalassignmentkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.SignalAssignmentKeyword"]], "signalassociationkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.SignalAssociationKeyword"]], "signalkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.SignalKeyword"]], "simplenametoken (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.SimpleNameToken"]], "singlelinecommentkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.SingleLineCommentKeyword"]], "slaoperator (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.SlaOperator"]], "slloperator (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.SllOperator"]], "specificvhdltoken (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.SpecificVHDLToken"]], "squarebrackettoken (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.SquareBracketToken"]], "sraoperator (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.SraOperator"]], "srloperator (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.SrlOperator"]], "start (pyvhdlparser.token.keywords.absoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.AbsOperator.Start"]], "start (pyvhdlparser.token.keywords.accesskeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.AccessKeyword.Start"]], "start (pyvhdlparser.token.keywords.afterkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.AfterKeyword.Start"]], "start (pyvhdlparser.token.keywords.aliaskeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.AliasKeyword.Start"]], "start (pyvhdlparser.token.keywords.allkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.AllKeyword.Start"]], "start (pyvhdlparser.token.keywords.andoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.AndOperator.Start"]], "start (pyvhdlparser.token.keywords.anglebrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.AngleBracketToken.Start"]], "start (pyvhdlparser.token.keywords.architecturekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ArchitectureKeyword.Start"]], "start (pyvhdlparser.token.keywords.arraykeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ArrayKeyword.Start"]], "start (pyvhdlparser.token.keywords.assertkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.AssertKeyword.Start"]], "start (pyvhdlparser.token.keywords.assignmentkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.AssignmentKeyword.Start"]], "start (pyvhdlparser.token.keywords.associationkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.AssociationKeyword.Start"]], "start (pyvhdlparser.token.keywords.attributekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.AttributeKeyword.Start"]], "start (pyvhdlparser.token.keywords.beginkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.BeginKeyword.Start"]], "start (pyvhdlparser.token.keywords.blockkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.BlockKeyword.Start"]], "start (pyvhdlparser.token.keywords.bodykeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.BodyKeyword.Start"]], "start (pyvhdlparser.token.keywords.boundarytoken attribute)": [[230, "pyVHDLParser.Token.Keywords.BoundaryToken.Start"]], "start (pyvhdlparser.token.keywords.brackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.BracketToken.Start"]], "start (pyvhdlparser.token.keywords.bufferkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.BufferKeyword.Start"]], "start (pyvhdlparser.token.keywords.buskeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.BusKeyword.Start"]], "start (pyvhdlparser.token.keywords.casekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.CaseKeyword.Start"]], "start (pyvhdlparser.token.keywords.closinganglebrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.ClosingAngleBracketToken.Start"]], "start (pyvhdlparser.token.keywords.closingcurlybrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.ClosingCurlyBracketToken.Start"]], "start (pyvhdlparser.token.keywords.closingroundbrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.ClosingRoundBracketToken.Start"]], "start (pyvhdlparser.token.keywords.closingsquarebrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.ClosingSquareBracketToken.Start"]], "start (pyvhdlparser.token.keywords.commentkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.CommentKeyword.Start"]], "start (pyvhdlparser.token.keywords.componentkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ComponentKeyword.Start"]], "start (pyvhdlparser.token.keywords.concatoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.ConcatOperator.Start"]], "start (pyvhdlparser.token.keywords.configurationkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ConfigurationKeyword.Start"]], "start (pyvhdlparser.token.keywords.constantkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ConstantKeyword.Start"]], "start (pyvhdlparser.token.keywords.contextkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ContextKeyword.Start"]], "start (pyvhdlparser.token.keywords.curlybrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.CurlyBracketToken.Start"]], "start (pyvhdlparser.token.keywords.defaultkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.DefaultKeyword.Start"]], "start (pyvhdlparser.token.keywords.delimitertoken attribute)": [[230, "pyVHDLParser.Token.Keywords.DelimiterToken.Start"]], "start (pyvhdlparser.token.keywords.directionkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.DirectionKeyword.Start"]], "start (pyvhdlparser.token.keywords.disconnectkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.DisconnectKeyword.Start"]], "start (pyvhdlparser.token.keywords.divideoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.DivideOperator.Start"]], "start (pyvhdlparser.token.keywords.downtokeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.DowntoKeyword.Start"]], "start (pyvhdlparser.token.keywords.elsifkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ElsIfKeyword.Start"]], "start (pyvhdlparser.token.keywords.elsekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ElseKeyword.Start"]], "start (pyvhdlparser.token.keywords.endkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.EndKeyword.Start"]], "start (pyvhdlparser.token.keywords.endtoken attribute)": [[230, "pyVHDLParser.Token.Keywords.EndToken.Start"]], "start (pyvhdlparser.token.keywords.entitykeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.EntityKeyword.Start"]], "start (pyvhdlparser.token.keywords.equaloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.EqualOperator.Start"]], "start (pyvhdlparser.token.keywords.exitkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ExitKeyword.Start"]], "start (pyvhdlparser.token.keywords.filekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.FileKeyword.Start"]], "start (pyvhdlparser.token.keywords.forkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ForKeyword.Start"]], "start (pyvhdlparser.token.keywords.forcekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ForceKeyword.Start"]], "start (pyvhdlparser.token.keywords.functionkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.FunctionKeyword.Start"]], "start (pyvhdlparser.token.keywords.generatekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.GenerateKeyword.Start"]], "start (pyvhdlparser.token.keywords.generickeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.GenericKeyword.Start"]], "start (pyvhdlparser.token.keywords.greaterthanoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.GreaterThanOperator.Start"]], "start (pyvhdlparser.token.keywords.greaterthanorequaloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.GreaterThanOrEqualOperator.Start"]], "start (pyvhdlparser.token.keywords.groupkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.GroupKeyword.Start"]], "start (pyvhdlparser.token.keywords.guardedkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.GuardedKeyword.Start"]], "start (pyvhdlparser.token.keywords.identifiertoken attribute)": [[230, "pyVHDLParser.Token.Keywords.IdentifierToken.Start"]], "start (pyvhdlparser.token.keywords.ifkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.IfKeyword.Start"]], "start (pyvhdlparser.token.keywords.impurekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ImpureKeyword.Start"]], "start (pyvhdlparser.token.keywords.inkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.InKeyword.Start"]], "start (pyvhdlparser.token.keywords.inertialkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.InertialKeyword.Start"]], "start (pyvhdlparser.token.keywords.inoutkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.InoutKeyword.Start"]], "start (pyvhdlparser.token.keywords.iskeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.IsKeyword.Start"]], "start (pyvhdlparser.token.keywords.keywordtoken attribute)": [[230, "pyVHDLParser.Token.Keywords.KeywordToken.Start"]], "start (pyvhdlparser.token.keywords.labelkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.LabelKeyword.Start"]], "start (pyvhdlparser.token.keywords.labeltoken attribute)": [[230, "pyVHDLParser.Token.Keywords.LabelToken.Start"]], "start (pyvhdlparser.token.keywords.lessthanoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.LessThanOperator.Start"]], "start (pyvhdlparser.token.keywords.lessthanorequaloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.LessThanOrEqualOperator.Start"]], "start (pyvhdlparser.token.keywords.librarykeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.LibraryKeyword.Start"]], "start (pyvhdlparser.token.keywords.linkagekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.LinkageKeyword.Start"]], "start (pyvhdlparser.token.keywords.literalkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.LiteralKeyword.Start"]], "start (pyvhdlparser.token.keywords.logicaloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.LogicalOperator.Start"]], "start (pyvhdlparser.token.keywords.loopkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.LoopKeyword.Start"]], "start (pyvhdlparser.token.keywords.mapassociationkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.MapAssociationKeyword.Start"]], "start (pyvhdlparser.token.keywords.mapkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.MapKeyword.Start"]], "start (pyvhdlparser.token.keywords.matchingequaloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.MatchingEqualOperator.Start"]], "start (pyvhdlparser.token.keywords.matchinggreaterthanoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.MatchingGreaterThanOperator.Start"]], "start (pyvhdlparser.token.keywords.matchinggreaterthanorequaloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.MatchingGreaterThanOrEqualOperator.Start"]], "start (pyvhdlparser.token.keywords.matchinglessthanoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.MatchingLessThanOperator.Start"]], "start (pyvhdlparser.token.keywords.matchinglessthanorequaloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.MatchingLessThanOrEqualOperator.Start"]], "start (pyvhdlparser.token.keywords.matchingunequaloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.MatchingUnequalOperator.Start"]], "start (pyvhdlparser.token.keywords.minusoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.MinusOperator.Start"]], "start (pyvhdlparser.token.keywords.miscellaneousoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.MiscellaneousOperator.Start"]], "start (pyvhdlparser.token.keywords.modulooperator attribute)": [[230, "pyVHDLParser.Token.Keywords.ModuloOperator.Start"]], "start (pyvhdlparser.token.keywords.multicharkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.MultiCharKeyword.Start"]], "start (pyvhdlparser.token.keywords.multilinecommentendkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.MultiLineCommentEndKeyword.Start"]], "start (pyvhdlparser.token.keywords.multilinecommentkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.MultiLineCommentKeyword.Start"]], "start (pyvhdlparser.token.keywords.multilinecommentstartkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.MultiLineCommentStartKeyword.Start"]], "start (pyvhdlparser.token.keywords.multiplyoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.MultiplyOperator.Start"]], "start (pyvhdlparser.token.keywords.nandoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.NandOperator.Start"]], "start (pyvhdlparser.token.keywords.newkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.NewKeyword.Start"]], "start (pyvhdlparser.token.keywords.nextkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.NextKeyword.Start"]], "start (pyvhdlparser.token.keywords.noroperator attribute)": [[230, "pyVHDLParser.Token.Keywords.NorOperator.Start"]], "start (pyvhdlparser.token.keywords.notoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.NotOperator.Start"]], "start (pyvhdlparser.token.keywords.nullkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.NullKeyword.Start"]], "start (pyvhdlparser.token.keywords.ofkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.OfKeyword.Start"]], "start (pyvhdlparser.token.keywords.onkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.OnKeyword.Start"]], "start (pyvhdlparser.token.keywords.openkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.OpenKeyword.Start"]], "start (pyvhdlparser.token.keywords.openinganglebrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.OpeningAngleBracketToken.Start"]], "start (pyvhdlparser.token.keywords.openingcurlybrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.OpeningCurlyBracketToken.Start"]], "start (pyvhdlparser.token.keywords.openingroundbrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.OpeningRoundBracketToken.Start"]], "start (pyvhdlparser.token.keywords.openingsquarebrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.OpeningSquareBracketToken.Start"]], "start (pyvhdlparser.token.keywords.operator attribute)": [[230, "pyVHDLParser.Token.Keywords.Operator.Start"]], "start (pyvhdlparser.token.keywords.operatortoken attribute)": [[230, "pyVHDLParser.Token.Keywords.OperatorToken.Start"]], "start (pyvhdlparser.token.keywords.oroperator attribute)": [[230, "pyVHDLParser.Token.Keywords.OrOperator.Start"]], "start (pyvhdlparser.token.keywords.otherskeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.OthersKeyword.Start"]], "start (pyvhdlparser.token.keywords.outkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.OutKeyword.Start"]], "start (pyvhdlparser.token.keywords.packagekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.PackageKeyword.Start"]], "start (pyvhdlparser.token.keywords.parameterkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ParameterKeyword.Start"]], "start (pyvhdlparser.token.keywords.plusoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.PlusOperator.Start"]], "start (pyvhdlparser.token.keywords.portkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.PortKeyword.Start"]], "start (pyvhdlparser.token.keywords.postponedkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.PostponedKeyword.Start"]], "start (pyvhdlparser.token.keywords.poweroperator attribute)": [[230, "pyVHDLParser.Token.Keywords.PowerOperator.Start"]], "start (pyvhdlparser.token.keywords.privatekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.PrivateKeyword.Start"]], "start (pyvhdlparser.token.keywords.procedurekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ProcedureKeyword.Start"]], "start (pyvhdlparser.token.keywords.processkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ProcessKeyword.Start"]], "start (pyvhdlparser.token.keywords.propertykeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.PropertyKeyword.Start"]], "start (pyvhdlparser.token.keywords.protectedkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ProtectedKeyword.Start"]], "start (pyvhdlparser.token.keywords.purekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.PureKeyword.Start"]], "start (pyvhdlparser.token.keywords.rangekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.RangeKeyword.Start"]], "start (pyvhdlparser.token.keywords.recordkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.RecordKeyword.Start"]], "start (pyvhdlparser.token.keywords.registerkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.RegisterKeyword.Start"]], "start (pyvhdlparser.token.keywords.rejectkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.RejectKeyword.Start"]], "start (pyvhdlparser.token.keywords.relationaloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.RelationalOperator.Start"]], "start (pyvhdlparser.token.keywords.releasekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ReleaseKeyword.Start"]], "start (pyvhdlparser.token.keywords.remainderoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.RemainderOperator.Start"]], "start (pyvhdlparser.token.keywords.repeatedidentifiertoken attribute)": [[230, "pyVHDLParser.Token.Keywords.RepeatedIdentifierToken.Start"]], "start (pyvhdlparser.token.keywords.repeatedlabeltoken attribute)": [[230, "pyVHDLParser.Token.Keywords.RepeatedLabelToken.Start"]], "start (pyvhdlparser.token.keywords.reportkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ReportKeyword.Start"]], "start (pyvhdlparser.token.keywords.returnkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ReturnKeyword.Start"]], "start (pyvhdlparser.token.keywords.roloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.RolOperator.Start"]], "start (pyvhdlparser.token.keywords.roroperator attribute)": [[230, "pyVHDLParser.Token.Keywords.RorOperator.Start"]], "start (pyvhdlparser.token.keywords.roundbrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.RoundBracketToken.Start"]], "start (pyvhdlparser.token.keywords.selectkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.SelectKeyword.Start"]], "start (pyvhdlparser.token.keywords.sequencekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.SequenceKeyword.Start"]], "start (pyvhdlparser.token.keywords.severitykeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.SeverityKeyword.Start"]], "start (pyvhdlparser.token.keywords.sharedkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.SharedKeyword.Start"]], "start (pyvhdlparser.token.keywords.shiftoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.ShiftOperator.Start"]], "start (pyvhdlparser.token.keywords.signalassignmentkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.SignalAssignmentKeyword.Start"]], "start (pyvhdlparser.token.keywords.signalassociationkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.SignalAssociationKeyword.Start"]], "start (pyvhdlparser.token.keywords.signalkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.SignalKeyword.Start"]], "start (pyvhdlparser.token.keywords.simplenametoken attribute)": [[230, "pyVHDLParser.Token.Keywords.SimpleNameToken.Start"]], "start (pyvhdlparser.token.keywords.singlelinecommentkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.SingleLineCommentKeyword.Start"]], "start (pyvhdlparser.token.keywords.slaoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.SlaOperator.Start"]], "start (pyvhdlparser.token.keywords.slloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.SllOperator.Start"]], "start (pyvhdlparser.token.keywords.specificvhdltoken attribute)": [[230, "pyVHDLParser.Token.Keywords.SpecificVHDLToken.Start"]], "start (pyvhdlparser.token.keywords.squarebrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.SquareBracketToken.Start"]], "start (pyvhdlparser.token.keywords.sraoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.SraOperator.Start"]], "start (pyvhdlparser.token.keywords.srloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.SrlOperator.Start"]], "start (pyvhdlparser.token.keywords.subtypekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.SubtypeKeyword.Start"]], "start (pyvhdlparser.token.keywords.thenkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ThenKeyword.Start"]], "start (pyvhdlparser.token.keywords.tokeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ToKeyword.Start"]], "start (pyvhdlparser.token.keywords.transportkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.TransportKeyword.Start"]], "start (pyvhdlparser.token.keywords.typekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.TypeKeyword.Start"]], "start (pyvhdlparser.token.keywords.unaffectedkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.UnaffectedKeyword.Start"]], "start (pyvhdlparser.token.keywords.unbufferedkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.UnbufferedKeyword.Start"]], "start (pyvhdlparser.token.keywords.unequaloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.UnequalOperator.Start"]], "start (pyvhdlparser.token.keywords.unitskeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.UnitsKeyword.Start"]], "start (pyvhdlparser.token.keywords.untilkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.UntilKeyword.Start"]], "start (pyvhdlparser.token.keywords.usekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.UseKeyword.Start"]], "start (pyvhdlparser.token.keywords.variableassignmentkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.VariableAssignmentKeyword.Start"]], "start (pyvhdlparser.token.keywords.variablekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.VariableKeyword.Start"]], "start (pyvhdlparser.token.keywords.viewkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ViewKeyword.Start"]], "start (pyvhdlparser.token.keywords.vunitkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.VunitKeyword.Start"]], "start (pyvhdlparser.token.keywords.waitkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.WaitKeyword.Start"]], "start (pyvhdlparser.token.keywords.whenkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.WhenKeyword.Start"]], "start (pyvhdlparser.token.keywords.whilekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.WhileKeyword.Start"]], "start (pyvhdlparser.token.keywords.withkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.WithKeyword.Start"]], "start (pyvhdlparser.token.keywords.xnoroperator attribute)": [[230, "pyVHDLParser.Token.Keywords.XnorOperator.Start"]], "start (pyvhdlparser.token.keywords.xoroperator attribute)": [[230, "pyVHDLParser.Token.Keywords.XorOperator.Start"]], "subtypekeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.SubtypeKeyword"]], "thenkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.ThenKeyword"]], "tokeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.ToKeyword"]], "transportkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.TransportKeyword"]], "typekeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.TypeKeyword"]], "unaffectedkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.UnaffectedKeyword"]], "unbufferedkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.UnbufferedKeyword"]], "unequaloperator (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.UnequalOperator"]], "unitskeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.UnitsKeyword"]], "untilkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.UntilKeyword"]], "usekeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.UseKeyword"]], "value (pyvhdlparser.token.keywords.absoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.AbsOperator.Value"]], "value (pyvhdlparser.token.keywords.accesskeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.AccessKeyword.Value"]], "value (pyvhdlparser.token.keywords.afterkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.AfterKeyword.Value"]], "value (pyvhdlparser.token.keywords.aliaskeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.AliasKeyword.Value"]], "value (pyvhdlparser.token.keywords.allkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.AllKeyword.Value"]], "value (pyvhdlparser.token.keywords.andoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.AndOperator.Value"]], "value (pyvhdlparser.token.keywords.anglebrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.AngleBracketToken.Value"]], "value (pyvhdlparser.token.keywords.architecturekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ArchitectureKeyword.Value"]], "value (pyvhdlparser.token.keywords.arraykeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ArrayKeyword.Value"]], "value (pyvhdlparser.token.keywords.assertkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.AssertKeyword.Value"]], "value (pyvhdlparser.token.keywords.assignmentkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.AssignmentKeyword.Value"]], "value (pyvhdlparser.token.keywords.associationkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.AssociationKeyword.Value"]], "value (pyvhdlparser.token.keywords.attributekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.AttributeKeyword.Value"]], "value (pyvhdlparser.token.keywords.beginkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.BeginKeyword.Value"]], "value (pyvhdlparser.token.keywords.blockkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.BlockKeyword.Value"]], "value (pyvhdlparser.token.keywords.bodykeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.BodyKeyword.Value"]], "value (pyvhdlparser.token.keywords.boundarytoken attribute)": [[230, "pyVHDLParser.Token.Keywords.BoundaryToken.Value"]], "value (pyvhdlparser.token.keywords.brackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.BracketToken.Value"]], "value (pyvhdlparser.token.keywords.bufferkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.BufferKeyword.Value"]], "value (pyvhdlparser.token.keywords.buskeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.BusKeyword.Value"]], "value (pyvhdlparser.token.keywords.casekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.CaseKeyword.Value"]], "value (pyvhdlparser.token.keywords.closinganglebrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.ClosingAngleBracketToken.Value"]], "value (pyvhdlparser.token.keywords.closingcurlybrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.ClosingCurlyBracketToken.Value"]], "value (pyvhdlparser.token.keywords.closingroundbrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.ClosingRoundBracketToken.Value"]], "value (pyvhdlparser.token.keywords.closingsquarebrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.ClosingSquareBracketToken.Value"]], "value (pyvhdlparser.token.keywords.commentkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.CommentKeyword.Value"]], "value (pyvhdlparser.token.keywords.componentkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ComponentKeyword.Value"]], "value (pyvhdlparser.token.keywords.concatoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.ConcatOperator.Value"]], "value (pyvhdlparser.token.keywords.configurationkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ConfigurationKeyword.Value"]], "value (pyvhdlparser.token.keywords.constantkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ConstantKeyword.Value"]], "value (pyvhdlparser.token.keywords.contextkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ContextKeyword.Value"]], "value (pyvhdlparser.token.keywords.curlybrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.CurlyBracketToken.Value"]], "value (pyvhdlparser.token.keywords.defaultkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.DefaultKeyword.Value"]], "value (pyvhdlparser.token.keywords.delimitertoken attribute)": [[230, "pyVHDLParser.Token.Keywords.DelimiterToken.Value"]], "value (pyvhdlparser.token.keywords.directionkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.DirectionKeyword.Value"]], "value (pyvhdlparser.token.keywords.disconnectkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.DisconnectKeyword.Value"]], "value (pyvhdlparser.token.keywords.divideoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.DivideOperator.Value"]], "value (pyvhdlparser.token.keywords.downtokeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.DowntoKeyword.Value"]], "value (pyvhdlparser.token.keywords.elsifkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ElsIfKeyword.Value"]], "value (pyvhdlparser.token.keywords.elsekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ElseKeyword.Value"]], "value (pyvhdlparser.token.keywords.endkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.EndKeyword.Value"]], "value (pyvhdlparser.token.keywords.endtoken attribute)": [[230, "pyVHDLParser.Token.Keywords.EndToken.Value"]], "value (pyvhdlparser.token.keywords.entitykeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.EntityKeyword.Value"]], "value (pyvhdlparser.token.keywords.equaloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.EqualOperator.Value"]], "value (pyvhdlparser.token.keywords.exitkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ExitKeyword.Value"]], "value (pyvhdlparser.token.keywords.filekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.FileKeyword.Value"]], "value (pyvhdlparser.token.keywords.forkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ForKeyword.Value"]], "value (pyvhdlparser.token.keywords.forcekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ForceKeyword.Value"]], "value (pyvhdlparser.token.keywords.functionkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.FunctionKeyword.Value"]], "value (pyvhdlparser.token.keywords.generatekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.GenerateKeyword.Value"]], "value (pyvhdlparser.token.keywords.generickeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.GenericKeyword.Value"]], "value (pyvhdlparser.token.keywords.greaterthanoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.GreaterThanOperator.Value"]], "value (pyvhdlparser.token.keywords.greaterthanorequaloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.GreaterThanOrEqualOperator.Value"]], "value (pyvhdlparser.token.keywords.groupkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.GroupKeyword.Value"]], "value (pyvhdlparser.token.keywords.guardedkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.GuardedKeyword.Value"]], "value (pyvhdlparser.token.keywords.identifiertoken attribute)": [[230, "pyVHDLParser.Token.Keywords.IdentifierToken.Value"]], "value (pyvhdlparser.token.keywords.ifkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.IfKeyword.Value"]], "value (pyvhdlparser.token.keywords.impurekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ImpureKeyword.Value"]], "value (pyvhdlparser.token.keywords.inkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.InKeyword.Value"]], "value (pyvhdlparser.token.keywords.inertialkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.InertialKeyword.Value"]], "value (pyvhdlparser.token.keywords.inoutkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.InoutKeyword.Value"]], "value (pyvhdlparser.token.keywords.iskeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.IsKeyword.Value"]], "value (pyvhdlparser.token.keywords.keywordtoken attribute)": [[230, "pyVHDLParser.Token.Keywords.KeywordToken.Value"]], "value (pyvhdlparser.token.keywords.labelkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.LabelKeyword.Value"]], "value (pyvhdlparser.token.keywords.labeltoken attribute)": [[230, "pyVHDLParser.Token.Keywords.LabelToken.Value"]], "value (pyvhdlparser.token.keywords.lessthanoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.LessThanOperator.Value"]], "value (pyvhdlparser.token.keywords.lessthanorequaloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.LessThanOrEqualOperator.Value"]], "value (pyvhdlparser.token.keywords.librarykeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.LibraryKeyword.Value"]], "value (pyvhdlparser.token.keywords.linkagekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.LinkageKeyword.Value"]], "value (pyvhdlparser.token.keywords.literalkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.LiteralKeyword.Value"]], "value (pyvhdlparser.token.keywords.logicaloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.LogicalOperator.Value"]], "value (pyvhdlparser.token.keywords.loopkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.LoopKeyword.Value"]], "value (pyvhdlparser.token.keywords.mapassociationkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.MapAssociationKeyword.Value"]], "value (pyvhdlparser.token.keywords.mapkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.MapKeyword.Value"]], "value (pyvhdlparser.token.keywords.matchingequaloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.MatchingEqualOperator.Value"]], "value (pyvhdlparser.token.keywords.matchinggreaterthanoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.MatchingGreaterThanOperator.Value"]], "value (pyvhdlparser.token.keywords.matchinggreaterthanorequaloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.MatchingGreaterThanOrEqualOperator.Value"]], "value (pyvhdlparser.token.keywords.matchinglessthanoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.MatchingLessThanOperator.Value"]], "value (pyvhdlparser.token.keywords.matchinglessthanorequaloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.MatchingLessThanOrEqualOperator.Value"]], "value (pyvhdlparser.token.keywords.matchingunequaloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.MatchingUnequalOperator.Value"]], "value (pyvhdlparser.token.keywords.minusoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.MinusOperator.Value"]], "value (pyvhdlparser.token.keywords.miscellaneousoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.MiscellaneousOperator.Value"]], "value (pyvhdlparser.token.keywords.modulooperator attribute)": [[230, "pyVHDLParser.Token.Keywords.ModuloOperator.Value"]], "value (pyvhdlparser.token.keywords.multicharkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.MultiCharKeyword.Value"]], "value (pyvhdlparser.token.keywords.multilinecommentendkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.MultiLineCommentEndKeyword.Value"]], "value (pyvhdlparser.token.keywords.multilinecommentkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.MultiLineCommentKeyword.Value"]], "value (pyvhdlparser.token.keywords.multilinecommentstartkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.MultiLineCommentStartKeyword.Value"]], "value (pyvhdlparser.token.keywords.multiplyoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.MultiplyOperator.Value"]], "value (pyvhdlparser.token.keywords.nandoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.NandOperator.Value"]], "value (pyvhdlparser.token.keywords.newkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.NewKeyword.Value"]], "value (pyvhdlparser.token.keywords.nextkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.NextKeyword.Value"]], "value (pyvhdlparser.token.keywords.noroperator attribute)": [[230, "pyVHDLParser.Token.Keywords.NorOperator.Value"]], "value (pyvhdlparser.token.keywords.notoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.NotOperator.Value"]], "value (pyvhdlparser.token.keywords.nullkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.NullKeyword.Value"]], "value (pyvhdlparser.token.keywords.ofkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.OfKeyword.Value"]], "value (pyvhdlparser.token.keywords.onkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.OnKeyword.Value"]], "value (pyvhdlparser.token.keywords.openkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.OpenKeyword.Value"]], "value (pyvhdlparser.token.keywords.openinganglebrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.OpeningAngleBracketToken.Value"]], "value (pyvhdlparser.token.keywords.openingcurlybrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.OpeningCurlyBracketToken.Value"]], "value (pyvhdlparser.token.keywords.openingroundbrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.OpeningRoundBracketToken.Value"]], "value (pyvhdlparser.token.keywords.openingsquarebrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.OpeningSquareBracketToken.Value"]], "value (pyvhdlparser.token.keywords.operator attribute)": [[230, "pyVHDLParser.Token.Keywords.Operator.Value"]], "value (pyvhdlparser.token.keywords.operatortoken attribute)": [[230, "pyVHDLParser.Token.Keywords.OperatorToken.Value"]], "value (pyvhdlparser.token.keywords.oroperator attribute)": [[230, "pyVHDLParser.Token.Keywords.OrOperator.Value"]], "value (pyvhdlparser.token.keywords.otherskeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.OthersKeyword.Value"]], "value (pyvhdlparser.token.keywords.outkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.OutKeyword.Value"]], "value (pyvhdlparser.token.keywords.packagekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.PackageKeyword.Value"]], "value (pyvhdlparser.token.keywords.parameterkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ParameterKeyword.Value"]], "value (pyvhdlparser.token.keywords.plusoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.PlusOperator.Value"]], "value (pyvhdlparser.token.keywords.portkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.PortKeyword.Value"]], "value (pyvhdlparser.token.keywords.postponedkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.PostponedKeyword.Value"]], "value (pyvhdlparser.token.keywords.poweroperator attribute)": [[230, "pyVHDLParser.Token.Keywords.PowerOperator.Value"]], "value (pyvhdlparser.token.keywords.privatekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.PrivateKeyword.Value"]], "value (pyvhdlparser.token.keywords.procedurekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ProcedureKeyword.Value"]], "value (pyvhdlparser.token.keywords.processkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ProcessKeyword.Value"]], "value (pyvhdlparser.token.keywords.propertykeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.PropertyKeyword.Value"]], "value (pyvhdlparser.token.keywords.protectedkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ProtectedKeyword.Value"]], "value (pyvhdlparser.token.keywords.purekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.PureKeyword.Value"]], "value (pyvhdlparser.token.keywords.rangekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.RangeKeyword.Value"]], "value (pyvhdlparser.token.keywords.recordkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.RecordKeyword.Value"]], "value (pyvhdlparser.token.keywords.registerkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.RegisterKeyword.Value"]], "value (pyvhdlparser.token.keywords.rejectkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.RejectKeyword.Value"]], "value (pyvhdlparser.token.keywords.relationaloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.RelationalOperator.Value"]], "value (pyvhdlparser.token.keywords.releasekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ReleaseKeyword.Value"]], "value (pyvhdlparser.token.keywords.remainderoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.RemainderOperator.Value"]], "value (pyvhdlparser.token.keywords.repeatedidentifiertoken attribute)": [[230, "pyVHDLParser.Token.Keywords.RepeatedIdentifierToken.Value"]], "value (pyvhdlparser.token.keywords.repeatedlabeltoken attribute)": [[230, "pyVHDLParser.Token.Keywords.RepeatedLabelToken.Value"]], "value (pyvhdlparser.token.keywords.reportkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ReportKeyword.Value"]], "value (pyvhdlparser.token.keywords.returnkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ReturnKeyword.Value"]], "value (pyvhdlparser.token.keywords.roloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.RolOperator.Value"]], "value (pyvhdlparser.token.keywords.roroperator attribute)": [[230, "pyVHDLParser.Token.Keywords.RorOperator.Value"]], "value (pyvhdlparser.token.keywords.roundbrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.RoundBracketToken.Value"]], "value (pyvhdlparser.token.keywords.selectkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.SelectKeyword.Value"]], "value (pyvhdlparser.token.keywords.sequencekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.SequenceKeyword.Value"]], "value (pyvhdlparser.token.keywords.severitykeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.SeverityKeyword.Value"]], "value (pyvhdlparser.token.keywords.sharedkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.SharedKeyword.Value"]], "value (pyvhdlparser.token.keywords.shiftoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.ShiftOperator.Value"]], "value (pyvhdlparser.token.keywords.signalassignmentkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.SignalAssignmentKeyword.Value"]], "value (pyvhdlparser.token.keywords.signalassociationkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.SignalAssociationKeyword.Value"]], "value (pyvhdlparser.token.keywords.signalkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.SignalKeyword.Value"]], "value (pyvhdlparser.token.keywords.simplenametoken attribute)": [[230, "pyVHDLParser.Token.Keywords.SimpleNameToken.Value"]], "value (pyvhdlparser.token.keywords.singlelinecommentkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.SingleLineCommentKeyword.Value"]], "value (pyvhdlparser.token.keywords.slaoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.SlaOperator.Value"]], "value (pyvhdlparser.token.keywords.slloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.SllOperator.Value"]], "value (pyvhdlparser.token.keywords.specificvhdltoken attribute)": [[230, "pyVHDLParser.Token.Keywords.SpecificVHDLToken.Value"]], "value (pyvhdlparser.token.keywords.squarebrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.SquareBracketToken.Value"]], "value (pyvhdlparser.token.keywords.sraoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.SraOperator.Value"]], "value (pyvhdlparser.token.keywords.srloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.SrlOperator.Value"]], "value (pyvhdlparser.token.keywords.subtypekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.SubtypeKeyword.Value"]], "value (pyvhdlparser.token.keywords.thenkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ThenKeyword.Value"]], "value (pyvhdlparser.token.keywords.tokeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ToKeyword.Value"]], "value (pyvhdlparser.token.keywords.transportkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.TransportKeyword.Value"]], "value (pyvhdlparser.token.keywords.typekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.TypeKeyword.Value"]], "value (pyvhdlparser.token.keywords.unaffectedkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.UnaffectedKeyword.Value"]], "value (pyvhdlparser.token.keywords.unbufferedkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.UnbufferedKeyword.Value"]], "value (pyvhdlparser.token.keywords.unequaloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.UnequalOperator.Value"]], "value (pyvhdlparser.token.keywords.unitskeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.UnitsKeyword.Value"]], "value (pyvhdlparser.token.keywords.untilkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.UntilKeyword.Value"]], "value (pyvhdlparser.token.keywords.usekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.UseKeyword.Value"]], "value (pyvhdlparser.token.keywords.variableassignmentkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.VariableAssignmentKeyword.Value"]], "value (pyvhdlparser.token.keywords.variablekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.VariableKeyword.Value"]], "value (pyvhdlparser.token.keywords.viewkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ViewKeyword.Value"]], "value (pyvhdlparser.token.keywords.vunitkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.VunitKeyword.Value"]], "value (pyvhdlparser.token.keywords.waitkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.WaitKeyword.Value"]], "value (pyvhdlparser.token.keywords.whenkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.WhenKeyword.Value"]], "value (pyvhdlparser.token.keywords.whilekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.WhileKeyword.Value"]], "value (pyvhdlparser.token.keywords.withkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.WithKeyword.Value"]], "value (pyvhdlparser.token.keywords.xnoroperator attribute)": [[230, "pyVHDLParser.Token.Keywords.XnorOperator.Value"]], "value (pyvhdlparser.token.keywords.xoroperator attribute)": [[230, "pyVHDLParser.Token.Keywords.XorOperator.Value"]], "variableassignmentkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.VariableAssignmentKeyword"]], "variablekeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.VariableKeyword"]], "viewkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.ViewKeyword"]], "vunitkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.VunitKeyword"]], "waitkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.WaitKeyword"]], "whenkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.WhenKeyword"]], "whilekeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.WhileKeyword"]], "withkeyword (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.WithKeyword"]], "xnoroperator (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.XnorOperator"]], "xoroperator (class in pyvhdlparser.token.keywords)": [[230, "pyVHDLParser.Token.Keywords.XorOperator"]], "__eq__() (pyvhdlparser.token.keywords.absoperator method)": [[230, "pyVHDLParser.Token.Keywords.AbsOperator.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.accesskeyword method)": [[230, "pyVHDLParser.Token.Keywords.AccessKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.afterkeyword method)": [[230, "pyVHDLParser.Token.Keywords.AfterKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.aliaskeyword method)": [[230, "pyVHDLParser.Token.Keywords.AliasKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.allkeyword method)": [[230, "pyVHDLParser.Token.Keywords.AllKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.andoperator method)": [[230, "pyVHDLParser.Token.Keywords.AndOperator.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.anglebrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.AngleBracketToken.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.architecturekeyword method)": [[230, "pyVHDLParser.Token.Keywords.ArchitectureKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.arraykeyword method)": [[230, "pyVHDLParser.Token.Keywords.ArrayKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.assertkeyword method)": [[230, "pyVHDLParser.Token.Keywords.AssertKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.assignmentkeyword method)": [[230, "pyVHDLParser.Token.Keywords.AssignmentKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.associationkeyword method)": [[230, "pyVHDLParser.Token.Keywords.AssociationKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.attributekeyword method)": [[230, "pyVHDLParser.Token.Keywords.AttributeKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.beginkeyword method)": [[230, "pyVHDLParser.Token.Keywords.BeginKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.blockkeyword method)": [[230, "pyVHDLParser.Token.Keywords.BlockKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.bodykeyword method)": [[230, "pyVHDLParser.Token.Keywords.BodyKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.boundarytoken method)": [[230, "pyVHDLParser.Token.Keywords.BoundaryToken.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.brackettoken method)": [[230, "pyVHDLParser.Token.Keywords.BracketToken.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.bufferkeyword method)": [[230, "pyVHDLParser.Token.Keywords.BufferKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.buskeyword method)": [[230, "pyVHDLParser.Token.Keywords.BusKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.casekeyword method)": [[230, "pyVHDLParser.Token.Keywords.CaseKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.closinganglebrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.ClosingAngleBracketToken.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.closingcurlybrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.ClosingCurlyBracketToken.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.closingroundbrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.ClosingRoundBracketToken.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.closingsquarebrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.ClosingSquareBracketToken.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.commentkeyword method)": [[230, "pyVHDLParser.Token.Keywords.CommentKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.componentkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ComponentKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.concatoperator method)": [[230, "pyVHDLParser.Token.Keywords.ConcatOperator.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.configurationkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ConfigurationKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.constantkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ConstantKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.contextkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ContextKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.curlybrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.CurlyBracketToken.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.defaultkeyword method)": [[230, "pyVHDLParser.Token.Keywords.DefaultKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.delimitertoken method)": [[230, "pyVHDLParser.Token.Keywords.DelimiterToken.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.directionkeyword method)": [[230, "pyVHDLParser.Token.Keywords.DirectionKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.disconnectkeyword method)": [[230, "pyVHDLParser.Token.Keywords.DisconnectKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.divideoperator method)": [[230, "pyVHDLParser.Token.Keywords.DivideOperator.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.downtokeyword method)": [[230, "pyVHDLParser.Token.Keywords.DowntoKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.elsifkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ElsIfKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.elsekeyword method)": [[230, "pyVHDLParser.Token.Keywords.ElseKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.endkeyword method)": [[230, "pyVHDLParser.Token.Keywords.EndKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.endtoken method)": [[230, "pyVHDLParser.Token.Keywords.EndToken.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.entitykeyword method)": [[230, "pyVHDLParser.Token.Keywords.EntityKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.equaloperator method)": [[230, "pyVHDLParser.Token.Keywords.EqualOperator.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.exitkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ExitKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.filekeyword method)": [[230, "pyVHDLParser.Token.Keywords.FileKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.forkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ForKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.forcekeyword method)": [[230, "pyVHDLParser.Token.Keywords.ForceKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.functionkeyword method)": [[230, "pyVHDLParser.Token.Keywords.FunctionKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.generatekeyword method)": [[230, "pyVHDLParser.Token.Keywords.GenerateKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.generickeyword method)": [[230, "pyVHDLParser.Token.Keywords.GenericKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.greaterthanoperator method)": [[230, "pyVHDLParser.Token.Keywords.GreaterThanOperator.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.greaterthanorequaloperator method)": [[230, "pyVHDLParser.Token.Keywords.GreaterThanOrEqualOperator.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.groupkeyword method)": [[230, "pyVHDLParser.Token.Keywords.GroupKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.guardedkeyword method)": [[230, "pyVHDLParser.Token.Keywords.GuardedKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.identifiertoken method)": [[230, "pyVHDLParser.Token.Keywords.IdentifierToken.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.ifkeyword method)": [[230, "pyVHDLParser.Token.Keywords.IfKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.impurekeyword method)": [[230, "pyVHDLParser.Token.Keywords.ImpureKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.inkeyword method)": [[230, "pyVHDLParser.Token.Keywords.InKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.inertialkeyword method)": [[230, "pyVHDLParser.Token.Keywords.InertialKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.inoutkeyword method)": [[230, "pyVHDLParser.Token.Keywords.InoutKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.iskeyword method)": [[230, "pyVHDLParser.Token.Keywords.IsKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.keywordtoken method)": [[230, "pyVHDLParser.Token.Keywords.KeywordToken.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.labelkeyword method)": [[230, "pyVHDLParser.Token.Keywords.LabelKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.labeltoken method)": [[230, "pyVHDLParser.Token.Keywords.LabelToken.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.lessthanoperator method)": [[230, "pyVHDLParser.Token.Keywords.LessThanOperator.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.lessthanorequaloperator method)": [[230, "pyVHDLParser.Token.Keywords.LessThanOrEqualOperator.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.librarykeyword method)": [[230, "pyVHDLParser.Token.Keywords.LibraryKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.linkagekeyword method)": [[230, "pyVHDLParser.Token.Keywords.LinkageKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.literalkeyword method)": [[230, "pyVHDLParser.Token.Keywords.LiteralKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.logicaloperator method)": [[230, "pyVHDLParser.Token.Keywords.LogicalOperator.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.loopkeyword method)": [[230, "pyVHDLParser.Token.Keywords.LoopKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.mapassociationkeyword method)": [[230, "pyVHDLParser.Token.Keywords.MapAssociationKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.mapkeyword method)": [[230, "pyVHDLParser.Token.Keywords.MapKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.matchingequaloperator method)": [[230, "pyVHDLParser.Token.Keywords.MatchingEqualOperator.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.matchinggreaterthanoperator method)": [[230, "pyVHDLParser.Token.Keywords.MatchingGreaterThanOperator.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.matchinggreaterthanorequaloperator method)": [[230, "pyVHDLParser.Token.Keywords.MatchingGreaterThanOrEqualOperator.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.matchinglessthanoperator method)": [[230, "pyVHDLParser.Token.Keywords.MatchingLessThanOperator.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.matchinglessthanorequaloperator method)": [[230, "pyVHDLParser.Token.Keywords.MatchingLessThanOrEqualOperator.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.matchingunequaloperator method)": [[230, "pyVHDLParser.Token.Keywords.MatchingUnequalOperator.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.minusoperator method)": [[230, "pyVHDLParser.Token.Keywords.MinusOperator.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.miscellaneousoperator method)": [[230, "pyVHDLParser.Token.Keywords.MiscellaneousOperator.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.modulooperator method)": [[230, "pyVHDLParser.Token.Keywords.ModuloOperator.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.multicharkeyword method)": [[230, "pyVHDLParser.Token.Keywords.MultiCharKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.multilinecommentendkeyword method)": [[230, "pyVHDLParser.Token.Keywords.MultiLineCommentEndKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.multilinecommentkeyword method)": [[230, "pyVHDLParser.Token.Keywords.MultiLineCommentKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.multilinecommentstartkeyword method)": [[230, "pyVHDLParser.Token.Keywords.MultiLineCommentStartKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.multiplyoperator method)": [[230, "pyVHDLParser.Token.Keywords.MultiplyOperator.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.nandoperator method)": [[230, "pyVHDLParser.Token.Keywords.NandOperator.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.newkeyword method)": [[230, "pyVHDLParser.Token.Keywords.NewKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.nextkeyword method)": [[230, "pyVHDLParser.Token.Keywords.NextKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.noroperator method)": [[230, "pyVHDLParser.Token.Keywords.NorOperator.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.notoperator method)": [[230, "pyVHDLParser.Token.Keywords.NotOperator.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.nullkeyword method)": [[230, "pyVHDLParser.Token.Keywords.NullKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.ofkeyword method)": [[230, "pyVHDLParser.Token.Keywords.OfKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.onkeyword method)": [[230, "pyVHDLParser.Token.Keywords.OnKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.openkeyword method)": [[230, "pyVHDLParser.Token.Keywords.OpenKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.openinganglebrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.OpeningAngleBracketToken.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.openingcurlybrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.OpeningCurlyBracketToken.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.openingroundbrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.OpeningRoundBracketToken.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.openingsquarebrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.OpeningSquareBracketToken.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.operator method)": [[230, "pyVHDLParser.Token.Keywords.Operator.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.operatortoken method)": [[230, "pyVHDLParser.Token.Keywords.OperatorToken.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.oroperator method)": [[230, "pyVHDLParser.Token.Keywords.OrOperator.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.otherskeyword method)": [[230, "pyVHDLParser.Token.Keywords.OthersKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.outkeyword method)": [[230, "pyVHDLParser.Token.Keywords.OutKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.packagekeyword method)": [[230, "pyVHDLParser.Token.Keywords.PackageKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.parameterkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ParameterKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.plusoperator method)": [[230, "pyVHDLParser.Token.Keywords.PlusOperator.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.portkeyword method)": [[230, "pyVHDLParser.Token.Keywords.PortKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.postponedkeyword method)": [[230, "pyVHDLParser.Token.Keywords.PostponedKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.poweroperator method)": [[230, "pyVHDLParser.Token.Keywords.PowerOperator.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.privatekeyword method)": [[230, "pyVHDLParser.Token.Keywords.PrivateKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.procedurekeyword method)": [[230, "pyVHDLParser.Token.Keywords.ProcedureKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.processkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ProcessKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.propertykeyword method)": [[230, "pyVHDLParser.Token.Keywords.PropertyKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.protectedkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ProtectedKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.purekeyword method)": [[230, "pyVHDLParser.Token.Keywords.PureKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.rangekeyword method)": [[230, "pyVHDLParser.Token.Keywords.RangeKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.recordkeyword method)": [[230, "pyVHDLParser.Token.Keywords.RecordKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.registerkeyword method)": [[230, "pyVHDLParser.Token.Keywords.RegisterKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.rejectkeyword method)": [[230, "pyVHDLParser.Token.Keywords.RejectKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.relationaloperator method)": [[230, "pyVHDLParser.Token.Keywords.RelationalOperator.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.releasekeyword method)": [[230, "pyVHDLParser.Token.Keywords.ReleaseKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.remainderoperator method)": [[230, "pyVHDLParser.Token.Keywords.RemainderOperator.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.repeatedidentifiertoken method)": [[230, "pyVHDLParser.Token.Keywords.RepeatedIdentifierToken.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.repeatedlabeltoken method)": [[230, "pyVHDLParser.Token.Keywords.RepeatedLabelToken.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.reportkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ReportKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.returnkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ReturnKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.roloperator method)": [[230, "pyVHDLParser.Token.Keywords.RolOperator.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.roroperator method)": [[230, "pyVHDLParser.Token.Keywords.RorOperator.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.roundbrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.RoundBracketToken.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.selectkeyword method)": [[230, "pyVHDLParser.Token.Keywords.SelectKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.sequencekeyword method)": [[230, "pyVHDLParser.Token.Keywords.SequenceKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.severitykeyword method)": [[230, "pyVHDLParser.Token.Keywords.SeverityKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.sharedkeyword method)": [[230, "pyVHDLParser.Token.Keywords.SharedKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.shiftoperator method)": [[230, "pyVHDLParser.Token.Keywords.ShiftOperator.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.signalassignmentkeyword method)": [[230, "pyVHDLParser.Token.Keywords.SignalAssignmentKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.signalassociationkeyword method)": [[230, "pyVHDLParser.Token.Keywords.SignalAssociationKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.signalkeyword method)": [[230, "pyVHDLParser.Token.Keywords.SignalKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.simplenametoken method)": [[230, "pyVHDLParser.Token.Keywords.SimpleNameToken.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.singlelinecommentkeyword method)": [[230, "pyVHDLParser.Token.Keywords.SingleLineCommentKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.slaoperator method)": [[230, "pyVHDLParser.Token.Keywords.SlaOperator.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.slloperator method)": [[230, "pyVHDLParser.Token.Keywords.SllOperator.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.specificvhdltoken method)": [[230, "pyVHDLParser.Token.Keywords.SpecificVHDLToken.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.squarebrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.SquareBracketToken.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.sraoperator method)": [[230, "pyVHDLParser.Token.Keywords.SraOperator.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.srloperator method)": [[230, "pyVHDLParser.Token.Keywords.SrlOperator.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.subtypekeyword method)": [[230, "pyVHDLParser.Token.Keywords.SubtypeKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.thenkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ThenKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.tokeyword method)": [[230, "pyVHDLParser.Token.Keywords.ToKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.transportkeyword method)": [[230, "pyVHDLParser.Token.Keywords.TransportKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.typekeyword method)": [[230, "pyVHDLParser.Token.Keywords.TypeKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.unaffectedkeyword method)": [[230, "pyVHDLParser.Token.Keywords.UnaffectedKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.unbufferedkeyword method)": [[230, "pyVHDLParser.Token.Keywords.UnbufferedKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.unequaloperator method)": [[230, "pyVHDLParser.Token.Keywords.UnequalOperator.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.unitskeyword method)": [[230, "pyVHDLParser.Token.Keywords.UnitsKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.untilkeyword method)": [[230, "pyVHDLParser.Token.Keywords.UntilKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.usekeyword method)": [[230, "pyVHDLParser.Token.Keywords.UseKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.variableassignmentkeyword method)": [[230, "pyVHDLParser.Token.Keywords.VariableAssignmentKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.variablekeyword method)": [[230, "pyVHDLParser.Token.Keywords.VariableKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.viewkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ViewKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.vunitkeyword method)": [[230, "pyVHDLParser.Token.Keywords.VunitKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.waitkeyword method)": [[230, "pyVHDLParser.Token.Keywords.WaitKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.whenkeyword method)": [[230, "pyVHDLParser.Token.Keywords.WhenKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.whilekeyword method)": [[230, "pyVHDLParser.Token.Keywords.WhileKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.withkeyword method)": [[230, "pyVHDLParser.Token.Keywords.WithKeyword.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.xnoroperator method)": [[230, "pyVHDLParser.Token.Keywords.XnorOperator.__eq__"]], "__eq__() (pyvhdlparser.token.keywords.xoroperator method)": [[230, "pyVHDLParser.Token.Keywords.XorOperator.__eq__"]], "__hash__() (pyvhdlparser.token.keywords.absoperator method)": [[230, "pyVHDLParser.Token.Keywords.AbsOperator.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.accesskeyword method)": [[230, "pyVHDLParser.Token.Keywords.AccessKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.afterkeyword method)": [[230, "pyVHDLParser.Token.Keywords.AfterKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.aliaskeyword method)": [[230, "pyVHDLParser.Token.Keywords.AliasKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.allkeyword method)": [[230, "pyVHDLParser.Token.Keywords.AllKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.andoperator method)": [[230, "pyVHDLParser.Token.Keywords.AndOperator.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.anglebrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.AngleBracketToken.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.architecturekeyword method)": [[230, "pyVHDLParser.Token.Keywords.ArchitectureKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.arraykeyword method)": [[230, "pyVHDLParser.Token.Keywords.ArrayKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.assertkeyword method)": [[230, "pyVHDLParser.Token.Keywords.AssertKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.assignmentkeyword method)": [[230, "pyVHDLParser.Token.Keywords.AssignmentKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.associationkeyword method)": [[230, "pyVHDLParser.Token.Keywords.AssociationKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.attributekeyword method)": [[230, "pyVHDLParser.Token.Keywords.AttributeKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.beginkeyword method)": [[230, "pyVHDLParser.Token.Keywords.BeginKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.blockkeyword method)": [[230, "pyVHDLParser.Token.Keywords.BlockKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.bodykeyword method)": [[230, "pyVHDLParser.Token.Keywords.BodyKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.boundarytoken method)": [[230, "pyVHDLParser.Token.Keywords.BoundaryToken.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.brackettoken method)": [[230, "pyVHDLParser.Token.Keywords.BracketToken.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.bufferkeyword method)": [[230, "pyVHDLParser.Token.Keywords.BufferKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.buskeyword method)": [[230, "pyVHDLParser.Token.Keywords.BusKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.casekeyword method)": [[230, "pyVHDLParser.Token.Keywords.CaseKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.closinganglebrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.ClosingAngleBracketToken.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.closingcurlybrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.ClosingCurlyBracketToken.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.closingroundbrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.ClosingRoundBracketToken.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.closingsquarebrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.ClosingSquareBracketToken.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.commentkeyword method)": [[230, "pyVHDLParser.Token.Keywords.CommentKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.componentkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ComponentKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.concatoperator method)": [[230, "pyVHDLParser.Token.Keywords.ConcatOperator.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.configurationkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ConfigurationKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.constantkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ConstantKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.contextkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ContextKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.curlybrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.CurlyBracketToken.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.defaultkeyword method)": [[230, "pyVHDLParser.Token.Keywords.DefaultKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.delimitertoken method)": [[230, "pyVHDLParser.Token.Keywords.DelimiterToken.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.directionkeyword method)": [[230, "pyVHDLParser.Token.Keywords.DirectionKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.disconnectkeyword method)": [[230, "pyVHDLParser.Token.Keywords.DisconnectKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.divideoperator method)": [[230, "pyVHDLParser.Token.Keywords.DivideOperator.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.downtokeyword method)": [[230, "pyVHDLParser.Token.Keywords.DowntoKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.elsifkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ElsIfKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.elsekeyword method)": [[230, "pyVHDLParser.Token.Keywords.ElseKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.endkeyword method)": [[230, "pyVHDLParser.Token.Keywords.EndKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.endtoken method)": [[230, "pyVHDLParser.Token.Keywords.EndToken.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.entitykeyword method)": [[230, "pyVHDLParser.Token.Keywords.EntityKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.equaloperator method)": [[230, "pyVHDLParser.Token.Keywords.EqualOperator.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.exitkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ExitKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.filekeyword method)": [[230, "pyVHDLParser.Token.Keywords.FileKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.forkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ForKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.forcekeyword method)": [[230, "pyVHDLParser.Token.Keywords.ForceKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.functionkeyword method)": [[230, "pyVHDLParser.Token.Keywords.FunctionKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.generatekeyword method)": [[230, "pyVHDLParser.Token.Keywords.GenerateKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.generickeyword method)": [[230, "pyVHDLParser.Token.Keywords.GenericKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.greaterthanoperator method)": [[230, "pyVHDLParser.Token.Keywords.GreaterThanOperator.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.greaterthanorequaloperator method)": [[230, "pyVHDLParser.Token.Keywords.GreaterThanOrEqualOperator.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.groupkeyword method)": [[230, "pyVHDLParser.Token.Keywords.GroupKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.guardedkeyword method)": [[230, "pyVHDLParser.Token.Keywords.GuardedKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.identifiertoken method)": [[230, "pyVHDLParser.Token.Keywords.IdentifierToken.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.ifkeyword method)": [[230, "pyVHDLParser.Token.Keywords.IfKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.impurekeyword method)": [[230, "pyVHDLParser.Token.Keywords.ImpureKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.inkeyword method)": [[230, "pyVHDLParser.Token.Keywords.InKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.inertialkeyword method)": [[230, "pyVHDLParser.Token.Keywords.InertialKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.inoutkeyword method)": [[230, "pyVHDLParser.Token.Keywords.InoutKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.iskeyword method)": [[230, "pyVHDLParser.Token.Keywords.IsKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.keywordtoken method)": [[230, "pyVHDLParser.Token.Keywords.KeywordToken.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.labelkeyword method)": [[230, "pyVHDLParser.Token.Keywords.LabelKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.labeltoken method)": [[230, "pyVHDLParser.Token.Keywords.LabelToken.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.lessthanoperator method)": [[230, "pyVHDLParser.Token.Keywords.LessThanOperator.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.lessthanorequaloperator method)": [[230, "pyVHDLParser.Token.Keywords.LessThanOrEqualOperator.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.librarykeyword method)": [[230, "pyVHDLParser.Token.Keywords.LibraryKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.linkagekeyword method)": [[230, "pyVHDLParser.Token.Keywords.LinkageKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.literalkeyword method)": [[230, "pyVHDLParser.Token.Keywords.LiteralKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.logicaloperator method)": [[230, "pyVHDLParser.Token.Keywords.LogicalOperator.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.loopkeyword method)": [[230, "pyVHDLParser.Token.Keywords.LoopKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.mapassociationkeyword method)": [[230, "pyVHDLParser.Token.Keywords.MapAssociationKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.mapkeyword method)": [[230, "pyVHDLParser.Token.Keywords.MapKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.matchingequaloperator method)": [[230, "pyVHDLParser.Token.Keywords.MatchingEqualOperator.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.matchinggreaterthanoperator method)": [[230, "pyVHDLParser.Token.Keywords.MatchingGreaterThanOperator.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.matchinggreaterthanorequaloperator method)": [[230, "pyVHDLParser.Token.Keywords.MatchingGreaterThanOrEqualOperator.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.matchinglessthanoperator method)": [[230, "pyVHDLParser.Token.Keywords.MatchingLessThanOperator.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.matchinglessthanorequaloperator method)": [[230, "pyVHDLParser.Token.Keywords.MatchingLessThanOrEqualOperator.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.matchingunequaloperator method)": [[230, "pyVHDLParser.Token.Keywords.MatchingUnequalOperator.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.minusoperator method)": [[230, "pyVHDLParser.Token.Keywords.MinusOperator.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.miscellaneousoperator method)": [[230, "pyVHDLParser.Token.Keywords.MiscellaneousOperator.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.modulooperator method)": [[230, "pyVHDLParser.Token.Keywords.ModuloOperator.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.multicharkeyword method)": [[230, "pyVHDLParser.Token.Keywords.MultiCharKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.multilinecommentendkeyword method)": [[230, "pyVHDLParser.Token.Keywords.MultiLineCommentEndKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.multilinecommentkeyword method)": [[230, "pyVHDLParser.Token.Keywords.MultiLineCommentKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.multilinecommentstartkeyword method)": [[230, "pyVHDLParser.Token.Keywords.MultiLineCommentStartKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.multiplyoperator method)": [[230, "pyVHDLParser.Token.Keywords.MultiplyOperator.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.nandoperator method)": [[230, "pyVHDLParser.Token.Keywords.NandOperator.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.newkeyword method)": [[230, "pyVHDLParser.Token.Keywords.NewKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.nextkeyword method)": [[230, "pyVHDLParser.Token.Keywords.NextKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.noroperator method)": [[230, "pyVHDLParser.Token.Keywords.NorOperator.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.notoperator method)": [[230, "pyVHDLParser.Token.Keywords.NotOperator.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.nullkeyword method)": [[230, "pyVHDLParser.Token.Keywords.NullKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.ofkeyword method)": [[230, "pyVHDLParser.Token.Keywords.OfKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.onkeyword method)": [[230, "pyVHDLParser.Token.Keywords.OnKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.openkeyword method)": [[230, "pyVHDLParser.Token.Keywords.OpenKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.openinganglebrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.OpeningAngleBracketToken.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.openingcurlybrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.OpeningCurlyBracketToken.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.openingroundbrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.OpeningRoundBracketToken.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.openingsquarebrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.OpeningSquareBracketToken.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.operator method)": [[230, "pyVHDLParser.Token.Keywords.Operator.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.operatortoken method)": [[230, "pyVHDLParser.Token.Keywords.OperatorToken.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.oroperator method)": [[230, "pyVHDLParser.Token.Keywords.OrOperator.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.otherskeyword method)": [[230, "pyVHDLParser.Token.Keywords.OthersKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.outkeyword method)": [[230, "pyVHDLParser.Token.Keywords.OutKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.packagekeyword method)": [[230, "pyVHDLParser.Token.Keywords.PackageKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.parameterkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ParameterKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.plusoperator method)": [[230, "pyVHDLParser.Token.Keywords.PlusOperator.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.portkeyword method)": [[230, "pyVHDLParser.Token.Keywords.PortKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.postponedkeyword method)": [[230, "pyVHDLParser.Token.Keywords.PostponedKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.poweroperator method)": [[230, "pyVHDLParser.Token.Keywords.PowerOperator.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.privatekeyword method)": [[230, "pyVHDLParser.Token.Keywords.PrivateKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.procedurekeyword method)": [[230, "pyVHDLParser.Token.Keywords.ProcedureKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.processkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ProcessKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.propertykeyword method)": [[230, "pyVHDLParser.Token.Keywords.PropertyKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.protectedkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ProtectedKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.purekeyword method)": [[230, "pyVHDLParser.Token.Keywords.PureKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.rangekeyword method)": [[230, "pyVHDLParser.Token.Keywords.RangeKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.recordkeyword method)": [[230, "pyVHDLParser.Token.Keywords.RecordKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.registerkeyword method)": [[230, "pyVHDLParser.Token.Keywords.RegisterKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.rejectkeyword method)": [[230, "pyVHDLParser.Token.Keywords.RejectKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.relationaloperator method)": [[230, "pyVHDLParser.Token.Keywords.RelationalOperator.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.releasekeyword method)": [[230, "pyVHDLParser.Token.Keywords.ReleaseKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.remainderoperator method)": [[230, "pyVHDLParser.Token.Keywords.RemainderOperator.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.repeatedidentifiertoken method)": [[230, "pyVHDLParser.Token.Keywords.RepeatedIdentifierToken.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.repeatedlabeltoken method)": [[230, "pyVHDLParser.Token.Keywords.RepeatedLabelToken.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.reportkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ReportKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.returnkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ReturnKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.roloperator method)": [[230, "pyVHDLParser.Token.Keywords.RolOperator.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.roroperator method)": [[230, "pyVHDLParser.Token.Keywords.RorOperator.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.roundbrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.RoundBracketToken.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.selectkeyword method)": [[230, "pyVHDLParser.Token.Keywords.SelectKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.sequencekeyword method)": [[230, "pyVHDLParser.Token.Keywords.SequenceKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.severitykeyword method)": [[230, "pyVHDLParser.Token.Keywords.SeverityKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.sharedkeyword method)": [[230, "pyVHDLParser.Token.Keywords.SharedKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.shiftoperator method)": [[230, "pyVHDLParser.Token.Keywords.ShiftOperator.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.signalassignmentkeyword method)": [[230, "pyVHDLParser.Token.Keywords.SignalAssignmentKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.signalassociationkeyword method)": [[230, "pyVHDLParser.Token.Keywords.SignalAssociationKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.signalkeyword method)": [[230, "pyVHDLParser.Token.Keywords.SignalKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.simplenametoken method)": [[230, "pyVHDLParser.Token.Keywords.SimpleNameToken.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.singlelinecommentkeyword method)": [[230, "pyVHDLParser.Token.Keywords.SingleLineCommentKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.slaoperator method)": [[230, "pyVHDLParser.Token.Keywords.SlaOperator.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.slloperator method)": [[230, "pyVHDLParser.Token.Keywords.SllOperator.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.specificvhdltoken method)": [[230, "pyVHDLParser.Token.Keywords.SpecificVHDLToken.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.squarebrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.SquareBracketToken.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.sraoperator method)": [[230, "pyVHDLParser.Token.Keywords.SraOperator.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.srloperator method)": [[230, "pyVHDLParser.Token.Keywords.SrlOperator.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.subtypekeyword method)": [[230, "pyVHDLParser.Token.Keywords.SubtypeKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.thenkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ThenKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.tokeyword method)": [[230, "pyVHDLParser.Token.Keywords.ToKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.transportkeyword method)": [[230, "pyVHDLParser.Token.Keywords.TransportKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.typekeyword method)": [[230, "pyVHDLParser.Token.Keywords.TypeKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.unaffectedkeyword method)": [[230, "pyVHDLParser.Token.Keywords.UnaffectedKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.unbufferedkeyword method)": [[230, "pyVHDLParser.Token.Keywords.UnbufferedKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.unequaloperator method)": [[230, "pyVHDLParser.Token.Keywords.UnequalOperator.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.unitskeyword method)": [[230, "pyVHDLParser.Token.Keywords.UnitsKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.untilkeyword method)": [[230, "pyVHDLParser.Token.Keywords.UntilKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.usekeyword method)": [[230, "pyVHDLParser.Token.Keywords.UseKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.variableassignmentkeyword method)": [[230, "pyVHDLParser.Token.Keywords.VariableAssignmentKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.variablekeyword method)": [[230, "pyVHDLParser.Token.Keywords.VariableKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.viewkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ViewKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.vunitkeyword method)": [[230, "pyVHDLParser.Token.Keywords.VunitKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.waitkeyword method)": [[230, "pyVHDLParser.Token.Keywords.WaitKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.whenkeyword method)": [[230, "pyVHDLParser.Token.Keywords.WhenKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.whilekeyword method)": [[230, "pyVHDLParser.Token.Keywords.WhileKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.withkeyword method)": [[230, "pyVHDLParser.Token.Keywords.WithKeyword.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.xnoroperator method)": [[230, "pyVHDLParser.Token.Keywords.XnorOperator.__hash__"]], "__hash__() (pyvhdlparser.token.keywords.xoroperator method)": [[230, "pyVHDLParser.Token.Keywords.XorOperator.__hash__"]], "__init__() (pyvhdlparser.token.keywords.absoperator method)": [[230, "pyVHDLParser.Token.Keywords.AbsOperator.__init__"]], "__init__() (pyvhdlparser.token.keywords.accesskeyword method)": [[230, "pyVHDLParser.Token.Keywords.AccessKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.afterkeyword method)": [[230, "pyVHDLParser.Token.Keywords.AfterKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.aliaskeyword method)": [[230, "pyVHDLParser.Token.Keywords.AliasKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.allkeyword method)": [[230, "pyVHDLParser.Token.Keywords.AllKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.andoperator method)": [[230, "pyVHDLParser.Token.Keywords.AndOperator.__init__"]], "__init__() (pyvhdlparser.token.keywords.anglebrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.AngleBracketToken.__init__"]], "__init__() (pyvhdlparser.token.keywords.architecturekeyword method)": [[230, "pyVHDLParser.Token.Keywords.ArchitectureKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.arraykeyword method)": [[230, "pyVHDLParser.Token.Keywords.ArrayKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.assertkeyword method)": [[230, "pyVHDLParser.Token.Keywords.AssertKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.assignmentkeyword method)": [[230, "pyVHDLParser.Token.Keywords.AssignmentKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.associationkeyword method)": [[230, "pyVHDLParser.Token.Keywords.AssociationKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.attributekeyword method)": [[230, "pyVHDLParser.Token.Keywords.AttributeKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.beginkeyword method)": [[230, "pyVHDLParser.Token.Keywords.BeginKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.blockkeyword method)": [[230, "pyVHDLParser.Token.Keywords.BlockKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.bodykeyword method)": [[230, "pyVHDLParser.Token.Keywords.BodyKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.boundarytoken method)": [[230, "pyVHDLParser.Token.Keywords.BoundaryToken.__init__"]], "__init__() (pyvhdlparser.token.keywords.brackettoken method)": [[230, "pyVHDLParser.Token.Keywords.BracketToken.__init__"]], "__init__() (pyvhdlparser.token.keywords.bufferkeyword method)": [[230, "pyVHDLParser.Token.Keywords.BufferKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.buskeyword method)": [[230, "pyVHDLParser.Token.Keywords.BusKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.casekeyword method)": [[230, "pyVHDLParser.Token.Keywords.CaseKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.closinganglebrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.ClosingAngleBracketToken.__init__"]], "__init__() (pyvhdlparser.token.keywords.closingcurlybrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.ClosingCurlyBracketToken.__init__"]], "__init__() (pyvhdlparser.token.keywords.closingroundbrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.ClosingRoundBracketToken.__init__"]], "__init__() (pyvhdlparser.token.keywords.closingsquarebrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.ClosingSquareBracketToken.__init__"]], "__init__() (pyvhdlparser.token.keywords.commentkeyword method)": [[230, "pyVHDLParser.Token.Keywords.CommentKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.componentkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ComponentKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.concatoperator method)": [[230, "pyVHDLParser.Token.Keywords.ConcatOperator.__init__"]], "__init__() (pyvhdlparser.token.keywords.configurationkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ConfigurationKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.constantkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ConstantKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.contextkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ContextKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.curlybrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.CurlyBracketToken.__init__"]], "__init__() (pyvhdlparser.token.keywords.defaultkeyword method)": [[230, "pyVHDLParser.Token.Keywords.DefaultKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.delimitertoken method)": [[230, "pyVHDLParser.Token.Keywords.DelimiterToken.__init__"]], "__init__() (pyvhdlparser.token.keywords.directionkeyword method)": [[230, "pyVHDLParser.Token.Keywords.DirectionKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.disconnectkeyword method)": [[230, "pyVHDLParser.Token.Keywords.DisconnectKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.divideoperator method)": [[230, "pyVHDLParser.Token.Keywords.DivideOperator.__init__"]], "__init__() (pyvhdlparser.token.keywords.downtokeyword method)": [[230, "pyVHDLParser.Token.Keywords.DowntoKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.elsifkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ElsIfKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.elsekeyword method)": [[230, "pyVHDLParser.Token.Keywords.ElseKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.endkeyword method)": [[230, "pyVHDLParser.Token.Keywords.EndKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.endtoken method)": [[230, "pyVHDLParser.Token.Keywords.EndToken.__init__"]], "__init__() (pyvhdlparser.token.keywords.entitykeyword method)": [[230, "pyVHDLParser.Token.Keywords.EntityKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.equaloperator method)": [[230, "pyVHDLParser.Token.Keywords.EqualOperator.__init__"]], "__init__() (pyvhdlparser.token.keywords.exitkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ExitKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.filekeyword method)": [[230, "pyVHDLParser.Token.Keywords.FileKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.forkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ForKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.forcekeyword method)": [[230, "pyVHDLParser.Token.Keywords.ForceKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.functionkeyword method)": [[230, "pyVHDLParser.Token.Keywords.FunctionKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.generatekeyword method)": [[230, "pyVHDLParser.Token.Keywords.GenerateKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.generickeyword method)": [[230, "pyVHDLParser.Token.Keywords.GenericKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.greaterthanoperator method)": [[230, "pyVHDLParser.Token.Keywords.GreaterThanOperator.__init__"]], "__init__() (pyvhdlparser.token.keywords.greaterthanorequaloperator method)": [[230, "pyVHDLParser.Token.Keywords.GreaterThanOrEqualOperator.__init__"]], "__init__() (pyvhdlparser.token.keywords.groupkeyword method)": [[230, "pyVHDLParser.Token.Keywords.GroupKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.guardedkeyword method)": [[230, "pyVHDLParser.Token.Keywords.GuardedKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.identifiertoken method)": [[230, "pyVHDLParser.Token.Keywords.IdentifierToken.__init__"]], "__init__() (pyvhdlparser.token.keywords.ifkeyword method)": [[230, "pyVHDLParser.Token.Keywords.IfKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.impurekeyword method)": [[230, "pyVHDLParser.Token.Keywords.ImpureKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.inkeyword method)": [[230, "pyVHDLParser.Token.Keywords.InKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.inertialkeyword method)": [[230, "pyVHDLParser.Token.Keywords.InertialKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.inoutkeyword method)": [[230, "pyVHDLParser.Token.Keywords.InoutKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.iskeyword method)": [[230, "pyVHDLParser.Token.Keywords.IsKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.keywordtoken method)": [[230, "pyVHDLParser.Token.Keywords.KeywordToken.__init__"]], "__init__() (pyvhdlparser.token.keywords.labelkeyword method)": [[230, "pyVHDLParser.Token.Keywords.LabelKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.labeltoken method)": [[230, "pyVHDLParser.Token.Keywords.LabelToken.__init__"]], "__init__() (pyvhdlparser.token.keywords.lessthanoperator method)": [[230, "pyVHDLParser.Token.Keywords.LessThanOperator.__init__"]], "__init__() (pyvhdlparser.token.keywords.lessthanorequaloperator method)": [[230, "pyVHDLParser.Token.Keywords.LessThanOrEqualOperator.__init__"]], "__init__() (pyvhdlparser.token.keywords.librarykeyword method)": [[230, "pyVHDLParser.Token.Keywords.LibraryKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.linkagekeyword method)": [[230, "pyVHDLParser.Token.Keywords.LinkageKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.literalkeyword method)": [[230, "pyVHDLParser.Token.Keywords.LiteralKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.logicaloperator method)": [[230, "pyVHDLParser.Token.Keywords.LogicalOperator.__init__"]], "__init__() (pyvhdlparser.token.keywords.loopkeyword method)": [[230, "pyVHDLParser.Token.Keywords.LoopKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.mapassociationkeyword method)": [[230, "pyVHDLParser.Token.Keywords.MapAssociationKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.mapkeyword method)": [[230, "pyVHDLParser.Token.Keywords.MapKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.matchingequaloperator method)": [[230, "pyVHDLParser.Token.Keywords.MatchingEqualOperator.__init__"]], "__init__() (pyvhdlparser.token.keywords.matchinggreaterthanoperator method)": [[230, "pyVHDLParser.Token.Keywords.MatchingGreaterThanOperator.__init__"]], "__init__() (pyvhdlparser.token.keywords.matchinggreaterthanorequaloperator method)": [[230, "pyVHDLParser.Token.Keywords.MatchingGreaterThanOrEqualOperator.__init__"]], "__init__() (pyvhdlparser.token.keywords.matchinglessthanoperator method)": [[230, "pyVHDLParser.Token.Keywords.MatchingLessThanOperator.__init__"]], "__init__() (pyvhdlparser.token.keywords.matchinglessthanorequaloperator method)": [[230, "pyVHDLParser.Token.Keywords.MatchingLessThanOrEqualOperator.__init__"]], "__init__() (pyvhdlparser.token.keywords.matchingunequaloperator method)": [[230, "pyVHDLParser.Token.Keywords.MatchingUnequalOperator.__init__"]], "__init__() (pyvhdlparser.token.keywords.minusoperator method)": [[230, "pyVHDLParser.Token.Keywords.MinusOperator.__init__"]], "__init__() (pyvhdlparser.token.keywords.miscellaneousoperator method)": [[230, "pyVHDLParser.Token.Keywords.MiscellaneousOperator.__init__"]], "__init__() (pyvhdlparser.token.keywords.modulooperator method)": [[230, "pyVHDLParser.Token.Keywords.ModuloOperator.__init__"]], "__init__() (pyvhdlparser.token.keywords.multicharkeyword method)": [[230, "pyVHDLParser.Token.Keywords.MultiCharKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.multilinecommentendkeyword method)": [[230, "pyVHDLParser.Token.Keywords.MultiLineCommentEndKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.multilinecommentkeyword method)": [[230, "pyVHDLParser.Token.Keywords.MultiLineCommentKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.multilinecommentstartkeyword method)": [[230, "pyVHDLParser.Token.Keywords.MultiLineCommentStartKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.multiplyoperator method)": [[230, "pyVHDLParser.Token.Keywords.MultiplyOperator.__init__"]], "__init__() (pyvhdlparser.token.keywords.nandoperator method)": [[230, "pyVHDLParser.Token.Keywords.NandOperator.__init__"]], "__init__() (pyvhdlparser.token.keywords.newkeyword method)": [[230, "pyVHDLParser.Token.Keywords.NewKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.nextkeyword method)": [[230, "pyVHDLParser.Token.Keywords.NextKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.noroperator method)": [[230, "pyVHDLParser.Token.Keywords.NorOperator.__init__"]], "__init__() (pyvhdlparser.token.keywords.notoperator method)": [[230, "pyVHDLParser.Token.Keywords.NotOperator.__init__"]], "__init__() (pyvhdlparser.token.keywords.nullkeyword method)": [[230, "pyVHDLParser.Token.Keywords.NullKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.ofkeyword method)": [[230, "pyVHDLParser.Token.Keywords.OfKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.onkeyword method)": [[230, "pyVHDLParser.Token.Keywords.OnKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.openkeyword method)": [[230, "pyVHDLParser.Token.Keywords.OpenKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.openinganglebrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.OpeningAngleBracketToken.__init__"]], "__init__() (pyvhdlparser.token.keywords.openingcurlybrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.OpeningCurlyBracketToken.__init__"]], "__init__() (pyvhdlparser.token.keywords.openingroundbrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.OpeningRoundBracketToken.__init__"]], "__init__() (pyvhdlparser.token.keywords.openingsquarebrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.OpeningSquareBracketToken.__init__"]], "__init__() (pyvhdlparser.token.keywords.operator method)": [[230, "pyVHDLParser.Token.Keywords.Operator.__init__"]], "__init__() (pyvhdlparser.token.keywords.operatortoken method)": [[230, "pyVHDLParser.Token.Keywords.OperatorToken.__init__"]], "__init__() (pyvhdlparser.token.keywords.oroperator method)": [[230, "pyVHDLParser.Token.Keywords.OrOperator.__init__"]], "__init__() (pyvhdlparser.token.keywords.otherskeyword method)": [[230, "pyVHDLParser.Token.Keywords.OthersKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.outkeyword method)": [[230, "pyVHDLParser.Token.Keywords.OutKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.packagekeyword method)": [[230, "pyVHDLParser.Token.Keywords.PackageKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.parameterkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ParameterKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.plusoperator method)": [[230, "pyVHDLParser.Token.Keywords.PlusOperator.__init__"]], "__init__() (pyvhdlparser.token.keywords.portkeyword method)": [[230, "pyVHDLParser.Token.Keywords.PortKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.postponedkeyword method)": [[230, "pyVHDLParser.Token.Keywords.PostponedKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.poweroperator method)": [[230, "pyVHDLParser.Token.Keywords.PowerOperator.__init__"]], "__init__() (pyvhdlparser.token.keywords.privatekeyword method)": [[230, "pyVHDLParser.Token.Keywords.PrivateKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.procedurekeyword method)": [[230, "pyVHDLParser.Token.Keywords.ProcedureKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.processkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ProcessKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.propertykeyword method)": [[230, "pyVHDLParser.Token.Keywords.PropertyKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.protectedkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ProtectedKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.purekeyword method)": [[230, "pyVHDLParser.Token.Keywords.PureKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.rangekeyword method)": [[230, "pyVHDLParser.Token.Keywords.RangeKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.recordkeyword method)": [[230, "pyVHDLParser.Token.Keywords.RecordKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.registerkeyword method)": [[230, "pyVHDLParser.Token.Keywords.RegisterKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.rejectkeyword method)": [[230, "pyVHDLParser.Token.Keywords.RejectKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.relationaloperator method)": [[230, "pyVHDLParser.Token.Keywords.RelationalOperator.__init__"]], "__init__() (pyvhdlparser.token.keywords.releasekeyword method)": [[230, "pyVHDLParser.Token.Keywords.ReleaseKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.remainderoperator method)": [[230, "pyVHDLParser.Token.Keywords.RemainderOperator.__init__"]], "__init__() (pyvhdlparser.token.keywords.repeatedidentifiertoken method)": [[230, "pyVHDLParser.Token.Keywords.RepeatedIdentifierToken.__init__"]], "__init__() (pyvhdlparser.token.keywords.repeatedlabeltoken method)": [[230, "pyVHDLParser.Token.Keywords.RepeatedLabelToken.__init__"]], "__init__() (pyvhdlparser.token.keywords.reportkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ReportKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.returnkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ReturnKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.roloperator method)": [[230, "pyVHDLParser.Token.Keywords.RolOperator.__init__"]], "__init__() (pyvhdlparser.token.keywords.roroperator method)": [[230, "pyVHDLParser.Token.Keywords.RorOperator.__init__"]], "__init__() (pyvhdlparser.token.keywords.roundbrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.RoundBracketToken.__init__"]], "__init__() (pyvhdlparser.token.keywords.selectkeyword method)": [[230, "pyVHDLParser.Token.Keywords.SelectKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.sequencekeyword method)": [[230, "pyVHDLParser.Token.Keywords.SequenceKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.severitykeyword method)": [[230, "pyVHDLParser.Token.Keywords.SeverityKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.sharedkeyword method)": [[230, "pyVHDLParser.Token.Keywords.SharedKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.shiftoperator method)": [[230, "pyVHDLParser.Token.Keywords.ShiftOperator.__init__"]], "__init__() (pyvhdlparser.token.keywords.signalassignmentkeyword method)": [[230, "pyVHDLParser.Token.Keywords.SignalAssignmentKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.signalassociationkeyword method)": [[230, "pyVHDLParser.Token.Keywords.SignalAssociationKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.signalkeyword method)": [[230, "pyVHDLParser.Token.Keywords.SignalKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.simplenametoken method)": [[230, "pyVHDLParser.Token.Keywords.SimpleNameToken.__init__"]], "__init__() (pyvhdlparser.token.keywords.singlelinecommentkeyword method)": [[230, "pyVHDLParser.Token.Keywords.SingleLineCommentKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.slaoperator method)": [[230, "pyVHDLParser.Token.Keywords.SlaOperator.__init__"]], "__init__() (pyvhdlparser.token.keywords.slloperator method)": [[230, "pyVHDLParser.Token.Keywords.SllOperator.__init__"]], "__init__() (pyvhdlparser.token.keywords.specificvhdltoken method)": [[230, "pyVHDLParser.Token.Keywords.SpecificVHDLToken.__init__"]], "__init__() (pyvhdlparser.token.keywords.squarebrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.SquareBracketToken.__init__"]], "__init__() (pyvhdlparser.token.keywords.sraoperator method)": [[230, "pyVHDLParser.Token.Keywords.SraOperator.__init__"]], "__init__() (pyvhdlparser.token.keywords.srloperator method)": [[230, "pyVHDLParser.Token.Keywords.SrlOperator.__init__"]], "__init__() (pyvhdlparser.token.keywords.subtypekeyword method)": [[230, "pyVHDLParser.Token.Keywords.SubtypeKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.thenkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ThenKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.tokeyword method)": [[230, "pyVHDLParser.Token.Keywords.ToKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.transportkeyword method)": [[230, "pyVHDLParser.Token.Keywords.TransportKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.typekeyword method)": [[230, "pyVHDLParser.Token.Keywords.TypeKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.unaffectedkeyword method)": [[230, "pyVHDLParser.Token.Keywords.UnaffectedKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.unbufferedkeyword method)": [[230, "pyVHDLParser.Token.Keywords.UnbufferedKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.unequaloperator method)": [[230, "pyVHDLParser.Token.Keywords.UnequalOperator.__init__"]], "__init__() (pyvhdlparser.token.keywords.unitskeyword method)": [[230, "pyVHDLParser.Token.Keywords.UnitsKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.untilkeyword method)": [[230, "pyVHDLParser.Token.Keywords.UntilKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.usekeyword method)": [[230, "pyVHDLParser.Token.Keywords.UseKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.variableassignmentkeyword method)": [[230, "pyVHDLParser.Token.Keywords.VariableAssignmentKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.variablekeyword method)": [[230, "pyVHDLParser.Token.Keywords.VariableKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.viewkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ViewKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.vunitkeyword method)": [[230, "pyVHDLParser.Token.Keywords.VunitKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.waitkeyword method)": [[230, "pyVHDLParser.Token.Keywords.WaitKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.whenkeyword method)": [[230, "pyVHDLParser.Token.Keywords.WhenKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.whilekeyword method)": [[230, "pyVHDLParser.Token.Keywords.WhileKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.withkeyword method)": [[230, "pyVHDLParser.Token.Keywords.WithKeyword.__init__"]], "__init__() (pyvhdlparser.token.keywords.xnoroperator method)": [[230, "pyVHDLParser.Token.Keywords.XnorOperator.__init__"]], "__init__() (pyvhdlparser.token.keywords.xoroperator method)": [[230, "pyVHDLParser.Token.Keywords.XorOperator.__init__"]], "__ne__() (pyvhdlparser.token.keywords.absoperator method)": [[230, "pyVHDLParser.Token.Keywords.AbsOperator.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.accesskeyword method)": [[230, "pyVHDLParser.Token.Keywords.AccessKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.afterkeyword method)": [[230, "pyVHDLParser.Token.Keywords.AfterKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.aliaskeyword method)": [[230, "pyVHDLParser.Token.Keywords.AliasKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.allkeyword method)": [[230, "pyVHDLParser.Token.Keywords.AllKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.andoperator method)": [[230, "pyVHDLParser.Token.Keywords.AndOperator.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.anglebrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.AngleBracketToken.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.architecturekeyword method)": [[230, "pyVHDLParser.Token.Keywords.ArchitectureKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.arraykeyword method)": [[230, "pyVHDLParser.Token.Keywords.ArrayKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.assertkeyword method)": [[230, "pyVHDLParser.Token.Keywords.AssertKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.assignmentkeyword method)": [[230, "pyVHDLParser.Token.Keywords.AssignmentKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.associationkeyword method)": [[230, "pyVHDLParser.Token.Keywords.AssociationKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.attributekeyword method)": [[230, "pyVHDLParser.Token.Keywords.AttributeKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.beginkeyword method)": [[230, "pyVHDLParser.Token.Keywords.BeginKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.blockkeyword method)": [[230, "pyVHDLParser.Token.Keywords.BlockKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.bodykeyword method)": [[230, "pyVHDLParser.Token.Keywords.BodyKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.boundarytoken method)": [[230, "pyVHDLParser.Token.Keywords.BoundaryToken.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.brackettoken method)": [[230, "pyVHDLParser.Token.Keywords.BracketToken.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.bufferkeyword method)": [[230, "pyVHDLParser.Token.Keywords.BufferKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.buskeyword method)": [[230, "pyVHDLParser.Token.Keywords.BusKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.casekeyword method)": [[230, "pyVHDLParser.Token.Keywords.CaseKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.closinganglebrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.ClosingAngleBracketToken.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.closingcurlybrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.ClosingCurlyBracketToken.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.closingroundbrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.ClosingRoundBracketToken.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.closingsquarebrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.ClosingSquareBracketToken.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.commentkeyword method)": [[230, "pyVHDLParser.Token.Keywords.CommentKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.componentkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ComponentKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.concatoperator method)": [[230, "pyVHDLParser.Token.Keywords.ConcatOperator.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.configurationkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ConfigurationKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.constantkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ConstantKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.contextkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ContextKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.curlybrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.CurlyBracketToken.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.defaultkeyword method)": [[230, "pyVHDLParser.Token.Keywords.DefaultKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.delimitertoken method)": [[230, "pyVHDLParser.Token.Keywords.DelimiterToken.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.directionkeyword method)": [[230, "pyVHDLParser.Token.Keywords.DirectionKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.disconnectkeyword method)": [[230, "pyVHDLParser.Token.Keywords.DisconnectKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.divideoperator method)": [[230, "pyVHDLParser.Token.Keywords.DivideOperator.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.downtokeyword method)": [[230, "pyVHDLParser.Token.Keywords.DowntoKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.elsifkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ElsIfKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.elsekeyword method)": [[230, "pyVHDLParser.Token.Keywords.ElseKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.endkeyword method)": [[230, "pyVHDLParser.Token.Keywords.EndKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.endtoken method)": [[230, "pyVHDLParser.Token.Keywords.EndToken.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.entitykeyword method)": [[230, "pyVHDLParser.Token.Keywords.EntityKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.equaloperator method)": [[230, "pyVHDLParser.Token.Keywords.EqualOperator.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.exitkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ExitKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.filekeyword method)": [[230, "pyVHDLParser.Token.Keywords.FileKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.forkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ForKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.forcekeyword method)": [[230, "pyVHDLParser.Token.Keywords.ForceKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.functionkeyword method)": [[230, "pyVHDLParser.Token.Keywords.FunctionKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.generatekeyword method)": [[230, "pyVHDLParser.Token.Keywords.GenerateKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.generickeyword method)": [[230, "pyVHDLParser.Token.Keywords.GenericKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.greaterthanoperator method)": [[230, "pyVHDLParser.Token.Keywords.GreaterThanOperator.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.greaterthanorequaloperator method)": [[230, "pyVHDLParser.Token.Keywords.GreaterThanOrEqualOperator.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.groupkeyword method)": [[230, "pyVHDLParser.Token.Keywords.GroupKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.guardedkeyword method)": [[230, "pyVHDLParser.Token.Keywords.GuardedKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.identifiertoken method)": [[230, "pyVHDLParser.Token.Keywords.IdentifierToken.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.ifkeyword method)": [[230, "pyVHDLParser.Token.Keywords.IfKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.impurekeyword method)": [[230, "pyVHDLParser.Token.Keywords.ImpureKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.inkeyword method)": [[230, "pyVHDLParser.Token.Keywords.InKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.inertialkeyword method)": [[230, "pyVHDLParser.Token.Keywords.InertialKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.inoutkeyword method)": [[230, "pyVHDLParser.Token.Keywords.InoutKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.iskeyword method)": [[230, "pyVHDLParser.Token.Keywords.IsKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.keywordtoken method)": [[230, "pyVHDLParser.Token.Keywords.KeywordToken.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.labelkeyword method)": [[230, "pyVHDLParser.Token.Keywords.LabelKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.labeltoken method)": [[230, "pyVHDLParser.Token.Keywords.LabelToken.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.lessthanoperator method)": [[230, "pyVHDLParser.Token.Keywords.LessThanOperator.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.lessthanorequaloperator method)": [[230, "pyVHDLParser.Token.Keywords.LessThanOrEqualOperator.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.librarykeyword method)": [[230, "pyVHDLParser.Token.Keywords.LibraryKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.linkagekeyword method)": [[230, "pyVHDLParser.Token.Keywords.LinkageKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.literalkeyword method)": [[230, "pyVHDLParser.Token.Keywords.LiteralKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.logicaloperator method)": [[230, "pyVHDLParser.Token.Keywords.LogicalOperator.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.loopkeyword method)": [[230, "pyVHDLParser.Token.Keywords.LoopKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.mapassociationkeyword method)": [[230, "pyVHDLParser.Token.Keywords.MapAssociationKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.mapkeyword method)": [[230, "pyVHDLParser.Token.Keywords.MapKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.matchingequaloperator method)": [[230, "pyVHDLParser.Token.Keywords.MatchingEqualOperator.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.matchinggreaterthanoperator method)": [[230, "pyVHDLParser.Token.Keywords.MatchingGreaterThanOperator.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.matchinggreaterthanorequaloperator method)": [[230, "pyVHDLParser.Token.Keywords.MatchingGreaterThanOrEqualOperator.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.matchinglessthanoperator method)": [[230, "pyVHDLParser.Token.Keywords.MatchingLessThanOperator.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.matchinglessthanorequaloperator method)": [[230, "pyVHDLParser.Token.Keywords.MatchingLessThanOrEqualOperator.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.matchingunequaloperator method)": [[230, "pyVHDLParser.Token.Keywords.MatchingUnequalOperator.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.minusoperator method)": [[230, "pyVHDLParser.Token.Keywords.MinusOperator.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.miscellaneousoperator method)": [[230, "pyVHDLParser.Token.Keywords.MiscellaneousOperator.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.modulooperator method)": [[230, "pyVHDLParser.Token.Keywords.ModuloOperator.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.multicharkeyword method)": [[230, "pyVHDLParser.Token.Keywords.MultiCharKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.multilinecommentendkeyword method)": [[230, "pyVHDLParser.Token.Keywords.MultiLineCommentEndKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.multilinecommentkeyword method)": [[230, "pyVHDLParser.Token.Keywords.MultiLineCommentKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.multilinecommentstartkeyword method)": [[230, "pyVHDLParser.Token.Keywords.MultiLineCommentStartKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.multiplyoperator method)": [[230, "pyVHDLParser.Token.Keywords.MultiplyOperator.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.nandoperator method)": [[230, "pyVHDLParser.Token.Keywords.NandOperator.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.newkeyword method)": [[230, "pyVHDLParser.Token.Keywords.NewKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.nextkeyword method)": [[230, "pyVHDLParser.Token.Keywords.NextKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.noroperator method)": [[230, "pyVHDLParser.Token.Keywords.NorOperator.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.notoperator method)": [[230, "pyVHDLParser.Token.Keywords.NotOperator.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.nullkeyword method)": [[230, "pyVHDLParser.Token.Keywords.NullKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.ofkeyword method)": [[230, "pyVHDLParser.Token.Keywords.OfKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.onkeyword method)": [[230, "pyVHDLParser.Token.Keywords.OnKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.openkeyword method)": [[230, "pyVHDLParser.Token.Keywords.OpenKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.openinganglebrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.OpeningAngleBracketToken.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.openingcurlybrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.OpeningCurlyBracketToken.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.openingroundbrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.OpeningRoundBracketToken.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.openingsquarebrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.OpeningSquareBracketToken.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.operator method)": [[230, "pyVHDLParser.Token.Keywords.Operator.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.operatortoken method)": [[230, "pyVHDLParser.Token.Keywords.OperatorToken.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.oroperator method)": [[230, "pyVHDLParser.Token.Keywords.OrOperator.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.otherskeyword method)": [[230, "pyVHDLParser.Token.Keywords.OthersKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.outkeyword method)": [[230, "pyVHDLParser.Token.Keywords.OutKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.packagekeyword method)": [[230, "pyVHDLParser.Token.Keywords.PackageKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.parameterkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ParameterKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.plusoperator method)": [[230, "pyVHDLParser.Token.Keywords.PlusOperator.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.portkeyword method)": [[230, "pyVHDLParser.Token.Keywords.PortKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.postponedkeyword method)": [[230, "pyVHDLParser.Token.Keywords.PostponedKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.poweroperator method)": [[230, "pyVHDLParser.Token.Keywords.PowerOperator.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.privatekeyword method)": [[230, "pyVHDLParser.Token.Keywords.PrivateKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.procedurekeyword method)": [[230, "pyVHDLParser.Token.Keywords.ProcedureKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.processkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ProcessKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.propertykeyword method)": [[230, "pyVHDLParser.Token.Keywords.PropertyKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.protectedkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ProtectedKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.purekeyword method)": [[230, "pyVHDLParser.Token.Keywords.PureKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.rangekeyword method)": [[230, "pyVHDLParser.Token.Keywords.RangeKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.recordkeyword method)": [[230, "pyVHDLParser.Token.Keywords.RecordKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.registerkeyword method)": [[230, "pyVHDLParser.Token.Keywords.RegisterKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.rejectkeyword method)": [[230, "pyVHDLParser.Token.Keywords.RejectKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.relationaloperator method)": [[230, "pyVHDLParser.Token.Keywords.RelationalOperator.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.releasekeyword method)": [[230, "pyVHDLParser.Token.Keywords.ReleaseKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.remainderoperator method)": [[230, "pyVHDLParser.Token.Keywords.RemainderOperator.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.repeatedidentifiertoken method)": [[230, "pyVHDLParser.Token.Keywords.RepeatedIdentifierToken.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.repeatedlabeltoken method)": [[230, "pyVHDLParser.Token.Keywords.RepeatedLabelToken.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.reportkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ReportKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.returnkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ReturnKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.roloperator method)": [[230, "pyVHDLParser.Token.Keywords.RolOperator.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.roroperator method)": [[230, "pyVHDLParser.Token.Keywords.RorOperator.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.roundbrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.RoundBracketToken.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.selectkeyword method)": [[230, "pyVHDLParser.Token.Keywords.SelectKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.sequencekeyword method)": [[230, "pyVHDLParser.Token.Keywords.SequenceKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.severitykeyword method)": [[230, "pyVHDLParser.Token.Keywords.SeverityKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.sharedkeyword method)": [[230, "pyVHDLParser.Token.Keywords.SharedKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.shiftoperator method)": [[230, "pyVHDLParser.Token.Keywords.ShiftOperator.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.signalassignmentkeyword method)": [[230, "pyVHDLParser.Token.Keywords.SignalAssignmentKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.signalassociationkeyword method)": [[230, "pyVHDLParser.Token.Keywords.SignalAssociationKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.signalkeyword method)": [[230, "pyVHDLParser.Token.Keywords.SignalKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.simplenametoken method)": [[230, "pyVHDLParser.Token.Keywords.SimpleNameToken.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.singlelinecommentkeyword method)": [[230, "pyVHDLParser.Token.Keywords.SingleLineCommentKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.slaoperator method)": [[230, "pyVHDLParser.Token.Keywords.SlaOperator.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.slloperator method)": [[230, "pyVHDLParser.Token.Keywords.SllOperator.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.specificvhdltoken method)": [[230, "pyVHDLParser.Token.Keywords.SpecificVHDLToken.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.squarebrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.SquareBracketToken.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.sraoperator method)": [[230, "pyVHDLParser.Token.Keywords.SraOperator.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.srloperator method)": [[230, "pyVHDLParser.Token.Keywords.SrlOperator.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.subtypekeyword method)": [[230, "pyVHDLParser.Token.Keywords.SubtypeKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.thenkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ThenKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.tokeyword method)": [[230, "pyVHDLParser.Token.Keywords.ToKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.transportkeyword method)": [[230, "pyVHDLParser.Token.Keywords.TransportKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.typekeyword method)": [[230, "pyVHDLParser.Token.Keywords.TypeKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.unaffectedkeyword method)": [[230, "pyVHDLParser.Token.Keywords.UnaffectedKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.unbufferedkeyword method)": [[230, "pyVHDLParser.Token.Keywords.UnbufferedKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.unequaloperator method)": [[230, "pyVHDLParser.Token.Keywords.UnequalOperator.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.unitskeyword method)": [[230, "pyVHDLParser.Token.Keywords.UnitsKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.untilkeyword method)": [[230, "pyVHDLParser.Token.Keywords.UntilKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.usekeyword method)": [[230, "pyVHDLParser.Token.Keywords.UseKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.variableassignmentkeyword method)": [[230, "pyVHDLParser.Token.Keywords.VariableAssignmentKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.variablekeyword method)": [[230, "pyVHDLParser.Token.Keywords.VariableKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.viewkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ViewKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.vunitkeyword method)": [[230, "pyVHDLParser.Token.Keywords.VunitKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.waitkeyword method)": [[230, "pyVHDLParser.Token.Keywords.WaitKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.whenkeyword method)": [[230, "pyVHDLParser.Token.Keywords.WhenKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.whilekeyword method)": [[230, "pyVHDLParser.Token.Keywords.WhileKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.withkeyword method)": [[230, "pyVHDLParser.Token.Keywords.WithKeyword.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.xnoroperator method)": [[230, "pyVHDLParser.Token.Keywords.XnorOperator.__ne__"]], "__ne__() (pyvhdlparser.token.keywords.xoroperator method)": [[230, "pyVHDLParser.Token.Keywords.XorOperator.__ne__"]], "__repr__() (pyvhdlparser.token.keywords.absoperator method)": [[230, "pyVHDLParser.Token.Keywords.AbsOperator.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.accesskeyword method)": [[230, "pyVHDLParser.Token.Keywords.AccessKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.afterkeyword method)": [[230, "pyVHDLParser.Token.Keywords.AfterKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.aliaskeyword method)": [[230, "pyVHDLParser.Token.Keywords.AliasKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.allkeyword method)": [[230, "pyVHDLParser.Token.Keywords.AllKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.andoperator method)": [[230, "pyVHDLParser.Token.Keywords.AndOperator.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.anglebrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.AngleBracketToken.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.architecturekeyword method)": [[230, "pyVHDLParser.Token.Keywords.ArchitectureKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.arraykeyword method)": [[230, "pyVHDLParser.Token.Keywords.ArrayKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.assertkeyword method)": [[230, "pyVHDLParser.Token.Keywords.AssertKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.assignmentkeyword method)": [[230, "pyVHDLParser.Token.Keywords.AssignmentKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.associationkeyword method)": [[230, "pyVHDLParser.Token.Keywords.AssociationKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.attributekeyword method)": [[230, "pyVHDLParser.Token.Keywords.AttributeKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.beginkeyword method)": [[230, "pyVHDLParser.Token.Keywords.BeginKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.blockkeyword method)": [[230, "pyVHDLParser.Token.Keywords.BlockKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.bodykeyword method)": [[230, "pyVHDLParser.Token.Keywords.BodyKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.boundarytoken method)": [[230, "pyVHDLParser.Token.Keywords.BoundaryToken.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.brackettoken method)": [[230, "pyVHDLParser.Token.Keywords.BracketToken.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.bufferkeyword method)": [[230, "pyVHDLParser.Token.Keywords.BufferKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.buskeyword method)": [[230, "pyVHDLParser.Token.Keywords.BusKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.casekeyword method)": [[230, "pyVHDLParser.Token.Keywords.CaseKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.closinganglebrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.ClosingAngleBracketToken.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.closingcurlybrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.ClosingCurlyBracketToken.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.closingroundbrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.ClosingRoundBracketToken.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.closingsquarebrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.ClosingSquareBracketToken.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.commentkeyword method)": [[230, "pyVHDLParser.Token.Keywords.CommentKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.componentkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ComponentKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.concatoperator method)": [[230, "pyVHDLParser.Token.Keywords.ConcatOperator.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.configurationkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ConfigurationKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.constantkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ConstantKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.contextkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ContextKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.curlybrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.CurlyBracketToken.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.defaultkeyword method)": [[230, "pyVHDLParser.Token.Keywords.DefaultKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.delimitertoken method)": [[230, "pyVHDLParser.Token.Keywords.DelimiterToken.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.directionkeyword method)": [[230, "pyVHDLParser.Token.Keywords.DirectionKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.disconnectkeyword method)": [[230, "pyVHDLParser.Token.Keywords.DisconnectKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.divideoperator method)": [[230, "pyVHDLParser.Token.Keywords.DivideOperator.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.downtokeyword method)": [[230, "pyVHDLParser.Token.Keywords.DowntoKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.elsifkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ElsIfKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.elsekeyword method)": [[230, "pyVHDLParser.Token.Keywords.ElseKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.endkeyword method)": [[230, "pyVHDLParser.Token.Keywords.EndKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.endtoken method)": [[230, "pyVHDLParser.Token.Keywords.EndToken.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.entitykeyword method)": [[230, "pyVHDLParser.Token.Keywords.EntityKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.equaloperator method)": [[230, "pyVHDLParser.Token.Keywords.EqualOperator.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.exitkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ExitKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.filekeyword method)": [[230, "pyVHDLParser.Token.Keywords.FileKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.forkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ForKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.forcekeyword method)": [[230, "pyVHDLParser.Token.Keywords.ForceKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.functionkeyword method)": [[230, "pyVHDLParser.Token.Keywords.FunctionKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.generatekeyword method)": [[230, "pyVHDLParser.Token.Keywords.GenerateKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.generickeyword method)": [[230, "pyVHDLParser.Token.Keywords.GenericKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.greaterthanoperator method)": [[230, "pyVHDLParser.Token.Keywords.GreaterThanOperator.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.greaterthanorequaloperator method)": [[230, "pyVHDLParser.Token.Keywords.GreaterThanOrEqualOperator.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.groupkeyword method)": [[230, "pyVHDLParser.Token.Keywords.GroupKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.guardedkeyword method)": [[230, "pyVHDLParser.Token.Keywords.GuardedKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.identifiertoken method)": [[230, "pyVHDLParser.Token.Keywords.IdentifierToken.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.ifkeyword method)": [[230, "pyVHDLParser.Token.Keywords.IfKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.impurekeyword method)": [[230, "pyVHDLParser.Token.Keywords.ImpureKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.inkeyword method)": [[230, "pyVHDLParser.Token.Keywords.InKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.inertialkeyword method)": [[230, "pyVHDLParser.Token.Keywords.InertialKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.inoutkeyword method)": [[230, "pyVHDLParser.Token.Keywords.InoutKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.iskeyword method)": [[230, "pyVHDLParser.Token.Keywords.IsKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.keywordtoken method)": [[230, "pyVHDLParser.Token.Keywords.KeywordToken.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.labelkeyword method)": [[230, "pyVHDLParser.Token.Keywords.LabelKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.labeltoken method)": [[230, "pyVHDLParser.Token.Keywords.LabelToken.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.lessthanoperator method)": [[230, "pyVHDLParser.Token.Keywords.LessThanOperator.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.lessthanorequaloperator method)": [[230, "pyVHDLParser.Token.Keywords.LessThanOrEqualOperator.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.librarykeyword method)": [[230, "pyVHDLParser.Token.Keywords.LibraryKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.linkagekeyword method)": [[230, "pyVHDLParser.Token.Keywords.LinkageKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.literalkeyword method)": [[230, "pyVHDLParser.Token.Keywords.LiteralKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.logicaloperator method)": [[230, "pyVHDLParser.Token.Keywords.LogicalOperator.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.loopkeyword method)": [[230, "pyVHDLParser.Token.Keywords.LoopKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.mapassociationkeyword method)": [[230, "pyVHDLParser.Token.Keywords.MapAssociationKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.mapkeyword method)": [[230, "pyVHDLParser.Token.Keywords.MapKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.matchingequaloperator method)": [[230, "pyVHDLParser.Token.Keywords.MatchingEqualOperator.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.matchinggreaterthanoperator method)": [[230, "pyVHDLParser.Token.Keywords.MatchingGreaterThanOperator.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.matchinggreaterthanorequaloperator method)": [[230, "pyVHDLParser.Token.Keywords.MatchingGreaterThanOrEqualOperator.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.matchinglessthanoperator method)": [[230, "pyVHDLParser.Token.Keywords.MatchingLessThanOperator.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.matchinglessthanorequaloperator method)": [[230, "pyVHDLParser.Token.Keywords.MatchingLessThanOrEqualOperator.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.matchingunequaloperator method)": [[230, "pyVHDLParser.Token.Keywords.MatchingUnequalOperator.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.minusoperator method)": [[230, "pyVHDLParser.Token.Keywords.MinusOperator.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.miscellaneousoperator method)": [[230, "pyVHDLParser.Token.Keywords.MiscellaneousOperator.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.modulooperator method)": [[230, "pyVHDLParser.Token.Keywords.ModuloOperator.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.multicharkeyword method)": [[230, "pyVHDLParser.Token.Keywords.MultiCharKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.multilinecommentendkeyword method)": [[230, "pyVHDLParser.Token.Keywords.MultiLineCommentEndKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.multilinecommentkeyword method)": [[230, "pyVHDLParser.Token.Keywords.MultiLineCommentKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.multilinecommentstartkeyword method)": [[230, "pyVHDLParser.Token.Keywords.MultiLineCommentStartKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.multiplyoperator method)": [[230, "pyVHDLParser.Token.Keywords.MultiplyOperator.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.nandoperator method)": [[230, "pyVHDLParser.Token.Keywords.NandOperator.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.newkeyword method)": [[230, "pyVHDLParser.Token.Keywords.NewKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.nextkeyword method)": [[230, "pyVHDLParser.Token.Keywords.NextKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.noroperator method)": [[230, "pyVHDLParser.Token.Keywords.NorOperator.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.notoperator method)": [[230, "pyVHDLParser.Token.Keywords.NotOperator.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.nullkeyword method)": [[230, "pyVHDLParser.Token.Keywords.NullKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.ofkeyword method)": [[230, "pyVHDLParser.Token.Keywords.OfKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.onkeyword method)": [[230, "pyVHDLParser.Token.Keywords.OnKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.openkeyword method)": [[230, "pyVHDLParser.Token.Keywords.OpenKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.openinganglebrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.OpeningAngleBracketToken.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.openingcurlybrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.OpeningCurlyBracketToken.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.openingroundbrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.OpeningRoundBracketToken.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.openingsquarebrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.OpeningSquareBracketToken.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.operator method)": [[230, "pyVHDLParser.Token.Keywords.Operator.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.operatortoken method)": [[230, "pyVHDLParser.Token.Keywords.OperatorToken.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.oroperator method)": [[230, "pyVHDLParser.Token.Keywords.OrOperator.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.otherskeyword method)": [[230, "pyVHDLParser.Token.Keywords.OthersKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.outkeyword method)": [[230, "pyVHDLParser.Token.Keywords.OutKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.packagekeyword method)": [[230, "pyVHDLParser.Token.Keywords.PackageKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.parameterkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ParameterKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.plusoperator method)": [[230, "pyVHDLParser.Token.Keywords.PlusOperator.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.portkeyword method)": [[230, "pyVHDLParser.Token.Keywords.PortKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.postponedkeyword method)": [[230, "pyVHDLParser.Token.Keywords.PostponedKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.poweroperator method)": [[230, "pyVHDLParser.Token.Keywords.PowerOperator.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.privatekeyword method)": [[230, "pyVHDLParser.Token.Keywords.PrivateKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.procedurekeyword method)": [[230, "pyVHDLParser.Token.Keywords.ProcedureKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.processkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ProcessKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.propertykeyword method)": [[230, "pyVHDLParser.Token.Keywords.PropertyKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.protectedkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ProtectedKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.purekeyword method)": [[230, "pyVHDLParser.Token.Keywords.PureKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.rangekeyword method)": [[230, "pyVHDLParser.Token.Keywords.RangeKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.recordkeyword method)": [[230, "pyVHDLParser.Token.Keywords.RecordKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.registerkeyword method)": [[230, "pyVHDLParser.Token.Keywords.RegisterKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.rejectkeyword method)": [[230, "pyVHDLParser.Token.Keywords.RejectKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.relationaloperator method)": [[230, "pyVHDLParser.Token.Keywords.RelationalOperator.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.releasekeyword method)": [[230, "pyVHDLParser.Token.Keywords.ReleaseKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.remainderoperator method)": [[230, "pyVHDLParser.Token.Keywords.RemainderOperator.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.repeatedidentifiertoken method)": [[230, "pyVHDLParser.Token.Keywords.RepeatedIdentifierToken.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.repeatedlabeltoken method)": [[230, "pyVHDLParser.Token.Keywords.RepeatedLabelToken.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.reportkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ReportKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.returnkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ReturnKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.roloperator method)": [[230, "pyVHDLParser.Token.Keywords.RolOperator.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.roroperator method)": [[230, "pyVHDLParser.Token.Keywords.RorOperator.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.roundbrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.RoundBracketToken.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.selectkeyword method)": [[230, "pyVHDLParser.Token.Keywords.SelectKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.sequencekeyword method)": [[230, "pyVHDLParser.Token.Keywords.SequenceKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.severitykeyword method)": [[230, "pyVHDLParser.Token.Keywords.SeverityKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.sharedkeyword method)": [[230, "pyVHDLParser.Token.Keywords.SharedKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.shiftoperator method)": [[230, "pyVHDLParser.Token.Keywords.ShiftOperator.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.signalassignmentkeyword method)": [[230, "pyVHDLParser.Token.Keywords.SignalAssignmentKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.signalassociationkeyword method)": [[230, "pyVHDLParser.Token.Keywords.SignalAssociationKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.signalkeyword method)": [[230, "pyVHDLParser.Token.Keywords.SignalKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.simplenametoken method)": [[230, "pyVHDLParser.Token.Keywords.SimpleNameToken.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.singlelinecommentkeyword method)": [[230, "pyVHDLParser.Token.Keywords.SingleLineCommentKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.slaoperator method)": [[230, "pyVHDLParser.Token.Keywords.SlaOperator.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.slloperator method)": [[230, "pyVHDLParser.Token.Keywords.SllOperator.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.specificvhdltoken method)": [[230, "pyVHDLParser.Token.Keywords.SpecificVHDLToken.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.squarebrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.SquareBracketToken.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.sraoperator method)": [[230, "pyVHDLParser.Token.Keywords.SraOperator.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.srloperator method)": [[230, "pyVHDLParser.Token.Keywords.SrlOperator.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.subtypekeyword method)": [[230, "pyVHDLParser.Token.Keywords.SubtypeKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.thenkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ThenKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.tokeyword method)": [[230, "pyVHDLParser.Token.Keywords.ToKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.transportkeyword method)": [[230, "pyVHDLParser.Token.Keywords.TransportKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.typekeyword method)": [[230, "pyVHDLParser.Token.Keywords.TypeKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.unaffectedkeyword method)": [[230, "pyVHDLParser.Token.Keywords.UnaffectedKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.unbufferedkeyword method)": [[230, "pyVHDLParser.Token.Keywords.UnbufferedKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.unequaloperator method)": [[230, "pyVHDLParser.Token.Keywords.UnequalOperator.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.unitskeyword method)": [[230, "pyVHDLParser.Token.Keywords.UnitsKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.untilkeyword method)": [[230, "pyVHDLParser.Token.Keywords.UntilKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.usekeyword method)": [[230, "pyVHDLParser.Token.Keywords.UseKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.variableassignmentkeyword method)": [[230, "pyVHDLParser.Token.Keywords.VariableAssignmentKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.variablekeyword method)": [[230, "pyVHDLParser.Token.Keywords.VariableKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.viewkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ViewKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.vunitkeyword method)": [[230, "pyVHDLParser.Token.Keywords.VunitKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.waitkeyword method)": [[230, "pyVHDLParser.Token.Keywords.WaitKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.whenkeyword method)": [[230, "pyVHDLParser.Token.Keywords.WhenKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.whilekeyword method)": [[230, "pyVHDLParser.Token.Keywords.WhileKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.withkeyword method)": [[230, "pyVHDLParser.Token.Keywords.WithKeyword.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.xnoroperator method)": [[230, "pyVHDLParser.Token.Keywords.XnorOperator.__repr__"]], "__repr__() (pyvhdlparser.token.keywords.xoroperator method)": [[230, "pyVHDLParser.Token.Keywords.XorOperator.__repr__"]], "__str__() (pyvhdlparser.token.keywords.absoperator method)": [[230, "pyVHDLParser.Token.Keywords.AbsOperator.__str__"]], "__str__() (pyvhdlparser.token.keywords.accesskeyword method)": [[230, "pyVHDLParser.Token.Keywords.AccessKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.afterkeyword method)": [[230, "pyVHDLParser.Token.Keywords.AfterKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.aliaskeyword method)": [[230, "pyVHDLParser.Token.Keywords.AliasKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.allkeyword method)": [[230, "pyVHDLParser.Token.Keywords.AllKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.andoperator method)": [[230, "pyVHDLParser.Token.Keywords.AndOperator.__str__"]], "__str__() (pyvhdlparser.token.keywords.anglebrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.AngleBracketToken.__str__"]], "__str__() (pyvhdlparser.token.keywords.architecturekeyword method)": [[230, "pyVHDLParser.Token.Keywords.ArchitectureKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.arraykeyword method)": [[230, "pyVHDLParser.Token.Keywords.ArrayKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.assertkeyword method)": [[230, "pyVHDLParser.Token.Keywords.AssertKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.assignmentkeyword method)": [[230, "pyVHDLParser.Token.Keywords.AssignmentKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.associationkeyword method)": [[230, "pyVHDLParser.Token.Keywords.AssociationKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.attributekeyword method)": [[230, "pyVHDLParser.Token.Keywords.AttributeKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.beginkeyword method)": [[230, "pyVHDLParser.Token.Keywords.BeginKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.blockkeyword method)": [[230, "pyVHDLParser.Token.Keywords.BlockKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.bodykeyword method)": [[230, "pyVHDLParser.Token.Keywords.BodyKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.boundarytoken method)": [[230, "pyVHDLParser.Token.Keywords.BoundaryToken.__str__"]], "__str__() (pyvhdlparser.token.keywords.brackettoken method)": [[230, "pyVHDLParser.Token.Keywords.BracketToken.__str__"]], "__str__() (pyvhdlparser.token.keywords.bufferkeyword method)": [[230, "pyVHDLParser.Token.Keywords.BufferKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.buskeyword method)": [[230, "pyVHDLParser.Token.Keywords.BusKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.casekeyword method)": [[230, "pyVHDLParser.Token.Keywords.CaseKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.closinganglebrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.ClosingAngleBracketToken.__str__"]], "__str__() (pyvhdlparser.token.keywords.closingcurlybrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.ClosingCurlyBracketToken.__str__"]], "__str__() (pyvhdlparser.token.keywords.closingroundbrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.ClosingRoundBracketToken.__str__"]], "__str__() (pyvhdlparser.token.keywords.closingsquarebrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.ClosingSquareBracketToken.__str__"]], "__str__() (pyvhdlparser.token.keywords.commentkeyword method)": [[230, "pyVHDLParser.Token.Keywords.CommentKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.componentkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ComponentKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.concatoperator method)": [[230, "pyVHDLParser.Token.Keywords.ConcatOperator.__str__"]], "__str__() (pyvhdlparser.token.keywords.configurationkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ConfigurationKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.constantkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ConstantKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.contextkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ContextKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.curlybrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.CurlyBracketToken.__str__"]], "__str__() (pyvhdlparser.token.keywords.defaultkeyword method)": [[230, "pyVHDLParser.Token.Keywords.DefaultKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.delimitertoken method)": [[230, "pyVHDLParser.Token.Keywords.DelimiterToken.__str__"]], "__str__() (pyvhdlparser.token.keywords.directionkeyword method)": [[230, "pyVHDLParser.Token.Keywords.DirectionKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.disconnectkeyword method)": [[230, "pyVHDLParser.Token.Keywords.DisconnectKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.divideoperator method)": [[230, "pyVHDLParser.Token.Keywords.DivideOperator.__str__"]], "__str__() (pyvhdlparser.token.keywords.downtokeyword method)": [[230, "pyVHDLParser.Token.Keywords.DowntoKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.elsifkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ElsIfKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.elsekeyword method)": [[230, "pyVHDLParser.Token.Keywords.ElseKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.endkeyword method)": [[230, "pyVHDLParser.Token.Keywords.EndKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.endtoken method)": [[230, "pyVHDLParser.Token.Keywords.EndToken.__str__"]], "__str__() (pyvhdlparser.token.keywords.entitykeyword method)": [[230, "pyVHDLParser.Token.Keywords.EntityKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.equaloperator method)": [[230, "pyVHDLParser.Token.Keywords.EqualOperator.__str__"]], "__str__() (pyvhdlparser.token.keywords.exitkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ExitKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.filekeyword method)": [[230, "pyVHDLParser.Token.Keywords.FileKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.forkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ForKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.forcekeyword method)": [[230, "pyVHDLParser.Token.Keywords.ForceKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.functionkeyword method)": [[230, "pyVHDLParser.Token.Keywords.FunctionKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.generatekeyword method)": [[230, "pyVHDLParser.Token.Keywords.GenerateKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.generickeyword method)": [[230, "pyVHDLParser.Token.Keywords.GenericKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.greaterthanoperator method)": [[230, "pyVHDLParser.Token.Keywords.GreaterThanOperator.__str__"]], "__str__() (pyvhdlparser.token.keywords.greaterthanorequaloperator method)": [[230, "pyVHDLParser.Token.Keywords.GreaterThanOrEqualOperator.__str__"]], "__str__() (pyvhdlparser.token.keywords.groupkeyword method)": [[230, "pyVHDLParser.Token.Keywords.GroupKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.guardedkeyword method)": [[230, "pyVHDLParser.Token.Keywords.GuardedKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.identifiertoken method)": [[230, "pyVHDLParser.Token.Keywords.IdentifierToken.__str__"]], "__str__() (pyvhdlparser.token.keywords.ifkeyword method)": [[230, "pyVHDLParser.Token.Keywords.IfKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.impurekeyword method)": [[230, "pyVHDLParser.Token.Keywords.ImpureKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.inkeyword method)": [[230, "pyVHDLParser.Token.Keywords.InKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.inertialkeyword method)": [[230, "pyVHDLParser.Token.Keywords.InertialKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.inoutkeyword method)": [[230, "pyVHDLParser.Token.Keywords.InoutKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.iskeyword method)": [[230, "pyVHDLParser.Token.Keywords.IsKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.keywordtoken method)": [[230, "pyVHDLParser.Token.Keywords.KeywordToken.__str__"]], "__str__() (pyvhdlparser.token.keywords.labelkeyword method)": [[230, "pyVHDLParser.Token.Keywords.LabelKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.labeltoken method)": [[230, "pyVHDLParser.Token.Keywords.LabelToken.__str__"]], "__str__() (pyvhdlparser.token.keywords.lessthanoperator method)": [[230, "pyVHDLParser.Token.Keywords.LessThanOperator.__str__"]], "__str__() (pyvhdlparser.token.keywords.lessthanorequaloperator method)": [[230, "pyVHDLParser.Token.Keywords.LessThanOrEqualOperator.__str__"]], "__str__() (pyvhdlparser.token.keywords.librarykeyword method)": [[230, "pyVHDLParser.Token.Keywords.LibraryKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.linkagekeyword method)": [[230, "pyVHDLParser.Token.Keywords.LinkageKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.literalkeyword method)": [[230, "pyVHDLParser.Token.Keywords.LiteralKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.logicaloperator method)": [[230, "pyVHDLParser.Token.Keywords.LogicalOperator.__str__"]], "__str__() (pyvhdlparser.token.keywords.loopkeyword method)": [[230, "pyVHDLParser.Token.Keywords.LoopKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.mapassociationkeyword method)": [[230, "pyVHDLParser.Token.Keywords.MapAssociationKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.mapkeyword method)": [[230, "pyVHDLParser.Token.Keywords.MapKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.matchingequaloperator method)": [[230, "pyVHDLParser.Token.Keywords.MatchingEqualOperator.__str__"]], "__str__() (pyvhdlparser.token.keywords.matchinggreaterthanoperator method)": [[230, "pyVHDLParser.Token.Keywords.MatchingGreaterThanOperator.__str__"]], "__str__() (pyvhdlparser.token.keywords.matchinggreaterthanorequaloperator method)": [[230, "pyVHDLParser.Token.Keywords.MatchingGreaterThanOrEqualOperator.__str__"]], "__str__() (pyvhdlparser.token.keywords.matchinglessthanoperator method)": [[230, "pyVHDLParser.Token.Keywords.MatchingLessThanOperator.__str__"]], "__str__() (pyvhdlparser.token.keywords.matchinglessthanorequaloperator method)": [[230, "pyVHDLParser.Token.Keywords.MatchingLessThanOrEqualOperator.__str__"]], "__str__() (pyvhdlparser.token.keywords.matchingunequaloperator method)": [[230, "pyVHDLParser.Token.Keywords.MatchingUnequalOperator.__str__"]], "__str__() (pyvhdlparser.token.keywords.minusoperator method)": [[230, "pyVHDLParser.Token.Keywords.MinusOperator.__str__"]], "__str__() (pyvhdlparser.token.keywords.miscellaneousoperator method)": [[230, "pyVHDLParser.Token.Keywords.MiscellaneousOperator.__str__"]], "__str__() (pyvhdlparser.token.keywords.modulooperator method)": [[230, "pyVHDLParser.Token.Keywords.ModuloOperator.__str__"]], "__str__() (pyvhdlparser.token.keywords.multicharkeyword method)": [[230, "pyVHDLParser.Token.Keywords.MultiCharKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.multilinecommentendkeyword method)": [[230, "pyVHDLParser.Token.Keywords.MultiLineCommentEndKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.multilinecommentkeyword method)": [[230, "pyVHDLParser.Token.Keywords.MultiLineCommentKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.multilinecommentstartkeyword method)": [[230, "pyVHDLParser.Token.Keywords.MultiLineCommentStartKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.multiplyoperator method)": [[230, "pyVHDLParser.Token.Keywords.MultiplyOperator.__str__"]], "__str__() (pyvhdlparser.token.keywords.nandoperator method)": [[230, "pyVHDLParser.Token.Keywords.NandOperator.__str__"]], "__str__() (pyvhdlparser.token.keywords.newkeyword method)": [[230, "pyVHDLParser.Token.Keywords.NewKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.nextkeyword method)": [[230, "pyVHDLParser.Token.Keywords.NextKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.noroperator method)": [[230, "pyVHDLParser.Token.Keywords.NorOperator.__str__"]], "__str__() (pyvhdlparser.token.keywords.notoperator method)": [[230, "pyVHDLParser.Token.Keywords.NotOperator.__str__"]], "__str__() (pyvhdlparser.token.keywords.nullkeyword method)": [[230, "pyVHDLParser.Token.Keywords.NullKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.ofkeyword method)": [[230, "pyVHDLParser.Token.Keywords.OfKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.onkeyword method)": [[230, "pyVHDLParser.Token.Keywords.OnKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.openkeyword method)": [[230, "pyVHDLParser.Token.Keywords.OpenKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.openinganglebrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.OpeningAngleBracketToken.__str__"]], "__str__() (pyvhdlparser.token.keywords.openingcurlybrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.OpeningCurlyBracketToken.__str__"]], "__str__() (pyvhdlparser.token.keywords.openingroundbrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.OpeningRoundBracketToken.__str__"]], "__str__() (pyvhdlparser.token.keywords.openingsquarebrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.OpeningSquareBracketToken.__str__"]], "__str__() (pyvhdlparser.token.keywords.operator method)": [[230, "pyVHDLParser.Token.Keywords.Operator.__str__"]], "__str__() (pyvhdlparser.token.keywords.operatortoken method)": [[230, "pyVHDLParser.Token.Keywords.OperatorToken.__str__"]], "__str__() (pyvhdlparser.token.keywords.oroperator method)": [[230, "pyVHDLParser.Token.Keywords.OrOperator.__str__"]], "__str__() (pyvhdlparser.token.keywords.otherskeyword method)": [[230, "pyVHDLParser.Token.Keywords.OthersKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.outkeyword method)": [[230, "pyVHDLParser.Token.Keywords.OutKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.packagekeyword method)": [[230, "pyVHDLParser.Token.Keywords.PackageKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.parameterkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ParameterKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.plusoperator method)": [[230, "pyVHDLParser.Token.Keywords.PlusOperator.__str__"]], "__str__() (pyvhdlparser.token.keywords.portkeyword method)": [[230, "pyVHDLParser.Token.Keywords.PortKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.postponedkeyword method)": [[230, "pyVHDLParser.Token.Keywords.PostponedKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.poweroperator method)": [[230, "pyVHDLParser.Token.Keywords.PowerOperator.__str__"]], "__str__() (pyvhdlparser.token.keywords.privatekeyword method)": [[230, "pyVHDLParser.Token.Keywords.PrivateKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.procedurekeyword method)": [[230, "pyVHDLParser.Token.Keywords.ProcedureKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.processkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ProcessKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.propertykeyword method)": [[230, "pyVHDLParser.Token.Keywords.PropertyKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.protectedkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ProtectedKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.purekeyword method)": [[230, "pyVHDLParser.Token.Keywords.PureKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.rangekeyword method)": [[230, "pyVHDLParser.Token.Keywords.RangeKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.recordkeyword method)": [[230, "pyVHDLParser.Token.Keywords.RecordKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.registerkeyword method)": [[230, "pyVHDLParser.Token.Keywords.RegisterKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.rejectkeyword method)": [[230, "pyVHDLParser.Token.Keywords.RejectKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.relationaloperator method)": [[230, "pyVHDLParser.Token.Keywords.RelationalOperator.__str__"]], "__str__() (pyvhdlparser.token.keywords.releasekeyword method)": [[230, "pyVHDLParser.Token.Keywords.ReleaseKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.remainderoperator method)": [[230, "pyVHDLParser.Token.Keywords.RemainderOperator.__str__"]], "__str__() (pyvhdlparser.token.keywords.repeatedidentifiertoken method)": [[230, "pyVHDLParser.Token.Keywords.RepeatedIdentifierToken.__str__"]], "__str__() (pyvhdlparser.token.keywords.repeatedlabeltoken method)": [[230, "pyVHDLParser.Token.Keywords.RepeatedLabelToken.__str__"]], "__str__() (pyvhdlparser.token.keywords.reportkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ReportKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.returnkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ReturnKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.roloperator method)": [[230, "pyVHDLParser.Token.Keywords.RolOperator.__str__"]], "__str__() (pyvhdlparser.token.keywords.roroperator method)": [[230, "pyVHDLParser.Token.Keywords.RorOperator.__str__"]], "__str__() (pyvhdlparser.token.keywords.roundbrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.RoundBracketToken.__str__"]], "__str__() (pyvhdlparser.token.keywords.selectkeyword method)": [[230, "pyVHDLParser.Token.Keywords.SelectKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.sequencekeyword method)": [[230, "pyVHDLParser.Token.Keywords.SequenceKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.severitykeyword method)": [[230, "pyVHDLParser.Token.Keywords.SeverityKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.sharedkeyword method)": [[230, "pyVHDLParser.Token.Keywords.SharedKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.shiftoperator method)": [[230, "pyVHDLParser.Token.Keywords.ShiftOperator.__str__"]], "__str__() (pyvhdlparser.token.keywords.signalassignmentkeyword method)": [[230, "pyVHDLParser.Token.Keywords.SignalAssignmentKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.signalassociationkeyword method)": [[230, "pyVHDLParser.Token.Keywords.SignalAssociationKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.signalkeyword method)": [[230, "pyVHDLParser.Token.Keywords.SignalKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.simplenametoken method)": [[230, "pyVHDLParser.Token.Keywords.SimpleNameToken.__str__"]], "__str__() (pyvhdlparser.token.keywords.singlelinecommentkeyword method)": [[230, "pyVHDLParser.Token.Keywords.SingleLineCommentKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.slaoperator method)": [[230, "pyVHDLParser.Token.Keywords.SlaOperator.__str__"]], "__str__() (pyvhdlparser.token.keywords.slloperator method)": [[230, "pyVHDLParser.Token.Keywords.SllOperator.__str__"]], "__str__() (pyvhdlparser.token.keywords.specificvhdltoken method)": [[230, "pyVHDLParser.Token.Keywords.SpecificVHDLToken.__str__"]], "__str__() (pyvhdlparser.token.keywords.squarebrackettoken method)": [[230, "pyVHDLParser.Token.Keywords.SquareBracketToken.__str__"]], "__str__() (pyvhdlparser.token.keywords.sraoperator method)": [[230, "pyVHDLParser.Token.Keywords.SraOperator.__str__"]], "__str__() (pyvhdlparser.token.keywords.srloperator method)": [[230, "pyVHDLParser.Token.Keywords.SrlOperator.__str__"]], "__str__() (pyvhdlparser.token.keywords.subtypekeyword method)": [[230, "pyVHDLParser.Token.Keywords.SubtypeKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.thenkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ThenKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.tokeyword method)": [[230, "pyVHDLParser.Token.Keywords.ToKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.transportkeyword method)": [[230, "pyVHDLParser.Token.Keywords.TransportKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.typekeyword method)": [[230, "pyVHDLParser.Token.Keywords.TypeKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.unaffectedkeyword method)": [[230, "pyVHDLParser.Token.Keywords.UnaffectedKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.unbufferedkeyword method)": [[230, "pyVHDLParser.Token.Keywords.UnbufferedKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.unequaloperator method)": [[230, "pyVHDLParser.Token.Keywords.UnequalOperator.__str__"]], "__str__() (pyvhdlparser.token.keywords.unitskeyword method)": [[230, "pyVHDLParser.Token.Keywords.UnitsKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.untilkeyword method)": [[230, "pyVHDLParser.Token.Keywords.UntilKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.usekeyword method)": [[230, "pyVHDLParser.Token.Keywords.UseKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.variableassignmentkeyword method)": [[230, "pyVHDLParser.Token.Keywords.VariableAssignmentKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.variablekeyword method)": [[230, "pyVHDLParser.Token.Keywords.VariableKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.viewkeyword method)": [[230, "pyVHDLParser.Token.Keywords.ViewKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.vunitkeyword method)": [[230, "pyVHDLParser.Token.Keywords.VunitKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.waitkeyword method)": [[230, "pyVHDLParser.Token.Keywords.WaitKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.whenkeyword method)": [[230, "pyVHDLParser.Token.Keywords.WhenKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.whilekeyword method)": [[230, "pyVHDLParser.Token.Keywords.WhileKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.withkeyword method)": [[230, "pyVHDLParser.Token.Keywords.WithKeyword.__str__"]], "__str__() (pyvhdlparser.token.keywords.xnoroperator method)": [[230, "pyVHDLParser.Token.Keywords.XnorOperator.__str__"]], "__str__() (pyvhdlparser.token.keywords.xoroperator method)": [[230, "pyVHDLParser.Token.Keywords.XorOperator.__str__"]], "_previoustoken (pyvhdlparser.token.keywords.absoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.AbsOperator._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.accesskeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.AccessKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.afterkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.AfterKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.aliaskeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.AliasKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.allkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.AllKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.andoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.AndOperator._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.anglebrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.AngleBracketToken._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.architecturekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ArchitectureKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.arraykeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ArrayKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.assertkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.AssertKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.assignmentkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.AssignmentKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.associationkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.AssociationKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.attributekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.AttributeKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.beginkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.BeginKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.blockkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.BlockKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.bodykeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.BodyKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.boundarytoken attribute)": [[230, "pyVHDLParser.Token.Keywords.BoundaryToken._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.brackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.BracketToken._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.bufferkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.BufferKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.buskeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.BusKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.casekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.CaseKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.closinganglebrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.ClosingAngleBracketToken._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.closingcurlybrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.ClosingCurlyBracketToken._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.closingroundbrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.ClosingRoundBracketToken._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.closingsquarebrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.ClosingSquareBracketToken._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.commentkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.CommentKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.componentkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ComponentKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.concatoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.ConcatOperator._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.configurationkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ConfigurationKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.constantkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ConstantKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.contextkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ContextKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.curlybrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.CurlyBracketToken._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.defaultkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.DefaultKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.delimitertoken attribute)": [[230, "pyVHDLParser.Token.Keywords.DelimiterToken._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.directionkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.DirectionKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.disconnectkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.DisconnectKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.divideoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.DivideOperator._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.downtokeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.DowntoKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.elsifkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ElsIfKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.elsekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ElseKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.endkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.EndKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.endtoken attribute)": [[230, "pyVHDLParser.Token.Keywords.EndToken._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.entitykeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.EntityKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.equaloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.EqualOperator._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.exitkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ExitKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.filekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.FileKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.forkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ForKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.forcekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ForceKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.functionkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.FunctionKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.generatekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.GenerateKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.generickeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.GenericKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.greaterthanoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.GreaterThanOperator._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.greaterthanorequaloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.GreaterThanOrEqualOperator._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.groupkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.GroupKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.guardedkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.GuardedKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.identifiertoken attribute)": [[230, "pyVHDLParser.Token.Keywords.IdentifierToken._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.ifkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.IfKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.impurekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ImpureKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.inkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.InKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.inertialkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.InertialKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.inoutkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.InoutKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.iskeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.IsKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.keywordtoken attribute)": [[230, "pyVHDLParser.Token.Keywords.KeywordToken._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.labelkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.LabelKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.labeltoken attribute)": [[230, "pyVHDLParser.Token.Keywords.LabelToken._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.lessthanoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.LessThanOperator._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.lessthanorequaloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.LessThanOrEqualOperator._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.librarykeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.LibraryKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.linkagekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.LinkageKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.literalkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.LiteralKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.logicaloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.LogicalOperator._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.loopkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.LoopKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.mapassociationkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.MapAssociationKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.mapkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.MapKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.matchingequaloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.MatchingEqualOperator._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.matchinggreaterthanoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.MatchingGreaterThanOperator._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.matchinggreaterthanorequaloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.MatchingGreaterThanOrEqualOperator._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.matchinglessthanoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.MatchingLessThanOperator._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.matchinglessthanorequaloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.MatchingLessThanOrEqualOperator._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.matchingunequaloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.MatchingUnequalOperator._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.minusoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.MinusOperator._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.miscellaneousoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.MiscellaneousOperator._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.modulooperator attribute)": [[230, "pyVHDLParser.Token.Keywords.ModuloOperator._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.multicharkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.MultiCharKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.multilinecommentendkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.MultiLineCommentEndKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.multilinecommentkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.MultiLineCommentKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.multilinecommentstartkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.MultiLineCommentStartKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.multiplyoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.MultiplyOperator._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.nandoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.NandOperator._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.newkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.NewKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.nextkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.NextKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.noroperator attribute)": [[230, "pyVHDLParser.Token.Keywords.NorOperator._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.notoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.NotOperator._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.nullkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.NullKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.ofkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.OfKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.onkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.OnKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.openkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.OpenKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.openinganglebrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.OpeningAngleBracketToken._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.openingcurlybrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.OpeningCurlyBracketToken._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.openingroundbrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.OpeningRoundBracketToken._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.openingsquarebrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.OpeningSquareBracketToken._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.operator attribute)": [[230, "pyVHDLParser.Token.Keywords.Operator._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.operatortoken attribute)": [[230, "pyVHDLParser.Token.Keywords.OperatorToken._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.oroperator attribute)": [[230, "pyVHDLParser.Token.Keywords.OrOperator._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.otherskeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.OthersKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.outkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.OutKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.packagekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.PackageKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.parameterkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ParameterKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.plusoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.PlusOperator._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.portkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.PortKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.postponedkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.PostponedKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.poweroperator attribute)": [[230, "pyVHDLParser.Token.Keywords.PowerOperator._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.privatekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.PrivateKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.procedurekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ProcedureKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.processkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ProcessKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.propertykeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.PropertyKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.protectedkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ProtectedKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.purekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.PureKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.rangekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.RangeKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.recordkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.RecordKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.registerkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.RegisterKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.rejectkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.RejectKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.relationaloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.RelationalOperator._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.releasekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ReleaseKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.remainderoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.RemainderOperator._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.repeatedidentifiertoken attribute)": [[230, "pyVHDLParser.Token.Keywords.RepeatedIdentifierToken._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.repeatedlabeltoken attribute)": [[230, "pyVHDLParser.Token.Keywords.RepeatedLabelToken._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.reportkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ReportKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.returnkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ReturnKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.roloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.RolOperator._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.roroperator attribute)": [[230, "pyVHDLParser.Token.Keywords.RorOperator._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.roundbrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.RoundBracketToken._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.selectkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.SelectKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.sequencekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.SequenceKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.severitykeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.SeverityKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.sharedkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.SharedKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.shiftoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.ShiftOperator._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.signalassignmentkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.SignalAssignmentKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.signalassociationkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.SignalAssociationKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.signalkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.SignalKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.simplenametoken attribute)": [[230, "pyVHDLParser.Token.Keywords.SimpleNameToken._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.singlelinecommentkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.SingleLineCommentKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.slaoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.SlaOperator._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.slloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.SllOperator._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.specificvhdltoken attribute)": [[230, "pyVHDLParser.Token.Keywords.SpecificVHDLToken._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.squarebrackettoken attribute)": [[230, "pyVHDLParser.Token.Keywords.SquareBracketToken._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.sraoperator attribute)": [[230, "pyVHDLParser.Token.Keywords.SraOperator._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.srloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.SrlOperator._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.subtypekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.SubtypeKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.thenkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ThenKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.tokeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ToKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.transportkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.TransportKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.typekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.TypeKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.unaffectedkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.UnaffectedKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.unbufferedkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.UnbufferedKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.unequaloperator attribute)": [[230, "pyVHDLParser.Token.Keywords.UnequalOperator._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.unitskeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.UnitsKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.untilkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.UntilKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.usekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.UseKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.variableassignmentkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.VariableAssignmentKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.variablekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.VariableKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.viewkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.ViewKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.vunitkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.VunitKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.waitkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.WaitKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.whenkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.WhenKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.whilekeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.WhileKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.withkeyword attribute)": [[230, "pyVHDLParser.Token.Keywords.WithKeyword._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.xnoroperator attribute)": [[230, "pyVHDLParser.Token.Keywords.XnorOperator._previousToken"]], "_previoustoken (pyvhdlparser.token.keywords.xoroperator attribute)": [[230, "pyVHDLParser.Token.Keywords.XorOperator._previousToken"]], "pyvhdlparser.token.keywords": [[230, "module-pyVHDLParser.Token.Keywords"]], "alphachars (pyvhdlparser.token.parser.tokenizer.tokenkind attribute)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.AlphaChars"]], "delimiterchars (pyvhdlparser.token.parser.tokenizer.tokenkind attribute)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.DelimiterChars"]], "directive (pyvhdlparser.token.parser.tokenizer.tokenkind attribute)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.Directive"]], "fuseablecharacter (pyvhdlparser.token.parser.tokenizer.tokenkind attribute)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.FuseableCharacter"]], "integerchars (pyvhdlparser.token.parser.tokenizer.tokenkind attribute)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.IntegerChars"]], "linebreak (pyvhdlparser.token.parser.tokenizer.tokenkind attribute)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.Linebreak"]], "multilinecomment (pyvhdlparser.token.parser.tokenizer.tokenkind attribute)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.MultiLineComment"]], "otherchars (pyvhdlparser.token.parser.tokenizer.tokenkind attribute)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.OtherChars"]], "possiblecharacterliteral (pyvhdlparser.token.parser.tokenizer.tokenkind attribute)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.PossibleCharacterLiteral"]], "possibleextendedidentifierstart (pyvhdlparser.token.parser.tokenizer.tokenkind attribute)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.PossibleExtendedIdentifierStart"]], "possiblelinebreak (pyvhdlparser.token.parser.tokenizer.tokenkind attribute)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.PossibleLinebreak"]], "possiblerealliteral (pyvhdlparser.token.parser.tokenizer.tokenkind attribute)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.PossibleRealLiteral"]], "possiblesinglelinecommentstart (pyvhdlparser.token.parser.tokenizer.tokenkind attribute)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.PossibleSingleLineCommentStart"]], "possiblestringliteralstart (pyvhdlparser.token.parser.tokenizer.tokenkind attribute)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.PossibleStringLiteralStart"]], "realchars (pyvhdlparser.token.parser.tokenizer.tokenkind attribute)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.RealChars"]], "singlelinecomment (pyvhdlparser.token.parser.tokenizer.tokenkind attribute)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.SingleLineComment"]], "spacechars (pyvhdlparser.token.parser.tokenizer.tokenkind attribute)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.SpaceChars"]], "tokenizer (class in pyvhdlparser.token.parser)": [[231, "pyVHDLParser.Token.Parser.Tokenizer"]], "tokenizer.tokenkind (class in pyvhdlparser.token.parser)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind"]], "tokenizerexception": [[231, "pyVHDLParser.Token.Parser.TokenizerException"]], "__abs__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__abs__"]], "__add__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__add__"]], "__and__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__and__"]], "__bool__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__bool__"]], "__ceil__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__ceil__"]], "__dir__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__dir__"]], "__divmod__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__divmod__"]], "__eq__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__eq__"]], "__float__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__float__"]], "__floor__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__floor__"]], "__floordiv__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__floordiv__"]], "__format__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__format__"]], "__ge__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__ge__"]], "__getattribute__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__getattribute__"]], "__gt__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__gt__"]], "__hash__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__hash__"]], "__index__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__index__"]], "__init__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__init__"]], "__init__() (pyvhdlparser.token.parser.tokenizerexception method)": [[231, "pyVHDLParser.Token.Parser.TokenizerException.__init__"]], "__int__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__int__"]], "__invert__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__invert__"]], "__le__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__le__"]], "__lshift__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__lshift__"]], "__lt__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__lt__"]], "__mod__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__mod__"]], "__mul__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__mul__"]], "__ne__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__ne__"]], "__neg__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__neg__"]], "__new__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__new__"]], "__new__() (pyvhdlparser.token.parser.tokenizerexception method)": [[231, "pyVHDLParser.Token.Parser.TokenizerException.__new__"]], "__or__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__or__"]], "__pos__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__pos__"]], "__pow__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__pow__"]], "__radd__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__radd__"]], "__rand__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__rand__"]], "__rdivmod__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__rdivmod__"]], "__reduce_ex__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__reduce_ex__"]], "__repr__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__repr__"]], "__rfloordiv__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__rfloordiv__"]], "__rlshift__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__rlshift__"]], "__rmod__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__rmod__"]], "__rmul__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__rmul__"]], "__ror__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__ror__"]], "__round__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__round__"]], "__rpow__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__rpow__"]], "__rrshift__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__rrshift__"]], "__rshift__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__rshift__"]], "__rsub__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__rsub__"]], "__rtruediv__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__rtruediv__"]], "__rxor__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__rxor__"]], "__sizeof__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__sizeof__"]], "__str__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__str__"]], "__sub__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__sub__"]], "__truediv__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__truediv__"]], "__trunc__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__trunc__"]], "__xor__() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.__xor__"]], "as_integer_ratio() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.as_integer_ratio"]], "bit_count() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.bit_count"]], "bit_length() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.bit_length"]], "conjugate() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.conjugate"]], "denominator (pyvhdlparser.token.parser.tokenizer.tokenkind attribute)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.denominator"]], "from_bytes() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.from_bytes"]], "imag (pyvhdlparser.token.parser.tokenizer.tokenkind attribute)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.imag"]], "numerator (pyvhdlparser.token.parser.tokenizer.tokenkind attribute)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.numerator"]], "pyvhdlparser.token.parser": [[231, "module-pyVHDLParser.Token.Parser"]], "real (pyvhdlparser.token.parser.tokenizer.tokenkind attribute)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.real"]], "to_bytes() (pyvhdlparser.token.parser.tokenizer.tokenkind method)": [[231, "pyVHDLParser.Token.Parser.Tokenizer.TokenKind.to_bytes"]], "pyvhdlparser.typesystem": [[232, "module-pyVHDLParser.TypeSystem"]], "function (class in pyvhdlparser.typesystem.package)": [[233, "pyVHDLParser.TypeSystem.Package.Function"]], "functiondeclaration (class in pyvhdlparser.typesystem.package)": [[233, "pyVHDLParser.TypeSystem.Package.FunctionDeclaration"]], "package (class in pyvhdlparser.typesystem.package)": [[233, "pyVHDLParser.TypeSystem.Package.Package"]], "packagebody (class in pyvhdlparser.typesystem.package)": [[233, "pyVHDLParser.TypeSystem.Package.PackageBody"]], "packagedeclation (class in pyvhdlparser.typesystem.package)": [[233, "pyVHDLParser.TypeSystem.Package.PackageDeclation"]], "parameter (class in pyvhdlparser.typesystem.package)": [[233, "pyVHDLParser.TypeSystem.Package.Parameter"]], "procedure (class in pyvhdlparser.typesystem.package)": [[233, "pyVHDLParser.TypeSystem.Package.Procedure"]], "proceduredeclaration (class in pyvhdlparser.typesystem.package)": [[233, "pyVHDLParser.TypeSystem.Package.ProcedureDeclaration"]], "subprogram (class in pyvhdlparser.typesystem.package)": [[233, "pyVHDLParser.TypeSystem.Package.SubProgram"]], "subprogramdeclaration (class in pyvhdlparser.typesystem.package)": [[233, "pyVHDLParser.TypeSystem.Package.SubProgramDeclaration"]], "__init__() (pyvhdlparser.typesystem.package.function method)": [[233, "pyVHDLParser.TypeSystem.Package.Function.__init__"]], "__init__() (pyvhdlparser.typesystem.package.functiondeclaration method)": [[233, "pyVHDLParser.TypeSystem.Package.FunctionDeclaration.__init__"]], "__init__() (pyvhdlparser.typesystem.package.package method)": [[233, "pyVHDLParser.TypeSystem.Package.Package.__init__"]], "__init__() (pyvhdlparser.typesystem.package.packagebody method)": [[233, "pyVHDLParser.TypeSystem.Package.PackageBody.__init__"]], "__init__() (pyvhdlparser.typesystem.package.packagedeclation method)": [[233, "pyVHDLParser.TypeSystem.Package.PackageDeclation.__init__"]], "__init__() (pyvhdlparser.typesystem.package.parameter method)": [[233, "pyVHDLParser.TypeSystem.Package.Parameter.__init__"]], "__init__() (pyvhdlparser.typesystem.package.procedure method)": [[233, "pyVHDLParser.TypeSystem.Package.Procedure.__init__"]], "__init__() (pyvhdlparser.typesystem.package.proceduredeclaration method)": [[233, "pyVHDLParser.TypeSystem.Package.ProcedureDeclaration.__init__"]], "__init__() (pyvhdlparser.typesystem.package.subprogram method)": [[233, "pyVHDLParser.TypeSystem.Package.SubProgram.__init__"]], "__init__() (pyvhdlparser.typesystem.package.subprogramdeclaration method)": [[233, "pyVHDLParser.TypeSystem.Package.SubProgramDeclaration.__init__"]], "pyvhdlparser.typesystem.package": [[233, "module-pyVHDLParser.TypeSystem.Package"]], "array (class in pyvhdlparser.typesystem.typesystem)": [[234, "pyVHDLParser.TypeSystem.TypeSystem.Array"]], "arraytype (class in pyvhdlparser.typesystem.typesystem)": [[234, "pyVHDLParser.TypeSystem.TypeSystem.ArrayType"]], "direction (class in pyvhdlparser.typesystem.typesystem)": [[234, "pyVHDLParser.TypeSystem.TypeSystem.Direction"]], "enumerationliteral (class in pyvhdlparser.typesystem.typesystem)": [[234, "pyVHDLParser.TypeSystem.TypeSystem.EnumerationLiteral"]], "enumerationsubtype (class in pyvhdlparser.typesystem.typesystem)": [[234, "pyVHDLParser.TypeSystem.TypeSystem.EnumerationSubtype"]], "enumerationtype (class in pyvhdlparser.typesystem.typesystem)": [[234, "pyVHDLParser.TypeSystem.TypeSystem.EnumerationType"]], "integersubtype (class in pyvhdlparser.typesystem.typesystem)": [[234, "pyVHDLParser.TypeSystem.TypeSystem.IntegerSubtype"]], "integertype (class in pyvhdlparser.typesystem.typesystem)": [[234, "pyVHDLParser.TypeSystem.TypeSystem.IntegerType"]], "range (class in pyvhdlparser.typesystem.typesystem)": [[234, "pyVHDLParser.TypeSystem.TypeSystem.Range"]], "realtype (class in pyvhdlparser.typesystem.typesystem)": [[234, "pyVHDLParser.TypeSystem.TypeSystem.RealType"]], "recordmember (class in pyvhdlparser.typesystem.typesystem)": [[234, "pyVHDLParser.TypeSystem.TypeSystem.RecordMember"]], "recordtype (class in pyvhdlparser.typesystem.typesystem)": [[234, "pyVHDLParser.TypeSystem.TypeSystem.RecordType"]], "subtype (class in pyvhdlparser.typesystem.typesystem)": [[234, "pyVHDLParser.TypeSystem.TypeSystem.Subtype"]], "type (class in pyvhdlparser.typesystem.typesystem)": [[234, "pyVHDLParser.TypeSystem.TypeSystem.Type"]], "typeinstance (class in pyvhdlparser.typesystem.typesystem)": [[234, "pyVHDLParser.TypeSystem.TypeSystem.TypeInstance"]], "_attributes (class in pyvhdlparser.typesystem.typesystem)": [[234, "pyVHDLParser.TypeSystem.TypeSystem._Attributes"]], "__init__() (pyvhdlparser.typesystem.typesystem.array method)": [[234, "pyVHDLParser.TypeSystem.TypeSystem.Array.__init__"]], "__init__() (pyvhdlparser.typesystem.typesystem.arraytype method)": [[234, "pyVHDLParser.TypeSystem.TypeSystem.ArrayType.__init__"]], "__init__() (pyvhdlparser.typesystem.typesystem.enumerationliteral method)": [[234, "pyVHDLParser.TypeSystem.TypeSystem.EnumerationLiteral.__init__"]], "__init__() (pyvhdlparser.typesystem.typesystem.enumerationsubtype method)": [[234, "pyVHDLParser.TypeSystem.TypeSystem.EnumerationSubtype.__init__"]], "__init__() (pyvhdlparser.typesystem.typesystem.enumerationtype method)": [[234, "pyVHDLParser.TypeSystem.TypeSystem.EnumerationType.__init__"]], "__init__() (pyvhdlparser.typesystem.typesystem.integersubtype method)": [[234, "pyVHDLParser.TypeSystem.TypeSystem.IntegerSubtype.__init__"]], "__init__() (pyvhdlparser.typesystem.typesystem.integertype method)": [[234, "pyVHDLParser.TypeSystem.TypeSystem.IntegerType.__init__"]], "__init__() (pyvhdlparser.typesystem.typesystem.range method)": [[234, "pyVHDLParser.TypeSystem.TypeSystem.Range.__init__"]], "__init__() (pyvhdlparser.typesystem.typesystem.realtype method)": [[234, "pyVHDLParser.TypeSystem.TypeSystem.RealType.__init__"]], "__init__() (pyvhdlparser.typesystem.typesystem.recordmember method)": [[234, "pyVHDLParser.TypeSystem.TypeSystem.RecordMember.__init__"]], "__init__() (pyvhdlparser.typesystem.typesystem.recordtype method)": [[234, "pyVHDLParser.TypeSystem.TypeSystem.RecordType.__init__"]], "__init__() (pyvhdlparser.typesystem.typesystem.subtype method)": [[234, "pyVHDLParser.TypeSystem.TypeSystem.Subtype.__init__"]], "__init__() (pyvhdlparser.typesystem.typesystem.type method)": [[234, "pyVHDLParser.TypeSystem.TypeSystem.Type.__init__"]], "__repr__() (pyvhdlparser.typesystem.typesystem.enumerationliteral method)": [[234, "pyVHDLParser.TypeSystem.TypeSystem.EnumerationLiteral.__repr__"]], "__repr__() (pyvhdlparser.typesystem.typesystem.enumerationtype method)": [[234, "pyVHDLParser.TypeSystem.TypeSystem.EnumerationType.__repr__"]], "__str__() (pyvhdlparser.typesystem.typesystem.enumerationliteral method)": [[234, "pyVHDLParser.TypeSystem.TypeSystem.EnumerationLiteral.__str__"]], "__str__() (pyvhdlparser.typesystem.typesystem.enumerationtype method)": [[234, "pyVHDLParser.TypeSystem.TypeSystem.EnumerationType.__str__"]], "pyvhdlparser.typesystem.typesystem": [[234, "module-pyVHDLParser.TypeSystem.TypeSystem"]], "pyvhdlparser.typesystem.std": [[235, "module-pyVHDLParser.TypeSystem.std"]], "pyvhdlparser.typesystem.std_logic_1164": [[236, "module-pyVHDLParser.TypeSystem.std_logic_1164"]]}}) \ No newline at end of file diff --git a/typing/html/pyVHDLParser/ANTLR3/VHDLLexer.py.html b/typing/html/pyVHDLParser/ANTLR3/VHDLLexer.py.html new file mode 100644 index 000000000..565ae93d1 --- /dev/null +++ b/typing/html/pyVHDLParser/ANTLR3/VHDLLexer.py.html @@ -0,0 +1,276 @@ + + + + + + +

pyVHDLParser.ANTLR3.VHDLLexer

+ + + + + + +
pyVHDLParser/ANTLR3/VHDLLexer.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+

+class VHDLLexer:
+	OP_ABS = None
+	# KW_ACROSS = None
+	KW_ACCESS = None
+	KW_AFTER = None
+	KW_ALIAS = None
+	KW_ALL = None
+	OP_AND = None
+	KW_ARCHITECTURE = None
+	KW_ARRAY = None
+	KW_ASSERT = None
+	KW_ATTRIBUTE = None
+	# KW_PSL_ASSUME = None
+	# KW_AMS_ACROSS = None
+	KW_BEGIN = None
+	KW_BLOCK = None
+	KW_BODY = None
+	KW_BUFFER = None
+	KW_BUS = None
+	# KW_BREAK = None
+	KW_CASE = None
+	KW_COMPONENT = None
+	KW_CONFIGURATION = None
+	KW_CONSTANT = None
+	KW_CONTEXT = None
+	# KW_PSL_COVER = None
+	KW_DEFAULT = None
+	KW_DISCONNECT = None
+	KW_DOWNTO = None
+	KW_ELSE = None
+	KW_ELSIF = None
+	KW_END = None
+	KW_ENTITY = None
+	KW_EXIT = None
+	KW_FILE = None
+	KW_FOR = None
+	KW_FORCE = None
+	KW_FUNCTION = None
+	KW_GENERATE = None
+	KW_GENERIC = None
+	# KW_GROUP = None
+	KW_GUARDED = None
+	KW_IF = None
+	KW_IMPURE = None
+	KW_IN = None
+	KW_INERTIAL = None
+	KW_INOUT = None
+	KW_IS = None
+	KW_LABEL = None
+	KW_LIBRARY = None
+	KW_LINKAGE = None
+	KW_LOOP = None
+	KW_PSL_LITERAL = None
+	# KW_LIMIT = None
+	KW_MAP = None
+	OP_MOD = None
+	OP_NAND = None
+	KW_NEW = None
+	KW_NEXT = None
+	OP_NOR = None
+	OP_NOT = None
+	KW_NULL = None
+	# KW_NATURE = None
+	# KW_NOISE = None
+	KW_OF = None
+	KW_ON = None
+	KW_OPEN = None
+	OP_OR = None
+	KW_OTHERS = None
+	KW_OUT = None
+	KW_PACKAGE = None
+	KW_PARAMETER = None
+	KW_PORT = None
+	KW_POSTPONED = None
+	KW_PRIVATE = None
+	KW_PROCEDURE = None
+	KW_PROCESS = None
+	KW_PROTECTED = None
+	KW_PURE = None
+	# KW_PROCEDURAL = None
+	# VHDLLexer.KW_QUANTITY: 'quantityKeyword,
+	KW_RANGE = None
+	KW_RECORD = None
+	KW_REGISTER = None
+	KW_REJECT = None
+	KW_RELEASE = None
+	OP_REM = None
+	KW_REPORT = None
+	KW_RETURN = None
+	OP_ROL = None
+	OP_ROR = None
+	# KW_PSL_RESTRICT = None
+	# KW_REFERENCE = None
+	KW_SELECT = None
+	KW_SEVERITY = None
+	KW_SHARED = None
+	KW_SIGNAL = None
+	OP_SLA = None
+	OP_SLL = None
+	OP_SRA = None
+	OP_SRL = None
+	KW_SUBTYPE = None
+	# KW_PSL_STRONG = None
+	# KW_PSL_SEQUENCE = None
+	# KW_SPECTRUM = None
+	# KW_SUBNATURE = None
+	KW_THEN = None
+	KW_TO = None
+	KW_TRANSPORT = None
+	KW_TYPE = None
+	# KW_TERMINAL = None
+	# KW_THROUGH = None
+	# KW_TOLERANCE = None
+	KW_UNAFFECTED = None
+	KW_UNITS = None
+	KW_UNTIL = None
+	KW_USE = None
+	KW_VARIABLE = None
+	KW_VIEW = None
+	# KW_PSL_VMODE = None
+	# KW_PSL_VPKG = None
+	# KW_PSL_VPROP = None,
+	# KW_PSL_VUNIT = None
+	KW_WAIT = None
+	KW_WITH = None
+	KW_WHEN = None
+	KW_WHILE = None
+	OP_XNOR = None
+	OP_XOR = None
+
+ + diff --git a/typing/html/pyVHDLParser/ANTLR3/VHDLParser.py.html b/typing/html/pyVHDLParser/ANTLR3/VHDLParser.py.html new file mode 100644 index 000000000..31d3b8f18 --- /dev/null +++ b/typing/html/pyVHDLParser/ANTLR3/VHDLParser.py.html @@ -0,0 +1,22 @@ + + + + + + +

pyVHDLParser.ANTLR3.VHDLParser

+ + + + + + +
pyVHDLParser/ANTLR3/VHDLParser.py
1
+2
+3
+

+class VHDLParser:
+	pass
+
+ + diff --git a/typing/html/pyVHDLParser/ANTLR4/VHDLLexer.py.html b/typing/html/pyVHDLParser/ANTLR4/VHDLLexer.py.html new file mode 100644 index 000000000..a401fe131 --- /dev/null +++ b/typing/html/pyVHDLParser/ANTLR4/VHDLLexer.py.html @@ -0,0 +1,1319 @@ + + + + + + +

pyVHDLParser.ANTLR4.VHDLLexer

+ + + + + + +
pyVHDLParser/ANTLR4/VHDLLexer.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+380
+381
+382
+383
+384
+385
+386
+387
+388
+389
+390
+391
+392
+393
+394
+395
+396
+397
+398
+399
+400
+401
+402
+403
+404
+405
+406
+407
+408
+409
+410
+411
+412
+413
+414
+415
+416
+417
+418
+419
+420
+421
+422
+423
+424
+425
+426
+427
+428
+429
+430
+431
+432
+433
+434
+435
+436
+437
+438
+439
+440
+441
+442
+443
+444
+445
+446
+447
+448
+449
+450
+451
+452
+453
+454
+455
+456
+457
+458
+459
+460
+461
+462
+463
+464
+465
+466
+467
+468
+469
+470
+471
+472
+473
+474
+475
+476
+477
+478
+479
+480
+481
+482
+483
+484
+485
+486
+487
+488
+489
+490
+491
+492
+493
+494
+495
+496
+497
+498
+499
+500
+501
+502
+503
+504
+505
+506
+507
+508
+509
+510
+511
+512
+513
+514
+515
+516
+517
+518
+519
+520
+521
+522
+523
+524
+525
+526
+527
+528
+529
+530
+531
+532
+533
+534
+535
+536
+537
+538
+539
+540
+541
+542
+543
+544
+545
+546
+547
+548
+549
+550
+551
+552
+553
+554
+555
+556
+557
+558
+559
+560
+561
+562
+563
+564
+565
+566
+567
+568
+569
+570
+571
+572
+573
+574
+575
+576
+577
+578
+579
+580
+581
+582
+583
+584
+585
+586
+587
+588
+589
+590
+591
+592
+593
+594
+595
+596
+597
+598
+599
+600
+601
+602
+603
+604
+605
+606
+607
+608
+609
+610
+611
+612
+613
+614
+615
+616
+617
+618
+619
+620
+621
+622
+623
+624
+625
+626
+627
+628
+629
+630
+631
+632
+633
+634
+635
+636
+637
+638
+639
+640
+641
+642
+643
+644
+645
+646
+647
+648
+
# Generated from .\VHDLLexer.g4 by ANTLR 4.12.0
+from sys import stdout
+from typing import TextIO
+
+from antlr4 import Lexer, ATNDeserializer, DFA, LexerATNSimulator, PredictionContextCache
+
+
+def serializedATN():
+	return (
+		4, 0, 163, 1377, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7,
+		7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2,
+		16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24,
+		7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7,
+		32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40,
+		2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2,
+		49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57,
+		7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7,
+		65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73,
+		2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2,
+		82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90,
+		7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7,
+		98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2,
+		106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113,
+		7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7,
+		120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127,
+		2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2,
+		135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142,
+		7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7,
+		149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156,
+		2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2,
+		164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171,
+		7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 1, 0, 4, 0, 357, 8, 0, 11,
+		0, 12, 0, 358, 1, 0, 1, 0, 1, 1, 4, 1, 364, 8, 1, 11, 1, 12, 1, 365, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 5, 2, 374,
+		8, 2, 10, 2, 12, 2, 377, 9, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 5, 3, 385, 8, 3, 10, 3, 12, 3, 388, 9, 3, 1, 3,
+		1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 5, 4, 397, 8, 4, 10, 4, 12, 4, 400, 9, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1,
+		6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9,
+		1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11,
+		1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1,
+		14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15,
+		1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1,
+		18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21,
+		1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1,
+		23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24,
+		1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1,
+		27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28,
+		1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1,
+		31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34,
+		1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1,
+		38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39,
+		1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1,
+		41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44,
+		1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1,
+		47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50,
+		1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1,
+		52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55,
+		1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1,
+		59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62,
+		1, 62, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 67, 1,
+		67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69,
+		1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1,
+		72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73,
+		1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1,
+		75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77,
+		1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1,
+		80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82,
+		1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1,
+		85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88,
+		1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1,
+		90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92,
+		1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1,
+		96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98,
+		1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100,
+		1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1,
+		103, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104,
+		1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1,
+		107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109,
+		1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1,
+		112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114,
+		1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1,
+		117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 121, 1, 121,
+		1, 121, 1, 122, 1, 122, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1,
+		126, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130,
+		1, 131, 1, 131, 1, 132, 1, 132, 1, 133, 1, 133, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 137, 1,
+		137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 142,
+		1, 142, 1, 143, 1, 143, 1, 144, 1, 144, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 1, 148, 1,
+		148, 1, 149, 1, 149, 1, 150, 1, 150, 1, 151, 1, 151, 1, 152, 1, 152, 1, 153, 1, 153, 1, 154, 1, 154, 1, 155, 1, 155,
+		1, 156, 1, 156, 1, 157, 1, 157, 1, 158, 1, 158, 1, 159, 1, 159, 1, 160, 1, 160, 1, 161, 1, 161, 5, 161, 1237, 8,
+		161, 10, 161, 12, 161, 1240, 9, 161, 1, 162, 1, 162, 1, 162, 5, 162, 1245, 8, 162, 10, 162, 12, 162, 1248, 9, 162,
+		1, 163, 1, 163, 3, 163, 1252, 8, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 164, 3, 164, 1260, 8, 164, 1, 165,
+		1, 165, 1, 165, 1, 165, 1, 165, 3, 165, 1267, 8, 165, 1, 165, 1, 165, 3, 165, 1271, 8, 165, 1, 166, 1, 166, 1, 166,
+		3, 166, 1276, 8, 166, 1, 167, 3, 167, 1279, 8, 167, 1, 167, 3, 167, 1282, 8, 167, 1, 167, 1, 167, 1, 167, 4, 167,
+		1287, 8, 167, 11, 167, 12, 167, 1288, 1, 167, 1, 167, 1, 168, 3, 168, 1294, 8, 168, 1, 168, 3, 168, 1297, 8, 168, 1,
+		168, 1, 168, 1, 168, 4, 168, 1302, 8, 168, 11, 168, 12, 168, 1303, 1, 168, 1, 168, 1, 169, 3, 169, 1309, 8, 169, 1,
+		169, 1, 169, 1, 169, 4, 169, 1314, 8, 169, 11, 169, 12, 169, 1315, 1, 169, 1, 169, 1, 170, 3, 170, 1321, 8, 170, 1,
+		170, 3, 170, 1324, 8, 170, 1, 170, 1, 170, 1, 170, 4, 170, 1329, 8, 170, 11, 170, 12, 170, 1330, 1, 170, 1, 170, 1,
+		171, 1, 171, 1, 171, 1, 171, 3, 171, 1339, 8, 171, 1, 172, 1, 172, 1, 172, 1, 172, 1, 173, 1, 173, 1, 173, 1, 173,
+		5, 173, 1349, 8, 173, 10, 173, 12, 173, 1352, 9, 173, 1, 173, 1, 173, 1, 174, 1, 174, 3, 174, 1358, 8, 174, 1, 174,
+		5, 174, 1361, 8, 174, 10, 174, 12, 174, 1364, 9, 174, 1, 175, 1, 175, 4, 175, 1368, 8, 175, 11, 175, 12, 175, 1369,
+		1, 175, 1, 175, 1, 176, 1, 176, 3, 176, 1376, 8, 176, 2, 386, 1369, 0, 177, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13,
+		7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43,
+		22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36,
+		73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, 89, 45, 91, 46, 93, 47, 95, 48, 97, 49, 99, 50, 101,
+		51, 103, 52, 105, 53, 107, 54, 109, 55, 111, 56, 113, 57, 115, 58, 117, 59, 119, 60, 121, 61, 123, 62, 125, 63, 127,
+		64, 129, 65, 131, 66, 133, 67, 135, 68, 137, 69, 139, 70, 141, 71, 143, 72, 145, 73, 147, 74, 149, 75, 151, 76, 153,
+		77, 155, 78, 157, 79, 159, 80, 161, 81, 163, 82, 165, 83, 167, 84, 169, 85, 171, 86, 173, 87, 175, 88, 177, 89, 179,
+		90, 181, 91, 183, 92, 185, 93, 187, 94, 189, 95, 191, 96, 193, 97, 195, 98, 197, 99, 199, 100, 201, 101, 203, 102,
+		205, 103, 207, 104, 209, 105, 211, 106, 213, 107, 215, 108, 217, 109, 219, 110, 221, 111, 223, 112, 225, 113, 227,
+		114, 229, 115, 231, 116, 233, 117, 235, 118, 237, 119, 239, 120, 241, 121, 243, 122, 245, 123, 247, 124, 249, 125,
+		251, 126, 253, 127, 255, 128, 257, 129, 259, 130, 261, 131, 263, 132, 265, 133, 267, 134, 269, 135, 271, 136, 273,
+		137, 275, 138, 277, 139, 279, 140, 281, 141, 283, 142, 285, 143, 287, 144, 289, 145, 291, 146, 293, 147, 295, 148,
+		297, 149, 299, 150, 301, 151, 303, 152, 305, 153, 307, 154, 309, 155, 311, 156, 313, 157, 315, 158, 317, 0, 319, 0,
+		321, 0, 323, 0, 325, 0, 327, 0, 329, 0, 331, 0, 333, 159, 335, 0, 337, 0, 339, 0, 341, 0, 343, 160, 345, 161, 347,
+		162, 349, 0, 351, 0, 353, 163, 1, 0, 37, 2, 0, 10, 10, 13, 13, 3, 0, 8, 9, 12, 12, 32, 32, 2, 0, 65, 65, 97, 97, 2,
+		0, 66, 66, 98, 98, 2, 0, 83, 83, 115, 115, 2, 0, 67, 67, 99, 99, 2, 0, 69, 69, 101, 101, 2, 0, 70, 70, 102, 102, 2,
+		0, 84, 84, 116, 116, 2, 0, 82, 82, 114, 114, 2, 0, 76, 76, 108, 108, 2, 0, 73, 73, 105, 105, 2, 0, 78, 78, 110, 110,
+		2, 0, 68, 68, 100, 100, 2, 0, 72, 72, 104, 104, 2, 0, 85, 85, 117, 117, 2, 0, 89, 89, 121, 121, 2, 0, 77, 77, 109,
+		109, 2, 0, 71, 71, 103, 103, 2, 0, 79, 79, 111, 111, 2, 0, 75, 75, 107, 107, 2, 0, 80, 80, 112, 112, 2, 0, 88, 88,
+		120, 120, 2, 0, 86, 86, 118, 118, 2, 0, 87, 87, 119, 119, 2, 0, 74, 74, 106, 106, 2, 0, 81, 81, 113, 113, 2, 0, 65,
+		90, 97, 122, 1, 0, 48, 57, 3, 0, 48, 57, 65, 90, 97, 122, 2, 0, 48, 57, 95, 95, 2, 0, 43, 43, 45, 45, 4, 0, 83, 83,
+		85, 85, 115, 115, 117, 117, 2, 0, 48, 49, 95, 95, 2, 0, 48, 55, 95, 95, 4, 0, 48, 57, 65, 70, 95, 95, 97, 102, 3, 0,
+		10, 10, 13, 13, 34, 34, 1396, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0,
+		0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0,
+		0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0,
+		35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0,
+		47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0,
+		59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0,
+		71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0,
+		83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0,
+		95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0,
+		107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0,
+		0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0,
+		0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, 0,
+		0, 0, 0, 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1,
+		0, 0, 0, 0, 155, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, 0, 163, 1, 0, 0, 0, 0, 165,
+		1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, 1, 0, 0, 0, 0, 171, 1, 0, 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0,
+		177, 1, 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 187, 1, 0, 0, 0,
+		0, 189, 1, 0, 0, 0, 0, 191, 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, 0, 199, 1, 0, 0,
+		0, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0,
+		0, 0, 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, 1,
+		0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 235,
+		1, 0, 0, 0, 0, 237, 1, 0, 0, 0, 0, 239, 1, 0, 0, 0, 0, 241, 1, 0, 0, 0, 0, 243, 1, 0, 0, 0, 0, 245, 1, 0, 0, 0, 0,
+		247, 1, 0, 0, 0, 0, 249, 1, 0, 0, 0, 0, 251, 1, 0, 0, 0, 0, 253, 1, 0, 0, 0, 0, 255, 1, 0, 0, 0, 0, 257, 1, 0, 0, 0,
+		0, 259, 1, 0, 0, 0, 0, 261, 1, 0, 0, 0, 0, 263, 1, 0, 0, 0, 0, 265, 1, 0, 0, 0, 0, 267, 1, 0, 0, 0, 0, 269, 1, 0, 0,
+		0, 0, 271, 1, 0, 0, 0, 0, 273, 1, 0, 0, 0, 0, 275, 1, 0, 0, 0, 0, 277, 1, 0, 0, 0, 0, 279, 1, 0, 0, 0, 0, 281, 1, 0,
+		0, 0, 0, 283, 1, 0, 0, 0, 0, 285, 1, 0, 0, 0, 0, 287, 1, 0, 0, 0, 0, 289, 1, 0, 0, 0, 0, 291, 1, 0, 0, 0, 0, 293, 1,
+		0, 0, 0, 0, 295, 1, 0, 0, 0, 0, 297, 1, 0, 0, 0, 0, 299, 1, 0, 0, 0, 0, 301, 1, 0, 0, 0, 0, 303, 1, 0, 0, 0, 0, 305,
+		1, 0, 0, 0, 0, 307, 1, 0, 0, 0, 0, 309, 1, 0, 0, 0, 0, 311, 1, 0, 0, 0, 0, 313, 1, 0, 0, 0, 0, 315, 1, 0, 0, 0, 0,
+		333, 1, 0, 0, 0, 0, 343, 1, 0, 0, 0, 0, 345, 1, 0, 0, 0, 0, 347, 1, 0, 0, 0, 0, 353, 1, 0, 0, 0, 1, 356, 1, 0, 0, 0,
+		3, 363, 1, 0, 0, 0, 5, 369, 1, 0, 0, 0, 7, 380, 1, 0, 0, 0, 9, 394, 1, 0, 0, 0, 11, 403, 1, 0, 0, 0, 13, 407, 1, 0,
+		0, 0, 15, 414, 1, 0, 0, 0, 17, 420, 1, 0, 0, 0, 19, 426, 1, 0, 0, 0, 21, 430, 1, 0, 0, 0, 23, 434, 1, 0, 0, 0, 25,
+		447, 1, 0, 0, 0, 27, 453, 1, 0, 0, 0, 29, 460, 1, 0, 0, 0, 31, 470, 1, 0, 0, 0, 33, 477, 1, 0, 0, 0, 35, 483, 1, 0,
+		0, 0, 37, 489, 1, 0, 0, 0, 39, 494, 1, 0, 0, 0, 41, 501, 1, 0, 0, 0, 43, 505, 1, 0, 0, 0, 45, 510, 1, 0, 0, 0, 47,
+		520, 1, 0, 0, 0, 49, 534, 1, 0, 0, 0, 51, 543, 1, 0, 0, 0, 53, 551, 1, 0, 0, 0, 55, 557, 1, 0, 0, 0, 57, 565, 1, 0,
+		0, 0, 59, 576, 1, 0, 0, 0, 61, 583, 1, 0, 0, 0, 63, 588, 1, 0, 0, 0, 65, 594, 1, 0, 0, 0, 67, 598, 1, 0, 0, 0, 69,
+		605, 1, 0, 0, 0, 71, 610, 1, 0, 0, 0, 73, 615, 1, 0, 0, 0, 75, 619, 1, 0, 0, 0, 77, 625, 1, 0, 0, 0, 79, 634, 1, 0,
+		0, 0, 81, 643, 1, 0, 0, 0, 83, 652, 1, 0, 0, 0, 85, 660, 1, 0, 0, 0, 87, 668, 1, 0, 0, 0, 89, 674, 1, 0, 0, 0, 91,
+		677, 1, 0, 0, 0, 93, 684, 1, 0, 0, 0, 95, 687, 1, 0, 0, 0, 97, 696, 1, 0, 0, 0, 99, 702, 1, 0, 0, 0, 101, 705, 1, 0,
+		0, 0, 103, 711, 1, 0, 0, 0, 105, 719, 1, 0, 0, 0, 107, 727, 1, 0, 0, 0, 109, 732, 1, 0, 0, 0, 111, 740, 1, 0, 0, 0,
+		113, 744, 1, 0, 0, 0, 115, 748, 1, 0, 0, 0, 117, 753, 1, 0, 0, 0, 119, 757, 1, 0, 0, 0, 121, 762, 1, 0, 0, 0, 123,
+		766, 1, 0, 0, 0, 125, 770, 1, 0, 0, 0, 127, 775, 1, 0, 0, 0, 129, 778, 1, 0, 0, 0, 131, 781, 1, 0, 0, 0, 133, 786,
+		1, 0, 0, 0, 135, 789, 1, 0, 0, 0, 137, 796, 1, 0, 0, 0, 139, 800, 1, 0, 0, 0, 141, 808, 1, 0, 0, 0, 143, 818, 1, 0,
+		0, 0, 145, 823, 1, 0, 0, 0, 147, 833, 1, 0, 0, 0, 149, 841, 1, 0, 0, 0, 151, 851, 1, 0, 0, 0, 153, 859, 1, 0, 0, 0,
+		155, 869, 1, 0, 0, 0, 157, 874, 1, 0, 0, 0, 159, 880, 1, 0, 0, 0, 161, 887, 1, 0, 0, 0, 163, 896, 1, 0, 0, 0, 165,
+		903, 1, 0, 0, 0, 167, 911, 1, 0, 0, 0, 169, 915, 1, 0, 0, 0, 171, 922, 1, 0, 0, 0, 173, 929, 1, 0, 0, 0, 175, 933,
+		1, 0, 0, 0, 177, 937, 1, 0, 0, 0, 179, 946, 1, 0, 0, 0, 181, 953, 1, 0, 0, 0, 183, 962, 1, 0, 0, 0, 185, 969, 1, 0,
+		0, 0, 187, 976, 1, 0, 0, 0, 189, 980, 1, 0, 0, 0, 191, 984, 1, 0, 0, 0, 193, 988, 1, 0, 0, 0, 195, 992, 1, 0, 0, 0,
+		197, 1000, 1, 0, 0, 0, 199, 1007, 1, 0, 0, 0, 201, 1016, 1, 0, 0, 0, 203, 1021, 1, 0, 0, 0, 205, 1024, 1, 0, 0, 0,
+		207, 1034, 1, 0, 0, 0, 209, 1039, 1, 0, 0, 0, 211, 1050, 1, 0, 0, 0, 213, 1056, 1, 0, 0, 0, 215, 1062, 1, 0, 0, 0,
+		217, 1066, 1, 0, 0, 0, 219, 1075, 1, 0, 0, 0, 221, 1080, 1, 0, 0, 0, 223, 1085, 1, 0, 0, 0, 225, 1091, 1, 0, 0, 0,
+		227, 1097, 1, 0, 0, 0, 229, 1103, 1, 0, 0, 0, 231, 1108, 1, 0, 0, 0, 233, 1113, 1, 0, 0, 0, 235, 1118, 1, 0, 0, 0,
+		237, 1124, 1, 0, 0, 0, 239, 1129, 1, 0, 0, 0, 241, 1133, 1, 0, 0, 0, 243, 1135, 1, 0, 0, 0, 245, 1138, 1, 0, 0, 0,
+		247, 1140, 1, 0, 0, 0, 249, 1142, 1, 0, 0, 0, 251, 1145, 1, 0, 0, 0, 253, 1148, 1, 0, 0, 0, 255, 1152, 1, 0, 0, 0,
+		257, 1155, 1, 0, 0, 0, 259, 1159, 1, 0, 0, 0, 261, 1162, 1, 0, 0, 0, 263, 1166, 1, 0, 0, 0, 265, 1168, 1, 0, 0, 0,
+		267, 1170, 1, 0, 0, 0, 269, 1172, 1, 0, 0, 0, 271, 1174, 1, 0, 0, 0, 273, 1177, 1, 0, 0, 0, 275, 1179, 1, 0, 0, 0,
+		277, 1182, 1, 0, 0, 0, 279, 1185, 1, 0, 0, 0, 281, 1188, 1, 0, 0, 0, 283, 1191, 1, 0, 0, 0, 285, 1194, 1, 0, 0, 0,
+		287, 1196, 1, 0, 0, 0, 289, 1198, 1, 0, 0, 0, 291, 1200, 1, 0, 0, 0, 293, 1202, 1, 0, 0, 0, 295, 1205, 1, 0, 0, 0,
+		297, 1208, 1, 0, 0, 0, 299, 1210, 1, 0, 0, 0, 301, 1212, 1, 0, 0, 0, 303, 1214, 1, 0, 0, 0, 305, 1216, 1, 0, 0, 0,
+		307, 1218, 1, 0, 0, 0, 309, 1220, 1, 0, 0, 0, 311, 1222, 1, 0, 0, 0, 313, 1224, 1, 0, 0, 0, 315, 1226, 1, 0, 0, 0,
+		317, 1228, 1, 0, 0, 0, 319, 1230, 1, 0, 0, 0, 321, 1232, 1, 0, 0, 0, 323, 1234, 1, 0, 0, 0, 325, 1241, 1, 0, 0, 0,
+		327, 1249, 1, 0, 0, 0, 329, 1255, 1, 0, 0, 0, 331, 1261, 1, 0, 0, 0, 333, 1275, 1, 0, 0, 0, 335, 1278, 1, 0, 0, 0,
+		337, 1293, 1, 0, 0, 0, 339, 1308, 1, 0, 0, 0, 341, 1320, 1, 0, 0, 0, 343, 1338, 1, 0, 0, 0, 345, 1340, 1, 0, 0, 0,
+		347, 1344, 1, 0, 0, 0, 349, 1355, 1, 0, 0, 0, 351, 1365, 1, 0, 0, 0, 353, 1375, 1, 0, 0, 0, 355, 357, 7, 0, 0, 0,
+		356, 355, 1, 0, 0, 0, 357, 358, 1, 0, 0, 0, 358, 356, 1, 0, 0, 0, 358, 359, 1, 0, 0, 0, 359, 360, 1, 0, 0, 0, 360,
+		361, 6, 0, 0, 0, 361, 2, 1, 0, 0, 0, 362, 364, 7, 1, 0, 0, 363, 362, 1, 0, 0, 0, 364, 365, 1, 0, 0, 0, 365, 363, 1,
+		0, 0, 0, 365, 366, 1, 0, 0, 0, 366, 367, 1, 0, 0, 0, 367, 368, 6, 1, 0, 0, 368, 4, 1, 0, 0, 0, 369, 370, 5, 45, 0,
+		0, 370, 371, 5, 45, 0, 0, 371, 375, 1, 0, 0, 0, 372, 374, 8, 0, 0, 0, 373, 372, 1, 0, 0, 0, 374, 377, 1, 0, 0, 0,
+		375, 373, 1, 0, 0, 0, 375, 376, 1, 0, 0, 0, 376, 378, 1, 0, 0, 0, 377, 375, 1, 0, 0, 0, 378, 379, 6, 2, 1, 0, 379,
+		6, 1, 0, 0, 0, 380, 381, 5, 47, 0, 0, 381, 382, 5, 42, 0, 0, 382, 386, 1, 0, 0, 0, 383, 385, 9, 0, 0, 0, 384, 383,
+		1, 0, 0, 0, 385, 388, 1, 0, 0, 0, 386, 387, 1, 0, 0, 0, 386, 384, 1, 0, 0, 0, 387, 389, 1, 0, 0, 0, 388, 386, 1, 0,
+		0, 0, 389, 390, 5, 42, 0, 0, 390, 391, 5, 47, 0, 0, 391, 392, 1, 0, 0, 0, 392, 393, 6, 3, 1, 0, 393, 8, 1, 0, 0, 0,
+		394, 398, 5, 96, 0, 0, 395, 397, 8, 0, 0, 0, 396, 395, 1, 0, 0, 0, 397, 400, 1, 0, 0, 0, 398, 396, 1, 0, 0, 0, 398,
+		399, 1, 0, 0, 0, 399, 401, 1, 0, 0, 0, 400, 398, 1, 0, 0, 0, 401, 402, 6, 4, 2, 0, 402, 10, 1, 0, 0, 0, 403, 404, 7,
+		2, 0, 0, 404, 405, 7, 3, 0, 0, 405, 406, 7, 4, 0, 0, 406, 12, 1, 0, 0, 0, 407, 408, 7, 2, 0, 0, 408, 409, 7, 5, 0,
+		0, 409, 410, 7, 5, 0, 0, 410, 411, 7, 6, 0, 0, 411, 412, 7, 4, 0, 0, 412, 413, 7, 4, 0, 0, 413, 14, 1, 0, 0, 0, 414,
+		415, 7, 2, 0, 0, 415, 416, 7, 7, 0, 0, 416, 417, 7, 8, 0, 0, 417, 418, 7, 6, 0, 0, 418, 419, 7, 9, 0, 0, 419, 16, 1,
+		0, 0, 0, 420, 421, 7, 2, 0, 0, 421, 422, 7, 10, 0, 0, 422, 423, 7, 11, 0, 0, 423, 424, 7, 2, 0, 0, 424, 425, 7, 4,
+		0, 0, 425, 18, 1, 0, 0, 0, 426, 427, 7, 2, 0, 0, 427, 428, 7, 10, 0, 0, 428, 429, 7, 10, 0, 0, 429, 20, 1, 0, 0, 0,
+		430, 431, 7, 2, 0, 0, 431, 432, 7, 12, 0, 0, 432, 433, 7, 13, 0, 0, 433, 22, 1, 0, 0, 0, 434, 435, 7, 2, 0, 0, 435,
+		436, 7, 9, 0, 0, 436, 437, 7, 5, 0, 0, 437, 438, 7, 14, 0, 0, 438, 439, 7, 11, 0, 0, 439, 440, 7, 8, 0, 0, 440, 441,
+		7, 6, 0, 0, 441, 442, 7, 5, 0, 0, 442, 443, 7, 8, 0, 0, 443, 444, 7, 15, 0, 0, 444, 445, 7, 9, 0, 0, 445, 446, 7, 6,
+		0, 0, 446, 24, 1, 0, 0, 0, 447, 448, 7, 2, 0, 0, 448, 449, 7, 9, 0, 0, 449, 450, 7, 9, 0, 0, 450, 451, 7, 2, 0, 0,
+		451, 452, 7, 16, 0, 0, 452, 26, 1, 0, 0, 0, 453, 454, 7, 2, 0, 0, 454, 455, 7, 4, 0, 0, 455, 456, 7, 4, 0, 0, 456,
+		457, 7, 6, 0, 0, 457, 458, 7, 9, 0, 0, 458, 459, 7, 8, 0, 0, 459, 28, 1, 0, 0, 0, 460, 461, 7, 2, 0, 0, 461, 462, 7,
+		8, 0, 0, 462, 463, 7, 8, 0, 0, 463, 464, 7, 9, 0, 0, 464, 465, 7, 11, 0, 0, 465, 466, 7, 3, 0, 0, 466, 467, 7, 15,
+		0, 0, 467, 468, 7, 8, 0, 0, 468, 469, 7, 6, 0, 0, 469, 30, 1, 0, 0, 0, 470, 471, 7, 2, 0, 0, 471, 472, 7, 4, 0, 0,
+		472, 473, 7, 4, 0, 0, 473, 474, 7, 15, 0, 0, 474, 475, 7, 17, 0, 0, 475, 476, 7, 6, 0, 0, 476, 32, 1, 0, 0, 0, 477,
+		478, 7, 3, 0, 0, 478, 479, 7, 6, 0, 0, 479, 480, 7, 18, 0, 0, 480, 481, 7, 11, 0, 0, 481, 482, 7, 12, 0, 0, 482, 34,
+		1, 0, 0, 0, 483, 484, 7, 3, 0, 0, 484, 485, 7, 10, 0, 0, 485, 486, 7, 19, 0, 0, 486, 487, 7, 5, 0, 0, 487, 488, 7,
+		20, 0, 0, 488, 36, 1, 0, 0, 0, 489, 490, 7, 3, 0, 0, 490, 491, 7, 19, 0, 0, 491, 492, 7, 13, 0, 0, 492, 493, 7, 16,
+		0, 0, 493, 38, 1, 0, 0, 0, 494, 495, 7, 3, 0, 0, 495, 496, 7, 15, 0, 0, 496, 497, 7, 7, 0, 0, 497, 498, 7, 7, 0, 0,
+		498, 499, 7, 6, 0, 0, 499, 500, 7, 9, 0, 0, 500, 40, 1, 0, 0, 0, 501, 502, 7, 3, 0, 0, 502, 503, 7, 15, 0, 0, 503,
+		504, 7, 4, 0, 0, 504, 42, 1, 0, 0, 0, 505, 506, 7, 5, 0, 0, 506, 507, 7, 2, 0, 0, 507, 508, 7, 4, 0, 0, 508, 509, 7,
+		6, 0, 0, 509, 44, 1, 0, 0, 0, 510, 511, 7, 5, 0, 0, 511, 512, 7, 19, 0, 0, 512, 513, 7, 17, 0, 0, 513, 514, 7, 21,
+		0, 0, 514, 515, 7, 19, 0, 0, 515, 516, 7, 12, 0, 0, 516, 517, 7, 6, 0, 0, 517, 518, 7, 12, 0, 0, 518, 519, 7, 8, 0,
+		0, 519, 46, 1, 0, 0, 0, 520, 521, 7, 5, 0, 0, 521, 522, 7, 19, 0, 0, 522, 523, 7, 12, 0, 0, 523, 524, 7, 7, 0, 0,
+		524, 525, 7, 11, 0, 0, 525, 526, 7, 18, 0, 0, 526, 527, 7, 15, 0, 0, 527, 528, 7, 9, 0, 0, 528, 529, 7, 2, 0, 0,
+		529, 530, 7, 8, 0, 0, 530, 531, 7, 11, 0, 0, 531, 532, 7, 19, 0, 0, 532, 533, 7, 12, 0, 0, 533, 48, 1, 0, 0, 0, 534,
+		535, 7, 5, 0, 0, 535, 536, 7, 19, 0, 0, 536, 537, 7, 12, 0, 0, 537, 538, 7, 4, 0, 0, 538, 539, 7, 8, 0, 0, 539, 540,
+		7, 2, 0, 0, 540, 541, 7, 12, 0, 0, 541, 542, 7, 8, 0, 0, 542, 50, 1, 0, 0, 0, 543, 544, 7, 5, 0, 0, 544, 545, 7, 19,
+		0, 0, 545, 546, 7, 12, 0, 0, 546, 547, 7, 8, 0, 0, 547, 548, 7, 6, 0, 0, 548, 549, 7, 22, 0, 0, 549, 550, 7, 8, 0,
+		0, 550, 52, 1, 0, 0, 0, 551, 552, 7, 5, 0, 0, 552, 553, 7, 19, 0, 0, 553, 554, 7, 23, 0, 0, 554, 555, 7, 6, 0, 0,
+		555, 556, 7, 9, 0, 0, 556, 54, 1, 0, 0, 0, 557, 558, 7, 13, 0, 0, 558, 559, 7, 6, 0, 0, 559, 560, 7, 7, 0, 0, 560,
+		561, 7, 2, 0, 0, 561, 562, 7, 15, 0, 0, 562, 563, 7, 10, 0, 0, 563, 564, 7, 8, 0, 0, 564, 56, 1, 0, 0, 0, 565, 566,
+		7, 13, 0, 0, 566, 567, 7, 11, 0, 0, 567, 568, 7, 4, 0, 0, 568, 569, 7, 5, 0, 0, 569, 570, 7, 19, 0, 0, 570, 571, 7,
+		12, 0, 0, 571, 572, 7, 12, 0, 0, 572, 573, 7, 6, 0, 0, 573, 574, 7, 5, 0, 0, 574, 575, 7, 8, 0, 0, 575, 58, 1, 0, 0,
+		0, 576, 577, 7, 13, 0, 0, 577, 578, 7, 19, 0, 0, 578, 579, 7, 24, 0, 0, 579, 580, 7, 12, 0, 0, 580, 581, 7, 8, 0, 0,
+		581, 582, 7, 19, 0, 0, 582, 60, 1, 0, 0, 0, 583, 584, 7, 6, 0, 0, 584, 585, 7, 10, 0, 0, 585, 586, 7, 4, 0, 0, 586,
+		587, 7, 6, 0, 0, 587, 62, 1, 0, 0, 0, 588, 589, 7, 6, 0, 0, 589, 590, 7, 10, 0, 0, 590, 591, 7, 4, 0, 0, 591, 592,
+		7, 11, 0, 0, 592, 593, 7, 7, 0, 0, 593, 64, 1, 0, 0, 0, 594, 595, 7, 6, 0, 0, 595, 596, 7, 12, 0, 0, 596, 597, 7,
+		13, 0, 0, 597, 66, 1, 0, 0, 0, 598, 599, 7, 6, 0, 0, 599, 600, 7, 12, 0, 0, 600, 601, 7, 8, 0, 0, 601, 602, 7, 11,
+		0, 0, 602, 603, 7, 8, 0, 0, 603, 604, 7, 16, 0, 0, 604, 68, 1, 0, 0, 0, 605, 606, 7, 6, 0, 0, 606, 607, 7, 22, 0, 0,
+		607, 608, 7, 11, 0, 0, 608, 609, 7, 8, 0, 0, 609, 70, 1, 0, 0, 0, 610, 611, 7, 7, 0, 0, 611, 612, 7, 11, 0, 0, 612,
+		613, 7, 10, 0, 0, 613, 614, 7, 6, 0, 0, 614, 72, 1, 0, 0, 0, 615, 616, 7, 7, 0, 0, 616, 617, 7, 19, 0, 0, 617, 618,
+		7, 9, 0, 0, 618, 74, 1, 0, 0, 0, 619, 620, 7, 7, 0, 0, 620, 621, 7, 19, 0, 0, 621, 622, 7, 9, 0, 0, 622, 623, 7, 5,
+		0, 0, 623, 624, 7, 6, 0, 0, 624, 76, 1, 0, 0, 0, 625, 626, 7, 7, 0, 0, 626, 627, 7, 15, 0, 0, 627, 628, 7, 12, 0, 0,
+		628, 629, 7, 5, 0, 0, 629, 630, 7, 8, 0, 0, 630, 631, 7, 11, 0, 0, 631, 632, 7, 19, 0, 0, 632, 633, 7, 12, 0, 0,
+		633, 78, 1, 0, 0, 0, 634, 635, 7, 7, 0, 0, 635, 636, 7, 2, 0, 0, 636, 637, 7, 11, 0, 0, 637, 638, 7, 9, 0, 0, 638,
+		639, 7, 12, 0, 0, 639, 640, 7, 6, 0, 0, 640, 641, 7, 4, 0, 0, 641, 642, 7, 4, 0, 0, 642, 80, 1, 0, 0, 0, 643, 644,
+		7, 18, 0, 0, 644, 645, 7, 6, 0, 0, 645, 646, 7, 12, 0, 0, 646, 647, 7, 6, 0, 0, 647, 648, 7, 9, 0, 0, 648, 649, 7,
+		2, 0, 0, 649, 650, 7, 8, 0, 0, 650, 651, 7, 6, 0, 0, 651, 82, 1, 0, 0, 0, 652, 653, 7, 18, 0, 0, 653, 654, 7, 6, 0,
+		0, 654, 655, 7, 12, 0, 0, 655, 656, 7, 6, 0, 0, 656, 657, 7, 9, 0, 0, 657, 658, 7, 11, 0, 0, 658, 659, 7, 5, 0, 0,
+		659, 84, 1, 0, 0, 0, 660, 661, 7, 18, 0, 0, 661, 662, 7, 15, 0, 0, 662, 663, 7, 2, 0, 0, 663, 664, 7, 9, 0, 0, 664,
+		665, 7, 13, 0, 0, 665, 666, 7, 6, 0, 0, 666, 667, 7, 13, 0, 0, 667, 86, 1, 0, 0, 0, 668, 669, 7, 18, 0, 0, 669, 670,
+		7, 9, 0, 0, 670, 671, 7, 19, 0, 0, 671, 672, 7, 15, 0, 0, 672, 673, 7, 21, 0, 0, 673, 88, 1, 0, 0, 0, 674, 675, 7,
+		11, 0, 0, 675, 676, 7, 7, 0, 0, 676, 90, 1, 0, 0, 0, 677, 678, 7, 11, 0, 0, 678, 679, 7, 17, 0, 0, 679, 680, 7, 21,
+		0, 0, 680, 681, 7, 15, 0, 0, 681, 682, 7, 9, 0, 0, 682, 683, 7, 6, 0, 0, 683, 92, 1, 0, 0, 0, 684, 685, 7, 11, 0, 0,
+		685, 686, 7, 12, 0, 0, 686, 94, 1, 0, 0, 0, 687, 688, 7, 11, 0, 0, 688, 689, 7, 12, 0, 0, 689, 690, 7, 6, 0, 0, 690,
+		691, 7, 9, 0, 0, 691, 692, 7, 8, 0, 0, 692, 693, 7, 11, 0, 0, 693, 694, 7, 2, 0, 0, 694, 695, 7, 10, 0, 0, 695, 96,
+		1, 0, 0, 0, 696, 697, 7, 11, 0, 0, 697, 698, 7, 12, 0, 0, 698, 699, 7, 19, 0, 0, 699, 700, 7, 15, 0, 0, 700, 701, 7,
+		8, 0, 0, 701, 98, 1, 0, 0, 0, 702, 703, 7, 11, 0, 0, 703, 704, 7, 4, 0, 0, 704, 100, 1, 0, 0, 0, 705, 706, 7, 10, 0,
+		0, 706, 707, 7, 2, 0, 0, 707, 708, 7, 3, 0, 0, 708, 709, 7, 6, 0, 0, 709, 710, 7, 10, 0, 0, 710, 102, 1, 0, 0, 0,
+		711, 712, 7, 10, 0, 0, 712, 713, 7, 11, 0, 0, 713, 714, 7, 3, 0, 0, 714, 715, 7, 9, 0, 0, 715, 716, 7, 2, 0, 0, 716,
+		717, 7, 9, 0, 0, 717, 718, 7, 16, 0, 0, 718, 104, 1, 0, 0, 0, 719, 720, 7, 10, 0, 0, 720, 721, 7, 11, 0, 0, 721,
+		722, 7, 12, 0, 0, 722, 723, 7, 20, 0, 0, 723, 724, 7, 2, 0, 0, 724, 725, 7, 18, 0, 0, 725, 726, 7, 6, 0, 0, 726,
+		106, 1, 0, 0, 0, 727, 728, 7, 10, 0, 0, 728, 729, 7, 19, 0, 0, 729, 730, 7, 19, 0, 0, 730, 731, 7, 21, 0, 0, 731,
+		108, 1, 0, 0, 0, 732, 733, 7, 10, 0, 0, 733, 734, 7, 11, 0, 0, 734, 735, 7, 8, 0, 0, 735, 736, 7, 6, 0, 0, 736, 737,
+		7, 9, 0, 0, 737, 738, 7, 2, 0, 0, 738, 739, 7, 10, 0, 0, 739, 110, 1, 0, 0, 0, 740, 741, 7, 17, 0, 0, 741, 742, 7,
+		2, 0, 0, 742, 743, 7, 21, 0, 0, 743, 112, 1, 0, 0, 0, 744, 745, 7, 17, 0, 0, 745, 746, 7, 19, 0, 0, 746, 747, 7, 13,
+		0, 0, 747, 114, 1, 0, 0, 0, 748, 749, 7, 12, 0, 0, 749, 750, 7, 2, 0, 0, 750, 751, 7, 12, 0, 0, 751, 752, 7, 13, 0,
+		0, 752, 116, 1, 0, 0, 0, 753, 754, 7, 12, 0, 0, 754, 755, 7, 6, 0, 0, 755, 756, 7, 24, 0, 0, 756, 118, 1, 0, 0, 0,
+		757, 758, 7, 12, 0, 0, 758, 759, 7, 6, 0, 0, 759, 760, 7, 22, 0, 0, 760, 761, 7, 8, 0, 0, 761, 120, 1, 0, 0, 0, 762,
+		763, 7, 12, 0, 0, 763, 764, 7, 19, 0, 0, 764, 765, 7, 9, 0, 0, 765, 122, 1, 0, 0, 0, 766, 767, 7, 12, 0, 0, 767,
+		768, 7, 19, 0, 0, 768, 769, 7, 8, 0, 0, 769, 124, 1, 0, 0, 0, 770, 771, 7, 12, 0, 0, 771, 772, 7, 15, 0, 0, 772,
+		773, 7, 10, 0, 0, 773, 774, 7, 10, 0, 0, 774, 126, 1, 0, 0, 0, 775, 776, 7, 19, 0, 0, 776, 777, 7, 7, 0, 0, 777,
+		128, 1, 0, 0, 0, 778, 779, 7, 19, 0, 0, 779, 780, 7, 12, 0, 0, 780, 130, 1, 0, 0, 0, 781, 782, 7, 19, 0, 0, 782,
+		783, 7, 21, 0, 0, 783, 784, 7, 6, 0, 0, 784, 785, 7, 12, 0, 0, 785, 132, 1, 0, 0, 0, 786, 787, 7, 19, 0, 0, 787,
+		788, 7, 9, 0, 0, 788, 134, 1, 0, 0, 0, 789, 790, 7, 19, 0, 0, 790, 791, 7, 8, 0, 0, 791, 792, 7, 14, 0, 0, 792, 793,
+		7, 6, 0, 0, 793, 794, 7, 9, 0, 0, 794, 795, 7, 4, 0, 0, 795, 136, 1, 0, 0, 0, 796, 797, 7, 19, 0, 0, 797, 798, 7,
+		15, 0, 0, 798, 799, 7, 8, 0, 0, 799, 138, 1, 0, 0, 0, 800, 801, 7, 21, 0, 0, 801, 802, 7, 2, 0, 0, 802, 803, 7, 5,
+		0, 0, 803, 804, 7, 20, 0, 0, 804, 805, 7, 2, 0, 0, 805, 806, 7, 18, 0, 0, 806, 807, 7, 6, 0, 0, 807, 140, 1, 0, 0,
+		0, 808, 809, 7, 21, 0, 0, 809, 810, 7, 2, 0, 0, 810, 811, 7, 9, 0, 0, 811, 812, 7, 2, 0, 0, 812, 813, 7, 17, 0, 0,
+		813, 814, 7, 6, 0, 0, 814, 815, 7, 8, 0, 0, 815, 816, 7, 6, 0, 0, 816, 817, 7, 9, 0, 0, 817, 142, 1, 0, 0, 0, 818,
+		819, 7, 21, 0, 0, 819, 820, 7, 19, 0, 0, 820, 821, 7, 9, 0, 0, 821, 822, 7, 8, 0, 0, 822, 144, 1, 0, 0, 0, 823, 824,
+		7, 21, 0, 0, 824, 825, 7, 19, 0, 0, 825, 826, 7, 4, 0, 0, 826, 827, 7, 8, 0, 0, 827, 828, 7, 21, 0, 0, 828, 829, 7,
+		19, 0, 0, 829, 830, 7, 12, 0, 0, 830, 831, 7, 6, 0, 0, 831, 832, 7, 13, 0, 0, 832, 146, 1, 0, 0, 0, 833, 834, 7, 21,
+		0, 0, 834, 835, 7, 9, 0, 0, 835, 836, 7, 11, 0, 0, 836, 837, 7, 23, 0, 0, 837, 838, 7, 2, 0, 0, 838, 839, 7, 8, 0,
+		0, 839, 840, 7, 6, 0, 0, 840, 148, 1, 0, 0, 0, 841, 842, 7, 21, 0, 0, 842, 843, 7, 9, 0, 0, 843, 844, 7, 19, 0, 0,
+		844, 845, 7, 5, 0, 0, 845, 846, 7, 6, 0, 0, 846, 847, 7, 13, 0, 0, 847, 848, 7, 15, 0, 0, 848, 849, 7, 9, 0, 0, 849,
+		850, 7, 6, 0, 0, 850, 150, 1, 0, 0, 0, 851, 852, 7, 21, 0, 0, 852, 853, 7, 9, 0, 0, 853, 854, 7, 19, 0, 0, 854, 855,
+		7, 5, 0, 0, 855, 856, 7, 6, 0, 0, 856, 857, 7, 4, 0, 0, 857, 858, 7, 4, 0, 0, 858, 152, 1, 0, 0, 0, 859, 860, 7, 21,
+		0, 0, 860, 861, 7, 9, 0, 0, 861, 862, 7, 19, 0, 0, 862, 863, 7, 8, 0, 0, 863, 864, 7, 6, 0, 0, 864, 865, 7, 5, 0, 0,
+		865, 866, 7, 8, 0, 0, 866, 867, 7, 6, 0, 0, 867, 868, 7, 13, 0, 0, 868, 154, 1, 0, 0, 0, 869, 870, 7, 21, 0, 0, 870,
+		871, 7, 15, 0, 0, 871, 872, 7, 9, 0, 0, 872, 873, 7, 6, 0, 0, 873, 156, 1, 0, 0, 0, 874, 875, 7, 9, 0, 0, 875, 876,
+		7, 2, 0, 0, 876, 877, 7, 12, 0, 0, 877, 878, 7, 18, 0, 0, 878, 879, 7, 6, 0, 0, 879, 158, 1, 0, 0, 0, 880, 881, 7,
+		9, 0, 0, 881, 882, 7, 6, 0, 0, 882, 883, 7, 5, 0, 0, 883, 884, 7, 19, 0, 0, 884, 885, 7, 9, 0, 0, 885, 886, 7, 13,
+		0, 0, 886, 160, 1, 0, 0, 0, 887, 888, 7, 9, 0, 0, 888, 889, 7, 6, 0, 0, 889, 890, 7, 18, 0, 0, 890, 891, 7, 11, 0,
+		0, 891, 892, 7, 4, 0, 0, 892, 893, 7, 8, 0, 0, 893, 894, 7, 6, 0, 0, 894, 895, 7, 9, 0, 0, 895, 162, 1, 0, 0, 0,
+		896, 897, 7, 9, 0, 0, 897, 898, 7, 6, 0, 0, 898, 899, 7, 25, 0, 0, 899, 900, 7, 6, 0, 0, 900, 901, 7, 5, 0, 0, 901,
+		902, 7, 8, 0, 0, 902, 164, 1, 0, 0, 0, 903, 904, 7, 9, 0, 0, 904, 905, 7, 6, 0, 0, 905, 906, 7, 10, 0, 0, 906, 907,
+		7, 6, 0, 0, 907, 908, 7, 2, 0, 0, 908, 909, 7, 4, 0, 0, 909, 910, 7, 6, 0, 0, 910, 166, 1, 0, 0, 0, 911, 912, 7, 9,
+		0, 0, 912, 913, 7, 6, 0, 0, 913, 914, 7, 17, 0, 0, 914, 168, 1, 0, 0, 0, 915, 916, 7, 9, 0, 0, 916, 917, 7, 6, 0, 0,
+		917, 918, 7, 21, 0, 0, 918, 919, 7, 19, 0, 0, 919, 920, 7, 9, 0, 0, 920, 921, 7, 8, 0, 0, 921, 170, 1, 0, 0, 0, 922,
+		923, 7, 9, 0, 0, 923, 924, 7, 6, 0, 0, 924, 925, 7, 8, 0, 0, 925, 926, 7, 15, 0, 0, 926, 927, 7, 9, 0, 0, 927, 928,
+		7, 12, 0, 0, 928, 172, 1, 0, 0, 0, 929, 930, 7, 9, 0, 0, 930, 931, 7, 19, 0, 0, 931, 932, 7, 10, 0, 0, 932, 174, 1,
+		0, 0, 0, 933, 934, 7, 9, 0, 0, 934, 935, 7, 19, 0, 0, 935, 936, 7, 9, 0, 0, 936, 176, 1, 0, 0, 0, 937, 938, 7, 9, 0,
+		0, 938, 939, 7, 6, 0, 0, 939, 940, 7, 4, 0, 0, 940, 941, 7, 8, 0, 0, 941, 942, 7, 9, 0, 0, 942, 943, 7, 11, 0, 0,
+		943, 944, 7, 5, 0, 0, 944, 945, 7, 8, 0, 0, 945, 178, 1, 0, 0, 0, 946, 947, 7, 4, 0, 0, 947, 948, 7, 6, 0, 0, 948,
+		949, 7, 10, 0, 0, 949, 950, 7, 6, 0, 0, 950, 951, 7, 5, 0, 0, 951, 952, 7, 8, 0, 0, 952, 180, 1, 0, 0, 0, 953, 954,
+		7, 4, 0, 0, 954, 955, 7, 6, 0, 0, 955, 956, 7, 23, 0, 0, 956, 957, 7, 6, 0, 0, 957, 958, 7, 9, 0, 0, 958, 959, 7,
+		11, 0, 0, 959, 960, 7, 8, 0, 0, 960, 961, 7, 16, 0, 0, 961, 182, 1, 0, 0, 0, 962, 963, 7, 4, 0, 0, 963, 964, 7, 14,
+		0, 0, 964, 965, 7, 2, 0, 0, 965, 966, 7, 9, 0, 0, 966, 967, 7, 6, 0, 0, 967, 968, 7, 13, 0, 0, 968, 184, 1, 0, 0, 0,
+		969, 970, 7, 4, 0, 0, 970, 971, 7, 11, 0, 0, 971, 972, 7, 18, 0, 0, 972, 973, 7, 12, 0, 0, 973, 974, 7, 2, 0, 0,
+		974, 975, 7, 10, 0, 0, 975, 186, 1, 0, 0, 0, 976, 977, 7, 4, 0, 0, 977, 978, 7, 10, 0, 0, 978, 979, 7, 2, 0, 0, 979,
+		188, 1, 0, 0, 0, 980, 981, 7, 4, 0, 0, 981, 982, 7, 10, 0, 0, 982, 983, 7, 10, 0, 0, 983, 190, 1, 0, 0, 0, 984, 985,
+		7, 4, 0, 0, 985, 986, 7, 9, 0, 0, 986, 987, 7, 2, 0, 0, 987, 192, 1, 0, 0, 0, 988, 989, 7, 4, 0, 0, 989, 990, 7, 9,
+		0, 0, 990, 991, 7, 10, 0, 0, 991, 194, 1, 0, 0, 0, 992, 993, 7, 4, 0, 0, 993, 994, 7, 15, 0, 0, 994, 995, 7, 3, 0,
+		0, 995, 996, 7, 8, 0, 0, 996, 997, 7, 16, 0, 0, 997, 998, 7, 21, 0, 0, 998, 999, 7, 6, 0, 0, 999, 196, 1, 0, 0, 0,
+		1000, 1001, 7, 4, 0, 0, 1001, 1002, 7, 8, 0, 0, 1002, 1003, 7, 9, 0, 0, 1003, 1004, 7, 19, 0, 0, 1004, 1005, 7, 12,
+		0, 0, 1005, 1006, 7, 18, 0, 0, 1006, 198, 1, 0, 0, 0, 1007, 1008, 7, 4, 0, 0, 1008, 1009, 7, 6, 0, 0, 1009, 1010, 7,
+		26, 0, 0, 1010, 1011, 7, 15, 0, 0, 1011, 1012, 7, 6, 0, 0, 1012, 1013, 7, 12, 0, 0, 1013, 1014, 7, 5, 0, 0, 1014,
+		1015, 7, 6, 0, 0, 1015, 200, 1, 0, 0, 0, 1016, 1017, 7, 8, 0, 0, 1017, 1018, 7, 14, 0, 0, 1018, 1019, 7, 6, 0, 0,
+		1019, 1020, 7, 12, 0, 0, 1020, 202, 1, 0, 0, 0, 1021, 1022, 7, 8, 0, 0, 1022, 1023, 7, 19, 0, 0, 1023, 204, 1, 0, 0,
+		0, 1024, 1025, 7, 8, 0, 0, 1025, 1026, 7, 9, 0, 0, 1026, 1027, 7, 2, 0, 0, 1027, 1028, 7, 12, 0, 0, 1028, 1029, 7,
+		4, 0, 0, 1029, 1030, 7, 21, 0, 0, 1030, 1031, 7, 19, 0, 0, 1031, 1032, 7, 9, 0, 0, 1032, 1033, 7, 8, 0, 0, 1033,
+		206, 1, 0, 0, 0, 1034, 1035, 7, 8, 0, 0, 1035, 1036, 7, 16, 0, 0, 1036, 1037, 7, 21, 0, 0, 1037, 1038, 7, 6, 0, 0,
+		1038, 208, 1, 0, 0, 0, 1039, 1040, 7, 15, 0, 0, 1040, 1041, 7, 12, 0, 0, 1041, 1042, 7, 2, 0, 0, 1042, 1043, 7, 7,
+		0, 0, 1043, 1044, 7, 7, 0, 0, 1044, 1045, 7, 6, 0, 0, 1045, 1046, 7, 5, 0, 0, 1046, 1047, 7, 8, 0, 0, 1047, 1048, 7,
+		6, 0, 0, 1048, 1049, 7, 13, 0, 0, 1049, 210, 1, 0, 0, 0, 1050, 1051, 7, 15, 0, 0, 1051, 1052, 7, 12, 0, 0, 1052,
+		1053, 7, 11, 0, 0, 1053, 1054, 7, 8, 0, 0, 1054, 1055, 7, 4, 0, 0, 1055, 212, 1, 0, 0, 0, 1056, 1057, 7, 15, 0, 0,
+		1057, 1058, 7, 12, 0, 0, 1058, 1059, 7, 8, 0, 0, 1059, 1060, 7, 11, 0, 0, 1060, 1061, 7, 10, 0, 0, 1061, 214, 1, 0,
+		0, 0, 1062, 1063, 7, 15, 0, 0, 1063, 1064, 7, 4, 0, 0, 1064, 1065, 7, 6, 0, 0, 1065, 216, 1, 0, 0, 0, 1066, 1067, 7,
+		23, 0, 0, 1067, 1068, 7, 2, 0, 0, 1068, 1069, 7, 9, 0, 0, 1069, 1070, 7, 11, 0, 0, 1070, 1071, 7, 2, 0, 0, 1071,
+		1072, 7, 3, 0, 0, 1072, 1073, 7, 10, 0, 0, 1073, 1074, 7, 6, 0, 0, 1074, 218, 1, 0, 0, 0, 1075, 1076, 7, 23, 0, 0,
+		1076, 1077, 7, 11, 0, 0, 1077, 1078, 7, 6, 0, 0, 1078, 1079, 7, 24, 0, 0, 1079, 220, 1, 0, 0, 0, 1080, 1081, 7, 23,
+		0, 0, 1081, 1082, 7, 21, 0, 0, 1082, 1083, 7, 20, 0, 0, 1083, 1084, 7, 18, 0, 0, 1084, 222, 1, 0, 0, 0, 1085, 1086,
+		7, 23, 0, 0, 1086, 1087, 7, 17, 0, 0, 1087, 1088, 7, 19, 0, 0, 1088, 1089, 7, 13, 0, 0, 1089, 1090, 7, 6, 0, 0,
+		1090, 224, 1, 0, 0, 0, 1091, 1092, 7, 23, 0, 0, 1092, 1093, 7, 21, 0, 0, 1093, 1094, 7, 9, 0, 0, 1094, 1095, 7, 19,
+		0, 0, 1095, 1096, 7, 21, 0, 0, 1096, 226, 1, 0, 0, 0, 1097, 1098, 7, 23, 0, 0, 1098, 1099, 7, 15, 0, 0, 1099, 1100,
+		7, 12, 0, 0, 1100, 1101, 7, 11, 0, 0, 1101, 1102, 7, 8, 0, 0, 1102, 228, 1, 0, 0, 0, 1103, 1104, 7, 24, 0, 0, 1104,
+		1105, 7, 2, 0, 0, 1105, 1106, 7, 11, 0, 0, 1106, 1107, 7, 8, 0, 0, 1107, 230, 1, 0, 0, 0, 1108, 1109, 7, 24, 0, 0,
+		1109, 1110, 7, 11, 0, 0, 1110, 1111, 7, 8, 0, 0, 1111, 1112, 7, 14, 0, 0, 1112, 232, 1, 0, 0, 0, 1113, 1114, 7, 24,
+		0, 0, 1114, 1115, 7, 14, 0, 0, 1115, 1116, 7, 6, 0, 0, 1116, 1117, 7, 12, 0, 0, 1117, 234, 1, 0, 0, 0, 1118, 1119,
+		7, 24, 0, 0, 1119, 1120, 7, 14, 0, 0, 1120, 1121, 7, 11, 0, 0, 1121, 1122, 7, 10, 0, 0, 1122, 1123, 7, 6, 0, 0,
+		1123, 236, 1, 0, 0, 0, 1124, 1125, 7, 22, 0, 0, 1125, 1126, 7, 12, 0, 0, 1126, 1127, 7, 19, 0, 0, 1127, 1128, 7, 9,
+		0, 0, 1128, 238, 1, 0, 0, 0, 1129, 1130, 7, 22, 0, 0, 1130, 1131, 7, 19, 0, 0, 1131, 1132, 7, 9, 0, 0, 1132, 240, 1,
+		0, 0, 0, 1133, 1134, 5, 61, 0, 0, 1134, 242, 1, 0, 0, 0, 1135, 1136, 5, 47, 0, 0, 1136, 1137, 5, 61, 0, 0, 1137,
+		244, 1, 0, 0, 0, 1138, 1139, 5, 60, 0, 0, 1139, 246, 1, 0, 0, 0, 1140, 1141, 5, 62, 0, 0, 1141, 248, 1, 0, 0, 0,
+		1142, 1143, 5, 62, 0, 0, 1143, 1144, 5, 61, 0, 0, 1144, 250, 1, 0, 0, 0, 1145, 1146, 5, 63, 0, 0, 1146, 1147, 5, 61,
+		0, 0, 1147, 252, 1, 0, 0, 0, 1148, 1149, 5, 63, 0, 0, 1149, 1150, 5, 47, 0, 0, 1150, 1151, 5, 61, 0, 0, 1151, 254,
+		1, 0, 0, 0, 1152, 1153, 5, 63, 0, 0, 1153, 1154, 5, 60, 0, 0, 1154, 256, 1, 0, 0, 0, 1155, 1156, 5, 63, 0, 0, 1156,
+		1157, 5, 60, 0, 0, 1157, 1158, 5, 61, 0, 0, 1158, 258, 1, 0, 0, 0, 1159, 1160, 5, 63, 0, 0, 1160, 1161, 5, 62, 0, 0,
+		1161, 260, 1, 0, 0, 0, 1162, 1163, 5, 63, 0, 0, 1163, 1164, 5, 62, 0, 0, 1164, 1165, 5, 61, 0, 0, 1165, 262, 1, 0,
+		0, 0, 1166, 1167, 5, 43, 0, 0, 1167, 264, 1, 0, 0, 0, 1168, 1169, 5, 45, 0, 0, 1169, 266, 1, 0, 0, 0, 1170, 1171, 5,
+		42, 0, 0, 1171, 268, 1, 0, 0, 0, 1172, 1173, 5, 47, 0, 0, 1173, 270, 1, 0, 0, 0, 1174, 1175, 5, 42, 0, 0, 1175,
+		1176, 5, 42, 0, 0, 1176, 272, 1, 0, 0, 0, 1177, 1178, 5, 38, 0, 0, 1178, 274, 1, 0, 0, 0, 1179, 1180, 5, 63, 0, 0,
+		1180, 1181, 5, 63, 0, 0, 1181, 276, 1, 0, 0, 0, 1182, 1183, 5, 61, 0, 0, 1183, 1184, 5, 62, 0, 0, 1184, 278, 1, 0,
+		0, 0, 1185, 1186, 5, 60, 0, 0, 1186, 1187, 5, 61, 0, 0, 1187, 280, 1, 0, 0, 0, 1188, 1189, 5, 58, 0, 0, 1189, 1190,
+		5, 61, 0, 0, 1190, 282, 1, 0, 0, 0, 1191, 1192, 5, 60, 0, 0, 1192, 1193, 5, 62, 0, 0, 1193, 284, 1, 0, 0, 0, 1194,
+		1195, 5, 40, 0, 0, 1195, 286, 1, 0, 0, 0, 1196, 1197, 5, 41, 0, 0, 1197, 288, 1, 0, 0, 0, 1198, 1199, 5, 91, 0, 0,
+		1199, 290, 1, 0, 0, 0, 1200, 1201, 5, 93, 0, 0, 1201, 292, 1, 0, 0, 0, 1202, 1203, 5, 60, 0, 0, 1203, 1204, 5, 60,
+		0, 0, 1204, 294, 1, 0, 0, 0, 1205, 1206, 5, 62, 0, 0, 1206, 1207, 5, 62, 0, 0, 1207, 296, 1, 0, 0, 0, 1208, 1209, 5,
+		58, 0, 0, 1209, 298, 1, 0, 0, 0, 1210, 1211, 5, 59, 0, 0, 1211, 300, 1, 0, 0, 0, 1212, 1213, 5, 44, 0, 0, 1213, 302,
+		1, 0, 0, 0, 1214, 1215, 5, 124, 0, 0, 1215, 304, 1, 0, 0, 0, 1216, 1217, 5, 46, 0, 0, 1217, 306, 1, 0, 0, 0, 1218,
+		1219, 5, 63, 0, 0, 1219, 308, 1, 0, 0, 0, 1220, 1221, 5, 64, 0, 0, 1221, 310, 1, 0, 0, 0, 1222, 1223, 5, 94, 0, 0,
+		1223, 312, 1, 0, 0, 0, 1224, 1225, 5, 39, 0, 0, 1225, 314, 1, 0, 0, 0, 1226, 1227, 5, 34, 0, 0, 1227, 316, 1, 0, 0,
+		0, 1228, 1229, 7, 27, 0, 0, 1229, 318, 1, 0, 0, 0, 1230, 1231, 7, 28, 0, 0, 1231, 320, 1, 0, 0, 0, 1232, 1233, 7,
+		29, 0, 0, 1233, 322, 1, 0, 0, 0, 1234, 1238, 7, 28, 0, 0, 1235, 1237, 7, 30, 0, 0, 1236, 1235, 1, 0, 0, 0, 1237,
+		1240, 1, 0, 0, 0, 1238, 1236, 1, 0, 0, 0, 1238, 1239, 1, 0, 0, 0, 1239, 324, 1, 0, 0, 0, 1240, 1238, 1, 0, 0, 0,
+		1241, 1246, 3, 321, 160, 0, 1242, 1245, 5, 95, 0, 0, 1243, 1245, 3, 321, 160, 0, 1244, 1242, 1, 0, 0, 0, 1244, 1243,
+		1, 0, 0, 0, 1245, 1248, 1, 0, 0, 0, 1246, 1244, 1, 0, 0, 0, 1246, 1247, 1, 0, 0, 0, 1247, 326, 1, 0, 0, 0, 1248,
+		1246, 1, 0, 0, 0, 1249, 1251, 7, 6, 0, 0, 1250, 1252, 7, 31, 0, 0, 1251, 1250, 1, 0, 0, 0, 1251, 1252, 1, 0, 0, 0,
+		1252, 1253, 1, 0, 0, 0, 1253, 1254, 3, 323, 161, 0, 1254, 328, 1, 0, 0, 0, 1255, 1256, 3, 323, 161, 0, 1256, 1257,
+		5, 46, 0, 0, 1257, 1259, 3, 323, 161, 0, 1258, 1260, 3, 327, 163, 0, 1259, 1258, 1, 0, 0, 0, 1259, 1260, 1, 0, 0, 0,
+		1260, 330, 1, 0, 0, 0, 1261, 1262, 3, 323, 161, 0, 1262, 1263, 5, 35, 0, 0, 1263, 1266, 3, 325, 162, 0, 1264, 1265,
+		5, 46, 0, 0, 1265, 1267, 3, 325, 162, 0, 1266, 1264, 1, 0, 0, 0, 1266, 1267, 1, 0, 0, 0, 1267, 1268, 1, 0, 0, 0,
+		1268, 1270, 5, 35, 0, 0, 1269, 1271, 3, 327, 163, 0, 1270, 1269, 1, 0, 0, 0, 1270, 1271, 1, 0, 0, 0, 1271, 332, 1,
+		0, 0, 0, 1272, 1276, 3, 323, 161, 0, 1273, 1276, 3, 329, 164, 0, 1274, 1276, 3, 331, 165, 0, 1275, 1272, 1, 0, 0, 0,
+		1275, 1273, 1, 0, 0, 0, 1275, 1274, 1, 0, 0, 0, 1276, 334, 1, 0, 0, 0, 1277, 1279, 3, 323, 161, 0, 1278, 1277, 1, 0,
+		0, 0, 1278, 1279, 1, 0, 0, 0, 1279, 1281, 1, 0, 0, 0, 1280, 1282, 7, 32, 0, 0, 1281, 1280, 1, 0, 0, 0, 1281, 1282,
+		1, 0, 0, 0, 1282, 1283, 1, 0, 0, 0, 1283, 1284, 7, 3, 0, 0, 1284, 1286, 5, 34, 0, 0, 1285, 1287, 7, 33, 0, 0, 1286,
+		1285, 1, 0, 0, 0, 1287, 1288, 1, 0, 0, 0, 1288, 1286, 1, 0, 0, 0, 1288, 1289, 1, 0, 0, 0, 1289, 1290, 1, 0, 0, 0,
+		1290, 1291, 5, 34, 0, 0, 1291, 336, 1, 0, 0, 0, 1292, 1294, 3, 323, 161, 0, 1293, 1292, 1, 0, 0, 0, 1293, 1294, 1,
+		0, 0, 0, 1294, 1296, 1, 0, 0, 0, 1295, 1297, 7, 32, 0, 0, 1296, 1295, 1, 0, 0, 0, 1296, 1297, 1, 0, 0, 0, 1297,
+		1298, 1, 0, 0, 0, 1298, 1299, 7, 19, 0, 0, 1299, 1301, 5, 34, 0, 0, 1300, 1302, 7, 34, 0, 0, 1301, 1300, 1, 0, 0, 0,
+		1302, 1303, 1, 0, 0, 0, 1303, 1301, 1, 0, 0, 0, 1303, 1304, 1, 0, 0, 0, 1304, 1305, 1, 0, 0, 0, 1305, 1306, 5, 34,
+		0, 0, 1306, 338, 1, 0, 0, 0, 1307, 1309, 3, 323, 161, 0, 1308, 1307, 1, 0, 0, 0, 1308, 1309, 1, 0, 0, 0, 1309, 1310,
+		1, 0, 0, 0, 1310, 1311, 7, 13, 0, 0, 1311, 1313, 5, 34, 0, 0, 1312, 1314, 7, 30, 0, 0, 1313, 1312, 1, 0, 0, 0, 1314,
+		1315, 1, 0, 0, 0, 1315, 1313, 1, 0, 0, 0, 1315, 1316, 1, 0, 0, 0, 1316, 1317, 1, 0, 0, 0, 1317, 1318, 5, 34, 0, 0,
+		1318, 340, 1, 0, 0, 0, 1319, 1321, 3, 323, 161, 0, 1320, 1319, 1, 0, 0, 0, 1320, 1321, 1, 0, 0, 0, 1321, 1323, 1, 0,
+		0, 0, 1322, 1324, 7, 32, 0, 0, 1323, 1322, 1, 0, 0, 0, 1323, 1324, 1, 0, 0, 0, 1324, 1325, 1, 0, 0, 0, 1325, 1326,
+		7, 22, 0, 0, 1326, 1328, 5, 34, 0, 0, 1327, 1329, 7, 35, 0, 0, 1328, 1327, 1, 0, 0, 0, 1329, 1330, 1, 0, 0, 0, 1330,
+		1328, 1, 0, 0, 0, 1330, 1331, 1, 0, 0, 0, 1331, 1332, 1, 0, 0, 0, 1332, 1333, 5, 34, 0, 0, 1333, 342, 1, 0, 0, 0,
+		1334, 1339, 3, 335, 167, 0, 1335, 1339, 3, 337, 168, 0, 1336, 1339, 3, 339, 169, 0, 1337, 1339, 3, 341, 170, 0,
+		1338, 1334, 1, 0, 0, 0, 1338, 1335, 1, 0, 0, 0, 1338, 1336, 1, 0, 0, 0, 1338, 1337, 1, 0, 0, 0, 1339, 344, 1, 0, 0,
+		0, 1340, 1341, 5, 39, 0, 0, 1341, 1342, 9, 0, 0, 0, 1342, 1343, 5, 39, 0, 0, 1343, 346, 1, 0, 0, 0, 1344, 1350, 5,
+		34, 0, 0, 1345, 1349, 8, 36, 0, 0, 1346, 1347, 5, 34, 0, 0, 1347, 1349, 5, 34, 0, 0, 1348, 1345, 1, 0, 0, 0, 1348,
+		1346, 1, 0, 0, 0, 1349, 1352, 1, 0, 0, 0, 1350, 1348, 1, 0, 0, 0, 1350, 1351, 1, 0, 0, 0, 1351, 1353, 1, 0, 0, 0,
+		1352, 1350, 1, 0, 0, 0, 1353, 1354, 5, 34, 0, 0, 1354, 348, 1, 0, 0, 0, 1355, 1362, 7, 27, 0, 0, 1356, 1358, 5, 95,
+		0, 0, 1357, 1356, 1, 0, 0, 0, 1357, 1358, 1, 0, 0, 0, 1358, 1359, 1, 0, 0, 0, 1359, 1361, 7, 29, 0, 0, 1360, 1357,
+		1, 0, 0, 0, 1361, 1364, 1, 0, 0, 0, 1362, 1360, 1, 0, 0, 0, 1362, 1363, 1, 0, 0, 0, 1363, 350, 1, 0, 0, 0, 1364,
+		1362, 1, 0, 0, 0, 1365, 1367, 5, 92, 0, 0, 1366, 1368, 9, 0, 0, 0, 1367, 1366, 1, 0, 0, 0, 1368, 1369, 1, 0, 0, 0,
+		1369, 1370, 1, 0, 0, 0, 1369, 1367, 1, 0, 0, 0, 1370, 1371, 1, 0, 0, 0, 1371, 1372, 5, 92, 0, 0, 1372, 352, 1, 0, 0,
+		0, 1373, 1376, 3, 349, 174, 0, 1374, 1376, 3, 351, 175, 0, 1375, 1373, 1, 0, 0, 0, 1375, 1374, 1, 0, 0, 0, 1376,
+		354, 1, 0, 0, 0, 36, 0, 358, 365, 375, 386, 398, 1238, 1244, 1246, 1251, 1259, 1266, 1270, 1275, 1278, 1281, 1286,
+		1288, 1293, 1296, 1301, 1303, 1308, 1313, 1315, 1320, 1323, 1328, 1330, 1338, 1348, 1350, 1357, 1362, 1369, 1375, 3,
+		0, 2, 0, 0, 3, 0, 0, 4, 0
+	)
+
+
+class VHDLLexer(Lexer):
+	atn = ATNDeserializer().deserialize(serializedATN())
+
+	decisionsToDFA = [DFA(ds, i) for i, ds in enumerate(atn.decisionToState)]
+
+	WHITESPACE_CHANNEL = 2
+	COMMENT_CHANNEL = 3
+	TOOLDIRECTIVE_CHANNEL = 4
+
+	LINEBREAK = 1
+	WHITESPACE = 2
+	COMMENT_LINE = 3
+	COMMENT_BLOCK = 4
+	TOOLDIRECTIVE = 5
+	OP_ABS = 6
+	KW_ACCESS = 7
+	KW_AFTER = 8
+	KW_ALIAS = 9
+	KW_ALL = 10
+	OP_AND = 11
+	KW_ARCHITECTURE = 12
+	KW_ARRAY = 13
+	KW_ASSERT = 14
+	KW_ATTRIBUTE = 15
+	KW_PSL_ASSUME = 16
+	KW_BEGIN = 17
+	KW_BLOCK = 18
+	KW_BODY = 19
+	KW_BUFFER = 20
+	KW_BUS = 21
+	KW_CASE = 22
+	KW_COMPONENT = 23
+	KW_CONFIGURATION = 24
+	KW_CONSTANT = 25
+	KW_CONTEXT = 26
+	KW_PSL_COVER = 27
+	KW_DEFAULT = 28
+	KW_DISCONNECT = 29
+	KW_DOWNTO = 30
+	KW_ELSE = 31
+	KW_ELSIF = 32
+	KW_END = 33
+	KW_ENTITY = 34
+	KW_EXIT = 35
+	KW_FILE = 36
+	KW_FOR = 37
+	KW_FORCE = 38
+	KW_FUNCTION = 39
+	KW_PSL_FAIRNESS = 40
+	KW_GENERATE = 41
+	KW_GENERIC = 42
+	KW_GUARDED = 43
+	KW_GROUP = 44
+	KW_IF = 45
+	KW_IMPURE = 46
+	KW_IN = 47
+	KW_INERTIAL = 48
+	KW_INOUT = 49
+	KW_IS = 50
+	KW_LABEL = 51
+	KW_LIBRARY = 52
+	KW_LINKAGE = 53
+	KW_LOOP = 54
+	KW_PSL_LITERAL = 55
+	KW_MAP = 56
+	OP_MOD = 57
+	OP_NAND = 58
+	KW_NEW = 59
+	KW_NEXT = 60
+	OP_NOR = 61
+	OP_NOT = 62
+	KW_NULL = 63
+	KW_OF = 64
+	KW_ON = 65
+	KW_OPEN = 66
+	OP_OR = 67
+	KW_OTHERS = 68
+	KW_OUT = 69
+	KW_PACKAGE = 70
+	KW_PARAMETER = 71
+	KW_PORT = 72
+	KW_POSTPONED = 73
+	KW_PRIVATE = 74
+	KW_PROCEDURE = 75
+	KW_PROCESS = 76
+	KW_PROTECTED = 77
+	KW_PURE = 78
+	KW_RANGE = 79
+	KW_RECORD = 80
+	KW_REGISTER = 81
+	KW_REJECT = 82
+	KW_RELEASE = 83
+	OP_REM = 84
+	KW_REPORT = 85
+	KW_RETURN = 86
+	OP_ROL = 87
+	OP_ROR = 88
+	KW_PSL_RESTRICT = 89
+	KW_SELECT = 90
+	KW_SEVERITY = 91
+	KW_SHARED = 92
+	KW_SIGNAL = 93
+	OP_SLA = 94
+	OP_SLL = 95
+	OP_SRA = 96
+	OP_SRL = 97
+	KW_SUBTYPE = 98
+	KW_PSL_STRONG = 99
+	KW_PSL_SEQUENCE = 100
+	KW_THEN = 101
+	KW_TO = 102
+	KW_TRANSPORT = 103
+	KW_TYPE = 104
+	KW_UNAFFECTED = 105
+	KW_UNITS = 106
+	KW_UNTIL = 107
+	KW_USE = 108
+	KW_VARIABLE = 109
+	KW_VIEW = 110
+	KW_PSL_VPKG = 111
+	KW_PSL_VMODE = 112
+	KW_PSL_VPROP = 113
+	KW_PSL_VUNIT = 114
+	KW_WAIT = 115
+	KW_WITH = 116
+	KW_WHEN = 117
+	KW_WHILE = 118
+	OP_XNOR = 119
+	OP_XOR = 120
+	OP_EQ = 121
+	OP_NE = 122
+	OP_LT = 123
+	OP_GT = 124
+	OP_GE = 125
+	OP_IEQ = 126
+	OP_INE = 127
+	OP_ILT = 128
+	OP_ILE = 129
+	OP_IGT = 130
+	OP_IGE = 131
+	OP_PLUS = 132
+	OP_MINUS = 133
+	OP_MUL = 134
+	OP_DIV = 135
+	OP_POW = 136
+	OP_CONCAT = 137
+	OP_CONDITION = 138
+	TOK_RARROW = 139
+	TOK_SIG_ASSIGN = 140
+	TOK_VAR_ASSIGN = 141
+	TOK_BOX = 142
+	TOK_LP = 143
+	TOK_RP = 144
+	TOK_LB = 145
+	TOK_RB = 146
+	TOK_DLA = 147
+	TOK_DRA = 148
+	TOK_COLON = 149
+	TOK_SEMICOL = 150
+	TOK_COMMA = 151
+	TOK_BAR = 152
+	TOK_DOT = 153
+	TOK_QUESTION = 154
+	TOK_AT = 155
+	TOK_CIRCUMFLEX = 156
+	TOK_TICK = 157
+	TOK_DQUOTE = 158
+	LIT_ABSTRACT = 159
+	LIT_BIT_STRING = 160
+	LIT_CHARACTER = 161
+	LIT_STRING = 162
+	LIT_IDENTIFIER = 163
+
+	channelNames = ("DEFAULT_TOKEN_CHANNEL", "HIDDEN", "WHITESPACE_CHANNEL", "COMMENT_CHANNEL", "TOOLDIRECTIVE_CHANNEL")
+
+	modeNames = ("DEFAULT_MODE",)
+
+	literalNames = (
+		"<INVALID>", "'abs'", "'access'", "'after'", "'alias'", "'all'", "'and'", "'architecture'", "'array'", "'assert'",
+		"'attribute'", "'assume'", "'begin'", "'block'", "'body'", "'buffer'", "'bus'", "'case'", "'component'",
+		"'configuration'", "'constant'", "'context'", "'cover'", "'default'", "'disconnect'", "'downto'", "'else'",
+		"'elsif'", "'end'", "'entity'", "'exit'", "'file'", "'for'", "'force'", "'function'", "'fairness'", "'generate'",
+		"'generic'", "'guarded'", "'group'", "'if'", "'impure'", "'in'", "'inertial'", "'inout'", "'is'", "'label'",
+		"'library'", "'linkage'", "'loop'", "'literal'", "'map'", "'mod'", "'nand'", "'new'", "'next'", "'nor'", "'not'",
+		"'null'", "'of'", "'on'", "'open'", "'or'", "'others'", "'out'", "'package'", "'parameter'", "'port'",
+		"'postponed'", "'private'", "'procedure'", "'process'", "'protected'", "'pure'", "'range'", "'record'",
+		"'register'", "'reject'", "'release'", "'rem'", "'report'", "'return'", "'rol'", "'ror'", "'restrict'", "'select'",
+		"'severity'", "'shared'", "'signal'", "'sla'", "'sll'", "'sra'", "'srl'", "'subtype'", "'strong'", "'sequence'",
+		"'then'", "'to'", "'transport'", "'type'", "'unaffected'", "'units'", "'until'", "'use'", "'variable'", "'view'",
+		"'vpkg'", "'vmode'", "'vprop'", "'vunit'", "'wait'", "'with'", "'when'", "'while'", "'xnor'", "'xor'", "'='",
+		"'/='", "'<'", "'>'", "'>='", "'?='", "'?/='", "'?<'", "'?<='", "'?>'", "'?>='", "'+'", "'-'", "'*'", "'/'", "'**'",
+		"'&'", "'??'", "'=>'", "'<='", "':='", "'<>'", "'('", "')'", "'['", "']'", "'<<'", "'>>'", "':'", "';'", "','",
+		"'|'", "'.'", "'?'", "'@'", "'^'", "'''", "'\"'"
+	)
+
+	symbolicNames = (
+		"<INVALID>", "LINEBREAK", "WHITESPACE", "COMMENT_LINE", "COMMENT_BLOCK", "TOOLDIRECTIVE", "OP_ABS", "KW_ACCESS",
+		"KW_AFTER", "KW_ALIAS", "KW_ALL", "OP_AND", "KW_ARCHITECTURE", "KW_ARRAY", "KW_ASSERT", "KW_ATTRIBUTE",
+		"KW_PSL_ASSUME", "KW_BEGIN", "KW_BLOCK", "KW_BODY", "KW_BUFFER", "KW_BUS", "KW_CASE", "KW_COMPONENT",
+		"KW_CONFIGURATION", "KW_CONSTANT", "KW_CONTEXT", "KW_PSL_COVER", "KW_DEFAULT", "KW_DISCONNECT", "KW_DOWNTO",
+		"KW_ELSE", "KW_ELSIF", "KW_END", "KW_ENTITY", "KW_EXIT", "KW_FILE", "KW_FOR", "KW_FORCE", "KW_FUNCTION",
+		"KW_PSL_FAIRNESS", "KW_GENERATE", "KW_GENERIC", "KW_GUARDED", "KW_GROUP", "KW_IF", "KW_IMPURE", "KW_IN",
+		"KW_INERTIAL", "KW_INOUT", "KW_IS", "KW_LABEL", "KW_LIBRARY", "KW_LINKAGE", "KW_LOOP", "KW_PSL_LITERAL", "KW_MAP",
+		"OP_MOD", "OP_NAND", "KW_NEW", "KW_NEXT", "OP_NOR", "OP_NOT", "KW_NULL", "KW_OF", "KW_ON", "KW_OPEN", "OP_OR",
+		"KW_OTHERS", "KW_OUT", "KW_PACKAGE", "KW_PARAMETER", "KW_PORT", "KW_POSTPONED", "KW_PRIVATE", "KW_PROCEDURE",
+		"KW_PROCESS", "KW_PROTECTED", "KW_PURE", "KW_RANGE", "KW_RECORD", "KW_REGISTER", "KW_REJECT", "KW_RELEASE",
+		"OP_REM", "KW_REPORT", "KW_RETURN", "OP_ROL", "OP_ROR", "KW_PSL_RESTRICT", "KW_SELECT", "KW_SEVERITY", "KW_SHARED",
+		"KW_SIGNAL", "OP_SLA", "OP_SLL", "OP_SRA", "OP_SRL", "KW_SUBTYPE", "KW_PSL_STRONG", "KW_PSL_SEQUENCE", "KW_THEN",
+		"KW_TO", "KW_TRANSPORT", "KW_TYPE", "KW_UNAFFECTED", "KW_UNITS", "KW_UNTIL", "KW_USE", "KW_VARIABLE", "KW_VIEW",
+		"KW_PSL_VPKG", "KW_PSL_VMODE", "KW_PSL_VPROP", "KW_PSL_VUNIT", "KW_WAIT", "KW_WITH", "KW_WHEN", "KW_WHILE",
+		"OP_XNOR", "OP_XOR", "OP_EQ", "OP_NE", "OP_LT", "OP_GT", "OP_GE", "OP_IEQ", "OP_INE", "OP_ILT", "OP_ILE", "OP_IGT",
+		"OP_IGE", "OP_PLUS", "OP_MINUS", "OP_MUL", "OP_DIV", "OP_POW", "OP_CONCAT", "OP_CONDITION", "TOK_RARROW",
+		"TOK_SIG_ASSIGN", "TOK_VAR_ASSIGN", "TOK_BOX", "TOK_LP", "TOK_RP", "TOK_LB", "TOK_RB", "TOK_DLA", "TOK_DRA",
+		"TOK_COLON", "TOK_SEMICOL", "TOK_COMMA", "TOK_BAR", "TOK_DOT", "TOK_QUESTION", "TOK_AT", "TOK_CIRCUMFLEX",
+		"TOK_TICK", "TOK_DQUOTE", "LIT_ABSTRACT", "LIT_BIT_STRING", "LIT_CHARACTER", "LIT_STRING", "LIT_IDENTIFIER"
+	)
+
+	ruleNames = (
+		"LINEBREAK", "WHITESPACE", "COMMENT_LINE", "COMMENT_BLOCK", "TOOLDIRECTIVE", "OP_ABS", "KW_ACCESS", "KW_AFTER",
+		"KW_ALIAS", "KW_ALL", "OP_AND", "KW_ARCHITECTURE", "KW_ARRAY", "KW_ASSERT", "KW_ATTRIBUTE", "KW_PSL_ASSUME",
+		"KW_BEGIN", "KW_BLOCK", "KW_BODY", "KW_BUFFER", "KW_BUS", "KW_CASE", "KW_COMPONENT", "KW_CONFIGURATION",
+		"KW_CONSTANT", "KW_CONTEXT", "KW_PSL_COVER", "KW_DEFAULT", "KW_DISCONNECT", "KW_DOWNTO", "KW_ELSE", "KW_ELSIF",
+		"KW_END", "KW_ENTITY", "KW_EXIT", "KW_FILE", "KW_FOR", "KW_FORCE", "KW_FUNCTION", "KW_PSL_FAIRNESS", "KW_GENERATE",
+		"KW_GENERIC", "KW_GUARDED", "KW_GROUP", "KW_IF", "KW_IMPURE", "KW_IN", "KW_INERTIAL", "KW_INOUT", "KW_IS",
+		"KW_LABEL", "KW_LIBRARY", "KW_LINKAGE", "KW_LOOP", "KW_PSL_LITERAL", "KW_MAP", "OP_MOD", "OP_NAND", "KW_NEW",
+		"KW_NEXT", "OP_NOR", "OP_NOT", "KW_NULL", "KW_OF", "KW_ON", "KW_OPEN", "OP_OR", "KW_OTHERS", "KW_OUT", "KW_PACKAGE",
+		"KW_PARAMETER", "KW_PORT", "KW_POSTPONED", "KW_PRIVATE", "KW_PROCEDURE", "KW_PROCESS", "KW_PROTECTED", "KW_PURE",
+		"KW_RANGE", "KW_RECORD", "KW_REGISTER", "KW_REJECT", "KW_RELEASE", "OP_REM", "KW_REPORT", "KW_RETURN", "OP_ROL",
+		"OP_ROR", "KW_PSL_RESTRICT", "KW_SELECT", "KW_SEVERITY", "KW_SHARED", "KW_SIGNAL", "OP_SLA", "OP_SLL", "OP_SRA",
+		"OP_SRL", "KW_SUBTYPE", "KW_PSL_STRONG", "KW_PSL_SEQUENCE", "KW_THEN", "KW_TO", "KW_TRANSPORT", "KW_TYPE",
+		"KW_UNAFFECTED", "KW_UNITS", "KW_UNTIL", "KW_USE", "KW_VARIABLE", "KW_VIEW", "KW_PSL_VPKG", "KW_PSL_VMODE",
+		"KW_PSL_VPROP", "KW_PSL_VUNIT", "KW_WAIT", "KW_WITH", "KW_WHEN", "KW_WHILE", "OP_XNOR", "OP_XOR", "OP_EQ", "OP_NE",
+		"OP_LT", "OP_GT", "OP_GE", "OP_IEQ", "OP_INE", "OP_ILT", "OP_ILE", "OP_IGT", "OP_IGE", "OP_PLUS", "OP_MINUS",
+		"OP_MUL", "OP_DIV", "OP_POW", "OP_CONCAT", "OP_CONDITION", "TOK_RARROW", "TOK_SIG_ASSIGN", "TOK_VAR_ASSIGN",
+		"TOK_BOX", "TOK_LP", "TOK_RP", "TOK_LB", "TOK_RB", "TOK_DLA", "TOK_DRA", "TOK_COLON", "TOK_SEMICOL", "TOK_COMMA",
+		"TOK_BAR", "TOK_DOT", "TOK_QUESTION", "TOK_AT", "TOK_CIRCUMFLEX", "TOK_TICK", "TOK_DQUOTE", "Letter", "Digit",
+		"ExtendedDigit", "Integer", "BasedInteger", "Exponent", "Real", "BaseLiteral", "LIT_ABSTRACT", "BinaryBitString",
+		"OctalBitString", "DecimalBitString", "HexBitString", "LIT_BIT_STRING", "LIT_CHARACTER", "LIT_STRING",
+		"BasicIdentifier", "ExtendedIdentifier", "LIT_IDENTIFIER"
+	)
+
+	grammarFileName = "VHDLLexer.g4"
+
+	def __init__(self, input=None, output: TextIO = stdout):
+		super().__init__(input, output)
+		self.checkVersion("4.12.0")
+		self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache())
+		self._actions = None
+		self._predicates = None
+
+ + diff --git a/typing/html/pyVHDLParser/ANTLR4/VHDLParser.py.html b/typing/html/pyVHDLParser/ANTLR4/VHDLParser.py.html new file mode 100644 index 000000000..863a85bec --- /dev/null +++ b/typing/html/pyVHDLParser/ANTLR4/VHDLParser.py.html @@ -0,0 +1,57032 @@ + + + + + + +

pyVHDLParser.ANTLR4.VHDLParser

+ + + + + + +
pyVHDLParser/ANTLR4/VHDLParser.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+380
+381
+382
+383
+384
+385
+386
+387
+388
+389
+390
+391
+392
+393
+394
+395
+396
+397
+398
+399
+400
+401
+402
+403
+404
+405
+406
+407
+408
+409
+410
+411
+412
+413
+414
+415
+416
+417
+418
+419
+420
+421
+422
+423
+424
+425
+426
+427
+428
+429
+430
+431
+432
+433
+434
+435
+436
+437
+438
+439
+440
+441
+442
+443
+444
+445
+446
+447
+448
+449
+450
+451
+452
+453
+454
+455
+456
+457
+458
+459
+460
+461
+462
+463
+464
+465
+466
+467
+468
+469
+470
+471
+472
+473
+474
+475
+476
+477
+478
+479
+480
+481
+482
+483
+484
+485
+486
+487
+488
+489
+490
+491
+492
+493
+494
+495
+496
+497
+498
+499
+500
+501
+502
+503
+504
+505
+506
+507
+508
+509
+510
+511
+512
+513
+514
+515
+516
+517
+518
+519
+520
+521
+522
+523
+524
+525
+526
+527
+528
+529
+530
+531
+532
+533
+534
+535
+536
+537
+538
+539
+540
+541
+542
+543
+544
+545
+546
+547
+548
+549
+550
+551
+552
+553
+554
+555
+556
+557
+558
+559
+560
+561
+562
+563
+564
+565
+566
+567
+568
+569
+570
+571
+572
+573
+574
+575
+576
+577
+578
+579
+580
+581
+582
+583
+584
+585
+586
+587
+588
+589
+590
+591
+592
+593
+594
+595
+596
+597
+598
+599
+600
+601
+602
+603
+604
+605
+606
+607
+608
+609
+610
+611
+612
+613
+614
+615
+616
+617
+618
+619
+620
+621
+622
+623
+624
+625
+626
+627
+628
+629
+630
+631
+632
+633
+634
+635
+636
+637
+638
+639
+640
+641
+642
+643
+644
+645
+646
+647
+648
+649
+650
+651
+652
+653
+654
+655
+656
+657
+658
+659
+660
+661
+662
+663
+664
+665
+666
+667
+668
+669
+670
+671
+672
+673
+674
+675
+676
+677
+678
+679
+680
+681
+682
+683
+684
+685
+686
+687
+688
+689
+690
+691
+692
+693
+694
+695
+696
+697
+698
+699
+700
+701
+702
+703
+704
+705
+706
+707
+708
+709
+710
+711
+712
+713
+714
+715
+716
+717
+718
+719
+720
+721
+722
+723
+724
+725
+726
+727
+728
+729
+730
+731
+732
+733
+734
+735
+736
+737
+738
+739
+740
+741
+742
+743
+744
+745
+746
+747
+748
+749
+750
+751
+752
+753
+754
+755
+756
+757
+758
+759
+760
+761
+762
+763
+764
+765
+766
+767
+768
+769
+770
+771
+772
+773
+774
+775
+776
+777
+778
+779
+780
+781
+782
+783
+784
+785
+786
+787
+788
+789
+790
+791
+792
+793
+794
+795
+796
+797
+798
+799
+800
+801
+802
+803
+804
+805
+806
+807
+808
+809
+810
+811
+812
+813
+814
+815
+816
+817
+818
+819
+820
+821
+822
+823
+824
+825
+826
+827
+828
+829
+830
+831
+832
+833
+834
+835
+836
+837
+838
+839
+840
+841
+842
+843
+844
+845
+846
+847
+848
+849
+850
+851
+852
+853
+854
+855
+856
+857
+858
+859
+860
+861
+862
+863
+864
+865
+866
+867
+868
+869
+870
+871
+872
+873
+874
+875
+876
+877
+878
+879
+880
+881
+882
+883
+884
+885
+886
+887
+888
+889
+890
+891
+892
+893
+894
+895
+896
+897
+898
+899
+900
+901
+902
+903
+904
+905
+906
+907
+908
+909
+910
+911
+912
+913
+914
+915
+916
+917
+918
+919
+920
+921
+922
+923
+924
+925
+926
+927
+928
+929
+930
+931
+932
+933
+934
+935
+936
+937
+938
+939
+940
+941
+942
+943
+944
+945
+946
+947
+948
+949
+950
+951
+952
+953
+954
+955
+956
+957
+958
+959
+960
+961
+962
+963
+964
+965
+966
+967
+968
+969
+970
+971
+972
+973
+974
+975
+976
+977
+978
+979
+980
+981
+982
+983
+984
+985
+986
+987
+988
+989
+990
+991
+992
+993
+994
+995
+996
+997
+998
+999
+1000
+1001
+1002
+1003
+1004
+1005
+1006
+1007
+1008
+1009
+1010
+1011
+1012
+1013
+1014
+1015
+1016
+1017
+1018
+1019
+1020
+1021
+1022
+1023
+1024
+1025
+1026
+1027
+1028
+1029
+1030
+1031
+1032
+1033
+1034
+1035
+1036
+1037
+1038
+1039
+1040
+1041
+1042
+1043
+1044
+1045
+1046
+1047
+1048
+1049
+1050
+1051
+1052
+1053
+1054
+1055
+1056
+1057
+1058
+1059
+1060
+1061
+1062
+1063
+1064
+1065
+1066
+1067
+1068
+1069
+1070
+1071
+1072
+1073
+1074
+1075
+1076
+1077
+1078
+1079
+1080
+1081
+1082
+1083
+1084
+1085
+1086
+1087
+1088
+1089
+1090
+1091
+1092
+1093
+1094
+1095
+1096
+1097
+1098
+1099
+1100
+1101
+1102
+1103
+1104
+1105
+1106
+1107
+1108
+1109
+1110
+1111
+1112
+1113
+1114
+1115
+1116
+1117
+1118
+1119
+1120
+1121
+1122
+1123
+1124
+1125
+1126
+1127
+1128
+1129
+1130
+1131
+1132
+1133
+1134
+1135
+1136
+1137
+1138
+1139
+1140
+1141
+1142
+1143
+1144
+1145
+1146
+1147
+1148
+1149
+1150
+1151
+1152
+1153
+1154
+1155
+1156
+1157
+1158
+1159
+1160
+1161
+1162
+1163
+1164
+1165
+1166
+1167
+1168
+1169
+1170
+1171
+1172
+1173
+1174
+1175
+1176
+1177
+1178
+1179
+1180
+1181
+1182
+1183
+1184
+1185
+1186
+1187
+1188
+1189
+1190
+1191
+1192
+1193
+1194
+1195
+1196
+1197
+1198
+1199
+1200
+1201
+1202
+1203
+1204
+1205
+1206
+1207
+1208
+1209
+1210
+1211
+1212
+1213
+1214
+1215
+1216
+1217
+1218
+1219
+1220
+1221
+1222
+1223
+1224
+1225
+1226
+1227
+1228
+1229
+1230
+1231
+1232
+1233
+1234
+1235
+1236
+1237
+1238
+1239
+1240
+1241
+1242
+1243
+1244
+1245
+1246
+1247
+1248
+1249
+1250
+1251
+1252
+1253
+1254
+1255
+1256
+1257
+1258
+1259
+1260
+1261
+1262
+1263
+1264
+1265
+1266
+1267
+1268
+1269
+1270
+1271
+1272
+1273
+1274
+1275
+1276
+1277
+1278
+1279
+1280
+1281
+1282
+1283
+1284
+1285
+1286
+1287
+1288
+1289
+1290
+1291
+1292
+1293
+1294
+1295
+1296
+1297
+1298
+1299
+1300
+1301
+1302
+1303
+1304
+1305
+1306
+1307
+1308
+1309
+1310
+1311
+1312
+1313
+1314
+1315
+1316
+1317
+1318
+1319
+1320
+1321
+1322
+1323
+1324
+1325
+1326
+1327
+1328
+1329
+1330
+1331
+1332
+1333
+1334
+1335
+1336
+1337
+1338
+1339
+1340
+1341
+1342
+1343
+1344
+1345
+1346
+1347
+1348
+1349
+1350
+1351
+1352
+1353
+1354
+1355
+1356
+1357
+1358
+1359
+1360
+1361
+1362
+1363
+1364
+1365
+1366
+1367
+1368
+1369
+1370
+1371
+1372
+1373
+1374
+1375
+1376
+1377
+1378
+1379
+1380
+1381
+1382
+1383
+1384
+1385
+1386
+1387
+1388
+1389
+1390
+1391
+1392
+1393
+1394
+1395
+1396
+1397
+1398
+1399
+1400
+1401
+1402
+1403
+1404
+1405
+1406
+1407
+1408
+1409
+1410
+1411
+1412
+1413
+1414
+1415
+1416
+1417
+1418
+1419
+1420
+1421
+1422
+1423
+1424
+1425
+1426
+1427
+1428
+1429
+1430
+1431
+1432
+1433
+1434
+1435
+1436
+1437
+1438
+1439
+1440
+1441
+1442
+1443
+1444
+1445
+1446
+1447
+1448
+1449
+1450
+1451
+1452
+1453
+1454
+1455
+1456
+1457
+1458
+1459
+1460
+1461
+1462
+1463
+1464
+1465
+1466
+1467
+1468
+1469
+1470
+1471
+1472
+1473
+1474
+1475
+1476
+1477
+1478
+1479
+1480
+1481
+1482
+1483
+1484
+1485
+1486
+1487
+1488
+1489
+1490
+1491
+1492
+1493
+1494
+1495
+1496
+1497
+1498
+1499
+1500
+1501
+1502
+1503
+1504
+1505
+1506
+1507
+1508
+1509
+1510
+1511
+1512
+1513
+1514
+1515
+1516
+1517
+1518
+1519
+1520
+1521
+1522
+1523
+1524
+1525
+1526
+1527
+1528
+1529
+1530
+1531
+1532
+1533
+1534
+1535
+1536
+1537
+1538
+1539
+1540
+1541
+1542
+1543
+1544
+1545
+1546
+1547
+1548
+1549
+1550
+1551
+1552
+1553
+1554
+1555
+1556
+1557
+1558
+1559
+1560
+1561
+1562
+1563
+1564
+1565
+1566
+1567
+1568
+1569
+1570
+1571
+1572
+1573
+1574
+1575
+1576
+1577
+1578
+1579
+1580
+1581
+1582
+1583
+1584
+1585
+1586
+1587
+1588
+1589
+1590
+1591
+1592
+1593
+1594
+1595
+1596
+1597
+1598
+1599
+1600
+1601
+1602
+1603
+1604
+1605
+1606
+1607
+1608
+1609
+1610
+1611
+1612
+1613
+1614
+1615
+1616
+1617
+1618
+1619
+1620
+1621
+1622
+1623
+1624
+1625
+1626
+1627
+1628
+1629
+1630
+1631
+1632
+1633
+1634
+1635
+1636
+1637
+1638
+1639
+1640
+1641
+1642
+1643
+1644
+1645
+1646
+1647
+1648
+1649
+1650
+1651
+1652
+1653
+1654
+1655
+1656
+1657
+1658
+1659
+1660
+1661
+1662
+1663
+1664
+1665
+1666
+1667
+1668
+1669
+1670
+1671
+1672
+1673
+1674
+1675
+1676
+1677
+1678
+1679
+1680
+1681
+1682
+1683
+1684
+1685
+1686
+1687
+1688
+1689
+1690
+1691
+1692
+1693
+1694
+1695
+1696
+1697
+1698
+1699
+1700
+1701
+1702
+1703
+1704
+1705
+1706
+1707
+1708
+1709
+1710
+1711
+1712
+1713
+1714
+1715
+1716
+1717
+1718
+1719
+1720
+1721
+1722
+1723
+1724
+1725
+1726
+1727
+1728
+1729
+1730
+1731
+1732
+1733
+1734
+1735
+1736
+1737
+1738
+1739
+1740
+1741
+1742
+1743
+1744
+1745
+1746
+1747
+1748
+1749
+1750
+1751
+1752
+1753
+1754
+1755
+1756
+1757
+1758
+1759
+1760
+1761
+1762
+1763
+1764
+1765
+1766
+1767
+1768
+1769
+1770
+1771
+1772
+1773
+1774
+1775
+1776
+1777
+1778
+1779
+1780
+1781
+1782
+1783
+1784
+1785
+1786
+1787
+1788
+1789
+1790
+1791
+1792
+1793
+1794
+1795
+1796
+1797
+1798
+1799
+1800
+1801
+1802
+1803
+1804
+1805
+1806
+1807
+1808
+1809
+1810
+1811
+1812
+1813
+1814
+1815
+1816
+1817
+1818
+1819
+1820
+1821
+1822
+1823
+1824
+1825
+1826
+1827
+1828
+1829
+1830
+1831
+1832
+1833
+1834
+1835
+1836
+1837
+1838
+1839
+1840
+1841
+1842
+1843
+1844
+1845
+1846
+1847
+1848
+1849
+1850
+1851
+1852
+1853
+1854
+1855
+1856
+1857
+1858
+1859
+1860
+1861
+1862
+1863
+1864
+1865
+1866
+1867
+1868
+1869
+1870
+1871
+1872
+1873
+1874
+1875
+1876
+1877
+1878
+1879
+1880
+1881
+1882
+1883
+1884
+1885
+1886
+1887
+1888
+1889
+1890
+1891
+1892
+1893
+1894
+1895
+1896
+1897
+1898
+1899
+1900
+1901
+1902
+1903
+1904
+1905
+1906
+1907
+1908
+1909
+1910
+1911
+1912
+1913
+1914
+1915
+1916
+1917
+1918
+1919
+1920
+1921
+1922
+1923
+1924
+1925
+1926
+1927
+1928
+1929
+1930
+1931
+1932
+1933
+1934
+1935
+1936
+1937
+1938
+1939
+1940
+1941
+1942
+1943
+1944
+1945
+1946
+1947
+1948
+1949
+1950
+1951
+1952
+1953
+1954
+1955
+1956
+1957
+1958
+1959
+1960
+1961
+1962
+1963
+1964
+1965
+1966
+1967
+1968
+1969
+1970
+1971
+1972
+1973
+1974
+1975
+1976
+1977
+1978
+1979
+1980
+1981
+1982
+1983
+1984
+1985
+1986
+1987
+1988
+1989
+1990
+1991
+1992
+1993
+1994
+1995
+1996
+1997
+1998
+1999
+2000
+2001
+2002
+2003
+2004
+2005
+2006
+2007
+2008
+2009
+2010
+2011
+2012
+2013
+2014
+2015
+2016
+2017
+2018
+2019
+2020
+2021
+2022
+2023
+2024
+2025
+2026
+2027
+2028
+2029
+2030
+2031
+2032
+2033
+2034
+2035
+2036
+2037
+2038
+2039
+2040
+2041
+2042
+2043
+2044
+2045
+2046
+2047
+2048
+2049
+2050
+2051
+2052
+2053
+2054
+2055
+2056
+2057
+2058
+2059
+2060
+2061
+2062
+2063
+2064
+2065
+2066
+2067
+2068
+2069
+2070
+2071
+2072
+2073
+2074
+2075
+2076
+2077
+2078
+2079
+2080
+2081
+2082
+2083
+2084
+2085
+2086
+2087
+2088
+2089
+2090
+2091
+2092
+2093
+2094
+2095
+2096
+2097
+2098
+2099
+2100
+2101
+2102
+2103
+2104
+2105
+2106
+2107
+2108
+2109
+2110
+2111
+2112
+2113
+2114
+2115
+2116
+2117
+2118
+2119
+2120
+2121
+2122
+2123
+2124
+2125
+2126
+2127
+2128
+2129
+2130
+2131
+2132
+2133
+2134
+2135
+2136
+2137
+2138
+2139
+2140
+2141
+2142
+2143
+2144
+2145
+2146
+2147
+2148
+2149
+2150
+2151
+2152
+2153
+2154
+2155
+2156
+2157
+2158
+2159
+2160
+2161
+2162
+2163
+2164
+2165
+2166
+2167
+2168
+2169
+2170
+2171
+2172
+2173
+2174
+2175
+2176
+2177
+2178
+2179
+2180
+2181
+2182
+2183
+2184
+2185
+2186
+2187
+2188
+2189
+2190
+2191
+2192
+2193
+2194
+2195
+2196
+2197
+2198
+2199
+2200
+2201
+2202
+2203
+2204
+2205
+2206
+2207
+2208
+2209
+2210
+2211
+2212
+2213
+2214
+2215
+2216
+2217
+2218
+2219
+2220
+2221
+2222
+2223
+2224
+2225
+2226
+2227
+2228
+2229
+2230
+2231
+2232
+2233
+2234
+2235
+2236
+2237
+2238
+2239
+2240
+2241
+2242
+2243
+2244
+2245
+2246
+2247
+2248
+2249
+2250
+2251
+2252
+2253
+2254
+2255
+2256
+2257
+2258
+2259
+2260
+2261
+2262
+2263
+2264
+2265
+2266
+2267
+2268
+2269
+2270
+2271
+2272
+2273
+2274
+2275
+2276
+2277
+2278
+2279
+2280
+2281
+2282
+2283
+2284
+2285
+2286
+2287
+2288
+2289
+2290
+2291
+2292
+2293
+2294
+2295
+2296
+2297
+2298
+2299
+2300
+2301
+2302
+2303
+2304
+2305
+2306
+2307
+2308
+2309
+2310
+2311
+2312
+2313
+2314
+2315
+2316
+2317
+2318
+2319
+2320
+2321
+2322
+2323
+2324
+2325
+2326
+2327
+2328
+2329
+2330
+2331
+2332
+2333
+2334
+2335
+2336
+2337
+2338
+2339
+2340
+2341
+2342
+2343
+2344
+2345
+2346
+2347
+2348
+2349
+2350
+2351
+2352
+2353
+2354
+2355
+2356
+2357
+2358
+2359
+2360
+2361
+2362
+2363
+2364
+2365
+2366
+2367
+2368
+2369
+2370
+2371
+2372
+2373
+2374
+2375
+2376
+2377
+2378
+2379
+2380
+2381
+2382
+2383
+2384
+2385
+2386
+2387
+2388
+2389
+2390
+2391
+2392
+2393
+2394
+2395
+2396
+2397
+2398
+2399
+2400
+2401
+2402
+2403
+2404
+2405
+2406
+2407
+2408
+2409
+2410
+2411
+2412
+2413
+2414
+2415
+2416
+2417
+2418
+2419
+2420
+2421
+2422
+2423
+2424
+2425
+2426
+2427
+2428
+2429
+2430
+2431
+2432
+2433
+2434
+2435
+2436
+2437
+2438
+2439
+2440
+2441
+2442
+2443
+2444
+2445
+2446
+2447
+2448
+2449
+2450
+2451
+2452
+2453
+2454
+2455
+2456
+2457
+2458
+2459
+2460
+2461
+2462
+2463
+2464
+2465
+2466
+2467
+2468
+2469
+2470
+2471
+2472
+2473
+2474
+2475
+2476
+2477
+2478
+2479
+2480
+2481
+2482
+2483
+2484
+2485
+2486
+2487
+2488
+2489
+2490
+2491
+2492
+2493
+2494
+2495
+2496
+2497
+2498
+2499
+2500
+2501
+2502
+2503
+2504
+2505
+2506
+2507
+2508
+2509
+2510
+2511
+2512
+2513
+2514
+2515
+2516
+2517
+2518
+2519
+2520
+2521
+2522
+2523
+2524
+2525
+2526
+2527
+2528
+2529
+2530
+2531
+2532
+2533
+2534
+2535
+2536
+2537
+2538
+2539
+2540
+2541
+2542
+2543
+2544
+2545
+2546
+2547
+2548
+2549
+2550
+2551
+2552
+2553
+2554
+2555
+2556
+2557
+2558
+2559
+2560
+2561
+2562
+2563
+2564
+2565
+2566
+2567
+2568
+2569
+2570
+2571
+2572
+2573
+2574
+2575
+2576
+2577
+2578
+2579
+2580
+2581
+2582
+2583
+2584
+2585
+2586
+2587
+2588
+2589
+2590
+2591
+2592
+2593
+2594
+2595
+2596
+2597
+2598
+2599
+2600
+2601
+2602
+2603
+2604
+2605
+2606
+2607
+2608
+2609
+2610
+2611
+2612
+2613
+2614
+2615
+2616
+2617
+2618
+2619
+2620
+2621
+2622
+2623
+2624
+2625
+2626
+2627
+2628
+2629
+2630
+2631
+2632
+2633
+2634
+2635
+2636
+2637
+2638
+2639
+2640
+2641
+2642
+2643
+2644
+2645
+2646
+2647
+2648
+2649
+2650
+2651
+2652
+2653
+2654
+2655
+2656
+2657
+2658
+2659
+2660
+2661
+2662
+2663
+2664
+2665
+2666
+2667
+2668
+2669
+2670
+2671
+2672
+2673
+2674
+2675
+2676
+2677
+2678
+2679
+2680
+2681
+2682
+2683
+2684
+2685
+2686
+2687
+2688
+2689
+2690
+2691
+2692
+2693
+2694
+2695
+2696
+2697
+2698
+2699
+2700
+2701
+2702
+2703
+2704
+2705
+2706
+2707
+2708
+2709
+2710
+2711
+2712
+2713
+2714
+2715
+2716
+2717
+2718
+2719
+2720
+2721
+2722
+2723
+2724
+2725
+2726
+2727
+2728
+2729
+2730
+2731
+2732
+2733
+2734
+2735
+2736
+2737
+2738
+2739
+2740
+2741
+2742
+2743
+2744
+2745
+2746
+2747
+2748
+2749
+2750
+2751
+2752
+2753
+2754
+2755
+2756
+2757
+2758
+2759
+2760
+2761
+2762
+2763
+2764
+2765
+2766
+2767
+2768
+2769
+2770
+2771
+2772
+2773
+2774
+2775
+2776
+2777
+2778
+2779
+2780
+2781
+2782
+2783
+2784
+2785
+2786
+2787
+2788
+2789
+2790
+2791
+2792
+2793
+2794
+2795
+2796
+2797
+2798
+2799
+2800
+2801
+2802
+2803
+2804
+2805
+2806
+2807
+2808
+2809
+2810
+2811
+2812
+2813
+2814
+2815
+2816
+2817
+2818
+2819
+2820
+2821
+2822
+2823
+2824
+2825
+2826
+2827
+2828
+2829
+2830
+2831
+2832
+2833
+2834
+2835
+2836
+2837
+2838
+2839
+2840
+2841
+2842
+2843
+2844
+2845
+2846
+2847
+2848
+2849
+2850
+2851
+2852
+2853
+2854
+2855
+2856
+2857
+2858
+2859
+2860
+2861
+2862
+2863
+2864
+2865
+2866
+2867
+2868
+2869
+2870
+2871
+2872
+2873
+2874
+2875
+2876
+2877
+2878
+2879
+2880
+2881
+2882
+2883
+2884
+2885
+2886
+2887
+2888
+2889
+2890
+2891
+2892
+2893
+2894
+2895
+2896
+2897
+2898
+2899
+2900
+2901
+2902
+2903
+2904
+2905
+2906
+2907
+2908
+2909
+2910
+2911
+2912
+2913
+2914
+2915
+2916
+2917
+2918
+2919
+2920
+2921
+2922
+2923
+2924
+2925
+2926
+2927
+2928
+2929
+2930
+2931
+2932
+2933
+2934
+2935
+2936
+2937
+2938
+2939
+2940
+2941
+2942
+2943
+2944
+2945
+2946
+2947
+2948
+2949
+2950
+2951
+2952
+2953
+2954
+2955
+2956
+2957
+2958
+2959
+2960
+2961
+2962
+2963
+2964
+2965
+2966
+2967
+2968
+2969
+2970
+2971
+2972
+2973
+2974
+2975
+2976
+2977
+2978
+2979
+2980
+2981
+2982
+2983
+2984
+2985
+2986
+2987
+2988
+2989
+2990
+2991
+2992
+2993
+2994
+2995
+2996
+2997
+2998
+2999
+3000
+3001
+3002
+3003
+3004
+3005
+3006
+3007
+3008
+3009
+3010
+3011
+3012
+3013
+3014
+3015
+3016
+3017
+3018
+3019
+3020
+3021
+3022
+3023
+3024
+3025
+3026
+3027
+3028
+3029
+3030
+3031
+3032
+3033
+3034
+3035
+3036
+3037
+3038
+3039
+3040
+3041
+3042
+3043
+3044
+3045
+3046
+3047
+3048
+3049
+3050
+3051
+3052
+3053
+3054
+3055
+3056
+3057
+3058
+3059
+3060
+3061
+3062
+3063
+3064
+3065
+3066
+3067
+3068
+3069
+3070
+3071
+3072
+3073
+3074
+3075
+3076
+3077
+3078
+3079
+3080
+3081
+3082
+3083
+3084
+3085
+3086
+3087
+3088
+3089
+3090
+3091
+3092
+3093
+3094
+3095
+3096
+3097
+3098
+3099
+3100
+3101
+3102
+3103
+3104
+3105
+3106
+3107
+3108
+3109
+3110
+3111
+3112
+3113
+3114
+3115
+3116
+3117
+3118
+3119
+3120
+3121
+3122
+3123
+3124
+3125
+3126
+3127
+3128
+3129
+3130
+3131
+3132
+3133
+3134
+3135
+3136
+3137
+3138
+3139
+3140
+3141
+3142
+3143
+3144
+3145
+3146
+3147
+3148
+3149
+3150
+3151
+3152
+3153
+3154
+3155
+3156
+3157
+3158
+3159
+3160
+3161
+3162
+3163
+3164
+3165
+3166
+3167
+3168
+3169
+3170
+3171
+3172
+3173
+3174
+3175
+3176
+3177
+3178
+3179
+3180
+3181
+3182
+3183
+3184
+3185
+3186
+3187
+3188
+3189
+3190
+3191
+3192
+3193
+3194
+3195
+3196
+3197
+3198
+3199
+3200
+3201
+3202
+3203
+3204
+3205
+3206
+3207
+3208
+3209
+3210
+3211
+3212
+3213
+3214
+3215
+3216
+3217
+3218
+3219
+3220
+3221
+3222
+3223
+3224
+3225
+3226
+3227
+3228
+3229
+3230
+3231
+3232
+3233
+3234
+3235
+3236
+3237
+3238
+3239
+3240
+3241
+3242
+3243
+3244
+3245
+3246
+3247
+3248
+3249
+3250
+3251
+3252
+3253
+3254
+3255
+3256
+3257
+3258
+3259
+3260
+3261
+3262
+3263
+3264
+3265
+3266
+3267
+3268
+3269
+3270
+3271
+3272
+3273
+3274
+3275
+3276
+3277
+3278
+3279
+3280
+3281
+3282
+3283
+3284
+3285
+3286
+3287
+3288
+3289
+3290
+3291
+3292
+3293
+3294
+3295
+3296
+3297
+3298
+3299
+3300
+3301
+3302
+3303
+3304
+3305
+3306
+3307
+3308
+3309
+3310
+3311
+3312
+3313
+3314
+3315
+3316
+3317
+3318
+3319
+3320
+3321
+3322
+3323
+3324
+3325
+3326
+3327
+3328
+3329
+3330
+3331
+3332
+3333
+3334
+3335
+3336
+3337
+3338
+3339
+3340
+3341
+3342
+3343
+3344
+3345
+3346
+3347
+3348
+3349
+3350
+3351
+3352
+3353
+3354
+3355
+3356
+3357
+3358
+3359
+3360
+3361
+3362
+3363
+3364
+3365
+3366
+3367
+3368
+3369
+3370
+3371
+3372
+3373
+3374
+3375
+3376
+3377
+3378
+3379
+3380
+3381
+3382
+3383
+3384
+3385
+3386
+3387
+3388
+3389
+3390
+3391
+3392
+3393
+3394
+3395
+3396
+3397
+3398
+3399
+3400
+3401
+3402
+3403
+3404
+3405
+3406
+3407
+3408
+3409
+3410
+3411
+3412
+3413
+3414
+3415
+3416
+3417
+3418
+3419
+3420
+3421
+3422
+3423
+3424
+3425
+3426
+3427
+3428
+3429
+3430
+3431
+3432
+3433
+3434
+3435
+3436
+3437
+3438
+3439
+3440
+3441
+3442
+3443
+3444
+3445
+3446
+3447
+3448
+3449
+3450
+3451
+3452
+3453
+3454
+3455
+3456
+3457
+3458
+3459
+3460
+3461
+3462
+3463
+3464
+3465
+3466
+3467
+3468
+3469
+3470
+3471
+3472
+3473
+3474
+3475
+3476
+3477
+3478
+3479
+3480
+3481
+3482
+3483
+3484
+3485
+3486
+3487
+3488
+3489
+3490
+3491
+3492
+3493
+3494
+3495
+3496
+3497
+3498
+3499
+3500
+3501
+3502
+3503
+3504
+3505
+3506
+3507
+3508
+3509
+3510
+3511
+3512
+3513
+3514
+3515
+3516
+3517
+3518
+3519
+3520
+3521
+3522
+3523
+3524
+3525
+3526
+3527
+3528
+3529
+3530
+3531
+3532
+3533
+3534
+3535
+3536
+3537
+3538
+3539
+3540
+3541
+3542
+3543
+3544
+3545
+3546
+3547
+3548
+3549
+3550
+3551
+3552
+3553
+3554
+3555
+3556
+3557
+3558
+3559
+3560
+3561
+3562
+3563
+3564
+3565
+3566
+3567
+3568
+3569
+3570
+3571
+3572
+3573
+3574
+3575
+3576
+3577
+3578
+3579
+3580
+3581
+3582
+3583
+3584
+3585
+3586
+3587
+3588
+3589
+3590
+3591
+3592
+3593
+3594
+3595
+3596
+3597
+3598
+3599
+3600
+3601
+3602
+3603
+3604
+3605
+3606
+3607
+3608
+3609
+3610
+3611
+3612
+3613
+3614
+3615
+3616
+3617
+3618
+3619
+3620
+3621
+3622
+3623
+3624
+3625
+3626
+3627
+3628
+3629
+3630
+3631
+3632
+3633
+3634
+3635
+3636
+3637
+3638
+3639
+3640
+3641
+3642
+3643
+3644
+3645
+3646
+3647
+3648
+3649
+3650
+3651
+3652
+3653
+3654
+3655
+3656
+3657
+3658
+3659
+3660
+3661
+3662
+3663
+3664
+3665
+3666
+3667
+3668
+3669
+3670
+3671
+3672
+3673
+3674
+3675
+3676
+3677
+3678
+3679
+3680
+3681
+3682
+3683
+3684
+3685
+3686
+3687
+3688
+3689
+3690
+3691
+3692
+3693
+3694
+3695
+3696
+3697
+3698
+3699
+3700
+3701
+3702
+3703
+3704
+3705
+3706
+3707
+3708
+3709
+3710
+3711
+3712
+3713
+3714
+3715
+3716
+3717
+3718
+3719
+3720
+3721
+3722
+3723
+3724
+3725
+3726
+3727
+3728
+3729
+3730
+3731
+3732
+3733
+3734
+3735
+3736
+3737
+3738
+3739
+3740
+3741
+3742
+3743
+3744
+3745
+3746
+3747
+3748
+3749
+3750
+3751
+3752
+3753
+3754
+3755
+3756
+3757
+3758
+3759
+3760
+3761
+3762
+3763
+3764
+3765
+3766
+3767
+3768
+3769
+3770
+3771
+3772
+3773
+3774
+3775
+3776
+3777
+3778
+3779
+3780
+3781
+3782
+3783
+3784
+3785
+3786
+3787
+3788
+3789
+3790
+3791
+3792
+3793
+3794
+3795
+3796
+3797
+3798
+3799
+3800
+3801
+3802
+3803
+3804
+3805
+3806
+3807
+3808
+3809
+3810
+3811
+3812
+3813
+3814
+3815
+3816
+3817
+3818
+3819
+3820
+3821
+3822
+3823
+3824
+3825
+3826
+3827
+3828
+3829
+3830
+3831
+3832
+3833
+3834
+3835
+3836
+3837
+3838
+3839
+3840
+3841
+3842
+3843
+3844
+3845
+3846
+3847
+3848
+3849
+3850
+3851
+3852
+3853
+3854
+3855
+3856
+3857
+3858
+3859
+3860
+3861
+3862
+3863
+3864
+3865
+3866
+3867
+3868
+3869
+3870
+3871
+3872
+3873
+3874
+3875
+3876
+3877
+3878
+3879
+3880
+3881
+3882
+3883
+3884
+3885
+3886
+3887
+3888
+3889
+3890
+3891
+3892
+3893
+3894
+3895
+3896
+3897
+3898
+3899
+3900
+3901
+3902
+3903
+3904
+3905
+3906
+3907
+3908
+3909
+3910
+3911
+3912
+3913
+3914
+3915
+3916
+3917
+3918
+3919
+3920
+3921
+3922
+3923
+3924
+3925
+3926
+3927
+3928
+3929
+3930
+3931
+3932
+3933
+3934
+3935
+3936
+3937
+3938
+3939
+3940
+3941
+3942
+3943
+3944
+3945
+3946
+3947
+3948
+3949
+3950
+3951
+3952
+3953
+3954
+3955
+3956
+3957
+3958
+3959
+3960
+3961
+3962
+3963
+3964
+3965
+3966
+3967
+3968
+3969
+3970
+3971
+3972
+3973
+3974
+3975
+3976
+3977
+3978
+3979
+3980
+3981
+3982
+3983
+3984
+3985
+3986
+3987
+3988
+3989
+3990
+3991
+3992
+3993
+3994
+3995
+3996
+3997
+3998
+3999
+4000
+4001
+4002
+4003
+4004
+4005
+4006
+4007
+4008
+4009
+4010
+4011
+4012
+4013
+4014
+4015
+4016
+4017
+4018
+4019
+4020
+4021
+4022
+4023
+4024
+4025
+4026
+4027
+4028
+4029
+4030
+4031
+4032
+4033
+4034
+4035
+4036
+4037
+4038
+4039
+4040
+4041
+4042
+4043
+4044
+4045
+4046
+4047
+4048
+4049
+4050
+4051
+4052
+4053
+4054
+4055
+4056
+4057
+4058
+4059
+4060
+4061
+4062
+4063
+4064
+4065
+4066
+4067
+4068
+4069
+4070
+4071
+4072
+4073
+4074
+4075
+4076
+4077
+4078
+4079
+4080
+4081
+4082
+4083
+4084
+4085
+4086
+4087
+4088
+4089
+4090
+4091
+4092
+4093
+4094
+4095
+4096
+4097
+4098
+4099
+4100
+4101
+4102
+4103
+4104
+4105
+4106
+4107
+4108
+4109
+4110
+4111
+4112
+4113
+4114
+4115
+4116
+4117
+4118
+4119
+4120
+4121
+4122
+4123
+4124
+4125
+4126
+4127
+4128
+4129
+4130
+4131
+4132
+4133
+4134
+4135
+4136
+4137
+4138
+4139
+4140
+4141
+4142
+4143
+4144
+4145
+4146
+4147
+4148
+4149
+4150
+4151
+4152
+4153
+4154
+4155
+4156
+4157
+4158
+4159
+4160
+4161
+4162
+4163
+4164
+4165
+4166
+4167
+4168
+4169
+4170
+4171
+4172
+4173
+4174
+4175
+4176
+4177
+4178
+4179
+4180
+4181
+4182
+4183
+4184
+4185
+4186
+4187
+4188
+4189
+4190
+4191
+4192
+4193
+4194
+4195
+4196
+4197
+4198
+4199
+4200
+4201
+4202
+4203
+4204
+4205
+4206
+4207
+4208
+4209
+4210
+4211
+4212
+4213
+4214
+4215
+4216
+4217
+4218
+4219
+4220
+4221
+4222
+4223
+4224
+4225
+4226
+4227
+4228
+4229
+4230
+4231
+4232
+4233
+4234
+4235
+4236
+4237
+4238
+4239
+4240
+4241
+4242
+4243
+4244
+4245
+4246
+4247
+4248
+4249
+4250
+4251
+4252
+4253
+4254
+4255
+4256
+4257
+4258
+4259
+4260
+4261
+4262
+4263
+4264
+4265
+4266
+4267
+4268
+4269
+4270
+4271
+4272
+4273
+4274
+4275
+4276
+4277
+4278
+4279
+4280
+4281
+4282
+4283
+4284
+4285
+4286
+4287
+4288
+4289
+4290
+4291
+4292
+4293
+4294
+4295
+4296
+4297
+4298
+4299
+4300
+4301
+4302
+4303
+4304
+4305
+4306
+4307
+4308
+4309
+4310
+4311
+4312
+4313
+4314
+4315
+4316
+4317
+4318
+4319
+4320
+4321
+4322
+4323
+4324
+4325
+4326
+4327
+4328
+4329
+4330
+4331
+4332
+4333
+4334
+4335
+4336
+4337
+4338
+4339
+4340
+4341
+4342
+4343
+4344
+4345
+4346
+4347
+4348
+4349
+4350
+4351
+4352
+4353
+4354
+4355
+4356
+4357
+4358
+4359
+4360
+4361
+4362
+4363
+4364
+4365
+4366
+4367
+4368
+4369
+4370
+4371
+4372
+4373
+4374
+4375
+4376
+4377
+4378
+4379
+4380
+4381
+4382
+4383
+4384
+4385
+4386
+4387
+4388
+4389
+4390
+4391
+4392
+4393
+4394
+4395
+4396
+4397
+4398
+4399
+4400
+4401
+4402
+4403
+4404
+4405
+4406
+4407
+4408
+4409
+4410
+4411
+4412
+4413
+4414
+4415
+4416
+4417
+4418
+4419
+4420
+4421
+4422
+4423
+4424
+4425
+4426
+4427
+4428
+4429
+4430
+4431
+4432
+4433
+4434
+4435
+4436
+4437
+4438
+4439
+4440
+4441
+4442
+4443
+4444
+4445
+4446
+4447
+4448
+4449
+4450
+4451
+4452
+4453
+4454
+4455
+4456
+4457
+4458
+4459
+4460
+4461
+4462
+4463
+4464
+4465
+4466
+4467
+4468
+4469
+4470
+4471
+4472
+4473
+4474
+4475
+4476
+4477
+4478
+4479
+4480
+4481
+4482
+4483
+4484
+4485
+4486
+4487
+4488
+4489
+4490
+4491
+4492
+4493
+4494
+4495
+4496
+4497
+4498
+4499
+4500
+4501
+4502
+4503
+4504
+4505
+4506
+4507
+4508
+4509
+4510
+4511
+4512
+4513
+4514
+4515
+4516
+4517
+4518
+4519
+4520
+4521
+4522
+4523
+4524
+4525
+4526
+4527
+4528
+4529
+4530
+4531
+4532
+4533
+4534
+4535
+4536
+4537
+4538
+4539
+4540
+4541
+4542
+4543
+4544
+4545
+4546
+4547
+4548
+4549
+4550
+4551
+4552
+4553
+4554
+4555
+4556
+4557
+4558
+4559
+4560
+4561
+4562
+4563
+4564
+4565
+4566
+4567
+4568
+4569
+4570
+4571
+4572
+4573
+4574
+4575
+4576
+4577
+4578
+4579
+4580
+4581
+4582
+4583
+4584
+4585
+4586
+4587
+4588
+4589
+4590
+4591
+4592
+4593
+4594
+4595
+4596
+4597
+4598
+4599
+4600
+4601
+4602
+4603
+4604
+4605
+4606
+4607
+4608
+4609
+4610
+4611
+4612
+4613
+4614
+4615
+4616
+4617
+4618
+4619
+4620
+4621
+4622
+4623
+4624
+4625
+4626
+4627
+4628
+4629
+4630
+4631
+4632
+4633
+4634
+4635
+4636
+4637
+4638
+4639
+4640
+4641
+4642
+4643
+4644
+4645
+4646
+4647
+4648
+4649
+4650
+4651
+4652
+4653
+4654
+4655
+4656
+4657
+4658
+4659
+4660
+4661
+4662
+4663
+4664
+4665
+4666
+4667
+4668
+4669
+4670
+4671
+4672
+4673
+4674
+4675
+4676
+4677
+4678
+4679
+4680
+4681
+4682
+4683
+4684
+4685
+4686
+4687
+4688
+4689
+4690
+4691
+4692
+4693
+4694
+4695
+4696
+4697
+4698
+4699
+4700
+4701
+4702
+4703
+4704
+4705
+4706
+4707
+4708
+4709
+4710
+4711
+4712
+4713
+4714
+4715
+4716
+4717
+4718
+4719
+4720
+4721
+4722
+4723
+4724
+4725
+4726
+4727
+4728
+4729
+4730
+4731
+4732
+4733
+4734
+4735
+4736
+4737
+4738
+4739
+4740
+4741
+4742
+4743
+4744
+4745
+4746
+4747
+4748
+4749
+4750
+4751
+4752
+4753
+4754
+4755
+4756
+4757
+4758
+4759
+4760
+4761
+4762
+4763
+4764
+4765
+4766
+4767
+4768
+4769
+4770
+4771
+4772
+4773
+4774
+4775
+4776
+4777
+4778
+4779
+4780
+4781
+4782
+4783
+4784
+4785
+4786
+4787
+4788
+4789
+4790
+4791
+4792
+4793
+4794
+4795
+4796
+4797
+4798
+4799
+4800
+4801
+4802
+4803
+4804
+4805
+4806
+4807
+4808
+4809
+4810
+4811
+4812
+4813
+4814
+4815
+4816
+4817
+4818
+4819
+4820
+4821
+4822
+4823
+4824
+4825
+4826
+4827
+4828
+4829
+4830
+4831
+4832
+4833
+4834
+4835
+4836
+4837
+4838
+4839
+4840
+4841
+4842
+4843
+4844
+4845
+4846
+4847
+4848
+4849
+4850
+4851
+4852
+4853
+4854
+4855
+4856
+4857
+4858
+4859
+4860
+4861
+4862
+4863
+4864
+4865
+4866
+4867
+4868
+4869
+4870
+4871
+4872
+4873
+4874
+4875
+4876
+4877
+4878
+4879
+4880
+4881
+4882
+4883
+4884
+4885
+4886
+4887
+4888
+4889
+4890
+4891
+4892
+4893
+4894
+4895
+4896
+4897
+4898
+4899
+4900
+4901
+4902
+4903
+4904
+4905
+4906
+4907
+4908
+4909
+4910
+4911
+4912
+4913
+4914
+4915
+4916
+4917
+4918
+4919
+4920
+4921
+4922
+4923
+4924
+4925
+4926
+4927
+4928
+4929
+4930
+4931
+4932
+4933
+4934
+4935
+4936
+4937
+4938
+4939
+4940
+4941
+4942
+4943
+4944
+4945
+4946
+4947
+4948
+4949
+4950
+4951
+4952
+4953
+4954
+4955
+4956
+4957
+4958
+4959
+4960
+4961
+4962
+4963
+4964
+4965
+4966
+4967
+4968
+4969
+4970
+4971
+4972
+4973
+4974
+4975
+4976
+4977
+4978
+4979
+4980
+4981
+4982
+4983
+4984
+4985
+4986
+4987
+4988
+4989
+4990
+4991
+4992
+4993
+4994
+4995
+4996
+4997
+4998
+4999
+5000
+5001
+5002
+5003
+5004
+5005
+5006
+5007
+5008
+5009
+5010
+5011
+5012
+5013
+5014
+5015
+5016
+5017
+5018
+5019
+5020
+5021
+5022
+5023
+5024
+5025
+5026
+5027
+5028
+5029
+5030
+5031
+5032
+5033
+5034
+5035
+5036
+5037
+5038
+5039
+5040
+5041
+5042
+5043
+5044
+5045
+5046
+5047
+5048
+5049
+5050
+5051
+5052
+5053
+5054
+5055
+5056
+5057
+5058
+5059
+5060
+5061
+5062
+5063
+5064
+5065
+5066
+5067
+5068
+5069
+5070
+5071
+5072
+5073
+5074
+5075
+5076
+5077
+5078
+5079
+5080
+5081
+5082
+5083
+5084
+5085
+5086
+5087
+5088
+5089
+5090
+5091
+5092
+5093
+5094
+5095
+5096
+5097
+5098
+5099
+5100
+5101
+5102
+5103
+5104
+5105
+5106
+5107
+5108
+5109
+5110
+5111
+5112
+5113
+5114
+5115
+5116
+5117
+5118
+5119
+5120
+5121
+5122
+5123
+5124
+5125
+5126
+5127
+5128
+5129
+5130
+5131
+5132
+5133
+5134
+5135
+5136
+5137
+5138
+5139
+5140
+5141
+5142
+5143
+5144
+5145
+5146
+5147
+5148
+5149
+5150
+5151
+5152
+5153
+5154
+5155
+5156
+5157
+5158
+5159
+5160
+5161
+5162
+5163
+5164
+5165
+5166
+5167
+5168
+5169
+5170
+5171
+5172
+5173
+5174
+5175
+5176
+5177
+5178
+5179
+5180
+5181
+5182
+5183
+5184
+5185
+5186
+5187
+5188
+5189
+5190
+5191
+5192
+5193
+5194
+5195
+5196
+5197
+5198
+5199
+5200
+5201
+5202
+5203
+5204
+5205
+5206
+5207
+5208
+5209
+5210
+5211
+5212
+5213
+5214
+5215
+5216
+5217
+5218
+5219
+5220
+5221
+5222
+5223
+5224
+5225
+5226
+5227
+5228
+5229
+5230
+5231
+5232
+5233
+5234
+5235
+5236
+5237
+5238
+5239
+5240
+5241
+5242
+5243
+5244
+5245
+5246
+5247
+5248
+5249
+5250
+5251
+5252
+5253
+5254
+5255
+5256
+5257
+5258
+5259
+5260
+5261
+5262
+5263
+5264
+5265
+5266
+5267
+5268
+5269
+5270
+5271
+5272
+5273
+5274
+5275
+5276
+5277
+5278
+5279
+5280
+5281
+5282
+5283
+5284
+5285
+5286
+5287
+5288
+5289
+5290
+5291
+5292
+5293
+5294
+5295
+5296
+5297
+5298
+5299
+5300
+5301
+5302
+5303
+5304
+5305
+5306
+5307
+5308
+5309
+5310
+5311
+5312
+5313
+5314
+5315
+5316
+5317
+5318
+5319
+5320
+5321
+5322
+5323
+5324
+5325
+5326
+5327
+5328
+5329
+5330
+5331
+5332
+5333
+5334
+5335
+5336
+5337
+5338
+5339
+5340
+5341
+5342
+5343
+5344
+5345
+5346
+5347
+5348
+5349
+5350
+5351
+5352
+5353
+5354
+5355
+5356
+5357
+5358
+5359
+5360
+5361
+5362
+5363
+5364
+5365
+5366
+5367
+5368
+5369
+5370
+5371
+5372
+5373
+5374
+5375
+5376
+5377
+5378
+5379
+5380
+5381
+5382
+5383
+5384
+5385
+5386
+5387
+5388
+5389
+5390
+5391
+5392
+5393
+5394
+5395
+5396
+5397
+5398
+5399
+5400
+5401
+5402
+5403
+5404
+5405
+5406
+5407
+5408
+5409
+5410
+5411
+5412
+5413
+5414
+5415
+5416
+5417
+5418
+5419
+5420
+5421
+5422
+5423
+5424
+5425
+5426
+5427
+5428
+5429
+5430
+5431
+5432
+5433
+5434
+5435
+5436
+5437
+5438
+5439
+5440
+5441
+5442
+5443
+5444
+5445
+5446
+5447
+5448
+5449
+5450
+5451
+5452
+5453
+5454
+5455
+5456
+5457
+5458
+5459
+5460
+5461
+5462
+5463
+5464
+5465
+5466
+5467
+5468
+5469
+5470
+5471
+5472
+5473
+5474
+5475
+5476
+5477
+5478
+5479
+5480
+5481
+5482
+5483
+5484
+5485
+5486
+5487
+5488
+5489
+5490
+5491
+5492
+5493
+5494
+5495
+5496
+5497
+5498
+5499
+5500
+5501
+5502
+5503
+5504
+5505
+5506
+5507
+5508
+5509
+5510
+5511
+5512
+5513
+5514
+5515
+5516
+5517
+5518
+5519
+5520
+5521
+5522
+5523
+5524
+5525
+5526
+5527
+5528
+5529
+5530
+5531
+5532
+5533
+5534
+5535
+5536
+5537
+5538
+5539
+5540
+5541
+5542
+5543
+5544
+5545
+5546
+5547
+5548
+5549
+5550
+5551
+5552
+5553
+5554
+5555
+5556
+5557
+5558
+5559
+5560
+5561
+5562
+5563
+5564
+5565
+5566
+5567
+5568
+5569
+5570
+5571
+5572
+5573
+5574
+5575
+5576
+5577
+5578
+5579
+5580
+5581
+5582
+5583
+5584
+5585
+5586
+5587
+5588
+5589
+5590
+5591
+5592
+5593
+5594
+5595
+5596
+5597
+5598
+5599
+5600
+5601
+5602
+5603
+5604
+5605
+5606
+5607
+5608
+5609
+5610
+5611
+5612
+5613
+5614
+5615
+5616
+5617
+5618
+5619
+5620
+5621
+5622
+5623
+5624
+5625
+5626
+5627
+5628
+5629
+5630
+5631
+5632
+5633
+5634
+5635
+5636
+5637
+5638
+5639
+5640
+5641
+5642
+5643
+5644
+5645
+5646
+5647
+5648
+5649
+5650
+5651
+5652
+5653
+5654
+5655
+5656
+5657
+5658
+5659
+5660
+5661
+5662
+5663
+5664
+5665
+5666
+5667
+5668
+5669
+5670
+5671
+5672
+5673
+5674
+5675
+5676
+5677
+5678
+5679
+5680
+5681
+5682
+5683
+5684
+5685
+5686
+5687
+5688
+5689
+5690
+5691
+5692
+5693
+5694
+5695
+5696
+5697
+5698
+5699
+5700
+5701
+5702
+5703
+5704
+5705
+5706
+5707
+5708
+5709
+5710
+5711
+5712
+5713
+5714
+5715
+5716
+5717
+5718
+5719
+5720
+5721
+5722
+5723
+5724
+5725
+5726
+5727
+5728
+5729
+5730
+5731
+5732
+5733
+5734
+5735
+5736
+5737
+5738
+5739
+5740
+5741
+5742
+5743
+5744
+5745
+5746
+5747
+5748
+5749
+5750
+5751
+5752
+5753
+5754
+5755
+5756
+5757
+5758
+5759
+5760
+5761
+5762
+5763
+5764
+5765
+5766
+5767
+5768
+5769
+5770
+5771
+5772
+5773
+5774
+5775
+5776
+5777
+5778
+5779
+5780
+5781
+5782
+5783
+5784
+5785
+5786
+5787
+5788
+5789
+5790
+5791
+5792
+5793
+5794
+5795
+5796
+5797
+5798
+5799
+5800
+5801
+5802
+5803
+5804
+5805
+5806
+5807
+5808
+5809
+5810
+5811
+5812
+5813
+5814
+5815
+5816
+5817
+5818
+5819
+5820
+5821
+5822
+5823
+5824
+5825
+5826
+5827
+5828
+5829
+5830
+5831
+5832
+5833
+5834
+5835
+5836
+5837
+5838
+5839
+5840
+5841
+5842
+5843
+5844
+5845
+5846
+5847
+5848
+5849
+5850
+5851
+5852
+5853
+5854
+5855
+5856
+5857
+5858
+5859
+5860
+5861
+5862
+5863
+5864
+5865
+5866
+5867
+5868
+5869
+5870
+5871
+5872
+5873
+5874
+5875
+5876
+5877
+5878
+5879
+5880
+5881
+5882
+5883
+5884
+5885
+5886
+5887
+5888
+5889
+5890
+5891
+5892
+5893
+5894
+5895
+5896
+5897
+5898
+5899
+5900
+5901
+5902
+5903
+5904
+5905
+5906
+5907
+5908
+5909
+5910
+5911
+5912
+5913
+5914
+5915
+5916
+5917
+5918
+5919
+5920
+5921
+5922
+5923
+5924
+5925
+5926
+5927
+5928
+5929
+5930
+5931
+5932
+5933
+5934
+5935
+5936
+5937
+5938
+5939
+5940
+5941
+5942
+5943
+5944
+5945
+5946
+5947
+5948
+5949
+5950
+5951
+5952
+5953
+5954
+5955
+5956
+5957
+5958
+5959
+5960
+5961
+5962
+5963
+5964
+5965
+5966
+5967
+5968
+5969
+5970
+5971
+5972
+5973
+5974
+5975
+5976
+5977
+5978
+5979
+5980
+5981
+5982
+5983
+5984
+5985
+5986
+5987
+5988
+5989
+5990
+5991
+5992
+5993
+5994
+5995
+5996
+5997
+5998
+5999
+6000
+6001
+6002
+6003
+6004
+6005
+6006
+6007
+6008
+6009
+6010
+6011
+6012
+6013
+6014
+6015
+6016
+6017
+6018
+6019
+6020
+6021
+6022
+6023
+6024
+6025
+6026
+6027
+6028
+6029
+6030
+6031
+6032
+6033
+6034
+6035
+6036
+6037
+6038
+6039
+6040
+6041
+6042
+6043
+6044
+6045
+6046
+6047
+6048
+6049
+6050
+6051
+6052
+6053
+6054
+6055
+6056
+6057
+6058
+6059
+6060
+6061
+6062
+6063
+6064
+6065
+6066
+6067
+6068
+6069
+6070
+6071
+6072
+6073
+6074
+6075
+6076
+6077
+6078
+6079
+6080
+6081
+6082
+6083
+6084
+6085
+6086
+6087
+6088
+6089
+6090
+6091
+6092
+6093
+6094
+6095
+6096
+6097
+6098
+6099
+6100
+6101
+6102
+6103
+6104
+6105
+6106
+6107
+6108
+6109
+6110
+6111
+6112
+6113
+6114
+6115
+6116
+6117
+6118
+6119
+6120
+6121
+6122
+6123
+6124
+6125
+6126
+6127
+6128
+6129
+6130
+6131
+6132
+6133
+6134
+6135
+6136
+6137
+6138
+6139
+6140
+6141
+6142
+6143
+6144
+6145
+6146
+6147
+6148
+6149
+6150
+6151
+6152
+6153
+6154
+6155
+6156
+6157
+6158
+6159
+6160
+6161
+6162
+6163
+6164
+6165
+6166
+6167
+6168
+6169
+6170
+6171
+6172
+6173
+6174
+6175
+6176
+6177
+6178
+6179
+6180
+6181
+6182
+6183
+6184
+6185
+6186
+6187
+6188
+6189
+6190
+6191
+6192
+6193
+6194
+6195
+6196
+6197
+6198
+6199
+6200
+6201
+6202
+6203
+6204
+6205
+6206
+6207
+6208
+6209
+6210
+6211
+6212
+6213
+6214
+6215
+6216
+6217
+6218
+6219
+6220
+6221
+6222
+6223
+6224
+6225
+6226
+6227
+6228
+6229
+6230
+6231
+6232
+6233
+6234
+6235
+6236
+6237
+6238
+6239
+6240
+6241
+6242
+6243
+6244
+6245
+6246
+6247
+6248
+6249
+6250
+6251
+6252
+6253
+6254
+6255
+6256
+6257
+6258
+6259
+6260
+6261
+6262
+6263
+6264
+6265
+6266
+6267
+6268
+6269
+6270
+6271
+6272
+6273
+6274
+6275
+6276
+6277
+6278
+6279
+6280
+6281
+6282
+6283
+6284
+6285
+6286
+6287
+6288
+6289
+6290
+6291
+6292
+6293
+6294
+6295
+6296
+6297
+6298
+6299
+6300
+6301
+6302
+6303
+6304
+6305
+6306
+6307
+6308
+6309
+6310
+6311
+6312
+6313
+6314
+6315
+6316
+6317
+6318
+6319
+6320
+6321
+6322
+6323
+6324
+6325
+6326
+6327
+6328
+6329
+6330
+6331
+6332
+6333
+6334
+6335
+6336
+6337
+6338
+6339
+6340
+6341
+6342
+6343
+6344
+6345
+6346
+6347
+6348
+6349
+6350
+6351
+6352
+6353
+6354
+6355
+6356
+6357
+6358
+6359
+6360
+6361
+6362
+6363
+6364
+6365
+6366
+6367
+6368
+6369
+6370
+6371
+6372
+6373
+6374
+6375
+6376
+6377
+6378
+6379
+6380
+6381
+6382
+6383
+6384
+6385
+6386
+6387
+6388
+6389
+6390
+6391
+6392
+6393
+6394
+6395
+6396
+6397
+6398
+6399
+6400
+6401
+6402
+6403
+6404
+6405
+6406
+6407
+6408
+6409
+6410
+6411
+6412
+6413
+6414
+6415
+6416
+6417
+6418
+6419
+6420
+6421
+6422
+6423
+6424
+6425
+6426
+6427
+6428
+6429
+6430
+6431
+6432
+6433
+6434
+6435
+6436
+6437
+6438
+6439
+6440
+6441
+6442
+6443
+6444
+6445
+6446
+6447
+6448
+6449
+6450
+6451
+6452
+6453
+6454
+6455
+6456
+6457
+6458
+6459
+6460
+6461
+6462
+6463
+6464
+6465
+6466
+6467
+6468
+6469
+6470
+6471
+6472
+6473
+6474
+6475
+6476
+6477
+6478
+6479
+6480
+6481
+6482
+6483
+6484
+6485
+6486
+6487
+6488
+6489
+6490
+6491
+6492
+6493
+6494
+6495
+6496
+6497
+6498
+6499
+6500
+6501
+6502
+6503
+6504
+6505
+6506
+6507
+6508
+6509
+6510
+6511
+6512
+6513
+6514
+6515
+6516
+6517
+6518
+6519
+6520
+6521
+6522
+6523
+6524
+6525
+6526
+6527
+6528
+6529
+6530
+6531
+6532
+6533
+6534
+6535
+6536
+6537
+6538
+6539
+6540
+6541
+6542
+6543
+6544
+6545
+6546
+6547
+6548
+6549
+6550
+6551
+6552
+6553
+6554
+6555
+6556
+6557
+6558
+6559
+6560
+6561
+6562
+6563
+6564
+6565
+6566
+6567
+6568
+6569
+6570
+6571
+6572
+6573
+6574
+6575
+6576
+6577
+6578
+6579
+6580
+6581
+6582
+6583
+6584
+6585
+6586
+6587
+6588
+6589
+6590
+6591
+6592
+6593
+6594
+6595
+6596
+6597
+6598
+6599
+6600
+6601
+6602
+6603
+6604
+6605
+6606
+6607
+6608
+6609
+6610
+6611
+6612
+6613
+6614
+6615
+6616
+6617
+6618
+6619
+6620
+6621
+6622
+6623
+6624
+6625
+6626
+6627
+6628
+6629
+6630
+6631
+6632
+6633
+6634
+6635
+6636
+6637
+6638
+6639
+6640
+6641
+6642
+6643
+6644
+6645
+6646
+6647
+6648
+6649
+6650
+6651
+6652
+6653
+6654
+6655
+6656
+6657
+6658
+6659
+6660
+6661
+6662
+6663
+6664
+6665
+6666
+6667
+6668
+6669
+6670
+6671
+6672
+6673
+6674
+6675
+6676
+6677
+6678
+6679
+6680
+6681
+6682
+6683
+6684
+6685
+6686
+6687
+6688
+6689
+6690
+6691
+6692
+6693
+6694
+6695
+6696
+6697
+6698
+6699
+6700
+6701
+6702
+6703
+6704
+6705
+6706
+6707
+6708
+6709
+6710
+6711
+6712
+6713
+6714
+6715
+6716
+6717
+6718
+6719
+6720
+6721
+6722
+6723
+6724
+6725
+6726
+6727
+6728
+6729
+6730
+6731
+6732
+6733
+6734
+6735
+6736
+6737
+6738
+6739
+6740
+6741
+6742
+6743
+6744
+6745
+6746
+6747
+6748
+6749
+6750
+6751
+6752
+6753
+6754
+6755
+6756
+6757
+6758
+6759
+6760
+6761
+6762
+6763
+6764
+6765
+6766
+6767
+6768
+6769
+6770
+6771
+6772
+6773
+6774
+6775
+6776
+6777
+6778
+6779
+6780
+6781
+6782
+6783
+6784
+6785
+6786
+6787
+6788
+6789
+6790
+6791
+6792
+6793
+6794
+6795
+6796
+6797
+6798
+6799
+6800
+6801
+6802
+6803
+6804
+6805
+6806
+6807
+6808
+6809
+6810
+6811
+6812
+6813
+6814
+6815
+6816
+6817
+6818
+6819
+6820
+6821
+6822
+6823
+6824
+6825
+6826
+6827
+6828
+6829
+6830
+6831
+6832
+6833
+6834
+6835
+6836
+6837
+6838
+6839
+6840
+6841
+6842
+6843
+6844
+6845
+6846
+6847
+6848
+6849
+6850
+6851
+6852
+6853
+6854
+6855
+6856
+6857
+6858
+6859
+6860
+6861
+6862
+6863
+6864
+6865
+6866
+6867
+6868
+6869
+6870
+6871
+6872
+6873
+6874
+6875
+6876
+6877
+6878
+6879
+6880
+6881
+6882
+6883
+6884
+6885
+6886
+6887
+6888
+6889
+6890
+6891
+6892
+6893
+6894
+6895
+6896
+6897
+6898
+6899
+6900
+6901
+6902
+6903
+6904
+6905
+6906
+6907
+6908
+6909
+6910
+6911
+6912
+6913
+6914
+6915
+6916
+6917
+6918
+6919
+6920
+6921
+6922
+6923
+6924
+6925
+6926
+6927
+6928
+6929
+6930
+6931
+6932
+6933
+6934
+6935
+6936
+6937
+6938
+6939
+6940
+6941
+6942
+6943
+6944
+6945
+6946
+6947
+6948
+6949
+6950
+6951
+6952
+6953
+6954
+6955
+6956
+6957
+6958
+6959
+6960
+6961
+6962
+6963
+6964
+6965
+6966
+6967
+6968
+6969
+6970
+6971
+6972
+6973
+6974
+6975
+6976
+6977
+6978
+6979
+6980
+6981
+6982
+6983
+6984
+6985
+6986
+6987
+6988
+6989
+6990
+6991
+6992
+6993
+6994
+6995
+6996
+6997
+6998
+6999
+7000
+7001
+7002
+7003
+7004
+7005
+7006
+7007
+7008
+7009
+7010
+7011
+7012
+7013
+7014
+7015
+7016
+7017
+7018
+7019
+7020
+7021
+7022
+7023
+7024
+7025
+7026
+7027
+7028
+7029
+7030
+7031
+7032
+7033
+7034
+7035
+7036
+7037
+7038
+7039
+7040
+7041
+7042
+7043
+7044
+7045
+7046
+7047
+7048
+7049
+7050
+7051
+7052
+7053
+7054
+7055
+7056
+7057
+7058
+7059
+7060
+7061
+7062
+7063
+7064
+7065
+7066
+7067
+7068
+7069
+7070
+7071
+7072
+7073
+7074
+7075
+7076
+7077
+7078
+7079
+7080
+7081
+7082
+7083
+7084
+7085
+7086
+7087
+7088
+7089
+7090
+7091
+7092
+7093
+7094
+7095
+7096
+7097
+7098
+7099
+7100
+7101
+7102
+7103
+7104
+7105
+7106
+7107
+7108
+7109
+7110
+7111
+7112
+7113
+7114
+7115
+7116
+7117
+7118
+7119
+7120
+7121
+7122
+7123
+7124
+7125
+7126
+7127
+7128
+7129
+7130
+7131
+7132
+7133
+7134
+7135
+7136
+7137
+7138
+7139
+7140
+7141
+7142
+7143
+7144
+7145
+7146
+7147
+7148
+7149
+7150
+7151
+7152
+7153
+7154
+7155
+7156
+7157
+7158
+7159
+7160
+7161
+7162
+7163
+7164
+7165
+7166
+7167
+7168
+7169
+7170
+7171
+7172
+7173
+7174
+7175
+7176
+7177
+7178
+7179
+7180
+7181
+7182
+7183
+7184
+7185
+7186
+7187
+7188
+7189
+7190
+7191
+7192
+7193
+7194
+7195
+7196
+7197
+7198
+7199
+7200
+7201
+7202
+7203
+7204
+7205
+7206
+7207
+7208
+7209
+7210
+7211
+7212
+7213
+7214
+7215
+7216
+7217
+7218
+7219
+7220
+7221
+7222
+7223
+7224
+7225
+7226
+7227
+7228
+7229
+7230
+7231
+7232
+7233
+7234
+7235
+7236
+7237
+7238
+7239
+7240
+7241
+7242
+7243
+7244
+7245
+7246
+7247
+7248
+7249
+7250
+7251
+7252
+7253
+7254
+7255
+7256
+7257
+7258
+7259
+7260
+7261
+7262
+7263
+7264
+7265
+7266
+7267
+7268
+7269
+7270
+7271
+7272
+7273
+7274
+7275
+7276
+7277
+7278
+7279
+7280
+7281
+7282
+7283
+7284
+7285
+7286
+7287
+7288
+7289
+7290
+7291
+7292
+7293
+7294
+7295
+7296
+7297
+7298
+7299
+7300
+7301
+7302
+7303
+7304
+7305
+7306
+7307
+7308
+7309
+7310
+7311
+7312
+7313
+7314
+7315
+7316
+7317
+7318
+7319
+7320
+7321
+7322
+7323
+7324
+7325
+7326
+7327
+7328
+7329
+7330
+7331
+7332
+7333
+7334
+7335
+7336
+7337
+7338
+7339
+7340
+7341
+7342
+7343
+7344
+7345
+7346
+7347
+7348
+7349
+7350
+7351
+7352
+7353
+7354
+7355
+7356
+7357
+7358
+7359
+7360
+7361
+7362
+7363
+7364
+7365
+7366
+7367
+7368
+7369
+7370
+7371
+7372
+7373
+7374
+7375
+7376
+7377
+7378
+7379
+7380
+7381
+7382
+7383
+7384
+7385
+7386
+7387
+7388
+7389
+7390
+7391
+7392
+7393
+7394
+7395
+7396
+7397
+7398
+7399
+7400
+7401
+7402
+7403
+7404
+7405
+7406
+7407
+7408
+7409
+7410
+7411
+7412
+7413
+7414
+7415
+7416
+7417
+7418
+7419
+7420
+7421
+7422
+7423
+7424
+7425
+7426
+7427
+7428
+7429
+7430
+7431
+7432
+7433
+7434
+7435
+7436
+7437
+7438
+7439
+7440
+7441
+7442
+7443
+7444
+7445
+7446
+7447
+7448
+7449
+7450
+7451
+7452
+7453
+7454
+7455
+7456
+7457
+7458
+7459
+7460
+7461
+7462
+7463
+7464
+7465
+7466
+7467
+7468
+7469
+7470
+7471
+7472
+7473
+7474
+7475
+7476
+7477
+7478
+7479
+7480
+7481
+7482
+7483
+7484
+7485
+7486
+7487
+7488
+7489
+7490
+7491
+7492
+7493
+7494
+7495
+7496
+7497
+7498
+7499
+7500
+7501
+7502
+7503
+7504
+7505
+7506
+7507
+7508
+7509
+7510
+7511
+7512
+7513
+7514
+7515
+7516
+7517
+7518
+7519
+7520
+7521
+7522
+7523
+7524
+7525
+7526
+7527
+7528
+7529
+7530
+7531
+7532
+7533
+7534
+7535
+7536
+7537
+7538
+7539
+7540
+7541
+7542
+7543
+7544
+7545
+7546
+7547
+7548
+7549
+7550
+7551
+7552
+7553
+7554
+7555
+7556
+7557
+7558
+7559
+7560
+7561
+7562
+7563
+7564
+7565
+7566
+7567
+7568
+7569
+7570
+7571
+7572
+7573
+7574
+7575
+7576
+7577
+7578
+7579
+7580
+7581
+7582
+7583
+7584
+7585
+7586
+7587
+7588
+7589
+7590
+7591
+7592
+7593
+7594
+7595
+7596
+7597
+7598
+7599
+7600
+7601
+7602
+7603
+7604
+7605
+7606
+7607
+7608
+7609
+7610
+7611
+7612
+7613
+7614
+7615
+7616
+7617
+7618
+7619
+7620
+7621
+7622
+7623
+7624
+7625
+7626
+7627
+7628
+7629
+7630
+7631
+7632
+7633
+7634
+7635
+7636
+7637
+7638
+7639
+7640
+7641
+7642
+7643
+7644
+7645
+7646
+7647
+7648
+7649
+7650
+7651
+7652
+7653
+7654
+7655
+7656
+7657
+7658
+7659
+7660
+7661
+7662
+7663
+7664
+7665
+7666
+7667
+7668
+7669
+7670
+7671
+7672
+7673
+7674
+7675
+7676
+7677
+7678
+7679
+7680
+7681
+7682
+7683
+7684
+7685
+7686
+7687
+7688
+7689
+7690
+7691
+7692
+7693
+7694
+7695
+7696
+7697
+7698
+7699
+7700
+7701
+7702
+7703
+7704
+7705
+7706
+7707
+7708
+7709
+7710
+7711
+7712
+7713
+7714
+7715
+7716
+7717
+7718
+7719
+7720
+7721
+7722
+7723
+7724
+7725
+7726
+7727
+7728
+7729
+7730
+7731
+7732
+7733
+7734
+7735
+7736
+7737
+7738
+7739
+7740
+7741
+7742
+7743
+7744
+7745
+7746
+7747
+7748
+7749
+7750
+7751
+7752
+7753
+7754
+7755
+7756
+7757
+7758
+7759
+7760
+7761
+7762
+7763
+7764
+7765
+7766
+7767
+7768
+7769
+7770
+7771
+7772
+7773
+7774
+7775
+7776
+7777
+7778
+7779
+7780
+7781
+7782
+7783
+7784
+7785
+7786
+7787
+7788
+7789
+7790
+7791
+7792
+7793
+7794
+7795
+7796
+7797
+7798
+7799
+7800
+7801
+7802
+7803
+7804
+7805
+7806
+7807
+7808
+7809
+7810
+7811
+7812
+7813
+7814
+7815
+7816
+7817
+7818
+7819
+7820
+7821
+7822
+7823
+7824
+7825
+7826
+7827
+7828
+7829
+7830
+7831
+7832
+7833
+7834
+7835
+7836
+7837
+7838
+7839
+7840
+7841
+7842
+7843
+7844
+7845
+7846
+7847
+7848
+7849
+7850
+7851
+7852
+7853
+7854
+7855
+7856
+7857
+7858
+7859
+7860
+7861
+7862
+7863
+7864
+7865
+7866
+7867
+7868
+7869
+7870
+7871
+7872
+7873
+7874
+7875
+7876
+7877
+7878
+7879
+7880
+7881
+7882
+7883
+7884
+7885
+7886
+7887
+7888
+7889
+7890
+7891
+7892
+7893
+7894
+7895
+7896
+7897
+7898
+7899
+7900
+7901
+7902
+7903
+7904
+7905
+7906
+7907
+7908
+7909
+7910
+7911
+7912
+7913
+7914
+7915
+7916
+7917
+7918
+7919
+7920
+7921
+7922
+7923
+7924
+7925
+7926
+7927
+7928
+7929
+7930
+7931
+7932
+7933
+7934
+7935
+7936
+7937
+7938
+7939
+7940
+7941
+7942
+7943
+7944
+7945
+7946
+7947
+7948
+7949
+7950
+7951
+7952
+7953
+7954
+7955
+7956
+7957
+7958
+7959
+7960
+7961
+7962
+7963
+7964
+7965
+7966
+7967
+7968
+7969
+7970
+7971
+7972
+7973
+7974
+7975
+7976
+7977
+7978
+7979
+7980
+7981
+7982
+7983
+7984
+7985
+7986
+7987
+7988
+7989
+7990
+7991
+7992
+7993
+7994
+7995
+7996
+7997
+7998
+7999
+8000
+8001
+8002
+8003
+8004
+8005
+8006
+8007
+8008
+8009
+8010
+8011
+8012
+8013
+8014
+8015
+8016
+8017
+8018
+8019
+8020
+8021
+8022
+8023
+8024
+8025
+8026
+8027
+8028
+8029
+8030
+8031
+8032
+8033
+8034
+8035
+8036
+8037
+8038
+8039
+8040
+8041
+8042
+8043
+8044
+8045
+8046
+8047
+8048
+8049
+8050
+8051
+8052
+8053
+8054
+8055
+8056
+8057
+8058
+8059
+8060
+8061
+8062
+8063
+8064
+8065
+8066
+8067
+8068
+8069
+8070
+8071
+8072
+8073
+8074
+8075
+8076
+8077
+8078
+8079
+8080
+8081
+8082
+8083
+8084
+8085
+8086
+8087
+8088
+8089
+8090
+8091
+8092
+8093
+8094
+8095
+8096
+8097
+8098
+8099
+8100
+8101
+8102
+8103
+8104
+8105
+8106
+8107
+8108
+8109
+8110
+8111
+8112
+8113
+8114
+8115
+8116
+8117
+8118
+8119
+8120
+8121
+8122
+8123
+8124
+8125
+8126
+8127
+8128
+8129
+8130
+8131
+8132
+8133
+8134
+8135
+8136
+8137
+8138
+8139
+8140
+8141
+8142
+8143
+8144
+8145
+8146
+8147
+8148
+8149
+8150
+8151
+8152
+8153
+8154
+8155
+8156
+8157
+8158
+8159
+8160
+8161
+8162
+8163
+8164
+8165
+8166
+8167
+8168
+8169
+8170
+8171
+8172
+8173
+8174
+8175
+8176
+8177
+8178
+8179
+8180
+8181
+8182
+8183
+8184
+8185
+8186
+8187
+8188
+8189
+8190
+8191
+8192
+8193
+8194
+8195
+8196
+8197
+8198
+8199
+8200
+8201
+8202
+8203
+8204
+8205
+8206
+8207
+8208
+8209
+8210
+8211
+8212
+8213
+8214
+8215
+8216
+8217
+8218
+8219
+8220
+8221
+8222
+8223
+8224
+8225
+8226
+8227
+8228
+8229
+8230
+8231
+8232
+8233
+8234
+8235
+8236
+8237
+8238
+8239
+8240
+8241
+8242
+8243
+8244
+8245
+8246
+8247
+8248
+8249
+8250
+8251
+8252
+8253
+8254
+8255
+8256
+8257
+8258
+8259
+8260
+8261
+8262
+8263
+8264
+8265
+8266
+8267
+8268
+8269
+8270
+8271
+8272
+8273
+8274
+8275
+8276
+8277
+8278
+8279
+8280
+8281
+8282
+8283
+8284
+8285
+8286
+8287
+8288
+8289
+8290
+8291
+8292
+8293
+8294
+8295
+8296
+8297
+8298
+8299
+8300
+8301
+8302
+8303
+8304
+8305
+8306
+8307
+8308
+8309
+8310
+8311
+8312
+8313
+8314
+8315
+8316
+8317
+8318
+8319
+8320
+8321
+8322
+8323
+8324
+8325
+8326
+8327
+8328
+8329
+8330
+8331
+8332
+8333
+8334
+8335
+8336
+8337
+8338
+8339
+8340
+8341
+8342
+8343
+8344
+8345
+8346
+8347
+8348
+8349
+8350
+8351
+8352
+8353
+8354
+8355
+8356
+8357
+8358
+8359
+8360
+8361
+8362
+8363
+8364
+8365
+8366
+8367
+8368
+8369
+8370
+8371
+8372
+8373
+8374
+8375
+8376
+8377
+8378
+8379
+8380
+8381
+8382
+8383
+8384
+8385
+8386
+8387
+8388
+8389
+8390
+8391
+8392
+8393
+8394
+8395
+8396
+8397
+8398
+8399
+8400
+8401
+8402
+8403
+8404
+8405
+8406
+8407
+8408
+8409
+8410
+8411
+8412
+8413
+8414
+8415
+8416
+8417
+8418
+8419
+8420
+8421
+8422
+8423
+8424
+8425
+8426
+8427
+8428
+8429
+8430
+8431
+8432
+8433
+8434
+8435
+8436
+8437
+8438
+8439
+8440
+8441
+8442
+8443
+8444
+8445
+8446
+8447
+8448
+8449
+8450
+8451
+8452
+8453
+8454
+8455
+8456
+8457
+8458
+8459
+8460
+8461
+8462
+8463
+8464
+8465
+8466
+8467
+8468
+8469
+8470
+8471
+8472
+8473
+8474
+8475
+8476
+8477
+8478
+8479
+8480
+8481
+8482
+8483
+8484
+8485
+8486
+8487
+8488
+8489
+8490
+8491
+8492
+8493
+8494
+8495
+8496
+8497
+8498
+8499
+8500
+8501
+8502
+8503
+8504
+8505
+8506
+8507
+8508
+8509
+8510
+8511
+8512
+8513
+8514
+8515
+8516
+8517
+8518
+8519
+8520
+8521
+8522
+8523
+8524
+8525
+8526
+8527
+8528
+8529
+8530
+8531
+8532
+8533
+8534
+8535
+8536
+8537
+8538
+8539
+8540
+8541
+8542
+8543
+8544
+8545
+8546
+8547
+8548
+8549
+8550
+8551
+8552
+8553
+8554
+8555
+8556
+8557
+8558
+8559
+8560
+8561
+8562
+8563
+8564
+8565
+8566
+8567
+8568
+8569
+8570
+8571
+8572
+8573
+8574
+8575
+8576
+8577
+8578
+8579
+8580
+8581
+8582
+8583
+8584
+8585
+8586
+8587
+8588
+8589
+8590
+8591
+8592
+8593
+8594
+8595
+8596
+8597
+8598
+8599
+8600
+8601
+8602
+8603
+8604
+8605
+8606
+8607
+8608
+8609
+8610
+8611
+8612
+8613
+8614
+8615
+8616
+8617
+8618
+8619
+8620
+8621
+8622
+8623
+8624
+8625
+8626
+8627
+8628
+8629
+8630
+8631
+8632
+8633
+8634
+8635
+8636
+8637
+8638
+8639
+8640
+8641
+8642
+8643
+8644
+8645
+8646
+8647
+8648
+8649
+8650
+8651
+8652
+8653
+8654
+8655
+8656
+8657
+8658
+8659
+8660
+8661
+8662
+8663
+8664
+8665
+8666
+8667
+8668
+8669
+8670
+8671
+8672
+8673
+8674
+8675
+8676
+8677
+8678
+8679
+8680
+8681
+8682
+8683
+8684
+8685
+8686
+8687
+8688
+8689
+8690
+8691
+8692
+8693
+8694
+8695
+8696
+8697
+8698
+8699
+8700
+8701
+8702
+8703
+8704
+8705
+8706
+8707
+8708
+8709
+8710
+8711
+8712
+8713
+8714
+8715
+8716
+8717
+8718
+8719
+8720
+8721
+8722
+8723
+8724
+8725
+8726
+8727
+8728
+8729
+8730
+8731
+8732
+8733
+8734
+8735
+8736
+8737
+8738
+8739
+8740
+8741
+8742
+8743
+8744
+8745
+8746
+8747
+8748
+8749
+8750
+8751
+8752
+8753
+8754
+8755
+8756
+8757
+8758
+8759
+8760
+8761
+8762
+8763
+8764
+8765
+8766
+8767
+8768
+8769
+8770
+8771
+8772
+8773
+8774
+8775
+8776
+8777
+8778
+8779
+8780
+8781
+8782
+8783
+8784
+8785
+8786
+8787
+8788
+8789
+8790
+8791
+8792
+8793
+8794
+8795
+8796
+8797
+8798
+8799
+8800
+8801
+8802
+8803
+8804
+8805
+8806
+8807
+8808
+8809
+8810
+8811
+8812
+8813
+8814
+8815
+8816
+8817
+8818
+8819
+8820
+8821
+8822
+8823
+8824
+8825
+8826
+8827
+8828
+8829
+8830
+8831
+8832
+8833
+8834
+8835
+8836
+8837
+8838
+8839
+8840
+8841
+8842
+8843
+8844
+8845
+8846
+8847
+8848
+8849
+8850
+8851
+8852
+8853
+8854
+8855
+8856
+8857
+8858
+8859
+8860
+8861
+8862
+8863
+8864
+8865
+8866
+8867
+8868
+8869
+8870
+8871
+8872
+8873
+8874
+8875
+8876
+8877
+8878
+8879
+8880
+8881
+8882
+8883
+8884
+8885
+8886
+8887
+8888
+8889
+8890
+8891
+8892
+8893
+8894
+8895
+8896
+8897
+8898
+8899
+8900
+8901
+8902
+8903
+8904
+8905
+8906
+8907
+8908
+8909
+8910
+8911
+8912
+8913
+8914
+8915
+8916
+8917
+8918
+8919
+8920
+8921
+8922
+8923
+8924
+8925
+8926
+8927
+8928
+8929
+8930
+8931
+8932
+8933
+8934
+8935
+8936
+8937
+8938
+8939
+8940
+8941
+8942
+8943
+8944
+8945
+8946
+8947
+8948
+8949
+8950
+8951
+8952
+8953
+8954
+8955
+8956
+8957
+8958
+8959
+8960
+8961
+8962
+8963
+8964
+8965
+8966
+8967
+8968
+8969
+8970
+8971
+8972
+8973
+8974
+8975
+8976
+8977
+8978
+8979
+8980
+8981
+8982
+8983
+8984
+8985
+8986
+8987
+8988
+8989
+8990
+8991
+8992
+8993
+8994
+8995
+8996
+8997
+8998
+8999
+9000
+9001
+9002
+9003
+9004
+9005
+9006
+9007
+9008
+9009
+9010
+9011
+9012
+9013
+9014
+9015
+9016
+9017
+9018
+9019
+9020
+9021
+9022
+9023
+9024
+9025
+9026
+9027
+9028
+9029
+9030
+9031
+9032
+9033
+9034
+9035
+9036
+9037
+9038
+9039
+9040
+9041
+9042
+9043
+9044
+9045
+9046
+9047
+9048
+9049
+9050
+9051
+9052
+9053
+9054
+9055
+9056
+9057
+9058
+9059
+9060
+9061
+9062
+9063
+9064
+9065
+9066
+9067
+9068
+9069
+9070
+9071
+9072
+9073
+9074
+9075
+9076
+9077
+9078
+9079
+9080
+9081
+9082
+9083
+9084
+9085
+9086
+9087
+9088
+9089
+9090
+9091
+9092
+9093
+9094
+9095
+9096
+9097
+9098
+9099
+9100
+9101
+9102
+9103
+9104
+9105
+9106
+9107
+9108
+9109
+9110
+9111
+9112
+9113
+9114
+9115
+9116
+9117
+9118
+9119
+9120
+9121
+9122
+9123
+9124
+9125
+9126
+9127
+9128
+9129
+9130
+9131
+9132
+9133
+9134
+9135
+9136
+9137
+9138
+9139
+9140
+9141
+9142
+9143
+9144
+9145
+9146
+9147
+9148
+9149
+9150
+9151
+9152
+9153
+9154
+9155
+9156
+9157
+9158
+9159
+9160
+9161
+9162
+9163
+9164
+9165
+9166
+9167
+9168
+9169
+9170
+9171
+9172
+9173
+9174
+9175
+9176
+9177
+9178
+9179
+9180
+9181
+9182
+9183
+9184
+9185
+9186
+9187
+9188
+9189
+9190
+9191
+9192
+9193
+9194
+9195
+9196
+9197
+9198
+9199
+9200
+9201
+9202
+9203
+9204
+9205
+9206
+9207
+9208
+9209
+9210
+9211
+9212
+9213
+9214
+9215
+9216
+9217
+9218
+9219
+9220
+9221
+9222
+9223
+9224
+9225
+9226
+9227
+9228
+9229
+9230
+9231
+9232
+9233
+9234
+9235
+9236
+9237
+9238
+9239
+9240
+9241
+9242
+9243
+9244
+9245
+9246
+9247
+9248
+9249
+9250
+9251
+9252
+9253
+9254
+9255
+9256
+9257
+9258
+9259
+9260
+9261
+9262
+9263
+9264
+9265
+9266
+9267
+9268
+9269
+9270
+9271
+9272
+9273
+9274
+9275
+9276
+9277
+9278
+9279
+9280
+9281
+9282
+9283
+9284
+9285
+9286
+9287
+9288
+9289
+9290
+9291
+9292
+9293
+9294
+9295
+9296
+9297
+9298
+9299
+9300
+9301
+9302
+9303
+9304
+9305
+9306
+9307
+9308
+9309
+9310
+9311
+9312
+9313
+9314
+9315
+9316
+9317
+9318
+9319
+9320
+9321
+9322
+9323
+9324
+9325
+9326
+9327
+9328
+9329
+9330
+9331
+9332
+9333
+9334
+9335
+9336
+9337
+9338
+9339
+9340
+9341
+9342
+9343
+9344
+9345
+9346
+9347
+9348
+9349
+9350
+9351
+9352
+9353
+9354
+9355
+9356
+9357
+9358
+9359
+9360
+9361
+9362
+9363
+9364
+9365
+9366
+9367
+9368
+9369
+9370
+9371
+9372
+9373
+9374
+9375
+9376
+9377
+9378
+9379
+9380
+9381
+9382
+9383
+9384
+9385
+9386
+9387
+9388
+9389
+9390
+9391
+9392
+9393
+9394
+9395
+9396
+9397
+9398
+9399
+9400
+9401
+9402
+9403
+9404
+9405
+9406
+9407
+9408
+9409
+9410
+9411
+9412
+9413
+9414
+9415
+9416
+9417
+9418
+9419
+9420
+9421
+9422
+9423
+9424
+9425
+9426
+9427
+9428
+9429
+9430
+9431
+9432
+9433
+9434
+9435
+9436
+9437
+9438
+9439
+9440
+9441
+9442
+9443
+9444
+9445
+9446
+9447
+9448
+9449
+9450
+9451
+9452
+9453
+9454
+9455
+9456
+9457
+9458
+9459
+9460
+9461
+9462
+9463
+9464
+9465
+9466
+9467
+9468
+9469
+9470
+9471
+9472
+9473
+9474
+9475
+9476
+9477
+9478
+9479
+9480
+9481
+9482
+9483
+9484
+9485
+9486
+9487
+9488
+9489
+9490
+9491
+9492
+9493
+9494
+9495
+9496
+9497
+9498
+9499
+9500
+9501
+9502
+9503
+9504
+9505
+9506
+9507
+9508
+9509
+9510
+9511
+9512
+9513
+9514
+9515
+9516
+9517
+9518
+9519
+9520
+9521
+9522
+9523
+9524
+9525
+9526
+9527
+9528
+9529
+9530
+9531
+9532
+9533
+9534
+9535
+9536
+9537
+9538
+9539
+9540
+9541
+9542
+9543
+9544
+9545
+9546
+9547
+9548
+9549
+9550
+9551
+9552
+9553
+9554
+9555
+9556
+9557
+9558
+9559
+9560
+9561
+9562
+9563
+9564
+9565
+9566
+9567
+9568
+9569
+9570
+9571
+9572
+9573
+9574
+9575
+9576
+9577
+9578
+9579
+9580
+9581
+9582
+9583
+9584
+9585
+9586
+9587
+9588
+9589
+9590
+9591
+9592
+9593
+9594
+9595
+9596
+9597
+9598
+9599
+9600
+9601
+9602
+9603
+9604
+9605
+9606
+9607
+9608
+9609
+9610
+9611
+9612
+9613
+9614
+9615
+9616
+9617
+9618
+9619
+9620
+9621
+9622
+9623
+9624
+9625
+9626
+9627
+9628
+9629
+9630
+9631
+9632
+9633
+9634
+9635
+9636
+9637
+9638
+9639
+9640
+9641
+9642
+9643
+9644
+9645
+9646
+9647
+9648
+9649
+9650
+9651
+9652
+9653
+9654
+9655
+9656
+9657
+9658
+9659
+9660
+9661
+9662
+9663
+9664
+9665
+9666
+9667
+9668
+9669
+9670
+9671
+9672
+9673
+9674
+9675
+9676
+9677
+9678
+9679
+9680
+9681
+9682
+9683
+9684
+9685
+9686
+9687
+9688
+9689
+9690
+9691
+9692
+9693
+9694
+9695
+9696
+9697
+9698
+9699
+9700
+9701
+9702
+9703
+9704
+9705
+9706
+9707
+9708
+9709
+9710
+9711
+9712
+9713
+9714
+9715
+9716
+9717
+9718
+9719
+9720
+9721
+9722
+9723
+9724
+9725
+9726
+9727
+9728
+9729
+9730
+9731
+9732
+9733
+9734
+9735
+9736
+9737
+9738
+9739
+9740
+9741
+9742
+9743
+9744
+9745
+9746
+9747
+9748
+9749
+9750
+9751
+9752
+9753
+9754
+9755
+9756
+9757
+9758
+9759
+9760
+9761
+9762
+9763
+9764
+9765
+9766
+9767
+9768
+9769
+9770
+9771
+9772
+9773
+9774
+9775
+9776
+9777
+9778
+9779
+9780
+9781
+9782
+9783
+9784
+9785
+9786
+9787
+9788
+9789
+9790
+9791
+9792
+9793
+9794
+9795
+9796
+9797
+9798
+9799
+9800
+9801
+9802
+9803
+9804
+9805
+9806
+9807
+9808
+9809
+9810
+9811
+9812
+9813
+9814
+9815
+9816
+9817
+9818
+9819
+9820
+9821
+9822
+9823
+9824
+9825
+9826
+9827
+9828
+9829
+9830
+9831
+9832
+9833
+9834
+9835
+9836
+9837
+9838
+9839
+9840
+9841
+9842
+9843
+9844
+9845
+9846
+9847
+9848
+9849
+9850
+9851
+9852
+9853
+9854
+9855
+9856
+9857
+9858
+9859
+9860
+9861
+9862
+9863
+9864
+9865
+9866
+9867
+9868
+9869
+9870
+9871
+9872
+9873
+9874
+9875
+9876
+9877
+9878
+9879
+9880
+9881
+9882
+9883
+9884
+9885
+9886
+9887
+9888
+9889
+9890
+9891
+9892
+9893
+9894
+9895
+9896
+9897
+9898
+9899
+9900
+9901
+9902
+9903
+9904
+9905
+9906
+9907
+9908
+9909
+9910
+9911
+9912
+9913
+9914
+9915
+9916
+9917
+9918
+9919
+9920
+9921
+9922
+9923
+9924
+9925
+9926
+9927
+9928
+9929
+9930
+9931
+9932
+9933
+9934
+9935
+9936
+9937
+9938
+9939
+9940
+9941
+9942
+9943
+9944
+9945
+9946
+9947
+9948
+9949
+9950
+9951
+9952
+9953
+9954
+9955
+9956
+9957
+9958
+9959
+9960
+9961
+9962
+9963
+9964
+9965
+9966
+9967
+9968
+9969
+9970
+9971
+9972
+9973
+9974
+9975
+9976
+9977
+9978
+9979
+9980
+9981
+9982
+9983
+9984
+9985
+9986
+9987
+9988
+9989
+9990
+9991
+9992
+9993
+9994
+9995
+9996
+9997
+9998
+9999
+10000
+10001
+10002
+10003
+10004
+10005
+10006
+10007
+10008
+10009
+10010
+10011
+10012
+10013
+10014
+10015
+10016
+10017
+10018
+10019
+10020
+10021
+10022
+10023
+10024
+10025
+10026
+10027
+10028
+10029
+10030
+10031
+10032
+10033
+10034
+10035
+10036
+10037
+10038
+10039
+10040
+10041
+10042
+10043
+10044
+10045
+10046
+10047
+10048
+10049
+10050
+10051
+10052
+10053
+10054
+10055
+10056
+10057
+10058
+10059
+10060
+10061
+10062
+10063
+10064
+10065
+10066
+10067
+10068
+10069
+10070
+10071
+10072
+10073
+10074
+10075
+10076
+10077
+10078
+10079
+10080
+10081
+10082
+10083
+10084
+10085
+10086
+10087
+10088
+10089
+10090
+10091
+10092
+10093
+10094
+10095
+10096
+10097
+10098
+10099
+10100
+10101
+10102
+10103
+10104
+10105
+10106
+10107
+10108
+10109
+10110
+10111
+10112
+10113
+10114
+10115
+10116
+10117
+10118
+10119
+10120
+10121
+10122
+10123
+10124
+10125
+10126
+10127
+10128
+10129
+10130
+10131
+10132
+10133
+10134
+10135
+10136
+10137
+10138
+10139
+10140
+10141
+10142
+10143
+10144
+10145
+10146
+10147
+10148
+10149
+10150
+10151
+10152
+10153
+10154
+10155
+10156
+10157
+10158
+10159
+10160
+10161
+10162
+10163
+10164
+10165
+10166
+10167
+10168
+10169
+10170
+10171
+10172
+10173
+10174
+10175
+10176
+10177
+10178
+10179
+10180
+10181
+10182
+10183
+10184
+10185
+10186
+10187
+10188
+10189
+10190
+10191
+10192
+10193
+10194
+10195
+10196
+10197
+10198
+10199
+10200
+10201
+10202
+10203
+10204
+10205
+10206
+10207
+10208
+10209
+10210
+10211
+10212
+10213
+10214
+10215
+10216
+10217
+10218
+10219
+10220
+10221
+10222
+10223
+10224
+10225
+10226
+10227
+10228
+10229
+10230
+10231
+10232
+10233
+10234
+10235
+10236
+10237
+10238
+10239
+10240
+10241
+10242
+10243
+10244
+10245
+10246
+10247
+10248
+10249
+10250
+10251
+10252
+10253
+10254
+10255
+10256
+10257
+10258
+10259
+10260
+10261
+10262
+10263
+10264
+10265
+10266
+10267
+10268
+10269
+10270
+10271
+10272
+10273
+10274
+10275
+10276
+10277
+10278
+10279
+10280
+10281
+10282
+10283
+10284
+10285
+10286
+10287
+10288
+10289
+10290
+10291
+10292
+10293
+10294
+10295
+10296
+10297
+10298
+10299
+10300
+10301
+10302
+10303
+10304
+10305
+10306
+10307
+10308
+10309
+10310
+10311
+10312
+10313
+10314
+10315
+10316
+10317
+10318
+10319
+10320
+10321
+10322
+10323
+10324
+10325
+10326
+10327
+10328
+10329
+10330
+10331
+10332
+10333
+10334
+10335
+10336
+10337
+10338
+10339
+10340
+10341
+10342
+10343
+10344
+10345
+10346
+10347
+10348
+10349
+10350
+10351
+10352
+10353
+10354
+10355
+10356
+10357
+10358
+10359
+10360
+10361
+10362
+10363
+10364
+10365
+10366
+10367
+10368
+10369
+10370
+10371
+10372
+10373
+10374
+10375
+10376
+10377
+10378
+10379
+10380
+10381
+10382
+10383
+10384
+10385
+10386
+10387
+10388
+10389
+10390
+10391
+10392
+10393
+10394
+10395
+10396
+10397
+10398
+10399
+10400
+10401
+10402
+10403
+10404
+10405
+10406
+10407
+10408
+10409
+10410
+10411
+10412
+10413
+10414
+10415
+10416
+10417
+10418
+10419
+10420
+10421
+10422
+10423
+10424
+10425
+10426
+10427
+10428
+10429
+10430
+10431
+10432
+10433
+10434
+10435
+10436
+10437
+10438
+10439
+10440
+10441
+10442
+10443
+10444
+10445
+10446
+10447
+10448
+10449
+10450
+10451
+10452
+10453
+10454
+10455
+10456
+10457
+10458
+10459
+10460
+10461
+10462
+10463
+10464
+10465
+10466
+10467
+10468
+10469
+10470
+10471
+10472
+10473
+10474
+10475
+10476
+10477
+10478
+10479
+10480
+10481
+10482
+10483
+10484
+10485
+10486
+10487
+10488
+10489
+10490
+10491
+10492
+10493
+10494
+10495
+10496
+10497
+10498
+10499
+10500
+10501
+10502
+10503
+10504
+10505
+10506
+10507
+10508
+10509
+10510
+10511
+10512
+10513
+10514
+10515
+10516
+10517
+10518
+10519
+10520
+10521
+10522
+10523
+10524
+10525
+10526
+10527
+10528
+10529
+10530
+10531
+10532
+10533
+10534
+10535
+10536
+10537
+10538
+10539
+10540
+10541
+10542
+10543
+10544
+10545
+10546
+10547
+10548
+10549
+10550
+10551
+10552
+10553
+10554
+10555
+10556
+10557
+10558
+10559
+10560
+10561
+10562
+10563
+10564
+10565
+10566
+10567
+10568
+10569
+10570
+10571
+10572
+10573
+10574
+10575
+10576
+10577
+10578
+10579
+10580
+10581
+10582
+10583
+10584
+10585
+10586
+10587
+10588
+10589
+10590
+10591
+10592
+10593
+10594
+10595
+10596
+10597
+10598
+10599
+10600
+10601
+10602
+10603
+10604
+10605
+10606
+10607
+10608
+10609
+10610
+10611
+10612
+10613
+10614
+10615
+10616
+10617
+10618
+10619
+10620
+10621
+10622
+10623
+10624
+10625
+10626
+10627
+10628
+10629
+10630
+10631
+10632
+10633
+10634
+10635
+10636
+10637
+10638
+10639
+10640
+10641
+10642
+10643
+10644
+10645
+10646
+10647
+10648
+10649
+10650
+10651
+10652
+10653
+10654
+10655
+10656
+10657
+10658
+10659
+10660
+10661
+10662
+10663
+10664
+10665
+10666
+10667
+10668
+10669
+10670
+10671
+10672
+10673
+10674
+10675
+10676
+10677
+10678
+10679
+10680
+10681
+10682
+10683
+10684
+10685
+10686
+10687
+10688
+10689
+10690
+10691
+10692
+10693
+10694
+10695
+10696
+10697
+10698
+10699
+10700
+10701
+10702
+10703
+10704
+10705
+10706
+10707
+10708
+10709
+10710
+10711
+10712
+10713
+10714
+10715
+10716
+10717
+10718
+10719
+10720
+10721
+10722
+10723
+10724
+10725
+10726
+10727
+10728
+10729
+10730
+10731
+10732
+10733
+10734
+10735
+10736
+10737
+10738
+10739
+10740
+10741
+10742
+10743
+10744
+10745
+10746
+10747
+10748
+10749
+10750
+10751
+10752
+10753
+10754
+10755
+10756
+10757
+10758
+10759
+10760
+10761
+10762
+10763
+10764
+10765
+10766
+10767
+10768
+10769
+10770
+10771
+10772
+10773
+10774
+10775
+10776
+10777
+10778
+10779
+10780
+10781
+10782
+10783
+10784
+10785
+10786
+10787
+10788
+10789
+10790
+10791
+10792
+10793
+10794
+10795
+10796
+10797
+10798
+10799
+10800
+10801
+10802
+10803
+10804
+10805
+10806
+10807
+10808
+10809
+10810
+10811
+10812
+10813
+10814
+10815
+10816
+10817
+10818
+10819
+10820
+10821
+10822
+10823
+10824
+10825
+10826
+10827
+10828
+10829
+10830
+10831
+10832
+10833
+10834
+10835
+10836
+10837
+10838
+10839
+10840
+10841
+10842
+10843
+10844
+10845
+10846
+10847
+10848
+10849
+10850
+10851
+10852
+10853
+10854
+10855
+10856
+10857
+10858
+10859
+10860
+10861
+10862
+10863
+10864
+10865
+10866
+10867
+10868
+10869
+10870
+10871
+10872
+10873
+10874
+10875
+10876
+10877
+10878
+10879
+10880
+10881
+10882
+10883
+10884
+10885
+10886
+10887
+10888
+10889
+10890
+10891
+10892
+10893
+10894
+10895
+10896
+10897
+10898
+10899
+10900
+10901
+10902
+10903
+10904
+10905
+10906
+10907
+10908
+10909
+10910
+10911
+10912
+10913
+10914
+10915
+10916
+10917
+10918
+10919
+10920
+10921
+10922
+10923
+10924
+10925
+10926
+10927
+10928
+10929
+10930
+10931
+10932
+10933
+10934
+10935
+10936
+10937
+10938
+10939
+10940
+10941
+10942
+10943
+10944
+10945
+10946
+10947
+10948
+10949
+10950
+10951
+10952
+10953
+10954
+10955
+10956
+10957
+10958
+10959
+10960
+10961
+10962
+10963
+10964
+10965
+10966
+10967
+10968
+10969
+10970
+10971
+10972
+10973
+10974
+10975
+10976
+10977
+10978
+10979
+10980
+10981
+10982
+10983
+10984
+10985
+10986
+10987
+10988
+10989
+10990
+10991
+10992
+10993
+10994
+10995
+10996
+10997
+10998
+10999
+11000
+11001
+11002
+11003
+11004
+11005
+11006
+11007
+11008
+11009
+11010
+11011
+11012
+11013
+11014
+11015
+11016
+11017
+11018
+11019
+11020
+11021
+11022
+11023
+11024
+11025
+11026
+11027
+11028
+11029
+11030
+11031
+11032
+11033
+11034
+11035
+11036
+11037
+11038
+11039
+11040
+11041
+11042
+11043
+11044
+11045
+11046
+11047
+11048
+11049
+11050
+11051
+11052
+11053
+11054
+11055
+11056
+11057
+11058
+11059
+11060
+11061
+11062
+11063
+11064
+11065
+11066
+11067
+11068
+11069
+11070
+11071
+11072
+11073
+11074
+11075
+11076
+11077
+11078
+11079
+11080
+11081
+11082
+11083
+11084
+11085
+11086
+11087
+11088
+11089
+11090
+11091
+11092
+11093
+11094
+11095
+11096
+11097
+11098
+11099
+11100
+11101
+11102
+11103
+11104
+11105
+11106
+11107
+11108
+11109
+11110
+11111
+11112
+11113
+11114
+11115
+11116
+11117
+11118
+11119
+11120
+11121
+11122
+11123
+11124
+11125
+11126
+11127
+11128
+11129
+11130
+11131
+11132
+11133
+11134
+11135
+11136
+11137
+11138
+11139
+11140
+11141
+11142
+11143
+11144
+11145
+11146
+11147
+11148
+11149
+11150
+11151
+11152
+11153
+11154
+11155
+11156
+11157
+11158
+11159
+11160
+11161
+11162
+11163
+11164
+11165
+11166
+11167
+11168
+11169
+11170
+11171
+11172
+11173
+11174
+11175
+11176
+11177
+11178
+11179
+11180
+11181
+11182
+11183
+11184
+11185
+11186
+11187
+11188
+11189
+11190
+11191
+11192
+11193
+11194
+11195
+11196
+11197
+11198
+11199
+11200
+11201
+11202
+11203
+11204
+11205
+11206
+11207
+11208
+11209
+11210
+11211
+11212
+11213
+11214
+11215
+11216
+11217
+11218
+11219
+11220
+11221
+11222
+11223
+11224
+11225
+11226
+11227
+11228
+11229
+11230
+11231
+11232
+11233
+11234
+11235
+11236
+11237
+11238
+11239
+11240
+11241
+11242
+11243
+11244
+11245
+11246
+11247
+11248
+11249
+11250
+11251
+11252
+11253
+11254
+11255
+11256
+11257
+11258
+11259
+11260
+11261
+11262
+11263
+11264
+11265
+11266
+11267
+11268
+11269
+11270
+11271
+11272
+11273
+11274
+11275
+11276
+11277
+11278
+11279
+11280
+11281
+11282
+11283
+11284
+11285
+11286
+11287
+11288
+11289
+11290
+11291
+11292
+11293
+11294
+11295
+11296
+11297
+11298
+11299
+11300
+11301
+11302
+11303
+11304
+11305
+11306
+11307
+11308
+11309
+11310
+11311
+11312
+11313
+11314
+11315
+11316
+11317
+11318
+11319
+11320
+11321
+11322
+11323
+11324
+11325
+11326
+11327
+11328
+11329
+11330
+11331
+11332
+11333
+11334
+11335
+11336
+11337
+11338
+11339
+11340
+11341
+11342
+11343
+11344
+11345
+11346
+11347
+11348
+11349
+11350
+11351
+11352
+11353
+11354
+11355
+11356
+11357
+11358
+11359
+11360
+11361
+11362
+11363
+11364
+11365
+11366
+11367
+11368
+11369
+11370
+11371
+11372
+11373
+11374
+11375
+11376
+11377
+11378
+11379
+11380
+11381
+11382
+11383
+11384
+11385
+11386
+11387
+11388
+11389
+11390
+11391
+11392
+11393
+11394
+11395
+11396
+11397
+11398
+11399
+11400
+11401
+11402
+11403
+11404
+11405
+11406
+11407
+11408
+11409
+11410
+11411
+11412
+11413
+11414
+11415
+11416
+11417
+11418
+11419
+11420
+11421
+11422
+11423
+11424
+11425
+11426
+11427
+11428
+11429
+11430
+11431
+11432
+11433
+11434
+11435
+11436
+11437
+11438
+11439
+11440
+11441
+11442
+11443
+11444
+11445
+11446
+11447
+11448
+11449
+11450
+11451
+11452
+11453
+11454
+11455
+11456
+11457
+11458
+11459
+11460
+11461
+11462
+11463
+11464
+11465
+11466
+11467
+11468
+11469
+11470
+11471
+11472
+11473
+11474
+11475
+11476
+11477
+11478
+11479
+11480
+11481
+11482
+11483
+11484
+11485
+11486
+11487
+11488
+11489
+11490
+11491
+11492
+11493
+11494
+11495
+11496
+11497
+11498
+11499
+11500
+11501
+11502
+11503
+11504
+11505
+11506
+11507
+11508
+11509
+11510
+11511
+11512
+11513
+11514
+11515
+11516
+11517
+11518
+11519
+11520
+11521
+11522
+11523
+11524
+11525
+11526
+11527
+11528
+11529
+11530
+11531
+11532
+11533
+11534
+11535
+11536
+11537
+11538
+11539
+11540
+11541
+11542
+11543
+11544
+11545
+11546
+11547
+11548
+11549
+11550
+11551
+11552
+11553
+11554
+11555
+11556
+11557
+11558
+11559
+11560
+11561
+11562
+11563
+11564
+11565
+11566
+11567
+11568
+11569
+11570
+11571
+11572
+11573
+11574
+11575
+11576
+11577
+11578
+11579
+11580
+11581
+11582
+11583
+11584
+11585
+11586
+11587
+11588
+11589
+11590
+11591
+11592
+11593
+11594
+11595
+11596
+11597
+11598
+11599
+11600
+11601
+11602
+11603
+11604
+11605
+11606
+11607
+11608
+11609
+11610
+11611
+11612
+11613
+11614
+11615
+11616
+11617
+11618
+11619
+11620
+11621
+11622
+11623
+11624
+11625
+11626
+11627
+11628
+11629
+11630
+11631
+11632
+11633
+11634
+11635
+11636
+11637
+11638
+11639
+11640
+11641
+11642
+11643
+11644
+11645
+11646
+11647
+11648
+11649
+11650
+11651
+11652
+11653
+11654
+11655
+11656
+11657
+11658
+11659
+11660
+11661
+11662
+11663
+11664
+11665
+11666
+11667
+11668
+11669
+11670
+11671
+11672
+11673
+11674
+11675
+11676
+11677
+11678
+11679
+11680
+11681
+11682
+11683
+11684
+11685
+11686
+11687
+11688
+11689
+11690
+11691
+11692
+11693
+11694
+11695
+11696
+11697
+11698
+11699
+11700
+11701
+11702
+11703
+11704
+11705
+11706
+11707
+11708
+11709
+11710
+11711
+11712
+11713
+11714
+11715
+11716
+11717
+11718
+11719
+11720
+11721
+11722
+11723
+11724
+11725
+11726
+11727
+11728
+11729
+11730
+11731
+11732
+11733
+11734
+11735
+11736
+11737
+11738
+11739
+11740
+11741
+11742
+11743
+11744
+11745
+11746
+11747
+11748
+11749
+11750
+11751
+11752
+11753
+11754
+11755
+11756
+11757
+11758
+11759
+11760
+11761
+11762
+11763
+11764
+11765
+11766
+11767
+11768
+11769
+11770
+11771
+11772
+11773
+11774
+11775
+11776
+11777
+11778
+11779
+11780
+11781
+11782
+11783
+11784
+11785
+11786
+11787
+11788
+11789
+11790
+11791
+11792
+11793
+11794
+11795
+11796
+11797
+11798
+11799
+11800
+11801
+11802
+11803
+11804
+11805
+11806
+11807
+11808
+11809
+11810
+11811
+11812
+11813
+11814
+11815
+11816
+11817
+11818
+11819
+11820
+11821
+11822
+11823
+11824
+11825
+11826
+11827
+11828
+11829
+11830
+11831
+11832
+11833
+11834
+11835
+11836
+11837
+11838
+11839
+11840
+11841
+11842
+11843
+11844
+11845
+11846
+11847
+11848
+11849
+11850
+11851
+11852
+11853
+11854
+11855
+11856
+11857
+11858
+11859
+11860
+11861
+11862
+11863
+11864
+11865
+11866
+11867
+11868
+11869
+11870
+11871
+11872
+11873
+11874
+11875
+11876
+11877
+11878
+11879
+11880
+11881
+11882
+11883
+11884
+11885
+11886
+11887
+11888
+11889
+11890
+11891
+11892
+11893
+11894
+11895
+11896
+11897
+11898
+11899
+11900
+11901
+11902
+11903
+11904
+11905
+11906
+11907
+11908
+11909
+11910
+11911
+11912
+11913
+11914
+11915
+11916
+11917
+11918
+11919
+11920
+11921
+11922
+11923
+11924
+11925
+11926
+11927
+11928
+11929
+11930
+11931
+11932
+11933
+11934
+11935
+11936
+11937
+11938
+11939
+11940
+11941
+11942
+11943
+11944
+11945
+11946
+11947
+11948
+11949
+11950
+11951
+11952
+11953
+11954
+11955
+11956
+11957
+11958
+11959
+11960
+11961
+11962
+11963
+11964
+11965
+11966
+11967
+11968
+11969
+11970
+11971
+11972
+11973
+11974
+11975
+11976
+11977
+11978
+11979
+11980
+11981
+11982
+11983
+11984
+11985
+11986
+11987
+11988
+11989
+11990
+11991
+11992
+11993
+11994
+11995
+11996
+11997
+11998
+11999
+12000
+12001
+12002
+12003
+12004
+12005
+12006
+12007
+12008
+12009
+12010
+12011
+12012
+12013
+12014
+12015
+12016
+12017
+12018
+12019
+12020
+12021
+12022
+12023
+12024
+12025
+12026
+12027
+12028
+12029
+12030
+12031
+12032
+12033
+12034
+12035
+12036
+12037
+12038
+12039
+12040
+12041
+12042
+12043
+12044
+12045
+12046
+12047
+12048
+12049
+12050
+12051
+12052
+12053
+12054
+12055
+12056
+12057
+12058
+12059
+12060
+12061
+12062
+12063
+12064
+12065
+12066
+12067
+12068
+12069
+12070
+12071
+12072
+12073
+12074
+12075
+12076
+12077
+12078
+12079
+12080
+12081
+12082
+12083
+12084
+12085
+12086
+12087
+12088
+12089
+12090
+12091
+12092
+12093
+12094
+12095
+12096
+12097
+12098
+12099
+12100
+12101
+12102
+12103
+12104
+12105
+12106
+12107
+12108
+12109
+12110
+12111
+12112
+12113
+12114
+12115
+12116
+12117
+12118
+12119
+12120
+12121
+12122
+12123
+12124
+12125
+12126
+12127
+12128
+12129
+12130
+12131
+12132
+12133
+12134
+12135
+12136
+12137
+12138
+12139
+12140
+12141
+12142
+12143
+12144
+12145
+12146
+12147
+12148
+12149
+12150
+12151
+12152
+12153
+12154
+12155
+12156
+12157
+12158
+12159
+12160
+12161
+12162
+12163
+12164
+12165
+12166
+12167
+12168
+12169
+12170
+12171
+12172
+12173
+12174
+12175
+12176
+12177
+12178
+12179
+12180
+12181
+12182
+12183
+12184
+12185
+12186
+12187
+12188
+12189
+12190
+12191
+12192
+12193
+12194
+12195
+12196
+12197
+12198
+12199
+12200
+12201
+12202
+12203
+12204
+12205
+12206
+12207
+12208
+12209
+12210
+12211
+12212
+12213
+12214
+12215
+12216
+12217
+12218
+12219
+12220
+12221
+12222
+12223
+12224
+12225
+12226
+12227
+12228
+12229
+12230
+12231
+12232
+12233
+12234
+12235
+12236
+12237
+12238
+12239
+12240
+12241
+12242
+12243
+12244
+12245
+12246
+12247
+12248
+12249
+12250
+12251
+12252
+12253
+12254
+12255
+12256
+12257
+12258
+12259
+12260
+12261
+12262
+12263
+12264
+12265
+12266
+12267
+12268
+12269
+12270
+12271
+12272
+12273
+12274
+12275
+12276
+12277
+12278
+12279
+12280
+12281
+12282
+12283
+12284
+12285
+12286
+12287
+12288
+12289
+12290
+12291
+12292
+12293
+12294
+12295
+12296
+12297
+12298
+12299
+12300
+12301
+12302
+12303
+12304
+12305
+12306
+12307
+12308
+12309
+12310
+12311
+12312
+12313
+12314
+12315
+12316
+12317
+12318
+12319
+12320
+12321
+12322
+12323
+12324
+12325
+12326
+12327
+12328
+12329
+12330
+12331
+12332
+12333
+12334
+12335
+12336
+12337
+12338
+12339
+12340
+12341
+12342
+12343
+12344
+12345
+12346
+12347
+12348
+12349
+12350
+12351
+12352
+12353
+12354
+12355
+12356
+12357
+12358
+12359
+12360
+12361
+12362
+12363
+12364
+12365
+12366
+12367
+12368
+12369
+12370
+12371
+12372
+12373
+12374
+12375
+12376
+12377
+12378
+12379
+12380
+12381
+12382
+12383
+12384
+12385
+12386
+12387
+12388
+12389
+12390
+12391
+12392
+12393
+12394
+12395
+12396
+12397
+12398
+12399
+12400
+12401
+12402
+12403
+12404
+12405
+12406
+12407
+12408
+12409
+12410
+12411
+12412
+12413
+12414
+12415
+12416
+12417
+12418
+12419
+12420
+12421
+12422
+12423
+12424
+12425
+12426
+12427
+12428
+12429
+12430
+12431
+12432
+12433
+12434
+12435
+12436
+12437
+12438
+12439
+12440
+12441
+12442
+12443
+12444
+12445
+12446
+12447
+12448
+12449
+12450
+12451
+12452
+12453
+12454
+12455
+12456
+12457
+12458
+12459
+12460
+12461
+12462
+12463
+12464
+12465
+12466
+12467
+12468
+12469
+12470
+12471
+12472
+12473
+12474
+12475
+12476
+12477
+12478
+12479
+12480
+12481
+12482
+12483
+12484
+12485
+12486
+12487
+12488
+12489
+12490
+12491
+12492
+12493
+12494
+12495
+12496
+12497
+12498
+12499
+12500
+12501
+12502
+12503
+12504
+12505
+12506
+12507
+12508
+12509
+12510
+12511
+12512
+12513
+12514
+12515
+12516
+12517
+12518
+12519
+12520
+12521
+12522
+12523
+12524
+12525
+12526
+12527
+12528
+12529
+12530
+12531
+12532
+12533
+12534
+12535
+12536
+12537
+12538
+12539
+12540
+12541
+12542
+12543
+12544
+12545
+12546
+12547
+12548
+12549
+12550
+12551
+12552
+12553
+12554
+12555
+12556
+12557
+12558
+12559
+12560
+12561
+12562
+12563
+12564
+12565
+12566
+12567
+12568
+12569
+12570
+12571
+12572
+12573
+12574
+12575
+12576
+12577
+12578
+12579
+12580
+12581
+12582
+12583
+12584
+12585
+12586
+12587
+12588
+12589
+12590
+12591
+12592
+12593
+12594
+12595
+12596
+12597
+12598
+12599
+12600
+12601
+12602
+12603
+12604
+12605
+12606
+12607
+12608
+12609
+12610
+12611
+12612
+12613
+12614
+12615
+12616
+12617
+12618
+12619
+12620
+12621
+12622
+12623
+12624
+12625
+12626
+12627
+12628
+12629
+12630
+12631
+12632
+12633
+12634
+12635
+12636
+12637
+12638
+12639
+12640
+12641
+12642
+12643
+12644
+12645
+12646
+12647
+12648
+12649
+12650
+12651
+12652
+12653
+12654
+12655
+12656
+12657
+12658
+12659
+12660
+12661
+12662
+12663
+12664
+12665
+12666
+12667
+12668
+12669
+12670
+12671
+12672
+12673
+12674
+12675
+12676
+12677
+12678
+12679
+12680
+12681
+12682
+12683
+12684
+12685
+12686
+12687
+12688
+12689
+12690
+12691
+12692
+12693
+12694
+12695
+12696
+12697
+12698
+12699
+12700
+12701
+12702
+12703
+12704
+12705
+12706
+12707
+12708
+12709
+12710
+12711
+12712
+12713
+12714
+12715
+12716
+12717
+12718
+12719
+12720
+12721
+12722
+12723
+12724
+12725
+12726
+12727
+12728
+12729
+12730
+12731
+12732
+12733
+12734
+12735
+12736
+12737
+12738
+12739
+12740
+12741
+12742
+12743
+12744
+12745
+12746
+12747
+12748
+12749
+12750
+12751
+12752
+12753
+12754
+12755
+12756
+12757
+12758
+12759
+12760
+12761
+12762
+12763
+12764
+12765
+12766
+12767
+12768
+12769
+12770
+12771
+12772
+12773
+12774
+12775
+12776
+12777
+12778
+12779
+12780
+12781
+12782
+12783
+12784
+12785
+12786
+12787
+12788
+12789
+12790
+12791
+12792
+12793
+12794
+12795
+12796
+12797
+12798
+12799
+12800
+12801
+12802
+12803
+12804
+12805
+12806
+12807
+12808
+12809
+12810
+12811
+12812
+12813
+12814
+12815
+12816
+12817
+12818
+12819
+12820
+12821
+12822
+12823
+12824
+12825
+12826
+12827
+12828
+12829
+12830
+12831
+12832
+12833
+12834
+12835
+12836
+12837
+12838
+12839
+12840
+12841
+12842
+12843
+12844
+12845
+12846
+12847
+12848
+12849
+12850
+12851
+12852
+12853
+12854
+12855
+12856
+12857
+12858
+12859
+12860
+12861
+12862
+12863
+12864
+12865
+12866
+12867
+12868
+12869
+12870
+12871
+12872
+12873
+12874
+12875
+12876
+12877
+12878
+12879
+12880
+12881
+12882
+12883
+12884
+12885
+12886
+12887
+12888
+12889
+12890
+12891
+12892
+12893
+12894
+12895
+12896
+12897
+12898
+12899
+12900
+12901
+12902
+12903
+12904
+12905
+12906
+12907
+12908
+12909
+12910
+12911
+12912
+12913
+12914
+12915
+12916
+12917
+12918
+12919
+12920
+12921
+12922
+12923
+12924
+12925
+12926
+12927
+12928
+12929
+12930
+12931
+12932
+12933
+12934
+12935
+12936
+12937
+12938
+12939
+12940
+12941
+12942
+12943
+12944
+12945
+12946
+12947
+12948
+12949
+12950
+12951
+12952
+12953
+12954
+12955
+12956
+12957
+12958
+12959
+12960
+12961
+12962
+12963
+12964
+12965
+12966
+12967
+12968
+12969
+12970
+12971
+12972
+12973
+12974
+12975
+12976
+12977
+12978
+12979
+12980
+12981
+12982
+12983
+12984
+12985
+12986
+12987
+12988
+12989
+12990
+12991
+12992
+12993
+12994
+12995
+12996
+12997
+12998
+12999
+13000
+13001
+13002
+13003
+13004
+13005
+13006
+13007
+13008
+13009
+13010
+13011
+13012
+13013
+13014
+13015
+13016
+13017
+13018
+13019
+13020
+13021
+13022
+13023
+13024
+13025
+13026
+13027
+13028
+13029
+13030
+13031
+13032
+13033
+13034
+13035
+13036
+13037
+13038
+13039
+13040
+13041
+13042
+13043
+13044
+13045
+13046
+13047
+13048
+13049
+13050
+13051
+13052
+13053
+13054
+13055
+13056
+13057
+13058
+13059
+13060
+13061
+13062
+13063
+13064
+13065
+13066
+13067
+13068
+13069
+13070
+13071
+13072
+13073
+13074
+13075
+13076
+13077
+13078
+13079
+13080
+13081
+13082
+13083
+13084
+13085
+13086
+13087
+13088
+13089
+13090
+13091
+13092
+13093
+13094
+13095
+13096
+13097
+13098
+13099
+13100
+13101
+13102
+13103
+13104
+13105
+13106
+13107
+13108
+13109
+13110
+13111
+13112
+13113
+13114
+13115
+13116
+13117
+13118
+13119
+13120
+13121
+13122
+13123
+13124
+13125
+13126
+13127
+13128
+13129
+13130
+13131
+13132
+13133
+13134
+13135
+13136
+13137
+13138
+13139
+13140
+13141
+13142
+13143
+13144
+13145
+13146
+13147
+13148
+13149
+13150
+13151
+13152
+13153
+13154
+13155
+13156
+13157
+13158
+13159
+13160
+13161
+13162
+13163
+13164
+13165
+13166
+13167
+13168
+13169
+13170
+13171
+13172
+13173
+13174
+13175
+13176
+13177
+13178
+13179
+13180
+13181
+13182
+13183
+13184
+13185
+13186
+13187
+13188
+13189
+13190
+13191
+13192
+13193
+13194
+13195
+13196
+13197
+13198
+13199
+13200
+13201
+13202
+13203
+13204
+13205
+13206
+13207
+13208
+13209
+13210
+13211
+13212
+13213
+13214
+13215
+13216
+13217
+13218
+13219
+13220
+13221
+13222
+13223
+13224
+13225
+13226
+13227
+13228
+13229
+13230
+13231
+13232
+13233
+13234
+13235
+13236
+13237
+13238
+13239
+13240
+13241
+13242
+13243
+13244
+13245
+13246
+13247
+13248
+13249
+13250
+13251
+13252
+13253
+13254
+13255
+13256
+13257
+13258
+13259
+13260
+13261
+13262
+13263
+13264
+13265
+13266
+13267
+13268
+13269
+13270
+13271
+13272
+13273
+13274
+13275
+13276
+13277
+13278
+13279
+13280
+13281
+13282
+13283
+13284
+13285
+13286
+13287
+13288
+13289
+13290
+13291
+13292
+13293
+13294
+13295
+13296
+13297
+13298
+13299
+13300
+13301
+13302
+13303
+13304
+13305
+13306
+13307
+13308
+13309
+13310
+13311
+13312
+13313
+13314
+13315
+13316
+13317
+13318
+13319
+13320
+13321
+13322
+13323
+13324
+13325
+13326
+13327
+13328
+13329
+13330
+13331
+13332
+13333
+13334
+13335
+13336
+13337
+13338
+13339
+13340
+13341
+13342
+13343
+13344
+13345
+13346
+13347
+13348
+13349
+13350
+13351
+13352
+13353
+13354
+13355
+13356
+13357
+13358
+13359
+13360
+13361
+13362
+13363
+13364
+13365
+13366
+13367
+13368
+13369
+13370
+13371
+13372
+13373
+13374
+13375
+13376
+13377
+13378
+13379
+13380
+13381
+13382
+13383
+13384
+13385
+13386
+13387
+13388
+13389
+13390
+13391
+13392
+13393
+13394
+13395
+13396
+13397
+13398
+13399
+13400
+13401
+13402
+13403
+13404
+13405
+13406
+13407
+13408
+13409
+13410
+13411
+13412
+13413
+13414
+13415
+13416
+13417
+13418
+13419
+13420
+13421
+13422
+13423
+13424
+13425
+13426
+13427
+13428
+13429
+13430
+13431
+13432
+13433
+13434
+13435
+13436
+13437
+13438
+13439
+13440
+13441
+13442
+13443
+13444
+13445
+13446
+13447
+13448
+13449
+13450
+13451
+13452
+13453
+13454
+13455
+13456
+13457
+13458
+13459
+13460
+13461
+13462
+13463
+13464
+13465
+13466
+13467
+13468
+13469
+13470
+13471
+13472
+13473
+13474
+13475
+13476
+13477
+13478
+13479
+13480
+13481
+13482
+13483
+13484
+13485
+13486
+13487
+13488
+13489
+13490
+13491
+13492
+13493
+13494
+13495
+13496
+13497
+13498
+13499
+13500
+13501
+13502
+13503
+13504
+13505
+13506
+13507
+13508
+13509
+13510
+13511
+13512
+13513
+13514
+13515
+13516
+13517
+13518
+13519
+13520
+13521
+13522
+13523
+13524
+13525
+13526
+13527
+13528
+13529
+13530
+13531
+13532
+13533
+13534
+13535
+13536
+13537
+13538
+13539
+13540
+13541
+13542
+13543
+13544
+13545
+13546
+13547
+13548
+13549
+13550
+13551
+13552
+13553
+13554
+13555
+13556
+13557
+13558
+13559
+13560
+13561
+13562
+13563
+13564
+13565
+13566
+13567
+13568
+13569
+13570
+13571
+13572
+13573
+13574
+13575
+13576
+13577
+13578
+13579
+13580
+13581
+13582
+13583
+13584
+13585
+13586
+13587
+13588
+13589
+13590
+13591
+13592
+13593
+13594
+13595
+13596
+13597
+13598
+13599
+13600
+13601
+13602
+13603
+13604
+13605
+13606
+13607
+13608
+13609
+13610
+13611
+13612
+13613
+13614
+13615
+13616
+13617
+13618
+13619
+13620
+13621
+13622
+13623
+13624
+13625
+13626
+13627
+13628
+13629
+13630
+13631
+13632
+13633
+13634
+13635
+13636
+13637
+13638
+13639
+13640
+13641
+13642
+13643
+13644
+13645
+13646
+13647
+13648
+13649
+13650
+13651
+13652
+13653
+13654
+13655
+13656
+13657
+13658
+13659
+13660
+13661
+13662
+13663
+13664
+13665
+13666
+13667
+13668
+13669
+13670
+13671
+13672
+13673
+13674
+13675
+13676
+13677
+13678
+13679
+13680
+13681
+13682
+13683
+13684
+13685
+13686
+13687
+13688
+13689
+13690
+13691
+13692
+13693
+13694
+13695
+13696
+13697
+13698
+13699
+13700
+13701
+13702
+13703
+13704
+13705
+13706
+13707
+13708
+13709
+13710
+13711
+13712
+13713
+13714
+13715
+13716
+13717
+13718
+13719
+13720
+13721
+13722
+13723
+13724
+13725
+13726
+13727
+13728
+13729
+13730
+13731
+13732
+13733
+13734
+13735
+13736
+13737
+13738
+13739
+13740
+13741
+13742
+13743
+13744
+13745
+13746
+13747
+13748
+13749
+13750
+13751
+13752
+13753
+13754
+13755
+13756
+13757
+13758
+13759
+13760
+13761
+13762
+13763
+13764
+13765
+13766
+13767
+13768
+13769
+13770
+13771
+13772
+13773
+13774
+13775
+13776
+13777
+13778
+13779
+13780
+13781
+13782
+13783
+13784
+13785
+13786
+13787
+13788
+13789
+13790
+13791
+13792
+13793
+13794
+13795
+13796
+13797
+13798
+13799
+13800
+13801
+13802
+13803
+13804
+13805
+13806
+13807
+13808
+13809
+13810
+13811
+13812
+13813
+13814
+13815
+13816
+13817
+13818
+13819
+13820
+13821
+13822
+13823
+13824
+13825
+13826
+13827
+13828
+13829
+13830
+13831
+13832
+13833
+13834
+13835
+13836
+13837
+13838
+13839
+13840
+13841
+13842
+13843
+13844
+13845
+13846
+13847
+13848
+13849
+13850
+13851
+13852
+13853
+13854
+13855
+13856
+13857
+13858
+13859
+13860
+13861
+13862
+13863
+13864
+13865
+13866
+13867
+13868
+13869
+13870
+13871
+13872
+13873
+13874
+13875
+13876
+13877
+13878
+13879
+13880
+13881
+13882
+13883
+13884
+13885
+13886
+13887
+13888
+13889
+13890
+13891
+13892
+13893
+13894
+13895
+13896
+13897
+13898
+13899
+13900
+13901
+13902
+13903
+13904
+13905
+13906
+13907
+13908
+13909
+13910
+13911
+13912
+13913
+13914
+13915
+13916
+13917
+13918
+13919
+13920
+13921
+13922
+13923
+13924
+13925
+13926
+13927
+13928
+13929
+13930
+13931
+13932
+13933
+13934
+13935
+13936
+13937
+13938
+13939
+13940
+13941
+13942
+13943
+13944
+13945
+13946
+13947
+13948
+13949
+13950
+13951
+13952
+13953
+13954
+13955
+13956
+13957
+13958
+13959
+13960
+13961
+13962
+13963
+13964
+13965
+13966
+13967
+13968
+13969
+13970
+13971
+13972
+13973
+13974
+13975
+13976
+13977
+13978
+13979
+13980
+13981
+13982
+13983
+13984
+13985
+13986
+13987
+13988
+13989
+13990
+13991
+13992
+13993
+13994
+13995
+13996
+13997
+13998
+13999
+14000
+14001
+14002
+14003
+14004
+14005
+14006
+14007
+14008
+14009
+14010
+14011
+14012
+14013
+14014
+14015
+14016
+14017
+14018
+14019
+14020
+14021
+14022
+14023
+14024
+14025
+14026
+14027
+14028
+14029
+14030
+14031
+14032
+14033
+14034
+14035
+14036
+14037
+14038
+14039
+14040
+14041
+14042
+14043
+14044
+14045
+14046
+14047
+14048
+14049
+14050
+14051
+14052
+14053
+14054
+14055
+14056
+14057
+14058
+14059
+14060
+14061
+14062
+14063
+14064
+14065
+14066
+14067
+14068
+14069
+14070
+14071
+14072
+14073
+14074
+14075
+14076
+14077
+14078
+14079
+14080
+14081
+14082
+14083
+14084
+14085
+14086
+14087
+14088
+14089
+14090
+14091
+14092
+14093
+14094
+14095
+14096
+14097
+14098
+14099
+14100
+14101
+14102
+14103
+14104
+14105
+14106
+14107
+14108
+14109
+14110
+14111
+14112
+14113
+14114
+14115
+14116
+14117
+14118
+14119
+14120
+14121
+14122
+14123
+14124
+14125
+14126
+14127
+14128
+14129
+14130
+14131
+14132
+14133
+14134
+14135
+14136
+14137
+14138
+14139
+14140
+14141
+14142
+14143
+14144
+14145
+14146
+14147
+14148
+14149
+14150
+14151
+14152
+14153
+14154
+14155
+14156
+14157
+14158
+14159
+14160
+14161
+14162
+14163
+14164
+14165
+14166
+14167
+14168
+14169
+14170
+14171
+14172
+14173
+14174
+14175
+14176
+14177
+14178
+14179
+14180
+14181
+14182
+14183
+14184
+14185
+14186
+14187
+14188
+14189
+14190
+14191
+14192
+14193
+14194
+14195
+14196
+14197
+14198
+14199
+14200
+14201
+14202
+14203
+14204
+14205
+14206
+14207
+14208
+14209
+14210
+14211
+14212
+14213
+14214
+14215
+14216
+14217
+14218
+14219
+14220
+14221
+14222
+14223
+14224
+14225
+14226
+14227
+14228
+14229
+14230
+14231
+14232
+14233
+14234
+14235
+14236
+14237
+14238
+14239
+14240
+14241
+14242
+14243
+14244
+14245
+14246
+14247
+14248
+14249
+14250
+14251
+14252
+14253
+14254
+14255
+14256
+14257
+14258
+14259
+14260
+14261
+14262
+14263
+14264
+14265
+14266
+14267
+14268
+14269
+14270
+14271
+14272
+14273
+14274
+14275
+14276
+14277
+14278
+14279
+14280
+14281
+14282
+14283
+14284
+14285
+14286
+14287
+14288
+14289
+14290
+14291
+14292
+14293
+14294
+14295
+14296
+14297
+14298
+14299
+14300
+14301
+14302
+14303
+14304
+14305
+14306
+14307
+14308
+14309
+14310
+14311
+14312
+14313
+14314
+14315
+14316
+14317
+14318
+14319
+14320
+14321
+14322
+14323
+14324
+14325
+14326
+14327
+14328
+14329
+14330
+14331
+14332
+14333
+14334
+14335
+14336
+14337
+14338
+14339
+14340
+14341
+14342
+14343
+14344
+14345
+14346
+14347
+14348
+14349
+14350
+14351
+14352
+14353
+14354
+14355
+14356
+14357
+14358
+14359
+14360
+14361
+14362
+14363
+14364
+14365
+14366
+14367
+14368
+14369
+14370
+14371
+14372
+14373
+14374
+14375
+14376
+14377
+14378
+14379
+14380
+14381
+14382
+14383
+14384
+14385
+14386
+14387
+14388
+14389
+14390
+14391
+14392
+14393
+14394
+14395
+14396
+14397
+14398
+14399
+14400
+14401
+14402
+14403
+14404
+14405
+14406
+14407
+14408
+14409
+14410
+14411
+14412
+14413
+14414
+14415
+14416
+14417
+14418
+14419
+14420
+14421
+14422
+14423
+14424
+14425
+14426
+14427
+14428
+14429
+14430
+14431
+14432
+14433
+14434
+14435
+14436
+14437
+14438
+14439
+14440
+14441
+14442
+14443
+14444
+14445
+14446
+14447
+14448
+14449
+14450
+14451
+14452
+14453
+14454
+14455
+14456
+14457
+14458
+14459
+14460
+14461
+14462
+14463
+14464
+14465
+14466
+14467
+14468
+14469
+14470
+14471
+14472
+14473
+14474
+14475
+14476
+14477
+14478
+14479
+14480
+14481
+14482
+14483
+14484
+14485
+14486
+14487
+14488
+14489
+14490
+14491
+14492
+14493
+14494
+14495
+14496
+14497
+14498
+14499
+14500
+14501
+14502
+14503
+14504
+14505
+14506
+14507
+14508
+14509
+14510
+14511
+14512
+14513
+14514
+14515
+14516
+14517
+14518
+14519
+14520
+14521
+14522
+14523
+14524
+14525
+14526
+14527
+14528
+14529
+14530
+14531
+14532
+14533
+14534
+14535
+14536
+14537
+14538
+14539
+14540
+14541
+14542
+14543
+14544
+14545
+14546
+14547
+14548
+14549
+14550
+14551
+14552
+14553
+14554
+14555
+14556
+14557
+14558
+14559
+14560
+14561
+14562
+14563
+14564
+14565
+14566
+14567
+14568
+14569
+14570
+14571
+14572
+14573
+14574
+14575
+14576
+14577
+14578
+14579
+14580
+14581
+14582
+14583
+14584
+14585
+14586
+14587
+14588
+14589
+14590
+14591
+14592
+14593
+14594
+14595
+14596
+14597
+14598
+14599
+14600
+14601
+14602
+14603
+14604
+14605
+14606
+14607
+14608
+14609
+14610
+14611
+14612
+14613
+14614
+14615
+14616
+14617
+14618
+14619
+14620
+14621
+14622
+14623
+14624
+14625
+14626
+14627
+14628
+14629
+14630
+14631
+14632
+14633
+14634
+14635
+14636
+14637
+14638
+14639
+14640
+14641
+14642
+14643
+14644
+14645
+14646
+14647
+14648
+14649
+14650
+14651
+14652
+14653
+14654
+14655
+14656
+14657
+14658
+14659
+14660
+14661
+14662
+14663
+14664
+14665
+14666
+14667
+14668
+14669
+14670
+14671
+14672
+14673
+14674
+14675
+14676
+14677
+14678
+14679
+14680
+14681
+14682
+14683
+14684
+14685
+14686
+14687
+14688
+14689
+14690
+14691
+14692
+14693
+14694
+14695
+14696
+14697
+14698
+14699
+14700
+14701
+14702
+14703
+14704
+14705
+14706
+14707
+14708
+14709
+14710
+14711
+14712
+14713
+14714
+14715
+14716
+14717
+14718
+14719
+14720
+14721
+14722
+14723
+14724
+14725
+14726
+14727
+14728
+14729
+14730
+14731
+14732
+14733
+14734
+14735
+14736
+14737
+14738
+14739
+14740
+14741
+14742
+14743
+14744
+14745
+14746
+14747
+14748
+14749
+14750
+14751
+14752
+14753
+14754
+14755
+14756
+14757
+14758
+14759
+14760
+14761
+14762
+14763
+14764
+14765
+14766
+14767
+14768
+14769
+14770
+14771
+14772
+14773
+14774
+14775
+14776
+14777
+14778
+14779
+14780
+14781
+14782
+14783
+14784
+14785
+14786
+14787
+14788
+14789
+14790
+14791
+14792
+14793
+14794
+14795
+14796
+14797
+14798
+14799
+14800
+14801
+14802
+14803
+14804
+14805
+14806
+14807
+14808
+14809
+14810
+14811
+14812
+14813
+14814
+14815
+14816
+14817
+14818
+14819
+14820
+14821
+14822
+14823
+14824
+14825
+14826
+14827
+14828
+14829
+14830
+14831
+14832
+14833
+14834
+14835
+14836
+14837
+14838
+14839
+14840
+14841
+14842
+14843
+14844
+14845
+14846
+14847
+14848
+14849
+14850
+14851
+14852
+14853
+14854
+14855
+14856
+14857
+14858
+14859
+14860
+14861
+14862
+14863
+14864
+14865
+14866
+14867
+14868
+14869
+14870
+14871
+14872
+14873
+14874
+14875
+14876
+14877
+14878
+14879
+14880
+14881
+14882
+14883
+14884
+14885
+14886
+14887
+14888
+14889
+14890
+14891
+14892
+14893
+14894
+14895
+14896
+14897
+14898
+14899
+14900
+14901
+14902
+14903
+14904
+14905
+14906
+14907
+14908
+14909
+14910
+14911
+14912
+14913
+14914
+14915
+14916
+14917
+14918
+14919
+14920
+14921
+14922
+14923
+14924
+14925
+14926
+14927
+14928
+14929
+14930
+14931
+14932
+14933
+14934
+14935
+14936
+14937
+14938
+14939
+14940
+14941
+14942
+14943
+14944
+14945
+14946
+14947
+14948
+14949
+14950
+14951
+14952
+14953
+14954
+14955
+14956
+14957
+14958
+14959
+14960
+14961
+14962
+14963
+14964
+14965
+14966
+14967
+14968
+14969
+14970
+14971
+14972
+14973
+14974
+14975
+14976
+14977
+14978
+14979
+14980
+14981
+14982
+14983
+14984
+14985
+14986
+14987
+14988
+14989
+14990
+14991
+14992
+14993
+14994
+14995
+14996
+14997
+14998
+14999
+15000
+15001
+15002
+15003
+15004
+15005
+15006
+15007
+15008
+15009
+15010
+15011
+15012
+15013
+15014
+15015
+15016
+15017
+15018
+15019
+15020
+15021
+15022
+15023
+15024
+15025
+15026
+15027
+15028
+15029
+15030
+15031
+15032
+15033
+15034
+15035
+15036
+15037
+15038
+15039
+15040
+15041
+15042
+15043
+15044
+15045
+15046
+15047
+15048
+15049
+15050
+15051
+15052
+15053
+15054
+15055
+15056
+15057
+15058
+15059
+15060
+15061
+15062
+15063
+15064
+15065
+15066
+15067
+15068
+15069
+15070
+15071
+15072
+15073
+15074
+15075
+15076
+15077
+15078
+15079
+15080
+15081
+15082
+15083
+15084
+15085
+15086
+15087
+15088
+15089
+15090
+15091
+15092
+15093
+15094
+15095
+15096
+15097
+15098
+15099
+15100
+15101
+15102
+15103
+15104
+15105
+15106
+15107
+15108
+15109
+15110
+15111
+15112
+15113
+15114
+15115
+15116
+15117
+15118
+15119
+15120
+15121
+15122
+15123
+15124
+15125
+15126
+15127
+15128
+15129
+15130
+15131
+15132
+15133
+15134
+15135
+15136
+15137
+15138
+15139
+15140
+15141
+15142
+15143
+15144
+15145
+15146
+15147
+15148
+15149
+15150
+15151
+15152
+15153
+15154
+15155
+15156
+15157
+15158
+15159
+15160
+15161
+15162
+15163
+15164
+15165
+15166
+15167
+15168
+15169
+15170
+15171
+15172
+15173
+15174
+15175
+15176
+15177
+15178
+15179
+15180
+15181
+15182
+15183
+15184
+15185
+15186
+15187
+15188
+15189
+15190
+15191
+15192
+15193
+15194
+15195
+15196
+15197
+15198
+15199
+15200
+15201
+15202
+15203
+15204
+15205
+15206
+15207
+15208
+15209
+15210
+15211
+15212
+15213
+15214
+15215
+15216
+15217
+15218
+15219
+15220
+15221
+15222
+15223
+15224
+15225
+15226
+15227
+15228
+15229
+15230
+15231
+15232
+15233
+15234
+15235
+15236
+15237
+15238
+15239
+15240
+15241
+15242
+15243
+15244
+15245
+15246
+15247
+15248
+15249
+15250
+15251
+15252
+15253
+15254
+15255
+15256
+15257
+15258
+15259
+15260
+15261
+15262
+15263
+15264
+15265
+15266
+15267
+15268
+15269
+15270
+15271
+15272
+15273
+15274
+15275
+15276
+15277
+15278
+15279
+15280
+15281
+15282
+15283
+15284
+15285
+15286
+15287
+15288
+15289
+15290
+15291
+15292
+15293
+15294
+15295
+15296
+15297
+15298
+15299
+15300
+15301
+15302
+15303
+15304
+15305
+15306
+15307
+15308
+15309
+15310
+15311
+15312
+15313
+15314
+15315
+15316
+15317
+15318
+15319
+15320
+15321
+15322
+15323
+15324
+15325
+15326
+15327
+15328
+15329
+15330
+15331
+15332
+15333
+15334
+15335
+15336
+15337
+15338
+15339
+15340
+15341
+15342
+15343
+15344
+15345
+15346
+15347
+15348
+15349
+15350
+15351
+15352
+15353
+15354
+15355
+15356
+15357
+15358
+15359
+15360
+15361
+15362
+15363
+15364
+15365
+15366
+15367
+15368
+15369
+15370
+15371
+15372
+15373
+15374
+15375
+15376
+15377
+15378
+15379
+15380
+15381
+15382
+15383
+15384
+15385
+15386
+15387
+15388
+15389
+15390
+15391
+15392
+15393
+15394
+15395
+15396
+15397
+15398
+15399
+15400
+15401
+15402
+15403
+15404
+15405
+15406
+15407
+15408
+15409
+15410
+15411
+15412
+15413
+15414
+15415
+15416
+15417
+15418
+15419
+15420
+15421
+15422
+15423
+15424
+15425
+15426
+15427
+15428
+15429
+15430
+15431
+15432
+15433
+15434
+15435
+15436
+15437
+15438
+15439
+15440
+15441
+15442
+15443
+15444
+15445
+15446
+15447
+15448
+15449
+15450
+15451
+15452
+15453
+15454
+15455
+15456
+15457
+15458
+15459
+15460
+15461
+15462
+15463
+15464
+15465
+15466
+15467
+15468
+15469
+15470
+15471
+15472
+15473
+15474
+15475
+15476
+15477
+15478
+15479
+15480
+15481
+15482
+15483
+15484
+15485
+15486
+15487
+15488
+15489
+15490
+15491
+15492
+15493
+15494
+15495
+15496
+15497
+15498
+15499
+15500
+15501
+15502
+15503
+15504
+15505
+15506
+15507
+15508
+15509
+15510
+15511
+15512
+15513
+15514
+15515
+15516
+15517
+15518
+15519
+15520
+15521
+15522
+15523
+15524
+15525
+15526
+15527
+15528
+15529
+15530
+15531
+15532
+15533
+15534
+15535
+15536
+15537
+15538
+15539
+15540
+15541
+15542
+15543
+15544
+15545
+15546
+15547
+15548
+15549
+15550
+15551
+15552
+15553
+15554
+15555
+15556
+15557
+15558
+15559
+15560
+15561
+15562
+15563
+15564
+15565
+15566
+15567
+15568
+15569
+15570
+15571
+15572
+15573
+15574
+15575
+15576
+15577
+15578
+15579
+15580
+15581
+15582
+15583
+15584
+15585
+15586
+15587
+15588
+15589
+15590
+15591
+15592
+15593
+15594
+15595
+15596
+15597
+15598
+15599
+15600
+15601
+15602
+15603
+15604
+15605
+15606
+15607
+15608
+15609
+15610
+15611
+15612
+15613
+15614
+15615
+15616
+15617
+15618
+15619
+15620
+15621
+15622
+15623
+15624
+15625
+15626
+15627
+15628
+15629
+15630
+15631
+15632
+15633
+15634
+15635
+15636
+15637
+15638
+15639
+15640
+15641
+15642
+15643
+15644
+15645
+15646
+15647
+15648
+15649
+15650
+15651
+15652
+15653
+15654
+15655
+15656
+15657
+15658
+15659
+15660
+15661
+15662
+15663
+15664
+15665
+15666
+15667
+15668
+15669
+15670
+15671
+15672
+15673
+15674
+15675
+15676
+15677
+15678
+15679
+15680
+15681
+15682
+15683
+15684
+15685
+15686
+15687
+15688
+15689
+15690
+15691
+15692
+15693
+15694
+15695
+15696
+15697
+15698
+15699
+15700
+15701
+15702
+15703
+15704
+15705
+15706
+15707
+15708
+15709
+15710
+15711
+15712
+15713
+15714
+15715
+15716
+15717
+15718
+15719
+15720
+15721
+15722
+15723
+15724
+15725
+15726
+15727
+15728
+15729
+15730
+15731
+15732
+15733
+15734
+15735
+15736
+15737
+15738
+15739
+15740
+15741
+15742
+15743
+15744
+15745
+15746
+15747
+15748
+15749
+15750
+15751
+15752
+15753
+15754
+15755
+15756
+15757
+15758
+15759
+15760
+15761
+15762
+15763
+15764
+15765
+15766
+15767
+15768
+15769
+15770
+15771
+15772
+15773
+15774
+15775
+15776
+15777
+15778
+15779
+15780
+15781
+15782
+15783
+15784
+15785
+15786
+15787
+15788
+15789
+15790
+15791
+15792
+15793
+15794
+15795
+15796
+15797
+15798
+15799
+15800
+15801
+15802
+15803
+15804
+15805
+15806
+15807
+15808
+15809
+15810
+15811
+15812
+15813
+15814
+15815
+15816
+15817
+15818
+15819
+15820
+15821
+15822
+15823
+15824
+15825
+15826
+15827
+15828
+15829
+15830
+15831
+15832
+15833
+15834
+15835
+15836
+15837
+15838
+15839
+15840
+15841
+15842
+15843
+15844
+15845
+15846
+15847
+15848
+15849
+15850
+15851
+15852
+15853
+15854
+15855
+15856
+15857
+15858
+15859
+15860
+15861
+15862
+15863
+15864
+15865
+15866
+15867
+15868
+15869
+15870
+15871
+15872
+15873
+15874
+15875
+15876
+15877
+15878
+15879
+15880
+15881
+15882
+15883
+15884
+15885
+15886
+15887
+15888
+15889
+15890
+15891
+15892
+15893
+15894
+15895
+15896
+15897
+15898
+15899
+15900
+15901
+15902
+15903
+15904
+15905
+15906
+15907
+15908
+15909
+15910
+15911
+15912
+15913
+15914
+15915
+15916
+15917
+15918
+15919
+15920
+15921
+15922
+15923
+15924
+15925
+15926
+15927
+15928
+15929
+15930
+15931
+15932
+15933
+15934
+15935
+15936
+15937
+15938
+15939
+15940
+15941
+15942
+15943
+15944
+15945
+15946
+15947
+15948
+15949
+15950
+15951
+15952
+15953
+15954
+15955
+15956
+15957
+15958
+15959
+15960
+15961
+15962
+15963
+15964
+15965
+15966
+15967
+15968
+15969
+15970
+15971
+15972
+15973
+15974
+15975
+15976
+15977
+15978
+15979
+15980
+15981
+15982
+15983
+15984
+15985
+15986
+15987
+15988
+15989
+15990
+15991
+15992
+15993
+15994
+15995
+15996
+15997
+15998
+15999
+16000
+16001
+16002
+16003
+16004
+16005
+16006
+16007
+16008
+16009
+16010
+16011
+16012
+16013
+16014
+16015
+16016
+16017
+16018
+16019
+16020
+16021
+16022
+16023
+16024
+16025
+16026
+16027
+16028
+16029
+16030
+16031
+16032
+16033
+16034
+16035
+16036
+16037
+16038
+16039
+16040
+16041
+16042
+16043
+16044
+16045
+16046
+16047
+16048
+16049
+16050
+16051
+16052
+16053
+16054
+16055
+16056
+16057
+16058
+16059
+16060
+16061
+16062
+16063
+16064
+16065
+16066
+16067
+16068
+16069
+16070
+16071
+16072
+16073
+16074
+16075
+16076
+16077
+16078
+16079
+16080
+16081
+16082
+16083
+16084
+16085
+16086
+16087
+16088
+16089
+16090
+16091
+16092
+16093
+16094
+16095
+16096
+16097
+16098
+16099
+16100
+16101
+16102
+16103
+16104
+16105
+16106
+16107
+16108
+16109
+16110
+16111
+16112
+16113
+16114
+16115
+16116
+16117
+16118
+16119
+16120
+16121
+16122
+16123
+16124
+16125
+16126
+16127
+16128
+16129
+16130
+16131
+16132
+16133
+16134
+16135
+16136
+16137
+16138
+16139
+16140
+16141
+16142
+16143
+16144
+16145
+16146
+16147
+16148
+16149
+16150
+16151
+16152
+16153
+16154
+16155
+16156
+16157
+16158
+16159
+16160
+16161
+16162
+16163
+16164
+16165
+16166
+16167
+16168
+16169
+16170
+16171
+16172
+16173
+16174
+16175
+16176
+16177
+16178
+16179
+16180
+16181
+16182
+16183
+16184
+16185
+16186
+16187
+16188
+16189
+16190
+16191
+16192
+16193
+16194
+16195
+16196
+16197
+16198
+16199
+16200
+16201
+16202
+16203
+16204
+16205
+16206
+16207
+16208
+16209
+16210
+16211
+16212
+16213
+16214
+16215
+16216
+16217
+16218
+16219
+16220
+16221
+16222
+16223
+16224
+16225
+16226
+16227
+16228
+16229
+16230
+16231
+16232
+16233
+16234
+16235
+16236
+16237
+16238
+16239
+16240
+16241
+16242
+16243
+16244
+16245
+16246
+16247
+16248
+16249
+16250
+16251
+16252
+16253
+16254
+16255
+16256
+16257
+16258
+16259
+16260
+16261
+16262
+16263
+16264
+16265
+16266
+16267
+16268
+16269
+16270
+16271
+16272
+16273
+16274
+16275
+16276
+16277
+16278
+16279
+16280
+16281
+16282
+16283
+16284
+16285
+16286
+16287
+16288
+16289
+16290
+16291
+16292
+16293
+16294
+16295
+16296
+16297
+16298
+16299
+16300
+16301
+16302
+16303
+16304
+16305
+16306
+16307
+16308
+16309
+16310
+16311
+16312
+16313
+16314
+16315
+16316
+16317
+16318
+16319
+16320
+16321
+16322
+16323
+16324
+16325
+16326
+16327
+16328
+16329
+16330
+16331
+16332
+16333
+16334
+16335
+16336
+16337
+16338
+16339
+16340
+16341
+16342
+16343
+16344
+16345
+16346
+16347
+16348
+16349
+16350
+16351
+16352
+16353
+16354
+16355
+16356
+16357
+16358
+16359
+16360
+16361
+16362
+16363
+16364
+16365
+16366
+16367
+16368
+16369
+16370
+16371
+16372
+16373
+16374
+16375
+16376
+16377
+16378
+16379
+16380
+16381
+16382
+16383
+16384
+16385
+16386
+16387
+16388
+16389
+16390
+16391
+16392
+16393
+16394
+16395
+16396
+16397
+16398
+16399
+16400
+16401
+16402
+16403
+16404
+16405
+16406
+16407
+16408
+16409
+16410
+16411
+16412
+16413
+16414
+16415
+16416
+16417
+16418
+16419
+16420
+16421
+16422
+16423
+16424
+16425
+16426
+16427
+16428
+16429
+16430
+16431
+16432
+16433
+16434
+16435
+16436
+16437
+16438
+16439
+16440
+16441
+16442
+16443
+16444
+16445
+16446
+16447
+16448
+16449
+16450
+16451
+16452
+16453
+16454
+16455
+16456
+16457
+16458
+16459
+16460
+16461
+16462
+16463
+16464
+16465
+16466
+16467
+16468
+16469
+16470
+16471
+16472
+16473
+16474
+16475
+16476
+16477
+16478
+16479
+16480
+16481
+16482
+16483
+16484
+16485
+16486
+16487
+16488
+16489
+16490
+16491
+16492
+16493
+16494
+16495
+16496
+16497
+16498
+16499
+16500
+16501
+16502
+16503
+16504
+16505
+16506
+16507
+16508
+16509
+16510
+16511
+16512
+16513
+16514
+16515
+16516
+16517
+16518
+16519
+16520
+16521
+16522
+16523
+16524
+16525
+16526
+16527
+16528
+16529
+16530
+16531
+16532
+16533
+16534
+16535
+16536
+16537
+16538
+16539
+16540
+16541
+16542
+16543
+16544
+16545
+16546
+16547
+16548
+16549
+16550
+16551
+16552
+16553
+16554
+16555
+16556
+16557
+16558
+16559
+16560
+16561
+16562
+16563
+16564
+16565
+16566
+16567
+16568
+16569
+16570
+16571
+16572
+16573
+16574
+16575
+16576
+16577
+16578
+16579
+16580
+16581
+16582
+16583
+16584
+16585
+16586
+16587
+16588
+16589
+16590
+16591
+16592
+16593
+16594
+16595
+16596
+16597
+16598
+16599
+16600
+16601
+16602
+16603
+16604
+16605
+16606
+16607
+16608
+16609
+16610
+16611
+16612
+16613
+16614
+16615
+16616
+16617
+16618
+16619
+16620
+16621
+16622
+16623
+16624
+16625
+16626
+16627
+16628
+16629
+16630
+16631
+16632
+16633
+16634
+16635
+16636
+16637
+16638
+16639
+16640
+16641
+16642
+16643
+16644
+16645
+16646
+16647
+16648
+16649
+16650
+16651
+16652
+16653
+16654
+16655
+16656
+16657
+16658
+16659
+16660
+16661
+16662
+16663
+16664
+16665
+16666
+16667
+16668
+16669
+16670
+16671
+16672
+16673
+16674
+16675
+16676
+16677
+16678
+16679
+16680
+16681
+16682
+16683
+16684
+16685
+16686
+16687
+16688
+16689
+16690
+16691
+16692
+16693
+16694
+16695
+16696
+16697
+16698
+16699
+16700
+16701
+16702
+16703
+16704
+16705
+16706
+16707
+16708
+16709
+16710
+16711
+16712
+16713
+16714
+16715
+16716
+16717
+16718
+16719
+16720
+16721
+16722
+16723
+16724
+16725
+16726
+16727
+16728
+16729
+16730
+16731
+16732
+16733
+16734
+16735
+16736
+16737
+16738
+16739
+16740
+16741
+16742
+16743
+16744
+16745
+16746
+16747
+16748
+16749
+16750
+16751
+16752
+16753
+16754
+16755
+16756
+16757
+16758
+16759
+16760
+16761
+16762
+16763
+16764
+16765
+16766
+16767
+16768
+16769
+16770
+16771
+16772
+16773
+16774
+16775
+16776
+16777
+16778
+16779
+16780
+16781
+16782
+16783
+16784
+16785
+16786
+16787
+16788
+16789
+16790
+16791
+16792
+16793
+16794
+16795
+16796
+16797
+16798
+16799
+16800
+16801
+16802
+16803
+16804
+16805
+16806
+16807
+16808
+16809
+16810
+16811
+16812
+16813
+16814
+16815
+16816
+16817
+16818
+16819
+16820
+16821
+16822
+16823
+16824
+16825
+16826
+16827
+16828
+16829
+16830
+16831
+16832
+16833
+16834
+16835
+16836
+16837
+16838
+16839
+16840
+16841
+16842
+16843
+16844
+16845
+16846
+16847
+16848
+16849
+16850
+16851
+16852
+16853
+16854
+16855
+16856
+16857
+16858
+16859
+16860
+16861
+16862
+16863
+16864
+16865
+16866
+16867
+16868
+16869
+16870
+16871
+16872
+16873
+16874
+16875
+16876
+16877
+16878
+16879
+16880
+16881
+16882
+16883
+16884
+16885
+16886
+16887
+16888
+16889
+16890
+16891
+16892
+16893
+16894
+16895
+16896
+16897
+16898
+16899
+16900
+16901
+16902
+16903
+16904
+16905
+16906
+16907
+16908
+16909
+16910
+16911
+16912
+16913
+16914
+16915
+16916
+16917
+16918
+16919
+16920
+16921
+16922
+16923
+16924
+16925
+16926
+16927
+16928
+16929
+16930
+16931
+16932
+16933
+16934
+16935
+16936
+16937
+16938
+16939
+16940
+16941
+16942
+16943
+16944
+16945
+16946
+16947
+16948
+16949
+16950
+16951
+16952
+16953
+16954
+16955
+16956
+16957
+16958
+16959
+16960
+16961
+16962
+16963
+16964
+16965
+16966
+16967
+16968
+16969
+16970
+16971
+16972
+16973
+16974
+16975
+16976
+16977
+16978
+16979
+16980
+16981
+16982
+16983
+16984
+16985
+16986
+16987
+16988
+16989
+16990
+16991
+16992
+16993
+16994
+16995
+16996
+16997
+16998
+16999
+17000
+17001
+17002
+17003
+17004
+17005
+17006
+17007
+17008
+17009
+17010
+17011
+17012
+17013
+17014
+17015
+17016
+17017
+17018
+17019
+17020
+17021
+17022
+17023
+17024
+17025
+17026
+17027
+17028
+17029
+17030
+17031
+17032
+17033
+17034
+17035
+17036
+17037
+17038
+17039
+17040
+17041
+17042
+17043
+17044
+17045
+17046
+17047
+17048
+17049
+17050
+17051
+17052
+17053
+17054
+17055
+17056
+17057
+17058
+17059
+17060
+17061
+17062
+17063
+17064
+17065
+17066
+17067
+17068
+17069
+17070
+17071
+17072
+17073
+17074
+17075
+17076
+17077
+17078
+17079
+17080
+17081
+17082
+17083
+17084
+17085
+17086
+17087
+17088
+17089
+17090
+17091
+17092
+17093
+17094
+17095
+17096
+17097
+17098
+17099
+17100
+17101
+17102
+17103
+17104
+17105
+17106
+17107
+17108
+17109
+17110
+17111
+17112
+17113
+17114
+17115
+17116
+17117
+17118
+17119
+17120
+17121
+17122
+17123
+17124
+17125
+17126
+17127
+17128
+17129
+17130
+17131
+17132
+17133
+17134
+17135
+17136
+17137
+17138
+17139
+17140
+17141
+17142
+17143
+17144
+17145
+17146
+17147
+17148
+17149
+17150
+17151
+17152
+17153
+17154
+17155
+17156
+17157
+17158
+17159
+17160
+17161
+17162
+17163
+17164
+17165
+17166
+17167
+17168
+17169
+17170
+17171
+17172
+17173
+17174
+17175
+17176
+17177
+17178
+17179
+17180
+17181
+17182
+17183
+17184
+17185
+17186
+17187
+17188
+17189
+17190
+17191
+17192
+17193
+17194
+17195
+17196
+17197
+17198
+17199
+17200
+17201
+17202
+17203
+17204
+17205
+17206
+17207
+17208
+17209
+17210
+17211
+17212
+17213
+17214
+17215
+17216
+17217
+17218
+17219
+17220
+17221
+17222
+17223
+17224
+17225
+17226
+17227
+17228
+17229
+17230
+17231
+17232
+17233
+17234
+17235
+17236
+17237
+17238
+17239
+17240
+17241
+17242
+17243
+17244
+17245
+17246
+17247
+17248
+17249
+17250
+17251
+17252
+17253
+17254
+17255
+17256
+17257
+17258
+17259
+17260
+17261
+17262
+17263
+17264
+17265
+17266
+17267
+17268
+17269
+17270
+17271
+17272
+17273
+17274
+17275
+17276
+17277
+17278
+17279
+17280
+17281
+17282
+17283
+17284
+17285
+17286
+17287
+17288
+17289
+17290
+17291
+17292
+17293
+17294
+17295
+17296
+17297
+17298
+17299
+17300
+17301
+17302
+17303
+17304
+17305
+17306
+17307
+17308
+17309
+17310
+17311
+17312
+17313
+17314
+17315
+17316
+17317
+17318
+17319
+17320
+17321
+17322
+17323
+17324
+17325
+17326
+17327
+17328
+17329
+17330
+17331
+17332
+17333
+17334
+17335
+17336
+17337
+17338
+17339
+17340
+17341
+17342
+17343
+17344
+17345
+17346
+17347
+17348
+17349
+17350
+17351
+17352
+17353
+17354
+17355
+17356
+17357
+17358
+17359
+17360
+17361
+17362
+17363
+17364
+17365
+17366
+17367
+17368
+17369
+17370
+17371
+17372
+17373
+17374
+17375
+17376
+17377
+17378
+17379
+17380
+17381
+17382
+17383
+17384
+17385
+17386
+17387
+17388
+17389
+17390
+17391
+17392
+17393
+17394
+17395
+17396
+17397
+17398
+17399
+17400
+17401
+17402
+17403
+17404
+17405
+17406
+17407
+17408
+17409
+17410
+17411
+17412
+17413
+17414
+17415
+17416
+17417
+17418
+17419
+17420
+17421
+17422
+17423
+17424
+17425
+17426
+17427
+17428
+17429
+17430
+17431
+17432
+17433
+17434
+17435
+17436
+17437
+17438
+17439
+17440
+17441
+17442
+17443
+17444
+17445
+17446
+17447
+17448
+17449
+17450
+17451
+17452
+17453
+17454
+17455
+17456
+17457
+17458
+17459
+17460
+17461
+17462
+17463
+17464
+17465
+17466
+17467
+17468
+17469
+17470
+17471
+17472
+17473
+17474
+17475
+17476
+17477
+17478
+17479
+17480
+17481
+17482
+17483
+17484
+17485
+17486
+17487
+17488
+17489
+17490
+17491
+17492
+17493
+17494
+17495
+17496
+17497
+17498
+17499
+17500
+17501
+17502
+17503
+17504
+17505
+17506
+17507
+17508
+17509
+17510
+17511
+17512
+17513
+17514
+17515
+17516
+17517
+17518
+17519
+17520
+17521
+17522
+17523
+17524
+17525
+17526
+17527
+17528
+17529
+17530
+17531
+17532
+17533
+17534
+17535
+17536
+17537
+17538
+17539
+17540
+17541
+17542
+17543
+17544
+17545
+17546
+17547
+17548
+17549
+17550
+17551
+17552
+17553
+17554
+17555
+17556
+17557
+17558
+17559
+17560
+17561
+17562
+17563
+17564
+17565
+17566
+17567
+17568
+17569
+17570
+17571
+17572
+17573
+17574
+17575
+17576
+17577
+17578
+17579
+17580
+17581
+17582
+17583
+17584
+17585
+17586
+17587
+17588
+17589
+17590
+17591
+17592
+17593
+17594
+17595
+17596
+17597
+17598
+17599
+17600
+17601
+17602
+17603
+17604
+17605
+17606
+17607
+17608
+17609
+17610
+17611
+17612
+17613
+17614
+17615
+17616
+17617
+17618
+17619
+17620
+17621
+17622
+17623
+17624
+17625
+17626
+17627
+17628
+17629
+17630
+17631
+17632
+17633
+17634
+17635
+17636
+17637
+17638
+17639
+17640
+17641
+17642
+17643
+17644
+17645
+17646
+17647
+17648
+17649
+17650
+17651
+17652
+17653
+17654
+17655
+17656
+17657
+17658
+17659
+17660
+17661
+17662
+17663
+17664
+17665
+17666
+17667
+17668
+17669
+17670
+17671
+17672
+17673
+17674
+17675
+17676
+17677
+17678
+17679
+17680
+17681
+17682
+17683
+17684
+17685
+17686
+17687
+17688
+17689
+17690
+17691
+17692
+17693
+17694
+17695
+17696
+17697
+17698
+17699
+17700
+17701
+17702
+17703
+17704
+17705
+17706
+17707
+17708
+17709
+17710
+17711
+17712
+17713
+17714
+17715
+17716
+17717
+17718
+17719
+17720
+17721
+17722
+17723
+17724
+17725
+17726
+17727
+17728
+17729
+17730
+17731
+17732
+17733
+17734
+17735
+17736
+17737
+17738
+17739
+17740
+17741
+17742
+17743
+17744
+17745
+17746
+17747
+17748
+17749
+17750
+17751
+17752
+17753
+17754
+17755
+17756
+17757
+17758
+17759
+17760
+17761
+17762
+17763
+17764
+17765
+17766
+17767
+17768
+17769
+17770
+17771
+17772
+17773
+17774
+17775
+17776
+17777
+17778
+17779
+17780
+17781
+17782
+17783
+17784
+17785
+17786
+17787
+17788
+17789
+17790
+17791
+17792
+17793
+17794
+17795
+17796
+17797
+17798
+17799
+17800
+17801
+17802
+17803
+17804
+17805
+17806
+17807
+17808
+17809
+17810
+17811
+17812
+17813
+17814
+17815
+17816
+17817
+17818
+17819
+17820
+17821
+17822
+17823
+17824
+17825
+17826
+17827
+17828
+17829
+17830
+17831
+17832
+17833
+17834
+17835
+17836
+17837
+17838
+17839
+17840
+17841
+17842
+17843
+17844
+17845
+17846
+17847
+17848
+17849
+17850
+17851
+17852
+17853
+17854
+17855
+17856
+17857
+17858
+17859
+17860
+17861
+17862
+17863
+17864
+17865
+17866
+17867
+17868
+17869
+17870
+17871
+17872
+17873
+17874
+17875
+17876
+17877
+17878
+17879
+17880
+17881
+17882
+17883
+17884
+17885
+17886
+17887
+17888
+17889
+17890
+17891
+17892
+17893
+17894
+17895
+17896
+17897
+17898
+17899
+17900
+17901
+17902
+17903
+17904
+17905
+17906
+17907
+17908
+17909
+17910
+17911
+17912
+17913
+17914
+17915
+17916
+17917
+17918
+17919
+17920
+17921
+17922
+17923
+17924
+17925
+17926
+17927
+17928
+17929
+17930
+17931
+17932
+17933
+17934
+17935
+17936
+17937
+17938
+17939
+17940
+17941
+17942
+17943
+17944
+17945
+17946
+17947
+17948
+17949
+17950
+17951
+17952
+17953
+17954
+17955
+17956
+17957
+17958
+17959
+17960
+17961
+17962
+17963
+17964
+17965
+17966
+17967
+17968
+17969
+17970
+17971
+17972
+17973
+17974
+17975
+17976
+17977
+17978
+17979
+17980
+17981
+17982
+17983
+17984
+17985
+17986
+17987
+17988
+17989
+17990
+17991
+17992
+17993
+17994
+17995
+17996
+17997
+17998
+17999
+18000
+18001
+18002
+18003
+18004
+18005
+18006
+18007
+18008
+18009
+18010
+18011
+18012
+18013
+18014
+18015
+18016
+18017
+18018
+18019
+18020
+18021
+18022
+18023
+18024
+18025
+18026
+18027
+18028
+18029
+18030
+18031
+18032
+18033
+18034
+18035
+18036
+18037
+18038
+18039
+18040
+18041
+18042
+18043
+18044
+18045
+18046
+18047
+18048
+18049
+18050
+18051
+18052
+18053
+18054
+18055
+18056
+18057
+18058
+18059
+18060
+18061
+18062
+18063
+18064
+18065
+18066
+18067
+18068
+18069
+18070
+18071
+18072
+18073
+18074
+18075
+18076
+18077
+18078
+18079
+18080
+18081
+18082
+18083
+18084
+18085
+18086
+18087
+18088
+18089
+18090
+18091
+18092
+18093
+18094
+18095
+18096
+18097
+18098
+18099
+18100
+18101
+18102
+18103
+18104
+18105
+18106
+18107
+18108
+18109
+18110
+18111
+18112
+18113
+18114
+18115
+18116
+18117
+18118
+18119
+18120
+18121
+18122
+18123
+18124
+18125
+18126
+18127
+18128
+18129
+18130
+18131
+18132
+18133
+18134
+18135
+18136
+18137
+18138
+18139
+18140
+18141
+18142
+18143
+18144
+18145
+18146
+18147
+18148
+18149
+18150
+18151
+18152
+18153
+18154
+18155
+18156
+18157
+18158
+18159
+18160
+18161
+18162
+18163
+18164
+18165
+18166
+18167
+18168
+18169
+18170
+18171
+18172
+18173
+18174
+18175
+18176
+18177
+18178
+18179
+18180
+18181
+18182
+18183
+18184
+18185
+18186
+18187
+18188
+18189
+18190
+18191
+18192
+18193
+18194
+18195
+18196
+18197
+18198
+18199
+18200
+18201
+18202
+18203
+18204
+18205
+18206
+18207
+18208
+18209
+18210
+18211
+18212
+18213
+18214
+18215
+18216
+18217
+18218
+18219
+18220
+18221
+18222
+18223
+18224
+18225
+18226
+18227
+18228
+18229
+18230
+18231
+18232
+18233
+18234
+18235
+18236
+18237
+18238
+18239
+18240
+18241
+18242
+18243
+18244
+18245
+18246
+18247
+18248
+18249
+18250
+18251
+18252
+18253
+18254
+18255
+18256
+18257
+18258
+18259
+18260
+18261
+18262
+18263
+18264
+18265
+18266
+18267
+18268
+18269
+18270
+18271
+18272
+18273
+18274
+18275
+18276
+18277
+18278
+18279
+18280
+18281
+18282
+18283
+18284
+18285
+18286
+18287
+18288
+18289
+18290
+18291
+18292
+18293
+18294
+18295
+18296
+18297
+18298
+18299
+18300
+18301
+18302
+18303
+18304
+18305
+18306
+18307
+18308
+18309
+18310
+18311
+18312
+18313
+18314
+18315
+18316
+18317
+18318
+18319
+18320
+18321
+18322
+18323
+18324
+18325
+18326
+18327
+18328
+18329
+18330
+18331
+18332
+18333
+18334
+18335
+18336
+18337
+18338
+18339
+18340
+18341
+18342
+18343
+18344
+18345
+18346
+18347
+18348
+18349
+18350
+18351
+18352
+18353
+18354
+18355
+18356
+18357
+18358
+18359
+18360
+18361
+18362
+18363
+18364
+18365
+18366
+18367
+18368
+18369
+18370
+18371
+18372
+18373
+18374
+18375
+18376
+18377
+18378
+18379
+18380
+18381
+18382
+18383
+18384
+18385
+18386
+18387
+18388
+18389
+18390
+18391
+18392
+18393
+18394
+18395
+18396
+18397
+18398
+18399
+18400
+18401
+18402
+18403
+18404
+18405
+18406
+18407
+18408
+18409
+18410
+18411
+18412
+18413
+18414
+18415
+18416
+18417
+18418
+18419
+18420
+18421
+18422
+18423
+18424
+18425
+18426
+18427
+18428
+18429
+18430
+18431
+18432
+18433
+18434
+18435
+18436
+18437
+18438
+18439
+18440
+18441
+18442
+18443
+18444
+18445
+18446
+18447
+18448
+18449
+18450
+18451
+18452
+18453
+18454
+18455
+18456
+18457
+18458
+18459
+18460
+18461
+18462
+18463
+18464
+18465
+18466
+18467
+18468
+18469
+18470
+18471
+18472
+18473
+18474
+18475
+18476
+18477
+18478
+18479
+18480
+18481
+18482
+18483
+18484
+18485
+18486
+18487
+18488
+18489
+18490
+18491
+18492
+18493
+18494
+18495
+18496
+18497
+18498
+18499
+18500
+18501
+18502
+18503
+18504
+18505
+18506
+18507
+18508
+18509
+18510
+18511
+18512
+18513
+18514
+18515
+18516
+18517
+18518
+18519
+18520
+18521
+18522
+18523
+18524
+18525
+18526
+18527
+18528
+18529
+18530
+18531
+18532
+18533
+18534
+18535
+18536
+18537
+18538
+18539
+18540
+18541
+18542
+18543
+18544
+18545
+18546
+18547
+18548
+18549
+18550
+18551
+18552
+18553
+18554
+18555
+18556
+18557
+18558
+18559
+18560
+18561
+18562
+18563
+18564
+18565
+18566
+18567
+18568
+18569
+18570
+18571
+18572
+18573
+18574
+18575
+18576
+18577
+18578
+18579
+18580
+18581
+18582
+18583
+18584
+18585
+18586
+18587
+18588
+18589
+18590
+18591
+18592
+18593
+18594
+18595
+18596
+18597
+18598
+18599
+18600
+18601
+18602
+18603
+18604
+18605
+18606
+18607
+18608
+18609
+18610
+18611
+18612
+18613
+18614
+18615
+18616
+18617
+18618
+18619
+18620
+18621
+18622
+18623
+18624
+18625
+18626
+18627
+18628
+18629
+18630
+18631
+18632
+18633
+18634
+18635
+18636
+18637
+18638
+18639
+18640
+18641
+18642
+18643
+18644
+18645
+18646
+18647
+18648
+18649
+18650
+18651
+18652
+18653
+18654
+18655
+18656
+18657
+18658
+18659
+18660
+18661
+18662
+18663
+18664
+18665
+18666
+18667
+18668
+18669
+18670
+18671
+18672
+18673
+18674
+18675
+18676
+18677
+18678
+18679
+18680
+18681
+18682
+18683
+18684
+18685
+18686
+18687
+18688
+18689
+18690
+18691
+18692
+18693
+18694
+18695
+18696
+18697
+18698
+18699
+18700
+18701
+18702
+18703
+18704
+18705
+18706
+18707
+18708
+18709
+18710
+18711
+18712
+18713
+18714
+18715
+18716
+18717
+18718
+18719
+18720
+18721
+18722
+18723
+18724
+18725
+18726
+18727
+18728
+18729
+18730
+18731
+18732
+18733
+18734
+18735
+18736
+18737
+18738
+18739
+18740
+18741
+18742
+18743
+18744
+18745
+18746
+18747
+18748
+18749
+18750
+18751
+18752
+18753
+18754
+18755
+18756
+18757
+18758
+18759
+18760
+18761
+18762
+18763
+18764
+18765
+18766
+18767
+18768
+18769
+18770
+18771
+18772
+18773
+18774
+18775
+18776
+18777
+18778
+18779
+18780
+18781
+18782
+18783
+18784
+18785
+18786
+18787
+18788
+18789
+18790
+18791
+18792
+18793
+18794
+18795
+18796
+18797
+18798
+18799
+18800
+18801
+18802
+18803
+18804
+18805
+18806
+18807
+18808
+18809
+18810
+18811
+18812
+18813
+18814
+18815
+18816
+18817
+18818
+18819
+18820
+18821
+18822
+18823
+18824
+18825
+18826
+18827
+18828
+18829
+18830
+18831
+18832
+18833
+18834
+18835
+18836
+18837
+18838
+18839
+18840
+18841
+18842
+18843
+18844
+18845
+18846
+18847
+18848
+18849
+18850
+18851
+18852
+18853
+18854
+18855
+18856
+18857
+18858
+18859
+18860
+18861
+18862
+18863
+18864
+18865
+18866
+18867
+18868
+18869
+18870
+18871
+18872
+18873
+18874
+18875
+18876
+18877
+18878
+18879
+18880
+18881
+18882
+18883
+18884
+18885
+18886
+18887
+18888
+18889
+18890
+18891
+18892
+18893
+18894
+18895
+18896
+18897
+18898
+18899
+18900
+18901
+18902
+18903
+18904
+18905
+18906
+18907
+18908
+18909
+18910
+18911
+18912
+18913
+18914
+18915
+18916
+18917
+18918
+18919
+18920
+18921
+18922
+18923
+18924
+18925
+18926
+18927
+18928
+18929
+18930
+18931
+18932
+18933
+18934
+18935
+18936
+18937
+18938
+18939
+18940
+18941
+18942
+18943
+18944
+18945
+18946
+18947
+18948
+18949
+18950
+18951
+18952
+18953
+18954
+18955
+18956
+18957
+18958
+18959
+18960
+18961
+18962
+18963
+18964
+18965
+18966
+18967
+18968
+18969
+18970
+18971
+18972
+18973
+18974
+18975
+18976
+18977
+18978
+18979
+18980
+18981
+18982
+18983
+18984
+18985
+18986
+18987
+18988
+18989
+18990
+18991
+18992
+18993
+18994
+18995
+18996
+18997
+18998
+18999
+19000
+19001
+19002
+19003
+19004
+19005
+19006
+19007
+19008
+19009
+19010
+19011
+19012
+19013
+19014
+19015
+19016
+19017
+19018
+19019
+19020
+19021
+19022
+19023
+19024
+19025
+19026
+19027
+19028
+19029
+19030
+19031
+19032
+19033
+19034
+19035
+19036
+19037
+19038
+19039
+19040
+19041
+19042
+19043
+19044
+19045
+19046
+19047
+19048
+19049
+19050
+19051
+19052
+19053
+19054
+19055
+19056
+19057
+19058
+19059
+19060
+19061
+19062
+19063
+19064
+19065
+19066
+19067
+19068
+19069
+19070
+19071
+19072
+19073
+19074
+19075
+19076
+19077
+19078
+19079
+19080
+19081
+19082
+19083
+19084
+19085
+19086
+19087
+19088
+19089
+19090
+19091
+19092
+19093
+19094
+19095
+19096
+19097
+19098
+19099
+19100
+19101
+19102
+19103
+19104
+19105
+19106
+19107
+19108
+19109
+19110
+19111
+19112
+19113
+19114
+19115
+19116
+19117
+19118
+19119
+19120
+19121
+19122
+19123
+19124
+19125
+19126
+19127
+19128
+19129
+19130
+19131
+19132
+19133
+19134
+19135
+19136
+19137
+19138
+19139
+19140
+19141
+19142
+19143
+19144
+19145
+19146
+19147
+19148
+19149
+19150
+19151
+19152
+19153
+19154
+19155
+19156
+19157
+19158
+19159
+19160
+19161
+19162
+19163
+19164
+19165
+19166
+19167
+19168
+19169
+19170
+19171
+19172
+19173
+19174
+19175
+19176
+19177
+19178
+19179
+19180
+19181
+19182
+19183
+19184
+19185
+19186
+19187
+19188
+19189
+19190
+19191
+19192
+19193
+19194
+19195
+19196
+19197
+19198
+19199
+19200
+19201
+19202
+19203
+19204
+19205
+19206
+19207
+19208
+19209
+19210
+19211
+19212
+19213
+19214
+19215
+19216
+19217
+19218
+19219
+19220
+19221
+19222
+19223
+19224
+19225
+19226
+19227
+19228
+19229
+19230
+19231
+19232
+19233
+19234
+19235
+19236
+19237
+19238
+19239
+19240
+19241
+19242
+19243
+19244
+19245
+19246
+19247
+19248
+19249
+19250
+19251
+19252
+19253
+19254
+19255
+19256
+19257
+19258
+19259
+19260
+19261
+19262
+19263
+19264
+19265
+19266
+19267
+19268
+19269
+19270
+19271
+19272
+19273
+19274
+19275
+19276
+19277
+19278
+19279
+19280
+19281
+19282
+19283
+19284
+19285
+19286
+19287
+19288
+19289
+19290
+19291
+19292
+19293
+19294
+19295
+19296
+19297
+19298
+19299
+19300
+19301
+19302
+19303
+19304
+19305
+19306
+19307
+19308
+19309
+19310
+19311
+19312
+19313
+19314
+19315
+19316
+19317
+19318
+19319
+19320
+19321
+19322
+19323
+19324
+19325
+19326
+19327
+19328
+19329
+19330
+19331
+19332
+19333
+19334
+19335
+19336
+19337
+19338
+19339
+19340
+19341
+19342
+19343
+19344
+19345
+19346
+19347
+19348
+19349
+19350
+19351
+19352
+19353
+19354
+19355
+19356
+19357
+19358
+19359
+19360
+19361
+19362
+19363
+19364
+19365
+19366
+19367
+19368
+19369
+19370
+19371
+19372
+19373
+19374
+19375
+19376
+19377
+19378
+19379
+19380
+19381
+19382
+19383
+19384
+19385
+19386
+19387
+19388
+19389
+19390
+19391
+19392
+19393
+19394
+19395
+19396
+19397
+19398
+19399
+19400
+19401
+19402
+19403
+19404
+19405
+19406
+19407
+19408
+19409
+19410
+19411
+19412
+19413
+19414
+19415
+19416
+19417
+19418
+19419
+19420
+19421
+19422
+19423
+19424
+19425
+19426
+19427
+19428
+19429
+19430
+19431
+19432
+19433
+19434
+19435
+19436
+19437
+19438
+19439
+19440
+19441
+19442
+19443
+19444
+19445
+19446
+19447
+19448
+19449
+19450
+19451
+19452
+19453
+19454
+19455
+19456
+19457
+19458
+19459
+19460
+19461
+19462
+19463
+19464
+19465
+19466
+19467
+19468
+19469
+19470
+19471
+19472
+19473
+19474
+19475
+19476
+19477
+19478
+19479
+19480
+19481
+19482
+19483
+19484
+19485
+19486
+19487
+19488
+19489
+19490
+19491
+19492
+19493
+19494
+19495
+19496
+19497
+19498
+19499
+19500
+19501
+19502
+19503
+19504
+19505
+19506
+19507
+19508
+19509
+19510
+19511
+19512
+19513
+19514
+19515
+19516
+19517
+19518
+19519
+19520
+19521
+19522
+19523
+19524
+19525
+19526
+19527
+19528
+19529
+19530
+19531
+19532
+19533
+19534
+19535
+19536
+19537
+19538
+19539
+19540
+19541
+19542
+19543
+19544
+19545
+19546
+19547
+19548
+19549
+19550
+19551
+19552
+19553
+19554
+19555
+19556
+19557
+19558
+19559
+19560
+19561
+19562
+19563
+19564
+19565
+19566
+19567
+19568
+19569
+19570
+19571
+19572
+19573
+19574
+19575
+19576
+19577
+19578
+19579
+19580
+19581
+19582
+19583
+19584
+19585
+19586
+19587
+19588
+19589
+19590
+19591
+19592
+19593
+19594
+19595
+19596
+19597
+19598
+19599
+19600
+19601
+19602
+19603
+19604
+19605
+19606
+19607
+19608
+19609
+19610
+19611
+19612
+19613
+19614
+19615
+19616
+19617
+19618
+19619
+19620
+19621
+19622
+19623
+19624
+19625
+19626
+19627
+19628
+19629
+19630
+19631
+19632
+19633
+19634
+19635
+19636
+19637
+19638
+19639
+19640
+19641
+19642
+19643
+19644
+19645
+19646
+19647
+19648
+19649
+19650
+19651
+19652
+19653
+19654
+19655
+19656
+19657
+19658
+19659
+19660
+19661
+19662
+19663
+19664
+19665
+19666
+19667
+19668
+19669
+19670
+19671
+19672
+19673
+19674
+19675
+19676
+19677
+19678
+19679
+19680
+19681
+19682
+19683
+19684
+19685
+19686
+19687
+19688
+19689
+19690
+19691
+19692
+19693
+19694
+19695
+19696
+19697
+19698
+19699
+19700
+19701
+19702
+19703
+19704
+19705
+19706
+19707
+19708
+19709
+19710
+19711
+19712
+19713
+19714
+19715
+19716
+19717
+19718
+19719
+19720
+19721
+19722
+19723
+19724
+19725
+19726
+19727
+19728
+19729
+19730
+19731
+19732
+19733
+19734
+19735
+19736
+19737
+19738
+19739
+19740
+19741
+19742
+19743
+19744
+19745
+19746
+19747
+19748
+19749
+19750
+19751
+19752
+19753
+19754
+19755
+19756
+19757
+19758
+19759
+19760
+19761
+19762
+19763
+19764
+19765
+19766
+19767
+19768
+19769
+19770
+19771
+19772
+19773
+19774
+19775
+19776
+19777
+19778
+19779
+19780
+19781
+19782
+19783
+19784
+19785
+19786
+19787
+19788
+19789
+19790
+19791
+19792
+19793
+19794
+19795
+19796
+19797
+19798
+19799
+19800
+19801
+19802
+19803
+19804
+19805
+19806
+19807
+19808
+19809
+19810
+19811
+19812
+19813
+19814
+19815
+19816
+19817
+19818
+19819
+19820
+19821
+19822
+19823
+19824
+19825
+19826
+19827
+19828
+19829
+19830
+19831
+19832
+19833
+19834
+19835
+19836
+19837
+19838
+19839
+19840
+19841
+19842
+19843
+19844
+19845
+19846
+19847
+19848
+19849
+19850
+19851
+19852
+19853
+19854
+19855
+19856
+19857
+19858
+19859
+19860
+19861
+19862
+19863
+19864
+19865
+19866
+19867
+19868
+19869
+19870
+19871
+19872
+19873
+19874
+19875
+19876
+19877
+19878
+19879
+19880
+19881
+19882
+19883
+19884
+19885
+19886
+19887
+19888
+19889
+19890
+19891
+19892
+19893
+19894
+19895
+19896
+19897
+19898
+19899
+19900
+19901
+19902
+19903
+19904
+19905
+19906
+19907
+19908
+19909
+19910
+19911
+19912
+19913
+19914
+19915
+19916
+19917
+19918
+19919
+19920
+19921
+19922
+19923
+19924
+19925
+19926
+19927
+19928
+19929
+19930
+19931
+19932
+19933
+19934
+19935
+19936
+19937
+19938
+19939
+19940
+19941
+19942
+19943
+19944
+19945
+19946
+19947
+19948
+19949
+19950
+19951
+19952
+19953
+19954
+19955
+19956
+19957
+19958
+19959
+19960
+19961
+19962
+19963
+19964
+19965
+19966
+19967
+19968
+19969
+19970
+19971
+19972
+19973
+19974
+19975
+19976
+19977
+19978
+19979
+19980
+19981
+19982
+19983
+19984
+19985
+19986
+19987
+19988
+19989
+19990
+19991
+19992
+19993
+19994
+19995
+19996
+19997
+19998
+19999
+20000
+20001
+20002
+20003
+20004
+20005
+20006
+20007
+20008
+20009
+20010
+20011
+20012
+20013
+20014
+20015
+20016
+20017
+20018
+20019
+20020
+20021
+20022
+20023
+20024
+20025
+20026
+20027
+20028
+20029
+20030
+20031
+20032
+20033
+20034
+20035
+20036
+20037
+20038
+20039
+20040
+20041
+20042
+20043
+20044
+20045
+20046
+20047
+20048
+20049
+20050
+20051
+20052
+20053
+20054
+20055
+20056
+20057
+20058
+20059
+20060
+20061
+20062
+20063
+20064
+20065
+20066
+20067
+20068
+20069
+20070
+20071
+20072
+20073
+20074
+20075
+20076
+20077
+20078
+20079
+20080
+20081
+20082
+20083
+20084
+20085
+20086
+20087
+20088
+20089
+20090
+20091
+20092
+20093
+20094
+20095
+20096
+20097
+20098
+20099
+20100
+20101
+20102
+20103
+20104
+20105
+20106
+20107
+20108
+20109
+20110
+20111
+20112
+20113
+20114
+20115
+20116
+20117
+20118
+20119
+20120
+20121
+20122
+20123
+20124
+20125
+20126
+20127
+20128
+20129
+20130
+20131
+20132
+20133
+20134
+20135
+20136
+20137
+20138
+20139
+20140
+20141
+20142
+20143
+20144
+20145
+20146
+20147
+20148
+20149
+20150
+20151
+20152
+20153
+20154
+20155
+20156
+20157
+20158
+20159
+20160
+20161
+20162
+20163
+20164
+20165
+20166
+20167
+20168
+20169
+20170
+20171
+20172
+20173
+20174
+20175
+20176
+20177
+20178
+20179
+20180
+20181
+20182
+20183
+20184
+20185
+20186
+20187
+20188
+20189
+20190
+20191
+20192
+20193
+20194
+20195
+20196
+20197
+20198
+20199
+20200
+20201
+20202
+20203
+20204
+20205
+20206
+20207
+20208
+20209
+20210
+20211
+20212
+20213
+20214
+20215
+20216
+20217
+20218
+20219
+20220
+20221
+20222
+20223
+20224
+20225
+20226
+20227
+20228
+20229
+20230
+20231
+20232
+20233
+20234
+20235
+20236
+20237
+20238
+20239
+20240
+20241
+20242
+20243
+20244
+20245
+20246
+20247
+20248
+20249
+20250
+20251
+20252
+20253
+20254
+20255
+20256
+20257
+20258
+20259
+20260
+20261
+20262
+20263
+20264
+20265
+20266
+20267
+20268
+20269
+20270
+20271
+20272
+20273
+20274
+20275
+20276
+20277
+20278
+20279
+20280
+20281
+20282
+20283
+20284
+20285
+20286
+20287
+20288
+20289
+20290
+20291
+20292
+20293
+20294
+20295
+20296
+20297
+20298
+20299
+20300
+20301
+20302
+20303
+20304
+20305
+20306
+20307
+20308
+20309
+20310
+20311
+20312
+20313
+20314
+20315
+20316
+20317
+20318
+20319
+20320
+20321
+20322
+20323
+20324
+20325
+20326
+20327
+20328
+20329
+20330
+20331
+20332
+20333
+20334
+20335
+20336
+20337
+20338
+20339
+20340
+20341
+20342
+20343
+20344
+20345
+20346
+20347
+20348
+20349
+20350
+20351
+20352
+20353
+20354
+20355
+20356
+20357
+20358
+20359
+20360
+20361
+20362
+20363
+20364
+20365
+20366
+20367
+20368
+20369
+20370
+20371
+20372
+20373
+20374
+20375
+20376
+20377
+20378
+20379
+20380
+20381
+20382
+20383
+20384
+20385
+20386
+20387
+20388
+20389
+20390
+20391
+20392
+20393
+20394
+20395
+20396
+20397
+20398
+20399
+20400
+20401
+20402
+20403
+20404
+20405
+20406
+20407
+20408
+20409
+20410
+20411
+20412
+20413
+20414
+20415
+20416
+20417
+20418
+20419
+20420
+20421
+20422
+20423
+20424
+20425
+20426
+20427
+20428
+20429
+20430
+20431
+20432
+20433
+20434
+20435
+20436
+20437
+20438
+20439
+20440
+20441
+20442
+20443
+20444
+20445
+20446
+20447
+20448
+20449
+20450
+20451
+20452
+20453
+20454
+20455
+20456
+20457
+20458
+20459
+20460
+20461
+20462
+20463
+20464
+20465
+20466
+20467
+20468
+20469
+20470
+20471
+20472
+20473
+20474
+20475
+20476
+20477
+20478
+20479
+20480
+20481
+20482
+20483
+20484
+20485
+20486
+20487
+20488
+20489
+20490
+20491
+20492
+20493
+20494
+20495
+20496
+20497
+20498
+20499
+20500
+20501
+20502
+20503
+20504
+20505
+20506
+20507
+20508
+20509
+20510
+20511
+20512
+20513
+20514
+20515
+20516
+20517
+20518
+20519
+20520
+20521
+20522
+20523
+20524
+20525
+20526
+20527
+20528
+20529
+20530
+20531
+20532
+20533
+20534
+20535
+20536
+20537
+20538
+20539
+20540
+20541
+20542
+20543
+20544
+20545
+20546
+20547
+20548
+20549
+20550
+20551
+20552
+20553
+20554
+20555
+20556
+20557
+20558
+20559
+20560
+20561
+20562
+20563
+20564
+20565
+20566
+20567
+20568
+20569
+20570
+20571
+20572
+20573
+20574
+20575
+20576
+20577
+20578
+20579
+20580
+20581
+20582
+20583
+20584
+20585
+20586
+20587
+20588
+20589
+20590
+20591
+20592
+20593
+20594
+20595
+20596
+20597
+20598
+20599
+20600
+20601
+20602
+20603
+20604
+20605
+20606
+20607
+20608
+20609
+20610
+20611
+20612
+20613
+20614
+20615
+20616
+20617
+20618
+20619
+20620
+20621
+20622
+20623
+20624
+20625
+20626
+20627
+20628
+20629
+20630
+20631
+20632
+20633
+20634
+20635
+20636
+20637
+20638
+20639
+20640
+20641
+20642
+20643
+20644
+20645
+20646
+20647
+20648
+20649
+20650
+20651
+20652
+20653
+20654
+20655
+20656
+20657
+20658
+20659
+20660
+20661
+20662
+20663
+20664
+20665
+20666
+20667
+20668
+20669
+20670
+20671
+20672
+20673
+20674
+20675
+20676
+20677
+20678
+20679
+20680
+20681
+20682
+20683
+20684
+20685
+20686
+20687
+20688
+20689
+20690
+20691
+20692
+20693
+20694
+20695
+20696
+20697
+20698
+20699
+20700
+20701
+20702
+20703
+20704
+20705
+20706
+20707
+20708
+20709
+20710
+20711
+20712
+20713
+20714
+20715
+20716
+20717
+20718
+20719
+20720
+20721
+20722
+20723
+20724
+20725
+20726
+20727
+20728
+20729
+20730
+20731
+20732
+20733
+20734
+20735
+20736
+20737
+20738
+20739
+20740
+20741
+20742
+20743
+20744
+20745
+20746
+20747
+20748
+20749
+20750
+20751
+20752
+20753
+20754
+20755
+20756
+20757
+20758
+20759
+20760
+20761
+20762
+20763
+20764
+20765
+20766
+20767
+20768
+20769
+20770
+20771
+20772
+20773
+20774
+20775
+20776
+20777
+20778
+20779
+20780
+20781
+20782
+20783
+20784
+20785
+20786
+20787
+20788
+20789
+20790
+20791
+20792
+20793
+20794
+20795
+20796
+20797
+20798
+20799
+20800
+20801
+20802
+20803
+20804
+20805
+20806
+20807
+20808
+20809
+20810
+20811
+20812
+20813
+20814
+20815
+20816
+20817
+20818
+20819
+20820
+20821
+20822
+20823
+20824
+20825
+20826
+20827
+20828
+20829
+20830
+20831
+20832
+20833
+20834
+20835
+20836
+20837
+20838
+20839
+20840
+20841
+20842
+20843
+20844
+20845
+20846
+20847
+20848
+20849
+20850
+20851
+20852
+20853
+20854
+20855
+20856
+20857
+20858
+20859
+20860
+20861
+20862
+20863
+20864
+20865
+20866
+20867
+20868
+20869
+20870
+20871
+20872
+20873
+20874
+20875
+20876
+20877
+20878
+20879
+20880
+20881
+20882
+20883
+20884
+20885
+20886
+20887
+20888
+20889
+20890
+20891
+20892
+20893
+20894
+20895
+20896
+20897
+20898
+20899
+20900
+20901
+20902
+20903
+20904
+20905
+20906
+20907
+20908
+20909
+20910
+20911
+20912
+20913
+20914
+20915
+20916
+20917
+20918
+20919
+20920
+20921
+20922
+20923
+20924
+20925
+20926
+20927
+20928
+20929
+20930
+20931
+20932
+20933
+20934
+20935
+20936
+20937
+20938
+20939
+20940
+20941
+20942
+20943
+20944
+20945
+20946
+20947
+20948
+20949
+20950
+20951
+20952
+20953
+20954
+20955
+20956
+20957
+20958
+20959
+20960
+20961
+20962
+20963
+20964
+20965
+20966
+20967
+20968
+20969
+20970
+20971
+20972
+20973
+20974
+20975
+20976
+20977
+20978
+20979
+20980
+20981
+20982
+20983
+20984
+20985
+20986
+20987
+20988
+20989
+20990
+20991
+20992
+20993
+20994
+20995
+20996
+20997
+20998
+20999
+21000
+21001
+21002
+21003
+21004
+21005
+21006
+21007
+21008
+21009
+21010
+21011
+21012
+21013
+21014
+21015
+21016
+21017
+21018
+21019
+21020
+21021
+21022
+21023
+21024
+21025
+21026
+21027
+21028
+21029
+21030
+21031
+21032
+21033
+21034
+21035
+21036
+21037
+21038
+21039
+21040
+21041
+21042
+21043
+21044
+21045
+21046
+21047
+21048
+21049
+21050
+21051
+21052
+21053
+21054
+21055
+21056
+21057
+21058
+21059
+21060
+21061
+21062
+21063
+21064
+21065
+21066
+21067
+21068
+21069
+21070
+21071
+21072
+21073
+21074
+21075
+21076
+21077
+21078
+21079
+21080
+21081
+21082
+21083
+21084
+21085
+21086
+21087
+21088
+21089
+21090
+21091
+21092
+21093
+21094
+21095
+21096
+21097
+21098
+21099
+21100
+21101
+21102
+21103
+21104
+21105
+21106
+21107
+21108
+21109
+21110
+
# Generated from .\VHDLParser.g4 by ANTLR 4.12.0
+from sys import stdout
+from typing import TextIO
+
+from antlr4 import Parser, ATNDeserializer, DFA, PredictionContextCache, TokenStream, ParserATNSimulator, \
+	ParserRuleContext, ParseTreeVisitor, RecognitionException, Token, NoViableAltException, ATN, RuleContext
+
+
+def serializedATN():
+	return (
+		4, 1, 163, 3044, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2,
+		8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7,
+		16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24,
+		2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2,
+		33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41,
+		7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7,
+		49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57,
+		2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2,
+		66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74,
+		7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7,
+		82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90,
+		2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2,
+		99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106,
+		7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7,
+		113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120,
+		2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2,
+		128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135,
+		7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7,
+		142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149,
+		2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2,
+		157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164,
+		7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7,
+		171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178,
+		2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2,
+		186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193,
+		7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7,
+		200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207,
+		2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2,
+		215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219, 7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222,
+		7, 222, 2, 223, 7, 223, 2, 224, 7, 224, 2, 225, 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 2, 229, 7,
+		229, 2, 230, 7, 230, 2, 231, 7, 231, 2, 232, 7, 232, 2, 233, 7, 233, 2, 234, 7, 234, 2, 235, 7, 235, 2, 236, 7, 236,
+		2, 237, 7, 237, 2, 238, 7, 238, 2, 239, 7, 239, 2, 240, 7, 240, 2, 241, 7, 241, 2, 242, 7, 242, 2, 243, 7, 243, 2,
+		244, 7, 244, 2, 245, 7, 245, 2, 246, 7, 246, 2, 247, 7, 247, 2, 248, 7, 248, 2, 249, 7, 249, 2, 250, 7, 250, 2, 251,
+		7, 251, 2, 252, 7, 252, 2, 253, 7, 253, 2, 254, 7, 254, 2, 255, 7, 255, 2, 256, 7, 256, 2, 257, 7, 257, 1, 0, 1, 0,
+		1, 0, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 3, 3, 3, 527, 8, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 533, 8, 3, 1, 4, 1,
+		4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 541, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 5, 5, 547, 8, 5, 10, 5, 12, 5, 550, 9, 5, 1, 5,
+		1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 558, 8, 6, 1, 6, 1, 6, 1, 6, 3, 6, 563, 8, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1,
+		8, 1, 9, 1, 9, 1, 9, 3, 9, 574, 8, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 5, 10, 582, 8, 10, 10, 10, 12, 10,
+		585, 9, 10, 1, 10, 1, 10, 5, 10, 589, 8, 10, 10, 10, 12, 10, 592, 9, 10, 1, 10, 1, 10, 3, 10, 596, 8, 10, 1, 10, 3,
+		10, 599, 8, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 608, 8, 11, 1, 11, 1, 11, 1, 11, 3, 11, 613,
+		8, 11, 1, 11, 1, 11, 1, 11, 3, 11, 618, 8, 11, 1, 11, 3, 11, 621, 8, 11, 1, 11, 1, 11, 1, 11, 3, 11, 626, 8, 11, 1,
+		12, 1, 12, 3, 12, 630, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 636, 8, 12, 3, 12, 638, 8, 12, 1, 13, 1, 13, 1, 13,
+		1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 3, 14, 650, 8, 14, 1, 15, 1, 15, 1, 15, 5, 15, 655, 8, 15, 10, 15,
+		12, 15, 658, 9, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 666, 8, 16, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17,
+		672, 8, 17, 1, 17, 1, 17, 3, 17, 676, 8, 17, 1, 18, 1, 18, 3, 18, 680, 8, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1,
+		19, 3, 19, 688, 8, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 5, 20, 695, 8, 20, 10, 20, 12, 20, 698, 9, 20, 1, 21, 1,
+		21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24,
+		3, 24, 718, 8, 24, 1, 24, 3, 24, 721, 8, 24, 1, 24, 3, 24, 724, 8, 24, 1, 25, 1, 25, 1, 25, 5, 25, 729, 8, 25, 10,
+		25, 12, 25, 732, 9, 25, 1, 25, 5, 25, 735, 8, 25, 10, 25, 12, 25, 738, 9, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1,
+		26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26,
+		1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 766, 8, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 774, 8, 27, 3, 27,
+		776, 8, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 785, 8, 28, 1, 28, 3, 28, 788, 8, 28, 1, 28, 1,
+		28, 1, 28, 1, 28, 3, 28, 794, 8, 28, 3, 28, 796, 8, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 802, 8, 28, 3, 28, 804,
+		8, 28, 1, 28, 5, 28, 807, 8, 28, 10, 28, 12, 28, 810, 9, 28, 1, 28, 1, 28, 5, 28, 814, 8, 28, 10, 28, 12, 28, 817,
+		9, 28, 1, 28, 1, 28, 1, 28, 3, 28, 822, 8, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 3, 29, 829, 8, 29, 1, 29, 1, 29,
+		1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 4, 30, 841, 8, 30, 11, 30, 12, 30, 842, 1, 30, 1, 30, 1, 30,
+		3, 30, 848, 8, 30, 1, 30, 1, 30, 1, 31, 1, 31, 3, 31, 854, 8, 31, 1, 31, 1, 31, 1, 31, 1, 31, 4, 31, 860, 8, 31, 11,
+		31, 12, 31, 861, 1, 31, 1, 31, 1, 31, 3, 31, 867, 8, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 5, 32, 875, 8,
+		32, 10, 32, 12, 32, 878, 9, 32, 1, 33, 1, 33, 1, 33, 3, 33, 883, 8, 33, 1, 34, 1, 34, 1, 34, 5, 34, 888, 8, 34, 10,
+		34, 12, 34, 891, 9, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 898, 8, 35, 1, 35, 3, 35, 901, 8, 35, 1, 35, 1,
+		35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 3, 36, 910, 8, 36, 1, 36, 3, 36, 913, 8, 36, 1, 36, 3, 36, 916, 8, 36, 1, 36,
+		1, 36, 3, 36, 920, 8, 36, 1, 36, 3, 36, 923, 8, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 931, 8, 37, 1,
+		37, 3, 37, 934, 8, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 3, 39, 945, 8, 39, 1, 40, 1,
+		40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 3, 41, 957, 8, 41, 1, 41, 3, 41, 960, 8, 41, 1, 41, 1,
+		41, 1, 41, 1, 42, 1, 42, 1, 42, 3, 42, 968, 8, 42, 1, 42, 3, 42, 971, 8, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 3,
+		43, 978, 8, 43, 1, 43, 3, 43, 981, 8, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 3, 44, 992,
+		8, 44, 1, 44, 3, 44, 995, 8, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 3, 45, 1002, 8, 45, 1, 45, 3, 45, 1005, 8, 45,
+		1, 45, 1, 45, 1, 45, 3, 45, 1010, 8, 45, 1, 46, 1, 46, 1, 46, 3, 46, 1015, 8, 46, 1, 46, 3, 46, 1018, 8, 46, 1, 46,
+		1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1028, 8, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1033, 8, 47, 1, 47,
+		1, 47, 1, 47, 3, 47, 1038, 8, 47, 1, 47, 3, 47, 1041, 8, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1046, 8, 47, 1, 48, 1, 48,
+		1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1057, 8, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 3,
+		50, 1065, 8, 50, 1, 50, 1, 50, 3, 50, 1069, 8, 50, 1, 51, 1, 51, 1, 51, 3, 51, 1074, 8, 51, 1, 51, 1, 51, 1, 51, 1,
+		52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 5, 52, 1087, 8, 52, 10, 52, 12, 52, 1090, 9, 52, 1, 52, 1, 52,
+		3, 52, 1094, 8, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 5, 53, 1102, 8, 53, 10, 53, 12, 53, 1105, 9, 53, 1,
+		53, 1, 53, 1, 53, 3, 53, 1110, 8, 53, 1, 53, 3, 53, 1113, 8, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 3, 54, 1120, 8,
+		54, 1, 55, 1, 55, 3, 55, 1124, 8, 55, 1, 56, 1, 56, 3, 56, 1128, 8, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3,
+		57, 1136, 8, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 3, 59, 1149, 8, 59, 1,
+		60, 1, 60, 1, 60, 1, 60, 5, 60, 1155, 8, 60, 10, 60, 12, 60, 1158, 9, 60, 1, 60, 1, 60, 3, 60, 1162, 8, 60, 1, 60,
+		1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 3, 61, 1170, 8, 61, 1, 62, 1, 62, 1, 62, 1, 62, 5, 62, 1176, 8, 62, 10, 62, 12,
+		62, 1179, 9, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 3, 63, 1186, 8, 63, 1, 63, 3, 63, 1189, 8, 63, 1, 64, 4, 64,
+		1192, 8, 64, 11, 64, 12, 64, 1193, 1, 64, 1, 64, 1, 65, 5, 65, 1199, 8, 65, 10, 65, 12, 65, 1202, 9, 65, 1, 65, 1,
+		65, 1, 66, 1, 66, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 3, 69, 1218, 8, 69, 1, 70,
+		1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 3, 72, 1232, 8, 72, 1, 72, 1, 72, 1,
+		73, 1, 73, 3, 73, 1238, 8, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 3, 75, 1247, 8, 75, 1, 76, 1, 76, 3,
+		76, 1251, 8, 76, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 3, 78, 1258, 8, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 3, 79,
+		1265, 8, 79, 1, 79, 1, 79, 1, 79, 3, 79, 1270, 8, 79, 1, 80, 1, 80, 1, 81, 1, 81, 3, 81, 1276, 8, 81, 1, 82, 1, 82,
+		1, 82, 1, 82, 3, 82, 1282, 8, 82, 1, 82, 3, 82, 1285, 8, 82, 1, 82, 5, 82, 1288, 8, 82, 10, 82, 12, 82, 1291, 9, 82,
+		1, 82, 1, 82, 5, 82, 1295, 8, 82, 10, 82, 12, 82, 1298, 9, 82, 3, 82, 1300, 8, 82, 1, 82, 1, 82, 3, 82, 1304, 8, 82,
+		1, 82, 3, 82, 1307, 8, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1,
+		83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 3, 83, 1331, 8, 83, 1, 84, 1, 84, 3, 84, 1335, 8,
+		84, 1, 85, 1, 85, 1, 85, 5, 85, 1340, 8, 85, 10, 85, 12, 85, 1343, 9, 85, 1, 85, 1, 85, 3, 85, 1347, 8, 85, 1, 86,
+		1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 3, 87, 1357, 8, 87, 1, 88, 1, 88, 1, 89, 1, 89, 1, 90, 1, 90, 1,
+		90, 1, 90, 5, 90, 1367, 8, 90, 10, 90, 12, 90, 1370, 9, 90, 1, 90, 1, 90, 1, 91, 1, 91, 3, 91, 1376, 8, 91, 1, 91,
+		1, 91, 3, 91, 1380, 8, 91, 1, 91, 1, 91, 3, 91, 1384, 8, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92,
+		3, 92, 1394, 8, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1,
+		92, 1, 92, 1, 92, 1, 92, 1, 92, 5, 92, 1414, 8, 92, 10, 92, 12, 92, 1417, 9, 92, 1, 93, 1, 93, 3, 93, 1421, 8, 93,
+		1, 94, 1, 94, 1, 94, 3, 94, 1426, 8, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1,
+		96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 3, 98, 1452, 8, 98,
+		1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 3, 99, 1459, 8, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101,
+		3, 101, 1469, 8, 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1,
+		103, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 5, 105, 1491, 8, 105, 10, 105, 12, 105, 1494,
+		9, 105, 1, 105, 3, 105, 1497, 8, 105, 1, 105, 5, 105, 1500, 8, 105, 10, 105, 12, 105, 1503, 9, 105, 1, 105, 1, 105,
+		1, 105, 3, 105, 1508, 8, 105, 1, 105, 1, 105, 1, 106, 1, 106, 3, 106, 1514, 8, 106, 1, 107, 1, 107, 1, 108, 1, 108,
+		1, 108, 3, 108, 1521, 8, 108, 1, 108, 1, 108, 1, 108, 1, 108, 3, 108, 1527, 8, 108, 1, 109, 1, 109, 1, 109, 1, 109,
+		1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 3, 111, 1540, 8, 111, 1, 111, 1, 111, 1, 111, 3, 111, 1545,
+		8, 111, 1, 111, 1, 111, 1, 111, 1, 111, 3, 111, 1551, 8, 111, 1, 111, 1, 111, 1, 111, 3, 111, 1556, 8, 111, 1, 111,
+		1, 111, 1, 112, 1, 112, 1, 112, 3, 112, 1563, 8, 112, 1, 113, 1, 113, 1, 113, 3, 113, 1568, 8, 113, 1, 114, 5, 114,
+		1571, 8, 114, 10, 114, 12, 114, 1574, 9, 114, 1, 114, 3, 114, 1577, 8, 114, 1, 114, 5, 114, 1580, 8, 114, 10, 114,
+		12, 114, 1583, 9, 114, 1, 114, 1, 114, 3, 114, 1587, 8, 114, 1, 114, 3, 114, 1590, 8, 114, 1, 115, 1, 115, 1, 115,
+		1, 115, 1, 115, 5, 115, 1597, 8, 115, 10, 115, 12, 115, 1600, 9, 115, 1, 115, 3, 115, 1603, 8, 115, 1, 115, 1, 115,
+		1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 3, 117, 1616, 8, 117, 1, 118, 1, 118, 1,
+		118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 5, 118, 1626, 8, 118, 10, 118, 12, 118, 1629, 9, 118, 1, 118, 1, 118,
+		1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 5, 119, 1641, 8, 119, 10, 119, 12, 119, 1644, 9,
+		119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 5, 121, 1656, 8, 121, 10, 121,
+		12, 121, 1659, 9, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 3, 122, 1666, 8, 122, 1, 122, 1, 122, 1, 122, 1, 122,
+		1, 122, 1, 122, 3, 122, 1674, 8, 122, 1, 122, 1, 122, 1, 122, 1, 122, 5, 122, 1680, 8, 122, 10, 122, 12, 122, 1683,
+		9, 122, 1, 122, 1, 122, 1, 122, 3, 122, 1688, 8, 122, 1, 122, 1, 122, 3, 122, 1692, 8, 122, 1, 122, 1, 122, 1, 122,
+		3, 122, 1697, 8, 122, 1, 122, 1, 122, 1, 123, 1, 123, 3, 123, 1703, 8, 123, 1, 123, 1, 123, 1, 123, 1, 123, 5, 123,
+		1709, 8, 123, 10, 123, 12, 123, 1712, 9, 123, 1, 123, 1, 123, 1, 123, 1, 123, 5, 123, 1718, 8, 123, 10, 123, 12,
+		123, 1721, 9, 123, 5, 123, 1723, 8, 123, 10, 123, 12, 123, 1726, 9, 123, 1, 123, 1, 123, 5, 123, 1730, 8, 123, 10,
+		123, 12, 123, 1733, 9, 123, 3, 123, 1735, 8, 123, 1, 123, 1, 123, 1, 123, 3, 123, 1740, 8, 123, 1, 123, 1, 123, 1,
+		124, 1, 124, 3, 124, 1746, 8, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126,
+		1, 126, 1, 126, 1, 126, 3, 126, 1761, 8, 126, 1, 127, 1, 127, 3, 127, 1765, 8, 127, 1, 128, 1, 128, 1, 128, 1, 128,
+		5, 128, 1771, 8, 128, 10, 128, 12, 128, 1774, 9, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 3,
+		130, 1783, 8, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 3, 130, 1791, 8, 130, 1, 130, 1, 130, 3, 130,
+		1795, 8, 130, 1, 131, 1, 131, 1, 131, 5, 131, 1800, 8, 131, 10, 131, 12, 131, 1803, 9, 131, 1, 131, 1, 131, 3, 131,
+		1807, 8, 131, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 134, 3, 134, 1815, 8, 134, 1, 134, 1, 134, 1, 134, 3, 134,
+		1820, 8, 134, 1, 134, 1, 134, 1, 134, 3, 134, 1825, 8, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 3, 135,
+		1833, 8, 135, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 138, 3, 138, 1843, 8, 138, 1, 138, 1, 138,
+		1, 138, 3, 138, 1848, 8, 138, 1, 138, 1, 138, 1, 138, 1, 138, 3, 138, 1854, 8, 138, 1, 138, 1, 138, 1, 138, 1, 139,
+		1, 139, 1, 139, 5, 139, 1862, 8, 139, 10, 139, 12, 139, 1865, 9, 139, 1, 139, 3, 139, 1868, 8, 139, 1, 140, 1, 140,
+		1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 3, 141, 1883, 8, 141, 1,
+		142, 1, 142, 1, 142, 3, 142, 1888, 8, 142, 1, 142, 1, 142, 1, 142, 1, 142, 3, 142, 1894, 8, 142, 1, 143, 3, 143,
+		1897, 8, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 3, 144, 1906, 8, 144, 1, 145, 1, 145, 3, 145,
+		1910, 8, 145, 1, 146, 1, 146, 3, 146, 1914, 8, 146, 1, 147, 1, 147, 1, 147, 1, 147, 3, 147, 1920, 8, 147, 1, 148, 1,
+		148, 3, 148, 1924, 8, 148, 1, 149, 3, 149, 1927, 8, 149, 1, 149, 1, 149, 1, 149, 3, 149, 1932, 8, 149, 1, 149, 1,
+		149, 1, 149, 3, 149, 1937, 8, 149, 1, 150, 1, 150, 1, 150, 1, 150, 3, 150, 1943, 8, 150, 1, 151, 1, 151, 1, 151, 1,
+		151, 5, 151, 1949, 8, 151, 10, 151, 12, 151, 1952, 9, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152,
+		1, 152, 1, 152, 3, 152, 1963, 8, 152, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 3, 153, 1970, 8, 153, 1, 154, 1, 154,
+		3, 154, 1974, 8, 154, 1, 154, 3, 154, 1977, 8, 154, 1, 154, 1, 154, 5, 154, 1981, 8, 154, 10, 154, 12, 154, 1984, 9,
+		154, 1, 154, 1, 154, 1, 154, 3, 154, 1989, 8, 154, 1, 154, 1, 154, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 3, 156,
+		1998, 8, 156, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 5, 157, 2006, 8, 157, 10, 157, 12, 157, 2009, 9, 157,
+		1, 157, 1, 157, 1, 157, 3, 157, 2014, 8, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 159, 1,
+		159, 1, 159, 1, 159, 1, 159, 3, 159, 2028, 8, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159,
+		5, 159, 2038, 8, 159, 10, 159, 12, 159, 2041, 9, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1,
+		159, 1, 159, 3, 159, 2052, 8, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 3, 159, 2060, 8, 159, 5, 159,
+		2062, 8, 159, 10, 159, 12, 159, 2065, 9, 159, 1, 160, 1, 160, 3, 160, 2069, 8, 160, 1, 160, 1, 160, 3, 160, 2073, 8,
+		160, 1, 160, 1, 160, 3, 160, 2077, 8, 160, 1, 160, 1, 160, 1, 161, 1, 161, 3, 161, 2083, 8, 161, 1, 161, 1, 161, 1,
+		161, 1, 162, 1, 162, 3, 162, 2090, 8, 162, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 5, 163, 2097, 8, 163, 10, 163,
+		12, 163, 2100, 9, 163, 1, 163, 1, 163, 1, 163, 3, 163, 2105, 8, 163, 1, 163, 3, 163, 2108, 8, 163, 1, 163, 1, 163,
+		1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1,
+		164, 1, 164, 1, 164, 3, 164, 2129, 8, 164, 1, 165, 1, 165, 1, 165, 1, 165, 3, 165, 2135, 8, 165, 1, 165, 5, 165,
+		2138, 8, 165, 10, 165, 12, 165, 2141, 9, 165, 1, 165, 1, 165, 3, 165, 2145, 8, 165, 1, 165, 3, 165, 2148, 8, 165, 1,
+		165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166,
+		1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 3, 166, 2170, 8, 166, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 3,
+		167, 2178, 8, 167, 1, 167, 1, 167, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 5, 168, 2187, 8, 168, 10, 168, 12, 168,
+		2190, 9, 168, 1, 168, 1, 168, 1, 169, 1, 169, 3, 169, 2196, 8, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170,
+		1, 170, 1, 170, 1, 171, 1, 171, 1, 171, 5, 171, 2209, 8, 171, 10, 171, 12, 171, 2212, 9, 171, 1, 171, 1, 171, 1,
+		172, 1, 172, 1, 173, 1, 173, 1, 173, 1, 174, 3, 174, 2222, 8, 174, 1, 174, 1, 174, 1, 175, 1, 175, 1, 175, 1, 175,
+		1, 175, 5, 175, 2231, 8, 175, 10, 175, 12, 175, 2234, 9, 175, 1, 175, 1, 175, 1, 175, 3, 175, 2239, 8, 175, 1, 176,
+		1, 176, 3, 176, 2243, 8, 176, 1, 176, 1, 176, 1, 176, 3, 176, 2248, 8, 176, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177,
+		1, 177, 1, 177, 5, 177, 2257, 8, 177, 10, 177, 12, 177, 2260, 9, 177, 1, 177, 3, 177, 2263, 8, 177, 1, 177, 1, 177,
+		1, 177, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1,
+		179, 1, 179, 1, 179, 1, 179, 3, 179, 2285, 8, 179, 1, 180, 1, 180, 1, 180, 1, 181, 1, 181, 1, 182, 1, 182, 3, 182,
+		2294, 8, 182, 1, 182, 3, 182, 2297, 8, 182, 1, 183, 1, 183, 3, 183, 2301, 8, 183, 1, 183, 1, 183, 1, 183, 1, 184, 1,
+		184, 1, 184, 3, 184, 2309, 8, 184, 1, 184, 1, 184, 1, 184, 1, 184, 3, 184, 2315, 8, 184, 1, 185, 1, 185, 1, 185, 1,
+		185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 3, 185,
+		2334, 8, 185, 1, 186, 1, 186, 3, 186, 2338, 8, 186, 1, 187, 1, 187, 3, 187, 2342, 8, 187, 1, 187, 1, 187, 1, 187, 1,
+		187, 1, 187, 3, 187, 2349, 8, 187, 1, 187, 3, 187, 2352, 8, 187, 1, 187, 5, 187, 2355, 8, 187, 10, 187, 12, 187,
+		2358, 9, 187, 1, 187, 1, 187, 5, 187, 2362, 8, 187, 10, 187, 12, 187, 2365, 9, 187, 1, 187, 1, 187, 1, 187, 3, 187,
+		2370, 8, 187, 1, 187, 1, 187, 1, 188, 1, 188, 3, 188, 2376, 8, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188,
+		3, 188, 2384, 8, 188, 1, 188, 3, 188, 2387, 8, 188, 1, 188, 5, 188, 2390, 8, 188, 10, 188, 12, 188, 2393, 9, 188, 1,
+		188, 1, 188, 5, 188, 2397, 8, 188, 10, 188, 12, 188, 2400, 9, 188, 1, 188, 1, 188, 3, 188, 2404, 8, 188, 1, 188, 1,
+		188, 3, 188, 2408, 8, 188, 1, 188, 1, 188, 1, 189, 1, 189, 1, 189, 5, 189, 2415, 8, 189, 10, 189, 12, 189, 2418, 9,
+		189, 1, 189, 1, 189, 1, 189, 1, 189, 3, 189, 2424, 8, 189, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190,
+		1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 3, 190, 2443, 8, 190, 1, 191, 1,
+		191, 5, 191, 2447, 8, 191, 10, 191, 12, 191, 2450, 9, 191, 1, 191, 1, 191, 1, 191, 3, 191, 2455, 8, 191, 1, 192, 1,
+		192, 1, 192, 1, 192, 1, 192, 1, 192, 3, 192, 2463, 8, 192, 1, 193, 1, 193, 3, 193, 2467, 8, 193, 1, 194, 1, 194, 1,
+		194, 3, 194, 2472, 8, 194, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 3, 195, 2482, 8, 195, 1,
+		196, 1, 196, 1, 196, 3, 196, 2487, 8, 196, 1, 197, 1, 197, 1, 197, 1, 198, 1, 198, 1, 198, 1, 198, 5, 198, 2496, 8,
+		198, 10, 198, 12, 198, 2499, 9, 198, 1, 198, 1, 198, 1, 199, 1, 199, 1, 199, 1, 200, 1, 200, 1, 200, 5, 200, 2509,
+		8, 200, 10, 200, 12, 200, 2512, 9, 200, 1, 201, 1, 201, 1, 201, 1, 202, 1, 202, 1, 202, 5, 202, 2520, 8, 202, 10,
+		202, 12, 202, 2523, 9, 202, 1, 203, 1, 203, 5, 203, 2527, 8, 203, 10, 203, 12, 203, 2530, 9, 203, 1, 203, 1, 203, 1,
+		203, 3, 203, 2535, 8, 203, 1, 204, 1, 204, 1, 204, 1, 204, 3, 204, 2541, 8, 204, 1, 205, 1, 205, 5, 205, 2545, 8,
+		205, 10, 205, 12, 205, 2548, 9, 205, 1, 205, 1, 205, 1, 206, 1, 206, 3, 206, 2554, 8, 206, 1, 206, 1, 206, 1, 206,
+		1, 206, 3, 206, 2560, 8, 206, 1, 206, 1, 206, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 3, 207, 2569, 8, 207, 1, 208,
+		1, 208, 3, 208, 2573, 8, 208, 1, 209, 1, 209, 1, 210, 1, 210, 1, 210, 1, 210, 3, 210, 2581, 8, 210, 1, 211, 1, 211,
+		1, 211, 3, 211, 2586, 8, 211, 1, 211, 1, 211, 1, 211, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 5, 212, 2596, 8, 212,
+		10, 212, 12, 212, 2599, 9, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 213, 1, 213, 1, 213, 1, 213, 3, 213, 2609, 8,
+		213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 214, 1, 214, 1, 214, 4, 214, 2621, 8, 214, 11, 214,
+		12, 214, 2622, 1, 214, 1, 214, 1, 214, 5, 214, 2628, 8, 214, 10, 214, 12, 214, 2631, 9, 214, 1, 214, 1, 214, 3, 214,
+		2635, 8, 214, 1, 215, 1, 215, 3, 215, 2639, 8, 215, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 2645, 8, 216, 1, 216, 1,
+		216, 1, 216, 1, 216, 1, 216, 1, 217, 1, 217, 1, 217, 1, 217, 3, 217, 2656, 8, 217, 1, 217, 1, 217, 1, 217, 1, 217,
+		1, 217, 1, 217, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 5, 218, 2669, 8, 218, 10, 218, 12, 218, 2672, 9, 218, 1,
+		218, 1, 218, 1, 218, 1, 218, 1, 219, 1, 219, 1, 219, 1, 220, 1, 220, 1, 220, 5, 220, 2684, 8, 220, 10, 220, 12, 220,
+		2687, 9, 220, 1, 221, 1, 221, 3, 221, 2691, 8, 221, 1, 221, 1, 221, 3, 221, 2695, 8, 221, 1, 221, 5, 221, 2698, 8,
+		221, 10, 221, 12, 221, 2701, 9, 221, 1, 221, 1, 221, 5, 221, 2705, 8, 221, 10, 221, 12, 221, 2708, 9, 221, 1, 221,
+		1, 221, 3, 221, 2712, 8, 221, 1, 221, 3, 221, 2715, 8, 221, 1, 221, 1, 221, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222,
+		1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 3, 222, 2733, 8, 222, 1, 223, 1, 223, 3,
+		223, 2737, 8, 223, 1, 223, 1, 223, 1, 223, 3, 223, 2742, 8, 223, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 3, 224,
+		2749, 8, 224, 1, 224, 1, 224, 3, 224, 2753, 8, 224, 1, 224, 1, 224, 1, 225, 1, 225, 1, 225, 5, 225, 2760, 8, 225,
+		10, 225, 12, 225, 2763, 9, 225, 1, 225, 1, 225, 3, 225, 2767, 8, 225, 1, 226, 1, 226, 1, 226, 1, 226, 5, 226, 2773,
+		8, 226, 10, 226, 12, 226, 2776, 9, 226, 3, 226, 2778, 8, 226, 1, 226, 1, 226, 3, 226, 2782, 8, 226, 1, 226, 1, 226,
+		1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 3, 227, 2793, 8, 227, 1, 228, 1, 228, 1, 228, 1, 228, 1,
+		228, 1, 228, 1, 228, 1, 229, 3, 229, 2803, 8, 229, 1, 229, 1, 229, 3, 229, 2807, 8, 229, 1, 229, 1, 229, 3, 229,
+		2811, 8, 229, 1, 230, 1, 230, 1, 230, 1, 230, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 232, 1, 232, 1, 232, 3,
+		232, 2825, 8, 232, 1, 233, 1, 233, 1, 233, 3, 233, 2830, 8, 233, 1, 233, 1, 233, 1, 233, 1, 234, 1, 234, 1, 234, 1,
+		234, 1, 234, 1, 235, 1, 235, 1, 235, 5, 235, 2843, 8, 235, 10, 235, 12, 235, 2846, 9, 235, 1, 235, 1, 235, 5, 235,
+		2850, 8, 235, 10, 235, 12, 235, 2853, 9, 235, 1, 235, 1, 235, 3, 235, 2857, 8, 235, 1, 235, 3, 235, 2860, 8, 235, 1,
+		235, 1, 235, 1, 236, 1, 236, 1, 236, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237,
+		1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 3, 237, 2884, 8, 237, 1, 238, 1, 238, 1, 238, 1, 238, 1,
+		238, 1, 238, 3, 238, 2892, 8, 238, 1, 238, 3, 238, 2895, 8, 238, 1, 238, 1, 238, 1, 239, 1, 239, 1, 240, 1, 240, 3,
+		240, 2903, 8, 240, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 242, 3, 242, 2912, 8, 242, 1, 242, 1, 242, 3,
+		242, 2916, 8, 242, 1, 243, 1, 243, 1, 244, 1, 244, 3, 244, 2922, 8, 244, 1, 245, 1, 245, 1, 245, 1, 246, 1, 246, 1,
+		246, 1, 246, 1, 246, 1, 247, 1, 247, 3, 247, 2934, 8, 247, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 3, 248,
+		2942, 8, 248, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 5, 249, 2949, 8, 249, 10, 249, 12, 249, 2952, 9, 249, 1, 249,
+		1, 249, 1, 249, 1, 249, 1, 250, 1, 250, 1, 250, 1, 250, 1, 251, 1, 251, 1, 251, 1, 251, 5, 251, 2966, 8, 251, 10,
+		251, 12, 251, 2969, 9, 251, 1, 251, 1, 251, 1, 252, 1, 252, 3, 252, 2975, 8, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1,
+		253, 1, 253, 3, 253, 2983, 8, 253, 1, 253, 1, 253, 3, 253, 2987, 8, 253, 1, 254, 3, 254, 2990, 8, 254, 1, 254, 1,
+		254, 1, 254, 1, 254, 1, 254, 3, 254, 2997, 8, 254, 1, 254, 1, 254, 3, 254, 3001, 8, 254, 1, 254, 1, 254, 1, 255, 1,
+		255, 3, 255, 3007, 8, 255, 1, 255, 1, 255, 3, 255, 3011, 8, 255, 1, 255, 3, 255, 3014, 8, 255, 1, 255, 3, 255, 3017,
+		8, 255, 1, 255, 1, 255, 1, 256, 1, 256, 1, 256, 5, 256, 3024, 8, 256, 10, 256, 12, 256, 3027, 9, 256, 1, 256, 3,
+		256, 3030, 8, 256, 1, 257, 1, 257, 1, 257, 3, 257, 3035, 8, 257, 1, 257, 1, 257, 1, 257, 3, 257, 3040, 8, 257, 3,
+		257, 3042, 8, 257, 1, 257, 0, 2, 184, 318, 258, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34,
+		36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92,
+		94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140,
+		142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186,
+		188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232,
+		234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276, 278,
+		280, 282, 284, 286, 288, 290, 292, 294, 296, 298, 300, 302, 304, 306, 308, 310, 312, 314, 316, 318, 320, 322, 324,
+		326, 328, 330, 332, 334, 336, 338, 340, 342, 344, 346, 348, 350, 352, 354, 356, 358, 360, 362, 364, 366, 368, 370,
+		372, 374, 376, 378, 380, 382, 384, 386, 388, 390, 392, 394, 396, 398, 400, 402, 404, 406, 408, 410, 412, 414, 416,
+		418, 420, 422, 424, 426, 428, 430, 432, 434, 436, 438, 440, 442, 444, 446, 448, 450, 452, 454, 456, 458, 460, 462,
+		464, 466, 468, 470, 472, 474, 476, 478, 480, 482, 484, 486, 488, 490, 492, 494, 496, 498, 500, 502, 504, 506, 508,
+		510, 512, 514, 0, 19, 1, 0, 161, 163, 4, 0, 79, 80, 93, 93, 98, 98, 163, 163, 1, 0, 162, 163, 2, 0, 30, 30, 102,
+		102, 14, 0, 12, 12, 23, 25, 34, 34, 36, 36, 39, 39, 44, 44, 51, 51, 70, 70, 75, 75, 93, 93, 98, 98, 104, 104, 106,
+		106, 109, 110, 2, 0, 161, 161, 163, 163, 7, 0, 6, 6, 11, 11, 58, 58, 61, 62, 67, 67, 119, 120, 132, 133, 3, 0, 57,
+		57, 84, 84, 134, 135, 2, 0, 132, 133, 137, 137, 2, 0, 87, 88, 94, 97, 2, 0, 121, 131, 140, 140, 5, 0, 11, 11, 58,
+		58, 61, 61, 67, 67, 119, 120, 2, 0, 46, 46, 78, 78, 2, 0, 28, 28, 142, 142, 5, 0, 20, 20, 47, 47, 49, 49, 53, 53,
+		69, 69, 2, 0, 47, 47, 69, 69, 2, 0, 21, 21, 81, 81, 2, 0, 39, 39, 75, 75, 2, 0, 10, 10, 161, 163, 3344, 0, 516, 1,
+		0, 0, 0, 2, 519, 1, 0, 0, 0, 4, 522, 1, 0, 0, 0, 6, 532, 1, 0, 0, 0, 8, 540, 1, 0, 0, 0, 10, 542, 1, 0, 0, 0, 12,
+		553, 1, 0, 0, 0, 14, 566, 1, 0, 0, 0, 16, 568, 1, 0, 0, 0, 18, 570, 1, 0, 0, 0, 20, 575, 1, 0, 0, 0, 22, 625, 1, 0,
+		0, 0, 24, 637, 1, 0, 0, 0, 26, 639, 1, 0, 0, 0, 28, 649, 1, 0, 0, 0, 30, 651, 1, 0, 0, 0, 32, 659, 1, 0, 0, 0, 34,
+		667, 1, 0, 0, 0, 36, 679, 1, 0, 0, 0, 38, 687, 1, 0, 0, 0, 40, 691, 1, 0, 0, 0, 42, 699, 1, 0, 0, 0, 44, 705, 1, 0,
+		0, 0, 46, 707, 1, 0, 0, 0, 48, 717, 1, 0, 0, 0, 50, 725, 1, 0, 0, 0, 52, 765, 1, 0, 0, 0, 54, 775, 1, 0, 0, 0, 56,
+		777, 1, 0, 0, 0, 58, 825, 1, 0, 0, 0, 60, 834, 1, 0, 0, 0, 62, 853, 1, 0, 0, 0, 64, 870, 1, 0, 0, 0, 66, 882, 1, 0,
+		0, 0, 68, 884, 1, 0, 0, 0, 70, 892, 1, 0, 0, 0, 72, 906, 1, 0, 0, 0, 74, 926, 1, 0, 0, 0, 76, 937, 1, 0, 0, 0, 78,
+		944, 1, 0, 0, 0, 80, 946, 1, 0, 0, 0, 82, 956, 1, 0, 0, 0, 84, 964, 1, 0, 0, 0, 86, 977, 1, 0, 0, 0, 88, 985, 1, 0,
+		0, 0, 90, 1001, 1, 0, 0, 0, 92, 1011, 1, 0, 0, 0, 94, 1045, 1, 0, 0, 0, 96, 1047, 1, 0, 0, 0, 98, 1050, 1, 0, 0, 0,
+		100, 1058, 1, 0, 0, 0, 102, 1070, 1, 0, 0, 0, 104, 1078, 1, 0, 0, 0, 106, 1095, 1, 0, 0, 0, 108, 1119, 1, 0, 0, 0,
+		110, 1123, 1, 0, 0, 0, 112, 1127, 1, 0, 0, 0, 114, 1129, 1, 0, 0, 0, 116, 1139, 1, 0, 0, 0, 118, 1148, 1, 0, 0, 0,
+		120, 1150, 1, 0, 0, 0, 122, 1169, 1, 0, 0, 0, 124, 1171, 1, 0, 0, 0, 126, 1188, 1, 0, 0, 0, 128, 1191, 1, 0, 0, 0,
+		130, 1200, 1, 0, 0, 0, 132, 1205, 1, 0, 0, 0, 134, 1207, 1, 0, 0, 0, 136, 1209, 1, 0, 0, 0, 138, 1217, 1, 0, 0, 0,
+		140, 1219, 1, 0, 0, 0, 142, 1223, 1, 0, 0, 0, 144, 1231, 1, 0, 0, 0, 146, 1237, 1, 0, 0, 0, 148, 1239, 1, 0, 0, 0,
+		150, 1246, 1, 0, 0, 0, 152, 1250, 1, 0, 0, 0, 154, 1252, 1, 0, 0, 0, 156, 1257, 1, 0, 0, 0, 158, 1269, 1, 0, 0, 0,
+		160, 1271, 1, 0, 0, 0, 162, 1273, 1, 0, 0, 0, 164, 1277, 1, 0, 0, 0, 166, 1330, 1, 0, 0, 0, 168, 1332, 1, 0, 0, 0,
+		170, 1346, 1, 0, 0, 0, 172, 1348, 1, 0, 0, 0, 174, 1356, 1, 0, 0, 0, 176, 1358, 1, 0, 0, 0, 178, 1360, 1, 0, 0, 0,
+		180, 1362, 1, 0, 0, 0, 182, 1375, 1, 0, 0, 0, 184, 1393, 1, 0, 0, 0, 186, 1420, 1, 0, 0, 0, 188, 1425, 1, 0, 0, 0,
+		190, 1427, 1, 0, 0, 0, 192, 1434, 1, 0, 0, 0, 194, 1441, 1, 0, 0, 0, 196, 1451, 1, 0, 0, 0, 198, 1453, 1, 0, 0, 0,
+		200, 1462, 1, 0, 0, 0, 202, 1468, 1, 0, 0, 0, 204, 1473, 1, 0, 0, 0, 206, 1477, 1, 0, 0, 0, 208, 1482, 1, 0, 0, 0,
+		210, 1484, 1, 0, 0, 0, 212, 1511, 1, 0, 0, 0, 214, 1515, 1, 0, 0, 0, 216, 1526, 1, 0, 0, 0, 218, 1528, 1, 0, 0, 0,
+		220, 1534, 1, 0, 0, 0, 222, 1539, 1, 0, 0, 0, 224, 1562, 1, 0, 0, 0, 226, 1567, 1, 0, 0, 0, 228, 1576, 1, 0, 0, 0,
+		230, 1591, 1, 0, 0, 0, 232, 1607, 1, 0, 0, 0, 234, 1615, 1, 0, 0, 0, 236, 1617, 1, 0, 0, 0, 238, 1633, 1, 0, 0, 0,
+		240, 1648, 1, 0, 0, 0, 242, 1652, 1, 0, 0, 0, 244, 1660, 1, 0, 0, 0, 246, 1702, 1, 0, 0, 0, 248, 1745, 1, 0, 0, 0,
+		250, 1747, 1, 0, 0, 0, 252, 1760, 1, 0, 0, 0, 254, 1764, 1, 0, 0, 0, 256, 1766, 1, 0, 0, 0, 258, 1777, 1, 0, 0, 0,
+		260, 1794, 1, 0, 0, 0, 262, 1806, 1, 0, 0, 0, 264, 1808, 1, 0, 0, 0, 266, 1811, 1, 0, 0, 0, 268, 1814, 1, 0, 0, 0,
+		270, 1832, 1, 0, 0, 0, 272, 1834, 1, 0, 0, 0, 274, 1836, 1, 0, 0, 0, 276, 1842, 1, 0, 0, 0, 278, 1858, 1, 0, 0, 0,
+		280, 1869, 1, 0, 0, 0, 282, 1882, 1, 0, 0, 0, 284, 1884, 1, 0, 0, 0, 286, 1896, 1, 0, 0, 0, 288, 1902, 1, 0, 0, 0,
+		290, 1909, 1, 0, 0, 0, 292, 1913, 1, 0, 0, 0, 294, 1915, 1, 0, 0, 0, 296, 1923, 1, 0, 0, 0, 298, 1926, 1, 0, 0, 0,
+		300, 1942, 1, 0, 0, 0, 302, 1944, 1, 0, 0, 0, 304, 1962, 1, 0, 0, 0, 306, 1969, 1, 0, 0, 0, 308, 1973, 1, 0, 0, 0,
+		310, 1992, 1, 0, 0, 0, 312, 1997, 1, 0, 0, 0, 314, 1999, 1, 0, 0, 0, 316, 2017, 1, 0, 0, 0, 318, 2027, 1, 0, 0, 0,
+		320, 2068, 1, 0, 0, 0, 322, 2082, 1, 0, 0, 0, 324, 2089, 1, 0, 0, 0, 326, 2091, 1, 0, 0, 0, 328, 2128, 1, 0, 0, 0,
+		330, 2130, 1, 0, 0, 0, 332, 2169, 1, 0, 0, 0, 334, 2171, 1, 0, 0, 0, 336, 2181, 1, 0, 0, 0, 338, 2195, 1, 0, 0, 0,
+		340, 2201, 1, 0, 0, 0, 342, 2210, 1, 0, 0, 0, 344, 2215, 1, 0, 0, 0, 346, 2217, 1, 0, 0, 0, 348, 2221, 1, 0, 0, 0,
+		350, 2225, 1, 0, 0, 0, 352, 2242, 1, 0, 0, 0, 354, 2251, 1, 0, 0, 0, 356, 2267, 1, 0, 0, 0, 358, 2284, 1, 0, 0, 0,
+		360, 2286, 1, 0, 0, 0, 362, 2289, 1, 0, 0, 0, 364, 2291, 1, 0, 0, 0, 366, 2300, 1, 0, 0, 0, 368, 2305, 1, 0, 0, 0,
+		370, 2333, 1, 0, 0, 0, 372, 2337, 1, 0, 0, 0, 374, 2341, 1, 0, 0, 0, 376, 2375, 1, 0, 0, 0, 378, 2411, 1, 0, 0, 0,
+		380, 2442, 1, 0, 0, 0, 382, 2444, 1, 0, 0, 0, 384, 2462, 1, 0, 0, 0, 386, 2466, 1, 0, 0, 0, 388, 2468, 1, 0, 0, 0,
+		390, 2473, 1, 0, 0, 0, 392, 2486, 1, 0, 0, 0, 394, 2488, 1, 0, 0, 0, 396, 2491, 1, 0, 0, 0, 398, 2502, 1, 0, 0, 0,
+		400, 2505, 1, 0, 0, 0, 402, 2513, 1, 0, 0, 0, 404, 2516, 1, 0, 0, 0, 406, 2524, 1, 0, 0, 0, 408, 2536, 1, 0, 0, 0,
+		410, 2546, 1, 0, 0, 0, 412, 2553, 1, 0, 0, 0, 414, 2568, 1, 0, 0, 0, 416, 2572, 1, 0, 0, 0, 418, 2574, 1, 0, 0, 0,
+		420, 2580, 1, 0, 0, 0, 422, 2582, 1, 0, 0, 0, 424, 2597, 1, 0, 0, 0, 426, 2604, 1, 0, 0, 0, 428, 2634, 1, 0, 0, 0,
+		430, 2638, 1, 0, 0, 0, 432, 2640, 1, 0, 0, 0, 434, 2651, 1, 0, 0, 0, 436, 2670, 1, 0, 0, 0, 438, 2677, 1, 0, 0, 0,
+		440, 2680, 1, 0, 0, 0, 442, 2690, 1, 0, 0, 0, 444, 2732, 1, 0, 0, 0, 446, 2736, 1, 0, 0, 0, 448, 2743, 1, 0, 0, 0,
+		450, 2766, 1, 0, 0, 0, 452, 2768, 1, 0, 0, 0, 454, 2785, 1, 0, 0, 0, 456, 2794, 1, 0, 0, 0, 458, 2802, 1, 0, 0, 0,
+		460, 2812, 1, 0, 0, 0, 462, 2816, 1, 0, 0, 0, 464, 2824, 1, 0, 0, 0, 466, 2826, 1, 0, 0, 0, 468, 2834, 1, 0, 0, 0,
+		470, 2839, 1, 0, 0, 0, 472, 2863, 1, 0, 0, 0, 474, 2883, 1, 0, 0, 0, 476, 2885, 1, 0, 0, 0, 478, 2898, 1, 0, 0, 0,
+		480, 2902, 1, 0, 0, 0, 482, 2904, 1, 0, 0, 0, 484, 2911, 1, 0, 0, 0, 486, 2917, 1, 0, 0, 0, 488, 2921, 1, 0, 0, 0,
+		490, 2923, 1, 0, 0, 0, 492, 2926, 1, 0, 0, 0, 494, 2933, 1, 0, 0, 0, 496, 2941, 1, 0, 0, 0, 498, 2943, 1, 0, 0, 0,
+		500, 2957, 1, 0, 0, 0, 502, 2961, 1, 0, 0, 0, 504, 2974, 1, 0, 0, 0, 506, 2982, 1, 0, 0, 0, 508, 2989, 1, 0, 0, 0,
+		510, 3006, 1, 0, 0, 0, 512, 3029, 1, 0, 0, 0, 514, 3041, 1, 0, 0, 0, 516, 517, 5, 153, 0, 0, 517, 518, 3, 342, 171,
+		0, 518, 1, 1, 0, 0, 0, 519, 520, 5, 7, 0, 0, 520, 521, 3, 248, 124, 0, 521, 3, 1, 0, 0, 0, 522, 523, 5, 7, 0, 0,
+		523, 524, 3, 484, 242, 0, 524, 5, 1, 0, 0, 0, 525, 527, 5, 48, 0, 0, 526, 525, 1, 0, 0, 0, 526, 527, 1, 0, 0, 0,
+		527, 528, 1, 0, 0, 0, 528, 533, 3, 184, 92, 0, 529, 533, 3, 318, 159, 0, 530, 533, 3, 484, 242, 0, 531, 533, 5, 66,
+		0, 0, 532, 526, 1, 0, 0, 0, 532, 529, 1, 0, 0, 0, 532, 530, 1, 0, 0, 0, 532, 531, 1, 0, 0, 0, 533, 7, 1, 0, 0, 0,
+		534, 541, 3, 6, 3, 0, 535, 536, 3, 318, 159, 0, 536, 537, 5, 143, 0, 0, 537, 538, 3, 6, 3, 0, 538, 539, 5, 144, 0,
+		0, 539, 541, 1, 0, 0, 0, 540, 534, 1, 0, 0, 0, 540, 535, 1, 0, 0, 0, 541, 9, 1, 0, 0, 0, 542, 543, 5, 143, 0, 0,
+		543, 548, 3, 144, 72, 0, 544, 545, 5, 151, 0, 0, 545, 547, 3, 144, 72, 0, 546, 544, 1, 0, 0, 0, 547, 550, 1, 0, 0,
+		0, 548, 546, 1, 0, 0, 0, 548, 549, 1, 0, 0, 0, 549, 551, 1, 0, 0, 0, 550, 548, 1, 0, 0, 0, 551, 552, 5, 144, 0, 0,
+		552, 11, 1, 0, 0, 0, 553, 554, 5, 9, 0, 0, 554, 557, 3, 14, 7, 0, 555, 556, 5, 149, 0, 0, 556, 558, 3, 16, 8, 0,
+		557, 555, 1, 0, 0, 0, 557, 558, 1, 0, 0, 0, 558, 559, 1, 0, 0, 0, 559, 560, 5, 50, 0, 0, 560, 562, 3, 318, 159, 0,
+		561, 563, 3, 452, 226, 0, 562, 561, 1, 0, 0, 0, 562, 563, 1, 0, 0, 0, 563, 564, 1, 0, 0, 0, 564, 565, 5, 150, 0, 0,
+		565, 13, 1, 0, 0, 0, 566, 567, 7, 0, 0, 0, 567, 15, 1, 0, 0, 0, 568, 569, 3, 484, 242, 0, 569, 17, 1, 0, 0, 0, 570,
+		573, 5, 59, 0, 0, 571, 574, 3, 484, 242, 0, 572, 574, 3, 390, 195, 0, 573, 571, 1, 0, 0, 0, 573, 572, 1, 0, 0, 0,
+		574, 19, 1, 0, 0, 0, 575, 576, 5, 12, 0, 0, 576, 577, 5, 163, 0, 0, 577, 578, 5, 64, 0, 0, 578, 579, 5, 163, 0, 0,
+		579, 583, 5, 50, 0, 0, 580, 582, 3, 52, 26, 0, 581, 580, 1, 0, 0, 0, 582, 585, 1, 0, 0, 0, 583, 581, 1, 0, 0, 0,
+		583, 584, 1, 0, 0, 0, 584, 586, 1, 0, 0, 0, 585, 583, 1, 0, 0, 0, 586, 590, 5, 17, 0, 0, 587, 589, 3, 94, 47, 0,
+		588, 587, 1, 0, 0, 0, 589, 592, 1, 0, 0, 0, 590, 588, 1, 0, 0, 0, 590, 591, 1, 0, 0, 0, 591, 593, 1, 0, 0, 0, 592,
+		590, 1, 0, 0, 0, 593, 595, 5, 33, 0, 0, 594, 596, 5, 12, 0, 0, 595, 594, 1, 0, 0, 0, 595, 596, 1, 0, 0, 0, 596, 598,
+		1, 0, 0, 0, 597, 599, 5, 163, 0, 0, 598, 597, 1, 0, 0, 0, 598, 599, 1, 0, 0, 0, 599, 600, 1, 0, 0, 0, 600, 601, 5,
+		150, 0, 0, 601, 21, 1, 0, 0, 0, 602, 626, 3, 56, 28, 0, 603, 626, 3, 374, 187, 0, 604, 626, 3, 376, 188, 0, 605,
+		606, 5, 163, 0, 0, 606, 608, 5, 149, 0, 0, 607, 605, 1, 0, 0, 0, 607, 608, 1, 0, 0, 0, 608, 609, 1, 0, 0, 0, 609,
+		626, 3, 86, 43, 0, 610, 611, 5, 163, 0, 0, 611, 613, 5, 149, 0, 0, 612, 610, 1, 0, 0, 0, 612, 613, 1, 0, 0, 0, 613,
+		614, 1, 0, 0, 0, 614, 626, 3, 82, 41, 0, 615, 616, 5, 163, 0, 0, 616, 618, 5, 149, 0, 0, 617, 615, 1, 0, 0, 0, 617,
+		618, 1, 0, 0, 0, 618, 620, 1, 0, 0, 0, 619, 621, 5, 73, 0, 0, 620, 619, 1, 0, 0, 0, 620, 621, 1, 0, 0, 0, 621, 622,
+		1, 0, 0, 0, 622, 626, 3, 90, 45, 0, 623, 626, 3, 74, 37, 0, 624, 626, 3, 226, 113, 0, 625, 602, 1, 0, 0, 0, 625,
+		603, 1, 0, 0, 0, 625, 604, 1, 0, 0, 0, 625, 607, 1, 0, 0, 0, 625, 612, 1, 0, 0, 0, 625, 617, 1, 0, 0, 0, 625, 623,
+		1, 0, 0, 0, 625, 624, 1, 0, 0, 0, 626, 23, 1, 0, 0, 0, 627, 629, 3, 256, 128, 0, 628, 630, 3, 146, 73, 0, 629, 628,
+		1, 0, 0, 0, 629, 630, 1, 0, 0, 0, 630, 638, 1, 0, 0, 0, 631, 632, 5, 143, 0, 0, 632, 633, 5, 66, 0, 0, 633, 635, 5,
+		144, 0, 0, 634, 636, 3, 146, 73, 0, 635, 634, 1, 0, 0, 0, 635, 636, 1, 0, 0, 0, 636, 638, 1, 0, 0, 0, 637, 627, 1,
+		0, 0, 0, 637, 631, 1, 0, 0, 0, 638, 25, 1, 0, 0, 0, 639, 640, 5, 13, 0, 0, 640, 641, 5, 143, 0, 0, 641, 642, 3, 30,
+		15, 0, 642, 643, 5, 144, 0, 0, 643, 644, 5, 64, 0, 0, 644, 645, 3, 248, 124, 0, 645, 27, 1, 0, 0, 0, 646, 650, 3,
+		258, 129, 0, 647, 650, 3, 256, 128, 0, 648, 650, 3, 500, 250, 0, 649, 646, 1, 0, 0, 0, 649, 647, 1, 0, 0, 0, 649,
+		648, 1, 0, 0, 0, 650, 29, 1, 0, 0, 0, 651, 656, 3, 28, 14, 0, 652, 653, 5, 151, 0, 0, 653, 655, 3, 28, 14, 0, 654,
+		652, 1, 0, 0, 0, 655, 658, 1, 0, 0, 0, 656, 654, 1, 0, 0, 0, 656, 657, 1, 0, 0, 0, 657, 31, 1, 0, 0, 0, 658, 656, 1,
+		0, 0, 0, 659, 660, 5, 110, 0, 0, 660, 661, 5, 143, 0, 0, 661, 662, 3, 318, 159, 0, 662, 665, 5, 144, 0, 0, 663, 664,
+		5, 64, 0, 0, 664, 666, 3, 484, 242, 0, 665, 663, 1, 0, 0, 0, 665, 666, 1, 0, 0, 0, 666, 33, 1, 0, 0, 0, 667, 668, 5,
+		14, 0, 0, 668, 671, 3, 184, 92, 0, 669, 670, 5, 85, 0, 0, 670, 672, 3, 184, 92, 0, 671, 669, 1, 0, 0, 0, 671, 672,
+		1, 0, 0, 0, 672, 675, 1, 0, 0, 0, 673, 674, 5, 91, 0, 0, 674, 676, 3, 184, 92, 0, 675, 673, 1, 0, 0, 0, 675, 676, 1,
+		0, 0, 0, 676, 35, 1, 0, 0, 0, 677, 678, 5, 163, 0, 0, 678, 680, 5, 149, 0, 0, 679, 677, 1, 0, 0, 0, 679, 680, 1, 0,
+		0, 0, 680, 681, 1, 0, 0, 0, 681, 682, 3, 34, 17, 0, 682, 683, 5, 150, 0, 0, 683, 37, 1, 0, 0, 0, 684, 685, 3, 216,
+		108, 0, 685, 686, 5, 139, 0, 0, 686, 688, 1, 0, 0, 0, 687, 684, 1, 0, 0, 0, 687, 688, 1, 0, 0, 0, 688, 689, 1, 0, 0,
+		0, 689, 690, 3, 8, 4, 0, 690, 39, 1, 0, 0, 0, 691, 696, 3, 38, 19, 0, 692, 693, 5, 151, 0, 0, 693, 695, 3, 38, 19,
+		0, 694, 692, 1, 0, 0, 0, 695, 698, 1, 0, 0, 0, 696, 694, 1, 0, 0, 0, 696, 697, 1, 0, 0, 0, 697, 41, 1, 0, 0, 0, 698,
+		696, 1, 0, 0, 0, 699, 700, 5, 15, 0, 0, 700, 701, 5, 163, 0, 0, 701, 702, 5, 149, 0, 0, 702, 703, 3, 318, 159, 0,
+		703, 704, 5, 150, 0, 0, 704, 43, 1, 0, 0, 0, 705, 706, 7, 1, 0, 0, 706, 45, 1, 0, 0, 0, 707, 708, 5, 15, 0, 0, 708,
+		709, 5, 163, 0, 0, 709, 710, 5, 64, 0, 0, 710, 711, 3, 172, 86, 0, 711, 712, 5, 50, 0, 0, 712, 713, 3, 98, 49, 0,
+		713, 714, 5, 150, 0, 0, 714, 47, 1, 0, 0, 0, 715, 716, 5, 108, 0, 0, 716, 718, 3, 158, 79, 0, 717, 715, 1, 0, 0, 0,
+		717, 718, 1, 0, 0, 0, 718, 720, 1, 0, 0, 0, 719, 721, 3, 232, 116, 0, 720, 719, 1, 0, 0, 0, 720, 721, 1, 0, 0, 0,
+		721, 723, 1, 0, 0, 0, 722, 724, 3, 356, 178, 0, 723, 722, 1, 0, 0, 0, 723, 724, 1, 0, 0, 0, 724, 49, 1, 0, 0, 0,
+		725, 726, 5, 37, 0, 0, 726, 730, 3, 54, 27, 0, 727, 729, 3, 502, 251, 0, 728, 727, 1, 0, 0, 0, 729, 732, 1, 0, 0, 0,
+		730, 728, 1, 0, 0, 0, 730, 731, 1, 0, 0, 0, 731, 736, 1, 0, 0, 0, 732, 730, 1, 0, 0, 0, 733, 735, 3, 110, 55, 0,
+		734, 733, 1, 0, 0, 0, 735, 738, 1, 0, 0, 0, 736, 734, 1, 0, 0, 0, 736, 737, 1, 0, 0, 0, 737, 739, 1, 0, 0, 0, 738,
+		736, 1, 0, 0, 0, 739, 740, 5, 33, 0, 0, 740, 741, 5, 37, 0, 0, 741, 742, 5, 150, 0, 0, 742, 51, 1, 0, 0, 0, 743,
+		766, 3, 472, 236, 0, 744, 766, 3, 470, 235, 0, 745, 766, 3, 476, 238, 0, 746, 766, 3, 330, 165, 0, 747, 766, 3, 326,
+		163, 0, 748, 766, 3, 334, 167, 0, 749, 766, 3, 494, 247, 0, 750, 766, 3, 482, 241, 0, 751, 766, 3, 314, 157, 0, 752,
+		766, 3, 114, 57, 0, 753, 766, 3, 448, 224, 0, 754, 766, 3, 508, 254, 0, 755, 766, 3, 198, 99, 0, 756, 766, 3, 12, 6,
+		0, 757, 766, 3, 72, 36, 0, 758, 766, 3, 42, 21, 0, 759, 766, 3, 46, 23, 0, 760, 766, 3, 112, 56, 0, 761, 766, 3,
+		136, 68, 0, 762, 766, 3, 502, 251, 0, 763, 766, 3, 238, 119, 0, 764, 766, 3, 236, 118, 0, 765, 743, 1, 0, 0, 0, 765,
+		744, 1, 0, 0, 0, 765, 745, 1, 0, 0, 0, 765, 746, 1, 0, 0, 0, 765, 747, 1, 0, 0, 0, 765, 748, 1, 0, 0, 0, 765, 749,
+		1, 0, 0, 0, 765, 750, 1, 0, 0, 0, 765, 751, 1, 0, 0, 0, 765, 752, 1, 0, 0, 0, 765, 753, 1, 0, 0, 0, 765, 754, 1, 0,
+		0, 0, 765, 755, 1, 0, 0, 0, 765, 756, 1, 0, 0, 0, 765, 757, 1, 0, 0, 0, 765, 758, 1, 0, 0, 0, 765, 759, 1, 0, 0, 0,
+		765, 760, 1, 0, 0, 0, 765, 761, 1, 0, 0, 0, 765, 762, 1, 0, 0, 0, 765, 763, 1, 0, 0, 0, 765, 764, 1, 0, 0, 0, 766,
+		53, 1, 0, 0, 0, 767, 776, 3, 318, 159, 0, 768, 773, 5, 163, 0, 0, 769, 770, 5, 143, 0, 0, 770, 771, 3, 224, 112, 0,
+		771, 772, 5, 144, 0, 0, 772, 774, 1, 0, 0, 0, 773, 769, 1, 0, 0, 0, 773, 774, 1, 0, 0, 0, 774, 776, 1, 0, 0, 0, 775,
+		767, 1, 0, 0, 0, 775, 768, 1, 0, 0, 0, 776, 55, 1, 0, 0, 0, 777, 778, 5, 163, 0, 0, 778, 779, 5, 149, 0, 0, 779,
+		784, 5, 18, 0, 0, 780, 781, 5, 143, 0, 0, 781, 782, 3, 184, 92, 0, 782, 783, 5, 144, 0, 0, 783, 785, 1, 0, 0, 0,
+		784, 780, 1, 0, 0, 0, 784, 785, 1, 0, 0, 0, 785, 787, 1, 0, 0, 0, 786, 788, 5, 50, 0, 0, 787, 786, 1, 0, 0, 0, 787,
+		788, 1, 0, 0, 0, 788, 795, 1, 0, 0, 0, 789, 793, 3, 230, 115, 0, 790, 791, 3, 232, 116, 0, 791, 792, 5, 150, 0, 0,
+		792, 794, 1, 0, 0, 0, 793, 790, 1, 0, 0, 0, 793, 794, 1, 0, 0, 0, 794, 796, 1, 0, 0, 0, 795, 789, 1, 0, 0, 0, 795,
+		796, 1, 0, 0, 0, 796, 803, 1, 0, 0, 0, 797, 801, 3, 354, 177, 0, 798, 799, 3, 356, 178, 0, 799, 800, 5, 150, 0, 0,
+		800, 802, 1, 0, 0, 0, 801, 798, 1, 0, 0, 0, 801, 802, 1, 0, 0, 0, 802, 804, 1, 0, 0, 0, 803, 797, 1, 0, 0, 0, 803,
+		804, 1, 0, 0, 0, 804, 808, 1, 0, 0, 0, 805, 807, 3, 52, 26, 0, 806, 805, 1, 0, 0, 0, 807, 810, 1, 0, 0, 0, 808, 806,
+		1, 0, 0, 0, 808, 809, 1, 0, 0, 0, 809, 811, 1, 0, 0, 0, 810, 808, 1, 0, 0, 0, 811, 815, 5, 17, 0, 0, 812, 814, 3,
+		94, 47, 0, 813, 812, 1, 0, 0, 0, 814, 817, 1, 0, 0, 0, 815, 813, 1, 0, 0, 0, 815, 816, 1, 0, 0, 0, 816, 818, 1, 0,
+		0, 0, 817, 815, 1, 0, 0, 0, 818, 819, 5, 33, 0, 0, 819, 821, 5, 18, 0, 0, 820, 822, 5, 163, 0, 0, 821, 820, 1, 0, 0,
+		0, 821, 822, 1, 0, 0, 0, 822, 823, 1, 0, 0, 0, 823, 824, 5, 150, 0, 0, 824, 57, 1, 0, 0, 0, 825, 828, 5, 117, 0, 0,
+		826, 827, 5, 163, 0, 0, 827, 829, 5, 149, 0, 0, 828, 826, 1, 0, 0, 0, 828, 829, 1, 0, 0, 0, 829, 830, 1, 0, 0, 0,
+		830, 831, 3, 68, 34, 0, 831, 832, 5, 139, 0, 0, 832, 833, 3, 228, 114, 0, 833, 59, 1, 0, 0, 0, 834, 835, 5, 163, 0,
+		0, 835, 836, 5, 149, 0, 0, 836, 837, 5, 22, 0, 0, 837, 838, 3, 184, 92, 0, 838, 840, 5, 41, 0, 0, 839, 841, 3, 58,
+		29, 0, 840, 839, 1, 0, 0, 0, 841, 842, 1, 0, 0, 0, 842, 840, 1, 0, 0, 0, 842, 843, 1, 0, 0, 0, 843, 844, 1, 0, 0, 0,
+		844, 845, 5, 33, 0, 0, 845, 847, 5, 41, 0, 0, 846, 848, 5, 163, 0, 0, 847, 846, 1, 0, 0, 0, 847, 848, 1, 0, 0, 0,
+		848, 849, 1, 0, 0, 0, 849, 850, 5, 150, 0, 0, 850, 61, 1, 0, 0, 0, 851, 852, 5, 163, 0, 0, 852, 854, 5, 149, 0, 0,
+		853, 851, 1, 0, 0, 0, 853, 854, 1, 0, 0, 0, 854, 855, 1, 0, 0, 0, 855, 856, 5, 22, 0, 0, 856, 857, 3, 184, 92, 0,
+		857, 859, 5, 50, 0, 0, 858, 860, 3, 64, 32, 0, 859, 858, 1, 0, 0, 0, 860, 861, 1, 0, 0, 0, 861, 859, 1, 0, 0, 0,
+		861, 862, 1, 0, 0, 0, 862, 863, 1, 0, 0, 0, 863, 864, 5, 33, 0, 0, 864, 866, 5, 22, 0, 0, 865, 867, 5, 163, 0, 0,
+		866, 865, 1, 0, 0, 0, 866, 867, 1, 0, 0, 0, 867, 868, 1, 0, 0, 0, 868, 869, 5, 150, 0, 0, 869, 63, 1, 0, 0, 0, 870,
+		871, 5, 117, 0, 0, 871, 872, 3, 68, 34, 0, 872, 876, 5, 139, 0, 0, 873, 875, 3, 444, 222, 0, 874, 873, 1, 0, 0, 0,
+		875, 878, 1, 0, 0, 0, 876, 874, 1, 0, 0, 0, 876, 877, 1, 0, 0, 0, 877, 65, 1, 0, 0, 0, 878, 876, 1, 0, 0, 0, 879,
+		883, 3, 184, 92, 0, 880, 883, 3, 138, 69, 0, 881, 883, 5, 68, 0, 0, 882, 879, 1, 0, 0, 0, 882, 880, 1, 0, 0, 0, 882,
+		881, 1, 0, 0, 0, 883, 67, 1, 0, 0, 0, 884, 889, 3, 66, 33, 0, 885, 886, 5, 152, 0, 0, 886, 888, 3, 66, 33, 0, 887,
+		885, 1, 0, 0, 0, 888, 891, 1, 0, 0, 0, 889, 887, 1, 0, 0, 0, 889, 890, 1, 0, 0, 0, 890, 69, 1, 0, 0, 0, 891, 889, 1,
+		0, 0, 0, 892, 893, 5, 37, 0, 0, 893, 897, 3, 76, 38, 0, 894, 895, 3, 48, 24, 0, 895, 896, 5, 150, 0, 0, 896, 898, 1,
+		0, 0, 0, 897, 894, 1, 0, 0, 0, 897, 898, 1, 0, 0, 0, 898, 900, 1, 0, 0, 0, 899, 901, 3, 50, 25, 0, 900, 899, 1, 0,
+		0, 0, 900, 901, 1, 0, 0, 0, 901, 902, 1, 0, 0, 0, 902, 903, 5, 33, 0, 0, 903, 904, 5, 37, 0, 0, 904, 905, 5, 150, 0,
+		0, 905, 71, 1, 0, 0, 0, 906, 907, 5, 23, 0, 0, 907, 909, 5, 163, 0, 0, 908, 910, 5, 50, 0, 0, 909, 908, 1, 0, 0, 0,
+		909, 910, 1, 0, 0, 0, 910, 912, 1, 0, 0, 0, 911, 913, 3, 230, 115, 0, 912, 911, 1, 0, 0, 0, 912, 913, 1, 0, 0, 0,
+		913, 915, 1, 0, 0, 0, 914, 916, 3, 354, 177, 0, 915, 914, 1, 0, 0, 0, 915, 916, 1, 0, 0, 0, 916, 917, 1, 0, 0, 0,
+		917, 919, 5, 33, 0, 0, 918, 920, 5, 23, 0, 0, 919, 918, 1, 0, 0, 0, 919, 920, 1, 0, 0, 0, 920, 922, 1, 0, 0, 0, 921,
+		923, 5, 163, 0, 0, 922, 921, 1, 0, 0, 0, 922, 923, 1, 0, 0, 0, 923, 924, 1, 0, 0, 0, 924, 925, 5, 150, 0, 0, 925,
+		73, 1, 0, 0, 0, 926, 927, 5, 163, 0, 0, 927, 928, 5, 149, 0, 0, 928, 930, 3, 260, 130, 0, 929, 931, 3, 232, 116, 0,
+		930, 929, 1, 0, 0, 0, 930, 931, 1, 0, 0, 0, 931, 933, 1, 0, 0, 0, 932, 934, 3, 356, 178, 0, 933, 932, 1, 0, 0, 0,
+		933, 934, 1, 0, 0, 0, 934, 935, 1, 0, 0, 0, 935, 936, 5, 150, 0, 0, 936, 75, 1, 0, 0, 0, 937, 938, 3, 262, 131, 0,
+		938, 939, 5, 149, 0, 0, 939, 940, 3, 318, 159, 0, 940, 77, 1, 0, 0, 0, 941, 945, 3, 116, 58, 0, 942, 945, 3, 498,
+		249, 0, 943, 945, 3, 406, 203, 0, 944, 941, 1, 0, 0, 0, 944, 942, 1, 0, 0, 0, 944, 943, 1, 0, 0, 0, 945, 79, 1, 0,
+		0, 0, 946, 947, 5, 37, 0, 0, 947, 948, 3, 76, 38, 0, 948, 949, 3, 48, 24, 0, 949, 950, 5, 150, 0, 0, 950, 951, 5,
+		33, 0, 0, 951, 952, 5, 37, 0, 0, 952, 953, 5, 150, 0, 0, 953, 81, 1, 0, 0, 0, 954, 955, 5, 163, 0, 0, 955, 957, 5,
+		149, 0, 0, 956, 954, 1, 0, 0, 0, 956, 957, 1, 0, 0, 0, 957, 959, 1, 0, 0, 0, 958, 960, 5, 73, 0, 0, 959, 958, 1, 0,
+		0, 0, 959, 960, 1, 0, 0, 0, 960, 961, 1, 0, 0, 0, 961, 962, 3, 34, 17, 0, 962, 963, 5, 150, 0, 0, 963, 83, 1, 0, 0,
+		0, 964, 965, 3, 488, 244, 0, 965, 967, 5, 140, 0, 0, 966, 968, 5, 43, 0, 0, 967, 966, 1, 0, 0, 0, 967, 968, 1, 0, 0,
+		0, 968, 970, 1, 0, 0, 0, 969, 971, 3, 126, 63, 0, 970, 969, 1, 0, 0, 0, 970, 971, 1, 0, 0, 0, 971, 972, 1, 0, 0, 0,
+		972, 973, 3, 104, 52, 0, 973, 974, 5, 150, 0, 0, 974, 85, 1, 0, 0, 0, 975, 976, 5, 163, 0, 0, 976, 978, 5, 149, 0,
+		0, 977, 975, 1, 0, 0, 0, 977, 978, 1, 0, 0, 0, 978, 980, 1, 0, 0, 0, 979, 981, 5, 73, 0, 0, 980, 979, 1, 0, 0, 0,
+		980, 981, 1, 0, 0, 0, 981, 982, 1, 0, 0, 0, 982, 983, 3, 364, 182, 0, 983, 984, 5, 150, 0, 0, 984, 87, 1, 0, 0, 0,
+		985, 986, 5, 116, 0, 0, 986, 987, 3, 184, 92, 0, 987, 988, 5, 90, 0, 0, 988, 989, 3, 488, 244, 0, 989, 991, 5, 140,
+		0, 0, 990, 992, 5, 43, 0, 0, 991, 990, 1, 0, 0, 0, 991, 992, 1, 0, 0, 0, 992, 994, 1, 0, 0, 0, 993, 995, 3, 126, 63,
+		0, 994, 993, 1, 0, 0, 0, 994, 995, 1, 0, 0, 0, 995, 996, 1, 0, 0, 0, 996, 997, 3, 436, 218, 0, 997, 998, 5, 150, 0,
+		0, 998, 89, 1, 0, 0, 0, 999, 1000, 5, 163, 0, 0, 1000, 1002, 5, 149, 0, 0, 1001, 999, 1, 0, 0, 0, 1001, 1002, 1, 0,
+		0, 0, 1002, 1004, 1, 0, 0, 0, 1003, 1005, 5, 73, 0, 0, 1004, 1003, 1, 0, 0, 0, 1004, 1005, 1, 0, 0, 0, 1005, 1009,
+		1, 0, 0, 0, 1006, 1010, 3, 92, 46, 0, 1007, 1010, 3, 84, 42, 0, 1008, 1010, 3, 88, 44, 0, 1009, 1006, 1, 0, 0, 0,
+		1009, 1007, 1, 0, 0, 0, 1009, 1008, 1, 0, 0, 0, 1010, 91, 1, 0, 0, 0, 1011, 1012, 3, 488, 244, 0, 1012, 1014, 5,
+		140, 0, 0, 1013, 1015, 5, 43, 0, 0, 1014, 1013, 1, 0, 0, 0, 1014, 1015, 1, 0, 0, 0, 1015, 1017, 1, 0, 0, 0, 1016,
+		1018, 3, 126, 63, 0, 1017, 1016, 1, 0, 0, 0, 1017, 1018, 1, 0, 0, 0, 1018, 1019, 1, 0, 0, 0, 1019, 1020, 3, 512,
+		256, 0, 1020, 1021, 5, 150, 0, 0, 1021, 93, 1, 0, 0, 0, 1022, 1046, 3, 56, 28, 0, 1023, 1046, 3, 374, 187, 0, 1024,
+		1046, 3, 376, 188, 0, 1025, 1026, 5, 163, 0, 0, 1026, 1028, 5, 149, 0, 0, 1027, 1025, 1, 0, 0, 0, 1027, 1028, 1, 0,
+		0, 0, 1028, 1029, 1, 0, 0, 0, 1029, 1046, 3, 86, 43, 0, 1030, 1031, 5, 163, 0, 0, 1031, 1033, 5, 149, 0, 0, 1032,
+		1030, 1, 0, 0, 0, 1032, 1033, 1, 0, 0, 0, 1033, 1034, 1, 0, 0, 0, 1034, 1046, 3, 82, 41, 0, 1035, 1036, 5, 163, 0,
+		0, 1036, 1038, 5, 149, 0, 0, 1037, 1035, 1, 0, 0, 0, 1037, 1038, 1, 0, 0, 0, 1038, 1040, 1, 0, 0, 0, 1039, 1041, 5,
+		73, 0, 0, 1040, 1039, 1, 0, 0, 0, 1040, 1041, 1, 0, 0, 0, 1041, 1042, 1, 0, 0, 0, 1042, 1046, 3, 90, 45, 0, 1043,
+		1046, 3, 74, 37, 0, 1044, 1046, 3, 226, 113, 0, 1045, 1022, 1, 0, 0, 0, 1045, 1023, 1, 0, 0, 0, 1045, 1024, 1, 0, 0,
+		0, 1045, 1027, 1, 0, 0, 0, 1045, 1032, 1, 0, 0, 0, 1045, 1037, 1, 0, 0, 0, 1045, 1043, 1, 0, 0, 0, 1045, 1044, 1, 0,
+		0, 0, 1046, 95, 1, 0, 0, 0, 1047, 1048, 5, 107, 0, 0, 1048, 1049, 3, 184, 92, 0, 1049, 97, 1, 0, 0, 0, 1050, 1056,
+		3, 184, 92, 0, 1051, 1052, 5, 117, 0, 0, 1052, 1053, 3, 184, 92, 0, 1053, 1054, 5, 31, 0, 0, 1054, 1055, 3, 184, 92,
+		0, 1055, 1057, 1, 0, 0, 0, 1056, 1051, 1, 0, 0, 0, 1056, 1057, 1, 0, 0, 0, 1057, 99, 1, 0, 0, 0, 1058, 1064, 3, 186,
+		93, 0, 1059, 1060, 5, 117, 0, 0, 1060, 1061, 3, 184, 92, 0, 1061, 1062, 5, 31, 0, 0, 1062, 1063, 3, 186, 93, 0,
+		1063, 1065, 1, 0, 0, 0, 1064, 1059, 1, 0, 0, 0, 1064, 1065, 1, 0, 0, 0, 1065, 1068, 1, 0, 0, 0, 1066, 1067, 5, 117,
+		0, 0, 1067, 1069, 3, 184, 92, 0, 1068, 1066, 1, 0, 0, 0, 1068, 1069, 1, 0, 0, 0, 1069, 101, 1, 0, 0, 0, 1070, 1071,
+		3, 488, 244, 0, 1071, 1073, 5, 140, 0, 0, 1072, 1074, 3, 126, 63, 0, 1073, 1072, 1, 0, 0, 0, 1073, 1074, 1, 0, 0, 0,
+		1074, 1075, 1, 0, 0, 0, 1075, 1076, 3, 104, 52, 0, 1076, 1077, 5, 150, 0, 0, 1077, 103, 1, 0, 0, 0, 1078, 1079, 3,
+		512, 256, 0, 1079, 1080, 5, 117, 0, 0, 1080, 1088, 3, 184, 92, 0, 1081, 1082, 5, 31, 0, 0, 1082, 1083, 3, 512, 256,
+		0, 1083, 1084, 5, 117, 0, 0, 1084, 1085, 3, 184, 92, 0, 1085, 1087, 1, 0, 0, 0, 1086, 1081, 1, 0, 0, 0, 1087, 1090,
+		1, 0, 0, 0, 1088, 1086, 1, 0, 0, 0, 1088, 1089, 1, 0, 0, 0, 1089, 1093, 1, 0, 0, 0, 1090, 1088, 1, 0, 0, 0, 1091,
+		1092, 5, 31, 0, 0, 1092, 1094, 3, 184, 92, 0, 1093, 1091, 1, 0, 0, 0, 1093, 1094, 1, 0, 0, 0, 1094, 105, 1, 0, 0, 0,
+		1095, 1096, 5, 24, 0, 0, 1096, 1097, 5, 163, 0, 0, 1097, 1098, 5, 64, 0, 0, 1098, 1099, 3, 318, 159, 0, 1099, 1103,
+		5, 50, 0, 0, 1100, 1102, 3, 108, 54, 0, 1101, 1100, 1, 0, 0, 0, 1102, 1105, 1, 0, 0, 0, 1103, 1101, 1, 0, 0, 0,
+		1103, 1104, 1, 0, 0, 0, 1104, 1106, 1, 0, 0, 0, 1105, 1103, 1, 0, 0, 0, 1106, 1107, 3, 50, 25, 0, 1107, 1109, 5, 33,
+		0, 0, 1108, 1110, 5, 24, 0, 0, 1109, 1108, 1, 0, 0, 0, 1109, 1110, 1, 0, 0, 0, 1110, 1112, 1, 0, 0, 0, 1111, 1113,
+		5, 163, 0, 0, 1112, 1111, 1, 0, 0, 0, 1112, 1113, 1, 0, 0, 0, 1113, 1114, 1, 0, 0, 0, 1114, 1115, 5, 150, 0, 0,
+		1115, 107, 1, 0, 0, 0, 1116, 1120, 3, 502, 251, 0, 1117, 1120, 3, 46, 23, 0, 1118, 1120, 3, 236, 118, 0, 1119, 1116,
+		1, 0, 0, 0, 1119, 1117, 1, 0, 0, 0, 1119, 1118, 1, 0, 0, 0, 1120, 109, 1, 0, 0, 0, 1121, 1124, 3, 50, 25, 0, 1122,
+		1124, 3, 70, 35, 0, 1123, 1121, 1, 0, 0, 0, 1123, 1122, 1, 0, 0, 0, 1124, 111, 1, 0, 0, 0, 1125, 1128, 3, 454, 227,
+		0, 1126, 1128, 3, 80, 40, 0, 1127, 1125, 1, 0, 0, 0, 1127, 1126, 1, 0, 0, 0, 1128, 113, 1, 0, 0, 0, 1129, 1130, 5,
+		25, 0, 0, 1130, 1131, 3, 242, 121, 0, 1131, 1132, 5, 149, 0, 0, 1132, 1135, 3, 484, 242, 0, 1133, 1134, 5, 141, 0,
+		0, 1134, 1136, 3, 98, 49, 0, 1135, 1133, 1, 0, 0, 0, 1135, 1136, 1, 0, 0, 0, 1136, 1137, 1, 0, 0, 0, 1137, 1138, 5,
+		150, 0, 0, 1138, 115, 1, 0, 0, 0, 1139, 1140, 5, 13, 0, 0, 1140, 1141, 3, 256, 128, 0, 1141, 1142, 5, 64, 0, 0,
+		1142, 1143, 3, 484, 242, 0, 1143, 117, 1, 0, 0, 0, 1144, 1149, 3, 460, 230, 0, 1145, 1149, 3, 394, 197, 0, 1146,
+		1149, 3, 24, 12, 0, 1147, 1149, 3, 396, 198, 0, 1148, 1144, 1, 0, 0, 0, 1148, 1145, 1, 0, 0, 0, 1148, 1146, 1, 0, 0,
+		0, 1148, 1147, 1, 0, 0, 0, 1149, 119, 1, 0, 0, 0, 1150, 1151, 5, 26, 0, 0, 1151, 1152, 5, 163, 0, 0, 1152, 1156, 5,
+		50, 0, 0, 1153, 1155, 3, 122, 61, 0, 1154, 1153, 1, 0, 0, 0, 1155, 1158, 1, 0, 0, 0, 1156, 1154, 1, 0, 0, 0, 1156,
+		1157, 1, 0, 0, 0, 1157, 1159, 1, 0, 0, 0, 1158, 1156, 1, 0, 0, 0, 1159, 1161, 5, 33, 0, 0, 1160, 1162, 5, 26, 0, 0,
+		1161, 1160, 1, 0, 0, 0, 1161, 1162, 1, 0, 0, 0, 1162, 1163, 1, 0, 0, 0, 1163, 1164, 5, 163, 0, 0, 1164, 1165, 5,
+		150, 0, 0, 1165, 121, 1, 0, 0, 0, 1166, 1170, 3, 302, 151, 0, 1167, 1170, 3, 502, 251, 0, 1168, 1170, 3, 124, 62, 0,
+		1169, 1166, 1, 0, 0, 0, 1169, 1167, 1, 0, 0, 0, 1169, 1168, 1, 0, 0, 0, 1170, 123, 1, 0, 0, 0, 1171, 1172, 5, 26, 0,
+		0, 1172, 1177, 3, 428, 214, 0, 1173, 1174, 5, 149, 0, 0, 1174, 1176, 3, 428, 214, 0, 1175, 1173, 1, 0, 0, 0, 1176,
+		1179, 1, 0, 0, 0, 1177, 1175, 1, 0, 0, 0, 1177, 1178, 1, 0, 0, 0, 1178, 1180, 1, 0, 0, 0, 1179, 1177, 1, 0, 0, 0,
+		1180, 1181, 5, 150, 0, 0, 1181, 125, 1, 0, 0, 0, 1182, 1189, 5, 103, 0, 0, 1183, 1184, 5, 82, 0, 0, 1184, 1186, 3,
+		184, 92, 0, 1185, 1183, 1, 0, 0, 0, 1185, 1186, 1, 0, 0, 0, 1186, 1187, 1, 0, 0, 0, 1187, 1189, 5, 48, 0, 0, 1188,
+		1182, 1, 0, 0, 0, 1188, 1185, 1, 0, 0, 0, 1189, 127, 1, 0, 0, 0, 1190, 1192, 3, 130, 65, 0, 1191, 1190, 1, 0, 0, 0,
+		1192, 1193, 1, 0, 0, 0, 1193, 1191, 1, 0, 0, 0, 1193, 1194, 1, 0, 0, 0, 1194, 1195, 1, 0, 0, 0, 1195, 1196, 5, 0, 0,
+		1, 1196, 129, 1, 0, 0, 0, 1197, 1199, 3, 122, 61, 0, 1198, 1197, 1, 0, 0, 0, 1199, 1202, 1, 0, 0, 0, 1200, 1198, 1,
+		0, 0, 0, 1200, 1201, 1, 0, 0, 0, 1201, 1203, 1, 0, 0, 0, 1202, 1200, 1, 0, 0, 0, 1203, 1204, 3, 304, 152, 0, 1204,
+		131, 1, 0, 0, 0, 1205, 1206, 7, 2, 0, 0, 1206, 133, 1, 0, 0, 0, 1207, 1208, 7, 3, 0, 0, 1208, 135, 1, 0, 0, 0, 1209,
+		1210, 5, 29, 0, 0, 1210, 1211, 3, 240, 120, 0, 1211, 1212, 5, 8, 0, 0, 1212, 1213, 3, 184, 92, 0, 1213, 1214, 5,
+		150, 0, 0, 1214, 137, 1, 0, 0, 0, 1215, 1218, 3, 484, 242, 0, 1216, 1218, 3, 392, 196, 0, 1217, 1215, 1, 0, 0, 0,
+		1217, 1216, 1, 0, 0, 0, 1218, 139, 1, 0, 0, 0, 1219, 1220, 5, 143, 0, 0, 1220, 1221, 5, 142, 0, 0, 1221, 1222, 5,
+		144, 0, 0, 1222, 141, 1, 0, 0, 0, 1223, 1224, 5, 110, 0, 0, 1224, 1225, 5, 143, 0, 0, 1225, 1226, 3, 318, 159, 0,
+		1226, 1227, 5, 144, 0, 0, 1227, 143, 1, 0, 0, 0, 1228, 1229, 3, 68, 34, 0, 1229, 1230, 5, 139, 0, 0, 1230, 1232, 1,
+		0, 0, 0, 1231, 1228, 1, 0, 0, 0, 1231, 1232, 1, 0, 0, 0, 1232, 1233, 1, 0, 0, 0, 1233, 1234, 3, 184, 92, 0, 1234,
+		145, 1, 0, 0, 0, 1235, 1238, 3, 24, 12, 0, 1236, 1238, 3, 396, 198, 0, 1237, 1235, 1, 0, 0, 0, 1237, 1236, 1, 0, 0,
+		0, 1238, 147, 1, 0, 0, 0, 1239, 1240, 3, 242, 121, 0, 1240, 1241, 5, 149, 0, 0, 1241, 1242, 3, 484, 242, 0, 1242,
+		1243, 5, 150, 0, 0, 1243, 149, 1, 0, 0, 0, 1244, 1247, 3, 310, 155, 0, 1245, 1247, 3, 152, 76, 0, 1246, 1244, 1, 0,
+		0, 0, 1246, 1245, 1, 0, 0, 0, 1247, 151, 1, 0, 0, 0, 1248, 1251, 3, 142, 71, 0, 1249, 1251, 3, 154, 77, 0, 1250,
+		1248, 1, 0, 0, 0, 1250, 1249, 1, 0, 0, 0, 1251, 153, 1, 0, 0, 0, 1252, 1253, 5, 110, 0, 0, 1253, 1254, 3, 318, 159,
+		0, 1254, 155, 1, 0, 0, 0, 1255, 1258, 3, 414, 207, 0, 1256, 1258, 3, 404, 202, 0, 1257, 1255, 1, 0, 0, 0, 1257,
+		1256, 1, 0, 0, 0, 1258, 157, 1, 0, 0, 0, 1259, 1260, 5, 34, 0, 0, 1260, 1264, 3, 318, 159, 0, 1261, 1262, 5, 143, 0,
+		0, 1262, 1263, 5, 163, 0, 0, 1263, 1265, 5, 144, 0, 0, 1264, 1261, 1, 0, 0, 0, 1264, 1265, 1, 0, 0, 0, 1265, 1270,
+		1, 0, 0, 0, 1266, 1267, 5, 24, 0, 0, 1267, 1270, 3, 318, 159, 0, 1268, 1270, 5, 66, 0, 0, 1269, 1259, 1, 0, 0, 0,
+		1269, 1266, 1, 0, 0, 0, 1269, 1268, 1, 0, 0, 0, 1270, 159, 1, 0, 0, 0, 1271, 1272, 7, 4, 0, 0, 1272, 161, 1, 0, 0,
+		0, 1273, 1275, 3, 160, 80, 0, 1274, 1276, 5, 142, 0, 0, 1275, 1274, 1, 0, 0, 0, 1275, 1276, 1, 0, 0, 0, 1276, 163,
+		1, 0, 0, 0, 1277, 1278, 5, 34, 0, 0, 1278, 1279, 5, 163, 0, 0, 1279, 1281, 5, 50, 0, 0, 1280, 1282, 3, 230, 115, 0,
+		1281, 1280, 1, 0, 0, 0, 1281, 1282, 1, 0, 0, 0, 1282, 1284, 1, 0, 0, 0, 1283, 1285, 3, 354, 177, 0, 1284, 1283, 1,
+		0, 0, 0, 1284, 1285, 1, 0, 0, 0, 1285, 1289, 1, 0, 0, 0, 1286, 1288, 3, 166, 83, 0, 1287, 1286, 1, 0, 0, 0, 1288,
+		1291, 1, 0, 0, 0, 1289, 1287, 1, 0, 0, 0, 1289, 1290, 1, 0, 0, 0, 1290, 1299, 1, 0, 0, 0, 1291, 1289, 1, 0, 0, 0,
+		1292, 1296, 5, 17, 0, 0, 1293, 1295, 3, 174, 87, 0, 1294, 1293, 1, 0, 0, 0, 1295, 1298, 1, 0, 0, 0, 1296, 1294, 1,
+		0, 0, 0, 1296, 1297, 1, 0, 0, 0, 1297, 1300, 1, 0, 0, 0, 1298, 1296, 1, 0, 0, 0, 1299, 1292, 1, 0, 0, 0, 1299, 1300,
+		1, 0, 0, 0, 1300, 1301, 1, 0, 0, 0, 1301, 1303, 5, 33, 0, 0, 1302, 1304, 5, 34, 0, 0, 1303, 1302, 1, 0, 0, 0, 1303,
+		1304, 1, 0, 0, 0, 1304, 1306, 1, 0, 0, 0, 1305, 1307, 5, 163, 0, 0, 1306, 1305, 1, 0, 0, 0, 1306, 1307, 1, 0, 0, 0,
+		1307, 1308, 1, 0, 0, 0, 1308, 1309, 5, 150, 0, 0, 1309, 165, 1, 0, 0, 0, 1310, 1331, 3, 472, 236, 0, 1311, 1331, 3,
+		470, 235, 0, 1312, 1331, 3, 476, 238, 0, 1313, 1331, 3, 330, 165, 0, 1314, 1331, 3, 326, 163, 0, 1315, 1331, 3, 334,
+		167, 0, 1316, 1331, 3, 494, 247, 0, 1317, 1331, 3, 482, 241, 0, 1318, 1331, 3, 314, 157, 0, 1319, 1331, 3, 114, 57,
+		0, 1320, 1331, 3, 448, 224, 0, 1321, 1331, 3, 508, 254, 0, 1322, 1331, 3, 198, 99, 0, 1323, 1331, 3, 12, 6, 0, 1324,
+		1331, 3, 42, 21, 0, 1325, 1331, 3, 46, 23, 0, 1326, 1331, 3, 136, 68, 0, 1327, 1331, 3, 502, 251, 0, 1328, 1331, 3,
+		238, 119, 0, 1329, 1331, 3, 236, 118, 0, 1330, 1310, 1, 0, 0, 0, 1330, 1311, 1, 0, 0, 0, 1330, 1312, 1, 0, 0, 0,
+		1330, 1313, 1, 0, 0, 0, 1330, 1314, 1, 0, 0, 0, 1330, 1315, 1, 0, 0, 0, 1330, 1316, 1, 0, 0, 0, 1330, 1317, 1, 0, 0,
+		0, 1330, 1318, 1, 0, 0, 0, 1330, 1319, 1, 0, 0, 0, 1330, 1320, 1, 0, 0, 0, 1330, 1321, 1, 0, 0, 0, 1330, 1322, 1, 0,
+		0, 0, 1330, 1323, 1, 0, 0, 0, 1330, 1324, 1, 0, 0, 0, 1330, 1325, 1, 0, 0, 0, 1330, 1326, 1, 0, 0, 0, 1330, 1327, 1,
+		0, 0, 0, 1330, 1328, 1, 0, 0, 0, 1330, 1329, 1, 0, 0, 0, 1331, 167, 1, 0, 0, 0, 1332, 1334, 3, 176, 88, 0, 1333,
+		1335, 3, 452, 226, 0, 1334, 1333, 1, 0, 0, 0, 1334, 1335, 1, 0, 0, 0, 1335, 169, 1, 0, 0, 0, 1336, 1341, 3, 168, 84,
+		0, 1337, 1338, 5, 151, 0, 0, 1338, 1340, 3, 168, 84, 0, 1339, 1337, 1, 0, 0, 0, 1340, 1343, 1, 0, 0, 0, 1341, 1339,
+		1, 0, 0, 0, 1341, 1342, 1, 0, 0, 0, 1342, 1347, 1, 0, 0, 0, 1343, 1341, 1, 0, 0, 0, 1344, 1347, 5, 68, 0, 0, 1345,
+		1347, 5, 10, 0, 0, 1346, 1336, 1, 0, 0, 0, 1346, 1344, 1, 0, 0, 0, 1346, 1345, 1, 0, 0, 0, 1347, 171, 1, 0, 0, 0,
+		1348, 1349, 3, 170, 85, 0, 1349, 1350, 5, 149, 0, 0, 1350, 1351, 3, 160, 80, 0, 1351, 173, 1, 0, 0, 0, 1352, 1357,
+		3, 82, 41, 0, 1353, 1357, 3, 86, 43, 0, 1354, 1357, 3, 374, 187, 0, 1355, 1357, 3, 376, 188, 0, 1356, 1352, 1, 0, 0,
+		0, 1356, 1353, 1, 0, 0, 0, 1356, 1354, 1, 0, 0, 0, 1356, 1355, 1, 0, 0, 0, 1357, 175, 1, 0, 0, 0, 1358, 1359, 7, 0,
+		0, 0, 1359, 177, 1, 0, 0, 0, 1360, 1361, 7, 5, 0, 0, 1361, 179, 1, 0, 0, 0, 1362, 1363, 5, 143, 0, 0, 1363, 1368, 3,
+		178, 89, 0, 1364, 1365, 5, 151, 0, 0, 1365, 1367, 3, 178, 89, 0, 1366, 1364, 1, 0, 0, 0, 1367, 1370, 1, 0, 0, 0,
+		1368, 1366, 1, 0, 0, 0, 1368, 1369, 1, 0, 0, 0, 1369, 1371, 1, 0, 0, 0, 1370, 1368, 1, 0, 0, 0, 1371, 1372, 5, 144,
+		0, 0, 1372, 181, 1, 0, 0, 0, 1373, 1374, 5, 163, 0, 0, 1374, 1376, 5, 149, 0, 0, 1375, 1373, 1, 0, 0, 0, 1375, 1376,
+		1, 0, 0, 0, 1376, 1377, 1, 0, 0, 0, 1377, 1379, 5, 35, 0, 0, 1378, 1380, 5, 163, 0, 0, 1379, 1378, 1, 0, 0, 0, 1379,
+		1380, 1, 0, 0, 0, 1380, 1383, 1, 0, 0, 0, 1381, 1382, 5, 117, 0, 0, 1382, 1384, 3, 184, 92, 0, 1383, 1381, 1, 0, 0,
+		0, 1383, 1384, 1, 0, 0, 0, 1384, 1385, 1, 0, 0, 0, 1385, 1386, 5, 150, 0, 0, 1386, 183, 1, 0, 0, 0, 1387, 1388, 6,
+		92, -1, 0, 1388, 1394, 3, 358, 179, 0, 1389, 1390, 5, 138, 0, 0, 1390, 1394, 3, 184, 92, 8, 1391, 1392, 7, 6, 0, 0,
+		1392, 1394, 3, 184, 92, 7, 1393, 1387, 1, 0, 0, 0, 1393, 1389, 1, 0, 0, 0, 1393, 1391, 1, 0, 0, 0, 1394, 1415, 1, 0,
+		0, 0, 1395, 1396, 10, 6, 0, 0, 1396, 1397, 5, 136, 0, 0, 1397, 1414, 3, 184, 92, 6, 1398, 1399, 10, 5, 0, 0, 1399,
+		1400, 7, 7, 0, 0, 1400, 1414, 3, 184, 92, 6, 1401, 1402, 10, 4, 0, 0, 1402, 1403, 7, 8, 0, 0, 1403, 1414, 3, 184,
+		92, 5, 1404, 1405, 10, 3, 0, 0, 1405, 1406, 7, 9, 0, 0, 1406, 1414, 3, 184, 92, 4, 1407, 1408, 10, 2, 0, 0, 1408,
+		1409, 7, 10, 0, 0, 1409, 1414, 3, 184, 92, 3, 1410, 1411, 10, 1, 0, 0, 1411, 1412, 7, 11, 0, 0, 1412, 1414, 3, 184,
+		92, 2, 1413, 1395, 1, 0, 0, 0, 1413, 1398, 1, 0, 0, 0, 1413, 1401, 1, 0, 0, 0, 1413, 1404, 1, 0, 0, 0, 1413, 1407,
+		1, 0, 0, 0, 1413, 1410, 1, 0, 0, 0, 1414, 1417, 1, 0, 0, 0, 1415, 1413, 1, 0, 0, 0, 1415, 1416, 1, 0, 0, 0, 1416,
+		185, 1, 0, 0, 0, 1417, 1415, 1, 0, 0, 0, 1418, 1421, 3, 184, 92, 0, 1419, 1421, 5, 105, 0, 0, 1420, 1418, 1, 0, 0,
+		0, 1420, 1419, 1, 0, 0, 0, 1421, 187, 1, 0, 0, 0, 1422, 1426, 3, 190, 95, 0, 1423, 1426, 3, 192, 96, 0, 1424, 1426,
+		3, 194, 97, 0, 1425, 1422, 1, 0, 0, 0, 1425, 1423, 1, 0, 0, 0, 1425, 1424, 1, 0, 0, 0, 1426, 189, 1, 0, 0, 0, 1427,
+		1428, 5, 147, 0, 0, 1428, 1429, 5, 25, 0, 0, 1429, 1430, 3, 196, 98, 0, 1430, 1431, 5, 149, 0, 0, 1431, 1432, 3,
+		296, 148, 0, 1432, 1433, 5, 148, 0, 0, 1433, 191, 1, 0, 0, 0, 1434, 1435, 5, 147, 0, 0, 1435, 1436, 5, 93, 0, 0,
+		1436, 1437, 3, 196, 98, 0, 1437, 1438, 5, 149, 0, 0, 1438, 1439, 3, 296, 148, 0, 1439, 1440, 5, 148, 0, 0, 1440,
+		193, 1, 0, 0, 0, 1441, 1442, 5, 147, 0, 0, 1442, 1443, 5, 109, 0, 0, 1443, 1444, 3, 196, 98, 0, 1444, 1445, 5, 149,
+		0, 0, 1445, 1446, 3, 296, 148, 0, 1446, 1447, 5, 148, 0, 0, 1447, 195, 1, 0, 0, 0, 1448, 1452, 3, 336, 168, 0, 1449,
+		1452, 3, 0, 0, 0, 1450, 1452, 3, 410, 205, 0, 1451, 1448, 1, 0, 0, 0, 1451, 1449, 1, 0, 0, 0, 1451, 1450, 1, 0, 0,
+		0, 1452, 197, 1, 0, 0, 0, 1453, 1454, 5, 36, 0, 0, 1454, 1455, 3, 242, 121, 0, 1455, 1456, 5, 149, 0, 0, 1456, 1458,
+		3, 484, 242, 0, 1457, 1459, 3, 202, 101, 0, 1458, 1457, 1, 0, 0, 0, 1458, 1459, 1, 0, 0, 0, 1459, 1460, 1, 0, 0, 0,
+		1460, 1461, 5, 150, 0, 0, 1461, 199, 1, 0, 0, 0, 1462, 1463, 5, 36, 0, 0, 1463, 1464, 5, 64, 0, 0, 1464, 1465, 3,
+		254, 127, 0, 1465, 201, 1, 0, 0, 0, 1466, 1467, 5, 66, 0, 0, 1467, 1469, 3, 184, 92, 0, 1468, 1466, 1, 0, 0, 0,
+		1468, 1469, 1, 0, 0, 0, 1469, 1470, 1, 0, 0, 0, 1470, 1471, 5, 50, 0, 0, 1471, 1472, 3, 184, 92, 0, 1472, 203, 1, 0,
+		0, 0, 1473, 1474, 5, 36, 0, 0, 1474, 1475, 5, 64, 0, 0, 1475, 1476, 3, 318, 159, 0, 1476, 205, 1, 0, 0, 0, 1477,
+		1478, 5, 79, 0, 0, 1478, 1479, 5, 142, 0, 0, 1479, 1480, 5, 153, 0, 0, 1480, 1481, 5, 142, 0, 0, 1481, 207, 1, 0, 0,
+		0, 1482, 1483, 3, 394, 197, 0, 1483, 209, 1, 0, 0, 0, 1484, 1485, 5, 163, 0, 0, 1485, 1486, 5, 149, 0, 0, 1486,
+		1487, 5, 37, 0, 0, 1487, 1488, 3, 340, 170, 0, 1488, 1496, 5, 41, 0, 0, 1489, 1491, 3, 52, 26, 0, 1490, 1489, 1, 0,
+		0, 0, 1491, 1494, 1, 0, 0, 0, 1492, 1490, 1, 0, 0, 0, 1492, 1493, 1, 0, 0, 0, 1493, 1495, 1, 0, 0, 0, 1494, 1492, 1,
+		0, 0, 0, 1495, 1497, 5, 17, 0, 0, 1496, 1492, 1, 0, 0, 0, 1496, 1497, 1, 0, 0, 0, 1497, 1501, 1, 0, 0, 0, 1498,
+		1500, 3, 94, 47, 0, 1499, 1498, 1, 0, 0, 0, 1500, 1503, 1, 0, 0, 0, 1501, 1499, 1, 0, 0, 0, 1501, 1502, 1, 0, 0, 0,
+		1502, 1504, 1, 0, 0, 0, 1503, 1501, 1, 0, 0, 0, 1504, 1505, 5, 33, 0, 0, 1505, 1507, 5, 41, 0, 0, 1506, 1508, 5,
+		163, 0, 0, 1507, 1506, 1, 0, 0, 0, 1507, 1508, 1, 0, 0, 0, 1508, 1509, 1, 0, 0, 0, 1509, 1510, 5, 150, 0, 0, 1510,
+		211, 1, 0, 0, 0, 1511, 1513, 3, 318, 159, 0, 1512, 1514, 3, 452, 226, 0, 1513, 1512, 1, 0, 0, 0, 1513, 1514, 1, 0,
+		0, 0, 1514, 213, 1, 0, 0, 0, 1515, 1516, 3, 278, 139, 0, 1516, 215, 1, 0, 0, 0, 1517, 1527, 3, 212, 106, 0, 1518,
+		1521, 3, 318, 159, 0, 1519, 1521, 3, 318, 159, 0, 1520, 1518, 1, 0, 0, 0, 1520, 1519, 1, 0, 0, 0, 1521, 1522, 1, 0,
+		0, 0, 1522, 1523, 5, 143, 0, 0, 1523, 1524, 3, 212, 106, 0, 1524, 1525, 5, 144, 0, 0, 1525, 1527, 1, 0, 0, 0, 1526,
+		1517, 1, 0, 0, 0, 1526, 1520, 1, 0, 0, 0, 1527, 217, 1, 0, 0, 0, 1528, 1529, 5, 104, 0, 0, 1529, 1530, 5, 163, 0, 0,
+		1530, 1531, 5, 50, 0, 0, 1531, 1532, 3, 496, 248, 0, 1532, 1533, 5, 150, 0, 0, 1533, 219, 1, 0, 0, 0, 1534, 1535, 3,
+		318, 159, 0, 1535, 1536, 3, 232, 116, 0, 1536, 1537, 3, 338, 169, 0, 1537, 221, 1, 0, 0, 0, 1538, 1540, 7, 12, 0, 0,
+		1539, 1538, 1, 0, 0, 0, 1539, 1540, 1, 0, 0, 0, 1540, 1541, 1, 0, 0, 0, 1541, 1542, 5, 39, 0, 0, 1542, 1550, 3, 132,
+		66, 0, 1543, 1545, 5, 71, 0, 0, 1544, 1543, 1, 0, 0, 0, 1544, 1545, 1, 0, 0, 0, 1545, 1546, 1, 0, 0, 0, 1546, 1547,
+		5, 143, 0, 0, 1547, 1548, 3, 214, 107, 0, 1548, 1549, 5, 144, 0, 0, 1549, 1551, 1, 0, 0, 0, 1550, 1544, 1, 0, 0, 0,
+		1550, 1551, 1, 0, 0, 0, 1551, 1552, 1, 0, 0, 0, 1552, 1555, 5, 86, 0, 0, 1553, 1554, 5, 163, 0, 0, 1554, 1556, 5,
+		64, 0, 0, 1555, 1553, 1, 0, 0, 0, 1555, 1556, 1, 0, 0, 0, 1556, 1557, 1, 0, 0, 0, 1557, 1558, 3, 318, 159, 0, 1558,
+		223, 1, 0, 0, 0, 1559, 1563, 3, 138, 69, 0, 1560, 1563, 3, 184, 92, 0, 1561, 1563, 5, 163, 0, 0, 1562, 1559, 1, 0,
+		0, 0, 1562, 1560, 1, 0, 0, 0, 1562, 1561, 1, 0, 0, 0, 1563, 225, 1, 0, 0, 0, 1564, 1568, 3, 210, 105, 0, 1565, 1568,
+		3, 244, 122, 0, 1566, 1568, 3, 60, 30, 0, 1567, 1564, 1, 0, 0, 0, 1567, 1565, 1, 0, 0, 0, 1567, 1566, 1, 0, 0, 0,
+		1568, 227, 1, 0, 0, 0, 1569, 1571, 3, 52, 26, 0, 1570, 1569, 1, 0, 0, 0, 1571, 1574, 1, 0, 0, 0, 1572, 1570, 1, 0,
+		0, 0, 1572, 1573, 1, 0, 0, 0, 1573, 1575, 1, 0, 0, 0, 1574, 1572, 1, 0, 0, 0, 1575, 1577, 5, 17, 0, 0, 1576, 1572,
+		1, 0, 0, 0, 1576, 1577, 1, 0, 0, 0, 1577, 1581, 1, 0, 0, 0, 1578, 1580, 3, 94, 47, 0, 1579, 1578, 1, 0, 0, 0, 1580,
+		1583, 1, 0, 0, 0, 1581, 1579, 1, 0, 0, 0, 1581, 1582, 1, 0, 0, 0, 1582, 1589, 1, 0, 0, 0, 1583, 1581, 1, 0, 0, 0,
+		1584, 1586, 5, 33, 0, 0, 1585, 1587, 5, 163, 0, 0, 1586, 1585, 1, 0, 0, 0, 1586, 1587, 1, 0, 0, 0, 1587, 1588, 1, 0,
+		0, 0, 1588, 1590, 5, 150, 0, 0, 1589, 1584, 1, 0, 0, 0, 1589, 1590, 1, 0, 0, 0, 1590, 229, 1, 0, 0, 0, 1591, 1592,
+		5, 42, 0, 0, 1592, 1593, 5, 143, 0, 0, 1593, 1598, 3, 272, 136, 0, 1594, 1595, 5, 150, 0, 0, 1595, 1597, 3, 272,
+		136, 0, 1596, 1594, 1, 0, 0, 0, 1597, 1600, 1, 0, 0, 0, 1598, 1596, 1, 0, 0, 0, 1598, 1599, 1, 0, 0, 0, 1599, 1602,
+		1, 0, 0, 0, 1600, 1598, 1, 0, 0, 0, 1601, 1603, 5, 150, 0, 0, 1602, 1601, 1, 0, 0, 0, 1602, 1603, 1, 0, 0, 0, 1603,
+		1604, 1, 0, 0, 0, 1604, 1605, 5, 144, 0, 0, 1605, 1606, 5, 150, 0, 0, 1606, 231, 1, 0, 0, 0, 1607, 1608, 5, 42, 0,
+		0, 1608, 1609, 5, 56, 0, 0, 1609, 1610, 5, 143, 0, 0, 1610, 1611, 3, 40, 20, 0, 1611, 1612, 5, 144, 0, 0, 1612, 233,
+		1, 0, 0, 0, 1613, 1616, 3, 318, 159, 0, 1614, 1616, 5, 161, 0, 0, 1615, 1613, 1, 0, 0, 0, 1615, 1614, 1, 0, 0, 0,
+		1616, 235, 1, 0, 0, 0, 1617, 1618, 5, 44, 0, 0, 1618, 1619, 5, 163, 0, 0, 1619, 1620, 5, 149, 0, 0, 1620, 1621, 3,
+		318, 159, 0, 1621, 1622, 5, 143, 0, 0, 1622, 1627, 3, 234, 117, 0, 1623, 1624, 5, 151, 0, 0, 1624, 1626, 3, 234,
+		117, 0, 1625, 1623, 1, 0, 0, 0, 1626, 1629, 1, 0, 0, 0, 1627, 1625, 1, 0, 0, 0, 1627, 1628, 1, 0, 0, 0, 1628, 1630,
+		1, 0, 0, 0, 1629, 1627, 1, 0, 0, 0, 1630, 1631, 5, 144, 0, 0, 1631, 1632, 5, 150, 0, 0, 1632, 237, 1, 0, 0, 0, 1633,
+		1634, 5, 44, 0, 0, 1634, 1635, 5, 163, 0, 0, 1635, 1636, 5, 50, 0, 0, 1636, 1637, 5, 143, 0, 0, 1637, 1642, 3, 162,
+		81, 0, 1638, 1639, 5, 151, 0, 0, 1639, 1641, 3, 162, 81, 0, 1640, 1638, 1, 0, 0, 0, 1641, 1644, 1, 0, 0, 0, 1642,
+		1640, 1, 0, 0, 0, 1642, 1643, 1, 0, 0, 0, 1643, 1645, 1, 0, 0, 0, 1644, 1642, 1, 0, 0, 0, 1645, 1646, 5, 144, 0, 0,
+		1646, 1647, 5, 150, 0, 0, 1647, 239, 1, 0, 0, 0, 1648, 1649, 3, 450, 225, 0, 1649, 1650, 5, 149, 0, 0, 1650, 1651,
+		3, 318, 159, 0, 1651, 241, 1, 0, 0, 0, 1652, 1657, 5, 163, 0, 0, 1653, 1654, 5, 151, 0, 0, 1654, 1656, 5, 163, 0, 0,
+		1655, 1653, 1, 0, 0, 0, 1656, 1659, 1, 0, 0, 0, 1657, 1655, 1, 0, 0, 0, 1657, 1658, 1, 0, 0, 0, 1658, 243, 1, 0, 0,
+		0, 1659, 1657, 1, 0, 0, 0, 1660, 1661, 5, 163, 0, 0, 1661, 1662, 5, 149, 0, 0, 1662, 1665, 5, 45, 0, 0, 1663, 1664,
+		5, 163, 0, 0, 1664, 1666, 5, 149, 0, 0, 1665, 1663, 1, 0, 0, 0, 1665, 1666, 1, 0, 0, 0, 1666, 1667, 1, 0, 0, 0,
+		1667, 1668, 3, 184, 92, 0, 1668, 1669, 5, 41, 0, 0, 1669, 1681, 3, 228, 114, 0, 1670, 1673, 5, 32, 0, 0, 1671, 1672,
+		5, 163, 0, 0, 1672, 1674, 5, 149, 0, 0, 1673, 1671, 1, 0, 0, 0, 1673, 1674, 1, 0, 0, 0, 1674, 1675, 1, 0, 0, 0,
+		1675, 1676, 3, 184, 92, 0, 1676, 1677, 5, 41, 0, 0, 1677, 1678, 3, 228, 114, 0, 1678, 1680, 1, 0, 0, 0, 1679, 1670,
+		1, 0, 0, 0, 1680, 1683, 1, 0, 0, 0, 1681, 1679, 1, 0, 0, 0, 1681, 1682, 1, 0, 0, 0, 1682, 1691, 1, 0, 0, 0, 1683,
+		1681, 1, 0, 0, 0, 1684, 1687, 5, 31, 0, 0, 1685, 1686, 5, 163, 0, 0, 1686, 1688, 5, 149, 0, 0, 1687, 1685, 1, 0, 0,
+		0, 1687, 1688, 1, 0, 0, 0, 1688, 1689, 1, 0, 0, 0, 1689, 1690, 5, 41, 0, 0, 1690, 1692, 3, 228, 114, 0, 1691, 1684,
+		1, 0, 0, 0, 1691, 1692, 1, 0, 0, 0, 1692, 1693, 1, 0, 0, 0, 1693, 1694, 5, 33, 0, 0, 1694, 1696, 5, 41, 0, 0, 1695,
+		1697, 5, 163, 0, 0, 1696, 1695, 1, 0, 0, 0, 1696, 1697, 1, 0, 0, 0, 1697, 1698, 1, 0, 0, 0, 1698, 1699, 5, 150, 0,
+		0, 1699, 245, 1, 0, 0, 0, 1700, 1701, 5, 163, 0, 0, 1701, 1703, 5, 149, 0, 0, 1702, 1700, 1, 0, 0, 0, 1702, 1703, 1,
+		0, 0, 0, 1703, 1704, 1, 0, 0, 0, 1704, 1705, 5, 45, 0, 0, 1705, 1706, 3, 184, 92, 0, 1706, 1710, 5, 101, 0, 0, 1707,
+		1709, 3, 444, 222, 0, 1708, 1707, 1, 0, 0, 0, 1709, 1712, 1, 0, 0, 0, 1710, 1708, 1, 0, 0, 0, 1710, 1711, 1, 0, 0,
+		0, 1711, 1724, 1, 0, 0, 0, 1712, 1710, 1, 0, 0, 0, 1713, 1714, 5, 32, 0, 0, 1714, 1715, 3, 184, 92, 0, 1715, 1719,
+		5, 101, 0, 0, 1716, 1718, 3, 444, 222, 0, 1717, 1716, 1, 0, 0, 0, 1718, 1721, 1, 0, 0, 0, 1719, 1717, 1, 0, 0, 0,
+		1719, 1720, 1, 0, 0, 0, 1720, 1723, 1, 0, 0, 0, 1721, 1719, 1, 0, 0, 0, 1722, 1713, 1, 0, 0, 0, 1723, 1726, 1, 0, 0,
+		0, 1724, 1722, 1, 0, 0, 0, 1724, 1725, 1, 0, 0, 0, 1725, 1734, 1, 0, 0, 0, 1726, 1724, 1, 0, 0, 0, 1727, 1731, 5,
+		31, 0, 0, 1728, 1730, 3, 444, 222, 0, 1729, 1728, 1, 0, 0, 0, 1730, 1733, 1, 0, 0, 0, 1731, 1729, 1, 0, 0, 0, 1731,
+		1732, 1, 0, 0, 0, 1732, 1735, 1, 0, 0, 0, 1733, 1731, 1, 0, 0, 0, 1734, 1727, 1, 0, 0, 0, 1734, 1735, 1, 0, 0, 0,
+		1735, 1736, 1, 0, 0, 0, 1736, 1737, 5, 33, 0, 0, 1737, 1739, 5, 45, 0, 0, 1738, 1740, 5, 163, 0, 0, 1739, 1738, 1,
+		0, 0, 0, 1739, 1740, 1, 0, 0, 0, 1740, 1741, 1, 0, 0, 0, 1741, 1742, 5, 150, 0, 0, 1742, 247, 1, 0, 0, 0, 1743,
+		1746, 3, 484, 242, 0, 1744, 1746, 3, 500, 250, 0, 1745, 1743, 1, 0, 0, 0, 1745, 1744, 1, 0, 0, 0, 1746, 249, 1, 0,
+		0, 0, 1747, 1748, 5, 104, 0, 0, 1748, 1749, 5, 163, 0, 0, 1749, 1750, 5, 150, 0, 0, 1750, 251, 1, 0, 0, 0, 1751,
+		1761, 3, 362, 181, 0, 1752, 1761, 3, 418, 209, 0, 1753, 1761, 3, 140, 70, 0, 1754, 1761, 3, 264, 132, 0, 1755, 1761,
+		3, 346, 173, 0, 1756, 1761, 3, 206, 103, 0, 1757, 1761, 3, 26, 13, 0, 1758, 1761, 3, 2, 1, 0, 1759, 1761, 3, 200,
+		100, 0, 1760, 1751, 1, 0, 0, 0, 1760, 1752, 1, 0, 0, 0, 1760, 1753, 1, 0, 0, 0, 1760, 1754, 1, 0, 0, 0, 1760, 1755,
+		1, 0, 0, 0, 1760, 1756, 1, 0, 0, 0, 1760, 1757, 1, 0, 0, 0, 1760, 1758, 1, 0, 0, 0, 1760, 1759, 1, 0, 0, 0, 1761,
+		253, 1, 0, 0, 0, 1762, 1765, 3, 318, 159, 0, 1763, 1765, 3, 500, 250, 0, 1764, 1762, 1, 0, 0, 0, 1764, 1763, 1, 0,
+		0, 0, 1765, 255, 1, 0, 0, 0, 1766, 1767, 5, 143, 0, 0, 1767, 1772, 3, 138, 69, 0, 1768, 1769, 5, 151, 0, 0, 1769,
+		1771, 3, 138, 69, 0, 1770, 1768, 1, 0, 0, 0, 1771, 1774, 1, 0, 0, 0, 1772, 1770, 1, 0, 0, 0, 1772, 1773, 1, 0, 0, 0,
+		1773, 1775, 1, 0, 0, 0, 1774, 1772, 1, 0, 0, 0, 1775, 1776, 5, 144, 0, 0, 1776, 257, 1, 0, 0, 0, 1777, 1778, 3, 318,
+		159, 0, 1778, 1779, 5, 79, 0, 0, 1779, 1780, 5, 142, 0, 0, 1780, 259, 1, 0, 0, 0, 1781, 1783, 5, 23, 0, 0, 1782,
+		1781, 1, 0, 0, 0, 1782, 1783, 1, 0, 0, 0, 1783, 1784, 1, 0, 0, 0, 1784, 1795, 3, 318, 159, 0, 1785, 1786, 5, 34, 0,
+		0, 1786, 1790, 3, 318, 159, 0, 1787, 1788, 5, 143, 0, 0, 1788, 1789, 5, 163, 0, 0, 1789, 1791, 5, 144, 0, 0, 1790,
+		1787, 1, 0, 0, 0, 1790, 1791, 1, 0, 0, 0, 1791, 1795, 1, 0, 0, 0, 1792, 1793, 5, 24, 0, 0, 1793, 1795, 3, 318, 159,
+		0, 1794, 1782, 1, 0, 0, 0, 1794, 1785, 1, 0, 0, 0, 1794, 1792, 1, 0, 0, 0, 1795, 261, 1, 0, 0, 0, 1796, 1801, 5,
+		163, 0, 0, 1797, 1798, 5, 151, 0, 0, 1798, 1800, 5, 163, 0, 0, 1799, 1797, 1, 0, 0, 0, 1800, 1803, 1, 0, 0, 0, 1801,
+		1799, 1, 0, 0, 0, 1801, 1802, 1, 0, 0, 0, 1802, 1807, 1, 0, 0, 0, 1803, 1801, 1, 0, 0, 0, 1804, 1807, 5, 68, 0, 0,
+		1805, 1807, 5, 10, 0, 0, 1806, 1796, 1, 0, 0, 0, 1806, 1804, 1, 0, 0, 0, 1806, 1805, 1, 0, 0, 0, 1807, 263, 1, 0, 0,
+		0, 1808, 1809, 5, 79, 0, 0, 1809, 1810, 5, 142, 0, 0, 1810, 265, 1, 0, 0, 0, 1811, 1812, 3, 394, 197, 0, 1812, 267,
+		1, 0, 0, 0, 1813, 1815, 5, 25, 0, 0, 1814, 1813, 1, 0, 0, 0, 1814, 1815, 1, 0, 0, 0, 1815, 1816, 1, 0, 0, 0, 1816,
+		1817, 3, 242, 121, 0, 1817, 1819, 5, 149, 0, 0, 1818, 1820, 5, 47, 0, 0, 1819, 1818, 1, 0, 0, 0, 1819, 1820, 1, 0,
+		0, 0, 1820, 1821, 1, 0, 0, 0, 1821, 1824, 3, 484, 242, 0, 1822, 1823, 5, 141, 0, 0, 1823, 1825, 3, 184, 92, 0, 1824,
+		1822, 1, 0, 0, 0, 1824, 1825, 1, 0, 0, 0, 1825, 269, 1, 0, 0, 0, 1826, 1833, 3, 268, 134, 0, 1827, 1833, 3, 298,
+		149, 0, 1828, 1833, 3, 274, 137, 0, 1829, 1833, 3, 294, 147, 0, 1830, 1833, 3, 288, 144, 0, 1831, 1833, 3, 280, 140,
+		0, 1832, 1826, 1, 0, 0, 0, 1832, 1827, 1, 0, 0, 0, 1832, 1828, 1, 0, 0, 0, 1832, 1829, 1, 0, 0, 0, 1832, 1830, 1, 0,
+		0, 0, 1832, 1831, 1, 0, 0, 0, 1833, 271, 1, 0, 0, 0, 1834, 1835, 3, 270, 135, 0, 1835, 273, 1, 0, 0, 0, 1836, 1837,
+		5, 36, 0, 0, 1837, 1838, 3, 242, 121, 0, 1838, 1839, 5, 149, 0, 0, 1839, 1840, 3, 484, 242, 0, 1840, 275, 1, 0, 0,
+		0, 1841, 1843, 7, 12, 0, 0, 1842, 1841, 1, 0, 0, 0, 1842, 1843, 1, 0, 0, 0, 1843, 1844, 1, 0, 0, 0, 1844, 1845, 5,
+		39, 0, 0, 1845, 1853, 3, 132, 66, 0, 1846, 1848, 5, 71, 0, 0, 1847, 1846, 1, 0, 0, 0, 1847, 1848, 1, 0, 0, 0, 1848,
+		1849, 1, 0, 0, 0, 1849, 1850, 5, 143, 0, 0, 1850, 1851, 3, 214, 107, 0, 1851, 1852, 5, 144, 0, 0, 1852, 1854, 1, 0,
+		0, 0, 1853, 1847, 1, 0, 0, 0, 1853, 1854, 1, 0, 0, 0, 1854, 1855, 1, 0, 0, 0, 1855, 1856, 5, 86, 0, 0, 1856, 1857,
+		3, 318, 159, 0, 1857, 277, 1, 0, 0, 0, 1858, 1863, 3, 272, 136, 0, 1859, 1860, 5, 150, 0, 0, 1860, 1862, 3, 272,
+		136, 0, 1861, 1859, 1, 0, 0, 0, 1862, 1865, 1, 0, 0, 0, 1863, 1861, 1, 0, 0, 0, 1863, 1864, 1, 0, 0, 0, 1864, 1867,
+		1, 0, 0, 0, 1865, 1863, 1, 0, 0, 0, 1866, 1868, 5, 150, 0, 0, 1867, 1866, 1, 0, 0, 0, 1867, 1868, 1, 0, 0, 0, 1868,
+		279, 1, 0, 0, 0, 1869, 1870, 5, 70, 0, 0, 1870, 1871, 5, 163, 0, 0, 1871, 1872, 5, 50, 0, 0, 1872, 1873, 5, 59, 0,
+		0, 1873, 1874, 3, 318, 159, 0, 1874, 1875, 3, 282, 141, 0, 1875, 281, 1, 0, 0, 0, 1876, 1883, 3, 232, 116, 0, 1877,
+		1878, 5, 42, 0, 0, 1878, 1879, 5, 56, 0, 0, 1879, 1880, 5, 143, 0, 0, 1880, 1881, 7, 13, 0, 0, 1881, 1883, 5, 144,
+		0, 0, 1882, 1876, 1, 0, 0, 0, 1882, 1877, 1, 0, 0, 0, 1883, 283, 1, 0, 0, 0, 1884, 1885, 5, 75, 0, 0, 1885, 1893, 5,
+		163, 0, 0, 1886, 1888, 5, 71, 0, 0, 1887, 1886, 1, 0, 0, 0, 1887, 1888, 1, 0, 0, 0, 1888, 1889, 1, 0, 0, 0, 1889,
+		1890, 5, 143, 0, 0, 1890, 1891, 3, 214, 107, 0, 1891, 1892, 5, 144, 0, 0, 1892, 1894, 1, 0, 0, 0, 1893, 1887, 1, 0,
+		0, 0, 1893, 1894, 1, 0, 0, 0, 1894, 285, 1, 0, 0, 0, 1895, 1897, 5, 93, 0, 0, 1896, 1895, 1, 0, 0, 0, 1896, 1897, 1,
+		0, 0, 0, 1897, 1898, 1, 0, 0, 0, 1898, 1899, 3, 242, 121, 0, 1899, 1900, 5, 149, 0, 0, 1900, 1901, 3, 312, 156, 0,
+		1901, 287, 1, 0, 0, 0, 1902, 1905, 3, 292, 146, 0, 1903, 1904, 5, 50, 0, 0, 1904, 1906, 3, 290, 145, 0, 1905, 1903,
+		1, 0, 0, 0, 1905, 1906, 1, 0, 0, 0, 1906, 289, 1, 0, 0, 0, 1907, 1910, 3, 318, 159, 0, 1908, 1910, 5, 142, 0, 0,
+		1909, 1907, 1, 0, 0, 0, 1909, 1908, 1, 0, 0, 0, 1910, 291, 1, 0, 0, 0, 1911, 1914, 3, 276, 138, 0, 1912, 1914, 3,
+		284, 142, 0, 1913, 1911, 1, 0, 0, 0, 1913, 1912, 1, 0, 0, 0, 1914, 293, 1, 0, 0, 0, 1915, 1916, 5, 104, 0, 0, 1916,
+		1919, 5, 163, 0, 0, 1917, 1918, 5, 50, 0, 0, 1918, 1920, 3, 252, 126, 0, 1919, 1917, 1, 0, 0, 0, 1919, 1920, 1, 0,
+		0, 0, 1920, 295, 1, 0, 0, 0, 1921, 1924, 3, 484, 242, 0, 1922, 1924, 3, 500, 250, 0, 1923, 1921, 1, 0, 0, 0, 1923,
+		1922, 1, 0, 0, 0, 1924, 297, 1, 0, 0, 0, 1925, 1927, 5, 109, 0, 0, 1926, 1925, 1, 0, 0, 0, 1926, 1927, 1, 0, 0, 0,
+		1927, 1928, 1, 0, 0, 0, 1928, 1929, 3, 242, 121, 0, 1929, 1931, 5, 149, 0, 0, 1930, 1932, 3, 310, 155, 0, 1931,
+		1930, 1, 0, 0, 0, 1931, 1932, 1, 0, 0, 0, 1932, 1933, 1, 0, 0, 0, 1933, 1936, 3, 296, 148, 0, 1934, 1935, 5, 141, 0,
+		0, 1935, 1937, 3, 98, 49, 0, 1936, 1934, 1, 0, 0, 0, 1936, 1937, 1, 0, 0, 0, 1937, 299, 1, 0, 0, 0, 1938, 1939, 5,
+		118, 0, 0, 1939, 1943, 3, 184, 92, 0, 1940, 1941, 5, 37, 0, 0, 1941, 1943, 3, 340, 170, 0, 1942, 1938, 1, 0, 0, 0,
+		1942, 1940, 1, 0, 0, 0, 1943, 301, 1, 0, 0, 0, 1944, 1945, 5, 52, 0, 0, 1945, 1950, 5, 163, 0, 0, 1946, 1947, 5,
+		151, 0, 0, 1947, 1949, 5, 163, 0, 0, 1948, 1946, 1, 0, 0, 0, 1949, 1952, 1, 0, 0, 0, 1950, 1948, 1, 0, 0, 0, 1950,
+		1951, 1, 0, 0, 0, 1951, 1953, 1, 0, 0, 0, 1952, 1950, 1, 0, 0, 0, 1953, 1954, 5, 150, 0, 0, 1954, 303, 1, 0, 0, 0,
+		1955, 1963, 3, 164, 82, 0, 1956, 1963, 3, 106, 53, 0, 1957, 1963, 3, 330, 165, 0, 1958, 1963, 3, 334, 167, 0, 1959,
+		1963, 3, 120, 60, 0, 1960, 1963, 3, 20, 10, 0, 1961, 1963, 3, 326, 163, 0, 1962, 1955, 1, 0, 0, 0, 1962, 1956, 1, 0,
+		0, 0, 1962, 1957, 1, 0, 0, 0, 1962, 1958, 1, 0, 0, 0, 1962, 1959, 1, 0, 0, 0, 1962, 1960, 1, 0, 0, 0, 1962, 1961, 1,
+		0, 0, 0, 1963, 305, 1, 0, 0, 0, 1964, 1970, 3, 324, 162, 0, 1965, 1970, 3, 178, 89, 0, 1966, 1970, 5, 162, 0, 0,
+		1967, 1970, 5, 160, 0, 0, 1968, 1970, 5, 63, 0, 0, 1969, 1964, 1, 0, 0, 0, 1969, 1965, 1, 0, 0, 0, 1969, 1966, 1, 0,
+		0, 0, 1969, 1967, 1, 0, 0, 0, 1969, 1968, 1, 0, 0, 0, 1970, 307, 1, 0, 0, 0, 1971, 1972, 5, 163, 0, 0, 1972, 1974,
+		5, 149, 0, 0, 1973, 1971, 1, 0, 0, 0, 1973, 1974, 1, 0, 0, 0, 1974, 1976, 1, 0, 0, 0, 1975, 1977, 3, 300, 150, 0,
+		1976, 1975, 1, 0, 0, 0, 1976, 1977, 1, 0, 0, 0, 1977, 1978, 1, 0, 0, 0, 1978, 1982, 5, 54, 0, 0, 1979, 1981, 3, 444,
+		222, 0, 1980, 1979, 1, 0, 0, 0, 1981, 1984, 1, 0, 0, 0, 1982, 1980, 1, 0, 0, 0, 1982, 1983, 1, 0, 0, 0, 1983, 1985,
+		1, 0, 0, 0, 1984, 1982, 1, 0, 0, 0, 1985, 1986, 5, 33, 0, 0, 1986, 1988, 5, 54, 0, 0, 1987, 1989, 5, 163, 0, 0,
+		1988, 1987, 1, 0, 0, 0, 1988, 1989, 1, 0, 0, 0, 1989, 1990, 1, 0, 0, 0, 1990, 1991, 5, 150, 0, 0, 1991, 309, 1, 0,
+		0, 0, 1992, 1993, 7, 14, 0, 0, 1993, 311, 1, 0, 0, 0, 1994, 1998, 3, 458, 229, 0, 1995, 1998, 3, 32, 16, 0, 1996,
+		1998, 3, 408, 204, 0, 1997, 1994, 1, 0, 0, 0, 1997, 1995, 1, 0, 0, 0, 1997, 1996, 1, 0, 0, 0, 1998, 313, 1, 0, 0, 0,
+		1999, 2000, 5, 110, 0, 0, 2000, 2001, 5, 163, 0, 0, 2001, 2002, 5, 64, 0, 0, 2002, 2003, 3, 484, 242, 0, 2003, 2007,
+		5, 50, 0, 0, 2004, 2006, 3, 316, 158, 0, 2005, 2004, 1, 0, 0, 0, 2006, 2009, 1, 0, 0, 0, 2007, 2005, 1, 0, 0, 0,
+		2007, 2008, 1, 0, 0, 0, 2008, 2010, 1, 0, 0, 0, 2009, 2007, 1, 0, 0, 0, 2010, 2011, 5, 33, 0, 0, 2011, 2013, 5, 110,
+		0, 0, 2012, 2014, 5, 163, 0, 0, 2013, 2012, 1, 0, 0, 0, 2013, 2014, 1, 0, 0, 0, 2014, 2015, 1, 0, 0, 0, 2015, 2016,
+		5, 150, 0, 0, 2016, 315, 1, 0, 0, 0, 2017, 2018, 3, 400, 200, 0, 2018, 2019, 5, 149, 0, 0, 2019, 2020, 3, 150, 75,
+		0, 2020, 2021, 5, 150, 0, 0, 2021, 317, 1, 0, 0, 0, 2022, 2023, 6, 159, -1, 0, 2023, 2028, 5, 163, 0, 0, 2024, 2028,
+		5, 162, 0, 0, 2025, 2028, 5, 161, 0, 0, 2026, 2028, 3, 188, 94, 0, 2027, 2022, 1, 0, 0, 0, 2027, 2024, 1, 0, 0, 0,
+		2027, 2025, 1, 0, 0, 0, 2027, 2026, 1, 0, 0, 0, 2028, 2063, 1, 0, 0, 0, 2029, 2030, 10, 5, 0, 0, 2030, 2031, 5, 153,
+		0, 0, 2031, 2062, 3, 486, 243, 0, 2032, 2033, 10, 4, 0, 0, 2033, 2034, 5, 143, 0, 0, 2034, 2039, 3, 184, 92, 0,
+		2035, 2036, 5, 151, 0, 0, 2036, 2038, 3, 184, 92, 0, 2037, 2035, 1, 0, 0, 0, 2038, 2041, 1, 0, 0, 0, 2039, 2037, 1,
+		0, 0, 0, 2039, 2040, 1, 0, 0, 0, 2040, 2042, 1, 0, 0, 0, 2041, 2039, 1, 0, 0, 0, 2042, 2043, 5, 144, 0, 0, 2043,
+		2062, 1, 0, 0, 0, 2044, 2045, 10, 3, 0, 0, 2045, 2046, 5, 143, 0, 0, 2046, 2047, 3, 138, 69, 0, 2047, 2048, 5, 144,
+		0, 0, 2048, 2062, 1, 0, 0, 0, 2049, 2051, 10, 2, 0, 0, 2050, 2052, 3, 452, 226, 0, 2051, 2050, 1, 0, 0, 0, 2051,
+		2052, 1, 0, 0, 0, 2052, 2053, 1, 0, 0, 0, 2053, 2054, 5, 157, 0, 0, 2054, 2059, 3, 44, 22, 0, 2055, 2056, 5, 143, 0,
+		0, 2056, 2057, 3, 184, 92, 0, 2057, 2058, 5, 144, 0, 0, 2058, 2060, 1, 0, 0, 0, 2059, 2055, 1, 0, 0, 0, 2059, 2060,
+		1, 0, 0, 0, 2060, 2062, 1, 0, 0, 0, 2061, 2029, 1, 0, 0, 0, 2061, 2032, 1, 0, 0, 0, 2061, 2044, 1, 0, 0, 0, 2061,
+		2049, 1, 0, 0, 0, 2062, 2065, 1, 0, 0, 0, 2063, 2061, 1, 0, 0, 0, 2063, 2064, 1, 0, 0, 0, 2064, 319, 1, 0, 0, 0,
+		2065, 2063, 1, 0, 0, 0, 2066, 2067, 5, 163, 0, 0, 2067, 2069, 5, 149, 0, 0, 2068, 2066, 1, 0, 0, 0, 2068, 2069, 1,
+		0, 0, 0, 2069, 2070, 1, 0, 0, 0, 2070, 2072, 5, 60, 0, 0, 2071, 2073, 5, 163, 0, 0, 2072, 2071, 1, 0, 0, 0, 2072,
+		2073, 1, 0, 0, 0, 2073, 2076, 1, 0, 0, 0, 2074, 2075, 5, 117, 0, 0, 2075, 2077, 3, 184, 92, 0, 2076, 2074, 1, 0, 0,
+		0, 2076, 2077, 1, 0, 0, 0, 2077, 2078, 1, 0, 0, 0, 2078, 2079, 5, 150, 0, 0, 2079, 321, 1, 0, 0, 0, 2080, 2081, 5,
+		163, 0, 0, 2081, 2083, 5, 149, 0, 0, 2082, 2080, 1, 0, 0, 0, 2082, 2083, 1, 0, 0, 0, 2083, 2084, 1, 0, 0, 0, 2084,
+		2085, 5, 63, 0, 0, 2085, 2086, 5, 150, 0, 0, 2086, 323, 1, 0, 0, 0, 2087, 2090, 5, 159, 0, 0, 2088, 2090, 3, 348,
+		174, 0, 2089, 2087, 1, 0, 0, 0, 2089, 2088, 1, 0, 0, 0, 2090, 325, 1, 0, 0, 0, 2091, 2092, 5, 70, 0, 0, 2092, 2093,
+		5, 19, 0, 0, 2093, 2094, 5, 163, 0, 0, 2094, 2098, 5, 50, 0, 0, 2095, 2097, 3, 328, 164, 0, 2096, 2095, 1, 0, 0, 0,
+		2097, 2100, 1, 0, 0, 0, 2098, 2096, 1, 0, 0, 0, 2098, 2099, 1, 0, 0, 0, 2099, 2101, 1, 0, 0, 0, 2100, 2098, 1, 0, 0,
+		0, 2101, 2104, 5, 33, 0, 0, 2102, 2103, 5, 70, 0, 0, 2103, 2105, 5, 19, 0, 0, 2104, 2102, 1, 0, 0, 0, 2104, 2105, 1,
+		0, 0, 0, 2105, 2107, 1, 0, 0, 0, 2106, 2108, 5, 163, 0, 0, 2107, 2106, 1, 0, 0, 0, 2107, 2108, 1, 0, 0, 0, 2108,
+		2109, 1, 0, 0, 0, 2109, 2110, 5, 150, 0, 0, 2110, 327, 1, 0, 0, 0, 2111, 2129, 3, 472, 236, 0, 2112, 2129, 3, 470,
+		235, 0, 2113, 2129, 3, 476, 238, 0, 2114, 2129, 3, 330, 165, 0, 2115, 2129, 3, 326, 163, 0, 2116, 2129, 3, 334, 167,
+		0, 2117, 2129, 3, 494, 247, 0, 2118, 2129, 3, 482, 241, 0, 2119, 2129, 3, 114, 57, 0, 2120, 2129, 3, 508, 254, 0,
+		2121, 2129, 3, 198, 99, 0, 2122, 2129, 3, 12, 6, 0, 2123, 2129, 3, 42, 21, 0, 2124, 2129, 3, 46, 23, 0, 2125, 2129,
+		3, 502, 251, 0, 2126, 2129, 3, 238, 119, 0, 2127, 2129, 3, 236, 118, 0, 2128, 2111, 1, 0, 0, 0, 2128, 2112, 1, 0, 0,
+		0, 2128, 2113, 1, 0, 0, 0, 2128, 2114, 1, 0, 0, 0, 2128, 2115, 1, 0, 0, 0, 2128, 2116, 1, 0, 0, 0, 2128, 2117, 1, 0,
+		0, 0, 2128, 2118, 1, 0, 0, 0, 2128, 2119, 1, 0, 0, 0, 2128, 2120, 1, 0, 0, 0, 2128, 2121, 1, 0, 0, 0, 2128, 2122, 1,
+		0, 0, 0, 2128, 2123, 1, 0, 0, 0, 2128, 2124, 1, 0, 0, 0, 2128, 2125, 1, 0, 0, 0, 2128, 2126, 1, 0, 0, 0, 2128, 2127,
+		1, 0, 0, 0, 2129, 329, 1, 0, 0, 0, 2130, 2131, 5, 70, 0, 0, 2131, 2132, 5, 163, 0, 0, 2132, 2134, 5, 50, 0, 0, 2133,
+		2135, 3, 230, 115, 0, 2134, 2133, 1, 0, 0, 0, 2134, 2135, 1, 0, 0, 0, 2135, 2139, 1, 0, 0, 0, 2136, 2138, 3, 332,
+		166, 0, 2137, 2136, 1, 0, 0, 0, 2138, 2141, 1, 0, 0, 0, 2139, 2137, 1, 0, 0, 0, 2139, 2140, 1, 0, 0, 0, 2140, 2142,
+		1, 0, 0, 0, 2141, 2139, 1, 0, 0, 0, 2142, 2144, 5, 33, 0, 0, 2143, 2145, 5, 70, 0, 0, 2144, 2143, 1, 0, 0, 0, 2144,
+		2145, 1, 0, 0, 0, 2145, 2147, 1, 0, 0, 0, 2146, 2148, 5, 163, 0, 0, 2147, 2146, 1, 0, 0, 0, 2147, 2148, 1, 0, 0, 0,
+		2148, 2149, 1, 0, 0, 0, 2149, 2150, 5, 150, 0, 0, 2150, 331, 1, 0, 0, 0, 2151, 2170, 3, 472, 236, 0, 2152, 2170, 3,
+		476, 238, 0, 2153, 2170, 3, 330, 165, 0, 2154, 2170, 3, 334, 167, 0, 2155, 2170, 3, 494, 247, 0, 2156, 2170, 3, 482,
+		241, 0, 2157, 2170, 3, 114, 57, 0, 2158, 2170, 3, 448, 224, 0, 2159, 2170, 3, 508, 254, 0, 2160, 2170, 3, 198, 99,
+		0, 2161, 2170, 3, 12, 6, 0, 2162, 2170, 3, 72, 36, 0, 2163, 2170, 3, 42, 21, 0, 2164, 2170, 3, 46, 23, 0, 2165,
+		2170, 3, 136, 68, 0, 2166, 2170, 3, 502, 251, 0, 2167, 2170, 3, 238, 119, 0, 2168, 2170, 3, 236, 118, 0, 2169, 2151,
+		1, 0, 0, 0, 2169, 2152, 1, 0, 0, 0, 2169, 2153, 1, 0, 0, 0, 2169, 2154, 1, 0, 0, 0, 2169, 2155, 1, 0, 0, 0, 2169,
+		2156, 1, 0, 0, 0, 2169, 2157, 1, 0, 0, 0, 2169, 2158, 1, 0, 0, 0, 2169, 2159, 1, 0, 0, 0, 2169, 2160, 1, 0, 0, 0,
+		2169, 2161, 1, 0, 0, 0, 2169, 2162, 1, 0, 0, 0, 2169, 2163, 1, 0, 0, 0, 2169, 2164, 1, 0, 0, 0, 2169, 2165, 1, 0, 0,
+		0, 2169, 2166, 1, 0, 0, 0, 2169, 2167, 1, 0, 0, 0, 2169, 2168, 1, 0, 0, 0, 2170, 333, 1, 0, 0, 0, 2171, 2172, 5, 70,
+		0, 0, 2172, 2173, 5, 163, 0, 0, 2173, 2174, 5, 50, 0, 0, 2174, 2175, 5, 59, 0, 0, 2175, 2177, 3, 318, 159, 0, 2176,
+		2178, 3, 232, 116, 0, 2177, 2176, 1, 0, 0, 0, 2177, 2178, 1, 0, 0, 0, 2178, 2179, 1, 0, 0, 0, 2179, 2180, 5, 150, 0,
+		0, 2180, 335, 1, 0, 0, 0, 2181, 2182, 5, 155, 0, 0, 2182, 2183, 5, 163, 0, 0, 2183, 2188, 5, 153, 0, 0, 2184, 2185,
+		5, 163, 0, 0, 2185, 2187, 5, 153, 0, 0, 2186, 2184, 1, 0, 0, 0, 2187, 2190, 1, 0, 0, 0, 2188, 2186, 1, 0, 0, 0,
+		2188, 2189, 1, 0, 0, 0, 2189, 2191, 1, 0, 0, 0, 2190, 2188, 1, 0, 0, 0, 2191, 2192, 5, 163, 0, 0, 2192, 337, 1, 0,
+		0, 0, 2193, 2194, 5, 71, 0, 0, 2194, 2196, 5, 56, 0, 0, 2195, 2193, 1, 0, 0, 0, 2195, 2196, 1, 0, 0, 0, 2196, 2197,
+		1, 0, 0, 0, 2197, 2198, 5, 143, 0, 0, 2198, 2199, 3, 40, 20, 0, 2199, 2200, 5, 144, 0, 0, 2200, 339, 1, 0, 0, 0,
+		2201, 2202, 5, 163, 0, 0, 2202, 2203, 5, 47, 0, 0, 2203, 2204, 3, 138, 69, 0, 2204, 341, 1, 0, 0, 0, 2205, 2206, 3,
+		344, 172, 0, 2206, 2207, 5, 153, 0, 0, 2207, 2209, 1, 0, 0, 0, 2208, 2205, 1, 0, 0, 0, 2209, 2212, 1, 0, 0, 0, 2210,
+		2208, 1, 0, 0, 0, 2210, 2211, 1, 0, 0, 0, 2211, 2213, 1, 0, 0, 0, 2212, 2210, 1, 0, 0, 0, 2213, 2214, 5, 163, 0, 0,
+		2214, 343, 1, 0, 0, 0, 2215, 2216, 5, 163, 0, 0, 2216, 345, 1, 0, 0, 0, 2217, 2218, 5, 106, 0, 0, 2218, 2219, 5,
+		142, 0, 0, 2219, 347, 1, 0, 0, 0, 2220, 2222, 5, 159, 0, 0, 2221, 2220, 1, 0, 0, 0, 2221, 2222, 1, 0, 0, 0, 2222,
+		2223, 1, 0, 0, 0, 2223, 2224, 3, 318, 159, 0, 2224, 349, 1, 0, 0, 0, 2225, 2226, 3, 394, 197, 0, 2226, 2227, 5, 106,
+		0, 0, 2227, 2228, 5, 163, 0, 0, 2228, 2232, 5, 150, 0, 0, 2229, 2231, 3, 422, 211, 0, 2230, 2229, 1, 0, 0, 0, 2231,
+		2234, 1, 0, 0, 0, 2232, 2230, 1, 0, 0, 0, 2232, 2233, 1, 0, 0, 0, 2233, 2235, 1, 0, 0, 0, 2234, 2232, 1, 0, 0, 0,
+		2235, 2236, 5, 33, 0, 0, 2236, 2238, 5, 106, 0, 0, 2237, 2239, 5, 163, 0, 0, 2238, 2237, 1, 0, 0, 0, 2238, 2239, 1,
+		0, 0, 0, 2239, 351, 1, 0, 0, 0, 2240, 2241, 5, 163, 0, 0, 2241, 2243, 5, 149, 0, 0, 2242, 2240, 1, 0, 0, 0, 2242,
+		2243, 1, 0, 0, 0, 2243, 2244, 1, 0, 0, 0, 2244, 2247, 5, 86, 0, 0, 2245, 2246, 5, 117, 0, 0, 2246, 2248, 3, 184, 92,
+		0, 2247, 2245, 1, 0, 0, 0, 2247, 2248, 1, 0, 0, 0, 2248, 2249, 1, 0, 0, 0, 2249, 2250, 5, 150, 0, 0, 2250, 353, 1,
+		0, 0, 0, 2251, 2252, 5, 72, 0, 0, 2252, 2253, 5, 143, 0, 0, 2253, 2258, 3, 286, 143, 0, 2254, 2255, 5, 150, 0, 0,
+		2255, 2257, 3, 286, 143, 0, 2256, 2254, 1, 0, 0, 0, 2257, 2260, 1, 0, 0, 0, 2258, 2256, 1, 0, 0, 0, 2258, 2259, 1,
+		0, 0, 0, 2259, 2262, 1, 0, 0, 0, 2260, 2258, 1, 0, 0, 0, 2261, 2263, 5, 150, 0, 0, 2262, 2261, 1, 0, 0, 0, 2262,
+		2263, 1, 0, 0, 0, 2263, 2264, 1, 0, 0, 0, 2264, 2265, 5, 144, 0, 0, 2265, 2266, 5, 150, 0, 0, 2266, 355, 1, 0, 0, 0,
+		2267, 2268, 5, 72, 0, 0, 2268, 2269, 5, 56, 0, 0, 2269, 2270, 5, 143, 0, 0, 2270, 2271, 3, 40, 20, 0, 2271, 2272, 5,
+		144, 0, 0, 2272, 357, 1, 0, 0, 0, 2273, 2285, 3, 318, 159, 0, 2274, 2285, 3, 306, 153, 0, 2275, 2285, 3, 10, 5, 0,
+		2276, 2285, 3, 220, 110, 0, 2277, 2285, 3, 390, 195, 0, 2278, 2285, 3, 492, 246, 0, 2279, 2285, 3, 18, 9, 0, 2280,
+		2281, 5, 143, 0, 0, 2281, 2282, 3, 184, 92, 0, 2282, 2283, 5, 144, 0, 0, 2283, 2285, 1, 0, 0, 0, 2284, 2273, 1, 0,
+		0, 0, 2284, 2274, 1, 0, 0, 0, 2284, 2275, 1, 0, 0, 0, 2284, 2276, 1, 0, 0, 0, 2284, 2277, 1, 0, 0, 0, 2284, 2278, 1,
+		0, 0, 0, 2284, 2279, 1, 0, 0, 0, 2284, 2280, 1, 0, 0, 0, 2285, 359, 1, 0, 0, 0, 2286, 2287, 5, 74, 0, 0, 2287, 2288,
+		3, 508, 254, 0, 2288, 361, 1, 0, 0, 0, 2289, 2290, 5, 74, 0, 0, 2290, 363, 1, 0, 0, 0, 2291, 2293, 3, 318, 159, 0,
+		2292, 2294, 3, 232, 116, 0, 2293, 2292, 1, 0, 0, 0, 2293, 2294, 1, 0, 0, 0, 2294, 2296, 1, 0, 0, 0, 2295, 2297, 3,
+		338, 169, 0, 2296, 2295, 1, 0, 0, 0, 2296, 2297, 1, 0, 0, 0, 2297, 365, 1, 0, 0, 0, 2298, 2299, 5, 163, 0, 0, 2299,
+		2301, 5, 149, 0, 0, 2300, 2298, 1, 0, 0, 0, 2300, 2301, 1, 0, 0, 0, 2301, 2302, 1, 0, 0, 0, 2302, 2303, 3, 364, 182,
+		0, 2303, 2304, 5, 150, 0, 0, 2304, 367, 1, 0, 0, 0, 2305, 2306, 5, 75, 0, 0, 2306, 2314, 5, 163, 0, 0, 2307, 2309,
+		5, 71, 0, 0, 2308, 2307, 1, 0, 0, 0, 2308, 2309, 1, 0, 0, 0, 2309, 2310, 1, 0, 0, 0, 2310, 2311, 5, 143, 0, 0, 2311,
+		2312, 3, 214, 107, 0, 2312, 2313, 5, 144, 0, 0, 2313, 2315, 1, 0, 0, 0, 2314, 2308, 1, 0, 0, 0, 2314, 2315, 1, 0, 0,
+		0, 2315, 369, 1, 0, 0, 0, 2316, 2334, 3, 472, 236, 0, 2317, 2334, 3, 470, 235, 0, 2318, 2334, 3, 476, 238, 0, 2319,
+		2334, 3, 330, 165, 0, 2320, 2334, 3, 326, 163, 0, 2321, 2334, 3, 334, 167, 0, 2322, 2334, 3, 494, 247, 0, 2323,
+		2334, 3, 482, 241, 0, 2324, 2334, 3, 114, 57, 0, 2325, 2334, 3, 508, 254, 0, 2326, 2334, 3, 198, 99, 0, 2327, 2334,
+		3, 12, 6, 0, 2328, 2334, 3, 42, 21, 0, 2329, 2334, 3, 46, 23, 0, 2330, 2334, 3, 502, 251, 0, 2331, 2334, 3, 238,
+		119, 0, 2332, 2334, 3, 236, 118, 0, 2333, 2316, 1, 0, 0, 0, 2333, 2317, 1, 0, 0, 0, 2333, 2318, 1, 0, 0, 0, 2333,
+		2319, 1, 0, 0, 0, 2333, 2320, 1, 0, 0, 0, 2333, 2321, 1, 0, 0, 0, 2333, 2322, 1, 0, 0, 0, 2333, 2323, 1, 0, 0, 0,
+		2333, 2324, 1, 0, 0, 0, 2333, 2325, 1, 0, 0, 0, 2333, 2326, 1, 0, 0, 0, 2333, 2327, 1, 0, 0, 0, 2333, 2328, 1, 0, 0,
+		0, 2333, 2329, 1, 0, 0, 0, 2333, 2330, 1, 0, 0, 0, 2333, 2331, 1, 0, 0, 0, 2333, 2332, 1, 0, 0, 0, 2334, 371, 1, 0,
+		0, 0, 2335, 2338, 3, 440, 220, 0, 2336, 2338, 5, 10, 0, 0, 2337, 2335, 1, 0, 0, 0, 2337, 2336, 1, 0, 0, 0, 2338,
+		373, 1, 0, 0, 0, 2339, 2340, 5, 163, 0, 0, 2340, 2342, 5, 149, 0, 0, 2341, 2339, 1, 0, 0, 0, 2341, 2342, 1, 0, 0, 0,
+		2342, 2343, 1, 0, 0, 0, 2343, 2348, 5, 76, 0, 0, 2344, 2345, 5, 143, 0, 0, 2345, 2346, 3, 372, 186, 0, 2346, 2347,
+		5, 144, 0, 0, 2347, 2349, 1, 0, 0, 0, 2348, 2344, 1, 0, 0, 0, 2348, 2349, 1, 0, 0, 0, 2349, 2351, 1, 0, 0, 0, 2350,
+		2352, 5, 50, 0, 0, 2351, 2350, 1, 0, 0, 0, 2351, 2352, 1, 0, 0, 0, 2352, 2356, 1, 0, 0, 0, 2353, 2355, 3, 370, 185,
+		0, 2354, 2353, 1, 0, 0, 0, 2355, 2358, 1, 0, 0, 0, 2356, 2354, 1, 0, 0, 0, 2356, 2357, 1, 0, 0, 0, 2357, 2359, 1, 0,
+		0, 0, 2358, 2356, 1, 0, 0, 0, 2359, 2363, 5, 17, 0, 0, 2360, 2362, 3, 444, 222, 0, 2361, 2360, 1, 0, 0, 0, 2362,
+		2365, 1, 0, 0, 0, 2363, 2361, 1, 0, 0, 0, 2363, 2364, 1, 0, 0, 0, 2364, 2366, 1, 0, 0, 0, 2365, 2363, 1, 0, 0, 0,
+		2366, 2367, 5, 33, 0, 0, 2367, 2369, 5, 76, 0, 0, 2368, 2370, 5, 163, 0, 0, 2369, 2368, 1, 0, 0, 0, 2369, 2370, 1,
+		0, 0, 0, 2370, 2371, 1, 0, 0, 0, 2371, 2372, 5, 150, 0, 0, 2372, 375, 1, 0, 0, 0, 2373, 2374, 5, 163, 0, 0, 2374,
+		2376, 5, 149, 0, 0, 2375, 2373, 1, 0, 0, 0, 2375, 2376, 1, 0, 0, 0, 2376, 2377, 1, 0, 0, 0, 2377, 2378, 5, 73, 0, 0,
+		2378, 2383, 5, 76, 0, 0, 2379, 2380, 5, 143, 0, 0, 2380, 2381, 3, 440, 220, 0, 2381, 2382, 5, 144, 0, 0, 2382, 2384,
+		1, 0, 0, 0, 2383, 2379, 1, 0, 0, 0, 2383, 2384, 1, 0, 0, 0, 2384, 2386, 1, 0, 0, 0, 2385, 2387, 5, 50, 0, 0, 2386,
+		2385, 1, 0, 0, 0, 2386, 2387, 1, 0, 0, 0, 2387, 2391, 1, 0, 0, 0, 2388, 2390, 3, 370, 185, 0, 2389, 2388, 1, 0, 0,
+		0, 2390, 2393, 1, 0, 0, 0, 2391, 2389, 1, 0, 0, 0, 2391, 2392, 1, 0, 0, 0, 2392, 2394, 1, 0, 0, 0, 2393, 2391, 1, 0,
+		0, 0, 2394, 2398, 5, 17, 0, 0, 2395, 2397, 3, 444, 222, 0, 2396, 2395, 1, 0, 0, 0, 2397, 2400, 1, 0, 0, 0, 2398,
+		2396, 1, 0, 0, 0, 2398, 2399, 1, 0, 0, 0, 2399, 2401, 1, 0, 0, 0, 2400, 2398, 1, 0, 0, 0, 2401, 2403, 5, 33, 0, 0,
+		2402, 2404, 5, 73, 0, 0, 2403, 2402, 1, 0, 0, 0, 2403, 2404, 1, 0, 0, 0, 2404, 2405, 1, 0, 0, 0, 2405, 2407, 5, 76,
+		0, 0, 2406, 2408, 5, 163, 0, 0, 2407, 2406, 1, 0, 0, 0, 2407, 2408, 1, 0, 0, 0, 2408, 2409, 1, 0, 0, 0, 2409, 2410,
+		5, 150, 0, 0, 2410, 377, 1, 0, 0, 0, 2411, 2412, 5, 77, 0, 0, 2412, 2416, 5, 19, 0, 0, 2413, 2415, 3, 380, 190, 0,
+		2414, 2413, 1, 0, 0, 0, 2415, 2418, 1, 0, 0, 0, 2416, 2414, 1, 0, 0, 0, 2416, 2417, 1, 0, 0, 0, 2417, 2419, 1, 0, 0,
+		0, 2418, 2416, 1, 0, 0, 0, 2419, 2420, 5, 33, 0, 0, 2420, 2421, 5, 77, 0, 0, 2421, 2423, 5, 19, 0, 0, 2422, 2424, 5,
+		163, 0, 0, 2423, 2422, 1, 0, 0, 0, 2423, 2424, 1, 0, 0, 0, 2424, 379, 1, 0, 0, 0, 2425, 2443, 3, 472, 236, 0, 2426,
+		2443, 3, 470, 235, 0, 2427, 2443, 3, 476, 238, 0, 2428, 2443, 3, 330, 165, 0, 2429, 2443, 3, 326, 163, 0, 2430,
+		2443, 3, 334, 167, 0, 2431, 2443, 3, 494, 247, 0, 2432, 2443, 3, 482, 241, 0, 2433, 2443, 3, 114, 57, 0, 2434, 2443,
+		3, 508, 254, 0, 2435, 2443, 3, 198, 99, 0, 2436, 2443, 3, 12, 6, 0, 2437, 2443, 3, 42, 21, 0, 2438, 2443, 3, 46, 23,
+		0, 2439, 2443, 3, 502, 251, 0, 2440, 2443, 3, 238, 119, 0, 2441, 2443, 3, 236, 118, 0, 2442, 2425, 1, 0, 0, 0, 2442,
+		2426, 1, 0, 0, 0, 2442, 2427, 1, 0, 0, 0, 2442, 2428, 1, 0, 0, 0, 2442, 2429, 1, 0, 0, 0, 2442, 2430, 1, 0, 0, 0,
+		2442, 2431, 1, 0, 0, 0, 2442, 2432, 1, 0, 0, 0, 2442, 2433, 1, 0, 0, 0, 2442, 2434, 1, 0, 0, 0, 2442, 2435, 1, 0, 0,
+		0, 2442, 2436, 1, 0, 0, 0, 2442, 2437, 1, 0, 0, 0, 2442, 2438, 1, 0, 0, 0, 2442, 2439, 1, 0, 0, 0, 2442, 2440, 1, 0,
+		0, 0, 2442, 2441, 1, 0, 0, 0, 2443, 381, 1, 0, 0, 0, 2444, 2448, 5, 77, 0, 0, 2445, 2447, 3, 384, 192, 0, 2446,
+		2445, 1, 0, 0, 0, 2447, 2450, 1, 0, 0, 0, 2448, 2446, 1, 0, 0, 0, 2448, 2449, 1, 0, 0, 0, 2449, 2451, 1, 0, 0, 0,
+		2450, 2448, 1, 0, 0, 0, 2451, 2452, 5, 33, 0, 0, 2452, 2454, 5, 77, 0, 0, 2453, 2455, 5, 163, 0, 0, 2454, 2453, 1,
+		0, 0, 0, 2454, 2455, 1, 0, 0, 0, 2455, 383, 1, 0, 0, 0, 2456, 2463, 3, 472, 236, 0, 2457, 2463, 3, 476, 238, 0,
+		2458, 2463, 3, 360, 180, 0, 2459, 2463, 3, 12, 6, 0, 2460, 2463, 3, 46, 23, 0, 2461, 2463, 3, 502, 251, 0, 2462,
+		2456, 1, 0, 0, 0, 2462, 2457, 1, 0, 0, 0, 2462, 2458, 1, 0, 0, 0, 2462, 2459, 1, 0, 0, 0, 2462, 2460, 1, 0, 0, 0,
+		2462, 2461, 1, 0, 0, 0, 2463, 385, 1, 0, 0, 0, 2464, 2467, 3, 382, 191, 0, 2465, 2467, 3, 378, 189, 0, 2466, 2464,
+		1, 0, 0, 0, 2466, 2465, 1, 0, 0, 0, 2467, 387, 1, 0, 0, 0, 2468, 2469, 5, 59, 0, 0, 2469, 2471, 3, 318, 159, 0,
+		2470, 2472, 3, 232, 116, 0, 2471, 2470, 1, 0, 0, 0, 2471, 2472, 1, 0, 0, 0, 2472, 389, 1, 0, 0, 0, 2473, 2474, 3,
+		318, 159, 0, 2474, 2481, 5, 157, 0, 0, 2475, 2482, 1, 0, 0, 0, 2476, 2477, 5, 143, 0, 0, 2477, 2478, 3, 184, 92, 0,
+		2478, 2479, 5, 144, 0, 0, 2479, 2482, 1, 0, 0, 0, 2480, 2482, 3, 10, 5, 0, 2481, 2475, 1, 0, 0, 0, 2481, 2476, 1, 0,
+		0, 0, 2481, 2480, 1, 0, 0, 0, 2482, 391, 1, 0, 0, 0, 2483, 2487, 3, 318, 159, 0, 2484, 2487, 3, 460, 230, 0, 2485,
+		2487, 3, 184, 92, 0, 2486, 2483, 1, 0, 0, 0, 2486, 2484, 1, 0, 0, 0, 2486, 2485, 1, 0, 0, 0, 2487, 393, 1, 0, 0, 0,
+		2488, 2489, 5, 79, 0, 0, 2489, 2490, 3, 392, 196, 0, 2490, 395, 1, 0, 0, 0, 2491, 2492, 5, 143, 0, 0, 2492, 2497, 3,
+		398, 199, 0, 2493, 2494, 5, 151, 0, 0, 2494, 2496, 3, 398, 199, 0, 2495, 2493, 1, 0, 0, 0, 2496, 2499, 1, 0, 0, 0,
+		2497, 2495, 1, 0, 0, 0, 2497, 2498, 1, 0, 0, 0, 2498, 2500, 1, 0, 0, 0, 2499, 2497, 1, 0, 0, 0, 2500, 2501, 5, 144,
+		0, 0, 2501, 397, 1, 0, 0, 0, 2502, 2503, 5, 163, 0, 0, 2503, 2504, 3, 146, 73, 0, 2504, 399, 1, 0, 0, 0, 2505, 2510,
+		5, 163, 0, 0, 2506, 2507, 5, 151, 0, 0, 2507, 2509, 5, 163, 0, 0, 2508, 2506, 1, 0, 0, 0, 2509, 2512, 1, 0, 0, 0,
+		2510, 2508, 1, 0, 0, 0, 2510, 2511, 1, 0, 0, 0, 2511, 401, 1, 0, 0, 0, 2512, 2510, 1, 0, 0, 0, 2513, 2514, 5, 163,
+		0, 0, 2514, 2515, 3, 414, 207, 0, 2515, 403, 1, 0, 0, 0, 2516, 2521, 3, 402, 201, 0, 2517, 2518, 5, 151, 0, 0, 2518,
+		2520, 3, 402, 201, 0, 2519, 2517, 1, 0, 0, 0, 2520, 2523, 1, 0, 0, 0, 2521, 2519, 1, 0, 0, 0, 2521, 2522, 1, 0, 0,
+		0, 2522, 405, 1, 0, 0, 0, 2523, 2521, 1, 0, 0, 0, 2524, 2528, 5, 80, 0, 0, 2525, 2527, 3, 148, 74, 0, 2526, 2525, 1,
+		0, 0, 0, 2527, 2530, 1, 0, 0, 0, 2528, 2526, 1, 0, 0, 0, 2528, 2529, 1, 0, 0, 0, 2529, 2531, 1, 0, 0, 0, 2530, 2528,
+		1, 0, 0, 0, 2531, 2532, 5, 33, 0, 0, 2532, 2534, 5, 80, 0, 0, 2533, 2535, 5, 163, 0, 0, 2534, 2533, 1, 0, 0, 0,
+		2534, 2535, 1, 0, 0, 0, 2535, 407, 1, 0, 0, 0, 2536, 2537, 5, 110, 0, 0, 2537, 2540, 3, 318, 159, 0, 2538, 2539, 5,
+		64, 0, 0, 2539, 2541, 3, 484, 242, 0, 2540, 2538, 1, 0, 0, 0, 2540, 2541, 1, 0, 0, 0, 2541, 409, 1, 0, 0, 0, 2542,
+		2543, 5, 156, 0, 0, 2543, 2545, 5, 153, 0, 0, 2544, 2542, 1, 0, 0, 0, 2545, 2548, 1, 0, 0, 0, 2546, 2544, 1, 0, 0,
+		0, 2546, 2547, 1, 0, 0, 0, 2547, 2549, 1, 0, 0, 0, 2548, 2546, 1, 0, 0, 0, 2549, 2550, 3, 342, 171, 0, 2550, 411, 1,
+		0, 0, 0, 2551, 2552, 5, 163, 0, 0, 2552, 2554, 5, 149, 0, 0, 2553, 2551, 1, 0, 0, 0, 2553, 2554, 1, 0, 0, 0, 2554,
+		2555, 1, 0, 0, 0, 2555, 2556, 5, 85, 0, 0, 2556, 2559, 3, 184, 92, 0, 2557, 2558, 5, 91, 0, 0, 2558, 2560, 3, 184,
+		92, 0, 2559, 2557, 1, 0, 0, 0, 2559, 2560, 1, 0, 0, 0, 2560, 2561, 1, 0, 0, 0, 2561, 2562, 5, 150, 0, 0, 2562, 413,
+		1, 0, 0, 0, 2563, 2569, 3, 318, 159, 0, 2564, 2565, 5, 143, 0, 0, 2565, 2566, 3, 156, 78, 0, 2566, 2567, 5, 144, 0,
+		0, 2567, 2569, 1, 0, 0, 0, 2568, 2563, 1, 0, 0, 0, 2568, 2564, 1, 0, 0, 0, 2569, 415, 1, 0, 0, 0, 2570, 2573, 3,
+		352, 176, 0, 2571, 2573, 3, 504, 252, 0, 2572, 2570, 1, 0, 0, 0, 2572, 2571, 1, 0, 0, 0, 2573, 417, 1, 0, 0, 0,
+		2574, 2575, 5, 142, 0, 0, 2575, 419, 1, 0, 0, 0, 2576, 2581, 3, 180, 90, 0, 2577, 2581, 3, 266, 133, 0, 2578, 2581,
+		3, 208, 104, 0, 2579, 2581, 3, 350, 175, 0, 2580, 2576, 1, 0, 0, 0, 2580, 2577, 1, 0, 0, 0, 2580, 2578, 1, 0, 0, 0,
+		2580, 2579, 1, 0, 0, 0, 2581, 421, 1, 0, 0, 0, 2582, 2583, 5, 163, 0, 0, 2583, 2585, 5, 121, 0, 0, 2584, 2586, 5,
+		159, 0, 0, 2585, 2584, 1, 0, 0, 0, 2585, 2586, 1, 0, 0, 0, 2586, 2587, 1, 0, 0, 0, 2587, 2588, 5, 163, 0, 0, 2588,
+		2589, 5, 150, 0, 0, 2589, 423, 1, 0, 0, 0, 2590, 2591, 3, 184, 92, 0, 2591, 2592, 5, 117, 0, 0, 2592, 2593, 3, 68,
+		34, 0, 2593, 2594, 5, 151, 0, 0, 2594, 2596, 1, 0, 0, 0, 2595, 2590, 1, 0, 0, 0, 2596, 2599, 1, 0, 0, 0, 2597, 2595,
+		1, 0, 0, 0, 2597, 2598, 1, 0, 0, 0, 2598, 2600, 1, 0, 0, 0, 2599, 2597, 1, 0, 0, 0, 2600, 2601, 3, 184, 92, 0, 2601,
+		2602, 5, 117, 0, 0, 2602, 2603, 3, 68, 34, 0, 2603, 425, 1, 0, 0, 0, 2604, 2605, 5, 116, 0, 0, 2605, 2606, 3, 184,
+		92, 0, 2606, 2608, 5, 90, 0, 0, 2607, 2609, 5, 154, 0, 0, 2608, 2607, 1, 0, 0, 0, 2608, 2609, 1, 0, 0, 0, 2609,
+		2610, 1, 0, 0, 0, 2610, 2611, 3, 488, 244, 0, 2611, 2612, 5, 140, 0, 0, 2612, 2613, 5, 38, 0, 0, 2613, 2614, 7, 15,
+		0, 0, 2614, 2615, 3, 424, 212, 0, 2615, 2616, 5, 150, 0, 0, 2616, 427, 1, 0, 0, 0, 2617, 2620, 5, 163, 0, 0, 2618,
+		2619, 5, 153, 0, 0, 2619, 2621, 5, 163, 0, 0, 2620, 2618, 1, 0, 0, 0, 2621, 2622, 1, 0, 0, 0, 2622, 2620, 1, 0, 0,
+		0, 2622, 2623, 1, 0, 0, 0, 2623, 2635, 1, 0, 0, 0, 2624, 2629, 5, 163, 0, 0, 2625, 2626, 5, 153, 0, 0, 2626, 2628,
+		5, 163, 0, 0, 2627, 2625, 1, 0, 0, 0, 2628, 2631, 1, 0, 0, 0, 2629, 2627, 1, 0, 0, 0, 2629, 2630, 1, 0, 0, 0, 2630,
+		2632, 1, 0, 0, 0, 2631, 2629, 1, 0, 0, 0, 2632, 2633, 5, 153, 0, 0, 2633, 2635, 5, 10, 0, 0, 2634, 2617, 1, 0, 0, 0,
+		2634, 2624, 1, 0, 0, 0, 2635, 429, 1, 0, 0, 0, 2636, 2639, 3, 434, 217, 0, 2637, 2639, 3, 426, 213, 0, 2638, 2636,
+		1, 0, 0, 0, 2638, 2637, 1, 0, 0, 0, 2639, 431, 1, 0, 0, 0, 2640, 2641, 5, 116, 0, 0, 2641, 2642, 3, 184, 92, 0,
+		2642, 2644, 5, 90, 0, 0, 2643, 2645, 5, 154, 0, 0, 2644, 2643, 1, 0, 0, 0, 2644, 2645, 1, 0, 0, 0, 2645, 2646, 1, 0,
+		0, 0, 2646, 2647, 3, 488, 244, 0, 2647, 2648, 5, 141, 0, 0, 2648, 2649, 3, 424, 212, 0, 2649, 2650, 5, 150, 0, 0,
+		2650, 433, 1, 0, 0, 0, 2651, 2652, 5, 116, 0, 0, 2652, 2653, 3, 184, 92, 0, 2653, 2655, 5, 90, 0, 0, 2654, 2656, 5,
+		154, 0, 0, 2655, 2654, 1, 0, 0, 0, 2655, 2656, 1, 0, 0, 0, 2656, 2657, 1, 0, 0, 0, 2657, 2658, 3, 488, 244, 0, 2658,
+		2659, 5, 140, 0, 0, 2659, 2660, 3, 126, 63, 0, 2660, 2661, 3, 436, 218, 0, 2661, 2662, 5, 150, 0, 0, 2662, 435, 1,
+		0, 0, 0, 2663, 2664, 3, 512, 256, 0, 2664, 2665, 5, 117, 0, 0, 2665, 2666, 3, 68, 34, 0, 2666, 2667, 5, 151, 0, 0,
+		2667, 2669, 1, 0, 0, 0, 2668, 2663, 1, 0, 0, 0, 2669, 2672, 1, 0, 0, 0, 2670, 2668, 1, 0, 0, 0, 2670, 2671, 1, 0, 0,
+		0, 2671, 2673, 1, 0, 0, 0, 2672, 2670, 1, 0, 0, 0, 2673, 2674, 3, 512, 256, 0, 2674, 2675, 5, 117, 0, 0, 2675, 2676,
+		3, 68, 34, 0, 2676, 437, 1, 0, 0, 0, 2677, 2678, 5, 65, 0, 0, 2678, 2679, 3, 440, 220, 0, 2679, 439, 1, 0, 0, 0,
+		2680, 2685, 3, 318, 159, 0, 2681, 2682, 5, 151, 0, 0, 2682, 2684, 3, 318, 159, 0, 2683, 2681, 1, 0, 0, 0, 2684,
+		2687, 1, 0, 0, 0, 2685, 2683, 1, 0, 0, 0, 2685, 2686, 1, 0, 0, 0, 2686, 441, 1, 0, 0, 0, 2687, 2685, 1, 0, 0, 0,
+		2688, 2689, 5, 163, 0, 0, 2689, 2691, 5, 149, 0, 0, 2690, 2688, 1, 0, 0, 0, 2690, 2691, 1, 0, 0, 0, 2691, 2692, 1,
+		0, 0, 0, 2692, 2694, 5, 18, 0, 0, 2693, 2695, 5, 50, 0, 0, 2694, 2693, 1, 0, 0, 0, 2694, 2695, 1, 0, 0, 0, 2695,
+		2699, 1, 0, 0, 0, 2696, 2698, 3, 370, 185, 0, 2697, 2696, 1, 0, 0, 0, 2698, 2701, 1, 0, 0, 0, 2699, 2697, 1, 0, 0,
+		0, 2699, 2700, 1, 0, 0, 0, 2700, 2702, 1, 0, 0, 0, 2701, 2699, 1, 0, 0, 0, 2702, 2706, 5, 17, 0, 0, 2703, 2705, 3,
+		444, 222, 0, 2704, 2703, 1, 0, 0, 0, 2705, 2708, 1, 0, 0, 0, 2706, 2704, 1, 0, 0, 0, 2706, 2707, 1, 0, 0, 0, 2707,
+		2709, 1, 0, 0, 0, 2708, 2706, 1, 0, 0, 0, 2709, 2711, 5, 33, 0, 0, 2710, 2712, 5, 18, 0, 0, 2711, 2710, 1, 0, 0, 0,
+		2711, 2712, 1, 0, 0, 0, 2712, 2714, 1, 0, 0, 0, 2713, 2715, 5, 163, 0, 0, 2714, 2713, 1, 0, 0, 0, 2714, 2715, 1, 0,
+		0, 0, 2715, 2716, 1, 0, 0, 0, 2716, 2717, 5, 150, 0, 0, 2717, 443, 1, 0, 0, 0, 2718, 2733, 3, 510, 255, 0, 2719,
+		2733, 3, 36, 18, 0, 2720, 2733, 3, 412, 206, 0, 2721, 2733, 3, 446, 223, 0, 2722, 2733, 3, 506, 253, 0, 2723, 2733,
+		3, 366, 183, 0, 2724, 2733, 3, 246, 123, 0, 2725, 2733, 3, 62, 31, 0, 2726, 2733, 3, 308, 154, 0, 2727, 2733, 3,
+		320, 160, 0, 2728, 2733, 3, 182, 91, 0, 2729, 2733, 3, 416, 208, 0, 2730, 2733, 3, 322, 161, 0, 2731, 2733, 3, 442,
+		221, 0, 2732, 2718, 1, 0, 0, 0, 2732, 2719, 1, 0, 0, 0, 2732, 2720, 1, 0, 0, 0, 2732, 2721, 1, 0, 0, 0, 2732, 2722,
+		1, 0, 0, 0, 2732, 2723, 1, 0, 0, 0, 2732, 2724, 1, 0, 0, 0, 2732, 2725, 1, 0, 0, 0, 2732, 2726, 1, 0, 0, 0, 2732,
+		2727, 1, 0, 0, 0, 2732, 2728, 1, 0, 0, 0, 2732, 2729, 1, 0, 0, 0, 2732, 2730, 1, 0, 0, 0, 2732, 2731, 1, 0, 0, 0,
+		2733, 445, 1, 0, 0, 0, 2734, 2735, 5, 163, 0, 0, 2735, 2737, 5, 149, 0, 0, 2736, 2734, 1, 0, 0, 0, 2736, 2737, 1, 0,
+		0, 0, 2737, 2741, 1, 0, 0, 0, 2738, 2742, 3, 464, 232, 0, 2739, 2742, 3, 102, 51, 0, 2740, 2742, 3, 430, 215, 0,
+		2741, 2738, 1, 0, 0, 0, 2741, 2739, 1, 0, 0, 0, 2741, 2740, 1, 0, 0, 0, 2742, 447, 1, 0, 0, 0, 2743, 2744, 5, 93, 0,
+		0, 2744, 2745, 3, 242, 121, 0, 2745, 2746, 5, 149, 0, 0, 2746, 2748, 3, 484, 242, 0, 2747, 2749, 7, 16, 0, 0, 2748,
+		2747, 1, 0, 0, 0, 2748, 2749, 1, 0, 0, 0, 2749, 2752, 1, 0, 0, 0, 2750, 2751, 5, 141, 0, 0, 2751, 2753, 3, 184, 92,
+		0, 2752, 2750, 1, 0, 0, 0, 2752, 2753, 1, 0, 0, 0, 2753, 2754, 1, 0, 0, 0, 2754, 2755, 5, 150, 0, 0, 2755, 449, 1,
+		0, 0, 0, 2756, 2761, 3, 318, 159, 0, 2757, 2758, 5, 151, 0, 0, 2758, 2760, 3, 318, 159, 0, 2759, 2757, 1, 0, 0, 0,
+		2760, 2763, 1, 0, 0, 0, 2761, 2759, 1, 0, 0, 0, 2761, 2762, 1, 0, 0, 0, 2762, 2767, 1, 0, 0, 0, 2763, 2761, 1, 0, 0,
+		0, 2764, 2767, 5, 68, 0, 0, 2765, 2767, 5, 10, 0, 0, 2766, 2756, 1, 0, 0, 0, 2766, 2764, 1, 0, 0, 0, 2766, 2765, 1,
+		0, 0, 0, 2767, 451, 1, 0, 0, 0, 2768, 2777, 5, 145, 0, 0, 2769, 2774, 3, 318, 159, 0, 2770, 2771, 5, 151, 0, 0,
+		2771, 2773, 3, 318, 159, 0, 2772, 2770, 1, 0, 0, 0, 2773, 2776, 1, 0, 0, 0, 2774, 2772, 1, 0, 0, 0, 2774, 2775, 1,
+		0, 0, 0, 2775, 2778, 1, 0, 0, 0, 2776, 2774, 1, 0, 0, 0, 2777, 2769, 1, 0, 0, 0, 2777, 2778, 1, 0, 0, 0, 2778, 2781,
+		1, 0, 0, 0, 2779, 2780, 5, 86, 0, 0, 2780, 2782, 3, 318, 159, 0, 2781, 2779, 1, 0, 0, 0, 2781, 2782, 1, 0, 0, 0,
+		2782, 2783, 1, 0, 0, 0, 2783, 2784, 5, 146, 0, 0, 2784, 453, 1, 0, 0, 0, 2785, 2786, 5, 37, 0, 0, 2786, 2787, 3, 76,
+		38, 0, 2787, 2788, 3, 48, 24, 0, 2788, 2792, 5, 150, 0, 0, 2789, 2790, 5, 33, 0, 0, 2790, 2791, 5, 37, 0, 0, 2791,
+		2793, 5, 150, 0, 0, 2792, 2789, 1, 0, 0, 0, 2792, 2793, 1, 0, 0, 0, 2793, 455, 1, 0, 0, 0, 2794, 2795, 3, 488, 244,
+		0, 2795, 2796, 5, 140, 0, 0, 2796, 2797, 5, 38, 0, 0, 2797, 2798, 7, 15, 0, 0, 2798, 2799, 3, 100, 50, 0, 2799,
+		2800, 5, 150, 0, 0, 2800, 457, 1, 0, 0, 0, 2801, 2803, 3, 310, 155, 0, 2802, 2801, 1, 0, 0, 0, 2802, 2803, 1, 0, 0,
+		0, 2803, 2804, 1, 0, 0, 0, 2804, 2806, 3, 296, 148, 0, 2805, 2807, 5, 21, 0, 0, 2806, 2805, 1, 0, 0, 0, 2806, 2807,
+		1, 0, 0, 0, 2807, 2810, 1, 0, 0, 0, 2808, 2809, 5, 141, 0, 0, 2809, 2811, 3, 98, 49, 0, 2810, 2808, 1, 0, 0, 0,
+		2810, 2811, 1, 0, 0, 0, 2811, 459, 1, 0, 0, 0, 2812, 2813, 3, 184, 92, 0, 2813, 2814, 3, 134, 67, 0, 2814, 2815, 3,
+		184, 92, 0, 2815, 461, 1, 0, 0, 0, 2816, 2817, 3, 488, 244, 0, 2817, 2818, 5, 140, 0, 0, 2818, 2819, 7, 15, 0, 0,
+		2819, 2820, 5, 150, 0, 0, 2820, 463, 1, 0, 0, 0, 2821, 2825, 3, 466, 233, 0, 2822, 2825, 3, 456, 228, 0, 2823, 2825,
+		3, 462, 231, 0, 2824, 2821, 1, 0, 0, 0, 2824, 2822, 1, 0, 0, 0, 2824, 2823, 1, 0, 0, 0, 2825, 465, 1, 0, 0, 0, 2826,
+		2827, 3, 488, 244, 0, 2827, 2829, 5, 140, 0, 0, 2828, 2830, 3, 126, 63, 0, 2829, 2828, 1, 0, 0, 0, 2829, 2830, 1, 0,
+		0, 0, 2830, 2831, 1, 0, 0, 0, 2831, 2832, 3, 512, 256, 0, 2832, 2833, 5, 150, 0, 0, 2833, 467, 1, 0, 0, 0, 2834,
+		2835, 3, 488, 244, 0, 2835, 2836, 5, 141, 0, 0, 2836, 2837, 3, 100, 50, 0, 2837, 2838, 5, 150, 0, 0, 2838, 469, 1,
+		0, 0, 0, 2839, 2840, 3, 480, 240, 0, 2840, 2844, 5, 50, 0, 0, 2841, 2843, 3, 474, 237, 0, 2842, 2841, 1, 0, 0, 0,
+		2843, 2846, 1, 0, 0, 0, 2844, 2842, 1, 0, 0, 0, 2844, 2845, 1, 0, 0, 0, 2845, 2847, 1, 0, 0, 0, 2846, 2844, 1, 0, 0,
+		0, 2847, 2851, 5, 17, 0, 0, 2848, 2850, 3, 444, 222, 0, 2849, 2848, 1, 0, 0, 0, 2850, 2853, 1, 0, 0, 0, 2851, 2849,
+		1, 0, 0, 0, 2851, 2852, 1, 0, 0, 0, 2852, 2854, 1, 0, 0, 0, 2853, 2851, 1, 0, 0, 0, 2854, 2856, 5, 33, 0, 0, 2855,
+		2857, 3, 478, 239, 0, 2856, 2855, 1, 0, 0, 0, 2856, 2857, 1, 0, 0, 0, 2857, 2859, 1, 0, 0, 0, 2858, 2860, 3, 132,
+		66, 0, 2859, 2858, 1, 0, 0, 0, 2859, 2860, 1, 0, 0, 0, 2860, 2861, 1, 0, 0, 0, 2861, 2862, 5, 150, 0, 0, 2862, 471,
+		1, 0, 0, 0, 2863, 2864, 3, 480, 240, 0, 2864, 2865, 5, 150, 0, 0, 2865, 473, 1, 0, 0, 0, 2866, 2884, 3, 472, 236, 0,
+		2867, 2884, 3, 470, 235, 0, 2868, 2884, 3, 476, 238, 0, 2869, 2884, 3, 330, 165, 0, 2870, 2884, 3, 326, 163, 0,
+		2871, 2884, 3, 334, 167, 0, 2872, 2884, 3, 494, 247, 0, 2873, 2884, 3, 482, 241, 0, 2874, 2884, 3, 114, 57, 0, 2875,
+		2884, 3, 508, 254, 0, 2876, 2884, 3, 198, 99, 0, 2877, 2884, 3, 12, 6, 0, 2878, 2884, 3, 42, 21, 0, 2879, 2884, 3,
+		46, 23, 0, 2880, 2884, 3, 502, 251, 0, 2881, 2884, 3, 238, 119, 0, 2882, 2884, 3, 236, 118, 0, 2883, 2866, 1, 0, 0,
+		0, 2883, 2867, 1, 0, 0, 0, 2883, 2868, 1, 0, 0, 0, 2883, 2869, 1, 0, 0, 0, 2883, 2870, 1, 0, 0, 0, 2883, 2871, 1, 0,
+		0, 0, 2883, 2872, 1, 0, 0, 0, 2883, 2873, 1, 0, 0, 0, 2883, 2874, 1, 0, 0, 0, 2883, 2875, 1, 0, 0, 0, 2883, 2876, 1,
+		0, 0, 0, 2883, 2877, 1, 0, 0, 0, 2883, 2878, 1, 0, 0, 0, 2883, 2879, 1, 0, 0, 0, 2883, 2880, 1, 0, 0, 0, 2883, 2881,
+		1, 0, 0, 0, 2883, 2882, 1, 0, 0, 0, 2884, 475, 1, 0, 0, 0, 2885, 2886, 3, 478, 239, 0, 2886, 2887, 5, 163, 0, 0,
+		2887, 2888, 5, 50, 0, 0, 2888, 2889, 5, 59, 0, 0, 2889, 2891, 3, 318, 159, 0, 2890, 2892, 3, 452, 226, 0, 2891,
+		2890, 1, 0, 0, 0, 2891, 2892, 1, 0, 0, 0, 2892, 2894, 1, 0, 0, 0, 2893, 2895, 3, 232, 116, 0, 2894, 2893, 1, 0, 0,
+		0, 2894, 2895, 1, 0, 0, 0, 2895, 2896, 1, 0, 0, 0, 2896, 2897, 5, 150, 0, 0, 2897, 477, 1, 0, 0, 0, 2898, 2899, 7,
+		17, 0, 0, 2899, 479, 1, 0, 0, 0, 2900, 2903, 3, 368, 184, 0, 2901, 2903, 3, 222, 111, 0, 2902, 2900, 1, 0, 0, 0,
+		2902, 2901, 1, 0, 0, 0, 2903, 481, 1, 0, 0, 0, 2904, 2905, 5, 98, 0, 0, 2905, 2906, 5, 163, 0, 0, 2906, 2907, 5, 50,
+		0, 0, 2907, 2908, 3, 484, 242, 0, 2908, 2909, 5, 150, 0, 0, 2909, 483, 1, 0, 0, 0, 2910, 2912, 3, 414, 207, 0, 2911,
+		2910, 1, 0, 0, 0, 2911, 2912, 1, 0, 0, 0, 2912, 2913, 1, 0, 0, 0, 2913, 2915, 3, 318, 159, 0, 2914, 2916, 3, 118,
+		59, 0, 2915, 2914, 1, 0, 0, 0, 2915, 2916, 1, 0, 0, 0, 2916, 485, 1, 0, 0, 0, 2917, 2918, 7, 18, 0, 0, 2918, 487, 1,
+		0, 0, 0, 2919, 2922, 3, 318, 159, 0, 2920, 2922, 3, 10, 5, 0, 2921, 2919, 1, 0, 0, 0, 2921, 2920, 1, 0, 0, 0, 2922,
+		489, 1, 0, 0, 0, 2923, 2924, 5, 37, 0, 0, 2924, 2925, 3, 184, 92, 0, 2925, 491, 1, 0, 0, 0, 2926, 2927, 3, 318, 159,
+		0, 2927, 2928, 5, 143, 0, 0, 2928, 2929, 3, 184, 92, 0, 2929, 2930, 5, 144, 0, 0, 2930, 493, 1, 0, 0, 0, 2931, 2934,
+		3, 218, 109, 0, 2932, 2934, 3, 250, 125, 0, 2933, 2931, 1, 0, 0, 0, 2933, 2932, 1, 0, 0, 0, 2934, 495, 1, 0, 0, 0,
+		2935, 2942, 3, 420, 210, 0, 2936, 2942, 3, 78, 39, 0, 2937, 2942, 3, 4, 2, 0, 2938, 2942, 3, 204, 102, 0, 2939,
+		2942, 3, 386, 193, 0, 2940, 2942, 3, 388, 194, 0, 2941, 2935, 1, 0, 0, 0, 2941, 2936, 1, 0, 0, 0, 2941, 2937, 1, 0,
+		0, 0, 2941, 2938, 1, 0, 0, 0, 2941, 2939, 1, 0, 0, 0, 2941, 2940, 1, 0, 0, 0, 2942, 497, 1, 0, 0, 0, 2943, 2944, 5,
+		13, 0, 0, 2944, 2945, 5, 143, 0, 0, 2945, 2950, 3, 258, 129, 0, 2946, 2947, 5, 151, 0, 0, 2947, 2949, 3, 258, 129,
+		0, 2948, 2946, 1, 0, 0, 0, 2949, 2952, 1, 0, 0, 0, 2950, 2948, 1, 0, 0, 0, 2950, 2951, 1, 0, 0, 0, 2951, 2953, 1, 0,
+		0, 0, 2952, 2950, 1, 0, 0, 0, 2953, 2954, 5, 144, 0, 0, 2954, 2955, 5, 64, 0, 0, 2955, 2956, 3, 484, 242, 0, 2956,
+		499, 1, 0, 0, 0, 2957, 2958, 5, 104, 0, 0, 2958, 2959, 5, 50, 0, 0, 2959, 2960, 3, 252, 126, 0, 2960, 501, 1, 0, 0,
+		0, 2961, 2962, 5, 108, 0, 0, 2962, 2967, 3, 428, 214, 0, 2963, 2964, 5, 151, 0, 0, 2964, 2966, 3, 428, 214, 0, 2965,
+		2963, 1, 0, 0, 0, 2966, 2969, 1, 0, 0, 0, 2967, 2965, 1, 0, 0, 0, 2967, 2968, 1, 0, 0, 0, 2968, 2970, 1, 0, 0, 0,
+		2969, 2967, 1, 0, 0, 0, 2970, 2971, 5, 150, 0, 0, 2971, 503, 1, 0, 0, 0, 2972, 2973, 5, 163, 0, 0, 2973, 2975, 5,
+		149, 0, 0, 2974, 2972, 1, 0, 0, 0, 2974, 2975, 1, 0, 0, 0, 2975, 2976, 1, 0, 0, 0, 2976, 2977, 5, 86, 0, 0, 2977,
+		2978, 3, 100, 50, 0, 2978, 2979, 5, 150, 0, 0, 2979, 505, 1, 0, 0, 0, 2980, 2981, 5, 163, 0, 0, 2981, 2983, 5, 149,
+		0, 0, 2982, 2980, 1, 0, 0, 0, 2982, 2983, 1, 0, 0, 0, 2983, 2986, 1, 0, 0, 0, 2984, 2987, 3, 468, 234, 0, 2985,
+		2987, 3, 432, 216, 0, 2986, 2984, 1, 0, 0, 0, 2986, 2985, 1, 0, 0, 0, 2987, 507, 1, 0, 0, 0, 2988, 2990, 5, 92, 0,
+		0, 2989, 2988, 1, 0, 0, 0, 2989, 2990, 1, 0, 0, 0, 2990, 2991, 1, 0, 0, 0, 2991, 2992, 5, 109, 0, 0, 2992, 2993, 3,
+		242, 121, 0, 2993, 2994, 5, 149, 0, 0, 2994, 2996, 3, 484, 242, 0, 2995, 2997, 3, 232, 116, 0, 2996, 2995, 1, 0, 0,
+		0, 2996, 2997, 1, 0, 0, 0, 2997, 3000, 1, 0, 0, 0, 2998, 2999, 5, 141, 0, 0, 2999, 3001, 3, 184, 92, 0, 3000, 2998,
+		1, 0, 0, 0, 3000, 3001, 1, 0, 0, 0, 3001, 3002, 1, 0, 0, 0, 3002, 3003, 5, 150, 0, 0, 3003, 509, 1, 0, 0, 0, 3004,
+		3005, 5, 163, 0, 0, 3005, 3007, 5, 149, 0, 0, 3006, 3004, 1, 0, 0, 0, 3006, 3007, 1, 0, 0, 0, 3007, 3008, 1, 0, 0,
+		0, 3008, 3010, 5, 115, 0, 0, 3009, 3011, 3, 438, 219, 0, 3010, 3009, 1, 0, 0, 0, 3010, 3011, 1, 0, 0, 0, 3011, 3013,
+		1, 0, 0, 0, 3012, 3014, 3, 96, 48, 0, 3013, 3012, 1, 0, 0, 0, 3013, 3014, 1, 0, 0, 0, 3014, 3016, 1, 0, 0, 0, 3015,
+		3017, 3, 490, 245, 0, 3016, 3015, 1, 0, 0, 0, 3016, 3017, 1, 0, 0, 0, 3017, 3018, 1, 0, 0, 0, 3018, 3019, 5, 150, 0,
+		0, 3019, 511, 1, 0, 0, 0, 3020, 3025, 3, 514, 257, 0, 3021, 3022, 5, 151, 0, 0, 3022, 3024, 3, 514, 257, 0, 3023,
+		3021, 1, 0, 0, 0, 3024, 3027, 1, 0, 0, 0, 3025, 3023, 1, 0, 0, 0, 3025, 3026, 1, 0, 0, 0, 3026, 3030, 1, 0, 0, 0,
+		3027, 3025, 1, 0, 0, 0, 3028, 3030, 5, 105, 0, 0, 3029, 3020, 1, 0, 0, 0, 3029, 3028, 1, 0, 0, 0, 3030, 513, 1, 0,
+		0, 0, 3031, 3034, 3, 184, 92, 0, 3032, 3033, 5, 8, 0, 0, 3033, 3035, 3, 184, 92, 0, 3034, 3032, 1, 0, 0, 0, 3034,
+		3035, 1, 0, 0, 0, 3035, 3042, 1, 0, 0, 0, 3036, 3039, 5, 63, 0, 0, 3037, 3038, 5, 8, 0, 0, 3038, 3040, 3, 184, 92,
+		0, 3039, 3037, 1, 0, 0, 0, 3039, 3040, 1, 0, 0, 0, 3040, 3042, 1, 0, 0, 0, 3041, 3031, 1, 0, 0, 0, 3041, 3036, 1, 0,
+		0, 0, 3042, 515, 1, 0, 0, 0, 351, 526, 532, 540, 548, 557, 562, 573, 583, 590, 595, 598, 607, 612, 617, 620, 625,
+		629, 635, 637, 649, 656, 665, 671, 675, 679, 687, 696, 717, 720, 723, 730, 736, 765, 773, 775, 784, 787, 793, 795,
+		801, 803, 808, 815, 821, 828, 842, 847, 853, 861, 866, 876, 882, 889, 897, 900, 909, 912, 915, 919, 922, 930, 933,
+		944, 956, 959, 967, 970, 977, 980, 991, 994, 1001, 1004, 1009, 1014, 1017, 1027, 1032, 1037, 1040, 1045, 1056, 1064,
+		1068, 1073, 1088, 1093, 1103, 1109, 1112, 1119, 1123, 1127, 1135, 1148, 1156, 1161, 1169, 1177, 1185, 1188, 1193,
+		1200, 1217, 1231, 1237, 1246, 1250, 1257, 1264, 1269, 1275, 1281, 1284, 1289, 1296, 1299, 1303, 1306, 1330, 1334,
+		1341, 1346, 1356, 1368, 1375, 1379, 1383, 1393, 1413, 1415, 1420, 1425, 1451, 1458, 1468, 1492, 1496, 1501, 1507,
+		1513, 1520, 1526, 1539, 1544, 1550, 1555, 1562, 1567, 1572, 1576, 1581, 1586, 1589, 1598, 1602, 1615, 1627, 1642,
+		1657, 1665, 1673, 1681, 1687, 1691, 1696, 1702, 1710, 1719, 1724, 1731, 1734, 1739, 1745, 1760, 1764, 1772, 1782,
+		1790, 1794, 1801, 1806, 1814, 1819, 1824, 1832, 1842, 1847, 1853, 1863, 1867, 1882, 1887, 1893, 1896, 1905, 1909,
+		1913, 1919, 1923, 1926, 1931, 1936, 1942, 1950, 1962, 1969, 1973, 1976, 1982, 1988, 1997, 2007, 2013, 2027, 2039,
+		2051, 2059, 2061, 2063, 2068, 2072, 2076, 2082, 2089, 2098, 2104, 2107, 2128, 2134, 2139, 2144, 2147, 2169, 2177,
+		2188, 2195, 2210, 2221, 2232, 2238, 2242, 2247, 2258, 2262, 2284, 2293, 2296, 2300, 2308, 2314, 2333, 2337, 2341,
+		2348, 2351, 2356, 2363, 2369, 2375, 2383, 2386, 2391, 2398, 2403, 2407, 2416, 2423, 2442, 2448, 2454, 2462, 2466,
+		2471, 2481, 2486, 2497, 2510, 2521, 2528, 2534, 2540, 2546, 2553, 2559, 2568, 2572, 2580, 2585, 2597, 2608, 2622,
+		2629, 2634, 2638, 2644, 2655, 2670, 2685, 2690, 2694, 2699, 2706, 2711, 2714, 2732, 2736, 2741, 2748, 2752, 2761,
+		2766, 2774, 2777, 2781, 2792, 2802, 2806, 2810, 2824, 2829, 2844, 2851, 2856, 2859, 2883, 2891, 2894, 2902, 2911,
+		2915, 2921, 2933, 2941, 2950, 2967, 2974, 2982, 2986, 2989, 2996, 3000, 3006, 3010, 3013, 3016, 3025, 3029, 3034,
+		3039, 3041
+	)
+
+
+class VHDLParser(Parser):
+	grammarFileName = "VHDLParser.g4"
+
+	atn = ATNDeserializer().deserialize(serializedATN())
+
+	decisionsToDFA = [DFA(ds, i) for i, ds in enumerate(atn.decisionToState)]
+
+	sharedContextCache = PredictionContextCache()
+
+	literalNames = (
+		"<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", "'abs'", "'access'", "'after'",
+		"'alias'", "'all'", "'and'", "'architecture'", "'array'", "'assert'", "'attribute'", "'assume'", "'begin'",
+		"'block'", "'body'", "'buffer'", "'bus'", "'case'", "'component'", "'configuration'", "'constant'", "'context'",
+		"'cover'", "'default'", "'disconnect'", "'downto'", "'else'", "'elsif'", "'end'", "'entity'", "'exit'", "'file'",
+		"'for'", "'force'", "'function'", "'fairness'", "'generate'", "'generic'", "'guarded'", "'group'", "'if'",
+		"'impure'", "'in'", "'inertial'", "'inout'", "'is'", "'label'", "'library'", "'linkage'", "'loop'", "'literal'",
+		"'map'", "'mod'", "'nand'", "'new'", "'next'", "'nor'", "'not'", "'null'", "'of'", "'on'", "'open'", "'or'",
+		"'others'", "'out'", "'package'", "'parameter'", "'port'", "'postponed'", "'private'", "'procedure'", "'process'",
+		"'protected'", "'pure'", "'range'", "'record'", "'register'", "'reject'", "'release'", "'rem'", "'report'",
+		"'return'", "'rol'", "'ror'", "'restrict'", "'select'", "'severity'", "'shared'", "'signal'", "'sla'", "'sll'",
+		"'sra'", "'srl'", "'subtype'", "'strong'", "'sequence'", "'then'", "'to'", "'transport'", "'type'", "'unaffected'",
+		"'units'", "'until'", "'use'", "'variable'", "'view'", "'vpkg'", "'vmode'", "'vprop'", "'vunit'", "'wait'",
+		"'with'", "'when'", "'while'", "'xnor'", "'xor'", "'='", "'/='", "'<'", "'>'", "'>='", "'?='", "'?/='", "'?<'",
+		"'?<='", "'?>'", "'?>='", "'+'", "'-'", "'*'", "'/'", "'**'", "'&'", "'??'", "'=>'", "'<='", "':='", "'<>'", "'('",
+		"')'", "'['", "']'", "'<<'", "'>>'", "':'", "';'", "','", "'|'", "'.'", "'?'", "'@'", "'^'", "'''", "'\"'"
+	)
+
+	symbolicNames = (
+		"<INVALID>", "LINEBREAK", "WHITESPACE", "COMMENT_LINE", "COMMENT_BLOCK", "TOOLDIRECTIVE", "OP_ABS", "KW_ACCESS",
+		"KW_AFTER", "KW_ALIAS", "KW_ALL", "OP_AND", "KW_ARCHITECTURE", "KW_ARRAY", "KW_ASSERT", "KW_ATTRIBUTE",
+		"KW_PSL_ASSUME", "KW_BEGIN", "KW_BLOCK", "KW_BODY", "KW_BUFFER", "KW_BUS", "KW_CASE", "KW_COMPONENT",
+		"KW_CONFIGURATION", "KW_CONSTANT", "KW_CONTEXT", "KW_PSL_COVER", "KW_DEFAULT", "KW_DISCONNECT", "KW_DOWNTO",
+		"KW_ELSE", "KW_ELSIF", "KW_END", "KW_ENTITY", "KW_EXIT", "KW_FILE", "KW_FOR", "KW_FORCE", "KW_FUNCTION",
+		"KW_PSL_FAIRNESS", "KW_GENERATE", "KW_GENERIC", "KW_GUARDED", "KW_GROUP", "KW_IF", "KW_IMPURE", "KW_IN",
+		"KW_INERTIAL", "KW_INOUT", "KW_IS", "KW_LABEL", "KW_LIBRARY", "KW_LINKAGE", "KW_LOOP", "KW_PSL_LITERAL", "KW_MAP",
+		"OP_MOD", "OP_NAND", "KW_NEW", "KW_NEXT", "OP_NOR", "OP_NOT", "KW_NULL", "KW_OF", "KW_ON", "KW_OPEN", "OP_OR",
+		"KW_OTHERS", "KW_OUT", "KW_PACKAGE", "KW_PARAMETER", "KW_PORT", "KW_POSTPONED", "KW_PRIVATE", "KW_PROCEDURE",
+		"KW_PROCESS", "KW_PROTECTED", "KW_PURE", "KW_RANGE", "KW_RECORD", "KW_REGISTER", "KW_REJECT", "KW_RELEASE",
+		"OP_REM", "KW_REPORT", "KW_RETURN", "OP_ROL", "OP_ROR", "KW_PSL_RESTRICT", "KW_SELECT", "KW_SEVERITY", "KW_SHARED",
+		"KW_SIGNAL", "OP_SLA", "OP_SLL", "OP_SRA", "OP_SRL", "KW_SUBTYPE", "KW_PSL_STRONG", "KW_PSL_SEQUENCE", "KW_THEN",
+		"KW_TO", "KW_TRANSPORT", "KW_TYPE", "KW_UNAFFECTED", "KW_UNITS", "KW_UNTIL", "KW_USE", "KW_VARIABLE", "KW_VIEW",
+		"KW_PSL_VPKG", "KW_PSL_VMODE", "KW_PSL_VPROP", "KW_PSL_VUNIT", "KW_WAIT", "KW_WITH", "KW_WHEN", "KW_WHILE",
+		"OP_XNOR", "OP_XOR", "OP_EQ", "OP_NE", "OP_LT", "OP_GT", "OP_GE", "OP_IEQ", "OP_INE", "OP_ILT", "OP_ILE", "OP_IGT",
+		"OP_IGE", "OP_PLUS", "OP_MINUS", "OP_MUL", "OP_DIV", "OP_POW", "OP_CONCAT", "OP_CONDITION", "TOK_RARROW",
+		"TOK_SIG_ASSIGN", "TOK_VAR_ASSIGN", "TOK_BOX", "TOK_LP", "TOK_RP", "TOK_LB", "TOK_RB", "TOK_DLA", "TOK_DRA",
+		"TOK_COLON", "TOK_SEMICOL", "TOK_COMMA", "TOK_BAR", "TOK_DOT", "TOK_QUESTION", "TOK_AT", "TOK_CIRCUMFLEX",
+		"TOK_TICK", "TOK_DQUOTE", "LIT_ABSTRACT", "LIT_BIT_STRING", "LIT_CHARACTER", "LIT_STRING", "LIT_IDENTIFIER"
+	)
+
+	RULE_rule_AbsolutePathname = 0
+	RULE_rule_AccessIncompleteTypeDefinition = 1
+	RULE_rule_AccessTypeDefinition = 2
+	RULE_rule_ActualDesignator = 3
+	RULE_rule_ActualPart = 4
+	RULE_rule_Aggregate = 5
+	RULE_rule_AliasDeclaration = 6
+	RULE_rule_AliasDesignator = 7
+	RULE_rule_AliasIndication = 8
+	RULE_rule_Allocator = 9
+	RULE_rule_Architecture = 10
+	RULE_rule_ArchitectureStatement = 11
+	RULE_rule_ArrayConstraint = 12
+	RULE_rule_ArrayIncompleteTypeDefinition = 13
+	RULE_rule_ArrayIndexIncompleteType = 14
+	RULE_rule_ArrayIndexIncompleteTypeList = 15
+	RULE_rule_ArrayModeViewIndication = 16
+	RULE_rule_Assertion = 17
+	RULE_rule_AssertionStatement = 18
+	RULE_rule_AssociationElement = 19
+	RULE_rule_AssociationList = 20
+	RULE_rule_AttributeDeclaration = 21
+	RULE_rule_AttributeDesignator = 22
+	RULE_rule_AttributeSpecification = 23
+	RULE_rule_BindingIndication = 24
+	RULE_rule_BlockConfiguration = 25
+	RULE_rule_BlockDeclarativeItem = 26
+	RULE_rule_BlockSpecification = 27
+	RULE_rule_BlockStatement = 28
+	RULE_rule_CaseGenerateAlternative = 29
+	RULE_rule_CaseGenerateStatement = 30
+	RULE_rule_CaseStatement = 31
+	RULE_rule_CaseStatementAlternative = 32
+	RULE_rule_Choice = 33
+	RULE_rule_Choices = 34
+	RULE_rule_ComponentConfiguration = 35
+	RULE_rule_ComponentDeclaration = 36
+	RULE_rule_ComponentInstantiationStatement = 37
+	RULE_rule_ComponentSpecification = 38
+	RULE_rule_CompositeTypeDefinition = 39
+	RULE_rule_CompoundConfigurationSpecification = 40
+	RULE_rule_ConcurrentAssertionStatement = 41
+	RULE_rule_ConcurrentConditionalSignalAssignment = 42
+	RULE_rule_ConcurrentProcedureCallStatement = 43
+	RULE_rule_ConcurrentSelectedSignalAssignment = 44
+	RULE_rule_ConcurrentSignalAssignmentStatement = 45
+	RULE_rule_ConcurrentSimpleSignalAssignment = 46
+	RULE_rule_ConcurrentStatement = 47
+	RULE_rule_ConditionClause = 48
+	RULE_rule_ConditionalExpression = 49
+	RULE_rule_ConditionalOrUnaffectedExpression = 50
+	RULE_rule_ConditionalSignalAssignment = 51
+	RULE_rule_ConditionalWaveforms = 52
+	RULE_rule_ConfigurationDeclaration = 53
+	RULE_rule_ConfigurationDeclarativeItem = 54
+	RULE_rule_ConfigurationItem = 55
+	RULE_rule_ConfigurationSpecification = 56
+	RULE_rule_ConstantDeclaration = 57
+	RULE_rule_ConstrainedArrayDefinition = 58
+	RULE_rule_Constraint = 59
+	RULE_rule_ContextDeclaration = 60
+	RULE_rule_ContextItem = 61
+	RULE_rule_ContextReference = 62
+	RULE_rule_DelayMechanism = 63
+	RULE_rule_DesignFile = 64
+	RULE_rule_DesignUnit = 65
+	RULE_rule_Designator = 66
+	RULE_rule_Direction = 67
+	RULE_rule_DisconnectionSpecification = 68
+	RULE_rule_DiscreteRange = 69
+	RULE_rule_DiscreteIncompleteTypeDefinition = 70
+	RULE_rule_ElementArrayModeViewIndication = 71
+	RULE_rule_ElementAssociation = 72
+	RULE_rule_ElementConstraint = 73
+	RULE_rule_ElementDeclaration = 74
+	RULE_rule_ElementModeIndication = 75
+	RULE_rule_ElementModeViewIndication = 76
+	RULE_rule_ElementRecordModeViewIndication = 77
+	RULE_rule_ElementResolution = 78
+	RULE_rule_EntityAspect = 79
+	RULE_rule_EntityClass = 80
+	RULE_rule_EntityClassEntry = 81
+	RULE_rule_EntityDeclaration = 82
+	RULE_rule_EntityDeclarativeItem = 83
+	RULE_rule_EntityDesignator = 84
+	RULE_rule_EntityNameList = 85
+	RULE_rule_EntitySpecification = 86
+	RULE_rule_EntityStatement = 87
+	RULE_rule_EntityTag = 88
+	RULE_rule_EnumerationLiteral = 89
+	RULE_rule_EnumerationTypeDefinition = 90
+	RULE_rule_ExitStatement = 91
+	RULE_rule_Expression = 92
+	RULE_rule_ExpressionOrUnaffected = 93
+	RULE_rule_ExternalName = 94
+	RULE_rule_ExternalConstantName = 95
+	RULE_rule_ExternalSignalName = 96
+	RULE_rule_ExternalVariableName = 97
+	RULE_rule_ExternalPathname = 98
+	RULE_rule_FileDeclaration = 99
+	RULE_rule_FileIncompleteTypeDefinition = 100
+	RULE_rule_FileOpenInformation = 101
+	RULE_rule_FileTypeDefinition = 102
+	RULE_rule_FloatingIncompleteTypeDefinition = 103
+	RULE_rule_FloatingTypeDefinition = 104
+	RULE_rule_ForGenerateStatement = 105
+	RULE_rule_FormalDesignator = 106
+	RULE_rule_FormalParameterList = 107
+	RULE_rule_FormalPart = 108
+	RULE_rule_FullTypeDeclaration = 109
+	RULE_rule_FunctionCall = 110
+	RULE_rule_FunctionSpecification = 111
+	RULE_rule_GenerateSpecification = 112
+	RULE_rule_GenerateStatement = 113
+	RULE_rule_GenerateStatementBody = 114
+	RULE_rule_GenericClause = 115
+	RULE_rule_GenericMapAspect = 116
+	RULE_rule_GroupConstituent = 117
+	RULE_rule_GroupDeclaration = 118
+	RULE_rule_GroupTemplateDeclaration = 119
+	RULE_rule_GuardedSignalSpecification = 120
+	RULE_rule_IdentifierList = 121
+	RULE_rule_IfGenerateStatement = 122
+	RULE_rule_IfStatement = 123
+	RULE_rule_IncompleteSubtypeIndication = 124
+	RULE_rule_IncompleteTypeDeclaration = 125
+	RULE_rule_IncompleteTypeDefinition = 126
+	RULE_rule_IncompleteTypeMark = 127
+	RULE_rule_IndexConstraint = 128
+	RULE_rule_IndexSubtypeDefinition = 129
+	RULE_rule_InstantiatedUnit = 130
+	RULE_rule_InstantiationList = 131
+	RULE_rule_IntegerIncompleteTypeDefinition = 132
+	RULE_rule_IntegerTypeDefinition = 133
+	RULE_rule_InterfaceConstantDeclaration = 134
+	RULE_rule_InterfaceDeclaration = 135
+	RULE_rule_InterfaceElement = 136
+	RULE_rule_InterfaceFileDeclaration = 137
+	RULE_rule_InterfaceFunctionSpecification = 138
+	RULE_rule_InterfaceList = 139
+	RULE_rule_InterfacePackageDeclaration = 140
+	RULE_rule_InterfacePackageGenericMapAspect = 141
+	RULE_rule_InterfaceProcedureSpecification = 142
+	RULE_rule_InterfaceSignalDeclaration = 143
+	RULE_rule_InterfaceSubprogramDeclaration = 144
+	RULE_rule_InterfaceSubprogramDefault = 145
+	RULE_rule_InterfaceSubprogramSpecification = 146
+	RULE_rule_InterfaceTypeDeclaration = 147
+	RULE_rule_InterfaceTypeIndication = 148
+	RULE_rule_InterfaceVariableDeclaration = 149
+	RULE_rule_IterationScheme = 150
+	RULE_rule_LibraryClause = 151
+	RULE_rule_LibraryUnit = 152
+	RULE_rule_Literal = 153
+	RULE_rule_LoopStatement = 154
+	RULE_rule_Mode = 155
+	RULE_rule_ModeIndication = 156
+	RULE_rule_ModeViewDeclaration = 157
+	RULE_rule_ModeViewElementDefinition = 158
+	RULE_rule_Name = 159
+	RULE_rule_NextStatement = 160
+	RULE_rule_NullStatement = 161
+	RULE_rule_NumericLiteral = 162
+	RULE_rule_PackageBody = 163
+	RULE_rule_PackageBodyDeclarativeItem = 164
+	RULE_rule_PackageDeclaration = 165
+	RULE_rule_PackageDeclarativeItem = 166
+	RULE_rule_PackageInstantiationDeclaration = 167
+	RULE_rule_PackagePathname = 168
+	RULE_rule_ParameterMapAspect = 169
+	RULE_rule_ParameterSpecification = 170
+	RULE_rule_PartialPathname = 171
+	RULE_rule_PathnameElement = 172
+	RULE_rule_PhysicalIncompleteTypeDefinition = 173
+	RULE_rule_PhysicalLiteral = 174
+	RULE_rule_PhysicalTypeDefinition = 175
+	RULE_rule_PlainReturnStatement = 176
+	RULE_rule_PortClause = 177
+	RULE_rule_PortMapAspect = 178
+	RULE_rule_Primary = 179
+	RULE_rule_PrivateVariableDeclaration = 180
+	RULE_rule_PrivateIncompleteTypeDefinition = 181
+	RULE_rule_ProcedureCall = 182
+	RULE_rule_ProcedureCallStatement = 183
+	RULE_rule_ProcedureSpecification = 184
+	RULE_rule_ProcessDeclarativeItem = 185
+	RULE_rule_ProcessSensitivityList = 186
+	RULE_rule_ProcessStatement = 187
+	RULE_rule_PostponedProcessStatement = 188
+	RULE_rule_ProtectedTypeBody = 189
+	RULE_rule_ProtectedTypeBodyDeclarativeItem = 190
+	RULE_rule_ProtectedTypeDeclaration = 191
+	RULE_rule_ProtectedTypeDeclarativeItem = 192
+	RULE_rule_ProtectedTypeDefinition = 193
+	RULE_rule_ProtectedTypeInstantiationDefinition = 194
+	RULE_rule_QualifiedExpression = 195
+	RULE_rule_Range = 196
+	RULE_rule_RangeConstraint = 197
+	RULE_rule_RecordConstraint = 198
+	RULE_rule_RecordElementConstraint = 199
+	RULE_rule_RecordElementList = 200
+	RULE_rule_RecordElementResolution = 201
+	RULE_rule_RecordResolution = 202
+	RULE_rule_RecordTypeDefinition = 203
+	RULE_rule_RecordModeViewIndication = 204
+	RULE_rule_RelativePathname = 205
+	RULE_rule_ReportStatement = 206
+	RULE_rule_ResolutionIndication = 207
+	RULE_rule_ReturnStatement = 208
+	RULE_rule_ScalarIncompleteTypeDefinition = 209
+	RULE_rule_ScalarTypeDefinition = 210
+	RULE_rule_SecondaryUnitDeclaration = 211
+	RULE_rule_SelectedExpressions = 212
+	RULE_rule_SelectedForceAssignment = 213
+	RULE_rule_SelectedName2 = 214
+	RULE_rule_SelectedSignalAssignment = 215
+	RULE_rule_SelectedVariableAssignment = 216
+	RULE_rule_SelectedWaveformAssignment = 217
+	RULE_rule_SelectedWaveforms = 218
+	RULE_rule_SensitivityClause = 219
+	RULE_rule_SensitivityList = 220
+	RULE_rule_SequentialBlockStatement = 221
+	RULE_rule_SequentialStatement = 222
+	RULE_rule_SignalAssignmentStatement = 223
+	RULE_rule_SignalDeclaration = 224
+	RULE_rule_SignalList = 225
+	RULE_rule_Signature = 226
+	RULE_rule_SimpleConfigurationSpecification = 227
+	RULE_rule_SimpleForceAssignment = 228
+	RULE_rule_SimpleModeIndication = 229
+	RULE_rule_SimpleRange = 230
+	RULE_rule_SimpleReleaseAssignment = 231
+	RULE_rule_SimpleSignalAssignment = 232
+	RULE_rule_SimpleWaveformAssignment = 233
+	RULE_rule_SimpleVariableAssignment = 234
+	RULE_rule_SubprogramBody = 235
+	RULE_rule_SubprogramDeclaration = 236
+	RULE_rule_SubprogramDeclarativeItem = 237
+	RULE_rule_SubprogramInstantiationDeclaration = 238
+	RULE_rule_SubprogramKind = 239
+	RULE_rule_SubprogramSpecification = 240
+	RULE_rule_SubtypeDeclaration = 241
+	RULE_rule_SubtypeIndication = 242
+	RULE_rule_Suffix = 243
+	RULE_rule_Target = 244
+	RULE_rule_TimeoutClause = 245
+	RULE_rule_TypeConversion = 246
+	RULE_rule_TypeDeclaration = 247
+	RULE_rule_TypeDefinition = 248
+	RULE_rule_UnboundArrayDefinition = 249
+	RULE_rule_UnspecifiedTypeIndication = 250
+	RULE_rule_UseClause = 251
+	RULE_rule_ValueReturnStatement = 252
+	RULE_rule_VariableAssignmentStatement = 253
+	RULE_rule_VariableDeclaration = 254
+	RULE_rule_WaitStatement = 255
+	RULE_rule_Waveform = 256
+	RULE_rule_WaveformElement = 257
+
+	ruleNames = (
+		"rule_AbsolutePathname", "rule_AccessIncompleteTypeDefinition", "rule_AccessTypeDefinition",
+		"rule_ActualDesignator", "rule_ActualPart", "rule_Aggregate", "rule_AliasDeclaration", "rule_AliasDesignator",
+		"rule_AliasIndication", "rule_Allocator", "rule_Architecture", "rule_ArchitectureStatement", "rule_ArrayConstraint",
+		"rule_ArrayIncompleteTypeDefinition", "rule_ArrayIndexIncompleteType", "rule_ArrayIndexIncompleteTypeList",
+		"rule_ArrayModeViewIndication", "rule_Assertion", "rule_AssertionStatement", "rule_AssociationElement",
+		"rule_AssociationList", "rule_AttributeDeclaration", "rule_AttributeDesignator", "rule_AttributeSpecification",
+		"rule_BindingIndication", "rule_BlockConfiguration", "rule_BlockDeclarativeItem", "rule_BlockSpecification",
+		"rule_BlockStatement", "rule_CaseGenerateAlternative", "rule_CaseGenerateStatement", "rule_CaseStatement",
+		"rule_CaseStatementAlternative", "rule_Choice", "rule_Choices", "rule_ComponentConfiguration",
+		"rule_ComponentDeclaration", "rule_ComponentInstantiationStatement", "rule_ComponentSpecification",
+		"rule_CompositeTypeDefinition", "rule_CompoundConfigurationSpecification", "rule_ConcurrentAssertionStatement",
+		"rule_ConcurrentConditionalSignalAssignment", "rule_ConcurrentProcedureCallStatement",
+		"rule_ConcurrentSelectedSignalAssignment", "rule_ConcurrentSignalAssignmentStatement",
+		"rule_ConcurrentSimpleSignalAssignment", "rule_ConcurrentStatement", "rule_ConditionClause",
+		"rule_ConditionalExpression", "rule_ConditionalOrUnaffectedExpression", "rule_ConditionalSignalAssignment",
+		"rule_ConditionalWaveforms", "rule_ConfigurationDeclaration", "rule_ConfigurationDeclarativeItem",
+		"rule_ConfigurationItem", "rule_ConfigurationSpecification", "rule_ConstantDeclaration",
+		"rule_ConstrainedArrayDefinition", "rule_Constraint", "rule_ContextDeclaration", "rule_ContextItem",
+		"rule_ContextReference", "rule_DelayMechanism", "rule_DesignFile", "rule_DesignUnit", "rule_Designator",
+		"rule_Direction", "rule_DisconnectionSpecification", "rule_DiscreteRange", "rule_DiscreteIncompleteTypeDefinition",
+		"rule_ElementArrayModeViewIndication", "rule_ElementAssociation", "rule_ElementConstraint",
+		"rule_ElementDeclaration", "rule_ElementModeIndication", "rule_ElementModeViewIndication",
+		"rule_ElementRecordModeViewIndication", "rule_ElementResolution", "rule_EntityAspect", "rule_EntityClass",
+		"rule_EntityClassEntry", "rule_EntityDeclaration", "rule_EntityDeclarativeItem", "rule_EntityDesignator",
+		"rule_EntityNameList", "rule_EntitySpecification", "rule_EntityStatement", "rule_EntityTag",
+		"rule_EnumerationLiteral", "rule_EnumerationTypeDefinition", "rule_ExitStatement", "rule_Expression",
+		"rule_ExpressionOrUnaffected", "rule_ExternalName", "rule_ExternalConstantName", "rule_ExternalSignalName",
+		"rule_ExternalVariableName", "rule_ExternalPathname", "rule_FileDeclaration", "rule_FileIncompleteTypeDefinition",
+		"rule_FileOpenInformation", "rule_FileTypeDefinition", "rule_FloatingIncompleteTypeDefinition",
+		"rule_FloatingTypeDefinition", "rule_ForGenerateStatement", "rule_FormalDesignator", "rule_FormalParameterList",
+		"rule_FormalPart", "rule_FullTypeDeclaration", "rule_FunctionCall", "rule_FunctionSpecification",
+		"rule_GenerateSpecification", "rule_GenerateStatement", "rule_GenerateStatementBody", "rule_GenericClause",
+		"rule_GenericMapAspect", "rule_GroupConstituent", "rule_GroupDeclaration", "rule_GroupTemplateDeclaration",
+		"rule_GuardedSignalSpecification", "rule_IdentifierList", "rule_IfGenerateStatement", "rule_IfStatement",
+		"rule_IncompleteSubtypeIndication", "rule_IncompleteTypeDeclaration", "rule_IncompleteTypeDefinition",
+		"rule_IncompleteTypeMark", "rule_IndexConstraint", "rule_IndexSubtypeDefinition", "rule_InstantiatedUnit",
+		"rule_InstantiationList", "rule_IntegerIncompleteTypeDefinition", "rule_IntegerTypeDefinition",
+		"rule_InterfaceConstantDeclaration", "rule_InterfaceDeclaration", "rule_InterfaceElement",
+		"rule_InterfaceFileDeclaration", "rule_InterfaceFunctionSpecification", "rule_InterfaceList",
+		"rule_InterfacePackageDeclaration", "rule_InterfacePackageGenericMapAspect", "rule_InterfaceProcedureSpecification",
+		"rule_InterfaceSignalDeclaration", "rule_InterfaceSubprogramDeclaration", "rule_InterfaceSubprogramDefault",
+		"rule_InterfaceSubprogramSpecification", "rule_InterfaceTypeDeclaration", "rule_InterfaceTypeIndication",
+		"rule_InterfaceVariableDeclaration", "rule_IterationScheme", "rule_LibraryClause", "rule_LibraryUnit",
+		"rule_Literal", "rule_LoopStatement", "rule_Mode", "rule_ModeIndication", "rule_ModeViewDeclaration",
+		"rule_ModeViewElementDefinition", "rule_Name", "rule_NextStatement", "rule_NullStatement", "rule_NumericLiteral",
+		"rule_PackageBody", "rule_PackageBodyDeclarativeItem", "rule_PackageDeclaration", "rule_PackageDeclarativeItem",
+		"rule_PackageInstantiationDeclaration", "rule_PackagePathname", "rule_ParameterMapAspect",
+		"rule_ParameterSpecification", "rule_PartialPathname", "rule_PathnameElement",
+		"rule_PhysicalIncompleteTypeDefinition", "rule_PhysicalLiteral", "rule_PhysicalTypeDefinition",
+		"rule_PlainReturnStatement", "rule_PortClause", "rule_PortMapAspect", "rule_Primary",
+		"rule_PrivateVariableDeclaration", "rule_PrivateIncompleteTypeDefinition", "rule_ProcedureCall",
+		"rule_ProcedureCallStatement", "rule_ProcedureSpecification", "rule_ProcessDeclarativeItem",
+		"rule_ProcessSensitivityList", "rule_ProcessStatement", "rule_PostponedProcessStatement", "rule_ProtectedTypeBody",
+		"rule_ProtectedTypeBodyDeclarativeItem", "rule_ProtectedTypeDeclaration", "rule_ProtectedTypeDeclarativeItem",
+		"rule_ProtectedTypeDefinition", "rule_ProtectedTypeInstantiationDefinition", "rule_QualifiedExpression",
+		"rule_Range", "rule_RangeConstraint", "rule_RecordConstraint", "rule_RecordElementConstraint",
+		"rule_RecordElementList", "rule_RecordElementResolution", "rule_RecordResolution", "rule_RecordTypeDefinition",
+		"rule_RecordModeViewIndication", "rule_RelativePathname", "rule_ReportStatement", "rule_ResolutionIndication",
+		"rule_ReturnStatement", "rule_ScalarIncompleteTypeDefinition", "rule_ScalarTypeDefinition",
+		"rule_SecondaryUnitDeclaration", "rule_SelectedExpressions", "rule_SelectedForceAssignment", "rule_SelectedName2",
+		"rule_SelectedSignalAssignment", "rule_SelectedVariableAssignment", "rule_SelectedWaveformAssignment",
+		"rule_SelectedWaveforms", "rule_SensitivityClause", "rule_SensitivityList", "rule_SequentialBlockStatement",
+		"rule_SequentialStatement", "rule_SignalAssignmentStatement", "rule_SignalDeclaration", "rule_SignalList",
+		"rule_Signature", "rule_SimpleConfigurationSpecification", "rule_SimpleForceAssignment",
+		"rule_SimpleModeIndication", "rule_SimpleRange", "rule_SimpleReleaseAssignment", "rule_SimpleSignalAssignment",
+		"rule_SimpleWaveformAssignment", "rule_SimpleVariableAssignment", "rule_SubprogramBody",
+		"rule_SubprogramDeclaration", "rule_SubprogramDeclarativeItem", "rule_SubprogramInstantiationDeclaration",
+		"rule_SubprogramKind", "rule_SubprogramSpecification", "rule_SubtypeDeclaration", "rule_SubtypeIndication",
+		"rule_Suffix", "rule_Target", "rule_TimeoutClause", "rule_TypeConversion", "rule_TypeDeclaration",
+		"rule_TypeDefinition", "rule_UnboundArrayDefinition", "rule_UnspecifiedTypeIndication", "rule_UseClause",
+		"rule_ValueReturnStatement", "rule_VariableAssignmentStatement", "rule_VariableDeclaration", "rule_WaitStatement",
+		"rule_Waveform", "rule_WaveformElement"
+	)
+
+	EOF = Token.EOF
+	LINEBREAK = 1
+	WHITESPACE = 2
+	COMMENT_LINE = 3
+	COMMENT_BLOCK = 4
+	TOOLDIRECTIVE = 5
+	OP_ABS = 6
+	KW_ACCESS = 7
+	KW_AFTER = 8
+	KW_ALIAS = 9
+	KW_ALL = 10
+	OP_AND = 11
+	KW_ARCHITECTURE = 12
+	KW_ARRAY = 13
+	KW_ASSERT = 14
+	KW_ATTRIBUTE = 15
+	KW_PSL_ASSUME = 16
+	KW_BEGIN = 17
+	KW_BLOCK = 18
+	KW_BODY = 19
+	KW_BUFFER = 20
+	KW_BUS = 21
+	KW_CASE = 22
+	KW_COMPONENT = 23
+	KW_CONFIGURATION = 24
+	KW_CONSTANT = 25
+	KW_CONTEXT = 26
+	KW_PSL_COVER = 27
+	KW_DEFAULT = 28
+	KW_DISCONNECT = 29
+	KW_DOWNTO = 30
+	KW_ELSE = 31
+	KW_ELSIF = 32
+	KW_END = 33
+	KW_ENTITY = 34
+	KW_EXIT = 35
+	KW_FILE = 36
+	KW_FOR = 37
+	KW_FORCE = 38
+	KW_FUNCTION = 39
+	KW_PSL_FAIRNESS = 40
+	KW_GENERATE = 41
+	KW_GENERIC = 42
+	KW_GUARDED = 43
+	KW_GROUP = 44
+	KW_IF = 45
+	KW_IMPURE = 46
+	KW_IN = 47
+	KW_INERTIAL = 48
+	KW_INOUT = 49
+	KW_IS = 50
+	KW_LABEL = 51
+	KW_LIBRARY = 52
+	KW_LINKAGE = 53
+	KW_LOOP = 54
+	KW_PSL_LITERAL = 55
+	KW_MAP = 56
+	OP_MOD = 57
+	OP_NAND = 58
+	KW_NEW = 59
+	KW_NEXT = 60
+	OP_NOR = 61
+	OP_NOT = 62
+	KW_NULL = 63
+	KW_OF = 64
+	KW_ON = 65
+	KW_OPEN = 66
+	OP_OR = 67
+	KW_OTHERS = 68
+	KW_OUT = 69
+	KW_PACKAGE = 70
+	KW_PARAMETER = 71
+	KW_PORT = 72
+	KW_POSTPONED = 73
+	KW_PRIVATE = 74
+	KW_PROCEDURE = 75
+	KW_PROCESS = 76
+	KW_PROTECTED = 77
+	KW_PURE = 78
+	KW_RANGE = 79
+	KW_RECORD = 80
+	KW_REGISTER = 81
+	KW_REJECT = 82
+	KW_RELEASE = 83
+	OP_REM = 84
+	KW_REPORT = 85
+	KW_RETURN = 86
+	OP_ROL = 87
+	OP_ROR = 88
+	KW_PSL_RESTRICT = 89
+	KW_SELECT = 90
+	KW_SEVERITY = 91
+	KW_SHARED = 92
+	KW_SIGNAL = 93
+	OP_SLA = 94
+	OP_SLL = 95
+	OP_SRA = 96
+	OP_SRL = 97
+	KW_SUBTYPE = 98
+	KW_PSL_STRONG = 99
+	KW_PSL_SEQUENCE = 100
+	KW_THEN = 101
+	KW_TO = 102
+	KW_TRANSPORT = 103
+	KW_TYPE = 104
+	KW_UNAFFECTED = 105
+	KW_UNITS = 106
+	KW_UNTIL = 107
+	KW_USE = 108
+	KW_VARIABLE = 109
+	KW_VIEW = 110
+	KW_PSL_VPKG = 111
+	KW_PSL_VMODE = 112
+	KW_PSL_VPROP = 113
+	KW_PSL_VUNIT = 114
+	KW_WAIT = 115
+	KW_WITH = 116
+	KW_WHEN = 117
+	KW_WHILE = 118
+	OP_XNOR = 119
+	OP_XOR = 120
+	OP_EQ = 121
+	OP_NE = 122
+	OP_LT = 123
+	OP_GT = 124
+	OP_GE = 125
+	OP_IEQ = 126
+	OP_INE = 127
+	OP_ILT = 128
+	OP_ILE = 129
+	OP_IGT = 130
+	OP_IGE = 131
+	OP_PLUS = 132
+	OP_MINUS = 133
+	OP_MUL = 134
+	OP_DIV = 135
+	OP_POW = 136
+	OP_CONCAT = 137
+	OP_CONDITION = 138
+	TOK_RARROW = 139
+	TOK_SIG_ASSIGN = 140
+	TOK_VAR_ASSIGN = 141
+	TOK_BOX = 142
+	TOK_LP = 143
+	TOK_RP = 144
+	TOK_LB = 145
+	TOK_RB = 146
+	TOK_DLA = 147
+	TOK_DRA = 148
+	TOK_COLON = 149
+	TOK_SEMICOL = 150
+	TOK_COMMA = 151
+	TOK_BAR = 152
+	TOK_DOT = 153
+	TOK_QUESTION = 154
+	TOK_AT = 155
+	TOK_CIRCUMFLEX = 156
+	TOK_TICK = 157
+	TOK_DQUOTE = 158
+	LIT_ABSTRACT = 159
+	LIT_BIT_STRING = 160
+	LIT_CHARACTER = 161
+	LIT_STRING = 162
+	LIT_IDENTIFIER = 163
+
+	def __init__(self, input: TokenStream, output: TextIO = stdout):
+		super().__init__(input, output)
+		self.checkVersion("4.12.0")
+		self._interp = ParserATNSimulator(self, self.atn, self.decisionsToDFA, self.sharedContextCache)
+		self._predicates = None
+
+	class Rule_AbsolutePathnameContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def TOK_DOT(self):
+			return self.getToken(VHDLParser.TOK_DOT, 0)
+
+		def rule_PartialPathname(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_PartialPathnameContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_AbsolutePathname
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_AbsolutePathname"):
+				return visitor.visitRule_AbsolutePathname(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_AbsolutePathname(self):
+
+		localctx = VHDLParser.Rule_AbsolutePathnameContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 0, self.RULE_rule_AbsolutePathname)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 516
+			self.match(VHDLParser.TOK_DOT)
+			self.state = 517
+			self.rule_PartialPathname()
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_AccessIncompleteTypeDefinitionContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def KW_ACCESS(self):
+			return self.getToken(VHDLParser.KW_ACCESS, 0)
+
+		def rule_IncompleteSubtypeIndication(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_IncompleteSubtypeIndicationContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_AccessIncompleteTypeDefinition
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_AccessIncompleteTypeDefinition"):
+				return visitor.visitRule_AccessIncompleteTypeDefinition(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_AccessIncompleteTypeDefinition(self):
+
+		localctx = VHDLParser.Rule_AccessIncompleteTypeDefinitionContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 2, self.RULE_rule_AccessIncompleteTypeDefinition)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 519
+			self.match(VHDLParser.KW_ACCESS)
+			self.state = 520
+			self.rule_IncompleteSubtypeIndication()
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_AccessTypeDefinitionContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.subtypeIndication = None  # Rule_SubtypeIndicationContext
+
+		def KW_ACCESS(self):
+			return self.getToken(VHDLParser.KW_ACCESS, 0)
+
+		def rule_SubtypeIndication(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubtypeIndicationContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_AccessTypeDefinition
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_AccessTypeDefinition"):
+				return visitor.visitRule_AccessTypeDefinition(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_AccessTypeDefinition(self):
+
+		localctx = VHDLParser.Rule_AccessTypeDefinitionContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 4, self.RULE_rule_AccessTypeDefinition)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 522
+			self.match(VHDLParser.KW_ACCESS)
+			self.state = 523
+			localctx.subtypeIndication = self.rule_SubtypeIndication()
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ActualDesignatorContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.inertial = None  # Token
+			self.expression = None  # Rule_ExpressionContext
+			self.name = None  # Rule_NameContext
+			self.subtypeIndication = None  # Rule_SubtypeIndicationContext
+			self.open_ = None  # Token
+
+		def rule_Expression(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0)
+
+		def KW_INERTIAL(self):
+			return self.getToken(VHDLParser.KW_INERTIAL, 0)
+
+		def rule_Name(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0)
+
+		def rule_SubtypeIndication(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubtypeIndicationContext, 0)
+
+		def KW_OPEN(self):
+			return self.getToken(VHDLParser.KW_OPEN, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ActualDesignator
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ActualDesignator"):
+				return visitor.visitRule_ActualDesignator(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ActualDesignator(self):
+
+		localctx = VHDLParser.Rule_ActualDesignatorContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 6, self.RULE_rule_ActualDesignator)
+		self._la = 0  # Token type
+		try:
+			self.state = 532
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 1, self._ctx)
+			if la_ == 1:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 526
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+				if _la == 48:
+					self.state = 525
+					localctx.inertial = self.match(VHDLParser.KW_INERTIAL)
+
+				self.state = 528
+				localctx.expression = self.rule_Expression(0)
+				pass
+
+			elif la_ == 2:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 529
+				localctx.name = self.rule_Name(0)
+				pass
+
+			elif la_ == 3:
+				self.enterOuterAlt(localctx, 3)
+				self.state = 530
+				localctx.subtypeIndication = self.rule_SubtypeIndication()
+				pass
+
+			elif la_ == 4:
+				self.enterOuterAlt(localctx, 4)
+				self.state = 531
+				localctx.open_ = self.match(VHDLParser.KW_OPEN)
+				pass
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ActualPartContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.actualDesignator = None  # Rule_ActualDesignatorContext
+			self.conversion = None  # Rule_NameContext
+
+		def rule_ActualDesignator(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ActualDesignatorContext, 0)
+
+		def TOK_LP(self):
+			return self.getToken(VHDLParser.TOK_LP, 0)
+
+		def TOK_RP(self):
+			return self.getToken(VHDLParser.TOK_RP, 0)
+
+		def rule_Name(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ActualPart
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ActualPart"):
+				return visitor.visitRule_ActualPart(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ActualPart(self):
+
+		localctx = VHDLParser.Rule_ActualPartContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 8, self.RULE_rule_ActualPart)
+		try:
+			self.state = 540
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 2, self._ctx)
+			if la_ == 1:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 534
+				localctx.actualDesignator = self.rule_ActualDesignator()
+				pass
+
+			elif la_ == 2:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 535
+				localctx.conversion = self.rule_Name(0)
+				self.state = 536
+				self.match(VHDLParser.TOK_LP)
+				self.state = 537
+				localctx.actualDesignator = self.rule_ActualDesignator()
+				self.state = 538
+				self.match(VHDLParser.TOK_RP)
+				pass
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_AggregateContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self._rule_ElementAssociation = None  # Rule_ElementAssociationContext
+			self.element = list()  # of Rule_ElementAssociationContexts
+
+		def TOK_LP(self):
+			return self.getToken(VHDLParser.TOK_LP, 0)
+
+		def TOK_RP(self):
+			return self.getToken(VHDLParser.TOK_RP, 0)
+
+		def rule_ElementAssociation(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_ElementAssociationContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_ElementAssociationContext, i)
+
+		def TOK_COMMA(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.TOK_COMMA)
+			else:
+				return self.getToken(VHDLParser.TOK_COMMA, i)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_Aggregate
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_Aggregate"):
+				return visitor.visitRule_Aggregate(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_Aggregate(self):
+
+		localctx = VHDLParser.Rule_AggregateContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 10, self.RULE_rule_Aggregate)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 542
+			self.match(VHDLParser.TOK_LP)
+			self.state = 543
+			localctx._rule_ElementAssociation = self.rule_ElementAssociation()
+			localctx.element.append(localctx._rule_ElementAssociation)
+			self.state = 548
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			while _la == 151:
+				self.state = 544
+				self.match(VHDLParser.TOK_COMMA)
+				self.state = 545
+				localctx._rule_ElementAssociation = self.rule_ElementAssociation()
+				localctx.element.append(localctx._rule_ElementAssociation)
+				self.state = 550
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+
+			self.state = 551
+			self.match(VHDLParser.TOK_RP)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_AliasDeclarationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.aliasDesignator = None  # Rule_AliasDesignatorContext
+			self.aliasIndication = None  # Rule_AliasIndicationContext
+			self.aliasTarget = None  # Rule_NameContext
+			self.signature = None  # Rule_SignatureContext
+
+		def KW_ALIAS(self):
+			return self.getToken(VHDLParser.KW_ALIAS, 0)
+
+		def KW_IS(self):
+			return self.getToken(VHDLParser.KW_IS, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def rule_AliasDesignator(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_AliasDesignatorContext, 0)
+
+		def rule_Name(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0)
+
+		def TOK_COLON(self):
+			return self.getToken(VHDLParser.TOK_COLON, 0)
+
+		def rule_AliasIndication(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_AliasIndicationContext, 0)
+
+		def rule_Signature(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SignatureContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_AliasDeclaration
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_AliasDeclaration"):
+				return visitor.visitRule_AliasDeclaration(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_AliasDeclaration(self):
+
+		localctx = VHDLParser.Rule_AliasDeclarationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 12, self.RULE_rule_AliasDeclaration)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 553
+			self.match(VHDLParser.KW_ALIAS)
+			self.state = 554
+			localctx.aliasDesignator = self.rule_AliasDesignator()
+			self.state = 557
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 149:
+				self.state = 555
+				self.match(VHDLParser.TOK_COLON)
+				self.state = 556
+				localctx.aliasIndication = self.rule_AliasIndication()
+
+			self.state = 559
+			self.match(VHDLParser.KW_IS)
+			self.state = 560
+			localctx.aliasTarget = self.rule_Name(0)
+			self.state = 562
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 145:
+				self.state = 561
+				localctx.signature = self.rule_Signature()
+
+			self.state = 564
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_AliasDesignatorContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def LIT_IDENTIFIER(self):
+			return self.getToken(VHDLParser.LIT_IDENTIFIER, 0)
+
+		def LIT_CHARACTER(self):
+			return self.getToken(VHDLParser.LIT_CHARACTER, 0)
+
+		def LIT_STRING(self):
+			return self.getToken(VHDLParser.LIT_STRING, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_AliasDesignator
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_AliasDesignator"):
+				return visitor.visitRule_AliasDesignator(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_AliasDesignator(self):
+
+		localctx = VHDLParser.Rule_AliasDesignatorContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 14, self.RULE_rule_AliasDesignator)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 566
+			_la = self._input.LA(1)
+			if not (((((_la - 161)) & ~0x3f) == 0 and ((1 << (_la - 161)) & 7) != 0)):
+				self._errHandler.recoverInline(self)
+			else:
+				self._errHandler.reportMatch(self)
+				self.consume()
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_AliasIndicationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.subtypeIndication = None  # Rule_SubtypeIndicationContext
+
+		def rule_SubtypeIndication(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubtypeIndicationContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_AliasIndication
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_AliasIndication"):
+				return visitor.visitRule_AliasIndication(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_AliasIndication(self):
+
+		localctx = VHDLParser.Rule_AliasIndicationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 16, self.RULE_rule_AliasIndication)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 568
+			localctx.subtypeIndication = self.rule_SubtypeIndication()
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_AllocatorContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.subtypeIndication = None  # Rule_SubtypeIndicationContext
+			self.qualifiedExpression = None  # Rule_QualifiedExpressionContext
+
+		def KW_NEW(self):
+			return self.getToken(VHDLParser.KW_NEW, 0)
+
+		def rule_SubtypeIndication(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubtypeIndicationContext, 0)
+
+		def rule_QualifiedExpression(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_QualifiedExpressionContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_Allocator
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_Allocator"):
+				return visitor.visitRule_Allocator(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_Allocator(self):
+
+		localctx = VHDLParser.Rule_AllocatorContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 18, self.RULE_rule_Allocator)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 570
+			self.match(VHDLParser.KW_NEW)
+			self.state = 573
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 6, self._ctx)
+			if la_ == 1:
+				self.state = 571
+				localctx.subtypeIndication = self.rule_SubtypeIndication()
+				pass
+
+			elif la_ == 2:
+				self.state = 572
+				localctx.qualifiedExpression = self.rule_QualifiedExpression()
+				pass
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ArchitectureContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.name = None  # Token
+			self.entityName = None  # Token
+			self._rule_BlockDeclarativeItem = None  # Rule_BlockDeclarativeItemContext
+			self.declarativeItems = list()  # of Rule_BlockDeclarativeItemContexts
+			self._rule_ConcurrentStatement = None  # Rule_ConcurrentStatementContext
+			self.statements = list()  # of Rule_ConcurrentStatementContexts
+			self.name2 = None  # Token
+
+		def KW_ARCHITECTURE(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.KW_ARCHITECTURE)
+			else:
+				return self.getToken(VHDLParser.KW_ARCHITECTURE, i)
+
+		def KW_OF(self):
+			return self.getToken(VHDLParser.KW_OF, 0)
+
+		def KW_IS(self):
+			return self.getToken(VHDLParser.KW_IS, 0)
+
+		def KW_BEGIN(self):
+			return self.getToken(VHDLParser.KW_BEGIN, 0)
+
+		def KW_END(self):
+			return self.getToken(VHDLParser.KW_END, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def LIT_IDENTIFIER(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.LIT_IDENTIFIER)
+			else:
+				return self.getToken(VHDLParser.LIT_IDENTIFIER, i)
+
+		def rule_BlockDeclarativeItem(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_BlockDeclarativeItemContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_BlockDeclarativeItemContext, i)
+
+		def rule_ConcurrentStatement(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_ConcurrentStatementContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_ConcurrentStatementContext, i)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_Architecture
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_Architecture"):
+				return visitor.visitRule_Architecture(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_Architecture(self):
+
+		localctx = VHDLParser.Rule_ArchitectureContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 20, self.RULE_rule_Architecture)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 575
+			self.match(VHDLParser.KW_ARCHITECTURE)
+			self.state = 576
+			localctx.name = self.match(VHDLParser.LIT_IDENTIFIER)
+			self.state = 577
+			self.match(VHDLParser.KW_OF)
+			self.state = 578
+			localctx.entityName = self.match(VHDLParser.LIT_IDENTIFIER)
+			self.state = 579
+			self.match(VHDLParser.KW_IS)
+			self.state = 583
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			while (((_la) & ~0x3f) == 0 and ((1 << _la) & 88717423313408) != 0) or (
+				(((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & 1941606236449) != 0):
+				self.state = 580
+				localctx._rule_BlockDeclarativeItem = self.rule_BlockDeclarativeItem()
+				localctx.declarativeItems.append(localctx._rule_BlockDeclarativeItem)
+				self.state = 585
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+
+			self.state = 586
+			self.match(VHDLParser.KW_BEGIN)
+			self.state = 590
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			while ((((_la - 14)) & ~0x3f) == 0 and ((1 << (_la - 14)) & 5188146770730811393) != 0) or (
+				(((_la - 116)) & ~0x3f) == 0 and ((1 << (_la - 116)) & 246292886323201) != 0):
+				self.state = 587
+				localctx._rule_ConcurrentStatement = self.rule_ConcurrentStatement()
+				localctx.statements.append(localctx._rule_ConcurrentStatement)
+				self.state = 592
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+
+			self.state = 593
+			self.match(VHDLParser.KW_END)
+			self.state = 595
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 12:
+				self.state = 594
+				self.match(VHDLParser.KW_ARCHITECTURE)
+
+			self.state = 598
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 163:
+				self.state = 597
+				localctx.name2 = self.match(VHDLParser.LIT_IDENTIFIER)
+
+			self.state = 600
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ArchitectureStatementContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.blockStatement = None  # Rule_BlockStatementContext
+			self.processStatement = None  # Rule_ProcessStatementContext
+			self.postponedProcessStatement = None  # Rule_PostponedProcessStatementContext
+			self.label = None  # Token
+			self.procedureCallStatement = None  # Rule_ConcurrentProcedureCallStatementContext
+			self.assertionStatement = None  # Rule_ConcurrentAssertionStatementContext
+			self.postponed = None  # Token
+			self.signalAssignmentStatement = None  # Rule_ConcurrentSignalAssignmentStatementContext
+			self.instantiationStatement = None  # Rule_ComponentInstantiationStatementContext
+			self.generateStatement = None  # Rule_GenerateStatementContext
+
+		def rule_BlockStatement(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_BlockStatementContext, 0)
+
+		def rule_ProcessStatement(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ProcessStatementContext, 0)
+
+		def rule_PostponedProcessStatement(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_PostponedProcessStatementContext, 0)
+
+		def rule_ConcurrentProcedureCallStatement(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ConcurrentProcedureCallStatementContext, 0)
+
+		def TOK_COLON(self):
+			return self.getToken(VHDLParser.TOK_COLON, 0)
+
+		def LIT_IDENTIFIER(self):
+			return self.getToken(VHDLParser.LIT_IDENTIFIER, 0)
+
+		def rule_ConcurrentAssertionStatement(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ConcurrentAssertionStatementContext, 0)
+
+		def rule_ConcurrentSignalAssignmentStatement(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ConcurrentSignalAssignmentStatementContext, 0)
+
+		def KW_POSTPONED(self):
+			return self.getToken(VHDLParser.KW_POSTPONED, 0)
+
+		def rule_ComponentInstantiationStatement(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ComponentInstantiationStatementContext, 0)
+
+		def rule_GenerateStatement(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_GenerateStatementContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ArchitectureStatement
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ArchitectureStatement"):
+				return visitor.visitRule_ArchitectureStatement(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ArchitectureStatement(self):
+
+		localctx = VHDLParser.Rule_ArchitectureStatementContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 22, self.RULE_rule_ArchitectureStatement)
+		try:
+			self.state = 625
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 15, self._ctx)
+			if la_ == 1:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 602
+				localctx.blockStatement = self.rule_BlockStatement()
+				pass
+
+			elif la_ == 2:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 603
+				localctx.processStatement = self.rule_ProcessStatement()
+				pass
+
+			elif la_ == 3:
+				self.enterOuterAlt(localctx, 3)
+				self.state = 604
+				localctx.postponedProcessStatement = self.rule_PostponedProcessStatement()
+				pass
+
+			elif la_ == 4:
+				self.enterOuterAlt(localctx, 4)
+				self.state = 607
+				self._errHandler.sync(self)
+				la_ = self._interp.adaptivePredict(self._input, 11, self._ctx)
+				if la_ == 1:
+					self.state = 605
+					localctx.label = self.match(VHDLParser.LIT_IDENTIFIER)
+					self.state = 606
+					self.match(VHDLParser.TOK_COLON)
+
+				self.state = 609
+				localctx.procedureCallStatement = self.rule_ConcurrentProcedureCallStatement()
+				pass
+
+			elif la_ == 5:
+				self.enterOuterAlt(localctx, 5)
+				self.state = 612
+				self._errHandler.sync(self)
+				la_ = self._interp.adaptivePredict(self._input, 12, self._ctx)
+				if la_ == 1:
+					self.state = 610
+					localctx.label = self.match(VHDLParser.LIT_IDENTIFIER)
+					self.state = 611
+					self.match(VHDLParser.TOK_COLON)
+
+				self.state = 614
+				localctx.assertionStatement = self.rule_ConcurrentAssertionStatement()
+				pass
+
+			elif la_ == 6:
+				self.enterOuterAlt(localctx, 6)
+				self.state = 617
+				self._errHandler.sync(self)
+				la_ = self._interp.adaptivePredict(self._input, 13, self._ctx)
+				if la_ == 1:
+					self.state = 615
+					localctx.label = self.match(VHDLParser.LIT_IDENTIFIER)
+					self.state = 616
+					self.match(VHDLParser.TOK_COLON)
+
+				self.state = 620
+				self._errHandler.sync(self)
+				la_ = self._interp.adaptivePredict(self._input, 14, self._ctx)
+				if la_ == 1:
+					self.state = 619
+					localctx.postponed = self.match(VHDLParser.KW_POSTPONED)
+
+				self.state = 622
+				localctx.signalAssignmentStatement = self.rule_ConcurrentSignalAssignmentStatement()
+				pass
+
+			elif la_ == 7:
+				self.enterOuterAlt(localctx, 7)
+				self.state = 623
+				localctx.instantiationStatement = self.rule_ComponentInstantiationStatement()
+				pass
+
+			elif la_ == 8:
+				self.enterOuterAlt(localctx, 8)
+				self.state = 624
+				localctx.generateStatement = self.rule_GenerateStatement()
+				pass
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ArrayConstraintContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_IndexConstraint(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_IndexConstraintContext, 0)
+
+		def rule_ElementConstraint(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ElementConstraintContext, 0)
+
+		def TOK_LP(self):
+			return self.getToken(VHDLParser.TOK_LP, 0)
+
+		def KW_OPEN(self):
+			return self.getToken(VHDLParser.KW_OPEN, 0)
+
+		def TOK_RP(self):
+			return self.getToken(VHDLParser.TOK_RP, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ArrayConstraint
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ArrayConstraint"):
+				return visitor.visitRule_ArrayConstraint(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ArrayConstraint(self):
+
+		localctx = VHDLParser.Rule_ArrayConstraintContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 24, self.RULE_rule_ArrayConstraint)
+		try:
+			self.state = 637
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 18, self._ctx)
+			if la_ == 1:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 627
+				self.rule_IndexConstraint()
+				self.state = 629
+				self._errHandler.sync(self)
+				la_ = self._interp.adaptivePredict(self._input, 16, self._ctx)
+				if la_ == 1:
+					self.state = 628
+					self.rule_ElementConstraint()
+
+				pass
+
+			elif la_ == 2:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 631
+				self.match(VHDLParser.TOK_LP)
+				self.state = 632
+				self.match(VHDLParser.KW_OPEN)
+				self.state = 633
+				self.match(VHDLParser.TOK_RP)
+				self.state = 635
+				self._errHandler.sync(self)
+				la_ = self._interp.adaptivePredict(self._input, 17, self._ctx)
+				if la_ == 1:
+					self.state = 634
+					self.rule_ElementConstraint()
+
+				pass
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ArrayIncompleteTypeDefinitionContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def KW_ARRAY(self):
+			return self.getToken(VHDLParser.KW_ARRAY, 0)
+
+		def TOK_LP(self):
+			return self.getToken(VHDLParser.TOK_LP, 0)
+
+		def rule_ArrayIndexIncompleteTypeList(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ArrayIndexIncompleteTypeListContext, 0)
+
+		def TOK_RP(self):
+			return self.getToken(VHDLParser.TOK_RP, 0)
+
+		def KW_OF(self):
+			return self.getToken(VHDLParser.KW_OF, 0)
+
+		def rule_IncompleteSubtypeIndication(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_IncompleteSubtypeIndicationContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ArrayIncompleteTypeDefinition
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ArrayIncompleteTypeDefinition"):
+				return visitor.visitRule_ArrayIncompleteTypeDefinition(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ArrayIncompleteTypeDefinition(self):
+
+		localctx = VHDLParser.Rule_ArrayIncompleteTypeDefinitionContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 26, self.RULE_rule_ArrayIncompleteTypeDefinition)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 639
+			self.match(VHDLParser.KW_ARRAY)
+			self.state = 640
+			self.match(VHDLParser.TOK_LP)
+			self.state = 641
+			self.rule_ArrayIndexIncompleteTypeList()
+			self.state = 642
+			self.match(VHDLParser.TOK_RP)
+			self.state = 643
+			self.match(VHDLParser.KW_OF)
+			self.state = 644
+			self.rule_IncompleteSubtypeIndication()
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ArrayIndexIncompleteTypeContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_IndexSubtypeDefinition(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_IndexSubtypeDefinitionContext, 0)
+
+		def rule_IndexConstraint(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_IndexConstraintContext, 0)
+
+		def rule_UnspecifiedTypeIndication(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_UnspecifiedTypeIndicationContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ArrayIndexIncompleteType
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ArrayIndexIncompleteType"):
+				return visitor.visitRule_ArrayIndexIncompleteType(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ArrayIndexIncompleteType(self):
+
+		localctx = VHDLParser.Rule_ArrayIndexIncompleteTypeContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 28, self.RULE_rule_ArrayIndexIncompleteType)
+		try:
+			self.state = 649
+			self._errHandler.sync(self)
+			token = self._input.LA(1)
+			if token in [147, 161, 162, 163]:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 646
+				self.rule_IndexSubtypeDefinition()
+				pass
+			elif token in [143]:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 647
+				self.rule_IndexConstraint()
+				pass
+			elif token in [104]:
+				self.enterOuterAlt(localctx, 3)
+				self.state = 648
+				self.rule_UnspecifiedTypeIndication()
+				pass
+			else:
+				raise NoViableAltException(self)
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ArrayIndexIncompleteTypeListContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_ArrayIndexIncompleteType(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_ArrayIndexIncompleteTypeContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_ArrayIndexIncompleteTypeContext, i)
+
+		def TOK_COMMA(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.TOK_COMMA)
+			else:
+				return self.getToken(VHDLParser.TOK_COMMA, i)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ArrayIndexIncompleteTypeList
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ArrayIndexIncompleteTypeList"):
+				return visitor.visitRule_ArrayIndexIncompleteTypeList(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ArrayIndexIncompleteTypeList(self):
+
+		localctx = VHDLParser.Rule_ArrayIndexIncompleteTypeListContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 30, self.RULE_rule_ArrayIndexIncompleteTypeList)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 651
+			self.rule_ArrayIndexIncompleteType()
+			self.state = 656
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			while _la == 151:
+				self.state = 652
+				self.match(VHDLParser.TOK_COMMA)
+				self.state = 653
+				self.rule_ArrayIndexIncompleteType()
+				self.state = 658
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ArrayModeViewIndicationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def KW_VIEW(self):
+			return self.getToken(VHDLParser.KW_VIEW, 0)
+
+		def TOK_LP(self):
+			return self.getToken(VHDLParser.TOK_LP, 0)
+
+		def rule_Name(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0)
+
+		def TOK_RP(self):
+			return self.getToken(VHDLParser.TOK_RP, 0)
+
+		def KW_OF(self):
+			return self.getToken(VHDLParser.KW_OF, 0)
+
+		def rule_SubtypeIndication(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubtypeIndicationContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ArrayModeViewIndication
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ArrayModeViewIndication"):
+				return visitor.visitRule_ArrayModeViewIndication(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ArrayModeViewIndication(self):
+
+		localctx = VHDLParser.Rule_ArrayModeViewIndicationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 32, self.RULE_rule_ArrayModeViewIndication)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 659
+			self.match(VHDLParser.KW_VIEW)
+			self.state = 660
+			self.match(VHDLParser.TOK_LP)
+			self.state = 661
+			self.rule_Name(0)
+			self.state = 662
+			self.match(VHDLParser.TOK_RP)
+			self.state = 665
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 64:
+				self.state = 663
+				self.match(VHDLParser.KW_OF)
+				self.state = 664
+				self.rule_SubtypeIndication()
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_AssertionContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.assertCondition = None  # Rule_ExpressionContext
+			self.reportExpression = None  # Rule_ExpressionContext
+			self.severityExpression = None  # Rule_ExpressionContext
+
+		def KW_ASSERT(self):
+			return self.getToken(VHDLParser.KW_ASSERT, 0)
+
+		def rule_Expression(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_ExpressionContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, i)
+
+		def KW_REPORT(self):
+			return self.getToken(VHDLParser.KW_REPORT, 0)
+
+		def KW_SEVERITY(self):
+			return self.getToken(VHDLParser.KW_SEVERITY, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_Assertion
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_Assertion"):
+				return visitor.visitRule_Assertion(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_Assertion(self):
+
+		localctx = VHDLParser.Rule_AssertionContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 34, self.RULE_rule_Assertion)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 667
+			self.match(VHDLParser.KW_ASSERT)
+			self.state = 668
+			localctx.assertCondition = self.rule_Expression(0)
+			self.state = 671
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 85:
+				self.state = 669
+				self.match(VHDLParser.KW_REPORT)
+				self.state = 670
+				localctx.reportExpression = self.rule_Expression(0)
+
+			self.state = 675
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 91:
+				self.state = 673
+				self.match(VHDLParser.KW_SEVERITY)
+				self.state = 674
+				localctx.severityExpression = self.rule_Expression(0)
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_AssertionStatementContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.label = None  # Token
+			self.assertion = None  # Rule_AssertionContext
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def rule_Assertion(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_AssertionContext, 0)
+
+		def TOK_COLON(self):
+			return self.getToken(VHDLParser.TOK_COLON, 0)
+
+		def LIT_IDENTIFIER(self):
+			return self.getToken(VHDLParser.LIT_IDENTIFIER, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_AssertionStatement
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_AssertionStatement"):
+				return visitor.visitRule_AssertionStatement(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_AssertionStatement(self):
+
+		localctx = VHDLParser.Rule_AssertionStatementContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 36, self.RULE_rule_AssertionStatement)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 679
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 163:
+				self.state = 677
+				localctx.label = self.match(VHDLParser.LIT_IDENTIFIER)
+				self.state = 678
+				self.match(VHDLParser.TOK_COLON)
+
+			self.state = 681
+			localctx.assertion = self.rule_Assertion()
+			self.state = 682
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_AssociationElementContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.formal = None  # Rule_FormalPartContext
+			self.actual = None  # Rule_ActualPartContext
+
+		def rule_ActualPart(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ActualPartContext, 0)
+
+		def TOK_RARROW(self):
+			return self.getToken(VHDLParser.TOK_RARROW, 0)
+
+		def rule_FormalPart(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_FormalPartContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_AssociationElement
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_AssociationElement"):
+				return visitor.visitRule_AssociationElement(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_AssociationElement(self):
+
+		localctx = VHDLParser.Rule_AssociationElementContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 38, self.RULE_rule_AssociationElement)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 687
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 25, self._ctx)
+			if la_ == 1:
+				self.state = 684
+				localctx.formal = self.rule_FormalPart()
+				self.state = 685
+				self.match(VHDLParser.TOK_RARROW)
+
+			self.state = 689
+			localctx.actual = self.rule_ActualPart()
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_AssociationListContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self._rule_AssociationElement = None  # Rule_AssociationElementContext
+			self.element = list()  # of Rule_AssociationElementContexts
+
+		def rule_AssociationElement(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_AssociationElementContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_AssociationElementContext, i)
+
+		def TOK_COMMA(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.TOK_COMMA)
+			else:
+				return self.getToken(VHDLParser.TOK_COMMA, i)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_AssociationList
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_AssociationList"):
+				return visitor.visitRule_AssociationList(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_AssociationList(self):
+
+		localctx = VHDLParser.Rule_AssociationListContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 40, self.RULE_rule_AssociationList)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 691
+			localctx._rule_AssociationElement = self.rule_AssociationElement()
+			localctx.element.append(localctx._rule_AssociationElement)
+			self.state = 696
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			while _la == 151:
+				self.state = 692
+				self.match(VHDLParser.TOK_COMMA)
+				self.state = 693
+				localctx._rule_AssociationElement = self.rule_AssociationElement()
+				localctx.element.append(localctx._rule_AssociationElement)
+				self.state = 698
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_AttributeDeclarationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.label = None  # Token
+			self.name = None  # Rule_NameContext
+
+		def KW_ATTRIBUTE(self):
+			return self.getToken(VHDLParser.KW_ATTRIBUTE, 0)
+
+		def TOK_COLON(self):
+			return self.getToken(VHDLParser.TOK_COLON, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def LIT_IDENTIFIER(self):
+			return self.getToken(VHDLParser.LIT_IDENTIFIER, 0)
+
+		def rule_Name(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_AttributeDeclaration
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_AttributeDeclaration"):
+				return visitor.visitRule_AttributeDeclaration(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_AttributeDeclaration(self):
+
+		localctx = VHDLParser.Rule_AttributeDeclarationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 42, self.RULE_rule_AttributeDeclaration)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 699
+			self.match(VHDLParser.KW_ATTRIBUTE)
+			self.state = 700
+			localctx.label = self.match(VHDLParser.LIT_IDENTIFIER)
+			self.state = 701
+			self.match(VHDLParser.TOK_COLON)
+			self.state = 702
+			localctx.name = self.rule_Name(0)
+			self.state = 703
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_AttributeDesignatorContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def KW_RANGE(self):
+			return self.getToken(VHDLParser.KW_RANGE, 0)
+
+		def KW_RECORD(self):
+			return self.getToken(VHDLParser.KW_RECORD, 0)
+
+		def KW_SIGNAL(self):
+			return self.getToken(VHDLParser.KW_SIGNAL, 0)
+
+		def KW_SUBTYPE(self):
+			return self.getToken(VHDLParser.KW_SUBTYPE, 0)
+
+		def LIT_IDENTIFIER(self):
+			return self.getToken(VHDLParser.LIT_IDENTIFIER, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_AttributeDesignator
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_AttributeDesignator"):
+				return visitor.visitRule_AttributeDesignator(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_AttributeDesignator(self):
+
+		localctx = VHDLParser.Rule_AttributeDesignatorContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 44, self.RULE_rule_AttributeDesignator)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 705
+			_la = self._input.LA(1)
+			if not (((((_la - 79)) & ~0x3f) == 0 and ((1 << (_la - 79)) & 540675) != 0) or _la == 163):
+				self._errHandler.recoverInline(self)
+			else:
+				self._errHandler.reportMatch(self)
+				self.consume()
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_AttributeSpecificationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.designator = None  # Token
+			self.entitySpecification = None  # Rule_EntitySpecificationContext
+			self.expression = None  # Rule_ConditionalExpressionContext
+
+		def KW_ATTRIBUTE(self):
+			return self.getToken(VHDLParser.KW_ATTRIBUTE, 0)
+
+		def KW_OF(self):
+			return self.getToken(VHDLParser.KW_OF, 0)
+
+		def KW_IS(self):
+			return self.getToken(VHDLParser.KW_IS, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def LIT_IDENTIFIER(self):
+			return self.getToken(VHDLParser.LIT_IDENTIFIER, 0)
+
+		def rule_EntitySpecification(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_EntitySpecificationContext, 0)
+
+		def rule_ConditionalExpression(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ConditionalExpressionContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_AttributeSpecification
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_AttributeSpecification"):
+				return visitor.visitRule_AttributeSpecification(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_AttributeSpecification(self):
+
+		localctx = VHDLParser.Rule_AttributeSpecificationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 46, self.RULE_rule_AttributeSpecification)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 707
+			self.match(VHDLParser.KW_ATTRIBUTE)
+			self.state = 708
+			localctx.designator = self.match(VHDLParser.LIT_IDENTIFIER)
+			self.state = 709
+			self.match(VHDLParser.KW_OF)
+			self.state = 710
+			localctx.entitySpecification = self.rule_EntitySpecification()
+			self.state = 711
+			self.match(VHDLParser.KW_IS)
+			self.state = 712
+			localctx.expression = self.rule_ConditionalExpression()
+			self.state = 713
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_BindingIndicationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.entityAspect = None  # Rule_EntityAspectContext
+			self.genericMapAspect = None  # Rule_GenericMapAspectContext
+			self.portMapAspect = None  # Rule_PortMapAspectContext
+
+		def KW_USE(self):
+			return self.getToken(VHDLParser.KW_USE, 0)
+
+		def rule_EntityAspect(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_EntityAspectContext, 0)
+
+		def rule_GenericMapAspect(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_GenericMapAspectContext, 0)
+
+		def rule_PortMapAspect(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_PortMapAspectContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_BindingIndication
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_BindingIndication"):
+				return visitor.visitRule_BindingIndication(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_BindingIndication(self):
+
+		localctx = VHDLParser.Rule_BindingIndicationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 48, self.RULE_rule_BindingIndication)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 717
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 108:
+				self.state = 715
+				self.match(VHDLParser.KW_USE)
+				self.state = 716
+				localctx.entityAspect = self.rule_EntityAspect()
+
+			self.state = 720
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 42:
+				self.state = 719
+				localctx.genericMapAspect = self.rule_GenericMapAspect()
+
+			self.state = 723
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 72:
+				self.state = 722
+				localctx.portMapAspect = self.rule_PortMapAspect()
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_BlockConfigurationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.blockSpecification = None  # Rule_BlockSpecificationContext
+			self._rule_UseClause = None  # Rule_UseClauseContext
+			self.useClauses = list()  # of Rule_UseClauseContexts
+			self._rule_ConfigurationItem = None  # Rule_ConfigurationItemContext
+			self.configurationItems = list()  # of Rule_ConfigurationItemContexts
+
+		def KW_FOR(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.KW_FOR)
+			else:
+				return self.getToken(VHDLParser.KW_FOR, i)
+
+		def KW_END(self):
+			return self.getToken(VHDLParser.KW_END, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def rule_BlockSpecification(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_BlockSpecificationContext, 0)
+
+		def rule_UseClause(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_UseClauseContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_UseClauseContext, i)
+
+		def rule_ConfigurationItem(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_ConfigurationItemContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_ConfigurationItemContext, i)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_BlockConfiguration
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_BlockConfiguration"):
+				return visitor.visitRule_BlockConfiguration(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_BlockConfiguration(self):
+
+		localctx = VHDLParser.Rule_BlockConfigurationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 50, self.RULE_rule_BlockConfiguration)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 725
+			self.match(VHDLParser.KW_FOR)
+			self.state = 726
+			localctx.blockSpecification = self.rule_BlockSpecification()
+			self.state = 730
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			while _la == 108:
+				self.state = 727
+				localctx._rule_UseClause = self.rule_UseClause()
+				localctx.useClauses.append(localctx._rule_UseClause)
+				self.state = 732
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+
+			self.state = 736
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			while _la == 37:
+				self.state = 733
+				localctx._rule_ConfigurationItem = self.rule_ConfigurationItem()
+				localctx.configurationItems.append(localctx._rule_ConfigurationItem)
+				self.state = 738
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+
+			self.state = 739
+			self.match(VHDLParser.KW_END)
+			self.state = 740
+			self.match(VHDLParser.KW_FOR)
+			self.state = 741
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_BlockDeclarativeItemContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_SubprogramDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubprogramDeclarationContext, 0)
+
+		def rule_SubprogramBody(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubprogramBodyContext, 0)
+
+		def rule_SubprogramInstantiationDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubprogramInstantiationDeclarationContext, 0)
+
+		def rule_PackageDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_PackageDeclarationContext, 0)
+
+		def rule_PackageBody(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_PackageBodyContext, 0)
+
+		def rule_PackageInstantiationDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_PackageInstantiationDeclarationContext, 0)
+
+		def rule_TypeDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_TypeDeclarationContext, 0)
+
+		def rule_SubtypeDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubtypeDeclarationContext, 0)
+
+		def rule_ModeViewDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ModeViewDeclarationContext, 0)
+
+		def rule_ConstantDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ConstantDeclarationContext, 0)
+
+		def rule_SignalDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SignalDeclarationContext, 0)
+
+		def rule_VariableDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_VariableDeclarationContext, 0)
+
+		def rule_FileDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_FileDeclarationContext, 0)
+
+		def rule_AliasDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_AliasDeclarationContext, 0)
+
+		def rule_ComponentDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ComponentDeclarationContext, 0)
+
+		def rule_AttributeDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_AttributeDeclarationContext, 0)
+
+		def rule_AttributeSpecification(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_AttributeSpecificationContext, 0)
+
+		def rule_ConfigurationSpecification(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ConfigurationSpecificationContext, 0)
+
+		def rule_DisconnectionSpecification(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_DisconnectionSpecificationContext, 0)
+
+		def rule_UseClause(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_UseClauseContext, 0)
+
+		def rule_GroupTemplateDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_GroupTemplateDeclarationContext, 0)
+
+		def rule_GroupDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_GroupDeclarationContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_BlockDeclarativeItem
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_BlockDeclarativeItem"):
+				return visitor.visitRule_BlockDeclarativeItem(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_BlockDeclarativeItem(self):
+
+		localctx = VHDLParser.Rule_BlockDeclarativeItemContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 52, self.RULE_rule_BlockDeclarativeItem)
+		try:
+			self.state = 765
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 32, self._ctx)
+			if la_ == 1:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 743
+				self.rule_SubprogramDeclaration()
+				pass
+
+			elif la_ == 2:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 744
+				self.rule_SubprogramBody()
+				pass
+
+			elif la_ == 3:
+				self.enterOuterAlt(localctx, 3)
+				self.state = 745
+				self.rule_SubprogramInstantiationDeclaration()
+				pass
+
+			elif la_ == 4:
+				self.enterOuterAlt(localctx, 4)
+				self.state = 746
+				self.rule_PackageDeclaration()
+				pass
+
+			elif la_ == 5:
+				self.enterOuterAlt(localctx, 5)
+				self.state = 747
+				self.rule_PackageBody()
+				pass
+
+			elif la_ == 6:
+				self.enterOuterAlt(localctx, 6)
+				self.state = 748
+				self.rule_PackageInstantiationDeclaration()
+				pass
+
+			elif la_ == 7:
+				self.enterOuterAlt(localctx, 7)
+				self.state = 749
+				self.rule_TypeDeclaration()
+				pass
+
+			elif la_ == 8:
+				self.enterOuterAlt(localctx, 8)
+				self.state = 750
+				self.rule_SubtypeDeclaration()
+				pass
+
+			elif la_ == 9:
+				self.enterOuterAlt(localctx, 9)
+				self.state = 751
+				self.rule_ModeViewDeclaration()
+				pass
+
+			elif la_ == 10:
+				self.enterOuterAlt(localctx, 10)
+				self.state = 752
+				self.rule_ConstantDeclaration()
+				pass
+
+			elif la_ == 11:
+				self.enterOuterAlt(localctx, 11)
+				self.state = 753
+				self.rule_SignalDeclaration()
+				pass
+
+			elif la_ == 12:
+				self.enterOuterAlt(localctx, 12)
+				self.state = 754
+				self.rule_VariableDeclaration()
+				pass
+
+			elif la_ == 13:
+				self.enterOuterAlt(localctx, 13)
+				self.state = 755
+				self.rule_FileDeclaration()
+				pass
+
+			elif la_ == 14:
+				self.enterOuterAlt(localctx, 14)
+				self.state = 756
+				self.rule_AliasDeclaration()
+				pass
+
+			elif la_ == 15:
+				self.enterOuterAlt(localctx, 15)
+				self.state = 757
+				self.rule_ComponentDeclaration()
+				pass
+
+			elif la_ == 16:
+				self.enterOuterAlt(localctx, 16)
+				self.state = 758
+				self.rule_AttributeDeclaration()
+				pass
+
+			elif la_ == 17:
+				self.enterOuterAlt(localctx, 17)
+				self.state = 759
+				self.rule_AttributeSpecification()
+				pass
+
+			elif la_ == 18:
+				self.enterOuterAlt(localctx, 18)
+				self.state = 760
+				self.rule_ConfigurationSpecification()
+				pass
+
+			elif la_ == 19:
+				self.enterOuterAlt(localctx, 19)
+				self.state = 761
+				self.rule_DisconnectionSpecification()
+				pass
+
+			elif la_ == 20:
+				self.enterOuterAlt(localctx, 20)
+				self.state = 762
+				self.rule_UseClause()
+				pass
+
+			elif la_ == 21:
+				self.enterOuterAlt(localctx, 21)
+				self.state = 763
+				self.rule_GroupTemplateDeclaration()
+				pass
+
+			elif la_ == 22:
+				self.enterOuterAlt(localctx, 22)
+				self.state = 764
+				self.rule_GroupDeclaration()
+				pass
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_BlockSpecificationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.name = None  # Rule_NameContext
+			self.label = None  # Token
+
+		def rule_Name(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0)
+
+		def LIT_IDENTIFIER(self):
+			return self.getToken(VHDLParser.LIT_IDENTIFIER, 0)
+
+		def TOK_LP(self):
+			return self.getToken(VHDLParser.TOK_LP, 0)
+
+		def rule_GenerateSpecification(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_GenerateSpecificationContext, 0)
+
+		def TOK_RP(self):
+			return self.getToken(VHDLParser.TOK_RP, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_BlockSpecification
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_BlockSpecification"):
+				return visitor.visitRule_BlockSpecification(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_BlockSpecification(self):
+
+		localctx = VHDLParser.Rule_BlockSpecificationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 54, self.RULE_rule_BlockSpecification)
+		self._la = 0  # Token type
+		try:
+			self.state = 775
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 34, self._ctx)
+			if la_ == 1:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 767
+				localctx.name = self.rule_Name(0)
+				pass
+
+			elif la_ == 2:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 768
+				localctx.label = self.match(VHDLParser.LIT_IDENTIFIER)
+				self.state = 773
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+				if _la == 143:
+					self.state = 769
+					self.match(VHDLParser.TOK_LP)
+					self.state = 770
+					self.rule_GenerateSpecification()
+					self.state = 771
+					self.match(VHDLParser.TOK_RP)
+
+				pass
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_BlockStatementContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.label = None  # Token
+			self.guardExpression = None  # Rule_ExpressionContext
+			self.genericClause = None  # Rule_GenericClauseContext
+			self.genericMapAspect = None  # Rule_GenericMapAspectContext
+			self.portClause = None  # Rule_PortClauseContext
+			self.portMapAspect = None  # Rule_PortMapAspectContext
+			self._rule_BlockDeclarativeItem = None  # Rule_BlockDeclarativeItemContext
+			self.blockDeclarativeItem = list()  # of Rule_BlockDeclarativeItemContexts
+			self._rule_ConcurrentStatement = None  # Rule_ConcurrentStatementContext
+			self.blockStatements = list()  # of Rule_ConcurrentStatementContexts
+			self.label2 = None  # Token
+
+		def TOK_COLON(self):
+			return self.getToken(VHDLParser.TOK_COLON, 0)
+
+		def KW_BLOCK(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.KW_BLOCK)
+			else:
+				return self.getToken(VHDLParser.KW_BLOCK, i)
+
+		def KW_BEGIN(self):
+			return self.getToken(VHDLParser.KW_BEGIN, 0)
+
+		def KW_END(self):
+			return self.getToken(VHDLParser.KW_END, 0)
+
+		def TOK_SEMICOL(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.TOK_SEMICOL)
+			else:
+				return self.getToken(VHDLParser.TOK_SEMICOL, i)
+
+		def LIT_IDENTIFIER(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.LIT_IDENTIFIER)
+			else:
+				return self.getToken(VHDLParser.LIT_IDENTIFIER, i)
+
+		def TOK_LP(self):
+			return self.getToken(VHDLParser.TOK_LP, 0)
+
+		def TOK_RP(self):
+			return self.getToken(VHDLParser.TOK_RP, 0)
+
+		def KW_IS(self):
+			return self.getToken(VHDLParser.KW_IS, 0)
+
+		def rule_Expression(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0)
+
+		def rule_GenericClause(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_GenericClauseContext, 0)
+
+		def rule_PortClause(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_PortClauseContext, 0)
+
+		def rule_BlockDeclarativeItem(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_BlockDeclarativeItemContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_BlockDeclarativeItemContext, i)
+
+		def rule_ConcurrentStatement(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_ConcurrentStatementContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_ConcurrentStatementContext, i)
+
+		def rule_GenericMapAspect(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_GenericMapAspectContext, 0)
+
+		def rule_PortMapAspect(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_PortMapAspectContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_BlockStatement
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_BlockStatement"):
+				return visitor.visitRule_BlockStatement(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_BlockStatement(self):
+
+		localctx = VHDLParser.Rule_BlockStatementContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 56, self.RULE_rule_BlockStatement)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 777
+			localctx.label = self.match(VHDLParser.LIT_IDENTIFIER)
+			self.state = 778
+			self.match(VHDLParser.TOK_COLON)
+			self.state = 779
+			self.match(VHDLParser.KW_BLOCK)
+			self.state = 784
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 143:
+				self.state = 780
+				self.match(VHDLParser.TOK_LP)
+				self.state = 781
+				localctx.guardExpression = self.rule_Expression(0)
+				self.state = 782
+				self.match(VHDLParser.TOK_RP)
+
+			self.state = 787
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 50:
+				self.state = 786
+				self.match(VHDLParser.KW_IS)
+
+			self.state = 795
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 42:
+				self.state = 789
+				localctx.genericClause = self.rule_GenericClause()
+				self.state = 793
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+				if _la == 42:
+					self.state = 790
+					localctx.genericMapAspect = self.rule_GenericMapAspect()
+					self.state = 791
+					self.match(VHDLParser.TOK_SEMICOL)
+
+			self.state = 803
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 72:
+				self.state = 797
+				localctx.portClause = self.rule_PortClause()
+				self.state = 801
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+				if _la == 72:
+					self.state = 798
+					localctx.portMapAspect = self.rule_PortMapAspect()
+					self.state = 799
+					self.match(VHDLParser.TOK_SEMICOL)
+
+			self.state = 808
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			while (((_la) & ~0x3f) == 0 and ((1 << _la) & 88717423313408) != 0) or (
+				(((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & 1941606236449) != 0):
+				self.state = 805
+				localctx._rule_BlockDeclarativeItem = self.rule_BlockDeclarativeItem()
+				localctx.blockDeclarativeItem.append(localctx._rule_BlockDeclarativeItem)
+				self.state = 810
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+
+			self.state = 811
+			self.match(VHDLParser.KW_BEGIN)
+			self.state = 815
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			while ((((_la - 14)) & ~0x3f) == 0 and ((1 << (_la - 14)) & 5188146770730811393) != 0) or (
+				(((_la - 116)) & ~0x3f) == 0 and ((1 << (_la - 116)) & 246292886323201) != 0):
+				self.state = 812
+				localctx._rule_ConcurrentStatement = self.rule_ConcurrentStatement()
+				localctx.blockStatements.append(localctx._rule_ConcurrentStatement)
+				self.state = 817
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+
+			self.state = 818
+			self.match(VHDLParser.KW_END)
+			self.state = 819
+			self.match(VHDLParser.KW_BLOCK)
+			self.state = 821
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 163:
+				self.state = 820
+				localctx.label2 = self.match(VHDLParser.LIT_IDENTIFIER)
+
+			self.state = 823
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_CaseGenerateAlternativeContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.alternativeLabel = None  # Token
+
+		def KW_WHEN(self):
+			return self.getToken(VHDLParser.KW_WHEN, 0)
+
+		def rule_Choices(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ChoicesContext, 0)
+
+		def TOK_RARROW(self):
+			return self.getToken(VHDLParser.TOK_RARROW, 0)
+
+		def rule_GenerateStatementBody(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_GenerateStatementBodyContext, 0)
+
+		def TOK_COLON(self):
+			return self.getToken(VHDLParser.TOK_COLON, 0)
+
+		def LIT_IDENTIFIER(self):
+			return self.getToken(VHDLParser.LIT_IDENTIFIER, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_CaseGenerateAlternative
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_CaseGenerateAlternative"):
+				return visitor.visitRule_CaseGenerateAlternative(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_CaseGenerateAlternative(self):
+
+		localctx = VHDLParser.Rule_CaseGenerateAlternativeContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 58, self.RULE_rule_CaseGenerateAlternative)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 825
+			self.match(VHDLParser.KW_WHEN)
+			self.state = 828
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 44, self._ctx)
+			if la_ == 1:
+				self.state = 826
+				localctx.alternativeLabel = self.match(VHDLParser.LIT_IDENTIFIER)
+				self.state = 827
+				self.match(VHDLParser.TOK_COLON)
+
+			self.state = 830
+			self.rule_Choices()
+			self.state = 831
+			self.match(VHDLParser.TOK_RARROW)
+			self.state = 832
+			self.rule_GenerateStatementBody()
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_CaseGenerateStatementContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.label = None  # Token
+			self.expression = None  # Rule_ExpressionContext
+			self._rule_CaseGenerateAlternative = None  # Rule_CaseGenerateAlternativeContext
+			self.alternatives = list()  # of Rule_CaseGenerateAlternativeContexts
+			self.label2 = None  # Token
+
+		def TOK_COLON(self):
+			return self.getToken(VHDLParser.TOK_COLON, 0)
+
+		def KW_CASE(self):
+			return self.getToken(VHDLParser.KW_CASE, 0)
+
+		def KW_GENERATE(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.KW_GENERATE)
+			else:
+				return self.getToken(VHDLParser.KW_GENERATE, i)
+
+		def KW_END(self):
+			return self.getToken(VHDLParser.KW_END, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def LIT_IDENTIFIER(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.LIT_IDENTIFIER)
+			else:
+				return self.getToken(VHDLParser.LIT_IDENTIFIER, i)
+
+		def rule_Expression(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0)
+
+		def rule_CaseGenerateAlternative(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_CaseGenerateAlternativeContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_CaseGenerateAlternativeContext, i)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_CaseGenerateStatement
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_CaseGenerateStatement"):
+				return visitor.visitRule_CaseGenerateStatement(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_CaseGenerateStatement(self):
+
+		localctx = VHDLParser.Rule_CaseGenerateStatementContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 60, self.RULE_rule_CaseGenerateStatement)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 834
+			localctx.label = self.match(VHDLParser.LIT_IDENTIFIER)
+			self.state = 835
+			self.match(VHDLParser.TOK_COLON)
+			self.state = 836
+			self.match(VHDLParser.KW_CASE)
+			self.state = 837
+			localctx.expression = self.rule_Expression(0)
+			self.state = 838
+			self.match(VHDLParser.KW_GENERATE)
+			self.state = 840
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			while True:
+				self.state = 839
+				localctx._rule_CaseGenerateAlternative = self.rule_CaseGenerateAlternative()
+				localctx.alternatives.append(localctx._rule_CaseGenerateAlternative)
+				self.state = 842
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+				if not (_la == 117):
+					break
+
+			self.state = 844
+			self.match(VHDLParser.KW_END)
+			self.state = 845
+			self.match(VHDLParser.KW_GENERATE)
+			self.state = 847
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 163:
+				self.state = 846
+				localctx.label2 = self.match(VHDLParser.LIT_IDENTIFIER)
+
+			self.state = 849
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_CaseStatementContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.label = None  # Token
+			self.expression = None  # Rule_ExpressionContext
+			self._rule_CaseStatementAlternative = None  # Rule_CaseStatementAlternativeContext
+			self.alternatives = list()  # of Rule_CaseStatementAlternativeContexts
+			self.label2 = None  # Token
+
+		def KW_CASE(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.KW_CASE)
+			else:
+				return self.getToken(VHDLParser.KW_CASE, i)
+
+		def KW_IS(self):
+			return self.getToken(VHDLParser.KW_IS, 0)
+
+		def KW_END(self):
+			return self.getToken(VHDLParser.KW_END, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def rule_Expression(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0)
+
+		def TOK_COLON(self):
+			return self.getToken(VHDLParser.TOK_COLON, 0)
+
+		def LIT_IDENTIFIER(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.LIT_IDENTIFIER)
+			else:
+				return self.getToken(VHDLParser.LIT_IDENTIFIER, i)
+
+		def rule_CaseStatementAlternative(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_CaseStatementAlternativeContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_CaseStatementAlternativeContext, i)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_CaseStatement
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_CaseStatement"):
+				return visitor.visitRule_CaseStatement(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_CaseStatement(self):
+
+		localctx = VHDLParser.Rule_CaseStatementContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 62, self.RULE_rule_CaseStatement)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 853
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 163:
+				self.state = 851
+				localctx.label = self.match(VHDLParser.LIT_IDENTIFIER)
+				self.state = 852
+				self.match(VHDLParser.TOK_COLON)
+
+			self.state = 855
+			self.match(VHDLParser.KW_CASE)
+			self.state = 856
+			localctx.expression = self.rule_Expression(0)
+			self.state = 857
+			self.match(VHDLParser.KW_IS)
+			self.state = 859
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			while True:
+				self.state = 858
+				localctx._rule_CaseStatementAlternative = self.rule_CaseStatementAlternative()
+				localctx.alternatives.append(localctx._rule_CaseStatementAlternative)
+				self.state = 861
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+				if not (_la == 117):
+					break
+
+			self.state = 863
+			self.match(VHDLParser.KW_END)
+			self.state = 864
+			self.match(VHDLParser.KW_CASE)
+			self.state = 866
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 163:
+				self.state = 865
+				localctx.label2 = self.match(VHDLParser.LIT_IDENTIFIER)
+
+			self.state = 868
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_CaseStatementAlternativeContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self._rule_SequentialStatement = None  # Rule_SequentialStatementContext
+			self.statements = list()  # of Rule_SequentialStatementContexts
+
+		def KW_WHEN(self):
+			return self.getToken(VHDLParser.KW_WHEN, 0)
+
+		def rule_Choices(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ChoicesContext, 0)
+
+		def TOK_RARROW(self):
+			return self.getToken(VHDLParser.TOK_RARROW, 0)
+
+		def rule_SequentialStatement(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_SequentialStatementContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_SequentialStatementContext, i)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_CaseStatementAlternative
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_CaseStatementAlternative"):
+				return visitor.visitRule_CaseStatementAlternative(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_CaseStatementAlternative(self):
+
+		localctx = VHDLParser.Rule_CaseStatementAlternativeContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 64, self.RULE_rule_CaseStatementAlternative)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 870
+			self.match(VHDLParser.KW_WHEN)
+			self.state = 871
+			self.rule_Choices()
+			self.state = 872
+			self.match(VHDLParser.TOK_RARROW)
+			self.state = 876
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			while (((_la) & ~0x3f) == 0 and ((1 << _la) & -8052400777563193344) != 0) or (
+				(((_la - 85)) & ~0x3f) == 0 and ((1 << (_la - 85)) & 4899916406390259715) != 0) or (
+				(((_la - 161)) & ~0x3f) == 0 and ((1 << (_la - 161)) & 7) != 0):
+				self.state = 873
+				localctx._rule_SequentialStatement = self.rule_SequentialStatement()
+				localctx.statements.append(localctx._rule_SequentialStatement)
+				self.state = 878
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ChoiceContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_Expression(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0)
+
+		def rule_DiscreteRange(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_DiscreteRangeContext, 0)
+
+		def KW_OTHERS(self):
+			return self.getToken(VHDLParser.KW_OTHERS, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_Choice
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_Choice"):
+				return visitor.visitRule_Choice(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_Choice(self):
+
+		localctx = VHDLParser.Rule_ChoiceContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 66, self.RULE_rule_Choice)
+		try:
+			self.state = 882
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 51, self._ctx)
+			if la_ == 1:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 879
+				self.rule_Expression(0)
+				pass
+
+			elif la_ == 2:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 880
+				self.rule_DiscreteRange()
+				pass
+
+			elif la_ == 3:
+				self.enterOuterAlt(localctx, 3)
+				self.state = 881
+				self.match(VHDLParser.KW_OTHERS)
+				pass
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ChoicesContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self._rule_Choice = None  # Rule_ChoiceContext
+			self.choices = list()  # of Rule_ChoiceContexts
+
+		def rule_Choice(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_ChoiceContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_ChoiceContext, i)
+
+		def TOK_BAR(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.TOK_BAR)
+			else:
+				return self.getToken(VHDLParser.TOK_BAR, i)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_Choices
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_Choices"):
+				return visitor.visitRule_Choices(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_Choices(self):
+
+		localctx = VHDLParser.Rule_ChoicesContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 68, self.RULE_rule_Choices)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 884
+			localctx._rule_Choice = self.rule_Choice()
+			localctx.choices.append(localctx._rule_Choice)
+			self.state = 889
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			while _la == 152:
+				self.state = 885
+				self.match(VHDLParser.TOK_BAR)
+				self.state = 886
+				localctx._rule_Choice = self.rule_Choice()
+				localctx.choices.append(localctx._rule_Choice)
+				self.state = 891
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ComponentConfigurationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.componentSpecification = None  # Rule_ComponentSpecificationContext
+			self.bindingIndication = None  # Rule_BindingIndicationContext
+			self.blockConfiguration = None  # Rule_BlockConfigurationContext
+
+		def KW_FOR(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.KW_FOR)
+			else:
+				return self.getToken(VHDLParser.KW_FOR, i)
+
+		def KW_END(self):
+			return self.getToken(VHDLParser.KW_END, 0)
+
+		def TOK_SEMICOL(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.TOK_SEMICOL)
+			else:
+				return self.getToken(VHDLParser.TOK_SEMICOL, i)
+
+		def rule_ComponentSpecification(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ComponentSpecificationContext, 0)
+
+		def rule_BindingIndication(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_BindingIndicationContext, 0)
+
+		def rule_BlockConfiguration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_BlockConfigurationContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ComponentConfiguration
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ComponentConfiguration"):
+				return visitor.visitRule_ComponentConfiguration(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ComponentConfiguration(self):
+
+		localctx = VHDLParser.Rule_ComponentConfigurationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 70, self.RULE_rule_ComponentConfiguration)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 892
+			self.match(VHDLParser.KW_FOR)
+			self.state = 893
+			localctx.componentSpecification = self.rule_ComponentSpecification()
+			self.state = 897
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 42 or _la == 72 or _la == 108 or _la == 150:
+				self.state = 894
+				localctx.bindingIndication = self.rule_BindingIndication()
+				self.state = 895
+				self.match(VHDLParser.TOK_SEMICOL)
+
+			self.state = 900
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 37:
+				self.state = 899
+				localctx.blockConfiguration = self.rule_BlockConfiguration()
+
+			self.state = 902
+			self.match(VHDLParser.KW_END)
+			self.state = 903
+			self.match(VHDLParser.KW_FOR)
+			self.state = 904
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ComponentDeclarationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.name = None  # Token
+			self.genericClause = None  # Rule_GenericClauseContext
+			self.portClause = None  # Rule_PortClauseContext
+			self.name2 = None  # Token
+
+		def KW_COMPONENT(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.KW_COMPONENT)
+			else:
+				return self.getToken(VHDLParser.KW_COMPONENT, i)
+
+		def KW_END(self):
+			return self.getToken(VHDLParser.KW_END, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def LIT_IDENTIFIER(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.LIT_IDENTIFIER)
+			else:
+				return self.getToken(VHDLParser.LIT_IDENTIFIER, i)
+
+		def KW_IS(self):
+			return self.getToken(VHDLParser.KW_IS, 0)
+
+		def rule_GenericClause(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_GenericClauseContext, 0)
+
+		def rule_PortClause(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_PortClauseContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ComponentDeclaration
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ComponentDeclaration"):
+				return visitor.visitRule_ComponentDeclaration(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ComponentDeclaration(self):
+
+		localctx = VHDLParser.Rule_ComponentDeclarationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 72, self.RULE_rule_ComponentDeclaration)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 906
+			self.match(VHDLParser.KW_COMPONENT)
+			self.state = 907
+			localctx.name = self.match(VHDLParser.LIT_IDENTIFIER)
+			self.state = 909
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 50:
+				self.state = 908
+				self.match(VHDLParser.KW_IS)
+
+			self.state = 912
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 42:
+				self.state = 911
+				localctx.genericClause = self.rule_GenericClause()
+
+			self.state = 915
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 72:
+				self.state = 914
+				localctx.portClause = self.rule_PortClause()
+
+			self.state = 917
+			self.match(VHDLParser.KW_END)
+			self.state = 919
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 23:
+				self.state = 918
+				self.match(VHDLParser.KW_COMPONENT)
+
+			self.state = 922
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 163:
+				self.state = 921
+				localctx.name2 = self.match(VHDLParser.LIT_IDENTIFIER)
+
+			self.state = 924
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ComponentInstantiationStatementContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.label = None  # Token
+			self.instantiatedUnit = None  # Rule_InstantiatedUnitContext
+			self.genericMapAspect = None  # Rule_GenericMapAspectContext
+			self.portMapAspect = None  # Rule_PortMapAspectContext
+
+		def TOK_COLON(self):
+			return self.getToken(VHDLParser.TOK_COLON, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def LIT_IDENTIFIER(self):
+			return self.getToken(VHDLParser.LIT_IDENTIFIER, 0)
+
+		def rule_InstantiatedUnit(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_InstantiatedUnitContext, 0)
+
+		def rule_GenericMapAspect(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_GenericMapAspectContext, 0)
+
+		def rule_PortMapAspect(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_PortMapAspectContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ComponentInstantiationStatement
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ComponentInstantiationStatement"):
+				return visitor.visitRule_ComponentInstantiationStatement(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ComponentInstantiationStatement(self):
+
+		localctx = VHDLParser.Rule_ComponentInstantiationStatementContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 74, self.RULE_rule_ComponentInstantiationStatement)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 926
+			localctx.label = self.match(VHDLParser.LIT_IDENTIFIER)
+			self.state = 927
+			self.match(VHDLParser.TOK_COLON)
+			self.state = 928
+			localctx.instantiatedUnit = self.rule_InstantiatedUnit()
+			self.state = 930
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 42:
+				self.state = 929
+				localctx.genericMapAspect = self.rule_GenericMapAspect()
+
+			self.state = 933
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 72:
+				self.state = 932
+				localctx.portMapAspect = self.rule_PortMapAspect()
+
+			self.state = 935
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ComponentSpecificationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.instantiationList = None  # Rule_InstantiationListContext
+
+		def TOK_COLON(self):
+			return self.getToken(VHDLParser.TOK_COLON, 0)
+
+		def rule_Name(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0)
+
+		def rule_InstantiationList(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_InstantiationListContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ComponentSpecification
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ComponentSpecification"):
+				return visitor.visitRule_ComponentSpecification(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ComponentSpecification(self):
+
+		localctx = VHDLParser.Rule_ComponentSpecificationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 76, self.RULE_rule_ComponentSpecification)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 937
+			localctx.instantiationList = self.rule_InstantiationList()
+			self.state = 938
+			self.match(VHDLParser.TOK_COLON)
+			self.state = 939
+			self.rule_Name(0)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_CompositeTypeDefinitionContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.constrainedArrayDefinition = None  # Rule_ConstrainedArrayDefinitionContext
+			self.unboundedArrayDefinition = None  # Rule_UnboundArrayDefinitionContext
+			self.recordTypeDefinition = None  # Rule_RecordTypeDefinitionContext
+
+		def rule_ConstrainedArrayDefinition(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ConstrainedArrayDefinitionContext, 0)
+
+		def rule_UnboundArrayDefinition(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_UnboundArrayDefinitionContext, 0)
+
+		def rule_RecordTypeDefinition(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_RecordTypeDefinitionContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_CompositeTypeDefinition
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_CompositeTypeDefinition"):
+				return visitor.visitRule_CompositeTypeDefinition(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_CompositeTypeDefinition(self):
+
+		localctx = VHDLParser.Rule_CompositeTypeDefinitionContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 78, self.RULE_rule_CompositeTypeDefinition)
+		try:
+			self.state = 944
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 62, self._ctx)
+			if la_ == 1:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 941
+				localctx.constrainedArrayDefinition = self.rule_ConstrainedArrayDefinition()
+				pass
+
+			elif la_ == 2:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 942
+				localctx.unboundedArrayDefinition = self.rule_UnboundArrayDefinition()
+				pass
+
+			elif la_ == 3:
+				self.enterOuterAlt(localctx, 3)
+				self.state = 943
+				localctx.recordTypeDefinition = self.rule_RecordTypeDefinition()
+				pass
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_CompoundConfigurationSpecificationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def KW_FOR(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.KW_FOR)
+			else:
+				return self.getToken(VHDLParser.KW_FOR, i)
+
+		def rule_ComponentSpecification(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ComponentSpecificationContext, 0)
+
+		def rule_BindingIndication(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_BindingIndicationContext, 0)
+
+		def TOK_SEMICOL(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.TOK_SEMICOL)
+			else:
+				return self.getToken(VHDLParser.TOK_SEMICOL, i)
+
+		def KW_END(self):
+			return self.getToken(VHDLParser.KW_END, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_CompoundConfigurationSpecification
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_CompoundConfigurationSpecification"):
+				return visitor.visitRule_CompoundConfigurationSpecification(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_CompoundConfigurationSpecification(self):
+
+		localctx = VHDLParser.Rule_CompoundConfigurationSpecificationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 80, self.RULE_rule_CompoundConfigurationSpecification)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 946
+			self.match(VHDLParser.KW_FOR)
+			self.state = 947
+			self.rule_ComponentSpecification()
+			self.state = 948
+			self.rule_BindingIndication()
+			self.state = 949
+			self.match(VHDLParser.TOK_SEMICOL)
+			self.state = 950
+			self.match(VHDLParser.KW_END)
+			self.state = 951
+			self.match(VHDLParser.KW_FOR)
+			self.state = 952
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ConcurrentAssertionStatementContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.label = None  # Token
+			self.postponed = None  # Token
+
+		def rule_Assertion(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_AssertionContext, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def TOK_COLON(self):
+			return self.getToken(VHDLParser.TOK_COLON, 0)
+
+		def LIT_IDENTIFIER(self):
+			return self.getToken(VHDLParser.LIT_IDENTIFIER, 0)
+
+		def KW_POSTPONED(self):
+			return self.getToken(VHDLParser.KW_POSTPONED, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ConcurrentAssertionStatement
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ConcurrentAssertionStatement"):
+				return visitor.visitRule_ConcurrentAssertionStatement(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ConcurrentAssertionStatement(self):
+
+		localctx = VHDLParser.Rule_ConcurrentAssertionStatementContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 82, self.RULE_rule_ConcurrentAssertionStatement)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 956
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 163:
+				self.state = 954
+				localctx.label = self.match(VHDLParser.LIT_IDENTIFIER)
+				self.state = 955
+				self.match(VHDLParser.TOK_COLON)
+
+			self.state = 959
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 73:
+				self.state = 958
+				localctx.postponed = self.match(VHDLParser.KW_POSTPONED)
+
+			self.state = 961
+			self.rule_Assertion()
+			self.state = 962
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ConcurrentConditionalSignalAssignmentContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.guarded = None  # Token
+			self.delayMechanism = None  # Rule_DelayMechanismContext
+			self.conditionalWaveforms = None  # Rule_ConditionalWaveformsContext
+
+		def rule_Target(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_TargetContext, 0)
+
+		def TOK_SIG_ASSIGN(self):
+			return self.getToken(VHDLParser.TOK_SIG_ASSIGN, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def rule_ConditionalWaveforms(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ConditionalWaveformsContext, 0)
+
+		def KW_GUARDED(self):
+			return self.getToken(VHDLParser.KW_GUARDED, 0)
+
+		def rule_DelayMechanism(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_DelayMechanismContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ConcurrentConditionalSignalAssignment
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ConcurrentConditionalSignalAssignment"):
+				return visitor.visitRule_ConcurrentConditionalSignalAssignment(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ConcurrentConditionalSignalAssignment(self):
+
+		localctx = VHDLParser.Rule_ConcurrentConditionalSignalAssignmentContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 84, self.RULE_rule_ConcurrentConditionalSignalAssignment)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 964
+			self.rule_Target()
+			self.state = 965
+			self.match(VHDLParser.TOK_SIG_ASSIGN)
+			self.state = 967
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 43:
+				self.state = 966
+				localctx.guarded = self.match(VHDLParser.KW_GUARDED)
+
+			self.state = 970
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if (((_la - 48)) & ~0x3f) == 0 and ((1 << (_la - 48)) & 36028814198833153) != 0:
+				self.state = 969
+				localctx.delayMechanism = self.rule_DelayMechanism()
+
+			self.state = 972
+			localctx.conditionalWaveforms = self.rule_ConditionalWaveforms()
+			self.state = 973
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ConcurrentProcedureCallStatementContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.label = None  # Token
+			self.postponed = None  # Token
+			self.procedureCall = None  # Rule_ProcedureCallContext
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def rule_ProcedureCall(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ProcedureCallContext, 0)
+
+		def TOK_COLON(self):
+			return self.getToken(VHDLParser.TOK_COLON, 0)
+
+		def LIT_IDENTIFIER(self):
+			return self.getToken(VHDLParser.LIT_IDENTIFIER, 0)
+
+		def KW_POSTPONED(self):
+			return self.getToken(VHDLParser.KW_POSTPONED, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ConcurrentProcedureCallStatement
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ConcurrentProcedureCallStatement"):
+				return visitor.visitRule_ConcurrentProcedureCallStatement(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ConcurrentProcedureCallStatement(self):
+
+		localctx = VHDLParser.Rule_ConcurrentProcedureCallStatementContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 86, self.RULE_rule_ConcurrentProcedureCallStatement)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 977
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 67, self._ctx)
+			if la_ == 1:
+				self.state = 975
+				localctx.label = self.match(VHDLParser.LIT_IDENTIFIER)
+				self.state = 976
+				self.match(VHDLParser.TOK_COLON)
+
+			self.state = 980
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 73:
+				self.state = 979
+				localctx.postponed = self.match(VHDLParser.KW_POSTPONED)
+
+			self.state = 982
+			localctx.procedureCall = self.rule_ProcedureCall()
+			self.state = 983
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ConcurrentSelectedSignalAssignmentContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.expression = None  # Rule_ExpressionContext
+			self.target = None  # Rule_TargetContext
+			self.guarded = None  # Token
+			self.delayMechanism = None  # Rule_DelayMechanismContext
+			self.selectedWaveforms = None  # Rule_SelectedWaveformsContext
+
+		def KW_WITH(self):
+			return self.getToken(VHDLParser.KW_WITH, 0)
+
+		def KW_SELECT(self):
+			return self.getToken(VHDLParser.KW_SELECT, 0)
+
+		def TOK_SIG_ASSIGN(self):
+			return self.getToken(VHDLParser.TOK_SIG_ASSIGN, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def rule_Expression(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0)
+
+		def rule_Target(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_TargetContext, 0)
+
+		def rule_SelectedWaveforms(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SelectedWaveformsContext, 0)
+
+		def KW_GUARDED(self):
+			return self.getToken(VHDLParser.KW_GUARDED, 0)
+
+		def rule_DelayMechanism(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_DelayMechanismContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ConcurrentSelectedSignalAssignment
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ConcurrentSelectedSignalAssignment"):
+				return visitor.visitRule_ConcurrentSelectedSignalAssignment(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ConcurrentSelectedSignalAssignment(self):
+
+		localctx = VHDLParser.Rule_ConcurrentSelectedSignalAssignmentContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 88, self.RULE_rule_ConcurrentSelectedSignalAssignment)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 985
+			self.match(VHDLParser.KW_WITH)
+			self.state = 986
+			localctx.expression = self.rule_Expression(0)
+			self.state = 987
+			self.match(VHDLParser.KW_SELECT)
+			self.state = 988
+			localctx.target = self.rule_Target()
+			self.state = 989
+			self.match(VHDLParser.TOK_SIG_ASSIGN)
+			self.state = 991
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 43:
+				self.state = 990
+				localctx.guarded = self.match(VHDLParser.KW_GUARDED)
+
+			self.state = 994
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if (((_la - 48)) & ~0x3f) == 0 and ((1 << (_la - 48)) & 36028814198833153) != 0:
+				self.state = 993
+				localctx.delayMechanism = self.rule_DelayMechanism()
+
+			self.state = 996
+			localctx.selectedWaveforms = self.rule_SelectedWaveforms()
+			self.state = 997
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ConcurrentSignalAssignmentStatementContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.label = None  # Token
+			self.postponed = None  # Token
+
+		def rule_ConcurrentSimpleSignalAssignment(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ConcurrentSimpleSignalAssignmentContext, 0)
+
+		def rule_ConcurrentConditionalSignalAssignment(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ConcurrentConditionalSignalAssignmentContext, 0)
+
+		def rule_ConcurrentSelectedSignalAssignment(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ConcurrentSelectedSignalAssignmentContext, 0)
+
+		def TOK_COLON(self):
+			return self.getToken(VHDLParser.TOK_COLON, 0)
+
+		def LIT_IDENTIFIER(self):
+			return self.getToken(VHDLParser.LIT_IDENTIFIER, 0)
+
+		def KW_POSTPONED(self):
+			return self.getToken(VHDLParser.KW_POSTPONED, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ConcurrentSignalAssignmentStatement
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ConcurrentSignalAssignmentStatement"):
+				return visitor.visitRule_ConcurrentSignalAssignmentStatement(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ConcurrentSignalAssignmentStatement(self):
+
+		localctx = VHDLParser.Rule_ConcurrentSignalAssignmentStatementContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 90, self.RULE_rule_ConcurrentSignalAssignmentStatement)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1001
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 71, self._ctx)
+			if la_ == 1:
+				self.state = 999
+				localctx.label = self.match(VHDLParser.LIT_IDENTIFIER)
+				self.state = 1000
+				self.match(VHDLParser.TOK_COLON)
+
+			self.state = 1004
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 73:
+				self.state = 1003
+				localctx.postponed = self.match(VHDLParser.KW_POSTPONED)
+
+			self.state = 1009
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 73, self._ctx)
+			if la_ == 1:
+				self.state = 1006
+				self.rule_ConcurrentSimpleSignalAssignment()
+				pass
+
+			elif la_ == 2:
+				self.state = 1007
+				self.rule_ConcurrentConditionalSignalAssignment()
+				pass
+
+			elif la_ == 3:
+				self.state = 1008
+				self.rule_ConcurrentSelectedSignalAssignment()
+				pass
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ConcurrentSimpleSignalAssignmentContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.target = None  # Rule_TargetContext
+			self.guarded = None  # Token
+			self.delayMechanism = None  # Rule_DelayMechanismContext
+			self.waveform = None  # Rule_WaveformContext
+
+		def TOK_SIG_ASSIGN(self):
+			return self.getToken(VHDLParser.TOK_SIG_ASSIGN, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def rule_Target(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_TargetContext, 0)
+
+		def rule_Waveform(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_WaveformContext, 0)
+
+		def KW_GUARDED(self):
+			return self.getToken(VHDLParser.KW_GUARDED, 0)
+
+		def rule_DelayMechanism(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_DelayMechanismContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ConcurrentSimpleSignalAssignment
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ConcurrentSimpleSignalAssignment"):
+				return visitor.visitRule_ConcurrentSimpleSignalAssignment(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ConcurrentSimpleSignalAssignment(self):
+
+		localctx = VHDLParser.Rule_ConcurrentSimpleSignalAssignmentContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 92, self.RULE_rule_ConcurrentSimpleSignalAssignment)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1011
+			localctx.target = self.rule_Target()
+			self.state = 1012
+			self.match(VHDLParser.TOK_SIG_ASSIGN)
+			self.state = 1014
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 43:
+				self.state = 1013
+				localctx.guarded = self.match(VHDLParser.KW_GUARDED)
+
+			self.state = 1017
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if (((_la - 48)) & ~0x3f) == 0 and ((1 << (_la - 48)) & 36028814198833153) != 0:
+				self.state = 1016
+				localctx.delayMechanism = self.rule_DelayMechanism()
+
+			self.state = 1019
+			localctx.waveform = self.rule_Waveform()
+			self.state = 1020
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ConcurrentStatementContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.blockStatement = None  # Rule_BlockStatementContext
+			self.processStatement = None  # Rule_ProcessStatementContext
+			self.postponedProcessStatement = None  # Rule_PostponedProcessStatementContext
+			self.label = None  # Token
+			self.procedureCallStatement = None  # Rule_ConcurrentProcedureCallStatementContext
+			self.assertionStatement = None  # Rule_ConcurrentAssertionStatementContext
+			self.postponed = None  # Token
+			self.signalAssignmentStatement = None  # Rule_ConcurrentSignalAssignmentStatementContext
+			self.instantiationStatement = None  # Rule_ComponentInstantiationStatementContext
+			self.generateStatement = None  # Rule_GenerateStatementContext
+
+		def rule_BlockStatement(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_BlockStatementContext, 0)
+
+		def rule_ProcessStatement(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ProcessStatementContext, 0)
+
+		def rule_PostponedProcessStatement(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_PostponedProcessStatementContext, 0)
+
+		def rule_ConcurrentProcedureCallStatement(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ConcurrentProcedureCallStatementContext, 0)
+
+		def TOK_COLON(self):
+			return self.getToken(VHDLParser.TOK_COLON, 0)
+
+		def LIT_IDENTIFIER(self):
+			return self.getToken(VHDLParser.LIT_IDENTIFIER, 0)
+
+		def rule_ConcurrentAssertionStatement(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ConcurrentAssertionStatementContext, 0)
+
+		def rule_ConcurrentSignalAssignmentStatement(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ConcurrentSignalAssignmentStatementContext, 0)
+
+		def KW_POSTPONED(self):
+			return self.getToken(VHDLParser.KW_POSTPONED, 0)
+
+		def rule_ComponentInstantiationStatement(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ComponentInstantiationStatementContext, 0)
+
+		def rule_GenerateStatement(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_GenerateStatementContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ConcurrentStatement
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ConcurrentStatement"):
+				return visitor.visitRule_ConcurrentStatement(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ConcurrentStatement(self):
+
+		localctx = VHDLParser.Rule_ConcurrentStatementContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 94, self.RULE_rule_ConcurrentStatement)
+		try:
+			self.state = 1045
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 80, self._ctx)
+			if la_ == 1:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 1022
+				localctx.blockStatement = self.rule_BlockStatement()
+				pass
+
+			elif la_ == 2:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 1023
+				localctx.processStatement = self.rule_ProcessStatement()
+				pass
+
+			elif la_ == 3:
+				self.enterOuterAlt(localctx, 3)
+				self.state = 1024
+				localctx.postponedProcessStatement = self.rule_PostponedProcessStatement()
+				pass
+
+			elif la_ == 4:
+				self.enterOuterAlt(localctx, 4)
+				self.state = 1027
+				self._errHandler.sync(self)
+				la_ = self._interp.adaptivePredict(self._input, 76, self._ctx)
+				if la_ == 1:
+					self.state = 1025
+					localctx.label = self.match(VHDLParser.LIT_IDENTIFIER)
+					self.state = 1026
+					self.match(VHDLParser.TOK_COLON)
+
+				self.state = 1029
+				localctx.procedureCallStatement = self.rule_ConcurrentProcedureCallStatement()
+				pass
+
+			elif la_ == 5:
+				self.enterOuterAlt(localctx, 5)
+				self.state = 1032
+				self._errHandler.sync(self)
+				la_ = self._interp.adaptivePredict(self._input, 77, self._ctx)
+				if la_ == 1:
+					self.state = 1030
+					localctx.label = self.match(VHDLParser.LIT_IDENTIFIER)
+					self.state = 1031
+					self.match(VHDLParser.TOK_COLON)
+
+				self.state = 1034
+				localctx.assertionStatement = self.rule_ConcurrentAssertionStatement()
+				pass
+
+			elif la_ == 6:
+				self.enterOuterAlt(localctx, 6)
+				self.state = 1037
+				self._errHandler.sync(self)
+				la_ = self._interp.adaptivePredict(self._input, 78, self._ctx)
+				if la_ == 1:
+					self.state = 1035
+					localctx.label = self.match(VHDLParser.LIT_IDENTIFIER)
+					self.state = 1036
+					self.match(VHDLParser.TOK_COLON)
+
+				self.state = 1040
+				self._errHandler.sync(self)
+				la_ = self._interp.adaptivePredict(self._input, 79, self._ctx)
+				if la_ == 1:
+					self.state = 1039
+					localctx.postponed = self.match(VHDLParser.KW_POSTPONED)
+
+				self.state = 1042
+				localctx.signalAssignmentStatement = self.rule_ConcurrentSignalAssignmentStatement()
+				pass
+
+			elif la_ == 7:
+				self.enterOuterAlt(localctx, 7)
+				self.state = 1043
+				localctx.instantiationStatement = self.rule_ComponentInstantiationStatement()
+				pass
+
+			elif la_ == 8:
+				self.enterOuterAlt(localctx, 8)
+				self.state = 1044
+				localctx.generateStatement = self.rule_GenerateStatement()
+				pass
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ConditionClauseContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.condition = None  # Rule_ExpressionContext
+
+		def KW_UNTIL(self):
+			return self.getToken(VHDLParser.KW_UNTIL, 0)
+
+		def rule_Expression(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ConditionClause
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ConditionClause"):
+				return visitor.visitRule_ConditionClause(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ConditionClause(self):
+
+		localctx = VHDLParser.Rule_ConditionClauseContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 96, self.RULE_rule_ConditionClause)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1047
+			self.match(VHDLParser.KW_UNTIL)
+			self.state = 1048
+			localctx.condition = self.rule_Expression(0)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ConditionalExpressionContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.left = None  # Rule_ExpressionContext
+			self.condition = None  # Rule_ExpressionContext
+			self.right = None  # Rule_ExpressionContext
+
+		def rule_Expression(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_ExpressionContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, i)
+
+		def KW_WHEN(self):
+			return self.getToken(VHDLParser.KW_WHEN, 0)
+
+		def KW_ELSE(self):
+			return self.getToken(VHDLParser.KW_ELSE, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ConditionalExpression
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ConditionalExpression"):
+				return visitor.visitRule_ConditionalExpression(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ConditionalExpression(self):
+
+		localctx = VHDLParser.Rule_ConditionalExpressionContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 98, self.RULE_rule_ConditionalExpression)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1050
+			localctx.left = self.rule_Expression(0)
+			self.state = 1056
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 117:
+				self.state = 1051
+				self.match(VHDLParser.KW_WHEN)
+				self.state = 1052
+				localctx.condition = self.rule_Expression(0)
+				self.state = 1053
+				self.match(VHDLParser.KW_ELSE)
+				self.state = 1054
+				localctx.right = self.rule_Expression(0)
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ConditionalOrUnaffectedExpressionContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.left = None  # Rule_ExpressionOrUnaffectedContext
+			self.condition = None  # Rule_ExpressionContext
+			self.right = None  # Rule_ExpressionOrUnaffectedContext
+			self.finalCondition = None  # Rule_ExpressionContext
+
+		def rule_ExpressionOrUnaffected(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_ExpressionOrUnaffectedContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_ExpressionOrUnaffectedContext, i)
+
+		def KW_WHEN(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.KW_WHEN)
+			else:
+				return self.getToken(VHDLParser.KW_WHEN, i)
+
+		def KW_ELSE(self):
+			return self.getToken(VHDLParser.KW_ELSE, 0)
+
+		def rule_Expression(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_ExpressionContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, i)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ConditionalOrUnaffectedExpression
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ConditionalOrUnaffectedExpression"):
+				return visitor.visitRule_ConditionalOrUnaffectedExpression(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ConditionalOrUnaffectedExpression(self):
+
+		localctx = VHDLParser.Rule_ConditionalOrUnaffectedExpressionContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 100, self.RULE_rule_ConditionalOrUnaffectedExpression)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1058
+			localctx.left = self.rule_ExpressionOrUnaffected()
+			self.state = 1064
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 82, self._ctx)
+			if la_ == 1:
+				self.state = 1059
+				self.match(VHDLParser.KW_WHEN)
+				self.state = 1060
+				localctx.condition = self.rule_Expression(0)
+				self.state = 1061
+				self.match(VHDLParser.KW_ELSE)
+				self.state = 1062
+				localctx.right = self.rule_ExpressionOrUnaffected()
+
+			self.state = 1068
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 117:
+				self.state = 1066
+				self.match(VHDLParser.KW_WHEN)
+				self.state = 1067
+				localctx.finalCondition = self.rule_Expression(0)
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ConditionalSignalAssignmentContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.target = None  # Rule_TargetContext
+			self.delayMechanism = None  # Rule_DelayMechanismContext
+			self.conditionalWaveforms = None  # Rule_ConditionalWaveformsContext
+
+		def TOK_SIG_ASSIGN(self):
+			return self.getToken(VHDLParser.TOK_SIG_ASSIGN, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def rule_Target(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_TargetContext, 0)
+
+		def rule_ConditionalWaveforms(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ConditionalWaveformsContext, 0)
+
+		def rule_DelayMechanism(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_DelayMechanismContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ConditionalSignalAssignment
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ConditionalSignalAssignment"):
+				return visitor.visitRule_ConditionalSignalAssignment(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ConditionalSignalAssignment(self):
+
+		localctx = VHDLParser.Rule_ConditionalSignalAssignmentContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 102, self.RULE_rule_ConditionalSignalAssignment)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1070
+			localctx.target = self.rule_Target()
+			self.state = 1071
+			self.match(VHDLParser.TOK_SIG_ASSIGN)
+			self.state = 1073
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if (((_la - 48)) & ~0x3f) == 0 and ((1 << (_la - 48)) & 36028814198833153) != 0:
+				self.state = 1072
+				localctx.delayMechanism = self.rule_DelayMechanism()
+
+			self.state = 1075
+			localctx.conditionalWaveforms = self.rule_ConditionalWaveforms()
+			self.state = 1076
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ConditionalWaveformsContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.waveform = None  # Rule_WaveformContext
+			self.condition = None  # Rule_ExpressionContext
+			self._rule_Waveform = None  # Rule_WaveformContext
+			self.waveforms = list()  # of Rule_WaveformContexts
+			self._rule_Expression = None  # Rule_ExpressionContext
+			self.conditions = list()  # of Rule_ExpressionContexts
+			self.lastCondition = None  # Rule_ExpressionContext
+
+		def KW_WHEN(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.KW_WHEN)
+			else:
+				return self.getToken(VHDLParser.KW_WHEN, i)
+
+		def rule_Waveform(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_WaveformContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_WaveformContext, i)
+
+		def rule_Expression(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_ExpressionContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, i)
+
+		def KW_ELSE(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.KW_ELSE)
+			else:
+				return self.getToken(VHDLParser.KW_ELSE, i)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ConditionalWaveforms
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ConditionalWaveforms"):
+				return visitor.visitRule_ConditionalWaveforms(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ConditionalWaveforms(self):
+
+		localctx = VHDLParser.Rule_ConditionalWaveformsContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 104, self.RULE_rule_ConditionalWaveforms)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1078
+			localctx.waveform = self.rule_Waveform()
+			self.state = 1079
+			self.match(VHDLParser.KW_WHEN)
+			self.state = 1080
+			localctx.condition = self.rule_Expression(0)
+			self.state = 1088
+			self._errHandler.sync(self)
+			_alt = self._interp.adaptivePredict(self._input, 85, self._ctx)
+			while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+				if _alt == 1:
+					self.state = 1081
+					self.match(VHDLParser.KW_ELSE)
+					self.state = 1082
+					localctx._rule_Waveform = self.rule_Waveform()
+					localctx.waveforms.append(localctx._rule_Waveform)
+					self.state = 1083
+					self.match(VHDLParser.KW_WHEN)
+					self.state = 1084
+					localctx._rule_Expression = self.rule_Expression(0)
+					localctx.conditions.append(localctx._rule_Expression)
+				self.state = 1090
+				self._errHandler.sync(self)
+				_alt = self._interp.adaptivePredict(self._input, 85, self._ctx)
+
+			self.state = 1093
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 31:
+				self.state = 1091
+				self.match(VHDLParser.KW_ELSE)
+				self.state = 1092
+				localctx.lastCondition = self.rule_Expression(0)
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ConfigurationDeclarationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.name = None  # Token
+			self.entityName = None  # Rule_NameContext
+			self._rule_ConfigurationDeclarativeItem = None  # Rule_ConfigurationDeclarativeItemContext
+			self.configurationDeclarativeItem = list()  # of Rule_ConfigurationDeclarativeItemContexts
+			self.blockConfiguration = None  # Rule_BlockConfigurationContext
+			self.name2 = None  # Token
+
+		def KW_CONFIGURATION(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.KW_CONFIGURATION)
+			else:
+				return self.getToken(VHDLParser.KW_CONFIGURATION, i)
+
+		def KW_OF(self):
+			return self.getToken(VHDLParser.KW_OF, 0)
+
+		def KW_IS(self):
+			return self.getToken(VHDLParser.KW_IS, 0)
+
+		def KW_END(self):
+			return self.getToken(VHDLParser.KW_END, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def LIT_IDENTIFIER(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.LIT_IDENTIFIER)
+			else:
+				return self.getToken(VHDLParser.LIT_IDENTIFIER, i)
+
+		def rule_Name(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0)
+
+		def rule_BlockConfiguration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_BlockConfigurationContext, 0)
+
+		def rule_ConfigurationDeclarativeItem(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_ConfigurationDeclarativeItemContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_ConfigurationDeclarativeItemContext, i)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ConfigurationDeclaration
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ConfigurationDeclaration"):
+				return visitor.visitRule_ConfigurationDeclaration(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ConfigurationDeclaration(self):
+
+		localctx = VHDLParser.Rule_ConfigurationDeclarationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 106, self.RULE_rule_ConfigurationDeclaration)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1095
+			self.match(VHDLParser.KW_CONFIGURATION)
+			self.state = 1096
+			localctx.name = self.match(VHDLParser.LIT_IDENTIFIER)
+			self.state = 1097
+			self.match(VHDLParser.KW_OF)
+			self.state = 1098
+			localctx.entityName = self.rule_Name(0)
+			self.state = 1099
+			self.match(VHDLParser.KW_IS)
+			self.state = 1103
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			while _la == 15 or _la == 44 or _la == 108:
+				self.state = 1100
+				localctx._rule_ConfigurationDeclarativeItem = self.rule_ConfigurationDeclarativeItem()
+				localctx.configurationDeclarativeItem.append(localctx._rule_ConfigurationDeclarativeItem)
+				self.state = 1105
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+
+			self.state = 1106
+			localctx.blockConfiguration = self.rule_BlockConfiguration()
+			self.state = 1107
+			self.match(VHDLParser.KW_END)
+			self.state = 1109
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 24:
+				self.state = 1108
+				self.match(VHDLParser.KW_CONFIGURATION)
+
+			self.state = 1112
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 163:
+				self.state = 1111
+				localctx.name2 = self.match(VHDLParser.LIT_IDENTIFIER)
+
+			self.state = 1114
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ConfigurationDeclarativeItemContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_UseClause(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_UseClauseContext, 0)
+
+		def rule_AttributeSpecification(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_AttributeSpecificationContext, 0)
+
+		def rule_GroupDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_GroupDeclarationContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ConfigurationDeclarativeItem
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ConfigurationDeclarativeItem"):
+				return visitor.visitRule_ConfigurationDeclarativeItem(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ConfigurationDeclarativeItem(self):
+
+		localctx = VHDLParser.Rule_ConfigurationDeclarativeItemContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 108, self.RULE_rule_ConfigurationDeclarativeItem)
+		try:
+			self.state = 1119
+			self._errHandler.sync(self)
+			token = self._input.LA(1)
+			if token in [108]:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 1116
+				self.rule_UseClause()
+				pass
+			elif token in [15]:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 1117
+				self.rule_AttributeSpecification()
+				pass
+			elif token in [44]:
+				self.enterOuterAlt(localctx, 3)
+				self.state = 1118
+				self.rule_GroupDeclaration()
+				pass
+			else:
+				raise NoViableAltException(self)
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ConfigurationItemContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_BlockConfiguration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_BlockConfigurationContext, 0)
+
+		def rule_ComponentConfiguration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ComponentConfigurationContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ConfigurationItem
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ConfigurationItem"):
+				return visitor.visitRule_ConfigurationItem(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ConfigurationItem(self):
+
+		localctx = VHDLParser.Rule_ConfigurationItemContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 110, self.RULE_rule_ConfigurationItem)
+		try:
+			self.state = 1123
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 91, self._ctx)
+			if la_ == 1:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 1121
+				self.rule_BlockConfiguration()
+				pass
+
+			elif la_ == 2:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 1122
+				self.rule_ComponentConfiguration()
+				pass
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ConfigurationSpecificationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_SimpleConfigurationSpecification(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SimpleConfigurationSpecificationContext, 0)
+
+		def rule_CompoundConfigurationSpecification(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_CompoundConfigurationSpecificationContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ConfigurationSpecification
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ConfigurationSpecification"):
+				return visitor.visitRule_ConfigurationSpecification(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ConfigurationSpecification(self):
+
+		localctx = VHDLParser.Rule_ConfigurationSpecificationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 112, self.RULE_rule_ConfigurationSpecification)
+		try:
+			self.state = 1127
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 92, self._ctx)
+			if la_ == 1:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 1125
+				self.rule_SimpleConfigurationSpecification()
+				pass
+
+			elif la_ == 2:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 1126
+				self.rule_CompoundConfigurationSpecification()
+				pass
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ConstantDeclarationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.name = None  # Rule_IdentifierListContext
+			self.subtypeIndication = None  # Rule_SubtypeIndicationContext
+			self.expression = None  # Rule_ConditionalExpressionContext
+
+		def KW_CONSTANT(self):
+			return self.getToken(VHDLParser.KW_CONSTANT, 0)
+
+		def TOK_COLON(self):
+			return self.getToken(VHDLParser.TOK_COLON, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def rule_IdentifierList(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_IdentifierListContext, 0)
+
+		def rule_SubtypeIndication(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubtypeIndicationContext, 0)
+
+		def TOK_VAR_ASSIGN(self):
+			return self.getToken(VHDLParser.TOK_VAR_ASSIGN, 0)
+
+		def rule_ConditionalExpression(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ConditionalExpressionContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ConstantDeclaration
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ConstantDeclaration"):
+				return visitor.visitRule_ConstantDeclaration(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ConstantDeclaration(self):
+
+		localctx = VHDLParser.Rule_ConstantDeclarationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 114, self.RULE_rule_ConstantDeclaration)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1129
+			self.match(VHDLParser.KW_CONSTANT)
+			self.state = 1130
+			localctx.name = self.rule_IdentifierList()
+			self.state = 1131
+			self.match(VHDLParser.TOK_COLON)
+			self.state = 1132
+			localctx.subtypeIndication = self.rule_SubtypeIndication()
+			self.state = 1135
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 141:
+				self.state = 1133
+				self.match(VHDLParser.TOK_VAR_ASSIGN)
+				self.state = 1134
+				localctx.expression = self.rule_ConditionalExpression()
+
+			self.state = 1137
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ConstrainedArrayDefinitionContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.subtypeIndication = None  # Rule_SubtypeIndicationContext
+
+		def KW_ARRAY(self):
+			return self.getToken(VHDLParser.KW_ARRAY, 0)
+
+		def rule_IndexConstraint(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_IndexConstraintContext, 0)
+
+		def KW_OF(self):
+			return self.getToken(VHDLParser.KW_OF, 0)
+
+		def rule_SubtypeIndication(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubtypeIndicationContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ConstrainedArrayDefinition
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ConstrainedArrayDefinition"):
+				return visitor.visitRule_ConstrainedArrayDefinition(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ConstrainedArrayDefinition(self):
+
+		localctx = VHDLParser.Rule_ConstrainedArrayDefinitionContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 116, self.RULE_rule_ConstrainedArrayDefinition)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1139
+			self.match(VHDLParser.KW_ARRAY)
+			self.state = 1140
+			self.rule_IndexConstraint()
+			self.state = 1141
+			self.match(VHDLParser.KW_OF)
+			self.state = 1142
+			localctx.subtypeIndication = self.rule_SubtypeIndication()
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ConstraintContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_SimpleRange(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SimpleRangeContext, 0)
+
+		def rule_RangeConstraint(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_RangeConstraintContext, 0)
+
+		def rule_ArrayConstraint(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ArrayConstraintContext, 0)
+
+		def rule_RecordConstraint(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_RecordConstraintContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_Constraint
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_Constraint"):
+				return visitor.visitRule_Constraint(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_Constraint(self):
+
+		localctx = VHDLParser.Rule_ConstraintContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 118, self.RULE_rule_Constraint)
+		try:
+			self.state = 1148
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 94, self._ctx)
+			if la_ == 1:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 1144
+				self.rule_SimpleRange()
+				pass
+
+			elif la_ == 2:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 1145
+				self.rule_RangeConstraint()
+				pass
+
+			elif la_ == 3:
+				self.enterOuterAlt(localctx, 3)
+				self.state = 1146
+				self.rule_ArrayConstraint()
+				pass
+
+			elif la_ == 4:
+				self.enterOuterAlt(localctx, 4)
+				self.state = 1147
+				self.rule_RecordConstraint()
+				pass
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ContextDeclarationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.name = None  # Token
+			self._rule_ContextItem = None  # Rule_ContextItemContext
+			self.contextItems = list()  # of Rule_ContextItemContexts
+			self.name2 = None  # Token
+
+		def KW_CONTEXT(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.KW_CONTEXT)
+			else:
+				return self.getToken(VHDLParser.KW_CONTEXT, i)
+
+		def KW_IS(self):
+			return self.getToken(VHDLParser.KW_IS, 0)
+
+		def KW_END(self):
+			return self.getToken(VHDLParser.KW_END, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def LIT_IDENTIFIER(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.LIT_IDENTIFIER)
+			else:
+				return self.getToken(VHDLParser.LIT_IDENTIFIER, i)
+
+		def rule_ContextItem(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_ContextItemContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_ContextItemContext, i)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ContextDeclaration
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ContextDeclaration"):
+				return visitor.visitRule_ContextDeclaration(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ContextDeclaration(self):
+
+		localctx = VHDLParser.Rule_ContextDeclarationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 120, self.RULE_rule_ContextDeclaration)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1150
+			self.match(VHDLParser.KW_CONTEXT)
+			self.state = 1151
+			localctx.name = self.match(VHDLParser.LIT_IDENTIFIER)
+			self.state = 1152
+			self.match(VHDLParser.KW_IS)
+			self.state = 1156
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			while _la == 26 or _la == 52 or _la == 108:
+				self.state = 1153
+				localctx._rule_ContextItem = self.rule_ContextItem()
+				localctx.contextItems.append(localctx._rule_ContextItem)
+				self.state = 1158
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+
+			self.state = 1159
+			self.match(VHDLParser.KW_END)
+			self.state = 1161
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 26:
+				self.state = 1160
+				self.match(VHDLParser.KW_CONTEXT)
+
+			self.state = 1163
+			localctx.name2 = self.match(VHDLParser.LIT_IDENTIFIER)
+			self.state = 1164
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ContextItemContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.libraryClause = None  # Rule_LibraryClauseContext
+			self.useClause = None  # Rule_UseClauseContext
+			self.contextReference = None  # Rule_ContextReferenceContext
+
+		def rule_LibraryClause(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_LibraryClauseContext, 0)
+
+		def rule_UseClause(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_UseClauseContext, 0)
+
+		def rule_ContextReference(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ContextReferenceContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ContextItem
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ContextItem"):
+				return visitor.visitRule_ContextItem(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ContextItem(self):
+
+		localctx = VHDLParser.Rule_ContextItemContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 122, self.RULE_rule_ContextItem)
+		try:
+			self.state = 1169
+			self._errHandler.sync(self)
+			token = self._input.LA(1)
+			if token in [52]:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 1166
+				localctx.libraryClause = self.rule_LibraryClause()
+				pass
+			elif token in [108]:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 1167
+				localctx.useClause = self.rule_UseClause()
+				pass
+			elif token in [26]:
+				self.enterOuterAlt(localctx, 3)
+				self.state = 1168
+				localctx.contextReference = self.rule_ContextReference()
+				pass
+			else:
+				raise NoViableAltException(self)
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ContextReferenceContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self._rule_SelectedName2 = None  # Rule_SelectedName2Context
+			self.names = list()  # of Rule_SelectedName2Contexts
+
+		def KW_CONTEXT(self):
+			return self.getToken(VHDLParser.KW_CONTEXT, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def rule_SelectedName2(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_SelectedName2Context)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_SelectedName2Context, i)
+
+		def TOK_COLON(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.TOK_COLON)
+			else:
+				return self.getToken(VHDLParser.TOK_COLON, i)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ContextReference
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ContextReference"):
+				return visitor.visitRule_ContextReference(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ContextReference(self):
+
+		localctx = VHDLParser.Rule_ContextReferenceContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 124, self.RULE_rule_ContextReference)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1171
+			self.match(VHDLParser.KW_CONTEXT)
+			self.state = 1172
+			localctx._rule_SelectedName2 = self.rule_SelectedName2()
+			localctx.names.append(localctx._rule_SelectedName2)
+			self.state = 1177
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			while _la == 149:
+				self.state = 1173
+				self.match(VHDLParser.TOK_COLON)
+				self.state = 1174
+				localctx._rule_SelectedName2 = self.rule_SelectedName2()
+				localctx.names.append(localctx._rule_SelectedName2)
+				self.state = 1179
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+
+			self.state = 1180
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_DelayMechanismContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.expression = None  # Rule_ExpressionContext
+
+		def KW_TRANSPORT(self):
+			return self.getToken(VHDLParser.KW_TRANSPORT, 0)
+
+		def KW_INERTIAL(self):
+			return self.getToken(VHDLParser.KW_INERTIAL, 0)
+
+		def KW_REJECT(self):
+			return self.getToken(VHDLParser.KW_REJECT, 0)
+
+		def rule_Expression(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_DelayMechanism
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_DelayMechanism"):
+				return visitor.visitRule_DelayMechanism(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_DelayMechanism(self):
+
+		localctx = VHDLParser.Rule_DelayMechanismContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 126, self.RULE_rule_DelayMechanism)
+		self._la = 0  # Token type
+		try:
+			self.state = 1188
+			self._errHandler.sync(self)
+			token = self._input.LA(1)
+			if token in [103]:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 1182
+				self.match(VHDLParser.KW_TRANSPORT)
+				pass
+			elif token in [48, 82]:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 1185
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+				if _la == 82:
+					self.state = 1183
+					self.match(VHDLParser.KW_REJECT)
+					self.state = 1184
+					localctx.expression = self.rule_Expression(0)
+
+				self.state = 1187
+				self.match(VHDLParser.KW_INERTIAL)
+				pass
+			else:
+				raise NoViableAltException(self)
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_DesignFileContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self._rule_DesignUnit = None  # Rule_DesignUnitContext
+			self.designUnits = list()  # of Rule_DesignUnitContexts
+
+		def EOF(self):
+			return self.getToken(VHDLParser.EOF, 0)
+
+		def rule_DesignUnit(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_DesignUnitContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_DesignUnitContext, i)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_DesignFile
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_DesignFile"):
+				return visitor.visitRule_DesignFile(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_DesignFile(self):
+
+		localctx = VHDLParser.Rule_DesignFileContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 128, self.RULE_rule_DesignFile)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1191
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			while True:
+				self.state = 1190
+				localctx._rule_DesignUnit = self.rule_DesignUnit()
+				localctx.designUnits.append(localctx._rule_DesignUnit)
+				self.state = 1193
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+				if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 4503616891129856) != 0) or _la == 70 or _la == 108):
+					break
+
+			self.state = 1195
+			self.match(VHDLParser.EOF)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_DesignUnitContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self._rule_ContextItem = None  # Rule_ContextItemContext
+			self.contextItems = list()  # of Rule_ContextItemContexts
+			self.libraryUnit = None  # Rule_LibraryUnitContext
+
+		def rule_LibraryUnit(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_LibraryUnitContext, 0)
+
+		def rule_ContextItem(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_ContextItemContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_ContextItemContext, i)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_DesignUnit
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_DesignUnit"):
+				return visitor.visitRule_DesignUnit(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_DesignUnit(self):
+
+		localctx = VHDLParser.Rule_DesignUnitContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 130, self.RULE_rule_DesignUnit)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1200
+			self._errHandler.sync(self)
+			_alt = self._interp.adaptivePredict(self._input, 102, self._ctx)
+			while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+				if _alt == 1:
+					self.state = 1197
+					localctx._rule_ContextItem = self.rule_ContextItem()
+					localctx.contextItems.append(localctx._rule_ContextItem)
+				self.state = 1202
+				self._errHandler.sync(self)
+				_alt = self._interp.adaptivePredict(self._input, 102, self._ctx)
+
+			self.state = 1203
+			localctx.libraryUnit = self.rule_LibraryUnit()
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_DesignatorContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def LIT_IDENTIFIER(self):
+			return self.getToken(VHDLParser.LIT_IDENTIFIER, 0)
+
+		def LIT_STRING(self):
+			return self.getToken(VHDLParser.LIT_STRING, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_Designator
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_Designator"):
+				return visitor.visitRule_Designator(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_Designator(self):
+
+		localctx = VHDLParser.Rule_DesignatorContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 132, self.RULE_rule_Designator)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1205
+			_la = self._input.LA(1)
+			if not (_la == 162 or _la == 163):
+				self._errHandler.recoverInline(self)
+			else:
+				self._errHandler.reportMatch(self)
+				self.consume()
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_DirectionContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.direction = None  # Token
+
+		def KW_TO(self):
+			return self.getToken(VHDLParser.KW_TO, 0)
+
+		def KW_DOWNTO(self):
+			return self.getToken(VHDLParser.KW_DOWNTO, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_Direction
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_Direction"):
+				return visitor.visitRule_Direction(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_Direction(self):
+
+		localctx = VHDLParser.Rule_DirectionContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 134, self.RULE_rule_Direction)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1207
+			localctx.direction = self._input.LT(1)
+			_la = self._input.LA(1)
+			if not (_la == 30 or _la == 102):
+				localctx.direction = self._errHandler.recoverInline(self)
+			else:
+				self._errHandler.reportMatch(self)
+				self.consume()
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_DisconnectionSpecificationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.guardedSignalSpecification = None  # Rule_GuardedSignalSpecificationContext
+			self.expression = None  # Rule_ExpressionContext
+
+		def KW_DISCONNECT(self):
+			return self.getToken(VHDLParser.KW_DISCONNECT, 0)
+
+		def KW_AFTER(self):
+			return self.getToken(VHDLParser.KW_AFTER, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def rule_GuardedSignalSpecification(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_GuardedSignalSpecificationContext, 0)
+
+		def rule_Expression(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_DisconnectionSpecification
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_DisconnectionSpecification"):
+				return visitor.visitRule_DisconnectionSpecification(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_DisconnectionSpecification(self):
+
+		localctx = VHDLParser.Rule_DisconnectionSpecificationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 136, self.RULE_rule_DisconnectionSpecification)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1209
+			self.match(VHDLParser.KW_DISCONNECT)
+			self.state = 1210
+			localctx.guardedSignalSpecification = self.rule_GuardedSignalSpecification()
+			self.state = 1211
+			self.match(VHDLParser.KW_AFTER)
+			self.state = 1212
+			localctx.expression = self.rule_Expression(0)
+			self.state = 1213
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_DiscreteRangeContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.subtypeIndication = None  # Rule_SubtypeIndicationContext
+			self.range_ = None  # Rule_RangeContext
+
+		def rule_SubtypeIndication(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubtypeIndicationContext, 0)
+
+		def rule_Range(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_RangeContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_DiscreteRange
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_DiscreteRange"):
+				return visitor.visitRule_DiscreteRange(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_DiscreteRange(self):
+
+		localctx = VHDLParser.Rule_DiscreteRangeContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 138, self.RULE_rule_DiscreteRange)
+		try:
+			self.state = 1217
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 103, self._ctx)
+			if la_ == 1:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 1215
+				localctx.subtypeIndication = self.rule_SubtypeIndication()
+				pass
+
+			elif la_ == 2:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 1216
+				localctx.range_ = self.rule_Range()
+				pass
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_DiscreteIncompleteTypeDefinitionContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def TOK_LP(self):
+			return self.getToken(VHDLParser.TOK_LP, 0)
+
+		def TOK_BOX(self):
+			return self.getToken(VHDLParser.TOK_BOX, 0)
+
+		def TOK_RP(self):
+			return self.getToken(VHDLParser.TOK_RP, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_DiscreteIncompleteTypeDefinition
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_DiscreteIncompleteTypeDefinition"):
+				return visitor.visitRule_DiscreteIncompleteTypeDefinition(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_DiscreteIncompleteTypeDefinition(self):
+
+		localctx = VHDLParser.Rule_DiscreteIncompleteTypeDefinitionContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 140, self.RULE_rule_DiscreteIncompleteTypeDefinition)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1219
+			self.match(VHDLParser.TOK_LP)
+			self.state = 1220
+			self.match(VHDLParser.TOK_BOX)
+			self.state = 1221
+			self.match(VHDLParser.TOK_RP)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ElementArrayModeViewIndicationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.name = None  # Rule_NameContext
+
+		def KW_VIEW(self):
+			return self.getToken(VHDLParser.KW_VIEW, 0)
+
+		def TOK_LP(self):
+			return self.getToken(VHDLParser.TOK_LP, 0)
+
+		def TOK_RP(self):
+			return self.getToken(VHDLParser.TOK_RP, 0)
+
+		def rule_Name(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ElementArrayModeViewIndication
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ElementArrayModeViewIndication"):
+				return visitor.visitRule_ElementArrayModeViewIndication(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ElementArrayModeViewIndication(self):
+
+		localctx = VHDLParser.Rule_ElementArrayModeViewIndicationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 142, self.RULE_rule_ElementArrayModeViewIndication)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1223
+			self.match(VHDLParser.KW_VIEW)
+			self.state = 1224
+			self.match(VHDLParser.TOK_LP)
+			self.state = 1225
+			localctx.name = self.rule_Name(0)
+			self.state = 1226
+			self.match(VHDLParser.TOK_RP)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ElementAssociationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.choices = None  # Rule_ChoicesContext
+			self.expression = None  # Rule_ExpressionContext
+
+		def rule_Expression(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0)
+
+		def TOK_RARROW(self):
+			return self.getToken(VHDLParser.TOK_RARROW, 0)
+
+		def rule_Choices(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ChoicesContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ElementAssociation
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ElementAssociation"):
+				return visitor.visitRule_ElementAssociation(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ElementAssociation(self):
+
+		localctx = VHDLParser.Rule_ElementAssociationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 144, self.RULE_rule_ElementAssociation)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1231
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 104, self._ctx)
+			if la_ == 1:
+				self.state = 1228
+				localctx.choices = self.rule_Choices()
+				self.state = 1229
+				self.match(VHDLParser.TOK_RARROW)
+
+			self.state = 1233
+			localctx.expression = self.rule_Expression(0)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ElementConstraintContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.arrayConstraint = None  # Rule_ArrayConstraintContext
+			self.recordConstraint = None  # Rule_RecordConstraintContext
+
+		def rule_ArrayConstraint(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ArrayConstraintContext, 0)
+
+		def rule_RecordConstraint(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_RecordConstraintContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ElementConstraint
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ElementConstraint"):
+				return visitor.visitRule_ElementConstraint(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ElementConstraint(self):
+
+		localctx = VHDLParser.Rule_ElementConstraintContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 146, self.RULE_rule_ElementConstraint)
+		try:
+			self.state = 1237
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 105, self._ctx)
+			if la_ == 1:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 1235
+				localctx.arrayConstraint = self.rule_ArrayConstraint()
+				pass
+
+			elif la_ == 2:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 1236
+				localctx.recordConstraint = self.rule_RecordConstraint()
+				pass
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ElementDeclarationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.identifierList = None  # Rule_IdentifierListContext
+			self.subtypeIndication = None  # Rule_SubtypeIndicationContext
+
+		def TOK_COLON(self):
+			return self.getToken(VHDLParser.TOK_COLON, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def rule_IdentifierList(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_IdentifierListContext, 0)
+
+		def rule_SubtypeIndication(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubtypeIndicationContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ElementDeclaration
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ElementDeclaration"):
+				return visitor.visitRule_ElementDeclaration(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ElementDeclaration(self):
+
+		localctx = VHDLParser.Rule_ElementDeclarationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 148, self.RULE_rule_ElementDeclaration)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1239
+			localctx.identifierList = self.rule_IdentifierList()
+			self.state = 1240
+			self.match(VHDLParser.TOK_COLON)
+			self.state = 1241
+			localctx.subtypeIndication = self.rule_SubtypeIndication()
+			self.state = 1242
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ElementModeIndicationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_Mode(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ModeContext, 0)
+
+		def rule_ElementModeViewIndication(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ElementModeViewIndicationContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ElementModeIndication
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ElementModeIndication"):
+				return visitor.visitRule_ElementModeIndication(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ElementModeIndication(self):
+
+		localctx = VHDLParser.Rule_ElementModeIndicationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 150, self.RULE_rule_ElementModeIndication)
+		try:
+			self.state = 1246
+			self._errHandler.sync(self)
+			token = self._input.LA(1)
+			if token in [20, 47, 49, 53, 69]:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 1244
+				self.rule_Mode()
+				pass
+			elif token in [110]:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 1245
+				self.rule_ElementModeViewIndication()
+				pass
+			else:
+				raise NoViableAltException(self)
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ElementModeViewIndicationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_ElementArrayModeViewIndication(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ElementArrayModeViewIndicationContext, 0)
+
+		def rule_ElementRecordModeViewIndication(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ElementRecordModeViewIndicationContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ElementModeViewIndication
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ElementModeViewIndication"):
+				return visitor.visitRule_ElementModeViewIndication(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ElementModeViewIndication(self):
+
+		localctx = VHDLParser.Rule_ElementModeViewIndicationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 152, self.RULE_rule_ElementModeViewIndication)
+		try:
+			self.state = 1250
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 107, self._ctx)
+			if la_ == 1:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 1248
+				self.rule_ElementArrayModeViewIndication()
+				pass
+
+			elif la_ == 2:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 1249
+				self.rule_ElementRecordModeViewIndication()
+				pass
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ElementRecordModeViewIndicationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.name = None  # Rule_NameContext
+
+		def KW_VIEW(self):
+			return self.getToken(VHDLParser.KW_VIEW, 0)
+
+		def rule_Name(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ElementRecordModeViewIndication
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ElementRecordModeViewIndication"):
+				return visitor.visitRule_ElementRecordModeViewIndication(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ElementRecordModeViewIndication(self):
+
+		localctx = VHDLParser.Rule_ElementRecordModeViewIndicationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 154, self.RULE_rule_ElementRecordModeViewIndication)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1252
+			self.match(VHDLParser.KW_VIEW)
+			self.state = 1253
+			localctx.name = self.rule_Name(0)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ElementResolutionContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_ResolutionIndication(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ResolutionIndicationContext, 0)
+
+		def rule_RecordResolution(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_RecordResolutionContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ElementResolution
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ElementResolution"):
+				return visitor.visitRule_ElementResolution(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ElementResolution(self):
+
+		localctx = VHDLParser.Rule_ElementResolutionContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 156, self.RULE_rule_ElementResolution)
+		try:
+			self.state = 1257
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 108, self._ctx)
+			if la_ == 1:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 1255
+				self.rule_ResolutionIndication()
+				pass
+
+			elif la_ == 2:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 1256
+				self.rule_RecordResolution()
+				pass
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_EntityAspectContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.entityName = None  # Rule_NameContext
+			self.architectureName = None  # Token
+			self.configurationName = None  # Rule_NameContext
+
+		def KW_ENTITY(self):
+			return self.getToken(VHDLParser.KW_ENTITY, 0)
+
+		def rule_Name(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0)
+
+		def TOK_LP(self):
+			return self.getToken(VHDLParser.TOK_LP, 0)
+
+		def TOK_RP(self):
+			return self.getToken(VHDLParser.TOK_RP, 0)
+
+		def LIT_IDENTIFIER(self):
+			return self.getToken(VHDLParser.LIT_IDENTIFIER, 0)
+
+		def KW_CONFIGURATION(self):
+			return self.getToken(VHDLParser.KW_CONFIGURATION, 0)
+
+		def KW_OPEN(self):
+			return self.getToken(VHDLParser.KW_OPEN, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_EntityAspect
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_EntityAspect"):
+				return visitor.visitRule_EntityAspect(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_EntityAspect(self):
+
+		localctx = VHDLParser.Rule_EntityAspectContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 158, self.RULE_rule_EntityAspect)
+		self._la = 0  # Token type
+		try:
+			self.state = 1269
+			self._errHandler.sync(self)
+			token = self._input.LA(1)
+			if token in [34]:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 1259
+				self.match(VHDLParser.KW_ENTITY)
+				self.state = 1260
+				localctx.entityName = self.rule_Name(0)
+				self.state = 1264
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+				if _la == 143:
+					self.state = 1261
+					self.match(VHDLParser.TOK_LP)
+					self.state = 1262
+					localctx.architectureName = self.match(VHDLParser.LIT_IDENTIFIER)
+					self.state = 1263
+					self.match(VHDLParser.TOK_RP)
+
+				pass
+			elif token in [24]:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 1266
+				self.match(VHDLParser.KW_CONFIGURATION)
+				self.state = 1267
+				localctx.configurationName = self.rule_Name(0)
+				pass
+			elif token in [66]:
+				self.enterOuterAlt(localctx, 3)
+				self.state = 1268
+				self.match(VHDLParser.KW_OPEN)
+				pass
+			else:
+				raise NoViableAltException(self)
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_EntityClassContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def KW_ENTITY(self):
+			return self.getToken(VHDLParser.KW_ENTITY, 0)
+
+		def KW_ARCHITECTURE(self):
+			return self.getToken(VHDLParser.KW_ARCHITECTURE, 0)
+
+		def KW_CONFIGURATION(self):
+			return self.getToken(VHDLParser.KW_CONFIGURATION, 0)
+
+		def KW_PROCEDURE(self):
+			return self.getToken(VHDLParser.KW_PROCEDURE, 0)
+
+		def KW_FUNCTION(self):
+			return self.getToken(VHDLParser.KW_FUNCTION, 0)
+
+		def KW_PACKAGE(self):
+			return self.getToken(VHDLParser.KW_PACKAGE, 0)
+
+		def KW_TYPE(self):
+			return self.getToken(VHDLParser.KW_TYPE, 0)
+
+		def KW_SUBTYPE(self):
+			return self.getToken(VHDLParser.KW_SUBTYPE, 0)
+
+		def KW_CONSTANT(self):
+			return self.getToken(VHDLParser.KW_CONSTANT, 0)
+
+		def KW_SIGNAL(self):
+			return self.getToken(VHDLParser.KW_SIGNAL, 0)
+
+		def KW_VARIABLE(self):
+			return self.getToken(VHDLParser.KW_VARIABLE, 0)
+
+		def KW_COMPONENT(self):
+			return self.getToken(VHDLParser.KW_COMPONENT, 0)
+
+		def KW_LABEL(self):
+			return self.getToken(VHDLParser.KW_LABEL, 0)
+
+		def KW_UNITS(self):
+			return self.getToken(VHDLParser.KW_UNITS, 0)
+
+		def KW_GROUP(self):
+			return self.getToken(VHDLParser.KW_GROUP, 0)
+
+		def KW_FILE(self):
+			return self.getToken(VHDLParser.KW_FILE, 0)
+
+		def KW_VIEW(self):
+			return self.getToken(VHDLParser.KW_VIEW, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_EntityClass
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_EntityClass"):
+				return visitor.visitRule_EntityClass(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_EntityClass(self):
+
+		localctx = VHDLParser.Rule_EntityClassContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 160, self.RULE_rule_EntityClass)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1271
+			_la = self._input.LA(1)
+			if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 2270027713613824) != 0) or (
+				(((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & 1735443611681) != 0)):
+				self._errHandler.recoverInline(self)
+			else:
+				self._errHandler.reportMatch(self)
+				self.consume()
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_EntityClassEntryContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_EntityClass(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_EntityClassContext, 0)
+
+		def TOK_BOX(self):
+			return self.getToken(VHDLParser.TOK_BOX, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_EntityClassEntry
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_EntityClassEntry"):
+				return visitor.visitRule_EntityClassEntry(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_EntityClassEntry(self):
+
+		localctx = VHDLParser.Rule_EntityClassEntryContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 162, self.RULE_rule_EntityClassEntry)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1273
+			self.rule_EntityClass()
+			self.state = 1275
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 142:
+				self.state = 1274
+				self.match(VHDLParser.TOK_BOX)
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_EntityDeclarationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.name = None  # Token
+			self.genericClause = None  # Rule_GenericClauseContext
+			self.portClause = None  # Rule_PortClauseContext
+			self.declarations = None  # Rule_EntityDeclarativeItemContext
+			self.statements = None  # Rule_EntityStatementContext
+			self.name2 = None  # Token
+
+		def KW_ENTITY(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.KW_ENTITY)
+			else:
+				return self.getToken(VHDLParser.KW_ENTITY, i)
+
+		def KW_IS(self):
+			return self.getToken(VHDLParser.KW_IS, 0)
+
+		def KW_END(self):
+			return self.getToken(VHDLParser.KW_END, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def LIT_IDENTIFIER(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.LIT_IDENTIFIER)
+			else:
+				return self.getToken(VHDLParser.LIT_IDENTIFIER, i)
+
+		def KW_BEGIN(self):
+			return self.getToken(VHDLParser.KW_BEGIN, 0)
+
+		def rule_GenericClause(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_GenericClauseContext, 0)
+
+		def rule_PortClause(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_PortClauseContext, 0)
+
+		def rule_EntityDeclarativeItem(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_EntityDeclarativeItemContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_EntityDeclarativeItemContext, i)
+
+		def rule_EntityStatement(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_EntityStatementContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_EntityStatementContext, i)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_EntityDeclaration
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_EntityDeclaration"):
+				return visitor.visitRule_EntityDeclaration(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_EntityDeclaration(self):
+
+		localctx = VHDLParser.Rule_EntityDeclarationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 164, self.RULE_rule_EntityDeclaration)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1277
+			self.match(VHDLParser.KW_ENTITY)
+			self.state = 1278
+			localctx.name = self.match(VHDLParser.LIT_IDENTIFIER)
+			self.state = 1279
+			self.match(VHDLParser.KW_IS)
+			self.state = 1281
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 42:
+				self.state = 1280
+				localctx.genericClause = self.rule_GenericClause()
+
+			self.state = 1284
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 72:
+				self.state = 1283
+				localctx.portClause = self.rule_PortClause()
+
+			self.state = 1289
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			while (((_la) & ~0x3f) == 0 and ((1 << _la) & 88579975971328) != 0) or (
+				(((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & 1941606236449) != 0):
+				self.state = 1286
+				localctx.declarations = self.rule_EntityDeclarativeItem()
+				self.state = 1291
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+
+			self.state = 1299
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 17:
+				self.state = 1292
+				self.match(VHDLParser.KW_BEGIN)
+				self.state = 1296
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+				while ((((_la - 14)) & ~0x3f) == 0 and ((1 << (_la - 14)) & 5188146770730811393) != 0) or (
+					(((_la - 147)) & ~0x3f) == 0 and ((1 << (_la - 147)) & 114689) != 0):
+					self.state = 1293
+					localctx.statements = self.rule_EntityStatement()
+					self.state = 1298
+					self._errHandler.sync(self)
+					_la = self._input.LA(1)
+
+			self.state = 1301
+			self.match(VHDLParser.KW_END)
+			self.state = 1303
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 34:
+				self.state = 1302
+				self.match(VHDLParser.KW_ENTITY)
+
+			self.state = 1306
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 163:
+				self.state = 1305
+				localctx.name2 = self.match(VHDLParser.LIT_IDENTIFIER)
+
+			self.state = 1308
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_EntityDeclarativeItemContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_SubprogramDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubprogramDeclarationContext, 0)
+
+		def rule_SubprogramBody(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubprogramBodyContext, 0)
+
+		def rule_SubprogramInstantiationDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubprogramInstantiationDeclarationContext, 0)
+
+		def rule_PackageDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_PackageDeclarationContext, 0)
+
+		def rule_PackageBody(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_PackageBodyContext, 0)
+
+		def rule_PackageInstantiationDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_PackageInstantiationDeclarationContext, 0)
+
+		def rule_TypeDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_TypeDeclarationContext, 0)
+
+		def rule_SubtypeDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubtypeDeclarationContext, 0)
+
+		def rule_ModeViewDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ModeViewDeclarationContext, 0)
+
+		def rule_ConstantDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ConstantDeclarationContext, 0)
+
+		def rule_SignalDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SignalDeclarationContext, 0)
+
+		def rule_VariableDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_VariableDeclarationContext, 0)
+
+		def rule_FileDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_FileDeclarationContext, 0)
+
+		def rule_AliasDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_AliasDeclarationContext, 0)
+
+		def rule_AttributeDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_AttributeDeclarationContext, 0)
+
+		def rule_AttributeSpecification(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_AttributeSpecificationContext, 0)
+
+		def rule_DisconnectionSpecification(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_DisconnectionSpecificationContext, 0)
+
+		def rule_UseClause(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_UseClauseContext, 0)
+
+		def rule_GroupTemplateDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_GroupTemplateDeclarationContext, 0)
+
+		def rule_GroupDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_GroupDeclarationContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_EntityDeclarativeItem
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_EntityDeclarativeItem"):
+				return visitor.visitRule_EntityDeclarativeItem(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_EntityDeclarativeItem(self):
+
+		localctx = VHDLParser.Rule_EntityDeclarativeItemContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 166, self.RULE_rule_EntityDeclarativeItem)
+		try:
+			self.state = 1330
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 119, self._ctx)
+			if la_ == 1:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 1310
+				self.rule_SubprogramDeclaration()
+				pass
+
+			elif la_ == 2:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 1311
+				self.rule_SubprogramBody()
+				pass
+
+			elif la_ == 3:
+				self.enterOuterAlt(localctx, 3)
+				self.state = 1312
+				self.rule_SubprogramInstantiationDeclaration()
+				pass
+
+			elif la_ == 4:
+				self.enterOuterAlt(localctx, 4)
+				self.state = 1313
+				self.rule_PackageDeclaration()
+				pass
+
+			elif la_ == 5:
+				self.enterOuterAlt(localctx, 5)
+				self.state = 1314
+				self.rule_PackageBody()
+				pass
+
+			elif la_ == 6:
+				self.enterOuterAlt(localctx, 6)
+				self.state = 1315
+				self.rule_PackageInstantiationDeclaration()
+				pass
+
+			elif la_ == 7:
+				self.enterOuterAlt(localctx, 7)
+				self.state = 1316
+				self.rule_TypeDeclaration()
+				pass
+
+			elif la_ == 8:
+				self.enterOuterAlt(localctx, 8)
+				self.state = 1317
+				self.rule_SubtypeDeclaration()
+				pass
+
+			elif la_ == 9:
+				self.enterOuterAlt(localctx, 9)
+				self.state = 1318
+				self.rule_ModeViewDeclaration()
+				pass
+
+			elif la_ == 10:
+				self.enterOuterAlt(localctx, 10)
+				self.state = 1319
+				self.rule_ConstantDeclaration()
+				pass
+
+			elif la_ == 11:
+				self.enterOuterAlt(localctx, 11)
+				self.state = 1320
+				self.rule_SignalDeclaration()
+				pass
+
+			elif la_ == 12:
+				self.enterOuterAlt(localctx, 12)
+				self.state = 1321
+				self.rule_VariableDeclaration()
+				pass
+
+			elif la_ == 13:
+				self.enterOuterAlt(localctx, 13)
+				self.state = 1322
+				self.rule_FileDeclaration()
+				pass
+
+			elif la_ == 14:
+				self.enterOuterAlt(localctx, 14)
+				self.state = 1323
+				self.rule_AliasDeclaration()
+				pass
+
+			elif la_ == 15:
+				self.enterOuterAlt(localctx, 15)
+				self.state = 1324
+				self.rule_AttributeDeclaration()
+				pass
+
+			elif la_ == 16:
+				self.enterOuterAlt(localctx, 16)
+				self.state = 1325
+				self.rule_AttributeSpecification()
+				pass
+
+			elif la_ == 17:
+				self.enterOuterAlt(localctx, 17)
+				self.state = 1326
+				self.rule_DisconnectionSpecification()
+				pass
+
+			elif la_ == 18:
+				self.enterOuterAlt(localctx, 18)
+				self.state = 1327
+				self.rule_UseClause()
+				pass
+
+			elif la_ == 19:
+				self.enterOuterAlt(localctx, 19)
+				self.state = 1328
+				self.rule_GroupTemplateDeclaration()
+				pass
+
+			elif la_ == 20:
+				self.enterOuterAlt(localctx, 20)
+				self.state = 1329
+				self.rule_GroupDeclaration()
+				pass
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_EntityDesignatorContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.entityTag = None  # Rule_EntityTagContext
+			self.signature = None  # Rule_SignatureContext
+
+		def rule_EntityTag(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_EntityTagContext, 0)
+
+		def rule_Signature(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SignatureContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_EntityDesignator
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_EntityDesignator"):
+				return visitor.visitRule_EntityDesignator(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_EntityDesignator(self):
+
+		localctx = VHDLParser.Rule_EntityDesignatorContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 168, self.RULE_rule_EntityDesignator)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1332
+			localctx.entityTag = self.rule_EntityTag()
+			self.state = 1334
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 145:
+				self.state = 1333
+				localctx.signature = self.rule_Signature()
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_EntityNameListContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self._rule_EntityDesignator = None  # Rule_EntityDesignatorContext
+			self.entityDesignators = list()  # of Rule_EntityDesignatorContexts
+
+		def rule_EntityDesignator(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_EntityDesignatorContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_EntityDesignatorContext, i)
+
+		def TOK_COMMA(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.TOK_COMMA)
+			else:
+				return self.getToken(VHDLParser.TOK_COMMA, i)
+
+		def KW_OTHERS(self):
+			return self.getToken(VHDLParser.KW_OTHERS, 0)
+
+		def KW_ALL(self):
+			return self.getToken(VHDLParser.KW_ALL, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_EntityNameList
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_EntityNameList"):
+				return visitor.visitRule_EntityNameList(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_EntityNameList(self):
+
+		localctx = VHDLParser.Rule_EntityNameListContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 170, self.RULE_rule_EntityNameList)
+		self._la = 0  # Token type
+		try:
+			self.state = 1346
+			self._errHandler.sync(self)
+			token = self._input.LA(1)
+			if token in [161, 162, 163]:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 1336
+				localctx._rule_EntityDesignator = self.rule_EntityDesignator()
+				localctx.entityDesignators.append(localctx._rule_EntityDesignator)
+				self.state = 1341
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+				while _la == 151:
+					self.state = 1337
+					self.match(VHDLParser.TOK_COMMA)
+					self.state = 1338
+					localctx._rule_EntityDesignator = self.rule_EntityDesignator()
+					localctx.entityDesignators.append(localctx._rule_EntityDesignator)
+					self.state = 1343
+					self._errHandler.sync(self)
+					_la = self._input.LA(1)
+
+				pass
+			elif token in [68]:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 1344
+				self.match(VHDLParser.KW_OTHERS)
+				pass
+			elif token in [10]:
+				self.enterOuterAlt(localctx, 3)
+				self.state = 1345
+				self.match(VHDLParser.KW_ALL)
+				pass
+			else:
+				raise NoViableAltException(self)
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_EntitySpecificationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.entityNameList = None  # Rule_EntityNameListContext
+			self.entityClass = None  # Rule_EntityClassContext
+
+		def TOK_COLON(self):
+			return self.getToken(VHDLParser.TOK_COLON, 0)
+
+		def rule_EntityNameList(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_EntityNameListContext, 0)
+
+		def rule_EntityClass(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_EntityClassContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_EntitySpecification
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_EntitySpecification"):
+				return visitor.visitRule_EntitySpecification(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_EntitySpecification(self):
+
+		localctx = VHDLParser.Rule_EntitySpecificationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 172, self.RULE_rule_EntitySpecification)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1348
+			localctx.entityNameList = self.rule_EntityNameList()
+			self.state = 1349
+			self.match(VHDLParser.TOK_COLON)
+			self.state = 1350
+			localctx.entityClass = self.rule_EntityClass()
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_EntityStatementContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_ConcurrentAssertionStatement(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ConcurrentAssertionStatementContext, 0)
+
+		def rule_ConcurrentProcedureCallStatement(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ConcurrentProcedureCallStatementContext, 0)
+
+		def rule_ProcessStatement(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ProcessStatementContext, 0)
+
+		def rule_PostponedProcessStatement(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_PostponedProcessStatementContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_EntityStatement
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_EntityStatement"):
+				return visitor.visitRule_EntityStatement(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_EntityStatement(self):
+
+		localctx = VHDLParser.Rule_EntityStatementContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 174, self.RULE_rule_EntityStatement)
+		try:
+			self.state = 1356
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 123, self._ctx)
+			if la_ == 1:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 1352
+				self.rule_ConcurrentAssertionStatement()
+				pass
+
+			elif la_ == 2:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 1353
+				self.rule_ConcurrentProcedureCallStatement()
+				pass
+
+			elif la_ == 3:
+				self.enterOuterAlt(localctx, 3)
+				self.state = 1354
+				self.rule_ProcessStatement()
+				pass
+
+			elif la_ == 4:
+				self.enterOuterAlt(localctx, 4)
+				self.state = 1355
+				self.rule_PostponedProcessStatement()
+				pass
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_EntityTagContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def LIT_IDENTIFIER(self):
+			return self.getToken(VHDLParser.LIT_IDENTIFIER, 0)
+
+		def LIT_CHARACTER(self):
+			return self.getToken(VHDLParser.LIT_CHARACTER, 0)
+
+		def LIT_STRING(self):
+			return self.getToken(VHDLParser.LIT_STRING, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_EntityTag
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_EntityTag"):
+				return visitor.visitRule_EntityTag(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_EntityTag(self):
+
+		localctx = VHDLParser.Rule_EntityTagContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 176, self.RULE_rule_EntityTag)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1358
+			_la = self._input.LA(1)
+			if not (((((_la - 161)) & ~0x3f) == 0 and ((1 << (_la - 161)) & 7) != 0)):
+				self._errHandler.recoverInline(self)
+			else:
+				self._errHandler.reportMatch(self)
+				self.consume()
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_EnumerationLiteralContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def LIT_IDENTIFIER(self):
+			return self.getToken(VHDLParser.LIT_IDENTIFIER, 0)
+
+		def LIT_CHARACTER(self):
+			return self.getToken(VHDLParser.LIT_CHARACTER, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_EnumerationLiteral
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_EnumerationLiteral"):
+				return visitor.visitRule_EnumerationLiteral(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_EnumerationLiteral(self):
+
+		localctx = VHDLParser.Rule_EnumerationLiteralContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 178, self.RULE_rule_EnumerationLiteral)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1360
+			_la = self._input.LA(1)
+			if not (_la == 161 or _la == 163):
+				self._errHandler.recoverInline(self)
+			else:
+				self._errHandler.reportMatch(self)
+				self.consume()
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_EnumerationTypeDefinitionContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self._rule_EnumerationLiteral = None  # Rule_EnumerationLiteralContext
+			self.enumerationLiterals = list()  # of Rule_EnumerationLiteralContexts
+
+		def TOK_LP(self):
+			return self.getToken(VHDLParser.TOK_LP, 0)
+
+		def TOK_RP(self):
+			return self.getToken(VHDLParser.TOK_RP, 0)
+
+		def rule_EnumerationLiteral(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_EnumerationLiteralContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_EnumerationLiteralContext, i)
+
+		def TOK_COMMA(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.TOK_COMMA)
+			else:
+				return self.getToken(VHDLParser.TOK_COMMA, i)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_EnumerationTypeDefinition
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_EnumerationTypeDefinition"):
+				return visitor.visitRule_EnumerationTypeDefinition(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_EnumerationTypeDefinition(self):
+
+		localctx = VHDLParser.Rule_EnumerationTypeDefinitionContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 180, self.RULE_rule_EnumerationTypeDefinition)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1362
+			self.match(VHDLParser.TOK_LP)
+			self.state = 1363
+			localctx._rule_EnumerationLiteral = self.rule_EnumerationLiteral()
+			localctx.enumerationLiterals.append(localctx._rule_EnumerationLiteral)
+			self.state = 1368
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			while _la == 151:
+				self.state = 1364
+				self.match(VHDLParser.TOK_COMMA)
+				self.state = 1365
+				localctx._rule_EnumerationLiteral = self.rule_EnumerationLiteral()
+				localctx.enumerationLiterals.append(localctx._rule_EnumerationLiteral)
+				self.state = 1370
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+
+			self.state = 1371
+			self.match(VHDLParser.TOK_RP)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ExitStatementContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.label = None  # Token
+			self.referencedLabel = None  # Token
+			self.condition = None  # Rule_ExpressionContext
+
+		def KW_EXIT(self):
+			return self.getToken(VHDLParser.KW_EXIT, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def TOK_COLON(self):
+			return self.getToken(VHDLParser.TOK_COLON, 0)
+
+		def KW_WHEN(self):
+			return self.getToken(VHDLParser.KW_WHEN, 0)
+
+		def LIT_IDENTIFIER(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.LIT_IDENTIFIER)
+			else:
+				return self.getToken(VHDLParser.LIT_IDENTIFIER, i)
+
+		def rule_Expression(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ExitStatement
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ExitStatement"):
+				return visitor.visitRule_ExitStatement(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ExitStatement(self):
+
+		localctx = VHDLParser.Rule_ExitStatementContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 182, self.RULE_rule_ExitStatement)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1375
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 163:
+				self.state = 1373
+				localctx.label = self.match(VHDLParser.LIT_IDENTIFIER)
+				self.state = 1374
+				self.match(VHDLParser.TOK_COLON)
+
+			self.state = 1377
+			self.match(VHDLParser.KW_EXIT)
+			self.state = 1379
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 163:
+				self.state = 1378
+				localctx.referencedLabel = self.match(VHDLParser.LIT_IDENTIFIER)
+
+			self.state = 1383
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 117:
+				self.state = 1381
+				self.match(VHDLParser.KW_WHEN)
+				self.state = 1382
+				localctx.condition = self.rule_Expression(0)
+
+			self.state = 1385
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ExpressionContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_Expression
+
+		def copyFrom(self, ctx: ParserRuleContext):
+			super().copyFrom(ctx)
+
+	class BinaryOpContext(Rule_ExpressionContext):
+
+		def __init__(self, parser, ctx: ParserRuleContext):  # actually a VHDLParser.Rule_ExpressionContext
+			super().__init__(parser)
+			self.left = None  # Rule_ExpressionContext
+			self.operator = None  # Token
+			self.right = None  # Rule_ExpressionContext
+			self.copyFrom(ctx)
+
+		def rule_Expression(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_ExpressionContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, i)
+
+		def OP_POW(self):
+			return self.getToken(VHDLParser.OP_POW, 0)
+
+		def OP_MUL(self):
+			return self.getToken(VHDLParser.OP_MUL, 0)
+
+		def OP_DIV(self):
+			return self.getToken(VHDLParser.OP_DIV, 0)
+
+		def OP_MOD(self):
+			return self.getToken(VHDLParser.OP_MOD, 0)
+
+		def OP_REM(self):
+			return self.getToken(VHDLParser.OP_REM, 0)
+
+		def OP_PLUS(self):
+			return self.getToken(VHDLParser.OP_PLUS, 0)
+
+		def OP_MINUS(self):
+			return self.getToken(VHDLParser.OP_MINUS, 0)
+
+		def OP_CONCAT(self):
+			return self.getToken(VHDLParser.OP_CONCAT, 0)
+
+		def OP_SLL(self):
+			return self.getToken(VHDLParser.OP_SLL, 0)
+
+		def OP_SRL(self):
+			return self.getToken(VHDLParser.OP_SRL, 0)
+
+		def OP_SLA(self):
+			return self.getToken(VHDLParser.OP_SLA, 0)
+
+		def OP_SRA(self):
+			return self.getToken(VHDLParser.OP_SRA, 0)
+
+		def OP_ROL(self):
+			return self.getToken(VHDLParser.OP_ROL, 0)
+
+		def OP_ROR(self):
+			return self.getToken(VHDLParser.OP_ROR, 0)
+
+		def OP_EQ(self):
+			return self.getToken(VHDLParser.OP_EQ, 0)
+
+		def OP_NE(self):
+			return self.getToken(VHDLParser.OP_NE, 0)
+
+		def OP_LT(self):
+			return self.getToken(VHDLParser.OP_LT, 0)
+
+		def TOK_SIG_ASSIGN(self):
+			return self.getToken(VHDLParser.TOK_SIG_ASSIGN, 0)
+
+		def OP_GT(self):
+			return self.getToken(VHDLParser.OP_GT, 0)
+
+		def OP_GE(self):
+			return self.getToken(VHDLParser.OP_GE, 0)
+
+		def OP_IEQ(self):
+			return self.getToken(VHDLParser.OP_IEQ, 0)
+
+		def OP_INE(self):
+			return self.getToken(VHDLParser.OP_INE, 0)
+
+		def OP_ILT(self):
+			return self.getToken(VHDLParser.OP_ILT, 0)
+
+		def OP_ILE(self):
+			return self.getToken(VHDLParser.OP_ILE, 0)
+
+		def OP_IGT(self):
+			return self.getToken(VHDLParser.OP_IGT, 0)
+
+		def OP_IGE(self):
+			return self.getToken(VHDLParser.OP_IGE, 0)
+
+		def OP_AND(self):
+			return self.getToken(VHDLParser.OP_AND, 0)
+
+		def OP_OR(self):
+			return self.getToken(VHDLParser.OP_OR, 0)
+
+		def OP_NAND(self):
+			return self.getToken(VHDLParser.OP_NAND, 0)
+
+		def OP_NOR(self):
+			return self.getToken(VHDLParser.OP_NOR, 0)
+
+		def OP_XOR(self):
+			return self.getToken(VHDLParser.OP_XOR, 0)
+
+		def OP_XNOR(self):
+			return self.getToken(VHDLParser.OP_XNOR, 0)
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitBinaryOp"):
+				return visitor.visitBinaryOp(self)
+			else:
+				return visitor.visitChildren(self)
+
+	class PrimaryOpContext(Rule_ExpressionContext):
+
+		def __init__(self, parser, ctx: ParserRuleContext):  # actually a VHDLParser.Rule_ExpressionContext
+			super().__init__(parser)
+			self.copyFrom(ctx)
+
+		def rule_Primary(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_PrimaryContext, 0)
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitPrimaryOp"):
+				return visitor.visitPrimaryOp(self)
+			else:
+				return visitor.visitChildren(self)
+
+	class UnaryOpContext(Rule_ExpressionContext):
+
+		def __init__(self, parser, ctx: ParserRuleContext):  # actually a VHDLParser.Rule_ExpressionContext
+			super().__init__(parser)
+			self.operator = None  # Token
+			self.right = None  # Rule_ExpressionContext
+			self.copyFrom(ctx)
+
+		def OP_CONDITION(self):
+			return self.getToken(VHDLParser.OP_CONDITION, 0)
+
+		def rule_Expression(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0)
+
+		def OP_ABS(self):
+			return self.getToken(VHDLParser.OP_ABS, 0)
+
+		def OP_NOT(self):
+			return self.getToken(VHDLParser.OP_NOT, 0)
+
+		def OP_AND(self):
+			return self.getToken(VHDLParser.OP_AND, 0)
+
+		def OP_OR(self):
+			return self.getToken(VHDLParser.OP_OR, 0)
+
+		def OP_NAND(self):
+			return self.getToken(VHDLParser.OP_NAND, 0)
+
+		def OP_NOR(self):
+			return self.getToken(VHDLParser.OP_NOR, 0)
+
+		def OP_XOR(self):
+			return self.getToken(VHDLParser.OP_XOR, 0)
+
+		def OP_XNOR(self):
+			return self.getToken(VHDLParser.OP_XNOR, 0)
+
+		def OP_PLUS(self):
+			return self.getToken(VHDLParser.OP_PLUS, 0)
+
+		def OP_MINUS(self):
+			return self.getToken(VHDLParser.OP_MINUS, 0)
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitUnaryOp"):
+				return visitor.visitUnaryOp(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_Expression(self, _p: int = 0):
+		_parentctx = self._ctx
+		_parentState = self.state
+		localctx = VHDLParser.Rule_ExpressionContext(self, self._ctx, _parentState)
+		_prevctx = localctx
+		_startState = 184
+		self.enterRecursionRule(localctx, 184, self.RULE_rule_Expression, _p)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1393
+			self._errHandler.sync(self)
+			token = self._input.LA(1)
+			if token in [59, 63, 143, 147, 159, 160, 161, 162, 163]:
+				localctx = VHDLParser.PrimaryOpContext(self, localctx)
+				self._ctx = localctx
+				_prevctx = localctx
+
+				self.state = 1388
+				self.rule_Primary()
+				pass
+			elif token in [138]:
+				localctx = VHDLParser.UnaryOpContext(self, localctx)
+				self._ctx = localctx
+				_prevctx = localctx
+				self.state = 1389
+				localctx.operator = self.match(VHDLParser.OP_CONDITION)
+				self.state = 1390
+				localctx.right = self.rule_Expression(8)
+				pass
+			elif token in [6, 11, 58, 61, 62, 67, 119, 120, 132, 133]:
+				localctx = VHDLParser.UnaryOpContext(self, localctx)
+				self._ctx = localctx
+				_prevctx = localctx
+				self.state = 1391
+				localctx.operator = self._input.LT(1)
+				_la = self._input.LA(1)
+				if not (((((_la - 6)) & ~0x3f) == 0 and ((1 << (_la - 6)) & 2418432999897956385) != 0) or (
+					(((_la - 119)) & ~0x3f) == 0 and ((1 << (_la - 119)) & 24579) != 0)):
+					localctx.operator = self._errHandler.recoverInline(self)
+				else:
+					self._errHandler.reportMatch(self)
+					self.consume()
+				self.state = 1392
+				localctx.right = self.rule_Expression(7)
+				pass
+			else:
+				raise NoViableAltException(self)
+
+			self._ctx.stop = self._input.LT(-1)
+			self.state = 1415
+			self._errHandler.sync(self)
+			_alt = self._interp.adaptivePredict(self._input, 130, self._ctx)
+			while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+				if _alt == 1:
+					if self._parseListeners is not None:
+						self.triggerExitRuleEvent()
+					_prevctx = localctx
+					self.state = 1413
+					self._errHandler.sync(self)
+					la_ = self._interp.adaptivePredict(self._input, 129, self._ctx)
+					if la_ == 1:
+						localctx = VHDLParser.BinaryOpContext(self,
+																									VHDLParser.Rule_ExpressionContext(self, _parentctx, _parentState))
+						localctx.left = _prevctx
+						self.pushNewRecursionContext(localctx, _startState, self.RULE_rule_Expression)
+						self.state = 1395
+						if not self.precpred(self._ctx, 6):
+							from antlr4.error.Errors import FailedPredicateException
+							raise FailedPredicateException(self, "self.precpred(self._ctx, 6)")
+						self.state = 1396
+						localctx.operator = self.match(VHDLParser.OP_POW)
+						self.state = 1397
+						localctx.right = self.rule_Expression(6)
+						pass
+
+					elif la_ == 2:
+						localctx = VHDLParser.BinaryOpContext(self,
+																									VHDLParser.Rule_ExpressionContext(self, _parentctx, _parentState))
+						localctx.left = _prevctx
+						self.pushNewRecursionContext(localctx, _startState, self.RULE_rule_Expression)
+						self.state = 1398
+						if not self.precpred(self._ctx, 5):
+							from antlr4.error.Errors import FailedPredicateException
+							raise FailedPredicateException(self, "self.precpred(self._ctx, 5)")
+						self.state = 1399
+						localctx.operator = self._input.LT(1)
+						_la = self._input.LA(1)
+						if not (_la == 57 or ((((_la - 84)) & ~0x3f) == 0 and ((1 << (_la - 84)) & 3377699720527873) != 0)):
+							localctx.operator = self._errHandler.recoverInline(self)
+						else:
+							self._errHandler.reportMatch(self)
+							self.consume()
+						self.state = 1400
+						localctx.right = self.rule_Expression(6)
+						pass
+
+					elif la_ == 3:
+						localctx = VHDLParser.BinaryOpContext(self,
+																									VHDLParser.Rule_ExpressionContext(self, _parentctx, _parentState))
+						localctx.left = _prevctx
+						self.pushNewRecursionContext(localctx, _startState, self.RULE_rule_Expression)
+						self.state = 1401
+						if not self.precpred(self._ctx, 4):
+							from antlr4.error.Errors import FailedPredicateException
+							raise FailedPredicateException(self, "self.precpred(self._ctx, 4)")
+						self.state = 1402
+						localctx.operator = self._input.LT(1)
+						_la = self._input.LA(1)
+						if not (((((_la - 132)) & ~0x3f) == 0 and ((1 << (_la - 132)) & 35) != 0)):
+							localctx.operator = self._errHandler.recoverInline(self)
+						else:
+							self._errHandler.reportMatch(self)
+							self.consume()
+						self.state = 1403
+						localctx.right = self.rule_Expression(5)
+						pass
+
+					elif la_ == 4:
+						localctx = VHDLParser.BinaryOpContext(self,
+																									VHDLParser.Rule_ExpressionContext(self, _parentctx, _parentState))
+						localctx.left = _prevctx
+						self.pushNewRecursionContext(localctx, _startState, self.RULE_rule_Expression)
+						self.state = 1404
+						if not self.precpred(self._ctx, 3):
+							from antlr4.error.Errors import FailedPredicateException
+							raise FailedPredicateException(self, "self.precpred(self._ctx, 3)")
+						self.state = 1405
+						localctx.operator = self._input.LT(1)
+						_la = self._input.LA(1)
+						if not (((((_la - 87)) & ~0x3f) == 0 and ((1 << (_la - 87)) & 1923) != 0)):
+							localctx.operator = self._errHandler.recoverInline(self)
+						else:
+							self._errHandler.reportMatch(self)
+							self.consume()
+						self.state = 1406
+						localctx.right = self.rule_Expression(4)
+						pass
+
+					elif la_ == 5:
+						localctx = VHDLParser.BinaryOpContext(self,
+																									VHDLParser.Rule_ExpressionContext(self, _parentctx, _parentState))
+						localctx.left = _prevctx
+						self.pushNewRecursionContext(localctx, _startState, self.RULE_rule_Expression)
+						self.state = 1407
+						if not self.precpred(self._ctx, 2):
+							from antlr4.error.Errors import FailedPredicateException
+							raise FailedPredicateException(self, "self.precpred(self._ctx, 2)")
+						self.state = 1408
+						localctx.operator = self._input.LT(1)
+						_la = self._input.LA(1)
+						if not (((((_la - 121)) & ~0x3f) == 0 and ((1 << (_la - 121)) & 526335) != 0)):
+							localctx.operator = self._errHandler.recoverInline(self)
+						else:
+							self._errHandler.reportMatch(self)
+							self.consume()
+						self.state = 1409
+						localctx.right = self.rule_Expression(3)
+						pass
+
+					elif la_ == 6:
+						localctx = VHDLParser.BinaryOpContext(self,
+																									VHDLParser.Rule_ExpressionContext(self, _parentctx, _parentState))
+						localctx.left = _prevctx
+						self.pushNewRecursionContext(localctx, _startState, self.RULE_rule_Expression)
+						self.state = 1410
+						if not self.precpred(self._ctx, 1):
+							from antlr4.error.Errors import FailedPredicateException
+							raise FailedPredicateException(self, "self.precpred(self._ctx, 1)")
+						self.state = 1411
+						localctx.operator = self._input.LT(1)
+						_la = self._input.LA(1)
+						if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 2594073385365407744) != 0) or (
+							(((_la - 67)) & ~0x3f) == 0 and ((1 << (_la - 67)) & 13510798882111489) != 0)):
+							localctx.operator = self._errHandler.recoverInline(self)
+						else:
+							self._errHandler.reportMatch(self)
+							self.consume()
+						self.state = 1412
+						localctx.right = self.rule_Expression(2)
+						pass
+
+				self.state = 1417
+				self._errHandler.sync(self)
+				_alt = self._interp.adaptivePredict(self._input, 130, self._ctx)
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.unrollRecursionContexts(_parentctx)
+		return localctx
+
+	class Rule_ExpressionOrUnaffectedContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_Expression(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0)
+
+		def KW_UNAFFECTED(self):
+			return self.getToken(VHDLParser.KW_UNAFFECTED, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ExpressionOrUnaffected
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ExpressionOrUnaffected"):
+				return visitor.visitRule_ExpressionOrUnaffected(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ExpressionOrUnaffected(self):
+
+		localctx = VHDLParser.Rule_ExpressionOrUnaffectedContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 186, self.RULE_rule_ExpressionOrUnaffected)
+		try:
+			self.state = 1420
+			self._errHandler.sync(self)
+			token = self._input.LA(1)
+			if token in [6, 11, 58, 59, 61, 62, 63, 67, 119, 120, 132, 133, 138, 143, 147, 159, 160, 161, 162, 163]:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 1418
+				self.rule_Expression(0)
+				pass
+			elif token in [105]:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 1419
+				self.match(VHDLParser.KW_UNAFFECTED)
+				pass
+			else:
+				raise NoViableAltException(self)
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ExternalNameContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_ExternalConstantName(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ExternalConstantNameContext, 0)
+
+		def rule_ExternalSignalName(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ExternalSignalNameContext, 0)
+
+		def rule_ExternalVariableName(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ExternalVariableNameContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ExternalName
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ExternalName"):
+				return visitor.visitRule_ExternalName(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ExternalName(self):
+
+		localctx = VHDLParser.Rule_ExternalNameContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 188, self.RULE_rule_ExternalName)
+		try:
+			self.state = 1425
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 132, self._ctx)
+			if la_ == 1:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 1422
+				self.rule_ExternalConstantName()
+				pass
+
+			elif la_ == 2:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 1423
+				self.rule_ExternalSignalName()
+				pass
+
+			elif la_ == 3:
+				self.enterOuterAlt(localctx, 3)
+				self.state = 1424
+				self.rule_ExternalVariableName()
+				pass
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ExternalConstantNameContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def TOK_DLA(self):
+			return self.getToken(VHDLParser.TOK_DLA, 0)
+
+		def KW_CONSTANT(self):
+			return self.getToken(VHDLParser.KW_CONSTANT, 0)
+
+		def rule_ExternalPathname(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ExternalPathnameContext, 0)
+
+		def TOK_COLON(self):
+			return self.getToken(VHDLParser.TOK_COLON, 0)
+
+		def rule_InterfaceTypeIndication(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_InterfaceTypeIndicationContext, 0)
+
+		def TOK_DRA(self):
+			return self.getToken(VHDLParser.TOK_DRA, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ExternalConstantName
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ExternalConstantName"):
+				return visitor.visitRule_ExternalConstantName(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ExternalConstantName(self):
+
+		localctx = VHDLParser.Rule_ExternalConstantNameContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 190, self.RULE_rule_ExternalConstantName)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1427
+			self.match(VHDLParser.TOK_DLA)
+			self.state = 1428
+			self.match(VHDLParser.KW_CONSTANT)
+			self.state = 1429
+			self.rule_ExternalPathname()
+			self.state = 1430
+			self.match(VHDLParser.TOK_COLON)
+			self.state = 1431
+			self.rule_InterfaceTypeIndication()
+			self.state = 1432
+			self.match(VHDLParser.TOK_DRA)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ExternalSignalNameContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def TOK_DLA(self):
+			return self.getToken(VHDLParser.TOK_DLA, 0)
+
+		def KW_SIGNAL(self):
+			return self.getToken(VHDLParser.KW_SIGNAL, 0)
+
+		def rule_ExternalPathname(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ExternalPathnameContext, 0)
+
+		def TOK_COLON(self):
+			return self.getToken(VHDLParser.TOK_COLON, 0)
+
+		def rule_InterfaceTypeIndication(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_InterfaceTypeIndicationContext, 0)
+
+		def TOK_DRA(self):
+			return self.getToken(VHDLParser.TOK_DRA, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ExternalSignalName
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ExternalSignalName"):
+				return visitor.visitRule_ExternalSignalName(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ExternalSignalName(self):
+
+		localctx = VHDLParser.Rule_ExternalSignalNameContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 192, self.RULE_rule_ExternalSignalName)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1434
+			self.match(VHDLParser.TOK_DLA)
+			self.state = 1435
+			self.match(VHDLParser.KW_SIGNAL)
+			self.state = 1436
+			self.rule_ExternalPathname()
+			self.state = 1437
+			self.match(VHDLParser.TOK_COLON)
+			self.state = 1438
+			self.rule_InterfaceTypeIndication()
+			self.state = 1439
+			self.match(VHDLParser.TOK_DRA)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ExternalVariableNameContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def TOK_DLA(self):
+			return self.getToken(VHDLParser.TOK_DLA, 0)
+
+		def KW_VARIABLE(self):
+			return self.getToken(VHDLParser.KW_VARIABLE, 0)
+
+		def rule_ExternalPathname(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ExternalPathnameContext, 0)
+
+		def TOK_COLON(self):
+			return self.getToken(VHDLParser.TOK_COLON, 0)
+
+		def rule_InterfaceTypeIndication(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_InterfaceTypeIndicationContext, 0)
+
+		def TOK_DRA(self):
+			return self.getToken(VHDLParser.TOK_DRA, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ExternalVariableName
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ExternalVariableName"):
+				return visitor.visitRule_ExternalVariableName(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ExternalVariableName(self):
+
+		localctx = VHDLParser.Rule_ExternalVariableNameContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 194, self.RULE_rule_ExternalVariableName)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1441
+			self.match(VHDLParser.TOK_DLA)
+			self.state = 1442
+			self.match(VHDLParser.KW_VARIABLE)
+			self.state = 1443
+			self.rule_ExternalPathname()
+			self.state = 1444
+			self.match(VHDLParser.TOK_COLON)
+			self.state = 1445
+			self.rule_InterfaceTypeIndication()
+			self.state = 1446
+			self.match(VHDLParser.TOK_DRA)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ExternalPathnameContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_PackagePathname(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_PackagePathnameContext, 0)
+
+		def rule_AbsolutePathname(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_AbsolutePathnameContext, 0)
+
+		def rule_RelativePathname(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_RelativePathnameContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ExternalPathname
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ExternalPathname"):
+				return visitor.visitRule_ExternalPathname(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ExternalPathname(self):
+
+		localctx = VHDLParser.Rule_ExternalPathnameContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 196, self.RULE_rule_ExternalPathname)
+		try:
+			self.state = 1451
+			self._errHandler.sync(self)
+			token = self._input.LA(1)
+			if token in [155]:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 1448
+				self.rule_PackagePathname()
+				pass
+			elif token in [153]:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 1449
+				self.rule_AbsolutePathname()
+				pass
+			elif token in [156, 163]:
+				self.enterOuterAlt(localctx, 3)
+				self.state = 1450
+				self.rule_RelativePathname()
+				pass
+			else:
+				raise NoViableAltException(self)
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_FileDeclarationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.identifierList = None  # Rule_IdentifierListContext
+			self.subtypeIndication = None  # Rule_SubtypeIndicationContext
+
+		def KW_FILE(self):
+			return self.getToken(VHDLParser.KW_FILE, 0)
+
+		def TOK_COLON(self):
+			return self.getToken(VHDLParser.TOK_COLON, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def rule_IdentifierList(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_IdentifierListContext, 0)
+
+		def rule_SubtypeIndication(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubtypeIndicationContext, 0)
+
+		def rule_FileOpenInformation(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_FileOpenInformationContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_FileDeclaration
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_FileDeclaration"):
+				return visitor.visitRule_FileDeclaration(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_FileDeclaration(self):
+
+		localctx = VHDLParser.Rule_FileDeclarationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 198, self.RULE_rule_FileDeclaration)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1453
+			self.match(VHDLParser.KW_FILE)
+			self.state = 1454
+			localctx.identifierList = self.rule_IdentifierList()
+			self.state = 1455
+			self.match(VHDLParser.TOK_COLON)
+			self.state = 1456
+			localctx.subtypeIndication = self.rule_SubtypeIndication()
+			self.state = 1458
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 50 or _la == 66:
+				self.state = 1457
+				self.rule_FileOpenInformation()
+
+			self.state = 1460
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_FileIncompleteTypeDefinitionContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def KW_FILE(self):
+			return self.getToken(VHDLParser.KW_FILE, 0)
+
+		def KW_OF(self):
+			return self.getToken(VHDLParser.KW_OF, 0)
+
+		def rule_IncompleteTypeMark(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_IncompleteTypeMarkContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_FileIncompleteTypeDefinition
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_FileIncompleteTypeDefinition"):
+				return visitor.visitRule_FileIncompleteTypeDefinition(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_FileIncompleteTypeDefinition(self):
+
+		localctx = VHDLParser.Rule_FileIncompleteTypeDefinitionContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 200, self.RULE_rule_FileIncompleteTypeDefinition)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1462
+			self.match(VHDLParser.KW_FILE)
+			self.state = 1463
+			self.match(VHDLParser.KW_OF)
+			self.state = 1464
+			self.rule_IncompleteTypeMark()
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_FileOpenInformationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.openKindExpression = None  # Rule_ExpressionContext
+			self.fileNameExpression = None  # Rule_ExpressionContext
+
+		def KW_IS(self):
+			return self.getToken(VHDLParser.KW_IS, 0)
+
+		def rule_Expression(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_ExpressionContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, i)
+
+		def KW_OPEN(self):
+			return self.getToken(VHDLParser.KW_OPEN, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_FileOpenInformation
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_FileOpenInformation"):
+				return visitor.visitRule_FileOpenInformation(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_FileOpenInformation(self):
+
+		localctx = VHDLParser.Rule_FileOpenInformationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 202, self.RULE_rule_FileOpenInformation)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1468
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 66:
+				self.state = 1466
+				self.match(VHDLParser.KW_OPEN)
+				self.state = 1467
+				localctx.openKindExpression = self.rule_Expression(0)
+
+			self.state = 1470
+			self.match(VHDLParser.KW_IS)
+			self.state = 1471
+			localctx.fileNameExpression = self.rule_Expression(0)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_FileTypeDefinitionContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def KW_FILE(self):
+			return self.getToken(VHDLParser.KW_FILE, 0)
+
+		def KW_OF(self):
+			return self.getToken(VHDLParser.KW_OF, 0)
+
+		def rule_Name(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_FileTypeDefinition
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_FileTypeDefinition"):
+				return visitor.visitRule_FileTypeDefinition(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_FileTypeDefinition(self):
+
+		localctx = VHDLParser.Rule_FileTypeDefinitionContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 204, self.RULE_rule_FileTypeDefinition)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1473
+			self.match(VHDLParser.KW_FILE)
+			self.state = 1474
+			self.match(VHDLParser.KW_OF)
+			self.state = 1475
+			self.rule_Name(0)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_FloatingIncompleteTypeDefinitionContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def KW_RANGE(self):
+			return self.getToken(VHDLParser.KW_RANGE, 0)
+
+		def TOK_BOX(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.TOK_BOX)
+			else:
+				return self.getToken(VHDLParser.TOK_BOX, i)
+
+		def TOK_DOT(self):
+			return self.getToken(VHDLParser.TOK_DOT, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_FloatingIncompleteTypeDefinition
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_FloatingIncompleteTypeDefinition"):
+				return visitor.visitRule_FloatingIncompleteTypeDefinition(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_FloatingIncompleteTypeDefinition(self):
+
+		localctx = VHDLParser.Rule_FloatingIncompleteTypeDefinitionContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 206, self.RULE_rule_FloatingIncompleteTypeDefinition)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1477
+			self.match(VHDLParser.KW_RANGE)
+			self.state = 1478
+			self.match(VHDLParser.TOK_BOX)
+			self.state = 1479
+			self.match(VHDLParser.TOK_DOT)
+			self.state = 1480
+			self.match(VHDLParser.TOK_BOX)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_FloatingTypeDefinitionContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_RangeConstraint(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_RangeConstraintContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_FloatingTypeDefinition
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_FloatingTypeDefinition"):
+				return visitor.visitRule_FloatingTypeDefinition(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_FloatingTypeDefinition(self):
+
+		localctx = VHDLParser.Rule_FloatingTypeDefinitionContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 208, self.RULE_rule_FloatingTypeDefinition)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1482
+			self.rule_RangeConstraint()
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ForGenerateStatementContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.label = None  # Token
+			self._rule_BlockDeclarativeItem = None  # Rule_BlockDeclarativeItemContext
+			self.declaredItems = list()  # of Rule_BlockDeclarativeItemContexts
+			self._rule_ConcurrentStatement = None  # Rule_ConcurrentStatementContext
+			self.statements = list()  # of Rule_ConcurrentStatementContexts
+			self.label2 = None  # Token
+
+		def TOK_COLON(self):
+			return self.getToken(VHDLParser.TOK_COLON, 0)
+
+		def KW_FOR(self):
+			return self.getToken(VHDLParser.KW_FOR, 0)
+
+		def rule_ParameterSpecification(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ParameterSpecificationContext, 0)
+
+		def KW_GENERATE(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.KW_GENERATE)
+			else:
+				return self.getToken(VHDLParser.KW_GENERATE, i)
+
+		def KW_END(self):
+			return self.getToken(VHDLParser.KW_END, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def LIT_IDENTIFIER(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.LIT_IDENTIFIER)
+			else:
+				return self.getToken(VHDLParser.LIT_IDENTIFIER, i)
+
+		def KW_BEGIN(self):
+			return self.getToken(VHDLParser.KW_BEGIN, 0)
+
+		def rule_ConcurrentStatement(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_ConcurrentStatementContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_ConcurrentStatementContext, i)
+
+		def rule_BlockDeclarativeItem(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_BlockDeclarativeItemContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_BlockDeclarativeItemContext, i)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ForGenerateStatement
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ForGenerateStatement"):
+				return visitor.visitRule_ForGenerateStatement(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ForGenerateStatement(self):
+
+		localctx = VHDLParser.Rule_ForGenerateStatementContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 210, self.RULE_rule_ForGenerateStatement)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1484
+			localctx.label = self.match(VHDLParser.LIT_IDENTIFIER)
+			self.state = 1485
+			self.match(VHDLParser.TOK_COLON)
+			self.state = 1486
+			self.match(VHDLParser.KW_FOR)
+			self.state = 1487
+			self.rule_ParameterSpecification()
+			self.state = 1488
+			self.match(VHDLParser.KW_GENERATE)
+			self.state = 1496
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if (((_la) & ~0x3f) == 0 and ((1 << _la) & 88717423444480) != 0) or (
+				(((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & 1941606236449) != 0):
+				self.state = 1492
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+				while (((_la) & ~0x3f) == 0 and ((1 << _la) & 88717423313408) != 0) or (
+					(((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & 1941606236449) != 0):
+					self.state = 1489
+					localctx._rule_BlockDeclarativeItem = self.rule_BlockDeclarativeItem()
+					localctx.declaredItems.append(localctx._rule_BlockDeclarativeItem)
+					self.state = 1494
+					self._errHandler.sync(self)
+					_la = self._input.LA(1)
+
+				self.state = 1495
+				self.match(VHDLParser.KW_BEGIN)
+
+			self.state = 1501
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			while ((((_la - 14)) & ~0x3f) == 0 and ((1 << (_la - 14)) & 5188146770730811393) != 0) or (
+				(((_la - 116)) & ~0x3f) == 0 and ((1 << (_la - 116)) & 246292886323201) != 0):
+				self.state = 1498
+				localctx._rule_ConcurrentStatement = self.rule_ConcurrentStatement()
+				localctx.statements.append(localctx._rule_ConcurrentStatement)
+				self.state = 1503
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+
+			self.state = 1504
+			self.match(VHDLParser.KW_END)
+			self.state = 1505
+			self.match(VHDLParser.KW_GENERATE)
+			self.state = 1507
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 163:
+				self.state = 1506
+				localctx.label2 = self.match(VHDLParser.LIT_IDENTIFIER)
+
+			self.state = 1509
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_FormalDesignatorContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.signature = None  # Rule_SignatureContext
+
+		def rule_Name(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0)
+
+		def rule_Signature(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SignatureContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_FormalDesignator
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_FormalDesignator"):
+				return visitor.visitRule_FormalDesignator(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_FormalDesignator(self):
+
+		localctx = VHDLParser.Rule_FormalDesignatorContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 212, self.RULE_rule_FormalDesignator)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1511
+			self.rule_Name(0)
+			self.state = 1513
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 145:
+				self.state = 1512
+				localctx.signature = self.rule_Signature()
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_FormalParameterListContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_InterfaceList(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_InterfaceListContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_FormalParameterList
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_FormalParameterList"):
+				return visitor.visitRule_FormalParameterList(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_FormalParameterList(self):
+
+		localctx = VHDLParser.Rule_FormalParameterListContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 214, self.RULE_rule_FormalParameterList)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1515
+			self.rule_InterfaceList()
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_FormalPartContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_FormalDesignator(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_FormalDesignatorContext, 0)
+
+		def TOK_LP(self):
+			return self.getToken(VHDLParser.TOK_LP, 0)
+
+		def TOK_RP(self):
+			return self.getToken(VHDLParser.TOK_RP, 0)
+
+		def rule_Name(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_FormalPart
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_FormalPart"):
+				return visitor.visitRule_FormalPart(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_FormalPart(self):
+
+		localctx = VHDLParser.Rule_FormalPartContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 216, self.RULE_rule_FormalPart)
+		try:
+			self.state = 1526
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 142, self._ctx)
+			if la_ == 1:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 1517
+				self.rule_FormalDesignator()
+				pass
+
+			elif la_ == 2:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 1520
+				self._errHandler.sync(self)
+				la_ = self._interp.adaptivePredict(self._input, 141, self._ctx)
+				if la_ == 1:
+					self.state = 1518
+					self.rule_Name(0)
+					pass
+
+				elif la_ == 2:
+					self.state = 1519
+					self.rule_Name(0)
+					pass
+
+				self.state = 1522
+				self.match(VHDLParser.TOK_LP)
+				self.state = 1523
+				self.rule_FormalDesignator()
+				self.state = 1524
+				self.match(VHDLParser.TOK_RP)
+				pass
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_FullTypeDeclarationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.name = None  # Token
+
+		def KW_TYPE(self):
+			return self.getToken(VHDLParser.KW_TYPE, 0)
+
+		def KW_IS(self):
+			return self.getToken(VHDLParser.KW_IS, 0)
+
+		def rule_TypeDefinition(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_TypeDefinitionContext, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def LIT_IDENTIFIER(self):
+			return self.getToken(VHDLParser.LIT_IDENTIFIER, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_FullTypeDeclaration
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_FullTypeDeclaration"):
+				return visitor.visitRule_FullTypeDeclaration(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_FullTypeDeclaration(self):
+
+		localctx = VHDLParser.Rule_FullTypeDeclarationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 218, self.RULE_rule_FullTypeDeclaration)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1528
+			self.match(VHDLParser.KW_TYPE)
+			self.state = 1529
+			localctx.name = self.match(VHDLParser.LIT_IDENTIFIER)
+			self.state = 1530
+			self.match(VHDLParser.KW_IS)
+			self.state = 1531
+			self.rule_TypeDefinition()
+			self.state = 1532
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_FunctionCallContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.name = None  # Rule_NameContext
+			self.genericMapAspect = None  # Rule_GenericMapAspectContext
+			self.parameterMapAspect = None  # Rule_ParameterMapAspectContext
+
+		def rule_Name(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0)
+
+		def rule_GenericMapAspect(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_GenericMapAspectContext, 0)
+
+		def rule_ParameterMapAspect(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ParameterMapAspectContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_FunctionCall
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_FunctionCall"):
+				return visitor.visitRule_FunctionCall(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_FunctionCall(self):
+
+		localctx = VHDLParser.Rule_FunctionCallContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 220, self.RULE_rule_FunctionCall)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1534
+			localctx.name = self.rule_Name(0)
+			self.state = 1535
+			localctx.genericMapAspect = self.rule_GenericMapAspect()
+			self.state = 1536
+			localctx.parameterMapAspect = self.rule_ParameterMapAspect()
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_FunctionSpecificationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.returnIdentifier = None  # Token
+
+		def KW_FUNCTION(self):
+			return self.getToken(VHDLParser.KW_FUNCTION, 0)
+
+		def rule_Designator(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_DesignatorContext, 0)
+
+		def KW_RETURN(self):
+			return self.getToken(VHDLParser.KW_RETURN, 0)
+
+		def rule_Name(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0)
+
+		def TOK_LP(self):
+			return self.getToken(VHDLParser.TOK_LP, 0)
+
+		def rule_FormalParameterList(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_FormalParameterListContext, 0)
+
+		def TOK_RP(self):
+			return self.getToken(VHDLParser.TOK_RP, 0)
+
+		def KW_OF(self):
+			return self.getToken(VHDLParser.KW_OF, 0)
+
+		def KW_PURE(self):
+			return self.getToken(VHDLParser.KW_PURE, 0)
+
+		def KW_IMPURE(self):
+			return self.getToken(VHDLParser.KW_IMPURE, 0)
+
+		def LIT_IDENTIFIER(self):
+			return self.getToken(VHDLParser.LIT_IDENTIFIER, 0)
+
+		def KW_PARAMETER(self):
+			return self.getToken(VHDLParser.KW_PARAMETER, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_FunctionSpecification
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_FunctionSpecification"):
+				return visitor.visitRule_FunctionSpecification(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_FunctionSpecification(self):
+
+		localctx = VHDLParser.Rule_FunctionSpecificationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 222, self.RULE_rule_FunctionSpecification)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1539
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 46 or _la == 78:
+				self.state = 1538
+				_la = self._input.LA(1)
+				if not (_la == 46 or _la == 78):
+					self._errHandler.recoverInline(self)
+				else:
+					self._errHandler.reportMatch(self)
+					self.consume()
+
+			self.state = 1541
+			self.match(VHDLParser.KW_FUNCTION)
+			self.state = 1542
+			self.rule_Designator()
+			self.state = 1550
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 71 or _la == 143:
+				self.state = 1544
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+				if _la == 71:
+					self.state = 1543
+					self.match(VHDLParser.KW_PARAMETER)
+
+				self.state = 1546
+				self.match(VHDLParser.TOK_LP)
+				self.state = 1547
+				self.rule_FormalParameterList()
+				self.state = 1548
+				self.match(VHDLParser.TOK_RP)
+
+			self.state = 1552
+			self.match(VHDLParser.KW_RETURN)
+			self.state = 1555
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 146, self._ctx)
+			if la_ == 1:
+				self.state = 1553
+				localctx.returnIdentifier = self.match(VHDLParser.LIT_IDENTIFIER)
+				self.state = 1554
+				self.match(VHDLParser.KW_OF)
+
+			self.state = 1557
+			self.rule_Name(0)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_GenerateSpecificationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_DiscreteRange(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_DiscreteRangeContext, 0)
+
+		def rule_Expression(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0)
+
+		def LIT_IDENTIFIER(self):
+			return self.getToken(VHDLParser.LIT_IDENTIFIER, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_GenerateSpecification
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_GenerateSpecification"):
+				return visitor.visitRule_GenerateSpecification(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_GenerateSpecification(self):
+
+		localctx = VHDLParser.Rule_GenerateSpecificationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 224, self.RULE_rule_GenerateSpecification)
+		try:
+			self.state = 1562
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 147, self._ctx)
+			if la_ == 1:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 1559
+				self.rule_DiscreteRange()
+				pass
+
+			elif la_ == 2:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 1560
+				self.rule_Expression(0)
+				pass
+
+			elif la_ == 3:
+				self.enterOuterAlt(localctx, 3)
+				self.state = 1561
+				self.match(VHDLParser.LIT_IDENTIFIER)
+				pass
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_GenerateStatementContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_ForGenerateStatement(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ForGenerateStatementContext, 0)
+
+		def rule_IfGenerateStatement(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_IfGenerateStatementContext, 0)
+
+		def rule_CaseGenerateStatement(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_CaseGenerateStatementContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_GenerateStatement
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_GenerateStatement"):
+				return visitor.visitRule_GenerateStatement(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_GenerateStatement(self):
+
+		localctx = VHDLParser.Rule_GenerateStatementContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 226, self.RULE_rule_GenerateStatement)
+		try:
+			self.state = 1567
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 148, self._ctx)
+			if la_ == 1:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 1564
+				self.rule_ForGenerateStatement()
+				pass
+
+			elif la_ == 2:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 1565
+				self.rule_IfGenerateStatement()
+				pass
+
+			elif la_ == 3:
+				self.enterOuterAlt(localctx, 3)
+				self.state = 1566
+				self.rule_CaseGenerateStatement()
+				pass
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_GenerateStatementBodyContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self._rule_BlockDeclarativeItem = None  # Rule_BlockDeclarativeItemContext
+			self.declaredItems = list()  # of Rule_BlockDeclarativeItemContexts
+			self._rule_ConcurrentStatement = None  # Rule_ConcurrentStatementContext
+			self.statements = list()  # of Rule_ConcurrentStatementContexts
+			self.label = None  # Token
+
+		def KW_BEGIN(self):
+			return self.getToken(VHDLParser.KW_BEGIN, 0)
+
+		def KW_END(self):
+			return self.getToken(VHDLParser.KW_END, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def rule_ConcurrentStatement(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_ConcurrentStatementContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_ConcurrentStatementContext, i)
+
+		def rule_BlockDeclarativeItem(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_BlockDeclarativeItemContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_BlockDeclarativeItemContext, i)
+
+		def LIT_IDENTIFIER(self):
+			return self.getToken(VHDLParser.LIT_IDENTIFIER, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_GenerateStatementBody
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_GenerateStatementBody"):
+				return visitor.visitRule_GenerateStatementBody(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_GenerateStatementBody(self):
+
+		localctx = VHDLParser.Rule_GenerateStatementBodyContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 228, self.RULE_rule_GenerateStatementBody)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1576
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if (((_la) & ~0x3f) == 0 and ((1 << _la) & 88717423444480) != 0) or (
+				(((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & 1941606236449) != 0):
+				self.state = 1572
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+				while (((_la) & ~0x3f) == 0 and ((1 << _la) & 88717423313408) != 0) or (
+					(((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & 1941606236449) != 0):
+					self.state = 1569
+					localctx._rule_BlockDeclarativeItem = self.rule_BlockDeclarativeItem()
+					localctx.declaredItems.append(localctx._rule_BlockDeclarativeItem)
+					self.state = 1574
+					self._errHandler.sync(self)
+					_la = self._input.LA(1)
+
+				self.state = 1575
+				self.match(VHDLParser.KW_BEGIN)
+
+			self.state = 1581
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			while ((((_la - 14)) & ~0x3f) == 0 and ((1 << (_la - 14)) & 5188146770730811393) != 0) or (
+				(((_la - 116)) & ~0x3f) == 0 and ((1 << (_la - 116)) & 246292886323201) != 0):
+				self.state = 1578
+				localctx._rule_ConcurrentStatement = self.rule_ConcurrentStatement()
+				localctx.statements.append(localctx._rule_ConcurrentStatement)
+				self.state = 1583
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+
+			self.state = 1589
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 153, self._ctx)
+			if la_ == 1:
+				self.state = 1584
+				self.match(VHDLParser.KW_END)
+				self.state = 1586
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+				if _la == 163:
+					self.state = 1585
+					localctx.label = self.match(VHDLParser.LIT_IDENTIFIER)
+
+				self.state = 1588
+				self.match(VHDLParser.TOK_SEMICOL)
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_GenericClauseContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self._rule_InterfaceElement = None  # Rule_InterfaceElementContext
+			self.elements = list()  # of Rule_InterfaceElementContexts
+
+		def KW_GENERIC(self):
+			return self.getToken(VHDLParser.KW_GENERIC, 0)
+
+		def TOK_LP(self):
+			return self.getToken(VHDLParser.TOK_LP, 0)
+
+		def TOK_RP(self):
+			return self.getToken(VHDLParser.TOK_RP, 0)
+
+		def TOK_SEMICOL(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.TOK_SEMICOL)
+			else:
+				return self.getToken(VHDLParser.TOK_SEMICOL, i)
+
+		def rule_InterfaceElement(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_InterfaceElementContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_InterfaceElementContext, i)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_GenericClause
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_GenericClause"):
+				return visitor.visitRule_GenericClause(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_GenericClause(self):
+
+		localctx = VHDLParser.Rule_GenericClauseContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 230, self.RULE_rule_GenericClause)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1591
+			self.match(VHDLParser.KW_GENERIC)
+			self.state = 1592
+			self.match(VHDLParser.TOK_LP)
+			self.state = 1593
+			localctx._rule_InterfaceElement = self.rule_InterfaceElement()
+			localctx.elements.append(localctx._rule_InterfaceElement)
+			self.state = 1598
+			self._errHandler.sync(self)
+			_alt = self._interp.adaptivePredict(self._input, 154, self._ctx)
+			while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+				if _alt == 1:
+					self.state = 1594
+					self.match(VHDLParser.TOK_SEMICOL)
+					self.state = 1595
+					localctx._rule_InterfaceElement = self.rule_InterfaceElement()
+					localctx.elements.append(localctx._rule_InterfaceElement)
+				self.state = 1600
+				self._errHandler.sync(self)
+				_alt = self._interp.adaptivePredict(self._input, 154, self._ctx)
+
+			self.state = 1602
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 150:
+				self.state = 1601
+				self.match(VHDLParser.TOK_SEMICOL)
+
+			self.state = 1604
+			self.match(VHDLParser.TOK_RP)
+			self.state = 1605
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_GenericMapAspectContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.associationList = None  # Rule_AssociationListContext
+
+		def KW_GENERIC(self):
+			return self.getToken(VHDLParser.KW_GENERIC, 0)
+
+		def KW_MAP(self):
+			return self.getToken(VHDLParser.KW_MAP, 0)
+
+		def TOK_LP(self):
+			return self.getToken(VHDLParser.TOK_LP, 0)
+
+		def TOK_RP(self):
+			return self.getToken(VHDLParser.TOK_RP, 0)
+
+		def rule_AssociationList(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_AssociationListContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_GenericMapAspect
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_GenericMapAspect"):
+				return visitor.visitRule_GenericMapAspect(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_GenericMapAspect(self):
+
+		localctx = VHDLParser.Rule_GenericMapAspectContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 232, self.RULE_rule_GenericMapAspect)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1607
+			self.match(VHDLParser.KW_GENERIC)
+			self.state = 1608
+			self.match(VHDLParser.KW_MAP)
+			self.state = 1609
+			self.match(VHDLParser.TOK_LP)
+			self.state = 1610
+			localctx.associationList = self.rule_AssociationList()
+			self.state = 1611
+			self.match(VHDLParser.TOK_RP)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_GroupConstituentContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_Name(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0)
+
+		def LIT_CHARACTER(self):
+			return self.getToken(VHDLParser.LIT_CHARACTER, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_GroupConstituent
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_GroupConstituent"):
+				return visitor.visitRule_GroupConstituent(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_GroupConstituent(self):
+
+		localctx = VHDLParser.Rule_GroupConstituentContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 234, self.RULE_rule_GroupConstituent)
+		try:
+			self.state = 1615
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 156, self._ctx)
+			if la_ == 1:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 1613
+				self.rule_Name(0)
+				pass
+
+			elif la_ == 2:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 1614
+				self.match(VHDLParser.LIT_CHARACTER)
+				pass
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_GroupDeclarationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.name = None  # Token
+			self._rule_GroupConstituent = None  # Rule_GroupConstituentContext
+			self.constituents = list()  # of Rule_GroupConstituentContexts
+
+		def KW_GROUP(self):
+			return self.getToken(VHDLParser.KW_GROUP, 0)
+
+		def TOK_COLON(self):
+			return self.getToken(VHDLParser.TOK_COLON, 0)
+
+		def rule_Name(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0)
+
+		def TOK_LP(self):
+			return self.getToken(VHDLParser.TOK_LP, 0)
+
+		def TOK_RP(self):
+			return self.getToken(VHDLParser.TOK_RP, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def LIT_IDENTIFIER(self):
+			return self.getToken(VHDLParser.LIT_IDENTIFIER, 0)
+
+		def rule_GroupConstituent(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_GroupConstituentContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_GroupConstituentContext, i)
+
+		def TOK_COMMA(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.TOK_COMMA)
+			else:
+				return self.getToken(VHDLParser.TOK_COMMA, i)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_GroupDeclaration
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_GroupDeclaration"):
+				return visitor.visitRule_GroupDeclaration(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_GroupDeclaration(self):
+
+		localctx = VHDLParser.Rule_GroupDeclarationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 236, self.RULE_rule_GroupDeclaration)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1617
+			self.match(VHDLParser.KW_GROUP)
+			self.state = 1618
+			localctx.name = self.match(VHDLParser.LIT_IDENTIFIER)
+			self.state = 1619
+			self.match(VHDLParser.TOK_COLON)
+			self.state = 1620
+			self.rule_Name(0)
+			self.state = 1621
+			self.match(VHDLParser.TOK_LP)
+			self.state = 1622
+			localctx._rule_GroupConstituent = self.rule_GroupConstituent()
+			localctx.constituents.append(localctx._rule_GroupConstituent)
+			self.state = 1627
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			while _la == 151:
+				self.state = 1623
+				self.match(VHDLParser.TOK_COMMA)
+				self.state = 1624
+				localctx._rule_GroupConstituent = self.rule_GroupConstituent()
+				localctx.constituents.append(localctx._rule_GroupConstituent)
+				self.state = 1629
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+
+			self.state = 1630
+			self.match(VHDLParser.TOK_RP)
+			self.state = 1631
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_GroupTemplateDeclarationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.name = None  # Token
+			self._rule_EntityClassEntry = None  # Rule_EntityClassEntryContext
+			self.entityClasses = list()  # of Rule_EntityClassEntryContexts
+
+		def KW_GROUP(self):
+			return self.getToken(VHDLParser.KW_GROUP, 0)
+
+		def KW_IS(self):
+			return self.getToken(VHDLParser.KW_IS, 0)
+
+		def TOK_LP(self):
+			return self.getToken(VHDLParser.TOK_LP, 0)
+
+		def TOK_RP(self):
+			return self.getToken(VHDLParser.TOK_RP, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def LIT_IDENTIFIER(self):
+			return self.getToken(VHDLParser.LIT_IDENTIFIER, 0)
+
+		def rule_EntityClassEntry(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_EntityClassEntryContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_EntityClassEntryContext, i)
+
+		def TOK_COMMA(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.TOK_COMMA)
+			else:
+				return self.getToken(VHDLParser.TOK_COMMA, i)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_GroupTemplateDeclaration
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_GroupTemplateDeclaration"):
+				return visitor.visitRule_GroupTemplateDeclaration(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_GroupTemplateDeclaration(self):
+
+		localctx = VHDLParser.Rule_GroupTemplateDeclarationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 238, self.RULE_rule_GroupTemplateDeclaration)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1633
+			self.match(VHDLParser.KW_GROUP)
+			self.state = 1634
+			localctx.name = self.match(VHDLParser.LIT_IDENTIFIER)
+			self.state = 1635
+			self.match(VHDLParser.KW_IS)
+			self.state = 1636
+			self.match(VHDLParser.TOK_LP)
+			self.state = 1637
+			localctx._rule_EntityClassEntry = self.rule_EntityClassEntry()
+			localctx.entityClasses.append(localctx._rule_EntityClassEntry)
+			self.state = 1642
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			while _la == 151:
+				self.state = 1638
+				self.match(VHDLParser.TOK_COMMA)
+				self.state = 1639
+				localctx._rule_EntityClassEntry = self.rule_EntityClassEntry()
+				localctx.entityClasses.append(localctx._rule_EntityClassEntry)
+				self.state = 1644
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+
+			self.state = 1645
+			self.match(VHDLParser.TOK_RP)
+			self.state = 1646
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_GuardedSignalSpecificationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_SignalList(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SignalListContext, 0)
+
+		def TOK_COLON(self):
+			return self.getToken(VHDLParser.TOK_COLON, 0)
+
+		def rule_Name(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_GuardedSignalSpecification
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_GuardedSignalSpecification"):
+				return visitor.visitRule_GuardedSignalSpecification(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_GuardedSignalSpecification(self):
+
+		localctx = VHDLParser.Rule_GuardedSignalSpecificationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 240, self.RULE_rule_GuardedSignalSpecification)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1648
+			self.rule_SignalList()
+			self.state = 1649
+			self.match(VHDLParser.TOK_COLON)
+			self.state = 1650
+			self.rule_Name(0)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_IdentifierListContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self._LIT_IDENTIFIER = None  # Token
+			self.identifiers = list()  # of Tokens
+
+		def LIT_IDENTIFIER(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.LIT_IDENTIFIER)
+			else:
+				return self.getToken(VHDLParser.LIT_IDENTIFIER, i)
+
+		def TOK_COMMA(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.TOK_COMMA)
+			else:
+				return self.getToken(VHDLParser.TOK_COMMA, i)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_IdentifierList
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_IdentifierList"):
+				return visitor.visitRule_IdentifierList(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_IdentifierList(self):
+
+		localctx = VHDLParser.Rule_IdentifierListContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 242, self.RULE_rule_IdentifierList)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1652
+			localctx._LIT_IDENTIFIER = self.match(VHDLParser.LIT_IDENTIFIER)
+			localctx.identifiers.append(localctx._LIT_IDENTIFIER)
+			self.state = 1657
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			while _la == 151:
+				self.state = 1653
+				self.match(VHDLParser.TOK_COMMA)
+				self.state = 1654
+				localctx._LIT_IDENTIFIER = self.match(VHDLParser.LIT_IDENTIFIER)
+				localctx.identifiers.append(localctx._LIT_IDENTIFIER)
+				self.state = 1659
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_IfGenerateStatementContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.label = None  # Token
+			self.ifAlternativeLabel = None  # Token
+			self.ifCondition = None  # Rule_ExpressionContext
+			self.ifBody = None  # Rule_GenerateStatementBodyContext
+			self._LIT_IDENTIFIER = None  # Token
+			self.elsifAlternativeLabel = list()  # of Tokens
+			self._rule_Expression = None  # Rule_ExpressionContext
+			self.elsifCondition = list()  # of Rule_ExpressionContexts
+			self._rule_GenerateStatementBody = None  # Rule_GenerateStatementBodyContext
+			self.elsifBody = list()  # of Rule_GenerateStatementBodyContexts
+			self.elseAlternativeLabel = list()  # of Tokens
+			self.elseBody = None  # Rule_GenerateStatementBodyContext
+			self.label2 = None  # Token
+
+		def TOK_COLON(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.TOK_COLON)
+			else:
+				return self.getToken(VHDLParser.TOK_COLON, i)
+
+		def KW_IF(self):
+			return self.getToken(VHDLParser.KW_IF, 0)
+
+		def KW_GENERATE(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.KW_GENERATE)
+			else:
+				return self.getToken(VHDLParser.KW_GENERATE, i)
+
+		def KW_END(self):
+			return self.getToken(VHDLParser.KW_END, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def LIT_IDENTIFIER(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.LIT_IDENTIFIER)
+			else:
+				return self.getToken(VHDLParser.LIT_IDENTIFIER, i)
+
+		def rule_Expression(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_ExpressionContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, i)
+
+		def rule_GenerateStatementBody(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_GenerateStatementBodyContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_GenerateStatementBodyContext, i)
+
+		def KW_ELSIF(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.KW_ELSIF)
+			else:
+				return self.getToken(VHDLParser.KW_ELSIF, i)
+
+		def KW_ELSE(self):
+			return self.getToken(VHDLParser.KW_ELSE, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_IfGenerateStatement
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_IfGenerateStatement"):
+				return visitor.visitRule_IfGenerateStatement(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_IfGenerateStatement(self):
+
+		localctx = VHDLParser.Rule_IfGenerateStatementContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 244, self.RULE_rule_IfGenerateStatement)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1660
+			localctx.label = self.match(VHDLParser.LIT_IDENTIFIER)
+			self.state = 1661
+			self.match(VHDLParser.TOK_COLON)
+			self.state = 1662
+			self.match(VHDLParser.KW_IF)
+			self.state = 1665
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 160, self._ctx)
+			if la_ == 1:
+				self.state = 1663
+				localctx.ifAlternativeLabel = self.match(VHDLParser.LIT_IDENTIFIER)
+				self.state = 1664
+				self.match(VHDLParser.TOK_COLON)
+
+			self.state = 1667
+			localctx.ifCondition = self.rule_Expression(0)
+			self.state = 1668
+			self.match(VHDLParser.KW_GENERATE)
+			self.state = 1669
+			localctx.ifBody = self.rule_GenerateStatementBody()
+			self.state = 1681
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			while _la == 32:
+				self.state = 1670
+				self.match(VHDLParser.KW_ELSIF)
+				self.state = 1673
+				self._errHandler.sync(self)
+				la_ = self._interp.adaptivePredict(self._input, 161, self._ctx)
+				if la_ == 1:
+					self.state = 1671
+					localctx._LIT_IDENTIFIER = self.match(VHDLParser.LIT_IDENTIFIER)
+					localctx.elsifAlternativeLabel.append(localctx._LIT_IDENTIFIER)
+					self.state = 1672
+					self.match(VHDLParser.TOK_COLON)
+
+				self.state = 1675
+				localctx._rule_Expression = self.rule_Expression(0)
+				localctx.elsifCondition.append(localctx._rule_Expression)
+				self.state = 1676
+				self.match(VHDLParser.KW_GENERATE)
+				self.state = 1677
+				localctx._rule_GenerateStatementBody = self.rule_GenerateStatementBody()
+				localctx.elsifBody.append(localctx._rule_GenerateStatementBody)
+				self.state = 1683
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+
+			self.state = 1691
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 31:
+				self.state = 1684
+				self.match(VHDLParser.KW_ELSE)
+				self.state = 1687
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+				if _la == 163:
+					self.state = 1685
+					localctx._LIT_IDENTIFIER = self.match(VHDLParser.LIT_IDENTIFIER)
+					localctx.elseAlternativeLabel.append(localctx._LIT_IDENTIFIER)
+					self.state = 1686
+					self.match(VHDLParser.TOK_COLON)
+
+				self.state = 1689
+				self.match(VHDLParser.KW_GENERATE)
+				self.state = 1690
+				localctx.elseBody = self.rule_GenerateStatementBody()
+
+			self.state = 1693
+			self.match(VHDLParser.KW_END)
+			self.state = 1694
+			self.match(VHDLParser.KW_GENERATE)
+			self.state = 1696
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 163:
+				self.state = 1695
+				localctx.label2 = self.match(VHDLParser.LIT_IDENTIFIER)
+
+			self.state = 1698
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_IfStatementContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.label = None  # Token
+			self.condition = None  # Rule_ExpressionContext
+			self._rule_SequentialStatement = None  # Rule_SequentialStatementContext
+			self.thenStatements = list()  # of Rule_SequentialStatementContexts
+			self.elseifStatements = list()  # of Rule_SequentialStatementContexts
+			self.elseStatements = list()  # of Rule_SequentialStatementContexts
+			self.label2 = None  # Token
+
+		def KW_IF(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.KW_IF)
+			else:
+				return self.getToken(VHDLParser.KW_IF, i)
+
+		def KW_THEN(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.KW_THEN)
+			else:
+				return self.getToken(VHDLParser.KW_THEN, i)
+
+		def KW_END(self):
+			return self.getToken(VHDLParser.KW_END, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def rule_Expression(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_ExpressionContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, i)
+
+		def TOK_COLON(self):
+			return self.getToken(VHDLParser.TOK_COLON, 0)
+
+		def KW_ELSIF(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.KW_ELSIF)
+			else:
+				return self.getToken(VHDLParser.KW_ELSIF, i)
+
+		def KW_ELSE(self):
+			return self.getToken(VHDLParser.KW_ELSE, 0)
+
+		def LIT_IDENTIFIER(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.LIT_IDENTIFIER)
+			else:
+				return self.getToken(VHDLParser.LIT_IDENTIFIER, i)
+
+		def rule_SequentialStatement(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_SequentialStatementContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_SequentialStatementContext, i)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_IfStatement
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_IfStatement"):
+				return visitor.visitRule_IfStatement(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_IfStatement(self):
+
+		localctx = VHDLParser.Rule_IfStatementContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 246, self.RULE_rule_IfStatement)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1702
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 163:
+				self.state = 1700
+				localctx.label = self.match(VHDLParser.LIT_IDENTIFIER)
+				self.state = 1701
+				self.match(VHDLParser.TOK_COLON)
+
+			self.state = 1704
+			self.match(VHDLParser.KW_IF)
+			self.state = 1705
+			localctx.condition = self.rule_Expression(0)
+			self.state = 1706
+			self.match(VHDLParser.KW_THEN)
+			self.state = 1710
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			while (((_la) & ~0x3f) == 0 and ((1 << _la) & -8052400777563193344) != 0) or (
+				(((_la - 85)) & ~0x3f) == 0 and ((1 << (_la - 85)) & 4899916406390259715) != 0) or (
+				(((_la - 161)) & ~0x3f) == 0 and ((1 << (_la - 161)) & 7) != 0):
+				self.state = 1707
+				localctx._rule_SequentialStatement = self.rule_SequentialStatement()
+				localctx.thenStatements.append(localctx._rule_SequentialStatement)
+				self.state = 1712
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+
+			self.state = 1724
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			while _la == 32:
+				self.state = 1713
+				self.match(VHDLParser.KW_ELSIF)
+				self.state = 1714
+				localctx.condition = self.rule_Expression(0)
+				self.state = 1715
+				self.match(VHDLParser.KW_THEN)
+				self.state = 1719
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+				while (((_la) & ~0x3f) == 0 and ((1 << _la) & -8052400777563193344) != 0) or (
+					(((_la - 85)) & ~0x3f) == 0 and ((1 << (_la - 85)) & 4899916406390259715) != 0) or (
+					(((_la - 161)) & ~0x3f) == 0 and ((1 << (_la - 161)) & 7) != 0):
+					self.state = 1716
+					localctx._rule_SequentialStatement = self.rule_SequentialStatement()
+					localctx.elseifStatements.append(localctx._rule_SequentialStatement)
+					self.state = 1721
+					self._errHandler.sync(self)
+					_la = self._input.LA(1)
+
+				self.state = 1726
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+
+			self.state = 1734
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 31:
+				self.state = 1727
+				self.match(VHDLParser.KW_ELSE)
+				self.state = 1731
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+				while (((_la) & ~0x3f) == 0 and ((1 << _la) & -8052400777563193344) != 0) or (
+					(((_la - 85)) & ~0x3f) == 0 and ((1 << (_la - 85)) & 4899916406390259715) != 0) or (
+					(((_la - 161)) & ~0x3f) == 0 and ((1 << (_la - 161)) & 7) != 0):
+					self.state = 1728
+					localctx._rule_SequentialStatement = self.rule_SequentialStatement()
+					localctx.elseStatements.append(localctx._rule_SequentialStatement)
+					self.state = 1733
+					self._errHandler.sync(self)
+					_la = self._input.LA(1)
+
+			self.state = 1736
+			self.match(VHDLParser.KW_END)
+			self.state = 1737
+			self.match(VHDLParser.KW_IF)
+			self.state = 1739
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 163:
+				self.state = 1738
+				localctx.label2 = self.match(VHDLParser.LIT_IDENTIFIER)
+
+			self.state = 1741
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_IncompleteSubtypeIndicationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_SubtypeIndication(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubtypeIndicationContext, 0)
+
+		def rule_UnspecifiedTypeIndication(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_UnspecifiedTypeIndicationContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_IncompleteSubtypeIndication
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_IncompleteSubtypeIndication"):
+				return visitor.visitRule_IncompleteSubtypeIndication(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_IncompleteSubtypeIndication(self):
+
+		localctx = VHDLParser.Rule_IncompleteSubtypeIndicationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 248, self.RULE_rule_IncompleteSubtypeIndication)
+		try:
+			self.state = 1745
+			self._errHandler.sync(self)
+			token = self._input.LA(1)
+			if token in [143, 147, 161, 162, 163]:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 1743
+				self.rule_SubtypeIndication()
+				pass
+			elif token in [104]:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 1744
+				self.rule_UnspecifiedTypeIndication()
+				pass
+			else:
+				raise NoViableAltException(self)
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_IncompleteTypeDeclarationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.name = None  # Token
+
+		def KW_TYPE(self):
+			return self.getToken(VHDLParser.KW_TYPE, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def LIT_IDENTIFIER(self):
+			return self.getToken(VHDLParser.LIT_IDENTIFIER, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_IncompleteTypeDeclaration
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_IncompleteTypeDeclaration"):
+				return visitor.visitRule_IncompleteTypeDeclaration(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_IncompleteTypeDeclaration(self):
+
+		localctx = VHDLParser.Rule_IncompleteTypeDeclarationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 250, self.RULE_rule_IncompleteTypeDeclaration)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1747
+			self.match(VHDLParser.KW_TYPE)
+			self.state = 1748
+			localctx.name = self.match(VHDLParser.LIT_IDENTIFIER)
+			self.state = 1749
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_IncompleteTypeDefinitionContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_PrivateIncompleteTypeDefinition(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_PrivateIncompleteTypeDefinitionContext, 0)
+
+		def rule_ScalarIncompleteTypeDefinition(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ScalarIncompleteTypeDefinitionContext, 0)
+
+		def rule_DiscreteIncompleteTypeDefinition(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_DiscreteIncompleteTypeDefinitionContext, 0)
+
+		def rule_IntegerIncompleteTypeDefinition(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_IntegerIncompleteTypeDefinitionContext, 0)
+
+		def rule_PhysicalIncompleteTypeDefinition(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_PhysicalIncompleteTypeDefinitionContext, 0)
+
+		def rule_FloatingIncompleteTypeDefinition(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_FloatingIncompleteTypeDefinitionContext, 0)
+
+		def rule_ArrayIncompleteTypeDefinition(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ArrayIncompleteTypeDefinitionContext, 0)
+
+		def rule_AccessIncompleteTypeDefinition(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_AccessIncompleteTypeDefinitionContext, 0)
+
+		def rule_FileIncompleteTypeDefinition(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_FileIncompleteTypeDefinitionContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_IncompleteTypeDefinition
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_IncompleteTypeDefinition"):
+				return visitor.visitRule_IncompleteTypeDefinition(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_IncompleteTypeDefinition(self):
+
+		localctx = VHDLParser.Rule_IncompleteTypeDefinitionContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 252, self.RULE_rule_IncompleteTypeDefinition)
+		try:
+			self.state = 1760
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 174, self._ctx)
+			if la_ == 1:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 1751
+				self.rule_PrivateIncompleteTypeDefinition()
+				pass
+
+			elif la_ == 2:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 1752
+				self.rule_ScalarIncompleteTypeDefinition()
+				pass
+
+			elif la_ == 3:
+				self.enterOuterAlt(localctx, 3)
+				self.state = 1753
+				self.rule_DiscreteIncompleteTypeDefinition()
+				pass
+
+			elif la_ == 4:
+				self.enterOuterAlt(localctx, 4)
+				self.state = 1754
+				self.rule_IntegerIncompleteTypeDefinition()
+				pass
+
+			elif la_ == 5:
+				self.enterOuterAlt(localctx, 5)
+				self.state = 1755
+				self.rule_PhysicalIncompleteTypeDefinition()
+				pass
+
+			elif la_ == 6:
+				self.enterOuterAlt(localctx, 6)
+				self.state = 1756
+				self.rule_FloatingIncompleteTypeDefinition()
+				pass
+
+			elif la_ == 7:
+				self.enterOuterAlt(localctx, 7)
+				self.state = 1757
+				self.rule_ArrayIncompleteTypeDefinition()
+				pass
+
+			elif la_ == 8:
+				self.enterOuterAlt(localctx, 8)
+				self.state = 1758
+				self.rule_AccessIncompleteTypeDefinition()
+				pass
+
+			elif la_ == 9:
+				self.enterOuterAlt(localctx, 9)
+				self.state = 1759
+				self.rule_FileIncompleteTypeDefinition()
+				pass
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_IncompleteTypeMarkContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_Name(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0)
+
+		def rule_UnspecifiedTypeIndication(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_UnspecifiedTypeIndicationContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_IncompleteTypeMark
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_IncompleteTypeMark"):
+				return visitor.visitRule_IncompleteTypeMark(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_IncompleteTypeMark(self):
+
+		localctx = VHDLParser.Rule_IncompleteTypeMarkContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 254, self.RULE_rule_IncompleteTypeMark)
+		try:
+			self.state = 1764
+			self._errHandler.sync(self)
+			token = self._input.LA(1)
+			if token in [147, 161, 162, 163]:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 1762
+				self.rule_Name(0)
+				pass
+			elif token in [104]:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 1763
+				self.rule_UnspecifiedTypeIndication()
+				pass
+			else:
+				raise NoViableAltException(self)
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_IndexConstraintContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self._rule_DiscreteRange = None  # Rule_DiscreteRangeContext
+			self.ranges = list()  # of Rule_DiscreteRangeContexts
+
+		def TOK_LP(self):
+			return self.getToken(VHDLParser.TOK_LP, 0)
+
+		def TOK_RP(self):
+			return self.getToken(VHDLParser.TOK_RP, 0)
+
+		def rule_DiscreteRange(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_DiscreteRangeContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_DiscreteRangeContext, i)
+
+		def TOK_COMMA(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.TOK_COMMA)
+			else:
+				return self.getToken(VHDLParser.TOK_COMMA, i)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_IndexConstraint
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_IndexConstraint"):
+				return visitor.visitRule_IndexConstraint(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_IndexConstraint(self):
+
+		localctx = VHDLParser.Rule_IndexConstraintContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 256, self.RULE_rule_IndexConstraint)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1766
+			self.match(VHDLParser.TOK_LP)
+			self.state = 1767
+			localctx._rule_DiscreteRange = self.rule_DiscreteRange()
+			localctx.ranges.append(localctx._rule_DiscreteRange)
+			self.state = 1772
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			while _la == 151:
+				self.state = 1768
+				self.match(VHDLParser.TOK_COMMA)
+				self.state = 1769
+				localctx._rule_DiscreteRange = self.rule_DiscreteRange()
+				localctx.ranges.append(localctx._rule_DiscreteRange)
+				self.state = 1774
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+
+			self.state = 1775
+			self.match(VHDLParser.TOK_RP)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_IndexSubtypeDefinitionContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.typeMark = None  # Rule_NameContext
+
+		def KW_RANGE(self):
+			return self.getToken(VHDLParser.KW_RANGE, 0)
+
+		def TOK_BOX(self):
+			return self.getToken(VHDLParser.TOK_BOX, 0)
+
+		def rule_Name(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_IndexSubtypeDefinition
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_IndexSubtypeDefinition"):
+				return visitor.visitRule_IndexSubtypeDefinition(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_IndexSubtypeDefinition(self):
+
+		localctx = VHDLParser.Rule_IndexSubtypeDefinitionContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 258, self.RULE_rule_IndexSubtypeDefinition)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1777
+			localctx.typeMark = self.rule_Name(0)
+			self.state = 1778
+			self.match(VHDLParser.KW_RANGE)
+			self.state = 1779
+			self.match(VHDLParser.TOK_BOX)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_InstantiatedUnitContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.component = None  # Token
+			self.componentName = None  # Rule_NameContext
+			self.entityName = None  # Rule_NameContext
+			self.architectureName = None  # Token
+			self.configurationName = None  # Rule_NameContext
+
+		def rule_Name(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0)
+
+		def KW_COMPONENT(self):
+			return self.getToken(VHDLParser.KW_COMPONENT, 0)
+
+		def KW_ENTITY(self):
+			return self.getToken(VHDLParser.KW_ENTITY, 0)
+
+		def TOK_LP(self):
+			return self.getToken(VHDLParser.TOK_LP, 0)
+
+		def TOK_RP(self):
+			return self.getToken(VHDLParser.TOK_RP, 0)
+
+		def LIT_IDENTIFIER(self):
+			return self.getToken(VHDLParser.LIT_IDENTIFIER, 0)
+
+		def KW_CONFIGURATION(self):
+			return self.getToken(VHDLParser.KW_CONFIGURATION, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_InstantiatedUnit
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_InstantiatedUnit"):
+				return visitor.visitRule_InstantiatedUnit(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_InstantiatedUnit(self):
+
+		localctx = VHDLParser.Rule_InstantiatedUnitContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 260, self.RULE_rule_InstantiatedUnit)
+		self._la = 0  # Token type
+		try:
+			self.state = 1794
+			self._errHandler.sync(self)
+			token = self._input.LA(1)
+			if token in [23, 147, 161, 162, 163]:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 1782
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+				if _la == 23:
+					self.state = 1781
+					localctx.component = self.match(VHDLParser.KW_COMPONENT)
+
+				self.state = 1784
+				localctx.componentName = self.rule_Name(0)
+				pass
+			elif token in [34]:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 1785
+				self.match(VHDLParser.KW_ENTITY)
+				self.state = 1786
+				localctx.entityName = self.rule_Name(0)
+				self.state = 1790
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+				if _la == 143:
+					self.state = 1787
+					self.match(VHDLParser.TOK_LP)
+					self.state = 1788
+					localctx.architectureName = self.match(VHDLParser.LIT_IDENTIFIER)
+					self.state = 1789
+					self.match(VHDLParser.TOK_RP)
+
+				pass
+			elif token in [24]:
+				self.enterOuterAlt(localctx, 3)
+				self.state = 1792
+				self.match(VHDLParser.KW_CONFIGURATION)
+				self.state = 1793
+				localctx.configurationName = self.rule_Name(0)
+				pass
+			else:
+				raise NoViableAltException(self)
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_InstantiationListContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self._LIT_IDENTIFIER = None  # Token
+			self.componentNames = list()  # of Tokens
+			self.others = None  # Token
+			self.all_ = None  # Token
+
+		def LIT_IDENTIFIER(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.LIT_IDENTIFIER)
+			else:
+				return self.getToken(VHDLParser.LIT_IDENTIFIER, i)
+
+		def TOK_COMMA(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.TOK_COMMA)
+			else:
+				return self.getToken(VHDLParser.TOK_COMMA, i)
+
+		def KW_OTHERS(self):
+			return self.getToken(VHDLParser.KW_OTHERS, 0)
+
+		def KW_ALL(self):
+			return self.getToken(VHDLParser.KW_ALL, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_InstantiationList
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_InstantiationList"):
+				return visitor.visitRule_InstantiationList(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_InstantiationList(self):
+
+		localctx = VHDLParser.Rule_InstantiationListContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 262, self.RULE_rule_InstantiationList)
+		self._la = 0  # Token type
+		try:
+			self.state = 1806
+			self._errHandler.sync(self)
+			token = self._input.LA(1)
+			if token in [163]:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 1796
+				localctx._LIT_IDENTIFIER = self.match(VHDLParser.LIT_IDENTIFIER)
+				localctx.componentNames.append(localctx._LIT_IDENTIFIER)
+				self.state = 1801
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+				while _la == 151:
+					self.state = 1797
+					self.match(VHDLParser.TOK_COMMA)
+					self.state = 1798
+					localctx._LIT_IDENTIFIER = self.match(VHDLParser.LIT_IDENTIFIER)
+					localctx.componentNames.append(localctx._LIT_IDENTIFIER)
+					self.state = 1803
+					self._errHandler.sync(self)
+					_la = self._input.LA(1)
+
+				pass
+			elif token in [68]:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 1804
+				localctx.others = self.match(VHDLParser.KW_OTHERS)
+				pass
+			elif token in [10]:
+				self.enterOuterAlt(localctx, 3)
+				self.state = 1805
+				localctx.all_ = self.match(VHDLParser.KW_ALL)
+				pass
+			else:
+				raise NoViableAltException(self)
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_IntegerIncompleteTypeDefinitionContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def KW_RANGE(self):
+			return self.getToken(VHDLParser.KW_RANGE, 0)
+
+		def TOK_BOX(self):
+			return self.getToken(VHDLParser.TOK_BOX, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_IntegerIncompleteTypeDefinition
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_IntegerIncompleteTypeDefinition"):
+				return visitor.visitRule_IntegerIncompleteTypeDefinition(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_IntegerIncompleteTypeDefinition(self):
+
+		localctx = VHDLParser.Rule_IntegerIncompleteTypeDefinitionContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 264, self.RULE_rule_IntegerIncompleteTypeDefinition)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1808
+			self.match(VHDLParser.KW_RANGE)
+			self.state = 1809
+			self.match(VHDLParser.TOK_BOX)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_IntegerTypeDefinitionContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_RangeConstraint(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_RangeConstraintContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_IntegerTypeDefinition
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_IntegerTypeDefinition"):
+				return visitor.visitRule_IntegerTypeDefinition(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_IntegerTypeDefinition(self):
+
+		localctx = VHDLParser.Rule_IntegerTypeDefinitionContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 266, self.RULE_rule_IntegerTypeDefinition)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1811
+			self.rule_RangeConstraint()
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_InterfaceConstantDeclarationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.constantNames = None  # Rule_IdentifierListContext
+			self.modeName = None  # Token
+			self.subtypeIndication = None  # Rule_SubtypeIndicationContext
+			self.defaultValue = None  # Rule_ExpressionContext
+
+		def TOK_COLON(self):
+			return self.getToken(VHDLParser.TOK_COLON, 0)
+
+		def rule_IdentifierList(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_IdentifierListContext, 0)
+
+		def rule_SubtypeIndication(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubtypeIndicationContext, 0)
+
+		def KW_CONSTANT(self):
+			return self.getToken(VHDLParser.KW_CONSTANT, 0)
+
+		def TOK_VAR_ASSIGN(self):
+			return self.getToken(VHDLParser.TOK_VAR_ASSIGN, 0)
+
+		def KW_IN(self):
+			return self.getToken(VHDLParser.KW_IN, 0)
+
+		def rule_Expression(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_InterfaceConstantDeclaration
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_InterfaceConstantDeclaration"):
+				return visitor.visitRule_InterfaceConstantDeclaration(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_InterfaceConstantDeclaration(self):
+
+		localctx = VHDLParser.Rule_InterfaceConstantDeclarationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 268, self.RULE_rule_InterfaceConstantDeclaration)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1814
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 25:
+				self.state = 1813
+				self.match(VHDLParser.KW_CONSTANT)
+
+			self.state = 1816
+			localctx.constantNames = self.rule_IdentifierList()
+			self.state = 1817
+			self.match(VHDLParser.TOK_COLON)
+			self.state = 1819
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 47:
+				self.state = 1818
+				localctx.modeName = self.match(VHDLParser.KW_IN)
+
+			self.state = 1821
+			localctx.subtypeIndication = self.rule_SubtypeIndication()
+			self.state = 1824
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 141:
+				self.state = 1822
+				self.match(VHDLParser.TOK_VAR_ASSIGN)
+				self.state = 1823
+				localctx.defaultValue = self.rule_Expression(0)
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_InterfaceDeclarationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_InterfaceConstantDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_InterfaceConstantDeclarationContext, 0)
+
+		def rule_InterfaceVariableDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_InterfaceVariableDeclarationContext, 0)
+
+		def rule_InterfaceFileDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_InterfaceFileDeclarationContext, 0)
+
+		def rule_InterfaceTypeDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_InterfaceTypeDeclarationContext, 0)
+
+		def rule_InterfaceSubprogramDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_InterfaceSubprogramDeclarationContext, 0)
+
+		def rule_InterfacePackageDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_InterfacePackageDeclarationContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_InterfaceDeclaration
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_InterfaceDeclaration"):
+				return visitor.visitRule_InterfaceDeclaration(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_InterfaceDeclaration(self):
+
+		localctx = VHDLParser.Rule_InterfaceDeclarationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 270, self.RULE_rule_InterfaceDeclaration)
+		try:
+			self.state = 1832
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 185, self._ctx)
+			if la_ == 1:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 1826
+				self.rule_InterfaceConstantDeclaration()
+				pass
+
+			elif la_ == 2:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 1827
+				self.rule_InterfaceVariableDeclaration()
+				pass
+
+			elif la_ == 3:
+				self.enterOuterAlt(localctx, 3)
+				self.state = 1828
+				self.rule_InterfaceFileDeclaration()
+				pass
+
+			elif la_ == 4:
+				self.enterOuterAlt(localctx, 4)
+				self.state = 1829
+				self.rule_InterfaceTypeDeclaration()
+				pass
+
+			elif la_ == 5:
+				self.enterOuterAlt(localctx, 5)
+				self.state = 1830
+				self.rule_InterfaceSubprogramDeclaration()
+				pass
+
+			elif la_ == 6:
+				self.enterOuterAlt(localctx, 6)
+				self.state = 1831
+				self.rule_InterfacePackageDeclaration()
+				pass
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_InterfaceElementContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_InterfaceDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_InterfaceDeclarationContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_InterfaceElement
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_InterfaceElement"):
+				return visitor.visitRule_InterfaceElement(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_InterfaceElement(self):
+
+		localctx = VHDLParser.Rule_InterfaceElementContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 272, self.RULE_rule_InterfaceElement)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1834
+			self.rule_InterfaceDeclaration()
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_InterfaceFileDeclarationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.names = None  # Rule_IdentifierListContext
+			self.subtypeIndication = None  # Rule_SubtypeIndicationContext
+
+		def KW_FILE(self):
+			return self.getToken(VHDLParser.KW_FILE, 0)
+
+		def TOK_COLON(self):
+			return self.getToken(VHDLParser.TOK_COLON, 0)
+
+		def rule_IdentifierList(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_IdentifierListContext, 0)
+
+		def rule_SubtypeIndication(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubtypeIndicationContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_InterfaceFileDeclaration
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_InterfaceFileDeclaration"):
+				return visitor.visitRule_InterfaceFileDeclaration(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_InterfaceFileDeclaration(self):
+
+		localctx = VHDLParser.Rule_InterfaceFileDeclarationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 274, self.RULE_rule_InterfaceFileDeclaration)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1836
+			self.match(VHDLParser.KW_FILE)
+			self.state = 1837
+			localctx.names = self.rule_IdentifierList()
+			self.state = 1838
+			self.match(VHDLParser.TOK_COLON)
+			self.state = 1839
+			localctx.subtypeIndication = self.rule_SubtypeIndication()
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_InterfaceFunctionSpecificationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def KW_FUNCTION(self):
+			return self.getToken(VHDLParser.KW_FUNCTION, 0)
+
+		def rule_Designator(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_DesignatorContext, 0)
+
+		def KW_RETURN(self):
+			return self.getToken(VHDLParser.KW_RETURN, 0)
+
+		def rule_Name(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0)
+
+		def TOK_LP(self):
+			return self.getToken(VHDLParser.TOK_LP, 0)
+
+		def rule_FormalParameterList(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_FormalParameterListContext, 0)
+
+		def TOK_RP(self):
+			return self.getToken(VHDLParser.TOK_RP, 0)
+
+		def KW_PURE(self):
+			return self.getToken(VHDLParser.KW_PURE, 0)
+
+		def KW_IMPURE(self):
+			return self.getToken(VHDLParser.KW_IMPURE, 0)
+
+		def KW_PARAMETER(self):
+			return self.getToken(VHDLParser.KW_PARAMETER, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_InterfaceFunctionSpecification
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_InterfaceFunctionSpecification"):
+				return visitor.visitRule_InterfaceFunctionSpecification(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_InterfaceFunctionSpecification(self):
+
+		localctx = VHDLParser.Rule_InterfaceFunctionSpecificationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 276, self.RULE_rule_InterfaceFunctionSpecification)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1842
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 46 or _la == 78:
+				self.state = 1841
+				_la = self._input.LA(1)
+				if not (_la == 46 or _la == 78):
+					self._errHandler.recoverInline(self)
+				else:
+					self._errHandler.reportMatch(self)
+					self.consume()
+
+			self.state = 1844
+			self.match(VHDLParser.KW_FUNCTION)
+			self.state = 1845
+			self.rule_Designator()
+			self.state = 1853
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 71 or _la == 143:
+				self.state = 1847
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+				if _la == 71:
+					self.state = 1846
+					self.match(VHDLParser.KW_PARAMETER)
+
+				self.state = 1849
+				self.match(VHDLParser.TOK_LP)
+				self.state = 1850
+				self.rule_FormalParameterList()
+				self.state = 1851
+				self.match(VHDLParser.TOK_RP)
+
+			self.state = 1855
+			self.match(VHDLParser.KW_RETURN)
+			self.state = 1856
+			self.rule_Name(0)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_InterfaceListContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self._rule_InterfaceElement = None  # Rule_InterfaceElementContext
+			self.interfaceElements = list()  # of Rule_InterfaceElementContexts
+
+		def rule_InterfaceElement(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_InterfaceElementContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_InterfaceElementContext, i)
+
+		def TOK_SEMICOL(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.TOK_SEMICOL)
+			else:
+				return self.getToken(VHDLParser.TOK_SEMICOL, i)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_InterfaceList
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_InterfaceList"):
+				return visitor.visitRule_InterfaceList(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_InterfaceList(self):
+
+		localctx = VHDLParser.Rule_InterfaceListContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 278, self.RULE_rule_InterfaceList)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1858
+			localctx._rule_InterfaceElement = self.rule_InterfaceElement()
+			localctx.interfaceElements.append(localctx._rule_InterfaceElement)
+			self.state = 1863
+			self._errHandler.sync(self)
+			_alt = self._interp.adaptivePredict(self._input, 189, self._ctx)
+			while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+				if _alt == 1:
+					self.state = 1859
+					self.match(VHDLParser.TOK_SEMICOL)
+					self.state = 1860
+					localctx._rule_InterfaceElement = self.rule_InterfaceElement()
+					localctx.interfaceElements.append(localctx._rule_InterfaceElement)
+				self.state = 1865
+				self._errHandler.sync(self)
+				_alt = self._interp.adaptivePredict(self._input, 189, self._ctx)
+
+			self.state = 1867
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 150:
+				self.state = 1866
+				self.match(VHDLParser.TOK_SEMICOL)
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_InterfacePackageDeclarationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.name = None  # Token
+
+		def KW_PACKAGE(self):
+			return self.getToken(VHDLParser.KW_PACKAGE, 0)
+
+		def KW_IS(self):
+			return self.getToken(VHDLParser.KW_IS, 0)
+
+		def KW_NEW(self):
+			return self.getToken(VHDLParser.KW_NEW, 0)
+
+		def rule_Name(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0)
+
+		def rule_InterfacePackageGenericMapAspect(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_InterfacePackageGenericMapAspectContext, 0)
+
+		def LIT_IDENTIFIER(self):
+			return self.getToken(VHDLParser.LIT_IDENTIFIER, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_InterfacePackageDeclaration
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_InterfacePackageDeclaration"):
+				return visitor.visitRule_InterfacePackageDeclaration(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_InterfacePackageDeclaration(self):
+
+		localctx = VHDLParser.Rule_InterfacePackageDeclarationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 280, self.RULE_rule_InterfacePackageDeclaration)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1869
+			self.match(VHDLParser.KW_PACKAGE)
+			self.state = 1870
+			localctx.name = self.match(VHDLParser.LIT_IDENTIFIER)
+			self.state = 1871
+			self.match(VHDLParser.KW_IS)
+			self.state = 1872
+			self.match(VHDLParser.KW_NEW)
+			self.state = 1873
+			self.rule_Name(0)
+			self.state = 1874
+			self.rule_InterfacePackageGenericMapAspect()
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_InterfacePackageGenericMapAspectContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_GenericMapAspect(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_GenericMapAspectContext, 0)
+
+		def KW_GENERIC(self):
+			return self.getToken(VHDLParser.KW_GENERIC, 0)
+
+		def KW_MAP(self):
+			return self.getToken(VHDLParser.KW_MAP, 0)
+
+		def TOK_LP(self):
+			return self.getToken(VHDLParser.TOK_LP, 0)
+
+		def TOK_RP(self):
+			return self.getToken(VHDLParser.TOK_RP, 0)
+
+		def TOK_BOX(self):
+			return self.getToken(VHDLParser.TOK_BOX, 0)
+
+		def KW_DEFAULT(self):
+			return self.getToken(VHDLParser.KW_DEFAULT, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_InterfacePackageGenericMapAspect
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_InterfacePackageGenericMapAspect"):
+				return visitor.visitRule_InterfacePackageGenericMapAspect(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_InterfacePackageGenericMapAspect(self):
+
+		localctx = VHDLParser.Rule_InterfacePackageGenericMapAspectContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 282, self.RULE_rule_InterfacePackageGenericMapAspect)
+		self._la = 0  # Token type
+		try:
+			self.state = 1882
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 191, self._ctx)
+			if la_ == 1:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 1876
+				self.rule_GenericMapAspect()
+				pass
+
+			elif la_ == 2:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 1877
+				self.match(VHDLParser.KW_GENERIC)
+				self.state = 1878
+				self.match(VHDLParser.KW_MAP)
+				self.state = 1879
+				self.match(VHDLParser.TOK_LP)
+				self.state = 1880
+				_la = self._input.LA(1)
+				if not (_la == 28 or _la == 142):
+					self._errHandler.recoverInline(self)
+				else:
+					self._errHandler.reportMatch(self)
+					self.consume()
+				self.state = 1881
+				self.match(VHDLParser.TOK_RP)
+				pass
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_InterfaceProcedureSpecificationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.name = None  # Token
+
+		def KW_PROCEDURE(self):
+			return self.getToken(VHDLParser.KW_PROCEDURE, 0)
+
+		def LIT_IDENTIFIER(self):
+			return self.getToken(VHDLParser.LIT_IDENTIFIER, 0)
+
+		def TOK_LP(self):
+			return self.getToken(VHDLParser.TOK_LP, 0)
+
+		def rule_FormalParameterList(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_FormalParameterListContext, 0)
+
+		def TOK_RP(self):
+			return self.getToken(VHDLParser.TOK_RP, 0)
+
+		def KW_PARAMETER(self):
+			return self.getToken(VHDLParser.KW_PARAMETER, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_InterfaceProcedureSpecification
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_InterfaceProcedureSpecification"):
+				return visitor.visitRule_InterfaceProcedureSpecification(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_InterfaceProcedureSpecification(self):
+
+		localctx = VHDLParser.Rule_InterfaceProcedureSpecificationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 284, self.RULE_rule_InterfaceProcedureSpecification)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1884
+			self.match(VHDLParser.KW_PROCEDURE)
+			self.state = 1885
+			localctx.name = self.match(VHDLParser.LIT_IDENTIFIER)
+			self.state = 1893
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 71 or _la == 143:
+				self.state = 1887
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+				if _la == 71:
+					self.state = 1886
+					self.match(VHDLParser.KW_PARAMETER)
+
+				self.state = 1889
+				self.match(VHDLParser.TOK_LP)
+				self.state = 1890
+				self.rule_FormalParameterList()
+				self.state = 1891
+				self.match(VHDLParser.TOK_RP)
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_InterfaceSignalDeclarationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.modeName = None  # Rule_ModeIndicationContext
+
+		def rule_IdentifierList(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_IdentifierListContext, 0)
+
+		def TOK_COLON(self):
+			return self.getToken(VHDLParser.TOK_COLON, 0)
+
+		def rule_ModeIndication(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ModeIndicationContext, 0)
+
+		def KW_SIGNAL(self):
+			return self.getToken(VHDLParser.KW_SIGNAL, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_InterfaceSignalDeclaration
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_InterfaceSignalDeclaration"):
+				return visitor.visitRule_InterfaceSignalDeclaration(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_InterfaceSignalDeclaration(self):
+
+		localctx = VHDLParser.Rule_InterfaceSignalDeclarationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 286, self.RULE_rule_InterfaceSignalDeclaration)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1896
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 93:
+				self.state = 1895
+				self.match(VHDLParser.KW_SIGNAL)
+
+			self.state = 1898
+			self.rule_IdentifierList()
+			self.state = 1899
+			self.match(VHDLParser.TOK_COLON)
+			self.state = 1900
+			localctx.modeName = self.rule_ModeIndication()
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_InterfaceSubprogramDeclarationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_InterfaceSubprogramSpecification(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_InterfaceSubprogramSpecificationContext, 0)
+
+		def KW_IS(self):
+			return self.getToken(VHDLParser.KW_IS, 0)
+
+		def rule_InterfaceSubprogramDefault(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_InterfaceSubprogramDefaultContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_InterfaceSubprogramDeclaration
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_InterfaceSubprogramDeclaration"):
+				return visitor.visitRule_InterfaceSubprogramDeclaration(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_InterfaceSubprogramDeclaration(self):
+
+		localctx = VHDLParser.Rule_InterfaceSubprogramDeclarationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 288, self.RULE_rule_InterfaceSubprogramDeclaration)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1902
+			self.rule_InterfaceSubprogramSpecification()
+			self.state = 1905
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 50:
+				self.state = 1903
+				self.match(VHDLParser.KW_IS)
+				self.state = 1904
+				self.rule_InterfaceSubprogramDefault()
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_InterfaceSubprogramDefaultContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_Name(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0)
+
+		def TOK_BOX(self):
+			return self.getToken(VHDLParser.TOK_BOX, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_InterfaceSubprogramDefault
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_InterfaceSubprogramDefault"):
+				return visitor.visitRule_InterfaceSubprogramDefault(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_InterfaceSubprogramDefault(self):
+
+		localctx = VHDLParser.Rule_InterfaceSubprogramDefaultContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 290, self.RULE_rule_InterfaceSubprogramDefault)
+		try:
+			self.state = 1909
+			self._errHandler.sync(self)
+			token = self._input.LA(1)
+			if token in [147, 161, 162, 163]:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 1907
+				self.rule_Name(0)
+				pass
+			elif token in [142]:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 1908
+				self.match(VHDLParser.TOK_BOX)
+				pass
+			else:
+				raise NoViableAltException(self)
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_InterfaceSubprogramSpecificationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_InterfaceFunctionSpecification(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_InterfaceFunctionSpecificationContext, 0)
+
+		def rule_InterfaceProcedureSpecification(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_InterfaceProcedureSpecificationContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_InterfaceSubprogramSpecification
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_InterfaceSubprogramSpecification"):
+				return visitor.visitRule_InterfaceSubprogramSpecification(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_InterfaceSubprogramSpecification(self):
+
+		localctx = VHDLParser.Rule_InterfaceSubprogramSpecificationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 292, self.RULE_rule_InterfaceSubprogramSpecification)
+		try:
+			self.state = 1913
+			self._errHandler.sync(self)
+			token = self._input.LA(1)
+			if token in [39, 46, 78]:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 1911
+				self.rule_InterfaceFunctionSpecification()
+				pass
+			elif token in [75]:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 1912
+				self.rule_InterfaceProcedureSpecification()
+				pass
+			else:
+				raise NoViableAltException(self)
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_InterfaceTypeDeclarationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.name = None  # Token
+
+		def KW_TYPE(self):
+			return self.getToken(VHDLParser.KW_TYPE, 0)
+
+		def LIT_IDENTIFIER(self):
+			return self.getToken(VHDLParser.LIT_IDENTIFIER, 0)
+
+		def KW_IS(self):
+			return self.getToken(VHDLParser.KW_IS, 0)
+
+		def rule_IncompleteTypeDefinition(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_IncompleteTypeDefinitionContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_InterfaceTypeDeclaration
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_InterfaceTypeDeclaration"):
+				return visitor.visitRule_InterfaceTypeDeclaration(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_InterfaceTypeDeclaration(self):
+
+		localctx = VHDLParser.Rule_InterfaceTypeDeclarationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 294, self.RULE_rule_InterfaceTypeDeclaration)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1915
+			self.match(VHDLParser.KW_TYPE)
+			self.state = 1916
+			localctx.name = self.match(VHDLParser.LIT_IDENTIFIER)
+			self.state = 1919
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 50:
+				self.state = 1917
+				self.match(VHDLParser.KW_IS)
+				self.state = 1918
+				self.rule_IncompleteTypeDefinition()
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_InterfaceTypeIndicationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_SubtypeIndication(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubtypeIndicationContext, 0)
+
+		def rule_UnspecifiedTypeIndication(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_UnspecifiedTypeIndicationContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_InterfaceTypeIndication
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_InterfaceTypeIndication"):
+				return visitor.visitRule_InterfaceTypeIndication(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_InterfaceTypeIndication(self):
+
+		localctx = VHDLParser.Rule_InterfaceTypeIndicationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 296, self.RULE_rule_InterfaceTypeIndication)
+		try:
+			self.state = 1923
+			self._errHandler.sync(self)
+			token = self._input.LA(1)
+			if token in [143, 147, 161, 162, 163]:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 1921
+				self.rule_SubtypeIndication()
+				pass
+			elif token in [104]:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 1922
+				self.rule_UnspecifiedTypeIndication()
+				pass
+			else:
+				raise NoViableAltException(self)
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_InterfaceVariableDeclarationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.names = None  # Rule_IdentifierListContext
+			self.modeName = None  # Rule_ModeContext
+			self.interfaceTypeIndication = None  # Rule_InterfaceTypeIndicationContext
+			self.expression = None  # Rule_ConditionalExpressionContext
+
+		def TOK_COLON(self):
+			return self.getToken(VHDLParser.TOK_COLON, 0)
+
+		def rule_IdentifierList(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_IdentifierListContext, 0)
+
+		def rule_InterfaceTypeIndication(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_InterfaceTypeIndicationContext, 0)
+
+		def KW_VARIABLE(self):
+			return self.getToken(VHDLParser.KW_VARIABLE, 0)
+
+		def TOK_VAR_ASSIGN(self):
+			return self.getToken(VHDLParser.TOK_VAR_ASSIGN, 0)
+
+		def rule_Mode(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ModeContext, 0)
+
+		def rule_ConditionalExpression(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ConditionalExpressionContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_InterfaceVariableDeclaration
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_InterfaceVariableDeclaration"):
+				return visitor.visitRule_InterfaceVariableDeclaration(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_InterfaceVariableDeclaration(self):
+
+		localctx = VHDLParser.Rule_InterfaceVariableDeclarationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 298, self.RULE_rule_InterfaceVariableDeclaration)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1926
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 109:
+				self.state = 1925
+				self.match(VHDLParser.KW_VARIABLE)
+
+			self.state = 1928
+			localctx.names = self.rule_IdentifierList()
+			self.state = 1929
+			self.match(VHDLParser.TOK_COLON)
+			self.state = 1931
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if (((_la - 20)) & ~0x3f) == 0 and ((1 << (_la - 20)) & 562959214444545) != 0:
+				self.state = 1930
+				localctx.modeName = self.rule_Mode()
+
+			self.state = 1933
+			localctx.interfaceTypeIndication = self.rule_InterfaceTypeIndication()
+			self.state = 1936
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 141:
+				self.state = 1934
+				self.match(VHDLParser.TOK_VAR_ASSIGN)
+				self.state = 1935
+				localctx.expression = self.rule_ConditionalExpression()
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_IterationSchemeContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.condition = None  # Rule_ExpressionContext
+			self.parameterSpecification = None  # Rule_ParameterSpecificationContext
+
+		def KW_WHILE(self):
+			return self.getToken(VHDLParser.KW_WHILE, 0)
+
+		def rule_Expression(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0)
+
+		def KW_FOR(self):
+			return self.getToken(VHDLParser.KW_FOR, 0)
+
+		def rule_ParameterSpecification(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ParameterSpecificationContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_IterationScheme
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_IterationScheme"):
+				return visitor.visitRule_IterationScheme(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_IterationScheme(self):
+
+		localctx = VHDLParser.Rule_IterationSchemeContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 300, self.RULE_rule_IterationScheme)
+		try:
+			self.state = 1942
+			self._errHandler.sync(self)
+			token = self._input.LA(1)
+			if token in [118]:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 1938
+				self.match(VHDLParser.KW_WHILE)
+				self.state = 1939
+				localctx.condition = self.rule_Expression(0)
+				pass
+			elif token in [37]:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 1940
+				self.match(VHDLParser.KW_FOR)
+				self.state = 1941
+				localctx.parameterSpecification = self.rule_ParameterSpecification()
+				pass
+			else:
+				raise NoViableAltException(self)
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_LibraryClauseContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self._LIT_IDENTIFIER = None  # Token
+			self.names = list()  # of Tokens
+
+		def KW_LIBRARY(self):
+			return self.getToken(VHDLParser.KW_LIBRARY, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def LIT_IDENTIFIER(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.LIT_IDENTIFIER)
+			else:
+				return self.getToken(VHDLParser.LIT_IDENTIFIER, i)
+
+		def TOK_COMMA(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.TOK_COMMA)
+			else:
+				return self.getToken(VHDLParser.TOK_COMMA, i)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_LibraryClause
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_LibraryClause"):
+				return visitor.visitRule_LibraryClause(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_LibraryClause(self):
+
+		localctx = VHDLParser.Rule_LibraryClauseContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 302, self.RULE_rule_LibraryClause)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1944
+			self.match(VHDLParser.KW_LIBRARY)
+			self.state = 1945
+			localctx._LIT_IDENTIFIER = self.match(VHDLParser.LIT_IDENTIFIER)
+			localctx.names.append(localctx._LIT_IDENTIFIER)
+			self.state = 1950
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			while _la == 151:
+				self.state = 1946
+				self.match(VHDLParser.TOK_COMMA)
+				self.state = 1947
+				localctx._LIT_IDENTIFIER = self.match(VHDLParser.LIT_IDENTIFIER)
+				localctx.names.append(localctx._LIT_IDENTIFIER)
+				self.state = 1952
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+
+			self.state = 1953
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_LibraryUnitContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.entity = None  # Rule_EntityDeclarationContext
+			self.configuration = None  # Rule_ConfigurationDeclarationContext
+			self.package = None  # Rule_PackageDeclarationContext
+			self.packageInstance = None  # Rule_PackageInstantiationDeclarationContext
+			self.context = None  # Rule_ContextDeclarationContext
+			self.architecture = None  # Rule_ArchitectureContext
+			self.packageBody = None  # Rule_PackageBodyContext
+
+		def rule_EntityDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_EntityDeclarationContext, 0)
+
+		def rule_ConfigurationDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ConfigurationDeclarationContext, 0)
+
+		def rule_PackageDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_PackageDeclarationContext, 0)
+
+		def rule_PackageInstantiationDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_PackageInstantiationDeclarationContext, 0)
+
+		def rule_ContextDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ContextDeclarationContext, 0)
+
+		def rule_Architecture(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ArchitectureContext, 0)
+
+		def rule_PackageBody(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_PackageBodyContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_LibraryUnit
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_LibraryUnit"):
+				return visitor.visitRule_LibraryUnit(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_LibraryUnit(self):
+
+		localctx = VHDLParser.Rule_LibraryUnitContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 304, self.RULE_rule_LibraryUnit)
+		try:
+			self.state = 1962
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 205, self._ctx)
+			if la_ == 1:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 1955
+				localctx.entity = self.rule_EntityDeclaration()
+				pass
+
+			elif la_ == 2:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 1956
+				localctx.configuration = self.rule_ConfigurationDeclaration()
+				pass
+
+			elif la_ == 3:
+				self.enterOuterAlt(localctx, 3)
+				self.state = 1957
+				localctx.package = self.rule_PackageDeclaration()
+				pass
+
+			elif la_ == 4:
+				self.enterOuterAlt(localctx, 4)
+				self.state = 1958
+				localctx.packageInstance = self.rule_PackageInstantiationDeclaration()
+				pass
+
+			elif la_ == 5:
+				self.enterOuterAlt(localctx, 5)
+				self.state = 1959
+				localctx.context = self.rule_ContextDeclaration()
+				pass
+
+			elif la_ == 6:
+				self.enterOuterAlt(localctx, 6)
+				self.state = 1960
+				localctx.architecture = self.rule_Architecture()
+				pass
+
+			elif la_ == 7:
+				self.enterOuterAlt(localctx, 7)
+				self.state = 1961
+				localctx.packageBody = self.rule_PackageBody()
+				pass
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_LiteralContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_NumericLiteral(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_NumericLiteralContext, 0)
+
+		def rule_EnumerationLiteral(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_EnumerationLiteralContext, 0)
+
+		def LIT_STRING(self):
+			return self.getToken(VHDLParser.LIT_STRING, 0)
+
+		def LIT_BIT_STRING(self):
+			return self.getToken(VHDLParser.LIT_BIT_STRING, 0)
+
+		def KW_NULL(self):
+			return self.getToken(VHDLParser.KW_NULL, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_Literal
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_Literal"):
+				return visitor.visitRule_Literal(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_Literal(self):
+
+		localctx = VHDLParser.Rule_LiteralContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 306, self.RULE_rule_Literal)
+		try:
+			self.state = 1969
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 206, self._ctx)
+			if la_ == 1:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 1964
+				self.rule_NumericLiteral()
+				pass
+
+			elif la_ == 2:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 1965
+				self.rule_EnumerationLiteral()
+				pass
+
+			elif la_ == 3:
+				self.enterOuterAlt(localctx, 3)
+				self.state = 1966
+				self.match(VHDLParser.LIT_STRING)
+				pass
+
+			elif la_ == 4:
+				self.enterOuterAlt(localctx, 4)
+				self.state = 1967
+				self.match(VHDLParser.LIT_BIT_STRING)
+				pass
+
+			elif la_ == 5:
+				self.enterOuterAlt(localctx, 5)
+				self.state = 1968
+				self.match(VHDLParser.KW_NULL)
+				pass
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_LoopStatementContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.label = None  # Token
+			self.scheme = None  # Rule_IterationSchemeContext
+			self._rule_SequentialStatement = None  # Rule_SequentialStatementContext
+			self.statements = list()  # of Rule_SequentialStatementContexts
+			self.label2 = None  # Token
+
+		def KW_LOOP(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.KW_LOOP)
+			else:
+				return self.getToken(VHDLParser.KW_LOOP, i)
+
+		def KW_END(self):
+			return self.getToken(VHDLParser.KW_END, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def TOK_COLON(self):
+			return self.getToken(VHDLParser.TOK_COLON, 0)
+
+		def LIT_IDENTIFIER(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.LIT_IDENTIFIER)
+			else:
+				return self.getToken(VHDLParser.LIT_IDENTIFIER, i)
+
+		def rule_IterationScheme(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_IterationSchemeContext, 0)
+
+		def rule_SequentialStatement(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_SequentialStatementContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_SequentialStatementContext, i)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_LoopStatement
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_LoopStatement"):
+				return visitor.visitRule_LoopStatement(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_LoopStatement(self):
+
+		localctx = VHDLParser.Rule_LoopStatementContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 308, self.RULE_rule_LoopStatement)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1973
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 163:
+				self.state = 1971
+				localctx.label = self.match(VHDLParser.LIT_IDENTIFIER)
+				self.state = 1972
+				self.match(VHDLParser.TOK_COLON)
+
+			self.state = 1976
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 37 or _la == 118:
+				self.state = 1975
+				localctx.scheme = self.rule_IterationScheme()
+
+			self.state = 1978
+			self.match(VHDLParser.KW_LOOP)
+			self.state = 1982
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			while (((_la) & ~0x3f) == 0 and ((1 << _la) & -8052400777563193344) != 0) or (
+				(((_la - 85)) & ~0x3f) == 0 and ((1 << (_la - 85)) & 4899916406390259715) != 0) or (
+				(((_la - 161)) & ~0x3f) == 0 and ((1 << (_la - 161)) & 7) != 0):
+				self.state = 1979
+				localctx._rule_SequentialStatement = self.rule_SequentialStatement()
+				localctx.statements.append(localctx._rule_SequentialStatement)
+				self.state = 1984
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+
+			self.state = 1985
+			self.match(VHDLParser.KW_END)
+			self.state = 1986
+			self.match(VHDLParser.KW_LOOP)
+			self.state = 1988
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 163:
+				self.state = 1987
+				localctx.label2 = self.match(VHDLParser.LIT_IDENTIFIER)
+
+			self.state = 1990
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ModeContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.name = None  # Token
+
+		def KW_IN(self):
+			return self.getToken(VHDLParser.KW_IN, 0)
+
+		def KW_OUT(self):
+			return self.getToken(VHDLParser.KW_OUT, 0)
+
+		def KW_INOUT(self):
+			return self.getToken(VHDLParser.KW_INOUT, 0)
+
+		def KW_BUFFER(self):
+			return self.getToken(VHDLParser.KW_BUFFER, 0)
+
+		def KW_LINKAGE(self):
+			return self.getToken(VHDLParser.KW_LINKAGE, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_Mode
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_Mode"):
+				return visitor.visitRule_Mode(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_Mode(self):
+
+		localctx = VHDLParser.Rule_ModeContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 310, self.RULE_rule_Mode)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1992
+			localctx.name = self._input.LT(1)
+			_la = self._input.LA(1)
+			if not (((((_la - 20)) & ~0x3f) == 0 and ((1 << (_la - 20)) & 562959214444545) != 0)):
+				localctx.name = self._errHandler.recoverInline(self)
+			else:
+				self._errHandler.reportMatch(self)
+				self.consume()
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ModeIndicationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_SimpleModeIndication(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SimpleModeIndicationContext, 0)
+
+		def rule_ArrayModeViewIndication(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ArrayModeViewIndicationContext, 0)
+
+		def rule_RecordModeViewIndication(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_RecordModeViewIndicationContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ModeIndication
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ModeIndication"):
+				return visitor.visitRule_ModeIndication(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ModeIndication(self):
+
+		localctx = VHDLParser.Rule_ModeIndicationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 312, self.RULE_rule_ModeIndication)
+		try:
+			self.state = 1997
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 211, self._ctx)
+			if la_ == 1:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 1994
+				self.rule_SimpleModeIndication()
+				pass
+
+			elif la_ == 2:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 1995
+				self.rule_ArrayModeViewIndication()
+				pass
+
+			elif la_ == 3:
+				self.enterOuterAlt(localctx, 3)
+				self.state = 1996
+				self.rule_RecordModeViewIndication()
+				pass
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ModeViewDeclarationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.name = None  # Token
+			self.name2 = None  # Token
+
+		def KW_VIEW(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.KW_VIEW)
+			else:
+				return self.getToken(VHDLParser.KW_VIEW, i)
+
+		def KW_OF(self):
+			return self.getToken(VHDLParser.KW_OF, 0)
+
+		def rule_SubtypeIndication(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubtypeIndicationContext, 0)
+
+		def KW_IS(self):
+			return self.getToken(VHDLParser.KW_IS, 0)
+
+		def KW_END(self):
+			return self.getToken(VHDLParser.KW_END, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def LIT_IDENTIFIER(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.LIT_IDENTIFIER)
+			else:
+				return self.getToken(VHDLParser.LIT_IDENTIFIER, i)
+
+		def rule_ModeViewElementDefinition(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_ModeViewElementDefinitionContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_ModeViewElementDefinitionContext, i)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ModeViewDeclaration
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ModeViewDeclaration"):
+				return visitor.visitRule_ModeViewDeclaration(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ModeViewDeclaration(self):
+
+		localctx = VHDLParser.Rule_ModeViewDeclarationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 314, self.RULE_rule_ModeViewDeclaration)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 1999
+			self.match(VHDLParser.KW_VIEW)
+			self.state = 2000
+			localctx.name = self.match(VHDLParser.LIT_IDENTIFIER)
+			self.state = 2001
+			self.match(VHDLParser.KW_OF)
+			self.state = 2002
+			self.rule_SubtypeIndication()
+			self.state = 2003
+			self.match(VHDLParser.KW_IS)
+			self.state = 2007
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			while _la == 163:
+				self.state = 2004
+				self.rule_ModeViewElementDefinition()
+				self.state = 2009
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+
+			self.state = 2010
+			self.match(VHDLParser.KW_END)
+			self.state = 2011
+			self.match(VHDLParser.KW_VIEW)
+			self.state = 2013
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 163:
+				self.state = 2012
+				localctx.name2 = self.match(VHDLParser.LIT_IDENTIFIER)
+
+			self.state = 2015
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ModeViewElementDefinitionContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_RecordElementList(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_RecordElementListContext, 0)
+
+		def TOK_COLON(self):
+			return self.getToken(VHDLParser.TOK_COLON, 0)
+
+		def rule_ElementModeIndication(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ElementModeIndicationContext, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ModeViewElementDefinition
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ModeViewElementDefinition"):
+				return visitor.visitRule_ModeViewElementDefinition(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ModeViewElementDefinition(self):
+
+		localctx = VHDLParser.Rule_ModeViewElementDefinitionContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 316, self.RULE_rule_ModeViewElementDefinition)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2017
+			self.rule_RecordElementList()
+			self.state = 2018
+			self.match(VHDLParser.TOK_COLON)
+			self.state = 2019
+			self.rule_ElementModeIndication()
+			self.state = 2020
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_NameContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_Name
+
+		def copyFrom(self, ctx: ParserRuleContext):
+			super().copyFrom(ctx)
+
+	class Rule_CharContext(Rule_NameContext):
+
+		def __init__(self, parser, ctx: ParserRuleContext):  # actually a VHDLParser.Rule_NameContext
+			super().__init__(parser)
+			self.copyFrom(ctx)
+
+		def LIT_CHARACTER(self):
+			return self.getToken(VHDLParser.LIT_CHARACTER, 0)
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_Char"):
+				return visitor.visitRule_Char(self)
+			else:
+				return visitor.visitChildren(self)
+
+	class Rule_IndexedNameContext(Rule_NameContext):
+
+		def __init__(self, parser, ctx: ParserRuleContext):  # actually a VHDLParser.Rule_NameContext
+			super().__init__(parser)
+			self.prefix = None  # Rule_NameContext
+			self._rule_Expression = None  # Rule_ExpressionContext
+			self.expressions = list()  # of Rule_ExpressionContexts
+			self.copyFrom(ctx)
+
+		def TOK_LP(self):
+			return self.getToken(VHDLParser.TOK_LP, 0)
+
+		def TOK_RP(self):
+			return self.getToken(VHDLParser.TOK_RP, 0)
+
+		def rule_Name(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0)
+
+		def rule_Expression(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_ExpressionContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, i)
+
+		def TOK_COMMA(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.TOK_COMMA)
+			else:
+				return self.getToken(VHDLParser.TOK_COMMA, i)
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_IndexedName"):
+				return visitor.visitRule_IndexedName(self)
+			else:
+				return visitor.visitChildren(self)
+
+	class Rule_SimpleNameContext(Rule_NameContext):
+
+		def __init__(self, parser, ctx: ParserRuleContext):  # actually a VHDLParser.Rule_NameContext
+			super().__init__(parser)
+			self.copyFrom(ctx)
+
+		def LIT_IDENTIFIER(self):
+			return self.getToken(VHDLParser.LIT_IDENTIFIER, 0)
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_SimpleName"):
+				return visitor.visitRule_SimpleName(self)
+			else:
+				return visitor.visitChildren(self)
+
+	class Rule_ExternalContext(Rule_NameContext):
+
+		def __init__(self, parser, ctx: ParserRuleContext):  # actually a VHDLParser.Rule_NameContext
+			super().__init__(parser)
+			self.copyFrom(ctx)
+
+		def rule_ExternalName(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ExternalNameContext, 0)
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_External"):
+				return visitor.visitRule_External(self)
+			else:
+				return visitor.visitChildren(self)
+
+	class Rule_AttributeNameContext(Rule_NameContext):
+
+		def __init__(self, parser, ctx: ParserRuleContext):  # actually a VHDLParser.Rule_NameContext
+			super().__init__(parser)
+			self.prefix = None  # Rule_NameContext
+			self.signature = None  # Rule_SignatureContext
+			self.designator = None  # Rule_AttributeDesignatorContext
+			self.expression = None  # Rule_ExpressionContext
+			self.copyFrom(ctx)
+
+		def TOK_TICK(self):
+			return self.getToken(VHDLParser.TOK_TICK, 0)
+
+		def rule_Name(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0)
+
+		def rule_AttributeDesignator(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_AttributeDesignatorContext, 0)
+
+		def TOK_LP(self):
+			return self.getToken(VHDLParser.TOK_LP, 0)
+
+		def TOK_RP(self):
+			return self.getToken(VHDLParser.TOK_RP, 0)
+
+		def rule_Signature(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SignatureContext, 0)
+
+		def rule_Expression(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0)
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_AttributeName"):
+				return visitor.visitRule_AttributeName(self)
+			else:
+				return visitor.visitChildren(self)
+
+	class Rule_SelectedNameContext(Rule_NameContext):
+
+		def __init__(self, parser, ctx: ParserRuleContext):  # actually a VHDLParser.Rule_NameContext
+			super().__init__(parser)
+			self.prefix = None  # Rule_NameContext
+			self.copyFrom(ctx)
+
+		def TOK_DOT(self):
+			return self.getToken(VHDLParser.TOK_DOT, 0)
+
+		def rule_Suffix(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SuffixContext, 0)
+
+		def rule_Name(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0)
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_SelectedName"):
+				return visitor.visitRule_SelectedName(self)
+			else:
+				return visitor.visitChildren(self)
+
+	class Rule_SliceNameContext(Rule_NameContext):
+
+		def __init__(self, parser, ctx: ParserRuleContext):  # actually a VHDLParser.Rule_NameContext
+			super().__init__(parser)
+			self.prefix = None  # Rule_NameContext
+			self.copyFrom(ctx)
+
+		def TOK_LP(self):
+			return self.getToken(VHDLParser.TOK_LP, 0)
+
+		def rule_DiscreteRange(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_DiscreteRangeContext, 0)
+
+		def TOK_RP(self):
+			return self.getToken(VHDLParser.TOK_RP, 0)
+
+		def rule_Name(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0)
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_SliceName"):
+				return visitor.visitRule_SliceName(self)
+			else:
+				return visitor.visitChildren(self)
+
+	class Rule_OperatorContext(Rule_NameContext):
+
+		def __init__(self, parser, ctx: ParserRuleContext):  # actually a VHDLParser.Rule_NameContext
+			super().__init__(parser)
+			self.copyFrom(ctx)
+
+		def LIT_STRING(self):
+			return self.getToken(VHDLParser.LIT_STRING, 0)
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_Operator"):
+				return visitor.visitRule_Operator(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_Name(self, _p: int = 0):
+		_parentctx = self._ctx
+		_parentState = self.state
+		localctx = VHDLParser.Rule_NameContext(self, self._ctx, _parentState)
+		_prevctx = localctx
+		_startState = 318
+		self.enterRecursionRule(localctx, 318, self.RULE_rule_Name, _p)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2027
+			self._errHandler.sync(self)
+			token = self._input.LA(1)
+			if token in [163]:
+				localctx = VHDLParser.Rule_SimpleNameContext(self, localctx)
+				self._ctx = localctx
+				_prevctx = localctx
+
+				self.state = 2023
+				self.match(VHDLParser.LIT_IDENTIFIER)
+				pass
+			elif token in [162]:
+				localctx = VHDLParser.Rule_OperatorContext(self, localctx)
+				self._ctx = localctx
+				_prevctx = localctx
+				self.state = 2024
+				self.match(VHDLParser.LIT_STRING)
+				pass
+			elif token in [161]:
+				localctx = VHDLParser.Rule_CharContext(self, localctx)
+				self._ctx = localctx
+				_prevctx = localctx
+				self.state = 2025
+				self.match(VHDLParser.LIT_CHARACTER)
+				pass
+			elif token in [147]:
+				localctx = VHDLParser.Rule_ExternalContext(self, localctx)
+				self._ctx = localctx
+				_prevctx = localctx
+				self.state = 2026
+				self.rule_ExternalName()
+				pass
+			else:
+				raise NoViableAltException(self)
+
+			self._ctx.stop = self._input.LT(-1)
+			self.state = 2063
+			self._errHandler.sync(self)
+			_alt = self._interp.adaptivePredict(self._input, 219, self._ctx)
+			while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+				if _alt == 1:
+					if self._parseListeners is not None:
+						self.triggerExitRuleEvent()
+					_prevctx = localctx
+					self.state = 2061
+					self._errHandler.sync(self)
+					la_ = self._interp.adaptivePredict(self._input, 218, self._ctx)
+					if la_ == 1:
+						localctx = VHDLParser.Rule_SelectedNameContext(self,
+																													 VHDLParser.Rule_NameContext(self, _parentctx, _parentState))
+						localctx.prefix = _prevctx
+						self.pushNewRecursionContext(localctx, _startState, self.RULE_rule_Name)
+						self.state = 2029
+						if not self.precpred(self._ctx, 5):
+							from antlr4.error.Errors import FailedPredicateException
+							raise FailedPredicateException(self, "self.precpred(self._ctx, 5)")
+						self.state = 2030
+						self.match(VHDLParser.TOK_DOT)
+						self.state = 2031
+						self.rule_Suffix()
+						pass
+
+					elif la_ == 2:
+						localctx = VHDLParser.Rule_IndexedNameContext(self,
+																													VHDLParser.Rule_NameContext(self, _parentctx, _parentState))
+						localctx.prefix = _prevctx
+						self.pushNewRecursionContext(localctx, _startState, self.RULE_rule_Name)
+						self.state = 2032
+						if not self.precpred(self._ctx, 4):
+							from antlr4.error.Errors import FailedPredicateException
+							raise FailedPredicateException(self, "self.precpred(self._ctx, 4)")
+						self.state = 2033
+						self.match(VHDLParser.TOK_LP)
+						self.state = 2034
+						localctx._rule_Expression = self.rule_Expression(0)
+						localctx.expressions.append(localctx._rule_Expression)
+						self.state = 2039
+						self._errHandler.sync(self)
+						_la = self._input.LA(1)
+						while _la == 151:
+							self.state = 2035
+							self.match(VHDLParser.TOK_COMMA)
+							self.state = 2036
+							localctx._rule_Expression = self.rule_Expression(0)
+							localctx.expressions.append(localctx._rule_Expression)
+							self.state = 2041
+							self._errHandler.sync(self)
+							_la = self._input.LA(1)
+
+						self.state = 2042
+						self.match(VHDLParser.TOK_RP)
+						pass
+
+					elif la_ == 3:
+						localctx = VHDLParser.Rule_SliceNameContext(self,
+																												VHDLParser.Rule_NameContext(self, _parentctx, _parentState))
+						localctx.prefix = _prevctx
+						self.pushNewRecursionContext(localctx, _startState, self.RULE_rule_Name)
+						self.state = 2044
+						if not self.precpred(self._ctx, 3):
+							from antlr4.error.Errors import FailedPredicateException
+							raise FailedPredicateException(self, "self.precpred(self._ctx, 3)")
+						self.state = 2045
+						self.match(VHDLParser.TOK_LP)
+						self.state = 2046
+						self.rule_DiscreteRange()
+						self.state = 2047
+						self.match(VHDLParser.TOK_RP)
+						pass
+
+					elif la_ == 4:
+						localctx = VHDLParser.Rule_AttributeNameContext(self,
+																														VHDLParser.Rule_NameContext(self, _parentctx, _parentState))
+						localctx.prefix = _prevctx
+						self.pushNewRecursionContext(localctx, _startState, self.RULE_rule_Name)
+						self.state = 2049
+						if not self.precpred(self._ctx, 2):
+							from antlr4.error.Errors import FailedPredicateException
+							raise FailedPredicateException(self, "self.precpred(self._ctx, 2)")
+						self.state = 2051
+						self._errHandler.sync(self)
+						_la = self._input.LA(1)
+						if _la == 145:
+							self.state = 2050
+							localctx.signature = self.rule_Signature()
+
+						self.state = 2053
+						self.match(VHDLParser.TOK_TICK)
+						self.state = 2054
+						localctx.designator = self.rule_AttributeDesignator()
+						self.state = 2059
+						self._errHandler.sync(self)
+						la_ = self._interp.adaptivePredict(self._input, 217, self._ctx)
+						if la_ == 1:
+							self.state = 2055
+							self.match(VHDLParser.TOK_LP)
+							self.state = 2056
+							localctx.expression = self.rule_Expression(0)
+							self.state = 2057
+							self.match(VHDLParser.TOK_RP)
+
+						pass
+
+				self.state = 2065
+				self._errHandler.sync(self)
+				_alt = self._interp.adaptivePredict(self._input, 219, self._ctx)
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.unrollRecursionContexts(_parentctx)
+		return localctx
+
+	class Rule_NextStatementContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.label = None  # Token
+			self.referencedLabel = None  # Token
+			self.condition = None  # Rule_ExpressionContext
+
+		def KW_NEXT(self):
+			return self.getToken(VHDLParser.KW_NEXT, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def TOK_COLON(self):
+			return self.getToken(VHDLParser.TOK_COLON, 0)
+
+		def KW_WHEN(self):
+			return self.getToken(VHDLParser.KW_WHEN, 0)
+
+		def LIT_IDENTIFIER(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.LIT_IDENTIFIER)
+			else:
+				return self.getToken(VHDLParser.LIT_IDENTIFIER, i)
+
+		def rule_Expression(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_NextStatement
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_NextStatement"):
+				return visitor.visitRule_NextStatement(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_NextStatement(self):
+
+		localctx = VHDLParser.Rule_NextStatementContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 320, self.RULE_rule_NextStatement)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2068
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 163:
+				self.state = 2066
+				localctx.label = self.match(VHDLParser.LIT_IDENTIFIER)
+				self.state = 2067
+				self.match(VHDLParser.TOK_COLON)
+
+			self.state = 2070
+			self.match(VHDLParser.KW_NEXT)
+			self.state = 2072
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 163:
+				self.state = 2071
+				localctx.referencedLabel = self.match(VHDLParser.LIT_IDENTIFIER)
+
+			self.state = 2076
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 117:
+				self.state = 2074
+				self.match(VHDLParser.KW_WHEN)
+				self.state = 2075
+				localctx.condition = self.rule_Expression(0)
+
+			self.state = 2078
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_NullStatementContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.label = None  # Token
+
+		def KW_NULL(self):
+			return self.getToken(VHDLParser.KW_NULL, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def TOK_COLON(self):
+			return self.getToken(VHDLParser.TOK_COLON, 0)
+
+		def LIT_IDENTIFIER(self):
+			return self.getToken(VHDLParser.LIT_IDENTIFIER, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_NullStatement
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_NullStatement"):
+				return visitor.visitRule_NullStatement(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_NullStatement(self):
+
+		localctx = VHDLParser.Rule_NullStatementContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 322, self.RULE_rule_NullStatement)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2082
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 163:
+				self.state = 2080
+				localctx.label = self.match(VHDLParser.LIT_IDENTIFIER)
+				self.state = 2081
+				self.match(VHDLParser.TOK_COLON)
+
+			self.state = 2084
+			self.match(VHDLParser.KW_NULL)
+			self.state = 2085
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_NumericLiteralContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def LIT_ABSTRACT(self):
+			return self.getToken(VHDLParser.LIT_ABSTRACT, 0)
+
+		def rule_PhysicalLiteral(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_PhysicalLiteralContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_NumericLiteral
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_NumericLiteral"):
+				return visitor.visitRule_NumericLiteral(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_NumericLiteral(self):
+
+		localctx = VHDLParser.Rule_NumericLiteralContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 324, self.RULE_rule_NumericLiteral)
+		try:
+			self.state = 2089
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 224, self._ctx)
+			if la_ == 1:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 2087
+				self.match(VHDLParser.LIT_ABSTRACT)
+				pass
+
+			elif la_ == 2:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 2088
+				self.rule_PhysicalLiteral()
+				pass
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_PackageBodyContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.name = None  # Token
+			self._rule_PackageBodyDeclarativeItem = None  # Rule_PackageBodyDeclarativeItemContext
+			self.declarativeItem = list()  # of Rule_PackageBodyDeclarativeItemContexts
+			self.name2 = None  # Token
+
+		def KW_PACKAGE(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.KW_PACKAGE)
+			else:
+				return self.getToken(VHDLParser.KW_PACKAGE, i)
+
+		def KW_BODY(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.KW_BODY)
+			else:
+				return self.getToken(VHDLParser.KW_BODY, i)
+
+		def KW_IS(self):
+			return self.getToken(VHDLParser.KW_IS, 0)
+
+		def KW_END(self):
+			return self.getToken(VHDLParser.KW_END, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def LIT_IDENTIFIER(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.LIT_IDENTIFIER)
+			else:
+				return self.getToken(VHDLParser.LIT_IDENTIFIER, i)
+
+		def rule_PackageBodyDeclarativeItem(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_PackageBodyDeclarativeItemContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_PackageBodyDeclarativeItemContext, i)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_PackageBody
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_PackageBody"):
+				return visitor.visitRule_PackageBody(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_PackageBody(self):
+
+		localctx = VHDLParser.Rule_PackageBodyContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 326, self.RULE_rule_PackageBody)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2091
+			self.match(VHDLParser.KW_PACKAGE)
+			self.state = 2092
+			self.match(VHDLParser.KW_BODY)
+			self.state = 2093
+			localctx.name = self.match(VHDLParser.LIT_IDENTIFIER)
+			self.state = 2094
+			self.match(VHDLParser.KW_IS)
+			self.state = 2098
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			while (((_la) & ~0x3f) == 0 and ((1 << _la) & 88579439100416) != 0) or (
+				(((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & 842086220065) != 0):
+				self.state = 2095
+				localctx._rule_PackageBodyDeclarativeItem = self.rule_PackageBodyDeclarativeItem()
+				localctx.declarativeItem.append(localctx._rule_PackageBodyDeclarativeItem)
+				self.state = 2100
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+
+			self.state = 2101
+			self.match(VHDLParser.KW_END)
+			self.state = 2104
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 70:
+				self.state = 2102
+				self.match(VHDLParser.KW_PACKAGE)
+				self.state = 2103
+				self.match(VHDLParser.KW_BODY)
+
+			self.state = 2107
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 163:
+				self.state = 2106
+				localctx.name2 = self.match(VHDLParser.LIT_IDENTIFIER)
+
+			self.state = 2109
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_PackageBodyDeclarativeItemContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_SubprogramDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubprogramDeclarationContext, 0)
+
+		def rule_SubprogramBody(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubprogramBodyContext, 0)
+
+		def rule_SubprogramInstantiationDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubprogramInstantiationDeclarationContext, 0)
+
+		def rule_PackageDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_PackageDeclarationContext, 0)
+
+		def rule_PackageBody(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_PackageBodyContext, 0)
+
+		def rule_PackageInstantiationDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_PackageInstantiationDeclarationContext, 0)
+
+		def rule_TypeDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_TypeDeclarationContext, 0)
+
+		def rule_SubtypeDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubtypeDeclarationContext, 0)
+
+		def rule_ConstantDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ConstantDeclarationContext, 0)
+
+		def rule_VariableDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_VariableDeclarationContext, 0)
+
+		def rule_FileDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_FileDeclarationContext, 0)
+
+		def rule_AliasDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_AliasDeclarationContext, 0)
+
+		def rule_AttributeDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_AttributeDeclarationContext, 0)
+
+		def rule_AttributeSpecification(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_AttributeSpecificationContext, 0)
+
+		def rule_UseClause(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_UseClauseContext, 0)
+
+		def rule_GroupTemplateDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_GroupTemplateDeclarationContext, 0)
+
+		def rule_GroupDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_GroupDeclarationContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_PackageBodyDeclarativeItem
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_PackageBodyDeclarativeItem"):
+				return visitor.visitRule_PackageBodyDeclarativeItem(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_PackageBodyDeclarativeItem(self):
+
+		localctx = VHDLParser.Rule_PackageBodyDeclarativeItemContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 328, self.RULE_rule_PackageBodyDeclarativeItem)
+		try:
+			self.state = 2128
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 228, self._ctx)
+			if la_ == 1:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 2111
+				self.rule_SubprogramDeclaration()
+				pass
+
+			elif la_ == 2:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 2112
+				self.rule_SubprogramBody()
+				pass
+
+			elif la_ == 3:
+				self.enterOuterAlt(localctx, 3)
+				self.state = 2113
+				self.rule_SubprogramInstantiationDeclaration()
+				pass
+
+			elif la_ == 4:
+				self.enterOuterAlt(localctx, 4)
+				self.state = 2114
+				self.rule_PackageDeclaration()
+				pass
+
+			elif la_ == 5:
+				self.enterOuterAlt(localctx, 5)
+				self.state = 2115
+				self.rule_PackageBody()
+				pass
+
+			elif la_ == 6:
+				self.enterOuterAlt(localctx, 6)
+				self.state = 2116
+				self.rule_PackageInstantiationDeclaration()
+				pass
+
+			elif la_ == 7:
+				self.enterOuterAlt(localctx, 7)
+				self.state = 2117
+				self.rule_TypeDeclaration()
+				pass
+
+			elif la_ == 8:
+				self.enterOuterAlt(localctx, 8)
+				self.state = 2118
+				self.rule_SubtypeDeclaration()
+				pass
+
+			elif la_ == 9:
+				self.enterOuterAlt(localctx, 9)
+				self.state = 2119
+				self.rule_ConstantDeclaration()
+				pass
+
+			elif la_ == 10:
+				self.enterOuterAlt(localctx, 10)
+				self.state = 2120
+				self.rule_VariableDeclaration()
+				pass
+
+			elif la_ == 11:
+				self.enterOuterAlt(localctx, 11)
+				self.state = 2121
+				self.rule_FileDeclaration()
+				pass
+
+			elif la_ == 12:
+				self.enterOuterAlt(localctx, 12)
+				self.state = 2122
+				self.rule_AliasDeclaration()
+				pass
+
+			elif la_ == 13:
+				self.enterOuterAlt(localctx, 13)
+				self.state = 2123
+				self.rule_AttributeDeclaration()
+				pass
+
+			elif la_ == 14:
+				self.enterOuterAlt(localctx, 14)
+				self.state = 2124
+				self.rule_AttributeSpecification()
+				pass
+
+			elif la_ == 15:
+				self.enterOuterAlt(localctx, 15)
+				self.state = 2125
+				self.rule_UseClause()
+				pass
+
+			elif la_ == 16:
+				self.enterOuterAlt(localctx, 16)
+				self.state = 2126
+				self.rule_GroupTemplateDeclaration()
+				pass
+
+			elif la_ == 17:
+				self.enterOuterAlt(localctx, 17)
+				self.state = 2127
+				self.rule_GroupDeclaration()
+				pass
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_PackageDeclarationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.name = None  # Token
+			self.genericClause = None  # Rule_GenericClauseContext
+			self._rule_PackageDeclarativeItem = None  # Rule_PackageDeclarativeItemContext
+			self.declarativeItems = list()  # of Rule_PackageDeclarativeItemContexts
+			self.name2 = None  # Token
+
+		def KW_PACKAGE(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.KW_PACKAGE)
+			else:
+				return self.getToken(VHDLParser.KW_PACKAGE, i)
+
+		def KW_IS(self):
+			return self.getToken(VHDLParser.KW_IS, 0)
+
+		def KW_END(self):
+			return self.getToken(VHDLParser.KW_END, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def LIT_IDENTIFIER(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.LIT_IDENTIFIER)
+			else:
+				return self.getToken(VHDLParser.LIT_IDENTIFIER, i)
+
+		def rule_GenericClause(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_GenericClauseContext, 0)
+
+		def rule_PackageDeclarativeItem(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_PackageDeclarativeItemContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_PackageDeclarativeItemContext, i)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_PackageDeclaration
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_PackageDeclaration"):
+				return visitor.visitRule_PackageDeclaration(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_PackageDeclaration(self):
+
+		localctx = VHDLParser.Rule_PackageDeclarationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 330, self.RULE_rule_PackageDeclaration)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2130
+			self.match(VHDLParser.KW_PACKAGE)
+			self.state = 2131
+			localctx.name = self.match(VHDLParser.LIT_IDENTIFIER)
+			self.state = 2132
+			self.match(VHDLParser.KW_IS)
+			self.state = 2134
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 42:
+				self.state = 2133
+				localctx.genericClause = self.rule_GenericClause()
+
+			self.state = 2139
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			while (((_la) & ~0x3f) == 0 and ((1 << _la) & 88579984359936) != 0) or (
+				(((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & 842094608673) != 0):
+				self.state = 2136
+				localctx._rule_PackageDeclarativeItem = self.rule_PackageDeclarativeItem()
+				localctx.declarativeItems.append(localctx._rule_PackageDeclarativeItem)
+				self.state = 2141
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+
+			self.state = 2142
+			self.match(VHDLParser.KW_END)
+			self.state = 2144
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 70:
+				self.state = 2143
+				self.match(VHDLParser.KW_PACKAGE)
+
+			self.state = 2147
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 163:
+				self.state = 2146
+				localctx.name2 = self.match(VHDLParser.LIT_IDENTIFIER)
+
+			self.state = 2149
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_PackageDeclarativeItemContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.subprogramDeclaration = None  # Rule_SubprogramDeclarationContext
+			self.typeDeclaration = None  # Rule_TypeDeclarationContext
+			self.subtypeDeclaration = None  # Rule_SubtypeDeclarationContext
+			self.constantDeclaration = None  # Rule_ConstantDeclarationContext
+			self.signalDeclaration = None  # Rule_SignalDeclarationContext
+			self.variableDeclaration = None  # Rule_VariableDeclarationContext
+			self.fileDeclaration = None  # Rule_FileDeclarationContext
+			self.aliasDeclaration = None  # Rule_AliasDeclarationContext
+			self.componentDeclaration = None  # Rule_ComponentDeclarationContext
+			self.attributeDeclaration = None  # Rule_AttributeDeclarationContext
+			self.attributeSpecification = None  # Rule_AttributeSpecificationContext
+			self.disconnectionSpecification = None  # Rule_DisconnectionSpecificationContext
+			self.useClause = None  # Rule_UseClauseContext
+
+		def rule_SubprogramDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubprogramDeclarationContext, 0)
+
+		def rule_SubprogramInstantiationDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubprogramInstantiationDeclarationContext, 0)
+
+		def rule_PackageDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_PackageDeclarationContext, 0)
+
+		def rule_PackageInstantiationDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_PackageInstantiationDeclarationContext, 0)
+
+		def rule_TypeDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_TypeDeclarationContext, 0)
+
+		def rule_SubtypeDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubtypeDeclarationContext, 0)
+
+		def rule_ConstantDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ConstantDeclarationContext, 0)
+
+		def rule_SignalDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SignalDeclarationContext, 0)
+
+		def rule_VariableDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_VariableDeclarationContext, 0)
+
+		def rule_FileDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_FileDeclarationContext, 0)
+
+		def rule_AliasDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_AliasDeclarationContext, 0)
+
+		def rule_ComponentDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ComponentDeclarationContext, 0)
+
+		def rule_AttributeDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_AttributeDeclarationContext, 0)
+
+		def rule_AttributeSpecification(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_AttributeSpecificationContext, 0)
+
+		def rule_DisconnectionSpecification(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_DisconnectionSpecificationContext, 0)
+
+		def rule_UseClause(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_UseClauseContext, 0)
+
+		def rule_GroupTemplateDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_GroupTemplateDeclarationContext, 0)
+
+		def rule_GroupDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_GroupDeclarationContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_PackageDeclarativeItem
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_PackageDeclarativeItem"):
+				return visitor.visitRule_PackageDeclarativeItem(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_PackageDeclarativeItem(self):
+
+		localctx = VHDLParser.Rule_PackageDeclarativeItemContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 332, self.RULE_rule_PackageDeclarativeItem)
+		try:
+			self.state = 2169
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 233, self._ctx)
+			if la_ == 1:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 2151
+				localctx.subprogramDeclaration = self.rule_SubprogramDeclaration()
+				pass
+
+			elif la_ == 2:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 2152
+				self.rule_SubprogramInstantiationDeclaration()
+				pass
+
+			elif la_ == 3:
+				self.enterOuterAlt(localctx, 3)
+				self.state = 2153
+				self.rule_PackageDeclaration()
+				pass
+
+			elif la_ == 4:
+				self.enterOuterAlt(localctx, 4)
+				self.state = 2154
+				self.rule_PackageInstantiationDeclaration()
+				pass
+
+			elif la_ == 5:
+				self.enterOuterAlt(localctx, 5)
+				self.state = 2155
+				localctx.typeDeclaration = self.rule_TypeDeclaration()
+				pass
+
+			elif la_ == 6:
+				self.enterOuterAlt(localctx, 6)
+				self.state = 2156
+				localctx.subtypeDeclaration = self.rule_SubtypeDeclaration()
+				pass
+
+			elif la_ == 7:
+				self.enterOuterAlt(localctx, 7)
+				self.state = 2157
+				localctx.constantDeclaration = self.rule_ConstantDeclaration()
+				pass
+
+			elif la_ == 8:
+				self.enterOuterAlt(localctx, 8)
+				self.state = 2158
+				localctx.signalDeclaration = self.rule_SignalDeclaration()
+				pass
+
+			elif la_ == 9:
+				self.enterOuterAlt(localctx, 9)
+				self.state = 2159
+				localctx.variableDeclaration = self.rule_VariableDeclaration()
+				pass
+
+			elif la_ == 10:
+				self.enterOuterAlt(localctx, 10)
+				self.state = 2160
+				localctx.fileDeclaration = self.rule_FileDeclaration()
+				pass
+
+			elif la_ == 11:
+				self.enterOuterAlt(localctx, 11)
+				self.state = 2161
+				localctx.aliasDeclaration = self.rule_AliasDeclaration()
+				pass
+
+			elif la_ == 12:
+				self.enterOuterAlt(localctx, 12)
+				self.state = 2162
+				localctx.componentDeclaration = self.rule_ComponentDeclaration()
+				pass
+
+			elif la_ == 13:
+				self.enterOuterAlt(localctx, 13)
+				self.state = 2163
+				localctx.attributeDeclaration = self.rule_AttributeDeclaration()
+				pass
+
+			elif la_ == 14:
+				self.enterOuterAlt(localctx, 14)
+				self.state = 2164
+				localctx.attributeSpecification = self.rule_AttributeSpecification()
+				pass
+
+			elif la_ == 15:
+				self.enterOuterAlt(localctx, 15)
+				self.state = 2165
+				localctx.disconnectionSpecification = self.rule_DisconnectionSpecification()
+				pass
+
+			elif la_ == 16:
+				self.enterOuterAlt(localctx, 16)
+				self.state = 2166
+				localctx.useClause = self.rule_UseClause()
+				pass
+
+			elif la_ == 17:
+				self.enterOuterAlt(localctx, 17)
+				self.state = 2167
+				self.rule_GroupTemplateDeclaration()
+				pass
+
+			elif la_ == 18:
+				self.enterOuterAlt(localctx, 18)
+				self.state = 2168
+				self.rule_GroupDeclaration()
+				pass
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_PackageInstantiationDeclarationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.name = None  # Token
+			self.genericMasAspect = None  # Rule_GenericMapAspectContext
+
+		def KW_PACKAGE(self):
+			return self.getToken(VHDLParser.KW_PACKAGE, 0)
+
+		def KW_IS(self):
+			return self.getToken(VHDLParser.KW_IS, 0)
+
+		def KW_NEW(self):
+			return self.getToken(VHDLParser.KW_NEW, 0)
+
+		def rule_Name(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def LIT_IDENTIFIER(self):
+			return self.getToken(VHDLParser.LIT_IDENTIFIER, 0)
+
+		def rule_GenericMapAspect(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_GenericMapAspectContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_PackageInstantiationDeclaration
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_PackageInstantiationDeclaration"):
+				return visitor.visitRule_PackageInstantiationDeclaration(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_PackageInstantiationDeclaration(self):
+
+		localctx = VHDLParser.Rule_PackageInstantiationDeclarationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 334, self.RULE_rule_PackageInstantiationDeclaration)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2171
+			self.match(VHDLParser.KW_PACKAGE)
+			self.state = 2172
+			localctx.name = self.match(VHDLParser.LIT_IDENTIFIER)
+			self.state = 2173
+			self.match(VHDLParser.KW_IS)
+			self.state = 2174
+			self.match(VHDLParser.KW_NEW)
+			self.state = 2175
+			self.rule_Name(0)
+			self.state = 2177
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 42:
+				self.state = 2176
+				localctx.genericMasAspect = self.rule_GenericMapAspect()
+
+			self.state = 2179
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_PackagePathnameContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.libraryName = None  # Token
+			self.packageName = None  # Token
+			self.objectName = None  # Token
+
+		def TOK_AT(self):
+			return self.getToken(VHDLParser.TOK_AT, 0)
+
+		def TOK_DOT(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.TOK_DOT)
+			else:
+				return self.getToken(VHDLParser.TOK_DOT, i)
+
+		def LIT_IDENTIFIER(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.LIT_IDENTIFIER)
+			else:
+				return self.getToken(VHDLParser.LIT_IDENTIFIER, i)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_PackagePathname
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_PackagePathname"):
+				return visitor.visitRule_PackagePathname(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_PackagePathname(self):
+
+		localctx = VHDLParser.Rule_PackagePathnameContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 336, self.RULE_rule_PackagePathname)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2181
+			self.match(VHDLParser.TOK_AT)
+			self.state = 2182
+			localctx.libraryName = self.match(VHDLParser.LIT_IDENTIFIER)
+			self.state = 2183
+			self.match(VHDLParser.TOK_DOT)
+			self.state = 2188
+			self._errHandler.sync(self)
+			_alt = self._interp.adaptivePredict(self._input, 235, self._ctx)
+			while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+				if _alt == 1:
+					self.state = 2184
+					localctx.packageName = self.match(VHDLParser.LIT_IDENTIFIER)
+					self.state = 2185
+					self.match(VHDLParser.TOK_DOT)
+				self.state = 2190
+				self._errHandler.sync(self)
+				_alt = self._interp.adaptivePredict(self._input, 235, self._ctx)
+
+			self.state = 2191
+			localctx.objectName = self.match(VHDLParser.LIT_IDENTIFIER)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ParameterMapAspectContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def TOK_LP(self):
+			return self.getToken(VHDLParser.TOK_LP, 0)
+
+		def rule_AssociationList(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_AssociationListContext, 0)
+
+		def TOK_RP(self):
+			return self.getToken(VHDLParser.TOK_RP, 0)
+
+		def KW_PARAMETER(self):
+			return self.getToken(VHDLParser.KW_PARAMETER, 0)
+
+		def KW_MAP(self):
+			return self.getToken(VHDLParser.KW_MAP, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ParameterMapAspect
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ParameterMapAspect"):
+				return visitor.visitRule_ParameterMapAspect(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ParameterMapAspect(self):
+
+		localctx = VHDLParser.Rule_ParameterMapAspectContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 338, self.RULE_rule_ParameterMapAspect)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2195
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 71:
+				self.state = 2193
+				self.match(VHDLParser.KW_PARAMETER)
+				self.state = 2194
+				self.match(VHDLParser.KW_MAP)
+
+			self.state = 2197
+			self.match(VHDLParser.TOK_LP)
+			self.state = 2198
+			self.rule_AssociationList()
+			self.state = 2199
+			self.match(VHDLParser.TOK_RP)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ParameterSpecificationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def LIT_IDENTIFIER(self):
+			return self.getToken(VHDLParser.LIT_IDENTIFIER, 0)
+
+		def KW_IN(self):
+			return self.getToken(VHDLParser.KW_IN, 0)
+
+		def rule_DiscreteRange(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_DiscreteRangeContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ParameterSpecification
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ParameterSpecification"):
+				return visitor.visitRule_ParameterSpecification(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ParameterSpecification(self):
+
+		localctx = VHDLParser.Rule_ParameterSpecificationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 340, self.RULE_rule_ParameterSpecification)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2201
+			self.match(VHDLParser.LIT_IDENTIFIER)
+			self.state = 2202
+			self.match(VHDLParser.KW_IN)
+			self.state = 2203
+			self.rule_DiscreteRange()
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_PartialPathnameContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def LIT_IDENTIFIER(self):
+			return self.getToken(VHDLParser.LIT_IDENTIFIER, 0)
+
+		def rule_PathnameElement(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_PathnameElementContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_PathnameElementContext, i)
+
+		def TOK_DOT(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.TOK_DOT)
+			else:
+				return self.getToken(VHDLParser.TOK_DOT, i)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_PartialPathname
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_PartialPathname"):
+				return visitor.visitRule_PartialPathname(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_PartialPathname(self):
+
+		localctx = VHDLParser.Rule_PartialPathnameContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 342, self.RULE_rule_PartialPathname)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2210
+			self._errHandler.sync(self)
+			_alt = self._interp.adaptivePredict(self._input, 237, self._ctx)
+			while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+				if _alt == 1:
+					self.state = 2205
+					self.rule_PathnameElement()
+					self.state = 2206
+					self.match(VHDLParser.TOK_DOT)
+				self.state = 2212
+				self._errHandler.sync(self)
+				_alt = self._interp.adaptivePredict(self._input, 237, self._ctx)
+
+			self.state = 2213
+			self.match(VHDLParser.LIT_IDENTIFIER)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_PathnameElementContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.nameOrLabel = None  # Token
+
+		def LIT_IDENTIFIER(self):
+			return self.getToken(VHDLParser.LIT_IDENTIFIER, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_PathnameElement
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_PathnameElement"):
+				return visitor.visitRule_PathnameElement(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_PathnameElement(self):
+
+		localctx = VHDLParser.Rule_PathnameElementContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 344, self.RULE_rule_PathnameElement)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2215
+			localctx.nameOrLabel = self.match(VHDLParser.LIT_IDENTIFIER)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_PhysicalIncompleteTypeDefinitionContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def KW_UNITS(self):
+			return self.getToken(VHDLParser.KW_UNITS, 0)
+
+		def TOK_BOX(self):
+			return self.getToken(VHDLParser.TOK_BOX, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_PhysicalIncompleteTypeDefinition
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_PhysicalIncompleteTypeDefinition"):
+				return visitor.visitRule_PhysicalIncompleteTypeDefinition(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_PhysicalIncompleteTypeDefinition(self):
+
+		localctx = VHDLParser.Rule_PhysicalIncompleteTypeDefinitionContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 346, self.RULE_rule_PhysicalIncompleteTypeDefinition)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2217
+			self.match(VHDLParser.KW_UNITS)
+			self.state = 2218
+			self.match(VHDLParser.TOK_BOX)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_PhysicalLiteralContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_Name(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0)
+
+		def LIT_ABSTRACT(self):
+			return self.getToken(VHDLParser.LIT_ABSTRACT, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_PhysicalLiteral
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_PhysicalLiteral"):
+				return visitor.visitRule_PhysicalLiteral(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_PhysicalLiteral(self):
+
+		localctx = VHDLParser.Rule_PhysicalLiteralContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 348, self.RULE_rule_PhysicalLiteral)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2221
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 159:
+				self.state = 2220
+				self.match(VHDLParser.LIT_ABSTRACT)
+
+			self.state = 2223
+			self.rule_Name(0)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_PhysicalTypeDefinitionContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.rangeConstraint = None  # Rule_RangeConstraintContext
+			self.primaryUnit = None  # Token
+			self._rule_SecondaryUnitDeclaration = None  # Rule_SecondaryUnitDeclarationContext
+			self.secondaryUnits = list()  # of Rule_SecondaryUnitDeclarationContexts
+			self.name2 = None  # Token
+
+		def KW_UNITS(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.KW_UNITS)
+			else:
+				return self.getToken(VHDLParser.KW_UNITS, i)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def KW_END(self):
+			return self.getToken(VHDLParser.KW_END, 0)
+
+		def rule_RangeConstraint(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_RangeConstraintContext, 0)
+
+		def LIT_IDENTIFIER(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.LIT_IDENTIFIER)
+			else:
+				return self.getToken(VHDLParser.LIT_IDENTIFIER, i)
+
+		def rule_SecondaryUnitDeclaration(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_SecondaryUnitDeclarationContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_SecondaryUnitDeclarationContext, i)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_PhysicalTypeDefinition
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_PhysicalTypeDefinition"):
+				return visitor.visitRule_PhysicalTypeDefinition(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_PhysicalTypeDefinition(self):
+
+		localctx = VHDLParser.Rule_PhysicalTypeDefinitionContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 350, self.RULE_rule_PhysicalTypeDefinition)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2225
+			localctx.rangeConstraint = self.rule_RangeConstraint()
+			self.state = 2226
+			self.match(VHDLParser.KW_UNITS)
+			self.state = 2227
+			localctx.primaryUnit = self.match(VHDLParser.LIT_IDENTIFIER)
+			self.state = 2228
+			self.match(VHDLParser.TOK_SEMICOL)
+			self.state = 2232
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			while _la == 163:
+				self.state = 2229
+				localctx._rule_SecondaryUnitDeclaration = self.rule_SecondaryUnitDeclaration()
+				localctx.secondaryUnits.append(localctx._rule_SecondaryUnitDeclaration)
+				self.state = 2234
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+
+			self.state = 2235
+			self.match(VHDLParser.KW_END)
+			self.state = 2236
+			self.match(VHDLParser.KW_UNITS)
+			self.state = 2238
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 163:
+				self.state = 2237
+				localctx.name2 = self.match(VHDLParser.LIT_IDENTIFIER)
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_PlainReturnStatementContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.label = None  # Token
+			self.condition = None  # Rule_ExpressionContext
+
+		def KW_RETURN(self):
+			return self.getToken(VHDLParser.KW_RETURN, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def TOK_COLON(self):
+			return self.getToken(VHDLParser.TOK_COLON, 0)
+
+		def KW_WHEN(self):
+			return self.getToken(VHDLParser.KW_WHEN, 0)
+
+		def LIT_IDENTIFIER(self):
+			return self.getToken(VHDLParser.LIT_IDENTIFIER, 0)
+
+		def rule_Expression(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_PlainReturnStatement
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_PlainReturnStatement"):
+				return visitor.visitRule_PlainReturnStatement(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_PlainReturnStatement(self):
+
+		localctx = VHDLParser.Rule_PlainReturnStatementContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 352, self.RULE_rule_PlainReturnStatement)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2242
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 163:
+				self.state = 2240
+				localctx.label = self.match(VHDLParser.LIT_IDENTIFIER)
+				self.state = 2241
+				self.match(VHDLParser.TOK_COLON)
+
+			self.state = 2244
+			self.match(VHDLParser.KW_RETURN)
+			self.state = 2247
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 117:
+				self.state = 2245
+				self.match(VHDLParser.KW_WHEN)
+				self.state = 2246
+				localctx.condition = self.rule_Expression(0)
+
+			self.state = 2249
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_PortClauseContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self._rule_InterfaceSignalDeclaration = None  # Rule_InterfaceSignalDeclarationContext
+			self.ports = list()  # of Rule_InterfaceSignalDeclarationContexts
+
+		def KW_PORT(self):
+			return self.getToken(VHDLParser.KW_PORT, 0)
+
+		def TOK_LP(self):
+			return self.getToken(VHDLParser.TOK_LP, 0)
+
+		def TOK_RP(self):
+			return self.getToken(VHDLParser.TOK_RP, 0)
+
+		def TOK_SEMICOL(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.TOK_SEMICOL)
+			else:
+				return self.getToken(VHDLParser.TOK_SEMICOL, i)
+
+		def rule_InterfaceSignalDeclaration(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_InterfaceSignalDeclarationContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_InterfaceSignalDeclarationContext, i)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_PortClause
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_PortClause"):
+				return visitor.visitRule_PortClause(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_PortClause(self):
+
+		localctx = VHDLParser.Rule_PortClauseContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 354, self.RULE_rule_PortClause)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2251
+			self.match(VHDLParser.KW_PORT)
+			self.state = 2252
+			self.match(VHDLParser.TOK_LP)
+			self.state = 2253
+			localctx._rule_InterfaceSignalDeclaration = self.rule_InterfaceSignalDeclaration()
+			localctx.ports.append(localctx._rule_InterfaceSignalDeclaration)
+			self.state = 2258
+			self._errHandler.sync(self)
+			_alt = self._interp.adaptivePredict(self._input, 243, self._ctx)
+			while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+				if _alt == 1:
+					self.state = 2254
+					self.match(VHDLParser.TOK_SEMICOL)
+					self.state = 2255
+					localctx._rule_InterfaceSignalDeclaration = self.rule_InterfaceSignalDeclaration()
+					localctx.ports.append(localctx._rule_InterfaceSignalDeclaration)
+				self.state = 2260
+				self._errHandler.sync(self)
+				_alt = self._interp.adaptivePredict(self._input, 243, self._ctx)
+
+			self.state = 2262
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 150:
+				self.state = 2261
+				self.match(VHDLParser.TOK_SEMICOL)
+
+			self.state = 2264
+			self.match(VHDLParser.TOK_RP)
+			self.state = 2265
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_PortMapAspectContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.associationList = None  # Rule_AssociationListContext
+
+		def KW_PORT(self):
+			return self.getToken(VHDLParser.KW_PORT, 0)
+
+		def KW_MAP(self):
+			return self.getToken(VHDLParser.KW_MAP, 0)
+
+		def TOK_LP(self):
+			return self.getToken(VHDLParser.TOK_LP, 0)
+
+		def TOK_RP(self):
+			return self.getToken(VHDLParser.TOK_RP, 0)
+
+		def rule_AssociationList(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_AssociationListContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_PortMapAspect
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_PortMapAspect"):
+				return visitor.visitRule_PortMapAspect(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_PortMapAspect(self):
+
+		localctx = VHDLParser.Rule_PortMapAspectContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 356, self.RULE_rule_PortMapAspect)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2267
+			self.match(VHDLParser.KW_PORT)
+			self.state = 2268
+			self.match(VHDLParser.KW_MAP)
+			self.state = 2269
+			self.match(VHDLParser.TOK_LP)
+			self.state = 2270
+			localctx.associationList = self.rule_AssociationList()
+			self.state = 2271
+			self.match(VHDLParser.TOK_RP)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_PrimaryContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.expression = None  # Rule_ExpressionContext
+
+		def rule_Name(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0)
+
+		def rule_Literal(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_LiteralContext, 0)
+
+		def rule_Aggregate(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_AggregateContext, 0)
+
+		def rule_FunctionCall(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_FunctionCallContext, 0)
+
+		def rule_QualifiedExpression(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_QualifiedExpressionContext, 0)
+
+		def rule_TypeConversion(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_TypeConversionContext, 0)
+
+		def rule_Allocator(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_AllocatorContext, 0)
+
+		def TOK_LP(self):
+			return self.getToken(VHDLParser.TOK_LP, 0)
+
+		def TOK_RP(self):
+			return self.getToken(VHDLParser.TOK_RP, 0)
+
+		def rule_Expression(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_Primary
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_Primary"):
+				return visitor.visitRule_Primary(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_Primary(self):
+
+		localctx = VHDLParser.Rule_PrimaryContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 358, self.RULE_rule_Primary)
+		try:
+			self.state = 2284
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 245, self._ctx)
+			if la_ == 1:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 2273
+				self.rule_Name(0)
+				pass
+
+			elif la_ == 2:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 2274
+				self.rule_Literal()
+				pass
+
+			elif la_ == 3:
+				self.enterOuterAlt(localctx, 3)
+				self.state = 2275
+				self.rule_Aggregate()
+				pass
+
+			elif la_ == 4:
+				self.enterOuterAlt(localctx, 4)
+				self.state = 2276
+				self.rule_FunctionCall()
+				pass
+
+			elif la_ == 5:
+				self.enterOuterAlt(localctx, 5)
+				self.state = 2277
+				self.rule_QualifiedExpression()
+				pass
+
+			elif la_ == 6:
+				self.enterOuterAlt(localctx, 6)
+				self.state = 2278
+				self.rule_TypeConversion()
+				pass
+
+			elif la_ == 7:
+				self.enterOuterAlt(localctx, 7)
+				self.state = 2279
+				self.rule_Allocator()
+				pass
+
+			elif la_ == 8:
+				self.enterOuterAlt(localctx, 8)
+				self.state = 2280
+				self.match(VHDLParser.TOK_LP)
+				self.state = 2281
+				localctx.expression = self.rule_Expression(0)
+				self.state = 2282
+				self.match(VHDLParser.TOK_RP)
+				pass
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_PrivateVariableDeclarationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def KW_PRIVATE(self):
+			return self.getToken(VHDLParser.KW_PRIVATE, 0)
+
+		def rule_VariableDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_VariableDeclarationContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_PrivateVariableDeclaration
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_PrivateVariableDeclaration"):
+				return visitor.visitRule_PrivateVariableDeclaration(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_PrivateVariableDeclaration(self):
+
+		localctx = VHDLParser.Rule_PrivateVariableDeclarationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 360, self.RULE_rule_PrivateVariableDeclaration)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2286
+			self.match(VHDLParser.KW_PRIVATE)
+			self.state = 2287
+			self.rule_VariableDeclaration()
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_PrivateIncompleteTypeDefinitionContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def KW_PRIVATE(self):
+			return self.getToken(VHDLParser.KW_PRIVATE, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_PrivateIncompleteTypeDefinition
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_PrivateIncompleteTypeDefinition"):
+				return visitor.visitRule_PrivateIncompleteTypeDefinition(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_PrivateIncompleteTypeDefinition(self):
+
+		localctx = VHDLParser.Rule_PrivateIncompleteTypeDefinitionContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 362, self.RULE_rule_PrivateIncompleteTypeDefinition)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2289
+			self.match(VHDLParser.KW_PRIVATE)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ProcedureCallContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.genericMapAspect = None  # Rule_GenericMapAspectContext
+			self.parameterMapAspect = None  # Rule_ParameterMapAspectContext
+
+		def rule_Name(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0)
+
+		def rule_GenericMapAspect(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_GenericMapAspectContext, 0)
+
+		def rule_ParameterMapAspect(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ParameterMapAspectContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ProcedureCall
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ProcedureCall"):
+				return visitor.visitRule_ProcedureCall(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ProcedureCall(self):
+
+		localctx = VHDLParser.Rule_ProcedureCallContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 364, self.RULE_rule_ProcedureCall)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2291
+			self.rule_Name(0)
+			self.state = 2293
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 42:
+				self.state = 2292
+				localctx.genericMapAspect = self.rule_GenericMapAspect()
+
+			self.state = 2296
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 71 or _la == 143:
+				self.state = 2295
+				localctx.parameterMapAspect = self.rule_ParameterMapAspect()
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ProcedureCallStatementContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.label = None  # Token
+
+		def rule_ProcedureCall(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ProcedureCallContext, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def TOK_COLON(self):
+			return self.getToken(VHDLParser.TOK_COLON, 0)
+
+		def LIT_IDENTIFIER(self):
+			return self.getToken(VHDLParser.LIT_IDENTIFIER, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ProcedureCallStatement
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ProcedureCallStatement"):
+				return visitor.visitRule_ProcedureCallStatement(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ProcedureCallStatement(self):
+
+		localctx = VHDLParser.Rule_ProcedureCallStatementContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 366, self.RULE_rule_ProcedureCallStatement)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2300
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 248, self._ctx)
+			if la_ == 1:
+				self.state = 2298
+				localctx.label = self.match(VHDLParser.LIT_IDENTIFIER)
+				self.state = 2299
+				self.match(VHDLParser.TOK_COLON)
+
+			self.state = 2302
+			self.rule_ProcedureCall()
+			self.state = 2303
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ProcedureSpecificationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.name = None  # Token
+
+		def KW_PROCEDURE(self):
+			return self.getToken(VHDLParser.KW_PROCEDURE, 0)
+
+		def LIT_IDENTIFIER(self):
+			return self.getToken(VHDLParser.LIT_IDENTIFIER, 0)
+
+		def TOK_LP(self):
+			return self.getToken(VHDLParser.TOK_LP, 0)
+
+		def rule_FormalParameterList(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_FormalParameterListContext, 0)
+
+		def TOK_RP(self):
+			return self.getToken(VHDLParser.TOK_RP, 0)
+
+		def KW_PARAMETER(self):
+			return self.getToken(VHDLParser.KW_PARAMETER, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ProcedureSpecification
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ProcedureSpecification"):
+				return visitor.visitRule_ProcedureSpecification(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ProcedureSpecification(self):
+
+		localctx = VHDLParser.Rule_ProcedureSpecificationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 368, self.RULE_rule_ProcedureSpecification)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2305
+			self.match(VHDLParser.KW_PROCEDURE)
+			self.state = 2306
+			localctx.name = self.match(VHDLParser.LIT_IDENTIFIER)
+			self.state = 2314
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 71 or _la == 143:
+				self.state = 2308
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+				if _la == 71:
+					self.state = 2307
+					self.match(VHDLParser.KW_PARAMETER)
+
+				self.state = 2310
+				self.match(VHDLParser.TOK_LP)
+				self.state = 2311
+				self.rule_FormalParameterList()
+				self.state = 2312
+				self.match(VHDLParser.TOK_RP)
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ProcessDeclarativeItemContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_SubprogramDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubprogramDeclarationContext, 0)
+
+		def rule_SubprogramBody(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubprogramBodyContext, 0)
+
+		def rule_SubprogramInstantiationDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubprogramInstantiationDeclarationContext, 0)
+
+		def rule_PackageDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_PackageDeclarationContext, 0)
+
+		def rule_PackageBody(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_PackageBodyContext, 0)
+
+		def rule_PackageInstantiationDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_PackageInstantiationDeclarationContext, 0)
+
+		def rule_TypeDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_TypeDeclarationContext, 0)
+
+		def rule_SubtypeDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubtypeDeclarationContext, 0)
+
+		def rule_ConstantDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ConstantDeclarationContext, 0)
+
+		def rule_VariableDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_VariableDeclarationContext, 0)
+
+		def rule_FileDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_FileDeclarationContext, 0)
+
+		def rule_AliasDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_AliasDeclarationContext, 0)
+
+		def rule_AttributeDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_AttributeDeclarationContext, 0)
+
+		def rule_AttributeSpecification(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_AttributeSpecificationContext, 0)
+
+		def rule_UseClause(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_UseClauseContext, 0)
+
+		def rule_GroupTemplateDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_GroupTemplateDeclarationContext, 0)
+
+		def rule_GroupDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_GroupDeclarationContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ProcessDeclarativeItem
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ProcessDeclarativeItem"):
+				return visitor.visitRule_ProcessDeclarativeItem(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ProcessDeclarativeItem(self):
+
+		localctx = VHDLParser.Rule_ProcessDeclarativeItemContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 370, self.RULE_rule_ProcessDeclarativeItem)
+		try:
+			self.state = 2333
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 251, self._ctx)
+			if la_ == 1:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 2316
+				self.rule_SubprogramDeclaration()
+				pass
+
+			elif la_ == 2:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 2317
+				self.rule_SubprogramBody()
+				pass
+
+			elif la_ == 3:
+				self.enterOuterAlt(localctx, 3)
+				self.state = 2318
+				self.rule_SubprogramInstantiationDeclaration()
+				pass
+
+			elif la_ == 4:
+				self.enterOuterAlt(localctx, 4)
+				self.state = 2319
+				self.rule_PackageDeclaration()
+				pass
+
+			elif la_ == 5:
+				self.enterOuterAlt(localctx, 5)
+				self.state = 2320
+				self.rule_PackageBody()
+				pass
+
+			elif la_ == 6:
+				self.enterOuterAlt(localctx, 6)
+				self.state = 2321
+				self.rule_PackageInstantiationDeclaration()
+				pass
+
+			elif la_ == 7:
+				self.enterOuterAlt(localctx, 7)
+				self.state = 2322
+				self.rule_TypeDeclaration()
+				pass
+
+			elif la_ == 8:
+				self.enterOuterAlt(localctx, 8)
+				self.state = 2323
+				self.rule_SubtypeDeclaration()
+				pass
+
+			elif la_ == 9:
+				self.enterOuterAlt(localctx, 9)
+				self.state = 2324
+				self.rule_ConstantDeclaration()
+				pass
+
+			elif la_ == 10:
+				self.enterOuterAlt(localctx, 10)
+				self.state = 2325
+				self.rule_VariableDeclaration()
+				pass
+
+			elif la_ == 11:
+				self.enterOuterAlt(localctx, 11)
+				self.state = 2326
+				self.rule_FileDeclaration()
+				pass
+
+			elif la_ == 12:
+				self.enterOuterAlt(localctx, 12)
+				self.state = 2327
+				self.rule_AliasDeclaration()
+				pass
+
+			elif la_ == 13:
+				self.enterOuterAlt(localctx, 13)
+				self.state = 2328
+				self.rule_AttributeDeclaration()
+				pass
+
+			elif la_ == 14:
+				self.enterOuterAlt(localctx, 14)
+				self.state = 2329
+				self.rule_AttributeSpecification()
+				pass
+
+			elif la_ == 15:
+				self.enterOuterAlt(localctx, 15)
+				self.state = 2330
+				self.rule_UseClause()
+				pass
+
+			elif la_ == 16:
+				self.enterOuterAlt(localctx, 16)
+				self.state = 2331
+				self.rule_GroupTemplateDeclaration()
+				pass
+
+			elif la_ == 17:
+				self.enterOuterAlt(localctx, 17)
+				self.state = 2332
+				self.rule_GroupDeclaration()
+				pass
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ProcessSensitivityListContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_SensitivityList(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SensitivityListContext, 0)
+
+		def KW_ALL(self):
+			return self.getToken(VHDLParser.KW_ALL, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ProcessSensitivityList
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ProcessSensitivityList"):
+				return visitor.visitRule_ProcessSensitivityList(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ProcessSensitivityList(self):
+
+		localctx = VHDLParser.Rule_ProcessSensitivityListContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 372, self.RULE_rule_ProcessSensitivityList)
+		try:
+			self.state = 2337
+			self._errHandler.sync(self)
+			token = self._input.LA(1)
+			if token in [147, 161, 162, 163]:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 2335
+				self.rule_SensitivityList()
+				pass
+			elif token in [10]:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 2336
+				self.match(VHDLParser.KW_ALL)
+				pass
+			else:
+				raise NoViableAltException(self)
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ProcessStatementContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.label = None  # Token
+			self._rule_ProcessDeclarativeItem = None  # Rule_ProcessDeclarativeItemContext
+			self.declaredItems = list()  # of Rule_ProcessDeclarativeItemContexts
+			self._rule_SequentialStatement = None  # Rule_SequentialStatementContext
+			self.statements = list()  # of Rule_SequentialStatementContexts
+
+		def KW_PROCESS(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.KW_PROCESS)
+			else:
+				return self.getToken(VHDLParser.KW_PROCESS, i)
+
+		def KW_BEGIN(self):
+			return self.getToken(VHDLParser.KW_BEGIN, 0)
+
+		def KW_END(self):
+			return self.getToken(VHDLParser.KW_END, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def TOK_COLON(self):
+			return self.getToken(VHDLParser.TOK_COLON, 0)
+
+		def TOK_LP(self):
+			return self.getToken(VHDLParser.TOK_LP, 0)
+
+		def rule_ProcessSensitivityList(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ProcessSensitivityListContext, 0)
+
+		def TOK_RP(self):
+			return self.getToken(VHDLParser.TOK_RP, 0)
+
+		def KW_IS(self):
+			return self.getToken(VHDLParser.KW_IS, 0)
+
+		def LIT_IDENTIFIER(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.LIT_IDENTIFIER)
+			else:
+				return self.getToken(VHDLParser.LIT_IDENTIFIER, i)
+
+		def rule_ProcessDeclarativeItem(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_ProcessDeclarativeItemContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_ProcessDeclarativeItemContext, i)
+
+		def rule_SequentialStatement(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_SequentialStatementContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_SequentialStatementContext, i)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ProcessStatement
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ProcessStatement"):
+				return visitor.visitRule_ProcessStatement(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ProcessStatement(self):
+
+		localctx = VHDLParser.Rule_ProcessStatementContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 374, self.RULE_rule_ProcessStatement)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2341
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 163:
+				self.state = 2339
+				localctx.label = self.match(VHDLParser.LIT_IDENTIFIER)
+				self.state = 2340
+				self.match(VHDLParser.TOK_COLON)
+
+			self.state = 2343
+			self.match(VHDLParser.KW_PROCESS)
+			self.state = 2348
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 143:
+				self.state = 2344
+				self.match(VHDLParser.TOK_LP)
+				self.state = 2345
+				self.rule_ProcessSensitivityList()
+				self.state = 2346
+				self.match(VHDLParser.TOK_RP)
+
+			self.state = 2351
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 50:
+				self.state = 2350
+				self.match(VHDLParser.KW_IS)
+
+			self.state = 2356
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			while (((_la) & ~0x3f) == 0 and ((1 << _la) & 88579439100416) != 0) or (
+				(((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & 842086220065) != 0):
+				self.state = 2353
+				localctx._rule_ProcessDeclarativeItem = self.rule_ProcessDeclarativeItem()
+				localctx.declaredItems.append(localctx._rule_ProcessDeclarativeItem)
+				self.state = 2358
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+
+			self.state = 2359
+			self.match(VHDLParser.KW_BEGIN)
+			self.state = 2363
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			while (((_la) & ~0x3f) == 0 and ((1 << _la) & -8052400777563193344) != 0) or (
+				(((_la - 85)) & ~0x3f) == 0 and ((1 << (_la - 85)) & 4899916406390259715) != 0) or (
+				(((_la - 161)) & ~0x3f) == 0 and ((1 << (_la - 161)) & 7) != 0):
+				self.state = 2360
+				localctx._rule_SequentialStatement = self.rule_SequentialStatement()
+				localctx.statements.append(localctx._rule_SequentialStatement)
+				self.state = 2365
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+
+			self.state = 2366
+			self.match(VHDLParser.KW_END)
+			self.state = 2367
+			self.match(VHDLParser.KW_PROCESS)
+			self.state = 2369
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 163:
+				self.state = 2368
+				self.match(VHDLParser.LIT_IDENTIFIER)
+
+			self.state = 2371
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_PostponedProcessStatementContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.label = None  # Token
+			self._rule_ProcessDeclarativeItem = None  # Rule_ProcessDeclarativeItemContext
+			self.declaredItems = list()  # of Rule_ProcessDeclarativeItemContexts
+			self._rule_SequentialStatement = None  # Rule_SequentialStatementContext
+			self.statements = list()  # of Rule_SequentialStatementContexts
+
+		def KW_POSTPONED(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.KW_POSTPONED)
+			else:
+				return self.getToken(VHDLParser.KW_POSTPONED, i)
+
+		def KW_PROCESS(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.KW_PROCESS)
+			else:
+				return self.getToken(VHDLParser.KW_PROCESS, i)
+
+		def KW_BEGIN(self):
+			return self.getToken(VHDLParser.KW_BEGIN, 0)
+
+		def KW_END(self):
+			return self.getToken(VHDLParser.KW_END, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def TOK_COLON(self):
+			return self.getToken(VHDLParser.TOK_COLON, 0)
+
+		def TOK_LP(self):
+			return self.getToken(VHDLParser.TOK_LP, 0)
+
+		def rule_SensitivityList(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SensitivityListContext, 0)
+
+		def TOK_RP(self):
+			return self.getToken(VHDLParser.TOK_RP, 0)
+
+		def KW_IS(self):
+			return self.getToken(VHDLParser.KW_IS, 0)
+
+		def LIT_IDENTIFIER(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.LIT_IDENTIFIER)
+			else:
+				return self.getToken(VHDLParser.LIT_IDENTIFIER, i)
+
+		def rule_ProcessDeclarativeItem(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_ProcessDeclarativeItemContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_ProcessDeclarativeItemContext, i)
+
+		def rule_SequentialStatement(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_SequentialStatementContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_SequentialStatementContext, i)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_PostponedProcessStatement
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_PostponedProcessStatement"):
+				return visitor.visitRule_PostponedProcessStatement(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_PostponedProcessStatement(self):
+
+		localctx = VHDLParser.Rule_PostponedProcessStatementContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 376, self.RULE_rule_PostponedProcessStatement)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2375
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 163:
+				self.state = 2373
+				localctx.label = self.match(VHDLParser.LIT_IDENTIFIER)
+				self.state = 2374
+				self.match(VHDLParser.TOK_COLON)
+
+			self.state = 2377
+			self.match(VHDLParser.KW_POSTPONED)
+			self.state = 2378
+			self.match(VHDLParser.KW_PROCESS)
+			self.state = 2383
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 143:
+				self.state = 2379
+				self.match(VHDLParser.TOK_LP)
+				self.state = 2380
+				self.rule_SensitivityList()
+				self.state = 2381
+				self.match(VHDLParser.TOK_RP)
+
+			self.state = 2386
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 50:
+				self.state = 2385
+				self.match(VHDLParser.KW_IS)
+
+			self.state = 2391
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			while (((_la) & ~0x3f) == 0 and ((1 << _la) & 88579439100416) != 0) or (
+				(((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & 842086220065) != 0):
+				self.state = 2388
+				localctx._rule_ProcessDeclarativeItem = self.rule_ProcessDeclarativeItem()
+				localctx.declaredItems.append(localctx._rule_ProcessDeclarativeItem)
+				self.state = 2393
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+
+			self.state = 2394
+			self.match(VHDLParser.KW_BEGIN)
+			self.state = 2398
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			while (((_la) & ~0x3f) == 0 and ((1 << _la) & -8052400777563193344) != 0) or (
+				(((_la - 85)) & ~0x3f) == 0 and ((1 << (_la - 85)) & 4899916406390259715) != 0) or (
+				(((_la - 161)) & ~0x3f) == 0 and ((1 << (_la - 161)) & 7) != 0):
+				self.state = 2395
+				localctx._rule_SequentialStatement = self.rule_SequentialStatement()
+				localctx.statements.append(localctx._rule_SequentialStatement)
+				self.state = 2400
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+
+			self.state = 2401
+			self.match(VHDLParser.KW_END)
+			self.state = 2403
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 73:
+				self.state = 2402
+				self.match(VHDLParser.KW_POSTPONED)
+
+			self.state = 2405
+			self.match(VHDLParser.KW_PROCESS)
+			self.state = 2407
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 163:
+				self.state = 2406
+				self.match(VHDLParser.LIT_IDENTIFIER)
+
+			self.state = 2409
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ProtectedTypeBodyContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self._rule_ProtectedTypeBodyDeclarativeItem = None  # Rule_ProtectedTypeBodyDeclarativeItemContext
+			self.declaredItems = list()  # of Rule_ProtectedTypeBodyDeclarativeItemContexts
+			self.name2 = None  # Token
+
+		def KW_PROTECTED(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.KW_PROTECTED)
+			else:
+				return self.getToken(VHDLParser.KW_PROTECTED, i)
+
+		def KW_BODY(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.KW_BODY)
+			else:
+				return self.getToken(VHDLParser.KW_BODY, i)
+
+		def KW_END(self):
+			return self.getToken(VHDLParser.KW_END, 0)
+
+		def rule_ProtectedTypeBodyDeclarativeItem(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_ProtectedTypeBodyDeclarativeItemContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_ProtectedTypeBodyDeclarativeItemContext, i)
+
+		def LIT_IDENTIFIER(self):
+			return self.getToken(VHDLParser.LIT_IDENTIFIER, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ProtectedTypeBody
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ProtectedTypeBody"):
+				return visitor.visitRule_ProtectedTypeBody(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ProtectedTypeBody(self):
+
+		localctx = VHDLParser.Rule_ProtectedTypeBodyContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 378, self.RULE_rule_ProtectedTypeBody)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2411
+			self.match(VHDLParser.KW_PROTECTED)
+			self.state = 2412
+			self.match(VHDLParser.KW_BODY)
+			self.state = 2416
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			while (((_la) & ~0x3f) == 0 and ((1 << _la) & 88579439100416) != 0) or (
+				(((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & 842086220065) != 0):
+				self.state = 2413
+				localctx._rule_ProtectedTypeBodyDeclarativeItem = self.rule_ProtectedTypeBodyDeclarativeItem()
+				localctx.declaredItems.append(localctx._rule_ProtectedTypeBodyDeclarativeItem)
+				self.state = 2418
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+
+			self.state = 2419
+			self.match(VHDLParser.KW_END)
+			self.state = 2420
+			self.match(VHDLParser.KW_PROTECTED)
+			self.state = 2421
+			self.match(VHDLParser.KW_BODY)
+			self.state = 2423
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 163:
+				self.state = 2422
+				localctx.name2 = self.match(VHDLParser.LIT_IDENTIFIER)
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ProtectedTypeBodyDeclarativeItemContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_SubprogramDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubprogramDeclarationContext, 0)
+
+		def rule_SubprogramBody(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubprogramBodyContext, 0)
+
+		def rule_SubprogramInstantiationDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubprogramInstantiationDeclarationContext, 0)
+
+		def rule_PackageDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_PackageDeclarationContext, 0)
+
+		def rule_PackageBody(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_PackageBodyContext, 0)
+
+		def rule_PackageInstantiationDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_PackageInstantiationDeclarationContext, 0)
+
+		def rule_TypeDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_TypeDeclarationContext, 0)
+
+		def rule_SubtypeDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubtypeDeclarationContext, 0)
+
+		def rule_ConstantDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ConstantDeclarationContext, 0)
+
+		def rule_VariableDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_VariableDeclarationContext, 0)
+
+		def rule_FileDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_FileDeclarationContext, 0)
+
+		def rule_AliasDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_AliasDeclarationContext, 0)
+
+		def rule_AttributeDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_AttributeDeclarationContext, 0)
+
+		def rule_AttributeSpecification(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_AttributeSpecificationContext, 0)
+
+		def rule_UseClause(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_UseClauseContext, 0)
+
+		def rule_GroupTemplateDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_GroupTemplateDeclarationContext, 0)
+
+		def rule_GroupDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_GroupDeclarationContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ProtectedTypeBodyDeclarativeItem
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ProtectedTypeBodyDeclarativeItem"):
+				return visitor.visitRule_ProtectedTypeBodyDeclarativeItem(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ProtectedTypeBodyDeclarativeItem(self):
+
+		localctx = VHDLParser.Rule_ProtectedTypeBodyDeclarativeItemContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 380, self.RULE_rule_ProtectedTypeBodyDeclarativeItem)
+		try:
+			self.state = 2442
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 268, self._ctx)
+			if la_ == 1:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 2425
+				self.rule_SubprogramDeclaration()
+				pass
+
+			elif la_ == 2:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 2426
+				self.rule_SubprogramBody()
+				pass
+
+			elif la_ == 3:
+				self.enterOuterAlt(localctx, 3)
+				self.state = 2427
+				self.rule_SubprogramInstantiationDeclaration()
+				pass
+
+			elif la_ == 4:
+				self.enterOuterAlt(localctx, 4)
+				self.state = 2428
+				self.rule_PackageDeclaration()
+				pass
+
+			elif la_ == 5:
+				self.enterOuterAlt(localctx, 5)
+				self.state = 2429
+				self.rule_PackageBody()
+				pass
+
+			elif la_ == 6:
+				self.enterOuterAlt(localctx, 6)
+				self.state = 2430
+				self.rule_PackageInstantiationDeclaration()
+				pass
+
+			elif la_ == 7:
+				self.enterOuterAlt(localctx, 7)
+				self.state = 2431
+				self.rule_TypeDeclaration()
+				pass
+
+			elif la_ == 8:
+				self.enterOuterAlt(localctx, 8)
+				self.state = 2432
+				self.rule_SubtypeDeclaration()
+				pass
+
+			elif la_ == 9:
+				self.enterOuterAlt(localctx, 9)
+				self.state = 2433
+				self.rule_ConstantDeclaration()
+				pass
+
+			elif la_ == 10:
+				self.enterOuterAlt(localctx, 10)
+				self.state = 2434
+				self.rule_VariableDeclaration()
+				pass
+
+			elif la_ == 11:
+				self.enterOuterAlt(localctx, 11)
+				self.state = 2435
+				self.rule_FileDeclaration()
+				pass
+
+			elif la_ == 12:
+				self.enterOuterAlt(localctx, 12)
+				self.state = 2436
+				self.rule_AliasDeclaration()
+				pass
+
+			elif la_ == 13:
+				self.enterOuterAlt(localctx, 13)
+				self.state = 2437
+				self.rule_AttributeDeclaration()
+				pass
+
+			elif la_ == 14:
+				self.enterOuterAlt(localctx, 14)
+				self.state = 2438
+				self.rule_AttributeSpecification()
+				pass
+
+			elif la_ == 15:
+				self.enterOuterAlt(localctx, 15)
+				self.state = 2439
+				self.rule_UseClause()
+				pass
+
+			elif la_ == 16:
+				self.enterOuterAlt(localctx, 16)
+				self.state = 2440
+				self.rule_GroupTemplateDeclaration()
+				pass
+
+			elif la_ == 17:
+				self.enterOuterAlt(localctx, 17)
+				self.state = 2441
+				self.rule_GroupDeclaration()
+				pass
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ProtectedTypeDeclarationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self._rule_ProtectedTypeDeclarativeItem = None  # Rule_ProtectedTypeDeclarativeItemContext
+			self.declaredItems = list()  # of Rule_ProtectedTypeDeclarativeItemContexts
+			self.name2 = None  # Token
+
+		def KW_PROTECTED(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.KW_PROTECTED)
+			else:
+				return self.getToken(VHDLParser.KW_PROTECTED, i)
+
+		def KW_END(self):
+			return self.getToken(VHDLParser.KW_END, 0)
+
+		def rule_ProtectedTypeDeclarativeItem(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_ProtectedTypeDeclarativeItemContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_ProtectedTypeDeclarativeItemContext, i)
+
+		def LIT_IDENTIFIER(self):
+			return self.getToken(VHDLParser.LIT_IDENTIFIER, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ProtectedTypeDeclaration
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ProtectedTypeDeclaration"):
+				return visitor.visitRule_ProtectedTypeDeclaration(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ProtectedTypeDeclaration(self):
+
+		localctx = VHDLParser.Rule_ProtectedTypeDeclarationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 382, self.RULE_rule_ProtectedTypeDeclaration)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2444
+			self.match(VHDLParser.KW_PROTECTED)
+			self.state = 2448
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			while (((_la) & ~0x3f) == 0 and ((1 << _la) & 70918500024832) != 0) or (
+				(((_la - 74)) & ~0x3f) == 0 and ((1 << (_la - 74)) & 17179869203) != 0):
+				self.state = 2445
+				localctx._rule_ProtectedTypeDeclarativeItem = self.rule_ProtectedTypeDeclarativeItem()
+				localctx.declaredItems.append(localctx._rule_ProtectedTypeDeclarativeItem)
+				self.state = 2450
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+
+			self.state = 2451
+			self.match(VHDLParser.KW_END)
+			self.state = 2452
+			self.match(VHDLParser.KW_PROTECTED)
+			self.state = 2454
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 163:
+				self.state = 2453
+				localctx.name2 = self.match(VHDLParser.LIT_IDENTIFIER)
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ProtectedTypeDeclarativeItemContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_SubprogramDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubprogramDeclarationContext, 0)
+
+		def rule_SubprogramInstantiationDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubprogramInstantiationDeclarationContext, 0)
+
+		def rule_PrivateVariableDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_PrivateVariableDeclarationContext, 0)
+
+		def rule_AliasDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_AliasDeclarationContext, 0)
+
+		def rule_AttributeSpecification(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_AttributeSpecificationContext, 0)
+
+		def rule_UseClause(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_UseClauseContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ProtectedTypeDeclarativeItem
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ProtectedTypeDeclarativeItem"):
+				return visitor.visitRule_ProtectedTypeDeclarativeItem(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ProtectedTypeDeclarativeItem(self):
+
+		localctx = VHDLParser.Rule_ProtectedTypeDeclarativeItemContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 384, self.RULE_rule_ProtectedTypeDeclarativeItem)
+		try:
+			self.state = 2462
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 271, self._ctx)
+			if la_ == 1:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 2456
+				self.rule_SubprogramDeclaration()
+				pass
+
+			elif la_ == 2:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 2457
+				self.rule_SubprogramInstantiationDeclaration()
+				pass
+
+			elif la_ == 3:
+				self.enterOuterAlt(localctx, 3)
+				self.state = 2458
+				self.rule_PrivateVariableDeclaration()
+				pass
+
+			elif la_ == 4:
+				self.enterOuterAlt(localctx, 4)
+				self.state = 2459
+				self.rule_AliasDeclaration()
+				pass
+
+			elif la_ == 5:
+				self.enterOuterAlt(localctx, 5)
+				self.state = 2460
+				self.rule_AttributeSpecification()
+				pass
+
+			elif la_ == 6:
+				self.enterOuterAlt(localctx, 6)
+				self.state = 2461
+				self.rule_UseClause()
+				pass
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ProtectedTypeDefinitionContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_ProtectedTypeDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ProtectedTypeDeclarationContext, 0)
+
+		def rule_ProtectedTypeBody(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ProtectedTypeBodyContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ProtectedTypeDefinition
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ProtectedTypeDefinition"):
+				return visitor.visitRule_ProtectedTypeDefinition(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ProtectedTypeDefinition(self):
+
+		localctx = VHDLParser.Rule_ProtectedTypeDefinitionContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 386, self.RULE_rule_ProtectedTypeDefinition)
+		try:
+			self.state = 2466
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 272, self._ctx)
+			if la_ == 1:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 2464
+				self.rule_ProtectedTypeDeclaration()
+				pass
+
+			elif la_ == 2:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 2465
+				self.rule_ProtectedTypeBody()
+				pass
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ProtectedTypeInstantiationDefinitionContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.genericMapAspect = None  # Rule_GenericMapAspectContext
+
+		def KW_NEW(self):
+			return self.getToken(VHDLParser.KW_NEW, 0)
+
+		def rule_Name(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0)
+
+		def rule_GenericMapAspect(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_GenericMapAspectContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ProtectedTypeInstantiationDefinition
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ProtectedTypeInstantiationDefinition"):
+				return visitor.visitRule_ProtectedTypeInstantiationDefinition(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ProtectedTypeInstantiationDefinition(self):
+
+		localctx = VHDLParser.Rule_ProtectedTypeInstantiationDefinitionContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 388, self.RULE_rule_ProtectedTypeInstantiationDefinition)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2468
+			self.match(VHDLParser.KW_NEW)
+			self.state = 2469
+			self.rule_Name(0)
+			self.state = 2471
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 42:
+				self.state = 2470
+				localctx.genericMapAspect = self.rule_GenericMapAspect()
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_QualifiedExpressionContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.typeMark = None  # Rule_NameContext
+			self.expression = None  # Rule_ExpressionContext
+			self.aggregate = None  # Rule_AggregateContext
+
+		def TOK_TICK(self):
+			return self.getToken(VHDLParser.TOK_TICK, 0)
+
+		def rule_Name(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0)
+
+		def TOK_LP(self):
+			return self.getToken(VHDLParser.TOK_LP, 0)
+
+		def TOK_RP(self):
+			return self.getToken(VHDLParser.TOK_RP, 0)
+
+		def rule_Expression(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0)
+
+		def rule_Aggregate(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_AggregateContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_QualifiedExpression
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_QualifiedExpression"):
+				return visitor.visitRule_QualifiedExpression(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_QualifiedExpression(self):
+
+		localctx = VHDLParser.Rule_QualifiedExpressionContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 390, self.RULE_rule_QualifiedExpression)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2473
+			localctx.typeMark = self.rule_Name(0)
+			self.state = 2474
+			self.match(VHDLParser.TOK_TICK)
+			self.state = 2481
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 274, self._ctx)
+			if la_ == 1:
+				pass
+
+			elif la_ == 2:
+				self.state = 2476
+				self.match(VHDLParser.TOK_LP)
+				self.state = 2477
+				localctx.expression = self.rule_Expression(0)
+				self.state = 2478
+				self.match(VHDLParser.TOK_RP)
+				pass
+
+			elif la_ == 3:
+				self.state = 2480
+				localctx.aggregate = self.rule_Aggregate()
+				pass
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_RangeContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_Name(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0)
+
+		def rule_SimpleRange(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SimpleRangeContext, 0)
+
+		def rule_Expression(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_Range
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_Range"):
+				return visitor.visitRule_Range(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_Range(self):
+
+		localctx = VHDLParser.Rule_RangeContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 392, self.RULE_rule_Range)
+		try:
+			self.state = 2486
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 275, self._ctx)
+			if la_ == 1:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 2483
+				self.rule_Name(0)
+				pass
+
+			elif la_ == 2:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 2484
+				self.rule_SimpleRange()
+				pass
+
+			elif la_ == 3:
+				self.enterOuterAlt(localctx, 3)
+				self.state = 2485
+				self.rule_Expression(0)
+				pass
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_RangeConstraintContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def KW_RANGE(self):
+			return self.getToken(VHDLParser.KW_RANGE, 0)
+
+		def rule_Range(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_RangeContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_RangeConstraint
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_RangeConstraint"):
+				return visitor.visitRule_RangeConstraint(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_RangeConstraint(self):
+
+		localctx = VHDLParser.Rule_RangeConstraintContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 394, self.RULE_rule_RangeConstraint)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2488
+			self.match(VHDLParser.KW_RANGE)
+			self.state = 2489
+			self.rule_Range()
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_RecordConstraintContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def TOK_LP(self):
+			return self.getToken(VHDLParser.TOK_LP, 0)
+
+		def rule_RecordElementConstraint(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_RecordElementConstraintContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_RecordElementConstraintContext, i)
+
+		def TOK_RP(self):
+			return self.getToken(VHDLParser.TOK_RP, 0)
+
+		def TOK_COMMA(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.TOK_COMMA)
+			else:
+				return self.getToken(VHDLParser.TOK_COMMA, i)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_RecordConstraint
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_RecordConstraint"):
+				return visitor.visitRule_RecordConstraint(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_RecordConstraint(self):
+
+		localctx = VHDLParser.Rule_RecordConstraintContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 396, self.RULE_rule_RecordConstraint)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2491
+			self.match(VHDLParser.TOK_LP)
+			self.state = 2492
+			self.rule_RecordElementConstraint()
+			self.state = 2497
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			while _la == 151:
+				self.state = 2493
+				self.match(VHDLParser.TOK_COMMA)
+				self.state = 2494
+				self.rule_RecordElementConstraint()
+				self.state = 2499
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+
+			self.state = 2500
+			self.match(VHDLParser.TOK_RP)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_RecordElementConstraintContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def LIT_IDENTIFIER(self):
+			return self.getToken(VHDLParser.LIT_IDENTIFIER, 0)
+
+		def rule_ElementConstraint(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ElementConstraintContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_RecordElementConstraint
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_RecordElementConstraint"):
+				return visitor.visitRule_RecordElementConstraint(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_RecordElementConstraint(self):
+
+		localctx = VHDLParser.Rule_RecordElementConstraintContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 398, self.RULE_rule_RecordElementConstraint)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2502
+			self.match(VHDLParser.LIT_IDENTIFIER)
+			self.state = 2503
+			self.rule_ElementConstraint()
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_RecordElementListContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self._LIT_IDENTIFIER = None  # Token
+			self.elements = list()  # of Tokens
+
+		def LIT_IDENTIFIER(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.LIT_IDENTIFIER)
+			else:
+				return self.getToken(VHDLParser.LIT_IDENTIFIER, i)
+
+		def TOK_COMMA(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.TOK_COMMA)
+			else:
+				return self.getToken(VHDLParser.TOK_COMMA, i)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_RecordElementList
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_RecordElementList"):
+				return visitor.visitRule_RecordElementList(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_RecordElementList(self):
+
+		localctx = VHDLParser.Rule_RecordElementListContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 400, self.RULE_rule_RecordElementList)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2505
+			localctx._LIT_IDENTIFIER = self.match(VHDLParser.LIT_IDENTIFIER)
+			localctx.elements.append(localctx._LIT_IDENTIFIER)
+			self.state = 2510
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			while _la == 151:
+				self.state = 2506
+				self.match(VHDLParser.TOK_COMMA)
+				self.state = 2507
+				localctx._LIT_IDENTIFIER = self.match(VHDLParser.LIT_IDENTIFIER)
+				localctx.elements.append(localctx._LIT_IDENTIFIER)
+				self.state = 2512
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_RecordElementResolutionContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def LIT_IDENTIFIER(self):
+			return self.getToken(VHDLParser.LIT_IDENTIFIER, 0)
+
+		def rule_ResolutionIndication(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ResolutionIndicationContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_RecordElementResolution
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_RecordElementResolution"):
+				return visitor.visitRule_RecordElementResolution(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_RecordElementResolution(self):
+
+		localctx = VHDLParser.Rule_RecordElementResolutionContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 402, self.RULE_rule_RecordElementResolution)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2513
+			self.match(VHDLParser.LIT_IDENTIFIER)
+			self.state = 2514
+			self.rule_ResolutionIndication()
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_RecordResolutionContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_RecordElementResolution(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_RecordElementResolutionContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_RecordElementResolutionContext, i)
+
+		def TOK_COMMA(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.TOK_COMMA)
+			else:
+				return self.getToken(VHDLParser.TOK_COMMA, i)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_RecordResolution
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_RecordResolution"):
+				return visitor.visitRule_RecordResolution(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_RecordResolution(self):
+
+		localctx = VHDLParser.Rule_RecordResolutionContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 404, self.RULE_rule_RecordResolution)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2516
+			self.rule_RecordElementResolution()
+			self.state = 2521
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			while _la == 151:
+				self.state = 2517
+				self.match(VHDLParser.TOK_COMMA)
+				self.state = 2518
+				self.rule_RecordElementResolution()
+				self.state = 2523
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_RecordTypeDefinitionContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self._rule_ElementDeclaration = None  # Rule_ElementDeclarationContext
+			self.elements = list()  # of Rule_ElementDeclarationContexts
+			self.name2 = None  # Token
+
+		def KW_RECORD(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.KW_RECORD)
+			else:
+				return self.getToken(VHDLParser.KW_RECORD, i)
+
+		def KW_END(self):
+			return self.getToken(VHDLParser.KW_END, 0)
+
+		def rule_ElementDeclaration(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_ElementDeclarationContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_ElementDeclarationContext, i)
+
+		def LIT_IDENTIFIER(self):
+			return self.getToken(VHDLParser.LIT_IDENTIFIER, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_RecordTypeDefinition
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_RecordTypeDefinition"):
+				return visitor.visitRule_RecordTypeDefinition(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_RecordTypeDefinition(self):
+
+		localctx = VHDLParser.Rule_RecordTypeDefinitionContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 406, self.RULE_rule_RecordTypeDefinition)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2524
+			self.match(VHDLParser.KW_RECORD)
+			self.state = 2528
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			while _la == 163:
+				self.state = 2525
+				localctx._rule_ElementDeclaration = self.rule_ElementDeclaration()
+				localctx.elements.append(localctx._rule_ElementDeclaration)
+				self.state = 2530
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+
+			self.state = 2531
+			self.match(VHDLParser.KW_END)
+			self.state = 2532
+			self.match(VHDLParser.KW_RECORD)
+			self.state = 2534
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 163:
+				self.state = 2533
+				localctx.name2 = self.match(VHDLParser.LIT_IDENTIFIER)
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_RecordModeViewIndicationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def KW_VIEW(self):
+			return self.getToken(VHDLParser.KW_VIEW, 0)
+
+		def rule_Name(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0)
+
+		def KW_OF(self):
+			return self.getToken(VHDLParser.KW_OF, 0)
+
+		def rule_SubtypeIndication(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubtypeIndicationContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_RecordModeViewIndication
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_RecordModeViewIndication"):
+				return visitor.visitRule_RecordModeViewIndication(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_RecordModeViewIndication(self):
+
+		localctx = VHDLParser.Rule_RecordModeViewIndicationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 408, self.RULE_rule_RecordModeViewIndication)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2536
+			self.match(VHDLParser.KW_VIEW)
+			self.state = 2537
+			self.rule_Name(0)
+			self.state = 2540
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 64:
+				self.state = 2538
+				self.match(VHDLParser.KW_OF)
+				self.state = 2539
+				self.rule_SubtypeIndication()
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_RelativePathnameContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_PartialPathname(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_PartialPathnameContext, 0)
+
+		def TOK_CIRCUMFLEX(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.TOK_CIRCUMFLEX)
+			else:
+				return self.getToken(VHDLParser.TOK_CIRCUMFLEX, i)
+
+		def TOK_DOT(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.TOK_DOT)
+			else:
+				return self.getToken(VHDLParser.TOK_DOT, i)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_RelativePathname
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_RelativePathname"):
+				return visitor.visitRule_RelativePathname(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_RelativePathname(self):
+
+		localctx = VHDLParser.Rule_RelativePathnameContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 410, self.RULE_rule_RelativePathname)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2546
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			while _la == 156:
+				self.state = 2542
+				self.match(VHDLParser.TOK_CIRCUMFLEX)
+				self.state = 2543
+				self.match(VHDLParser.TOK_DOT)
+				self.state = 2548
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+
+			self.state = 2549
+			self.rule_PartialPathname()
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ReportStatementContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.label = None  # Token
+			self.reportExpression = None  # Rule_ExpressionContext
+			self.severityExpression = None  # Rule_ExpressionContext
+
+		def KW_REPORT(self):
+			return self.getToken(VHDLParser.KW_REPORT, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def rule_Expression(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_ExpressionContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, i)
+
+		def TOK_COLON(self):
+			return self.getToken(VHDLParser.TOK_COLON, 0)
+
+		def KW_SEVERITY(self):
+			return self.getToken(VHDLParser.KW_SEVERITY, 0)
+
+		def LIT_IDENTIFIER(self):
+			return self.getToken(VHDLParser.LIT_IDENTIFIER, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ReportStatement
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ReportStatement"):
+				return visitor.visitRule_ReportStatement(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ReportStatement(self):
+
+		localctx = VHDLParser.Rule_ReportStatementContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 412, self.RULE_rule_ReportStatement)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2553
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 163:
+				self.state = 2551
+				localctx.label = self.match(VHDLParser.LIT_IDENTIFIER)
+				self.state = 2552
+				self.match(VHDLParser.TOK_COLON)
+
+			self.state = 2555
+			self.match(VHDLParser.KW_REPORT)
+			self.state = 2556
+			localctx.reportExpression = self.rule_Expression(0)
+			self.state = 2559
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 91:
+				self.state = 2557
+				self.match(VHDLParser.KW_SEVERITY)
+				self.state = 2558
+				localctx.severityExpression = self.rule_Expression(0)
+
+			self.state = 2561
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ResolutionIndicationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_Name(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0)
+
+		def TOK_LP(self):
+			return self.getToken(VHDLParser.TOK_LP, 0)
+
+		def rule_ElementResolution(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ElementResolutionContext, 0)
+
+		def TOK_RP(self):
+			return self.getToken(VHDLParser.TOK_RP, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ResolutionIndication
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ResolutionIndication"):
+				return visitor.visitRule_ResolutionIndication(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ResolutionIndication(self):
+
+		localctx = VHDLParser.Rule_ResolutionIndicationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 414, self.RULE_rule_ResolutionIndication)
+		try:
+			self.state = 2568
+			self._errHandler.sync(self)
+			token = self._input.LA(1)
+			if token in [147, 161, 162, 163]:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 2563
+				self.rule_Name(0)
+				pass
+			elif token in [143]:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 2564
+				self.match(VHDLParser.TOK_LP)
+				self.state = 2565
+				self.rule_ElementResolution()
+				self.state = 2566
+				self.match(VHDLParser.TOK_RP)
+				pass
+			else:
+				raise NoViableAltException(self)
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ReturnStatementContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_PlainReturnStatement(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_PlainReturnStatementContext, 0)
+
+		def rule_ValueReturnStatement(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ValueReturnStatementContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ReturnStatement
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ReturnStatement"):
+				return visitor.visitRule_ReturnStatement(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ReturnStatement(self):
+
+		localctx = VHDLParser.Rule_ReturnStatementContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 416, self.RULE_rule_ReturnStatement)
+		try:
+			self.state = 2572
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 286, self._ctx)
+			if la_ == 1:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 2570
+				self.rule_PlainReturnStatement()
+				pass
+
+			elif la_ == 2:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 2571
+				self.rule_ValueReturnStatement()
+				pass
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ScalarIncompleteTypeDefinitionContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def TOK_BOX(self):
+			return self.getToken(VHDLParser.TOK_BOX, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ScalarIncompleteTypeDefinition
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ScalarIncompleteTypeDefinition"):
+				return visitor.visitRule_ScalarIncompleteTypeDefinition(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ScalarIncompleteTypeDefinition(self):
+
+		localctx = VHDLParser.Rule_ScalarIncompleteTypeDefinitionContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 418, self.RULE_rule_ScalarIncompleteTypeDefinition)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2574
+			self.match(VHDLParser.TOK_BOX)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ScalarTypeDefinitionContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_EnumerationTypeDefinition(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_EnumerationTypeDefinitionContext, 0)
+
+		def rule_IntegerTypeDefinition(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_IntegerTypeDefinitionContext, 0)
+
+		def rule_FloatingTypeDefinition(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_FloatingTypeDefinitionContext, 0)
+
+		def rule_PhysicalTypeDefinition(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_PhysicalTypeDefinitionContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ScalarTypeDefinition
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ScalarTypeDefinition"):
+				return visitor.visitRule_ScalarTypeDefinition(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ScalarTypeDefinition(self):
+
+		localctx = VHDLParser.Rule_ScalarTypeDefinitionContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 420, self.RULE_rule_ScalarTypeDefinition)
+		try:
+			self.state = 2580
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 287, self._ctx)
+			if la_ == 1:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 2576
+				self.rule_EnumerationTypeDefinition()
+				pass
+
+			elif la_ == 2:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 2577
+				self.rule_IntegerTypeDefinition()
+				pass
+
+			elif la_ == 3:
+				self.enterOuterAlt(localctx, 3)
+				self.state = 2578
+				self.rule_FloatingTypeDefinition()
+				pass
+
+			elif la_ == 4:
+				self.enterOuterAlt(localctx, 4)
+				self.state = 2579
+				self.rule_PhysicalTypeDefinition()
+				pass
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_SecondaryUnitDeclarationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.name = None  # Token
+			self.value = None  # Token
+			self.unit = None  # Token
+
+		def OP_EQ(self):
+			return self.getToken(VHDLParser.OP_EQ, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def LIT_IDENTIFIER(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.LIT_IDENTIFIER)
+			else:
+				return self.getToken(VHDLParser.LIT_IDENTIFIER, i)
+
+		def LIT_ABSTRACT(self):
+			return self.getToken(VHDLParser.LIT_ABSTRACT, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_SecondaryUnitDeclaration
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_SecondaryUnitDeclaration"):
+				return visitor.visitRule_SecondaryUnitDeclaration(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_SecondaryUnitDeclaration(self):
+
+		localctx = VHDLParser.Rule_SecondaryUnitDeclarationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 422, self.RULE_rule_SecondaryUnitDeclaration)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2582
+			localctx.name = self.match(VHDLParser.LIT_IDENTIFIER)
+			self.state = 2583
+			self.match(VHDLParser.OP_EQ)
+			self.state = 2585
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 159:
+				self.state = 2584
+				localctx.value = self.match(VHDLParser.LIT_ABSTRACT)
+
+			self.state = 2587
+			localctx.unit = self.match(VHDLParser.LIT_IDENTIFIER)
+			self.state = 2588
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_SelectedExpressionsContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_Expression(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_ExpressionContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, i)
+
+		def KW_WHEN(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.KW_WHEN)
+			else:
+				return self.getToken(VHDLParser.KW_WHEN, i)
+
+		def rule_Choices(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_ChoicesContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_ChoicesContext, i)
+
+		def TOK_COMMA(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.TOK_COMMA)
+			else:
+				return self.getToken(VHDLParser.TOK_COMMA, i)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_SelectedExpressions
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_SelectedExpressions"):
+				return visitor.visitRule_SelectedExpressions(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_SelectedExpressions(self):
+
+		localctx = VHDLParser.Rule_SelectedExpressionsContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 424, self.RULE_rule_SelectedExpressions)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2597
+			self._errHandler.sync(self)
+			_alt = self._interp.adaptivePredict(self._input, 289, self._ctx)
+			while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+				if _alt == 1:
+					self.state = 2590
+					self.rule_Expression(0)
+					self.state = 2591
+					self.match(VHDLParser.KW_WHEN)
+					self.state = 2592
+					self.rule_Choices()
+					self.state = 2593
+					self.match(VHDLParser.TOK_COMMA)
+				self.state = 2599
+				self._errHandler.sync(self)
+				_alt = self._interp.adaptivePredict(self._input, 289, self._ctx)
+
+			self.state = 2600
+			self.rule_Expression(0)
+			self.state = 2601
+			self.match(VHDLParser.KW_WHEN)
+			self.state = 2602
+			self.rule_Choices()
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_SelectedForceAssignmentContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.forceMode = None  # Token
+
+		def KW_WITH(self):
+			return self.getToken(VHDLParser.KW_WITH, 0)
+
+		def rule_Expression(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0)
+
+		def KW_SELECT(self):
+			return self.getToken(VHDLParser.KW_SELECT, 0)
+
+		def rule_Target(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_TargetContext, 0)
+
+		def TOK_SIG_ASSIGN(self):
+			return self.getToken(VHDLParser.TOK_SIG_ASSIGN, 0)
+
+		def KW_FORCE(self):
+			return self.getToken(VHDLParser.KW_FORCE, 0)
+
+		def rule_SelectedExpressions(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SelectedExpressionsContext, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def KW_IN(self):
+			return self.getToken(VHDLParser.KW_IN, 0)
+
+		def KW_OUT(self):
+			return self.getToken(VHDLParser.KW_OUT, 0)
+
+		def TOK_QUESTION(self):
+			return self.getToken(VHDLParser.TOK_QUESTION, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_SelectedForceAssignment
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_SelectedForceAssignment"):
+				return visitor.visitRule_SelectedForceAssignment(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_SelectedForceAssignment(self):
+
+		localctx = VHDLParser.Rule_SelectedForceAssignmentContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 426, self.RULE_rule_SelectedForceAssignment)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2604
+			self.match(VHDLParser.KW_WITH)
+			self.state = 2605
+			self.rule_Expression(0)
+			self.state = 2606
+			self.match(VHDLParser.KW_SELECT)
+			self.state = 2608
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 154:
+				self.state = 2607
+				self.match(VHDLParser.TOK_QUESTION)
+
+			self.state = 2610
+			self.rule_Target()
+			self.state = 2611
+			self.match(VHDLParser.TOK_SIG_ASSIGN)
+			self.state = 2612
+			self.match(VHDLParser.KW_FORCE)
+			self.state = 2613
+			localctx.forceMode = self._input.LT(1)
+			_la = self._input.LA(1)
+			if not (_la == 47 or _la == 69):
+				localctx.forceMode = self._errHandler.recoverInline(self)
+			else:
+				self._errHandler.reportMatch(self)
+				self.consume()
+			self.state = 2614
+			self.rule_SelectedExpressions()
+			self.state = 2615
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_SelectedName2Context(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self._LIT_IDENTIFIER = None  # Token
+			self.names = list()  # of Tokens
+
+		def LIT_IDENTIFIER(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.LIT_IDENTIFIER)
+			else:
+				return self.getToken(VHDLParser.LIT_IDENTIFIER, i)
+
+		def TOK_DOT(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.TOK_DOT)
+			else:
+				return self.getToken(VHDLParser.TOK_DOT, i)
+
+		def KW_ALL(self):
+			return self.getToken(VHDLParser.KW_ALL, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_SelectedName2
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_SelectedName2"):
+				return visitor.visitRule_SelectedName2(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_SelectedName2(self):
+
+		localctx = VHDLParser.Rule_SelectedName2Context(self, self._ctx, self.state)
+		self.enterRule(localctx, 428, self.RULE_rule_SelectedName2)
+		self._la = 0  # Token type
+		try:
+			self.state = 2634
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 293, self._ctx)
+			if la_ == 1:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 2617
+				localctx._LIT_IDENTIFIER = self.match(VHDLParser.LIT_IDENTIFIER)
+				localctx.names.append(localctx._LIT_IDENTIFIER)
+				self.state = 2620
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+				while True:
+					self.state = 2618
+					self.match(VHDLParser.TOK_DOT)
+					self.state = 2619
+					localctx._LIT_IDENTIFIER = self.match(VHDLParser.LIT_IDENTIFIER)
+					localctx.names.append(localctx._LIT_IDENTIFIER)
+					self.state = 2622
+					self._errHandler.sync(self)
+					_la = self._input.LA(1)
+					if not (_la == 153):
+						break
+
+				pass
+
+			elif la_ == 2:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 2624
+				localctx._LIT_IDENTIFIER = self.match(VHDLParser.LIT_IDENTIFIER)
+				localctx.names.append(localctx._LIT_IDENTIFIER)
+				self.state = 2629
+				self._errHandler.sync(self)
+				_alt = self._interp.adaptivePredict(self._input, 292, self._ctx)
+				while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+					if _alt == 1:
+						self.state = 2625
+						self.match(VHDLParser.TOK_DOT)
+						self.state = 2626
+						localctx._LIT_IDENTIFIER = self.match(VHDLParser.LIT_IDENTIFIER)
+						localctx.names.append(localctx._LIT_IDENTIFIER)
+					self.state = 2631
+					self._errHandler.sync(self)
+					_alt = self._interp.adaptivePredict(self._input, 292, self._ctx)
+
+				self.state = 2632
+				self.match(VHDLParser.TOK_DOT)
+				self.state = 2633
+				self.match(VHDLParser.KW_ALL)
+				pass
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_SelectedSignalAssignmentContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_SelectedWaveformAssignment(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SelectedWaveformAssignmentContext, 0)
+
+		def rule_SelectedForceAssignment(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SelectedForceAssignmentContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_SelectedSignalAssignment
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_SelectedSignalAssignment"):
+				return visitor.visitRule_SelectedSignalAssignment(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_SelectedSignalAssignment(self):
+
+		localctx = VHDLParser.Rule_SelectedSignalAssignmentContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 430, self.RULE_rule_SelectedSignalAssignment)
+		try:
+			self.state = 2638
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 294, self._ctx)
+			if la_ == 1:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 2636
+				self.rule_SelectedWaveformAssignment()
+				pass
+
+			elif la_ == 2:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 2637
+				self.rule_SelectedForceAssignment()
+				pass
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_SelectedVariableAssignmentContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.expression = None  # Rule_ExpressionContext
+			self.target = None  # Rule_TargetContext
+
+		def KW_WITH(self):
+			return self.getToken(VHDLParser.KW_WITH, 0)
+
+		def KW_SELECT(self):
+			return self.getToken(VHDLParser.KW_SELECT, 0)
+
+		def TOK_VAR_ASSIGN(self):
+			return self.getToken(VHDLParser.TOK_VAR_ASSIGN, 0)
+
+		def rule_SelectedExpressions(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SelectedExpressionsContext, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def rule_Expression(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0)
+
+		def rule_Target(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_TargetContext, 0)
+
+		def TOK_QUESTION(self):
+			return self.getToken(VHDLParser.TOK_QUESTION, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_SelectedVariableAssignment
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_SelectedVariableAssignment"):
+				return visitor.visitRule_SelectedVariableAssignment(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_SelectedVariableAssignment(self):
+
+		localctx = VHDLParser.Rule_SelectedVariableAssignmentContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 432, self.RULE_rule_SelectedVariableAssignment)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2640
+			self.match(VHDLParser.KW_WITH)
+			self.state = 2641
+			localctx.expression = self.rule_Expression(0)
+			self.state = 2642
+			self.match(VHDLParser.KW_SELECT)
+			self.state = 2644
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 154:
+				self.state = 2643
+				self.match(VHDLParser.TOK_QUESTION)
+
+			self.state = 2646
+			localctx.target = self.rule_Target()
+			self.state = 2647
+			self.match(VHDLParser.TOK_VAR_ASSIGN)
+			self.state = 2648
+			self.rule_SelectedExpressions()
+			self.state = 2649
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_SelectedWaveformAssignmentContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.expression = None  # Rule_ExpressionContext
+			self.target = None  # Rule_TargetContext
+			self.waveform = None  # Rule_SelectedWaveformsContext
+
+		def KW_WITH(self):
+			return self.getToken(VHDLParser.KW_WITH, 0)
+
+		def KW_SELECT(self):
+			return self.getToken(VHDLParser.KW_SELECT, 0)
+
+		def TOK_SIG_ASSIGN(self):
+			return self.getToken(VHDLParser.TOK_SIG_ASSIGN, 0)
+
+		def rule_DelayMechanism(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_DelayMechanismContext, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def rule_Expression(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0)
+
+		def rule_Target(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_TargetContext, 0)
+
+		def rule_SelectedWaveforms(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SelectedWaveformsContext, 0)
+
+		def TOK_QUESTION(self):
+			return self.getToken(VHDLParser.TOK_QUESTION, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_SelectedWaveformAssignment
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_SelectedWaveformAssignment"):
+				return visitor.visitRule_SelectedWaveformAssignment(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_SelectedWaveformAssignment(self):
+
+		localctx = VHDLParser.Rule_SelectedWaveformAssignmentContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 434, self.RULE_rule_SelectedWaveformAssignment)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2651
+			self.match(VHDLParser.KW_WITH)
+			self.state = 2652
+			localctx.expression = self.rule_Expression(0)
+			self.state = 2653
+			self.match(VHDLParser.KW_SELECT)
+			self.state = 2655
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 154:
+				self.state = 2654
+				self.match(VHDLParser.TOK_QUESTION)
+
+			self.state = 2657
+			localctx.target = self.rule_Target()
+			self.state = 2658
+			self.match(VHDLParser.TOK_SIG_ASSIGN)
+			self.state = 2659
+			self.rule_DelayMechanism()
+			self.state = 2660
+			localctx.waveform = self.rule_SelectedWaveforms()
+			self.state = 2661
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_SelectedWaveformsContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_Waveform(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_WaveformContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_WaveformContext, i)
+
+		def KW_WHEN(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.KW_WHEN)
+			else:
+				return self.getToken(VHDLParser.KW_WHEN, i)
+
+		def rule_Choices(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_ChoicesContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_ChoicesContext, i)
+
+		def TOK_COMMA(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.TOK_COMMA)
+			else:
+				return self.getToken(VHDLParser.TOK_COMMA, i)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_SelectedWaveforms
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_SelectedWaveforms"):
+				return visitor.visitRule_SelectedWaveforms(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_SelectedWaveforms(self):
+
+		localctx = VHDLParser.Rule_SelectedWaveformsContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 436, self.RULE_rule_SelectedWaveforms)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2670
+			self._errHandler.sync(self)
+			_alt = self._interp.adaptivePredict(self._input, 297, self._ctx)
+			while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+				if _alt == 1:
+					self.state = 2663
+					self.rule_Waveform()
+					self.state = 2664
+					self.match(VHDLParser.KW_WHEN)
+					self.state = 2665
+					self.rule_Choices()
+					self.state = 2666
+					self.match(VHDLParser.TOK_COMMA)
+				self.state = 2672
+				self._errHandler.sync(self)
+				_alt = self._interp.adaptivePredict(self._input, 297, self._ctx)
+
+			self.state = 2673
+			self.rule_Waveform()
+			self.state = 2674
+			self.match(VHDLParser.KW_WHEN)
+			self.state = 2675
+			self.rule_Choices()
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_SensitivityClauseContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.sensitivityList = None  # Rule_SensitivityListContext
+
+		def KW_ON(self):
+			return self.getToken(VHDLParser.KW_ON, 0)
+
+		def rule_SensitivityList(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SensitivityListContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_SensitivityClause
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_SensitivityClause"):
+				return visitor.visitRule_SensitivityClause(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_SensitivityClause(self):
+
+		localctx = VHDLParser.Rule_SensitivityClauseContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 438, self.RULE_rule_SensitivityClause)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2677
+			self.match(VHDLParser.KW_ON)
+			self.state = 2678
+			localctx.sensitivityList = self.rule_SensitivityList()
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_SensitivityListContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self._rule_Name = None  # Rule_NameContext
+			self.name = list()  # of Rule_NameContexts
+
+		def rule_Name(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_NameContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_NameContext, i)
+
+		def TOK_COMMA(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.TOK_COMMA)
+			else:
+				return self.getToken(VHDLParser.TOK_COMMA, i)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_SensitivityList
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_SensitivityList"):
+				return visitor.visitRule_SensitivityList(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_SensitivityList(self):
+
+		localctx = VHDLParser.Rule_SensitivityListContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 440, self.RULE_rule_SensitivityList)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2680
+			localctx._rule_Name = self.rule_Name(0)
+			localctx.name.append(localctx._rule_Name)
+			self.state = 2685
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			while _la == 151:
+				self.state = 2681
+				self.match(VHDLParser.TOK_COMMA)
+				self.state = 2682
+				localctx._rule_Name = self.rule_Name(0)
+				localctx.name.append(localctx._rule_Name)
+				self.state = 2687
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_SequentialBlockStatementContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.label = None  # Token
+			self._rule_ProcessDeclarativeItem = None  # Rule_ProcessDeclarativeItemContext
+			self.declaredItems = list()  # of Rule_ProcessDeclarativeItemContexts
+			self._rule_SequentialStatement = None  # Rule_SequentialStatementContext
+			self.statements = list()  # of Rule_SequentialStatementContexts
+			self.label2 = None  # Token
+
+		def KW_BLOCK(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.KW_BLOCK)
+			else:
+				return self.getToken(VHDLParser.KW_BLOCK, i)
+
+		def KW_BEGIN(self):
+			return self.getToken(VHDLParser.KW_BEGIN, 0)
+
+		def KW_END(self):
+			return self.getToken(VHDLParser.KW_END, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def TOK_COLON(self):
+			return self.getToken(VHDLParser.TOK_COLON, 0)
+
+		def KW_IS(self):
+			return self.getToken(VHDLParser.KW_IS, 0)
+
+		def LIT_IDENTIFIER(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.LIT_IDENTIFIER)
+			else:
+				return self.getToken(VHDLParser.LIT_IDENTIFIER, i)
+
+		def rule_ProcessDeclarativeItem(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_ProcessDeclarativeItemContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_ProcessDeclarativeItemContext, i)
+
+		def rule_SequentialStatement(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_SequentialStatementContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_SequentialStatementContext, i)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_SequentialBlockStatement
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_SequentialBlockStatement"):
+				return visitor.visitRule_SequentialBlockStatement(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_SequentialBlockStatement(self):
+
+		localctx = VHDLParser.Rule_SequentialBlockStatementContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 442, self.RULE_rule_SequentialBlockStatement)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2690
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 163:
+				self.state = 2688
+				localctx.label = self.match(VHDLParser.LIT_IDENTIFIER)
+				self.state = 2689
+				self.match(VHDLParser.TOK_COLON)
+
+			self.state = 2692
+			self.match(VHDLParser.KW_BLOCK)
+			self.state = 2694
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 50:
+				self.state = 2693
+				self.match(VHDLParser.KW_IS)
+
+			self.state = 2699
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			while (((_la) & ~0x3f) == 0 and ((1 << _la) & 88579439100416) != 0) or (
+				(((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & 842086220065) != 0):
+				self.state = 2696
+				localctx._rule_ProcessDeclarativeItem = self.rule_ProcessDeclarativeItem()
+				localctx.declaredItems.append(localctx._rule_ProcessDeclarativeItem)
+				self.state = 2701
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+
+			self.state = 2702
+			self.match(VHDLParser.KW_BEGIN)
+			self.state = 2706
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			while (((_la) & ~0x3f) == 0 and ((1 << _la) & -8052400777563193344) != 0) or (
+				(((_la - 85)) & ~0x3f) == 0 and ((1 << (_la - 85)) & 4899916406390259715) != 0) or (
+				(((_la - 161)) & ~0x3f) == 0 and ((1 << (_la - 161)) & 7) != 0):
+				self.state = 2703
+				localctx._rule_SequentialStatement = self.rule_SequentialStatement()
+				localctx.statements.append(localctx._rule_SequentialStatement)
+				self.state = 2708
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+
+			self.state = 2709
+			self.match(VHDLParser.KW_END)
+			self.state = 2711
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 18:
+				self.state = 2710
+				self.match(VHDLParser.KW_BLOCK)
+
+			self.state = 2714
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 163:
+				self.state = 2713
+				localctx.label2 = self.match(VHDLParser.LIT_IDENTIFIER)
+
+			self.state = 2716
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_SequentialStatementContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_WaitStatement(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_WaitStatementContext, 0)
+
+		def rule_AssertionStatement(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_AssertionStatementContext, 0)
+
+		def rule_ReportStatement(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ReportStatementContext, 0)
+
+		def rule_SignalAssignmentStatement(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SignalAssignmentStatementContext, 0)
+
+		def rule_VariableAssignmentStatement(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_VariableAssignmentStatementContext, 0)
+
+		def rule_ProcedureCallStatement(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ProcedureCallStatementContext, 0)
+
+		def rule_IfStatement(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_IfStatementContext, 0)
+
+		def rule_CaseStatement(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_CaseStatementContext, 0)
+
+		def rule_LoopStatement(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_LoopStatementContext, 0)
+
+		def rule_NextStatement(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_NextStatementContext, 0)
+
+		def rule_ExitStatement(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ExitStatementContext, 0)
+
+		def rule_ReturnStatement(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ReturnStatementContext, 0)
+
+		def rule_NullStatement(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_NullStatementContext, 0)
+
+		def rule_SequentialBlockStatement(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SequentialBlockStatementContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_SequentialStatement
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_SequentialStatement"):
+				return visitor.visitRule_SequentialStatement(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_SequentialStatement(self):
+
+		localctx = VHDLParser.Rule_SequentialStatementContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 444, self.RULE_rule_SequentialStatement)
+		try:
+			self.state = 2732
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 305, self._ctx)
+			if la_ == 1:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 2718
+				self.rule_WaitStatement()
+				pass
+
+			elif la_ == 2:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 2719
+				self.rule_AssertionStatement()
+				pass
+
+			elif la_ == 3:
+				self.enterOuterAlt(localctx, 3)
+				self.state = 2720
+				self.rule_ReportStatement()
+				pass
+
+			elif la_ == 4:
+				self.enterOuterAlt(localctx, 4)
+				self.state = 2721
+				self.rule_SignalAssignmentStatement()
+				pass
+
+			elif la_ == 5:
+				self.enterOuterAlt(localctx, 5)
+				self.state = 2722
+				self.rule_VariableAssignmentStatement()
+				pass
+
+			elif la_ == 6:
+				self.enterOuterAlt(localctx, 6)
+				self.state = 2723
+				self.rule_ProcedureCallStatement()
+				pass
+
+			elif la_ == 7:
+				self.enterOuterAlt(localctx, 7)
+				self.state = 2724
+				self.rule_IfStatement()
+				pass
+
+			elif la_ == 8:
+				self.enterOuterAlt(localctx, 8)
+				self.state = 2725
+				self.rule_CaseStatement()
+				pass
+
+			elif la_ == 9:
+				self.enterOuterAlt(localctx, 9)
+				self.state = 2726
+				self.rule_LoopStatement()
+				pass
+
+			elif la_ == 10:
+				self.enterOuterAlt(localctx, 10)
+				self.state = 2727
+				self.rule_NextStatement()
+				pass
+
+			elif la_ == 11:
+				self.enterOuterAlt(localctx, 11)
+				self.state = 2728
+				self.rule_ExitStatement()
+				pass
+
+			elif la_ == 12:
+				self.enterOuterAlt(localctx, 12)
+				self.state = 2729
+				self.rule_ReturnStatement()
+				pass
+
+			elif la_ == 13:
+				self.enterOuterAlt(localctx, 13)
+				self.state = 2730
+				self.rule_NullStatement()
+				pass
+
+			elif la_ == 14:
+				self.enterOuterAlt(localctx, 14)
+				self.state = 2731
+				self.rule_SequentialBlockStatement()
+				pass
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_SignalAssignmentStatementContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.label = None  # Token
+
+		def rule_SimpleSignalAssignment(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SimpleSignalAssignmentContext, 0)
+
+		def rule_ConditionalSignalAssignment(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ConditionalSignalAssignmentContext, 0)
+
+		def rule_SelectedSignalAssignment(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SelectedSignalAssignmentContext, 0)
+
+		def TOK_COLON(self):
+			return self.getToken(VHDLParser.TOK_COLON, 0)
+
+		def LIT_IDENTIFIER(self):
+			return self.getToken(VHDLParser.LIT_IDENTIFIER, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_SignalAssignmentStatement
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_SignalAssignmentStatement"):
+				return visitor.visitRule_SignalAssignmentStatement(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_SignalAssignmentStatement(self):
+
+		localctx = VHDLParser.Rule_SignalAssignmentStatementContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 446, self.RULE_rule_SignalAssignmentStatement)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2736
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 306, self._ctx)
+			if la_ == 1:
+				self.state = 2734
+				localctx.label = self.match(VHDLParser.LIT_IDENTIFIER)
+				self.state = 2735
+				self.match(VHDLParser.TOK_COLON)
+
+			self.state = 2741
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 307, self._ctx)
+			if la_ == 1:
+				self.state = 2738
+				self.rule_SimpleSignalAssignment()
+				pass
+
+			elif la_ == 2:
+				self.state = 2739
+				self.rule_ConditionalSignalAssignment()
+				pass
+
+			elif la_ == 3:
+				self.state = 2740
+				self.rule_SelectedSignalAssignment()
+				pass
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_SignalDeclarationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.names = None  # Rule_IdentifierListContext
+			self.subtypeIndication = None  # Rule_SubtypeIndicationContext
+			self.signalKind = None  # Token
+			self.expression = None  # Rule_ExpressionContext
+
+		def KW_SIGNAL(self):
+			return self.getToken(VHDLParser.KW_SIGNAL, 0)
+
+		def TOK_COLON(self):
+			return self.getToken(VHDLParser.TOK_COLON, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def rule_IdentifierList(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_IdentifierListContext, 0)
+
+		def rule_SubtypeIndication(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubtypeIndicationContext, 0)
+
+		def TOK_VAR_ASSIGN(self):
+			return self.getToken(VHDLParser.TOK_VAR_ASSIGN, 0)
+
+		def rule_Expression(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0)
+
+		def KW_REGISTER(self):
+			return self.getToken(VHDLParser.KW_REGISTER, 0)
+
+		def KW_BUS(self):
+			return self.getToken(VHDLParser.KW_BUS, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_SignalDeclaration
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_SignalDeclaration"):
+				return visitor.visitRule_SignalDeclaration(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_SignalDeclaration(self):
+
+		localctx = VHDLParser.Rule_SignalDeclarationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 448, self.RULE_rule_SignalDeclaration)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2743
+			self.match(VHDLParser.KW_SIGNAL)
+			self.state = 2744
+			localctx.names = self.rule_IdentifierList()
+			self.state = 2745
+			self.match(VHDLParser.TOK_COLON)
+			self.state = 2746
+			localctx.subtypeIndication = self.rule_SubtypeIndication()
+			self.state = 2748
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 21 or _la == 81:
+				self.state = 2747
+				localctx.signalKind = self._input.LT(1)
+				_la = self._input.LA(1)
+				if not (_la == 21 or _la == 81):
+					localctx.signalKind = self._errHandler.recoverInline(self)
+				else:
+					self._errHandler.reportMatch(self)
+					self.consume()
+
+			self.state = 2752
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 141:
+				self.state = 2750
+				self.match(VHDLParser.TOK_VAR_ASSIGN)
+				self.state = 2751
+				localctx.expression = self.rule_Expression(0)
+
+			self.state = 2754
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_SignalListContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self._rule_Name = None  # Rule_NameContext
+			self.names = list()  # of Rule_NameContexts
+			self.others = None  # Token
+			self.all_ = None  # Token
+
+		def rule_Name(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_NameContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_NameContext, i)
+
+		def TOK_COMMA(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.TOK_COMMA)
+			else:
+				return self.getToken(VHDLParser.TOK_COMMA, i)
+
+		def KW_OTHERS(self):
+			return self.getToken(VHDLParser.KW_OTHERS, 0)
+
+		def KW_ALL(self):
+			return self.getToken(VHDLParser.KW_ALL, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_SignalList
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_SignalList"):
+				return visitor.visitRule_SignalList(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_SignalList(self):
+
+		localctx = VHDLParser.Rule_SignalListContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 450, self.RULE_rule_SignalList)
+		self._la = 0  # Token type
+		try:
+			self.state = 2766
+			self._errHandler.sync(self)
+			token = self._input.LA(1)
+			if token in [147, 161, 162, 163]:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 2756
+				localctx._rule_Name = self.rule_Name(0)
+				localctx.names.append(localctx._rule_Name)
+				self.state = 2761
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+				while _la == 151:
+					self.state = 2757
+					self.match(VHDLParser.TOK_COMMA)
+					self.state = 2758
+					localctx._rule_Name = self.rule_Name(0)
+					localctx.names.append(localctx._rule_Name)
+					self.state = 2763
+					self._errHandler.sync(self)
+					_la = self._input.LA(1)
+
+				pass
+			elif token in [68]:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 2764
+				localctx.others = self.match(VHDLParser.KW_OTHERS)
+				pass
+			elif token in [10]:
+				self.enterOuterAlt(localctx, 3)
+				self.state = 2765
+				localctx.all_ = self.match(VHDLParser.KW_ALL)
+				pass
+			else:
+				raise NoViableAltException(self)
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_SignatureContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self._rule_Name = None  # Rule_NameContext
+			self.names = list()  # of Rule_NameContexts
+			self.returnName = None  # Rule_NameContext
+
+		def TOK_LB(self):
+			return self.getToken(VHDLParser.TOK_LB, 0)
+
+		def TOK_RB(self):
+			return self.getToken(VHDLParser.TOK_RB, 0)
+
+		def KW_RETURN(self):
+			return self.getToken(VHDLParser.KW_RETURN, 0)
+
+		def rule_Name(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_NameContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_NameContext, i)
+
+		def TOK_COMMA(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.TOK_COMMA)
+			else:
+				return self.getToken(VHDLParser.TOK_COMMA, i)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_Signature
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_Signature"):
+				return visitor.visitRule_Signature(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_Signature(self):
+
+		localctx = VHDLParser.Rule_SignatureContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 452, self.RULE_rule_Signature)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2768
+			self.match(VHDLParser.TOK_LB)
+			self.state = 2777
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if (((_la - 147)) & ~0x3f) == 0 and ((1 << (_la - 147)) & 114689) != 0:
+				self.state = 2769
+				localctx._rule_Name = self.rule_Name(0)
+				localctx.names.append(localctx._rule_Name)
+				self.state = 2774
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+				while _la == 151:
+					self.state = 2770
+					self.match(VHDLParser.TOK_COMMA)
+					self.state = 2771
+					localctx._rule_Name = self.rule_Name(0)
+					localctx.names.append(localctx._rule_Name)
+					self.state = 2776
+					self._errHandler.sync(self)
+					_la = self._input.LA(1)
+
+			self.state = 2781
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 86:
+				self.state = 2779
+				self.match(VHDLParser.KW_RETURN)
+				self.state = 2780
+				localctx.returnName = self.rule_Name(0)
+
+			self.state = 2783
+			self.match(VHDLParser.TOK_RB)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_SimpleConfigurationSpecificationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def KW_FOR(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.KW_FOR)
+			else:
+				return self.getToken(VHDLParser.KW_FOR, i)
+
+		def rule_ComponentSpecification(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ComponentSpecificationContext, 0)
+
+		def rule_BindingIndication(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_BindingIndicationContext, 0)
+
+		def TOK_SEMICOL(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.TOK_SEMICOL)
+			else:
+				return self.getToken(VHDLParser.TOK_SEMICOL, i)
+
+		def KW_END(self):
+			return self.getToken(VHDLParser.KW_END, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_SimpleConfigurationSpecification
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_SimpleConfigurationSpecification"):
+				return visitor.visitRule_SimpleConfigurationSpecification(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_SimpleConfigurationSpecification(self):
+
+		localctx = VHDLParser.Rule_SimpleConfigurationSpecificationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 454, self.RULE_rule_SimpleConfigurationSpecification)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2785
+			self.match(VHDLParser.KW_FOR)
+			self.state = 2786
+			self.rule_ComponentSpecification()
+			self.state = 2787
+			self.rule_BindingIndication()
+			self.state = 2788
+			self.match(VHDLParser.TOK_SEMICOL)
+			self.state = 2792
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 33:
+				self.state = 2789
+				self.match(VHDLParser.KW_END)
+				self.state = 2790
+				self.match(VHDLParser.KW_FOR)
+				self.state = 2791
+				self.match(VHDLParser.TOK_SEMICOL)
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_SimpleForceAssignmentContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.forceMode = None  # Token
+
+		def rule_Target(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_TargetContext, 0)
+
+		def TOK_SIG_ASSIGN(self):
+			return self.getToken(VHDLParser.TOK_SIG_ASSIGN, 0)
+
+		def KW_FORCE(self):
+			return self.getToken(VHDLParser.KW_FORCE, 0)
+
+		def rule_ConditionalOrUnaffectedExpression(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ConditionalOrUnaffectedExpressionContext, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def KW_IN(self):
+			return self.getToken(VHDLParser.KW_IN, 0)
+
+		def KW_OUT(self):
+			return self.getToken(VHDLParser.KW_OUT, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_SimpleForceAssignment
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_SimpleForceAssignment"):
+				return visitor.visitRule_SimpleForceAssignment(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_SimpleForceAssignment(self):
+
+		localctx = VHDLParser.Rule_SimpleForceAssignmentContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 456, self.RULE_rule_SimpleForceAssignment)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2794
+			self.rule_Target()
+			self.state = 2795
+			self.match(VHDLParser.TOK_SIG_ASSIGN)
+			self.state = 2796
+			self.match(VHDLParser.KW_FORCE)
+			self.state = 2797
+			localctx.forceMode = self._input.LT(1)
+			_la = self._input.LA(1)
+			if not (_la == 47 or _la == 69):
+				localctx.forceMode = self._errHandler.recoverInline(self)
+			else:
+				self._errHandler.reportMatch(self)
+				self.consume()
+			self.state = 2798
+			self.rule_ConditionalOrUnaffectedExpression()
+			self.state = 2799
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_SimpleModeIndicationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_InterfaceTypeIndication(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_InterfaceTypeIndicationContext, 0)
+
+		def rule_Mode(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ModeContext, 0)
+
+		def KW_BUS(self):
+			return self.getToken(VHDLParser.KW_BUS, 0)
+
+		def TOK_VAR_ASSIGN(self):
+			return self.getToken(VHDLParser.TOK_VAR_ASSIGN, 0)
+
+		def rule_ConditionalExpression(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ConditionalExpressionContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_SimpleModeIndication
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_SimpleModeIndication"):
+				return visitor.visitRule_SimpleModeIndication(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_SimpleModeIndication(self):
+
+		localctx = VHDLParser.Rule_SimpleModeIndicationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 458, self.RULE_rule_SimpleModeIndication)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2802
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if (((_la - 20)) & ~0x3f) == 0 and ((1 << (_la - 20)) & 562959214444545) != 0:
+				self.state = 2801
+				self.rule_Mode()
+
+			self.state = 2804
+			self.rule_InterfaceTypeIndication()
+			self.state = 2806
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 21:
+				self.state = 2805
+				self.match(VHDLParser.KW_BUS)
+
+			self.state = 2810
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 141:
+				self.state = 2808
+				self.match(VHDLParser.TOK_VAR_ASSIGN)
+				self.state = 2809
+				self.rule_ConditionalExpression()
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_SimpleRangeContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.leftBound = None  # Rule_ExpressionContext
+			self.direction = None  # Rule_DirectionContext
+			self.rightBound = None  # Rule_ExpressionContext
+
+		def rule_Expression(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_ExpressionContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, i)
+
+		def rule_Direction(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_DirectionContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_SimpleRange
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_SimpleRange"):
+				return visitor.visitRule_SimpleRange(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_SimpleRange(self):
+
+		localctx = VHDLParser.Rule_SimpleRangeContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 460, self.RULE_rule_SimpleRange)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2812
+			localctx.leftBound = self.rule_Expression(0)
+			self.state = 2813
+			localctx.direction = self.rule_Direction()
+			self.state = 2814
+			localctx.rightBound = self.rule_Expression(0)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_SimpleReleaseAssignmentContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.forceMode = None  # Token
+
+		def rule_Target(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_TargetContext, 0)
+
+		def TOK_SIG_ASSIGN(self):
+			return self.getToken(VHDLParser.TOK_SIG_ASSIGN, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def KW_IN(self):
+			return self.getToken(VHDLParser.KW_IN, 0)
+
+		def KW_OUT(self):
+			return self.getToken(VHDLParser.KW_OUT, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_SimpleReleaseAssignment
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_SimpleReleaseAssignment"):
+				return visitor.visitRule_SimpleReleaseAssignment(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_SimpleReleaseAssignment(self):
+
+		localctx = VHDLParser.Rule_SimpleReleaseAssignmentContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 462, self.RULE_rule_SimpleReleaseAssignment)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2816
+			self.rule_Target()
+			self.state = 2817
+			self.match(VHDLParser.TOK_SIG_ASSIGN)
+			self.state = 2818
+			localctx.forceMode = self._input.LT(1)
+			_la = self._input.LA(1)
+			if not (_la == 47 or _la == 69):
+				localctx.forceMode = self._errHandler.recoverInline(self)
+			else:
+				self._errHandler.reportMatch(self)
+				self.consume()
+			self.state = 2819
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_SimpleSignalAssignmentContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_SimpleWaveformAssignment(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SimpleWaveformAssignmentContext, 0)
+
+		def rule_SimpleForceAssignment(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SimpleForceAssignmentContext, 0)
+
+		def rule_SimpleReleaseAssignment(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SimpleReleaseAssignmentContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_SimpleSignalAssignment
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_SimpleSignalAssignment"):
+				return visitor.visitRule_SimpleSignalAssignment(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_SimpleSignalAssignment(self):
+
+		localctx = VHDLParser.Rule_SimpleSignalAssignmentContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 464, self.RULE_rule_SimpleSignalAssignment)
+		try:
+			self.state = 2824
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 319, self._ctx)
+			if la_ == 1:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 2821
+				self.rule_SimpleWaveformAssignment()
+				pass
+
+			elif la_ == 2:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 2822
+				self.rule_SimpleForceAssignment()
+				pass
+
+			elif la_ == 3:
+				self.enterOuterAlt(localctx, 3)
+				self.state = 2823
+				self.rule_SimpleReleaseAssignment()
+				pass
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_SimpleWaveformAssignmentContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_Target(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_TargetContext, 0)
+
+		def TOK_SIG_ASSIGN(self):
+			return self.getToken(VHDLParser.TOK_SIG_ASSIGN, 0)
+
+		def rule_Waveform(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_WaveformContext, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def rule_DelayMechanism(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_DelayMechanismContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_SimpleWaveformAssignment
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_SimpleWaveformAssignment"):
+				return visitor.visitRule_SimpleWaveformAssignment(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_SimpleWaveformAssignment(self):
+
+		localctx = VHDLParser.Rule_SimpleWaveformAssignmentContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 466, self.RULE_rule_SimpleWaveformAssignment)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2826
+			self.rule_Target()
+			self.state = 2827
+			self.match(VHDLParser.TOK_SIG_ASSIGN)
+			self.state = 2829
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if (((_la - 48)) & ~0x3f) == 0 and ((1 << (_la - 48)) & 36028814198833153) != 0:
+				self.state = 2828
+				self.rule_DelayMechanism()
+
+			self.state = 2831
+			self.rule_Waveform()
+			self.state = 2832
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_SimpleVariableAssignmentContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_Target(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_TargetContext, 0)
+
+		def TOK_VAR_ASSIGN(self):
+			return self.getToken(VHDLParser.TOK_VAR_ASSIGN, 0)
+
+		def rule_ConditionalOrUnaffectedExpression(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ConditionalOrUnaffectedExpressionContext, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_SimpleVariableAssignment
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_SimpleVariableAssignment"):
+				return visitor.visitRule_SimpleVariableAssignment(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_SimpleVariableAssignment(self):
+
+		localctx = VHDLParser.Rule_SimpleVariableAssignmentContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 468, self.RULE_rule_SimpleVariableAssignment)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2834
+			self.rule_Target()
+			self.state = 2835
+			self.match(VHDLParser.TOK_VAR_ASSIGN)
+			self.state = 2836
+			self.rule_ConditionalOrUnaffectedExpression()
+			self.state = 2837
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_SubprogramBodyContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self._rule_SubprogramDeclarativeItem = None  # Rule_SubprogramDeclarativeItemContext
+			self.declaredItems = list()  # of Rule_SubprogramDeclarativeItemContexts
+			self._rule_SequentialStatement = None  # Rule_SequentialStatementContext
+			self.statements = list()  # of Rule_SequentialStatementContexts
+
+		def rule_SubprogramSpecification(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubprogramSpecificationContext, 0)
+
+		def KW_IS(self):
+			return self.getToken(VHDLParser.KW_IS, 0)
+
+		def KW_BEGIN(self):
+			return self.getToken(VHDLParser.KW_BEGIN, 0)
+
+		def KW_END(self):
+			return self.getToken(VHDLParser.KW_END, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def rule_SubprogramKind(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubprogramKindContext, 0)
+
+		def rule_Designator(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_DesignatorContext, 0)
+
+		def rule_SubprogramDeclarativeItem(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_SubprogramDeclarativeItemContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_SubprogramDeclarativeItemContext, i)
+
+		def rule_SequentialStatement(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_SequentialStatementContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_SequentialStatementContext, i)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_SubprogramBody
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_SubprogramBody"):
+				return visitor.visitRule_SubprogramBody(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_SubprogramBody(self):
+
+		localctx = VHDLParser.Rule_SubprogramBodyContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 470, self.RULE_rule_SubprogramBody)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2839
+			self.rule_SubprogramSpecification()
+			self.state = 2840
+			self.match(VHDLParser.KW_IS)
+			self.state = 2844
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			while (((_la) & ~0x3f) == 0 and ((1 << _la) & 88579439100416) != 0) or (
+				(((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & 842086220065) != 0):
+				self.state = 2841
+				localctx._rule_SubprogramDeclarativeItem = self.rule_SubprogramDeclarativeItem()
+				localctx.declaredItems.append(localctx._rule_SubprogramDeclarativeItem)
+				self.state = 2846
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+
+			self.state = 2847
+			self.match(VHDLParser.KW_BEGIN)
+			self.state = 2851
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			while (((_la) & ~0x3f) == 0 and ((1 << _la) & -8052400777563193344) != 0) or (
+				(((_la - 85)) & ~0x3f) == 0 and ((1 << (_la - 85)) & 4899916406390259715) != 0) or (
+				(((_la - 161)) & ~0x3f) == 0 and ((1 << (_la - 161)) & 7) != 0):
+				self.state = 2848
+				localctx._rule_SequentialStatement = self.rule_SequentialStatement()
+				localctx.statements.append(localctx._rule_SequentialStatement)
+				self.state = 2853
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+
+			self.state = 2854
+			self.match(VHDLParser.KW_END)
+			self.state = 2856
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 39 or _la == 75:
+				self.state = 2855
+				self.rule_SubprogramKind()
+
+			self.state = 2859
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 162 or _la == 163:
+				self.state = 2858
+				self.rule_Designator()
+
+			self.state = 2861
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_SubprogramDeclarationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_SubprogramSpecification(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubprogramSpecificationContext, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_SubprogramDeclaration
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_SubprogramDeclaration"):
+				return visitor.visitRule_SubprogramDeclaration(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_SubprogramDeclaration(self):
+
+		localctx = VHDLParser.Rule_SubprogramDeclarationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 472, self.RULE_rule_SubprogramDeclaration)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2863
+			self.rule_SubprogramSpecification()
+			self.state = 2864
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_SubprogramDeclarativeItemContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_SubprogramDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubprogramDeclarationContext, 0)
+
+		def rule_SubprogramBody(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubprogramBodyContext, 0)
+
+		def rule_SubprogramInstantiationDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubprogramInstantiationDeclarationContext, 0)
+
+		def rule_PackageDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_PackageDeclarationContext, 0)
+
+		def rule_PackageBody(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_PackageBodyContext, 0)
+
+		def rule_PackageInstantiationDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_PackageInstantiationDeclarationContext, 0)
+
+		def rule_TypeDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_TypeDeclarationContext, 0)
+
+		def rule_SubtypeDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubtypeDeclarationContext, 0)
+
+		def rule_ConstantDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ConstantDeclarationContext, 0)
+
+		def rule_VariableDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_VariableDeclarationContext, 0)
+
+		def rule_FileDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_FileDeclarationContext, 0)
+
+		def rule_AliasDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_AliasDeclarationContext, 0)
+
+		def rule_AttributeDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_AttributeDeclarationContext, 0)
+
+		def rule_AttributeSpecification(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_AttributeSpecificationContext, 0)
+
+		def rule_UseClause(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_UseClauseContext, 0)
+
+		def rule_GroupTemplateDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_GroupTemplateDeclarationContext, 0)
+
+		def rule_GroupDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_GroupDeclarationContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_SubprogramDeclarativeItem
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_SubprogramDeclarativeItem"):
+				return visitor.visitRule_SubprogramDeclarativeItem(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_SubprogramDeclarativeItem(self):
+
+		localctx = VHDLParser.Rule_SubprogramDeclarativeItemContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 474, self.RULE_rule_SubprogramDeclarativeItem)
+		try:
+			self.state = 2883
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 325, self._ctx)
+			if la_ == 1:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 2866
+				self.rule_SubprogramDeclaration()
+				pass
+
+			elif la_ == 2:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 2867
+				self.rule_SubprogramBody()
+				pass
+
+			elif la_ == 3:
+				self.enterOuterAlt(localctx, 3)
+				self.state = 2868
+				self.rule_SubprogramInstantiationDeclaration()
+				pass
+
+			elif la_ == 4:
+				self.enterOuterAlt(localctx, 4)
+				self.state = 2869
+				self.rule_PackageDeclaration()
+				pass
+
+			elif la_ == 5:
+				self.enterOuterAlt(localctx, 5)
+				self.state = 2870
+				self.rule_PackageBody()
+				pass
+
+			elif la_ == 6:
+				self.enterOuterAlt(localctx, 6)
+				self.state = 2871
+				self.rule_PackageInstantiationDeclaration()
+				pass
+
+			elif la_ == 7:
+				self.enterOuterAlt(localctx, 7)
+				self.state = 2872
+				self.rule_TypeDeclaration()
+				pass
+
+			elif la_ == 8:
+				self.enterOuterAlt(localctx, 8)
+				self.state = 2873
+				self.rule_SubtypeDeclaration()
+				pass
+
+			elif la_ == 9:
+				self.enterOuterAlt(localctx, 9)
+				self.state = 2874
+				self.rule_ConstantDeclaration()
+				pass
+
+			elif la_ == 10:
+				self.enterOuterAlt(localctx, 10)
+				self.state = 2875
+				self.rule_VariableDeclaration()
+				pass
+
+			elif la_ == 11:
+				self.enterOuterAlt(localctx, 11)
+				self.state = 2876
+				self.rule_FileDeclaration()
+				pass
+
+			elif la_ == 12:
+				self.enterOuterAlt(localctx, 12)
+				self.state = 2877
+				self.rule_AliasDeclaration()
+				pass
+
+			elif la_ == 13:
+				self.enterOuterAlt(localctx, 13)
+				self.state = 2878
+				self.rule_AttributeDeclaration()
+				pass
+
+			elif la_ == 14:
+				self.enterOuterAlt(localctx, 14)
+				self.state = 2879
+				self.rule_AttributeSpecification()
+				pass
+
+			elif la_ == 15:
+				self.enterOuterAlt(localctx, 15)
+				self.state = 2880
+				self.rule_UseClause()
+				pass
+
+			elif la_ == 16:
+				self.enterOuterAlt(localctx, 16)
+				self.state = 2881
+				self.rule_GroupTemplateDeclaration()
+				pass
+
+			elif la_ == 17:
+				self.enterOuterAlt(localctx, 17)
+				self.state = 2882
+				self.rule_GroupDeclaration()
+				pass
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_SubprogramInstantiationDeclarationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.name = None  # Token
+			self.genericMapAspect = None  # Rule_GenericMapAspectContext
+
+		def rule_SubprogramKind(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubprogramKindContext, 0)
+
+		def KW_IS(self):
+			return self.getToken(VHDLParser.KW_IS, 0)
+
+		def KW_NEW(self):
+			return self.getToken(VHDLParser.KW_NEW, 0)
+
+		def rule_Name(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def LIT_IDENTIFIER(self):
+			return self.getToken(VHDLParser.LIT_IDENTIFIER, 0)
+
+		def rule_Signature(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SignatureContext, 0)
+
+		def rule_GenericMapAspect(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_GenericMapAspectContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_SubprogramInstantiationDeclaration
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_SubprogramInstantiationDeclaration"):
+				return visitor.visitRule_SubprogramInstantiationDeclaration(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_SubprogramInstantiationDeclaration(self):
+
+		localctx = VHDLParser.Rule_SubprogramInstantiationDeclarationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 476, self.RULE_rule_SubprogramInstantiationDeclaration)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2885
+			self.rule_SubprogramKind()
+			self.state = 2886
+			localctx.name = self.match(VHDLParser.LIT_IDENTIFIER)
+			self.state = 2887
+			self.match(VHDLParser.KW_IS)
+			self.state = 2888
+			self.match(VHDLParser.KW_NEW)
+			self.state = 2889
+			self.rule_Name(0)
+			self.state = 2891
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 145:
+				self.state = 2890
+				self.rule_Signature()
+
+			self.state = 2894
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 42:
+				self.state = 2893
+				localctx.genericMapAspect = self.rule_GenericMapAspect()
+
+			self.state = 2896
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_SubprogramKindContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def KW_PROCEDURE(self):
+			return self.getToken(VHDLParser.KW_PROCEDURE, 0)
+
+		def KW_FUNCTION(self):
+			return self.getToken(VHDLParser.KW_FUNCTION, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_SubprogramKind
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_SubprogramKind"):
+				return visitor.visitRule_SubprogramKind(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_SubprogramKind(self):
+
+		localctx = VHDLParser.Rule_SubprogramKindContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 478, self.RULE_rule_SubprogramKind)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2898
+			_la = self._input.LA(1)
+			if not (_la == 39 or _la == 75):
+				self._errHandler.recoverInline(self)
+			else:
+				self._errHandler.reportMatch(self)
+				self.consume()
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_SubprogramSpecificationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_ProcedureSpecification(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ProcedureSpecificationContext, 0)
+
+		def rule_FunctionSpecification(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_FunctionSpecificationContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_SubprogramSpecification
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_SubprogramSpecification"):
+				return visitor.visitRule_SubprogramSpecification(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_SubprogramSpecification(self):
+
+		localctx = VHDLParser.Rule_SubprogramSpecificationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 480, self.RULE_rule_SubprogramSpecification)
+		try:
+			self.state = 2902
+			self._errHandler.sync(self)
+			token = self._input.LA(1)
+			if token in [75]:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 2900
+				self.rule_ProcedureSpecification()
+				pass
+			elif token in [39, 46, 78]:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 2901
+				self.rule_FunctionSpecification()
+				pass
+			else:
+				raise NoViableAltException(self)
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_SubtypeDeclarationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.name = None  # Token
+			self.subtypeIndication = None  # Rule_SubtypeIndicationContext
+
+		def KW_SUBTYPE(self):
+			return self.getToken(VHDLParser.KW_SUBTYPE, 0)
+
+		def KW_IS(self):
+			return self.getToken(VHDLParser.KW_IS, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def LIT_IDENTIFIER(self):
+			return self.getToken(VHDLParser.LIT_IDENTIFIER, 0)
+
+		def rule_SubtypeIndication(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubtypeIndicationContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_SubtypeDeclaration
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_SubtypeDeclaration"):
+				return visitor.visitRule_SubtypeDeclaration(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_SubtypeDeclaration(self):
+
+		localctx = VHDLParser.Rule_SubtypeDeclarationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 482, self.RULE_rule_SubtypeDeclaration)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2904
+			self.match(VHDLParser.KW_SUBTYPE)
+			self.state = 2905
+			localctx.name = self.match(VHDLParser.LIT_IDENTIFIER)
+			self.state = 2906
+			self.match(VHDLParser.KW_IS)
+			self.state = 2907
+			localctx.subtypeIndication = self.rule_SubtypeIndication()
+			self.state = 2908
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_SubtypeIndicationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_Name(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0)
+
+		def rule_ResolutionIndication(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ResolutionIndicationContext, 0)
+
+		def rule_Constraint(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ConstraintContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_SubtypeIndication
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_SubtypeIndication"):
+				return visitor.visitRule_SubtypeIndication(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_SubtypeIndication(self):
+
+		localctx = VHDLParser.Rule_SubtypeIndicationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 484, self.RULE_rule_SubtypeIndication)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2911
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 329, self._ctx)
+			if la_ == 1:
+				self.state = 2910
+				self.rule_ResolutionIndication()
+
+			self.state = 2913
+			self.rule_Name(0)
+			self.state = 2915
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 330, self._ctx)
+			if la_ == 1:
+				self.state = 2914
+				self.rule_Constraint()
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_SuffixContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def LIT_IDENTIFIER(self):
+			return self.getToken(VHDLParser.LIT_IDENTIFIER, 0)
+
+		def LIT_CHARACTER(self):
+			return self.getToken(VHDLParser.LIT_CHARACTER, 0)
+
+		def LIT_STRING(self):
+			return self.getToken(VHDLParser.LIT_STRING, 0)
+
+		def KW_ALL(self):
+			return self.getToken(VHDLParser.KW_ALL, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_Suffix
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_Suffix"):
+				return visitor.visitRule_Suffix(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_Suffix(self):
+
+		localctx = VHDLParser.Rule_SuffixContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 486, self.RULE_rule_Suffix)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2917
+			_la = self._input.LA(1)
+			if not (_la == 10 or ((((_la - 161)) & ~0x3f) == 0 and ((1 << (_la - 161)) & 7) != 0)):
+				self._errHandler.recoverInline(self)
+			else:
+				self._errHandler.reportMatch(self)
+				self.consume()
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_TargetContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_Name(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0)
+
+		def rule_Aggregate(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_AggregateContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_Target
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_Target"):
+				return visitor.visitRule_Target(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_Target(self):
+
+		localctx = VHDLParser.Rule_TargetContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 488, self.RULE_rule_Target)
+		try:
+			self.state = 2921
+			self._errHandler.sync(self)
+			token = self._input.LA(1)
+			if token in [147, 161, 162, 163]:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 2919
+				self.rule_Name(0)
+				pass
+			elif token in [143]:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 2920
+				self.rule_Aggregate()
+				pass
+			else:
+				raise NoViableAltException(self)
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_TimeoutClauseContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.expression = None  # Rule_ExpressionContext
+
+		def KW_FOR(self):
+			return self.getToken(VHDLParser.KW_FOR, 0)
+
+		def rule_Expression(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_TimeoutClause
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_TimeoutClause"):
+				return visitor.visitRule_TimeoutClause(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_TimeoutClause(self):
+
+		localctx = VHDLParser.Rule_TimeoutClauseContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 490, self.RULE_rule_TimeoutClause)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2923
+			self.match(VHDLParser.KW_FOR)
+			self.state = 2924
+			localctx.expression = self.rule_Expression(0)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_TypeConversionContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_Name(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_NameContext, 0)
+
+		def TOK_LP(self):
+			return self.getToken(VHDLParser.TOK_LP, 0)
+
+		def rule_Expression(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0)
+
+		def TOK_RP(self):
+			return self.getToken(VHDLParser.TOK_RP, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_TypeConversion
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_TypeConversion"):
+				return visitor.visitRule_TypeConversion(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_TypeConversion(self):
+
+		localctx = VHDLParser.Rule_TypeConversionContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 492, self.RULE_rule_TypeConversion)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2926
+			self.rule_Name(0)
+			self.state = 2927
+			self.match(VHDLParser.TOK_LP)
+			self.state = 2928
+			self.rule_Expression(0)
+			self.state = 2929
+			self.match(VHDLParser.TOK_RP)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_TypeDeclarationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_FullTypeDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_FullTypeDeclarationContext, 0)
+
+		def rule_IncompleteTypeDeclaration(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_IncompleteTypeDeclarationContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_TypeDeclaration
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_TypeDeclaration"):
+				return visitor.visitRule_TypeDeclaration(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_TypeDeclaration(self):
+
+		localctx = VHDLParser.Rule_TypeDeclarationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 494, self.RULE_rule_TypeDeclaration)
+		try:
+			self.state = 2933
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 332, self._ctx)
+			if la_ == 1:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 2931
+				self.rule_FullTypeDeclaration()
+				pass
+
+			elif la_ == 2:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 2932
+				self.rule_IncompleteTypeDeclaration()
+				pass
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_TypeDefinitionContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def rule_ScalarTypeDefinition(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ScalarTypeDefinitionContext, 0)
+
+		def rule_CompositeTypeDefinition(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_CompositeTypeDefinitionContext, 0)
+
+		def rule_AccessTypeDefinition(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_AccessTypeDefinitionContext, 0)
+
+		def rule_FileTypeDefinition(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_FileTypeDefinitionContext, 0)
+
+		def rule_ProtectedTypeDefinition(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ProtectedTypeDefinitionContext, 0)
+
+		def rule_ProtectedTypeInstantiationDefinition(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ProtectedTypeInstantiationDefinitionContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_TypeDefinition
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_TypeDefinition"):
+				return visitor.visitRule_TypeDefinition(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_TypeDefinition(self):
+
+		localctx = VHDLParser.Rule_TypeDefinitionContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 496, self.RULE_rule_TypeDefinition)
+		try:
+			self.state = 2941
+			self._errHandler.sync(self)
+			token = self._input.LA(1)
+			if token in [79, 143]:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 2935
+				self.rule_ScalarTypeDefinition()
+				pass
+			elif token in [13, 80]:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 2936
+				self.rule_CompositeTypeDefinition()
+				pass
+			elif token in [7]:
+				self.enterOuterAlt(localctx, 3)
+				self.state = 2937
+				self.rule_AccessTypeDefinition()
+				pass
+			elif token in [36]:
+				self.enterOuterAlt(localctx, 4)
+				self.state = 2938
+				self.rule_FileTypeDefinition()
+				pass
+			elif token in [77]:
+				self.enterOuterAlt(localctx, 5)
+				self.state = 2939
+				self.rule_ProtectedTypeDefinition()
+				pass
+			elif token in [59]:
+				self.enterOuterAlt(localctx, 6)
+				self.state = 2940
+				self.rule_ProtectedTypeInstantiationDefinition()
+				pass
+			else:
+				raise NoViableAltException(self)
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_UnboundArrayDefinitionContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.subtypeIndication = None  # Rule_SubtypeIndicationContext
+
+		def KW_ARRAY(self):
+			return self.getToken(VHDLParser.KW_ARRAY, 0)
+
+		def TOK_LP(self):
+			return self.getToken(VHDLParser.TOK_LP, 0)
+
+		def rule_IndexSubtypeDefinition(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_IndexSubtypeDefinitionContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_IndexSubtypeDefinitionContext, i)
+
+		def TOK_RP(self):
+			return self.getToken(VHDLParser.TOK_RP, 0)
+
+		def KW_OF(self):
+			return self.getToken(VHDLParser.KW_OF, 0)
+
+		def rule_SubtypeIndication(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubtypeIndicationContext, 0)
+
+		def TOK_COMMA(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.TOK_COMMA)
+			else:
+				return self.getToken(VHDLParser.TOK_COMMA, i)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_UnboundArrayDefinition
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_UnboundArrayDefinition"):
+				return visitor.visitRule_UnboundArrayDefinition(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_UnboundArrayDefinition(self):
+
+		localctx = VHDLParser.Rule_UnboundArrayDefinitionContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 498, self.RULE_rule_UnboundArrayDefinition)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2943
+			self.match(VHDLParser.KW_ARRAY)
+			self.state = 2944
+			self.match(VHDLParser.TOK_LP)
+			self.state = 2945
+			self.rule_IndexSubtypeDefinition()
+			self.state = 2950
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			while _la == 151:
+				self.state = 2946
+				self.match(VHDLParser.TOK_COMMA)
+				self.state = 2947
+				self.rule_IndexSubtypeDefinition()
+				self.state = 2952
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+
+			self.state = 2953
+			self.match(VHDLParser.TOK_RP)
+			self.state = 2954
+			self.match(VHDLParser.KW_OF)
+			self.state = 2955
+			localctx.subtypeIndication = self.rule_SubtypeIndication()
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_UnspecifiedTypeIndicationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+
+		def KW_TYPE(self):
+			return self.getToken(VHDLParser.KW_TYPE, 0)
+
+		def KW_IS(self):
+			return self.getToken(VHDLParser.KW_IS, 0)
+
+		def rule_IncompleteTypeDefinition(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_IncompleteTypeDefinitionContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_UnspecifiedTypeIndication
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_UnspecifiedTypeIndication"):
+				return visitor.visitRule_UnspecifiedTypeIndication(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_UnspecifiedTypeIndication(self):
+
+		localctx = VHDLParser.Rule_UnspecifiedTypeIndicationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 500, self.RULE_rule_UnspecifiedTypeIndication)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2957
+			self.match(VHDLParser.KW_TYPE)
+			self.state = 2958
+			self.match(VHDLParser.KW_IS)
+			self.state = 2959
+			self.rule_IncompleteTypeDefinition()
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_UseClauseContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self._rule_SelectedName2 = None  # Rule_SelectedName2Context
+			self.names = list()  # of Rule_SelectedName2Contexts
+
+		def KW_USE(self):
+			return self.getToken(VHDLParser.KW_USE, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def rule_SelectedName2(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_SelectedName2Context)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_SelectedName2Context, i)
+
+		def TOK_COMMA(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.TOK_COMMA)
+			else:
+				return self.getToken(VHDLParser.TOK_COMMA, i)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_UseClause
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_UseClause"):
+				return visitor.visitRule_UseClause(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_UseClause(self):
+
+		localctx = VHDLParser.Rule_UseClauseContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 502, self.RULE_rule_UseClause)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2961
+			self.match(VHDLParser.KW_USE)
+			self.state = 2962
+			localctx._rule_SelectedName2 = self.rule_SelectedName2()
+			localctx.names.append(localctx._rule_SelectedName2)
+			self.state = 2967
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			while _la == 151:
+				self.state = 2963
+				self.match(VHDLParser.TOK_COMMA)
+				self.state = 2964
+				localctx._rule_SelectedName2 = self.rule_SelectedName2()
+				localctx.names.append(localctx._rule_SelectedName2)
+				self.state = 2969
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+
+			self.state = 2970
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_ValueReturnStatementContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.label = None  # Token
+
+		def KW_RETURN(self):
+			return self.getToken(VHDLParser.KW_RETURN, 0)
+
+		def rule_ConditionalOrUnaffectedExpression(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ConditionalOrUnaffectedExpressionContext, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def TOK_COLON(self):
+			return self.getToken(VHDLParser.TOK_COLON, 0)
+
+		def LIT_IDENTIFIER(self):
+			return self.getToken(VHDLParser.LIT_IDENTIFIER, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_ValueReturnStatement
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_ValueReturnStatement"):
+				return visitor.visitRule_ValueReturnStatement(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_ValueReturnStatement(self):
+
+		localctx = VHDLParser.Rule_ValueReturnStatementContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 504, self.RULE_rule_ValueReturnStatement)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2974
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 163:
+				self.state = 2972
+				localctx.label = self.match(VHDLParser.LIT_IDENTIFIER)
+				self.state = 2973
+				self.match(VHDLParser.TOK_COLON)
+
+			self.state = 2976
+			self.match(VHDLParser.KW_RETURN)
+			self.state = 2977
+			self.rule_ConditionalOrUnaffectedExpression()
+			self.state = 2978
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_VariableAssignmentStatementContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.label = None  # Token
+
+		def rule_SimpleVariableAssignment(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SimpleVariableAssignmentContext, 0)
+
+		def rule_SelectedVariableAssignment(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SelectedVariableAssignmentContext, 0)
+
+		def TOK_COLON(self):
+			return self.getToken(VHDLParser.TOK_COLON, 0)
+
+		def LIT_IDENTIFIER(self):
+			return self.getToken(VHDLParser.LIT_IDENTIFIER, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_VariableAssignmentStatement
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_VariableAssignmentStatement"):
+				return visitor.visitRule_VariableAssignmentStatement(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_VariableAssignmentStatement(self):
+
+		localctx = VHDLParser.Rule_VariableAssignmentStatementContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 506, self.RULE_rule_VariableAssignmentStatement)
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2982
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 337, self._ctx)
+			if la_ == 1:
+				self.state = 2980
+				localctx.label = self.match(VHDLParser.LIT_IDENTIFIER)
+				self.state = 2981
+				self.match(VHDLParser.TOK_COLON)
+
+			self.state = 2986
+			self._errHandler.sync(self)
+			token = self._input.LA(1)
+			if token in [143, 147, 161, 162, 163]:
+				self.state = 2984
+				self.rule_SimpleVariableAssignment()
+				pass
+			elif token in [116]:
+				self.state = 2985
+				self.rule_SelectedVariableAssignment()
+				pass
+			else:
+				raise NoViableAltException(self)
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_VariableDeclarationContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.subtypeIndication = None  # Rule_SubtypeIndicationContext
+			self.genericMapAspect = None  # Rule_GenericMapAspectContext
+			self.expression = None  # Rule_ExpressionContext
+
+		def KW_VARIABLE(self):
+			return self.getToken(VHDLParser.KW_VARIABLE, 0)
+
+		def rule_IdentifierList(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_IdentifierListContext, 0)
+
+		def TOK_COLON(self):
+			return self.getToken(VHDLParser.TOK_COLON, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def rule_SubtypeIndication(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SubtypeIndicationContext, 0)
+
+		def KW_SHARED(self):
+			return self.getToken(VHDLParser.KW_SHARED, 0)
+
+		def TOK_VAR_ASSIGN(self):
+			return self.getToken(VHDLParser.TOK_VAR_ASSIGN, 0)
+
+		def rule_GenericMapAspect(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_GenericMapAspectContext, 0)
+
+		def rule_Expression(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_VariableDeclaration
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_VariableDeclaration"):
+				return visitor.visitRule_VariableDeclaration(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_VariableDeclaration(self):
+
+		localctx = VHDLParser.Rule_VariableDeclarationContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 508, self.RULE_rule_VariableDeclaration)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 2989
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 92:
+				self.state = 2988
+				self.match(VHDLParser.KW_SHARED)
+
+			self.state = 2991
+			self.match(VHDLParser.KW_VARIABLE)
+			self.state = 2992
+			self.rule_IdentifierList()
+			self.state = 2993
+			self.match(VHDLParser.TOK_COLON)
+			self.state = 2994
+			localctx.subtypeIndication = self.rule_SubtypeIndication()
+			self.state = 2996
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 42:
+				self.state = 2995
+				localctx.genericMapAspect = self.rule_GenericMapAspect()
+
+			self.state = 3000
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 141:
+				self.state = 2998
+				self.match(VHDLParser.TOK_VAR_ASSIGN)
+				self.state = 2999
+				localctx.expression = self.rule_Expression(0)
+
+			self.state = 3002
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_WaitStatementContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.label = None  # Token
+
+		def KW_WAIT(self):
+			return self.getToken(VHDLParser.KW_WAIT, 0)
+
+		def TOK_SEMICOL(self):
+			return self.getToken(VHDLParser.TOK_SEMICOL, 0)
+
+		def TOK_COLON(self):
+			return self.getToken(VHDLParser.TOK_COLON, 0)
+
+		def rule_SensitivityClause(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_SensitivityClauseContext, 0)
+
+		def rule_ConditionClause(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_ConditionClauseContext, 0)
+
+		def rule_TimeoutClause(self):
+			return self.getTypedRuleContext(VHDLParser.Rule_TimeoutClauseContext, 0)
+
+		def LIT_IDENTIFIER(self):
+			return self.getToken(VHDLParser.LIT_IDENTIFIER, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_WaitStatement
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_WaitStatement"):
+				return visitor.visitRule_WaitStatement(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_WaitStatement(self):
+
+		localctx = VHDLParser.Rule_WaitStatementContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 510, self.RULE_rule_WaitStatement)
+		self._la = 0  # Token type
+		try:
+			self.enterOuterAlt(localctx, 1)
+			self.state = 3006
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 163:
+				self.state = 3004
+				localctx.label = self.match(VHDLParser.LIT_IDENTIFIER)
+				self.state = 3005
+				self.match(VHDLParser.TOK_COLON)
+
+			self.state = 3008
+			self.match(VHDLParser.KW_WAIT)
+			self.state = 3010
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 65:
+				self.state = 3009
+				self.rule_SensitivityClause()
+
+			self.state = 3013
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 107:
+				self.state = 3012
+				self.rule_ConditionClause()
+
+			self.state = 3016
+			self._errHandler.sync(self)
+			_la = self._input.LA(1)
+			if _la == 37:
+				self.state = 3015
+				self.rule_TimeoutClause()
+
+			self.state = 3018
+			self.match(VHDLParser.TOK_SEMICOL)
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_WaveformContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self._rule_WaveformElement = None  # Rule_WaveformElementContext
+			self.waveformElement = list()  # of Rule_WaveformElementContexts
+
+		def rule_WaveformElement(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_WaveformElementContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_WaveformElementContext, i)
+
+		def TOK_COMMA(self, i: int = None):
+			if i is None:
+				return self.getTokens(VHDLParser.TOK_COMMA)
+			else:
+				return self.getToken(VHDLParser.TOK_COMMA, i)
+
+		def KW_UNAFFECTED(self):
+			return self.getToken(VHDLParser.KW_UNAFFECTED, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_Waveform
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_Waveform"):
+				return visitor.visitRule_Waveform(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_Waveform(self):
+
+		localctx = VHDLParser.Rule_WaveformContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 512, self.RULE_rule_Waveform)
+		self._la = 0  # Token type
+		try:
+			self.state = 3029
+			self._errHandler.sync(self)
+			token = self._input.LA(1)
+			if token in [6, 11, 58, 59, 61, 62, 63, 67, 119, 120, 132, 133, 138, 143, 147, 159, 160, 161, 162, 163]:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 3020
+				localctx._rule_WaveformElement = self.rule_WaveformElement()
+				localctx.waveformElement.append(localctx._rule_WaveformElement)
+				self.state = 3025
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+				while _la == 151:
+					self.state = 3021
+					self.match(VHDLParser.TOK_COMMA)
+					self.state = 3022
+					localctx._rule_WaveformElement = self.rule_WaveformElement()
+					localctx.waveformElement.append(localctx._rule_WaveformElement)
+					self.state = 3027
+					self._errHandler.sync(self)
+					_la = self._input.LA(1)
+
+				pass
+			elif token in [105]:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 3028
+				self.match(VHDLParser.KW_UNAFFECTED)
+				pass
+			else:
+				raise NoViableAltException(self)
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	class Rule_WaveformElementContext(ParserRuleContext):
+		__slots__ = 'parser'
+
+		def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+			super().__init__(parent, invokingState)
+			self.parser = parser
+			self.expression = None  # Rule_ExpressionContext
+			self.afterExpression = None  # Rule_ExpressionContext
+
+		def rule_Expression(self, i: int = None):
+			if i is None:
+				return self.getTypedRuleContexts(VHDLParser.Rule_ExpressionContext)
+			else:
+				return self.getTypedRuleContext(VHDLParser.Rule_ExpressionContext, i)
+
+		def KW_AFTER(self):
+			return self.getToken(VHDLParser.KW_AFTER, 0)
+
+		def KW_NULL(self):
+			return self.getToken(VHDLParser.KW_NULL, 0)
+
+		def getRuleIndex(self):
+			return VHDLParser.RULE_rule_WaveformElement
+
+		def accept(self, visitor: ParseTreeVisitor):
+			if hasattr(visitor, "visitRule_WaveformElement"):
+				return visitor.visitRule_WaveformElement(self)
+			else:
+				return visitor.visitChildren(self)
+
+	def rule_WaveformElement(self):
+
+		localctx = VHDLParser.Rule_WaveformElementContext(self, self._ctx, self.state)
+		self.enterRule(localctx, 514, self.RULE_rule_WaveformElement)
+		self._la = 0  # Token type
+		try:
+			self.state = 3041
+			self._errHandler.sync(self)
+			la_ = self._interp.adaptivePredict(self._input, 350, self._ctx)
+			if la_ == 1:
+				self.enterOuterAlt(localctx, 1)
+				self.state = 3031
+				localctx.expression = self.rule_Expression(0)
+				self.state = 3034
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+				if _la == 8:
+					self.state = 3032
+					self.match(VHDLParser.KW_AFTER)
+					self.state = 3033
+					localctx.afterExpression = self.rule_Expression(0)
+
+				pass
+
+			elif la_ == 2:
+				self.enterOuterAlt(localctx, 2)
+				self.state = 3036
+				self.match(VHDLParser.KW_NULL)
+				self.state = 3039
+				self._errHandler.sync(self)
+				_la = self._input.LA(1)
+				if _la == 8:
+					self.state = 3037
+					self.match(VHDLParser.KW_AFTER)
+					self.state = 3038
+					localctx.afterExpression = self.rule_Expression(0)
+
+				pass
+
+
+		except RecognitionException as re:
+			localctx.exception = re
+			self._errHandler.reportError(self, re)
+			self._errHandler.recover(self, re)
+		finally:
+			self.exitRule()
+		return localctx
+
+	def sempred(self, localctx: RuleContext, ruleIndex: int, predIndex: int):
+		if self._predicates == None:
+			self._predicates = dict()
+		self._predicates[92] = self.rule_Expression_sempred
+		self._predicates[159] = self.rule_Name_sempred
+		pred = self._predicates.get(ruleIndex, None)
+		if pred is None:
+			raise Exception("No predicate with index:" + str(ruleIndex))
+		else:
+			return pred(localctx, predIndex)
+
+	def rule_Expression_sempred(self, localctx: Rule_ExpressionContext, predIndex: int):
+		if predIndex == 0:
+			return self.precpred(self._ctx, 6)
+
+		if predIndex == 1:
+			return self.precpred(self._ctx, 5)
+
+		if predIndex == 2:
+			return self.precpred(self._ctx, 4)
+
+		if predIndex == 3:
+			return self.precpred(self._ctx, 3)
+
+		if predIndex == 4:
+			return self.precpred(self._ctx, 2)
+
+		if predIndex == 5:
+			return self.precpred(self._ctx, 1)
+
+	def rule_Name_sempred(self, localctx: Rule_NameContext, predIndex: int):
+		if predIndex == 6:
+			return self.precpred(self._ctx, 5)
+
+		if predIndex == 7:
+			return self.precpred(self._ctx, 4)
+
+		if predIndex == 8:
+			return self.precpred(self._ctx, 3)
+
+		if predIndex == 9:
+			return self.precpred(self._ctx, 2)
+
+ + diff --git a/typing/html/pyVHDLParser/ANTLR4/VHDLParserVisitor.py.html b/typing/html/pyVHDLParser/ANTLR4/VHDLParserVisitor.py.html new file mode 100644 index 000000000..38c14d756 --- /dev/null +++ b/typing/html/pyVHDLParser/ANTLR4/VHDLParserVisitor.py.html @@ -0,0 +1,2449 @@ + + + + + + +

pyVHDLParser.ANTLR4.VHDLParserVisitor

+ + + + + + +
pyVHDLParser/ANTLR4/VHDLParserVisitor.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+380
+381
+382
+383
+384
+385
+386
+387
+388
+389
+390
+391
+392
+393
+394
+395
+396
+397
+398
+399
+400
+401
+402
+403
+404
+405
+406
+407
+408
+409
+410
+411
+412
+413
+414
+415
+416
+417
+418
+419
+420
+421
+422
+423
+424
+425
+426
+427
+428
+429
+430
+431
+432
+433
+434
+435
+436
+437
+438
+439
+440
+441
+442
+443
+444
+445
+446
+447
+448
+449
+450
+451
+452
+453
+454
+455
+456
+457
+458
+459
+460
+461
+462
+463
+464
+465
+466
+467
+468
+469
+470
+471
+472
+473
+474
+475
+476
+477
+478
+479
+480
+481
+482
+483
+484
+485
+486
+487
+488
+489
+490
+491
+492
+493
+494
+495
+496
+497
+498
+499
+500
+501
+502
+503
+504
+505
+506
+507
+508
+509
+510
+511
+512
+513
+514
+515
+516
+517
+518
+519
+520
+521
+522
+523
+524
+525
+526
+527
+528
+529
+530
+531
+532
+533
+534
+535
+536
+537
+538
+539
+540
+541
+542
+543
+544
+545
+546
+547
+548
+549
+550
+551
+552
+553
+554
+555
+556
+557
+558
+559
+560
+561
+562
+563
+564
+565
+566
+567
+568
+569
+570
+571
+572
+573
+574
+575
+576
+577
+578
+579
+580
+581
+582
+583
+584
+585
+586
+587
+588
+589
+590
+591
+592
+593
+594
+595
+596
+597
+598
+599
+600
+601
+602
+603
+604
+605
+606
+607
+608
+609
+610
+611
+612
+613
+614
+615
+616
+617
+618
+619
+620
+621
+622
+623
+624
+625
+626
+627
+628
+629
+630
+631
+632
+633
+634
+635
+636
+637
+638
+639
+640
+641
+642
+643
+644
+645
+646
+647
+648
+649
+650
+651
+652
+653
+654
+655
+656
+657
+658
+659
+660
+661
+662
+663
+664
+665
+666
+667
+668
+669
+670
+671
+672
+673
+674
+675
+676
+677
+678
+679
+680
+681
+682
+683
+684
+685
+686
+687
+688
+689
+690
+691
+692
+693
+694
+695
+696
+697
+698
+699
+700
+701
+702
+703
+704
+705
+706
+707
+708
+709
+710
+711
+712
+713
+714
+715
+716
+717
+718
+719
+720
+721
+722
+723
+724
+725
+726
+727
+728
+729
+730
+731
+732
+733
+734
+735
+736
+737
+738
+739
+740
+741
+742
+743
+744
+745
+746
+747
+748
+749
+750
+751
+752
+753
+754
+755
+756
+757
+758
+759
+760
+761
+762
+763
+764
+765
+766
+767
+768
+769
+770
+771
+772
+773
+774
+775
+776
+777
+778
+779
+780
+781
+782
+783
+784
+785
+786
+787
+788
+789
+790
+791
+792
+793
+794
+795
+796
+797
+798
+799
+800
+801
+802
+803
+804
+805
+806
+807
+808
+809
+810
+811
+812
+813
+814
+815
+816
+817
+818
+819
+820
+821
+822
+823
+824
+825
+826
+827
+828
+829
+830
+831
+832
+833
+834
+835
+836
+837
+838
+839
+840
+841
+842
+843
+844
+845
+846
+847
+848
+849
+850
+851
+852
+853
+854
+855
+856
+857
+858
+859
+860
+861
+862
+863
+864
+865
+866
+867
+868
+869
+870
+871
+872
+873
+874
+875
+876
+877
+878
+879
+880
+881
+882
+883
+884
+885
+886
+887
+888
+889
+890
+891
+892
+893
+894
+895
+896
+897
+898
+899
+900
+901
+902
+903
+904
+905
+906
+907
+908
+909
+910
+911
+912
+913
+914
+915
+916
+917
+918
+919
+920
+921
+922
+923
+924
+925
+926
+927
+928
+929
+930
+931
+932
+933
+934
+935
+936
+937
+938
+939
+940
+941
+942
+943
+944
+945
+946
+947
+948
+949
+950
+951
+952
+953
+954
+955
+956
+957
+958
+959
+960
+961
+962
+963
+964
+965
+966
+967
+968
+969
+970
+971
+972
+973
+974
+975
+976
+977
+978
+979
+980
+981
+982
+983
+984
+985
+986
+987
+988
+989
+990
+991
+992
+993
+994
+995
+996
+997
+998
+999
+1000
+1001
+1002
+1003
+1004
+1005
+1006
+1007
+1008
+1009
+1010
+1011
+1012
+1013
+1014
+1015
+1016
+1017
+1018
+1019
+1020
+1021
+1022
+1023
+1024
+1025
+1026
+1027
+1028
+1029
+1030
+1031
+1032
+1033
+1034
+1035
+1036
+1037
+1038
+1039
+1040
+1041
+1042
+1043
+1044
+1045
+1046
+1047
+1048
+1049
+1050
+1051
+1052
+1053
+1054
+1055
+1056
+1057
+1058
+1059
+1060
+1061
+1062
+1063
+1064
+1065
+1066
+1067
+1068
+1069
+1070
+1071
+1072
+1073
+1074
+1075
+1076
+1077
+1078
+1079
+1080
+1081
+1082
+1083
+
# Generated from .\VHDLParser.g4 by ANTLR 4.12.0
+from antlr4 import ParseTreeVisitor
+
+from .VHDLParser import VHDLParser
+
+# This class defines a complete generic visitor for a parse tree produced by VHDLParser.
+
+class VHDLParserVisitor(ParseTreeVisitor):
+	# Visit a parse tree produced by VHDLParser#rule_AbsolutePathname.
+	def visitRule_AbsolutePathname(self, ctx: VHDLParser.Rule_AbsolutePathnameContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_AccessIncompleteTypeDefinition.
+	def visitRule_AccessIncompleteTypeDefinition(self, ctx: VHDLParser.Rule_AccessIncompleteTypeDefinitionContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_AccessTypeDefinition.
+	def visitRule_AccessTypeDefinition(self, ctx: VHDLParser.Rule_AccessTypeDefinitionContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ActualDesignator.
+	def visitRule_ActualDesignator(self, ctx: VHDLParser.Rule_ActualDesignatorContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ActualPart.
+	def visitRule_ActualPart(self, ctx: VHDLParser.Rule_ActualPartContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_Aggregate.
+	def visitRule_Aggregate(self, ctx: VHDLParser.Rule_AggregateContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_AliasDeclaration.
+	def visitRule_AliasDeclaration(self, ctx: VHDLParser.Rule_AliasDeclarationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_AliasDesignator.
+	def visitRule_AliasDesignator(self, ctx: VHDLParser.Rule_AliasDesignatorContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_AliasIndication.
+	def visitRule_AliasIndication(self, ctx: VHDLParser.Rule_AliasIndicationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_Allocator.
+	def visitRule_Allocator(self, ctx: VHDLParser.Rule_AllocatorContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_Architecture.
+	def visitRule_Architecture(self, ctx: VHDLParser.Rule_ArchitectureContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ArchitectureStatement.
+	def visitRule_ArchitectureStatement(self, ctx: VHDLParser.Rule_ArchitectureStatementContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ArrayConstraint.
+	def visitRule_ArrayConstraint(self, ctx: VHDLParser.Rule_ArrayConstraintContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ArrayIncompleteTypeDefinition.
+	def visitRule_ArrayIncompleteTypeDefinition(self, ctx: VHDLParser.Rule_ArrayIncompleteTypeDefinitionContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ArrayIndexIncompleteType.
+	def visitRule_ArrayIndexIncompleteType(self, ctx: VHDLParser.Rule_ArrayIndexIncompleteTypeContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ArrayIndexIncompleteTypeList.
+	def visitRule_ArrayIndexIncompleteTypeList(self, ctx: VHDLParser.Rule_ArrayIndexIncompleteTypeListContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ArrayModeViewIndication.
+	def visitRule_ArrayModeViewIndication(self, ctx: VHDLParser.Rule_ArrayModeViewIndicationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_Assertion.
+	def visitRule_Assertion(self, ctx: VHDLParser.Rule_AssertionContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_AssertionStatement.
+	def visitRule_AssertionStatement(self, ctx: VHDLParser.Rule_AssertionStatementContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_AssociationElement.
+	def visitRule_AssociationElement(self, ctx: VHDLParser.Rule_AssociationElementContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_AssociationList.
+	def visitRule_AssociationList(self, ctx: VHDLParser.Rule_AssociationListContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_AttributeDeclaration.
+	def visitRule_AttributeDeclaration(self, ctx: VHDLParser.Rule_AttributeDeclarationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_AttributeDesignator.
+	def visitRule_AttributeDesignator(self, ctx: VHDLParser.Rule_AttributeDesignatorContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_AttributeSpecification.
+	def visitRule_AttributeSpecification(self, ctx: VHDLParser.Rule_AttributeSpecificationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_BindingIndication.
+	def visitRule_BindingIndication(self, ctx: VHDLParser.Rule_BindingIndicationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_BlockConfiguration.
+	def visitRule_BlockConfiguration(self, ctx: VHDLParser.Rule_BlockConfigurationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_BlockDeclarativeItem.
+	def visitRule_BlockDeclarativeItem(self, ctx: VHDLParser.Rule_BlockDeclarativeItemContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_BlockSpecification.
+	def visitRule_BlockSpecification(self, ctx: VHDLParser.Rule_BlockSpecificationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_BlockStatement.
+	def visitRule_BlockStatement(self, ctx: VHDLParser.Rule_BlockStatementContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_CaseGenerateAlternative.
+	def visitRule_CaseGenerateAlternative(self, ctx: VHDLParser.Rule_CaseGenerateAlternativeContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_CaseGenerateStatement.
+	def visitRule_CaseGenerateStatement(self, ctx: VHDLParser.Rule_CaseGenerateStatementContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_CaseStatement.
+	def visitRule_CaseStatement(self, ctx: VHDLParser.Rule_CaseStatementContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_CaseStatementAlternative.
+	def visitRule_CaseStatementAlternative(self, ctx: VHDLParser.Rule_CaseStatementAlternativeContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_Choice.
+	def visitRule_Choice(self, ctx: VHDLParser.Rule_ChoiceContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_Choices.
+	def visitRule_Choices(self, ctx: VHDLParser.Rule_ChoicesContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ComponentConfiguration.
+	def visitRule_ComponentConfiguration(self, ctx: VHDLParser.Rule_ComponentConfigurationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ComponentDeclaration.
+	def visitRule_ComponentDeclaration(self, ctx: VHDLParser.Rule_ComponentDeclarationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ComponentInstantiationStatement.
+	def visitRule_ComponentInstantiationStatement(self, ctx: VHDLParser.Rule_ComponentInstantiationStatementContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ComponentSpecification.
+	def visitRule_ComponentSpecification(self, ctx: VHDLParser.Rule_ComponentSpecificationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_CompositeTypeDefinition.
+	def visitRule_CompositeTypeDefinition(self, ctx: VHDLParser.Rule_CompositeTypeDefinitionContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_CompoundConfigurationSpecification.
+	def visitRule_CompoundConfigurationSpecification(self,
+																									 ctx: VHDLParser.Rule_CompoundConfigurationSpecificationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ConcurrentAssertionStatement.
+	def visitRule_ConcurrentAssertionStatement(self, ctx: VHDLParser.Rule_ConcurrentAssertionStatementContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ConcurrentConditionalSignalAssignment.
+	def visitRule_ConcurrentConditionalSignalAssignment(self,
+																											ctx: VHDLParser.Rule_ConcurrentConditionalSignalAssignmentContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ConcurrentProcedureCallStatement.
+	def visitRule_ConcurrentProcedureCallStatement(self, ctx: VHDLParser.Rule_ConcurrentProcedureCallStatementContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ConcurrentSelectedSignalAssignment.
+	def visitRule_ConcurrentSelectedSignalAssignment(self,
+																									 ctx: VHDLParser.Rule_ConcurrentSelectedSignalAssignmentContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ConcurrentSignalAssignmentStatement.
+	def visitRule_ConcurrentSignalAssignmentStatement(self,
+																										ctx: VHDLParser.Rule_ConcurrentSignalAssignmentStatementContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ConcurrentSimpleSignalAssignment.
+	def visitRule_ConcurrentSimpleSignalAssignment(self, ctx: VHDLParser.Rule_ConcurrentSimpleSignalAssignmentContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ConcurrentStatement.
+	def visitRule_ConcurrentStatement(self, ctx: VHDLParser.Rule_ConcurrentStatementContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ConditionClause.
+	def visitRule_ConditionClause(self, ctx: VHDLParser.Rule_ConditionClauseContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ConditionalExpression.
+	def visitRule_ConditionalExpression(self, ctx: VHDLParser.Rule_ConditionalExpressionContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ConditionalOrUnaffectedExpression.
+	def visitRule_ConditionalOrUnaffectedExpression(self, ctx: VHDLParser.Rule_ConditionalOrUnaffectedExpressionContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ConditionalSignalAssignment.
+	def visitRule_ConditionalSignalAssignment(self, ctx: VHDLParser.Rule_ConditionalSignalAssignmentContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ConditionalWaveforms.
+	def visitRule_ConditionalWaveforms(self, ctx: VHDLParser.Rule_ConditionalWaveformsContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ConfigurationDeclaration.
+	def visitRule_ConfigurationDeclaration(self, ctx: VHDLParser.Rule_ConfigurationDeclarationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ConfigurationDeclarativeItem.
+	def visitRule_ConfigurationDeclarativeItem(self, ctx: VHDLParser.Rule_ConfigurationDeclarativeItemContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ConfigurationItem.
+	def visitRule_ConfigurationItem(self, ctx: VHDLParser.Rule_ConfigurationItemContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ConfigurationSpecification.
+	def visitRule_ConfigurationSpecification(self, ctx: VHDLParser.Rule_ConfigurationSpecificationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ConstantDeclaration.
+	def visitRule_ConstantDeclaration(self, ctx: VHDLParser.Rule_ConstantDeclarationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ConstrainedArrayDefinition.
+	def visitRule_ConstrainedArrayDefinition(self, ctx: VHDLParser.Rule_ConstrainedArrayDefinitionContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_Constraint.
+	def visitRule_Constraint(self, ctx: VHDLParser.Rule_ConstraintContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ContextDeclaration.
+	def visitRule_ContextDeclaration(self, ctx: VHDLParser.Rule_ContextDeclarationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ContextItem.
+	def visitRule_ContextItem(self, ctx: VHDLParser.Rule_ContextItemContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ContextReference.
+	def visitRule_ContextReference(self, ctx: VHDLParser.Rule_ContextReferenceContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_DelayMechanism.
+	def visitRule_DelayMechanism(self, ctx: VHDLParser.Rule_DelayMechanismContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_DesignFile.
+	def visitRule_DesignFile(self, ctx: VHDLParser.Rule_DesignFileContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_DesignUnit.
+	def visitRule_DesignUnit(self, ctx: VHDLParser.Rule_DesignUnitContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_Designator.
+	def visitRule_Designator(self, ctx: VHDLParser.Rule_DesignatorContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_Direction.
+	def visitRule_Direction(self, ctx: VHDLParser.Rule_DirectionContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_DisconnectionSpecification.
+	def visitRule_DisconnectionSpecification(self, ctx: VHDLParser.Rule_DisconnectionSpecificationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_DiscreteRange.
+	def visitRule_DiscreteRange(self, ctx: VHDLParser.Rule_DiscreteRangeContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_DiscreteIncompleteTypeDefinition.
+	def visitRule_DiscreteIncompleteTypeDefinition(self, ctx: VHDLParser.Rule_DiscreteIncompleteTypeDefinitionContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ElementArrayModeViewIndication.
+	def visitRule_ElementArrayModeViewIndication(self, ctx: VHDLParser.Rule_ElementArrayModeViewIndicationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ElementAssociation.
+	def visitRule_ElementAssociation(self, ctx: VHDLParser.Rule_ElementAssociationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ElementConstraint.
+	def visitRule_ElementConstraint(self, ctx: VHDLParser.Rule_ElementConstraintContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ElementDeclaration.
+	def visitRule_ElementDeclaration(self, ctx: VHDLParser.Rule_ElementDeclarationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ElementModeIndication.
+	def visitRule_ElementModeIndication(self, ctx: VHDLParser.Rule_ElementModeIndicationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ElementModeViewIndication.
+	def visitRule_ElementModeViewIndication(self, ctx: VHDLParser.Rule_ElementModeViewIndicationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ElementRecordModeViewIndication.
+	def visitRule_ElementRecordModeViewIndication(self, ctx: VHDLParser.Rule_ElementRecordModeViewIndicationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ElementResolution.
+	def visitRule_ElementResolution(self, ctx: VHDLParser.Rule_ElementResolutionContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_EntityAspect.
+	def visitRule_EntityAspect(self, ctx: VHDLParser.Rule_EntityAspectContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_EntityClass.
+	def visitRule_EntityClass(self, ctx: VHDLParser.Rule_EntityClassContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_EntityClassEntry.
+	def visitRule_EntityClassEntry(self, ctx: VHDLParser.Rule_EntityClassEntryContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_EntityDeclaration.
+	def visitRule_EntityDeclaration(self, ctx: VHDLParser.Rule_EntityDeclarationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_EntityDeclarativeItem.
+	def visitRule_EntityDeclarativeItem(self, ctx: VHDLParser.Rule_EntityDeclarativeItemContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_EntityDesignator.
+	def visitRule_EntityDesignator(self, ctx: VHDLParser.Rule_EntityDesignatorContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_EntityNameList.
+	def visitRule_EntityNameList(self, ctx: VHDLParser.Rule_EntityNameListContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_EntitySpecification.
+	def visitRule_EntitySpecification(self, ctx: VHDLParser.Rule_EntitySpecificationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_EntityStatement.
+	def visitRule_EntityStatement(self, ctx: VHDLParser.Rule_EntityStatementContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_EntityTag.
+	def visitRule_EntityTag(self, ctx: VHDLParser.Rule_EntityTagContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_EnumerationLiteral.
+	def visitRule_EnumerationLiteral(self, ctx: VHDLParser.Rule_EnumerationLiteralContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_EnumerationTypeDefinition.
+	def visitRule_EnumerationTypeDefinition(self, ctx: VHDLParser.Rule_EnumerationTypeDefinitionContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ExitStatement.
+	def visitRule_ExitStatement(self, ctx: VHDLParser.Rule_ExitStatementContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#binaryOp.
+	def visitBinaryOp(self, ctx: VHDLParser.BinaryOpContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#primaryOp.
+	def visitPrimaryOp(self, ctx: VHDLParser.PrimaryOpContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#unaryOp.
+	def visitUnaryOp(self, ctx: VHDLParser.UnaryOpContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ExpressionOrUnaffected.
+	def visitRule_ExpressionOrUnaffected(self, ctx: VHDLParser.Rule_ExpressionOrUnaffectedContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ExternalName.
+	def visitRule_ExternalName(self, ctx: VHDLParser.Rule_ExternalNameContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ExternalConstantName.
+	def visitRule_ExternalConstantName(self, ctx: VHDLParser.Rule_ExternalConstantNameContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ExternalSignalName.
+	def visitRule_ExternalSignalName(self, ctx: VHDLParser.Rule_ExternalSignalNameContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ExternalVariableName.
+	def visitRule_ExternalVariableName(self, ctx: VHDLParser.Rule_ExternalVariableNameContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ExternalPathname.
+	def visitRule_ExternalPathname(self, ctx: VHDLParser.Rule_ExternalPathnameContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_FileDeclaration.
+	def visitRule_FileDeclaration(self, ctx: VHDLParser.Rule_FileDeclarationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_FileIncompleteTypeDefinition.
+	def visitRule_FileIncompleteTypeDefinition(self, ctx: VHDLParser.Rule_FileIncompleteTypeDefinitionContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_FileOpenInformation.
+	def visitRule_FileOpenInformation(self, ctx: VHDLParser.Rule_FileOpenInformationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_FileTypeDefinition.
+	def visitRule_FileTypeDefinition(self, ctx: VHDLParser.Rule_FileTypeDefinitionContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_FloatingIncompleteTypeDefinition.
+	def visitRule_FloatingIncompleteTypeDefinition(self, ctx: VHDLParser.Rule_FloatingIncompleteTypeDefinitionContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_FloatingTypeDefinition.
+	def visitRule_FloatingTypeDefinition(self, ctx: VHDLParser.Rule_FloatingTypeDefinitionContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ForGenerateStatement.
+	def visitRule_ForGenerateStatement(self, ctx: VHDLParser.Rule_ForGenerateStatementContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_FormalDesignator.
+	def visitRule_FormalDesignator(self, ctx: VHDLParser.Rule_FormalDesignatorContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_FormalParameterList.
+	def visitRule_FormalParameterList(self, ctx: VHDLParser.Rule_FormalParameterListContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_FormalPart.
+	def visitRule_FormalPart(self, ctx: VHDLParser.Rule_FormalPartContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_FullTypeDeclaration.
+	def visitRule_FullTypeDeclaration(self, ctx: VHDLParser.Rule_FullTypeDeclarationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_FunctionCall.
+	def visitRule_FunctionCall(self, ctx: VHDLParser.Rule_FunctionCallContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_FunctionSpecification.
+	def visitRule_FunctionSpecification(self, ctx: VHDLParser.Rule_FunctionSpecificationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_GenerateSpecification.
+	def visitRule_GenerateSpecification(self, ctx: VHDLParser.Rule_GenerateSpecificationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_GenerateStatement.
+	def visitRule_GenerateStatement(self, ctx: VHDLParser.Rule_GenerateStatementContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_GenerateStatementBody.
+	def visitRule_GenerateStatementBody(self, ctx: VHDLParser.Rule_GenerateStatementBodyContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_GenericClause.
+	def visitRule_GenericClause(self, ctx: VHDLParser.Rule_GenericClauseContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_GenericMapAspect.
+	def visitRule_GenericMapAspect(self, ctx: VHDLParser.Rule_GenericMapAspectContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_GroupConstituent.
+	def visitRule_GroupConstituent(self, ctx: VHDLParser.Rule_GroupConstituentContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_GroupDeclaration.
+	def visitRule_GroupDeclaration(self, ctx: VHDLParser.Rule_GroupDeclarationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_GroupTemplateDeclaration.
+	def visitRule_GroupTemplateDeclaration(self, ctx: VHDLParser.Rule_GroupTemplateDeclarationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_GuardedSignalSpecification.
+	def visitRule_GuardedSignalSpecification(self, ctx: VHDLParser.Rule_GuardedSignalSpecificationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_IdentifierList.
+	def visitRule_IdentifierList(self, ctx: VHDLParser.Rule_IdentifierListContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_IfGenerateStatement.
+	def visitRule_IfGenerateStatement(self, ctx: VHDLParser.Rule_IfGenerateStatementContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_IfStatement.
+	def visitRule_IfStatement(self, ctx: VHDLParser.Rule_IfStatementContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_IncompleteSubtypeIndication.
+	def visitRule_IncompleteSubtypeIndication(self, ctx: VHDLParser.Rule_IncompleteSubtypeIndicationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_IncompleteTypeDeclaration.
+	def visitRule_IncompleteTypeDeclaration(self, ctx: VHDLParser.Rule_IncompleteTypeDeclarationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_IncompleteTypeDefinition.
+	def visitRule_IncompleteTypeDefinition(self, ctx: VHDLParser.Rule_IncompleteTypeDefinitionContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_IncompleteTypeMark.
+	def visitRule_IncompleteTypeMark(self, ctx: VHDLParser.Rule_IncompleteTypeMarkContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_IndexConstraint.
+	def visitRule_IndexConstraint(self, ctx: VHDLParser.Rule_IndexConstraintContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_IndexSubtypeDefinition.
+	def visitRule_IndexSubtypeDefinition(self, ctx: VHDLParser.Rule_IndexSubtypeDefinitionContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_InstantiatedUnit.
+	def visitRule_InstantiatedUnit(self, ctx: VHDLParser.Rule_InstantiatedUnitContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_InstantiationList.
+	def visitRule_InstantiationList(self, ctx: VHDLParser.Rule_InstantiationListContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_IntegerIncompleteTypeDefinition.
+	def visitRule_IntegerIncompleteTypeDefinition(self, ctx: VHDLParser.Rule_IntegerIncompleteTypeDefinitionContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_IntegerTypeDefinition.
+	def visitRule_IntegerTypeDefinition(self, ctx: VHDLParser.Rule_IntegerTypeDefinitionContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_InterfaceConstantDeclaration.
+	def visitRule_InterfaceConstantDeclaration(self, ctx: VHDLParser.Rule_InterfaceConstantDeclarationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_InterfaceDeclaration.
+	def visitRule_InterfaceDeclaration(self, ctx: VHDLParser.Rule_InterfaceDeclarationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_InterfaceElement.
+	def visitRule_InterfaceElement(self, ctx: VHDLParser.Rule_InterfaceElementContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_InterfaceFileDeclaration.
+	def visitRule_InterfaceFileDeclaration(self, ctx: VHDLParser.Rule_InterfaceFileDeclarationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_InterfaceFunctionSpecification.
+	def visitRule_InterfaceFunctionSpecification(self, ctx: VHDLParser.Rule_InterfaceFunctionSpecificationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_InterfaceList.
+	def visitRule_InterfaceList(self, ctx: VHDLParser.Rule_InterfaceListContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_InterfacePackageDeclaration.
+	def visitRule_InterfacePackageDeclaration(self, ctx: VHDLParser.Rule_InterfacePackageDeclarationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_InterfacePackageGenericMapAspect.
+	def visitRule_InterfacePackageGenericMapAspect(self, ctx: VHDLParser.Rule_InterfacePackageGenericMapAspectContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_InterfaceProcedureSpecification.
+	def visitRule_InterfaceProcedureSpecification(self, ctx: VHDLParser.Rule_InterfaceProcedureSpecificationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_InterfaceSignalDeclaration.
+	def visitRule_InterfaceSignalDeclaration(self, ctx: VHDLParser.Rule_InterfaceSignalDeclarationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_InterfaceSubprogramDeclaration.
+	def visitRule_InterfaceSubprogramDeclaration(self, ctx: VHDLParser.Rule_InterfaceSubprogramDeclarationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_InterfaceSubprogramDefault.
+	def visitRule_InterfaceSubprogramDefault(self, ctx: VHDLParser.Rule_InterfaceSubprogramDefaultContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_InterfaceSubprogramSpecification.
+	def visitRule_InterfaceSubprogramSpecification(self, ctx: VHDLParser.Rule_InterfaceSubprogramSpecificationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_InterfaceTypeDeclaration.
+	def visitRule_InterfaceTypeDeclaration(self, ctx: VHDLParser.Rule_InterfaceTypeDeclarationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_InterfaceTypeIndication.
+	def visitRule_InterfaceTypeIndication(self, ctx: VHDLParser.Rule_InterfaceTypeIndicationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_InterfaceVariableDeclaration.
+	def visitRule_InterfaceVariableDeclaration(self, ctx: VHDLParser.Rule_InterfaceVariableDeclarationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_IterationScheme.
+	def visitRule_IterationScheme(self, ctx: VHDLParser.Rule_IterationSchemeContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_LibraryClause.
+	def visitRule_LibraryClause(self, ctx: VHDLParser.Rule_LibraryClauseContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_LibraryUnit.
+	def visitRule_LibraryUnit(self, ctx: VHDLParser.Rule_LibraryUnitContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_Literal.
+	def visitRule_Literal(self, ctx: VHDLParser.Rule_LiteralContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_LoopStatement.
+	def visitRule_LoopStatement(self, ctx: VHDLParser.Rule_LoopStatementContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_Mode.
+	def visitRule_Mode(self, ctx: VHDLParser.Rule_ModeContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ModeIndication.
+	def visitRule_ModeIndication(self, ctx: VHDLParser.Rule_ModeIndicationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ModeViewDeclaration.
+	def visitRule_ModeViewDeclaration(self, ctx: VHDLParser.Rule_ModeViewDeclarationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ModeViewElementDefinition.
+	def visitRule_ModeViewElementDefinition(self, ctx: VHDLParser.Rule_ModeViewElementDefinitionContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_Char.
+	def visitRule_Char(self, ctx: VHDLParser.Rule_CharContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_IndexedName.
+	def visitRule_IndexedName(self, ctx: VHDLParser.Rule_IndexedNameContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_SimpleName.
+	def visitRule_SimpleName(self, ctx: VHDLParser.Rule_SimpleNameContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_External.
+	def visitRule_External(self, ctx: VHDLParser.Rule_ExternalContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_AttributeName.
+	def visitRule_AttributeName(self, ctx: VHDLParser.Rule_AttributeNameContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_SelectedName.
+	def visitRule_SelectedName(self, ctx: VHDLParser.Rule_SelectedNameContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_SliceName.
+	def visitRule_SliceName(self, ctx: VHDLParser.Rule_SliceNameContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_Operator.
+	def visitRule_Operator(self, ctx: VHDLParser.Rule_OperatorContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_NextStatement.
+	def visitRule_NextStatement(self, ctx: VHDLParser.Rule_NextStatementContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_NullStatement.
+	def visitRule_NullStatement(self, ctx: VHDLParser.Rule_NullStatementContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_NumericLiteral.
+	def visitRule_NumericLiteral(self, ctx: VHDLParser.Rule_NumericLiteralContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_PackageBody.
+	def visitRule_PackageBody(self, ctx: VHDLParser.Rule_PackageBodyContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_PackageBodyDeclarativeItem.
+	def visitRule_PackageBodyDeclarativeItem(self, ctx: VHDLParser.Rule_PackageBodyDeclarativeItemContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_PackageDeclaration.
+	def visitRule_PackageDeclaration(self, ctx: VHDLParser.Rule_PackageDeclarationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_PackageDeclarativeItem.
+	def visitRule_PackageDeclarativeItem(self, ctx: VHDLParser.Rule_PackageDeclarativeItemContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_PackageInstantiationDeclaration.
+	def visitRule_PackageInstantiationDeclaration(self, ctx: VHDLParser.Rule_PackageInstantiationDeclarationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_PackagePathname.
+	def visitRule_PackagePathname(self, ctx: VHDLParser.Rule_PackagePathnameContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ParameterMapAspect.
+	def visitRule_ParameterMapAspect(self, ctx: VHDLParser.Rule_ParameterMapAspectContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ParameterSpecification.
+	def visitRule_ParameterSpecification(self, ctx: VHDLParser.Rule_ParameterSpecificationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_PartialPathname.
+	def visitRule_PartialPathname(self, ctx: VHDLParser.Rule_PartialPathnameContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_PathnameElement.
+	def visitRule_PathnameElement(self, ctx: VHDLParser.Rule_PathnameElementContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_PhysicalIncompleteTypeDefinition.
+	def visitRule_PhysicalIncompleteTypeDefinition(self, ctx: VHDLParser.Rule_PhysicalIncompleteTypeDefinitionContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_PhysicalLiteral.
+	def visitRule_PhysicalLiteral(self, ctx: VHDLParser.Rule_PhysicalLiteralContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_PhysicalTypeDefinition.
+	def visitRule_PhysicalTypeDefinition(self, ctx: VHDLParser.Rule_PhysicalTypeDefinitionContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_PlainReturnStatement.
+	def visitRule_PlainReturnStatement(self, ctx: VHDLParser.Rule_PlainReturnStatementContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_PortClause.
+	def visitRule_PortClause(self, ctx: VHDLParser.Rule_PortClauseContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_PortMapAspect.
+	def visitRule_PortMapAspect(self, ctx: VHDLParser.Rule_PortMapAspectContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_Primary.
+	def visitRule_Primary(self, ctx: VHDLParser.Rule_PrimaryContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_PrivateVariableDeclaration.
+	def visitRule_PrivateVariableDeclaration(self, ctx: VHDLParser.Rule_PrivateVariableDeclarationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_PrivateIncompleteTypeDefinition.
+	def visitRule_PrivateIncompleteTypeDefinition(self, ctx: VHDLParser.Rule_PrivateIncompleteTypeDefinitionContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ProcedureCall.
+	def visitRule_ProcedureCall(self, ctx: VHDLParser.Rule_ProcedureCallContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ProcedureCallStatement.
+	def visitRule_ProcedureCallStatement(self, ctx: VHDLParser.Rule_ProcedureCallStatementContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ProcedureSpecification.
+	def visitRule_ProcedureSpecification(self, ctx: VHDLParser.Rule_ProcedureSpecificationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ProcessDeclarativeItem.
+	def visitRule_ProcessDeclarativeItem(self, ctx: VHDLParser.Rule_ProcessDeclarativeItemContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ProcessSensitivityList.
+	def visitRule_ProcessSensitivityList(self, ctx: VHDLParser.Rule_ProcessSensitivityListContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ProcessStatement.
+	def visitRule_ProcessStatement(self, ctx: VHDLParser.Rule_ProcessStatementContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_PostponedProcessStatement.
+	def visitRule_PostponedProcessStatement(self, ctx: VHDLParser.Rule_PostponedProcessStatementContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ProtectedTypeBody.
+	def visitRule_ProtectedTypeBody(self, ctx: VHDLParser.Rule_ProtectedTypeBodyContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ProtectedTypeBodyDeclarativeItem.
+	def visitRule_ProtectedTypeBodyDeclarativeItem(self, ctx: VHDLParser.Rule_ProtectedTypeBodyDeclarativeItemContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ProtectedTypeDeclaration.
+	def visitRule_ProtectedTypeDeclaration(self, ctx: VHDLParser.Rule_ProtectedTypeDeclarationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ProtectedTypeDeclarativeItem.
+	def visitRule_ProtectedTypeDeclarativeItem(self, ctx: VHDLParser.Rule_ProtectedTypeDeclarativeItemContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ProtectedTypeDefinition.
+	def visitRule_ProtectedTypeDefinition(self, ctx: VHDLParser.Rule_ProtectedTypeDefinitionContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ProtectedTypeInstantiationDefinition.
+	def visitRule_ProtectedTypeInstantiationDefinition(self,
+																										 ctx: VHDLParser.Rule_ProtectedTypeInstantiationDefinitionContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_QualifiedExpression.
+	def visitRule_QualifiedExpression(self, ctx: VHDLParser.Rule_QualifiedExpressionContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_Range.
+	def visitRule_Range(self, ctx: VHDLParser.Rule_RangeContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_RangeConstraint.
+	def visitRule_RangeConstraint(self, ctx: VHDLParser.Rule_RangeConstraintContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_RecordConstraint.
+	def visitRule_RecordConstraint(self, ctx: VHDLParser.Rule_RecordConstraintContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_RecordElementConstraint.
+	def visitRule_RecordElementConstraint(self, ctx: VHDLParser.Rule_RecordElementConstraintContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_RecordElementList.
+	def visitRule_RecordElementList(self, ctx: VHDLParser.Rule_RecordElementListContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_RecordElementResolution.
+	def visitRule_RecordElementResolution(self, ctx: VHDLParser.Rule_RecordElementResolutionContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_RecordResolution.
+	def visitRule_RecordResolution(self, ctx: VHDLParser.Rule_RecordResolutionContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_RecordTypeDefinition.
+	def visitRule_RecordTypeDefinition(self, ctx: VHDLParser.Rule_RecordTypeDefinitionContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_RecordModeViewIndication.
+	def visitRule_RecordModeViewIndication(self, ctx: VHDLParser.Rule_RecordModeViewIndicationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_RelativePathname.
+	def visitRule_RelativePathname(self, ctx: VHDLParser.Rule_RelativePathnameContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ReportStatement.
+	def visitRule_ReportStatement(self, ctx: VHDLParser.Rule_ReportStatementContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ResolutionIndication.
+	def visitRule_ResolutionIndication(self, ctx: VHDLParser.Rule_ResolutionIndicationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ReturnStatement.
+	def visitRule_ReturnStatement(self, ctx: VHDLParser.Rule_ReturnStatementContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ScalarIncompleteTypeDefinition.
+	def visitRule_ScalarIncompleteTypeDefinition(self, ctx: VHDLParser.Rule_ScalarIncompleteTypeDefinitionContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ScalarTypeDefinition.
+	def visitRule_ScalarTypeDefinition(self, ctx: VHDLParser.Rule_ScalarTypeDefinitionContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_SecondaryUnitDeclaration.
+	def visitRule_SecondaryUnitDeclaration(self, ctx: VHDLParser.Rule_SecondaryUnitDeclarationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_SelectedExpressions.
+	def visitRule_SelectedExpressions(self, ctx: VHDLParser.Rule_SelectedExpressionsContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_SelectedForceAssignment.
+	def visitRule_SelectedForceAssignment(self, ctx: VHDLParser.Rule_SelectedForceAssignmentContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_SelectedName2.
+	def visitRule_SelectedName2(self, ctx: VHDLParser.Rule_SelectedName2Context):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_SelectedSignalAssignment.
+	def visitRule_SelectedSignalAssignment(self, ctx: VHDLParser.Rule_SelectedSignalAssignmentContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_SelectedVariableAssignment.
+	def visitRule_SelectedVariableAssignment(self, ctx: VHDLParser.Rule_SelectedVariableAssignmentContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_SelectedWaveformAssignment.
+	def visitRule_SelectedWaveformAssignment(self, ctx: VHDLParser.Rule_SelectedWaveformAssignmentContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_SelectedWaveforms.
+	def visitRule_SelectedWaveforms(self, ctx: VHDLParser.Rule_SelectedWaveformsContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_SensitivityClause.
+	def visitRule_SensitivityClause(self, ctx: VHDLParser.Rule_SensitivityClauseContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_SensitivityList.
+	def visitRule_SensitivityList(self, ctx: VHDLParser.Rule_SensitivityListContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_SequentialBlockStatement.
+	def visitRule_SequentialBlockStatement(self, ctx: VHDLParser.Rule_SequentialBlockStatementContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_SequentialStatement.
+	def visitRule_SequentialStatement(self, ctx: VHDLParser.Rule_SequentialStatementContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_SignalAssignmentStatement.
+	def visitRule_SignalAssignmentStatement(self, ctx: VHDLParser.Rule_SignalAssignmentStatementContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_SignalDeclaration.
+	def visitRule_SignalDeclaration(self, ctx: VHDLParser.Rule_SignalDeclarationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_SignalList.
+	def visitRule_SignalList(self, ctx: VHDLParser.Rule_SignalListContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_Signature.
+	def visitRule_Signature(self, ctx: VHDLParser.Rule_SignatureContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_SimpleConfigurationSpecification.
+	def visitRule_SimpleConfigurationSpecification(self, ctx: VHDLParser.Rule_SimpleConfigurationSpecificationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_SimpleForceAssignment.
+	def visitRule_SimpleForceAssignment(self, ctx: VHDLParser.Rule_SimpleForceAssignmentContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_SimpleModeIndication.
+	def visitRule_SimpleModeIndication(self, ctx: VHDLParser.Rule_SimpleModeIndicationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_SimpleRange.
+	def visitRule_SimpleRange(self, ctx: VHDLParser.Rule_SimpleRangeContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_SimpleReleaseAssignment.
+	def visitRule_SimpleReleaseAssignment(self, ctx: VHDLParser.Rule_SimpleReleaseAssignmentContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_SimpleSignalAssignment.
+	def visitRule_SimpleSignalAssignment(self, ctx: VHDLParser.Rule_SimpleSignalAssignmentContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_SimpleWaveformAssignment.
+	def visitRule_SimpleWaveformAssignment(self, ctx: VHDLParser.Rule_SimpleWaveformAssignmentContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_SimpleVariableAssignment.
+	def visitRule_SimpleVariableAssignment(self, ctx: VHDLParser.Rule_SimpleVariableAssignmentContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_SubprogramBody.
+	def visitRule_SubprogramBody(self, ctx: VHDLParser.Rule_SubprogramBodyContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_SubprogramDeclaration.
+	def visitRule_SubprogramDeclaration(self, ctx: VHDLParser.Rule_SubprogramDeclarationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_SubprogramDeclarativeItem.
+	def visitRule_SubprogramDeclarativeItem(self, ctx: VHDLParser.Rule_SubprogramDeclarativeItemContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_SubprogramInstantiationDeclaration.
+	def visitRule_SubprogramInstantiationDeclaration(self,
+																									 ctx: VHDLParser.Rule_SubprogramInstantiationDeclarationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_SubprogramKind.
+	def visitRule_SubprogramKind(self, ctx: VHDLParser.Rule_SubprogramKindContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_SubprogramSpecification.
+	def visitRule_SubprogramSpecification(self, ctx: VHDLParser.Rule_SubprogramSpecificationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_SubtypeDeclaration.
+	def visitRule_SubtypeDeclaration(self, ctx: VHDLParser.Rule_SubtypeDeclarationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_SubtypeIndication.
+	def visitRule_SubtypeIndication(self, ctx: VHDLParser.Rule_SubtypeIndicationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_Suffix.
+	def visitRule_Suffix(self, ctx: VHDLParser.Rule_SuffixContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_Target.
+	def visitRule_Target(self, ctx: VHDLParser.Rule_TargetContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_TimeoutClause.
+	def visitRule_TimeoutClause(self, ctx: VHDLParser.Rule_TimeoutClauseContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_TypeConversion.
+	def visitRule_TypeConversion(self, ctx: VHDLParser.Rule_TypeConversionContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_TypeDeclaration.
+	def visitRule_TypeDeclaration(self, ctx: VHDLParser.Rule_TypeDeclarationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_TypeDefinition.
+	def visitRule_TypeDefinition(self, ctx: VHDLParser.Rule_TypeDefinitionContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_UnboundArrayDefinition.
+	def visitRule_UnboundArrayDefinition(self, ctx: VHDLParser.Rule_UnboundArrayDefinitionContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_UnspecifiedTypeIndication.
+	def visitRule_UnspecifiedTypeIndication(self, ctx: VHDLParser.Rule_UnspecifiedTypeIndicationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_UseClause.
+	def visitRule_UseClause(self, ctx: VHDLParser.Rule_UseClauseContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_ValueReturnStatement.
+	def visitRule_ValueReturnStatement(self, ctx: VHDLParser.Rule_ValueReturnStatementContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_VariableAssignmentStatement.
+	def visitRule_VariableAssignmentStatement(self, ctx: VHDLParser.Rule_VariableAssignmentStatementContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_VariableDeclaration.
+	def visitRule_VariableDeclaration(self, ctx: VHDLParser.Rule_VariableDeclarationContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_WaitStatement.
+	def visitRule_WaitStatement(self, ctx: VHDLParser.Rule_WaitStatementContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_Waveform.
+	def visitRule_Waveform(self, ctx: VHDLParser.Rule_WaveformContext):
+		return self.visitChildren(ctx)
+
+	# Visit a parse tree produced by VHDLParser#rule_WaveformElement.
+	def visitRule_WaveformElement(self, ctx: VHDLParser.Rule_WaveformElementContext):
+		return self.visitChildren(ctx)
+
+del VHDLParser
+
+ + diff --git a/typing/html/pyVHDLParser/ANTLR4/Visitor.py.html b/typing/html/pyVHDLParser/ANTLR4/Visitor.py.html new file mode 100644 index 000000000..f69dfeae6 --- /dev/null +++ b/typing/html/pyVHDLParser/ANTLR4/Visitor.py.html @@ -0,0 +1,422 @@ + + + + + + +

pyVHDLParser.ANTLR4.Visitor

+ + + + + + +
pyVHDLParser/ANTLR4/Visitor.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+
from pyVHDLModel import DesignUnit
+from pyVHDLModel.Base import Mode
+from pyVHDLModel.Symbol import PackageSymbol
+from .VHDLLexer import VHDLLexer
+
+from ..LanguageModel.DesignUnit import Context, Entity, Architecture, Configuration, Package, PackageBody
+from ..LanguageModel.Reference import LibraryClause, UseClause, ContextReference
+from ..LanguageModel.InterfaceItem import GenericConstantInterfaceItem, GenericTypeInterfaceItem, \
+	GenericPackageInterfaceItem, GenericFunctionInterfaceItem, GenericProcedureInterfaceItem, PortSignalInterfaceItem
+from ..LanguageModel.Expression import AndExpression
+
+from .VHDLParser import *
+from .VHDLParserVisitor import VHDLParserVisitor
+
+
+class VHDLVisitor(VHDLParserVisitor):
+	@staticmethod
+	def checkRepeatedName(name1: Token, name2: Token, languageEntity: str):
+		nameText: str = name1.text
+		if name2 is not None:
+			name2Text: str = name2.text
+			if nameText.lower() != name2Text.lower():
+				raise Exception(f"Repeated {languageEntity} name '{name2Text}' must match {languageEntity} name '{nameText}'.")
+
+		return nameText
+
+	def visitRule_DesignFile(self, ctx: VHDLParser.Rule_DesignFileContext):
+		return [self.visit(designUnit) for designUnit in ctx.designUnits]
+
+	def visitRule_LibraryClause(self, ctx: VHDLParser.Rule_LibraryClauseContext):
+		names = [name.text for name in ctx.names]
+
+		return LibraryClause(names)
+
+	def visitRule_UseClause(self, ctx:VHDLParser.Rule_UseClauseContext):
+		names = [self.visit(name) for name in ctx.names]
+
+		return UseClause(names)
+
+	def visitRule_SelectedName2(self, ctx:VHDLParser.Rule_SelectedName2Context):
+		# TODO: needs to return a proper 'Name'
+		return ctx.getText()
+
+	def visitRule_DesignUnit(self, ctx: VHDLParser.Rule_DesignUnitContext):
+		# translate the design unit itself
+		libraryUnit: DesignUnit = self.visit(ctx.libraryUnit)
+
+		# check if there are context items and add them to the design unit
+		for contextItem in ctx.contextItems:
+			ctxItem = self.visit(contextItem)
+			libraryUnit.ContextItems.append(ctxItem)
+
+			if isinstance(ctxItem, LibraryClause):
+				libraryUnit.LibraryReferences.append(ctxItem)
+			elif isinstance(ctxItem, UseClause):
+				libraryUnit.LibraryReferences.append(ctxItem)
+			#elif isinstance(contextItem, ContextClause):
+			#	libraryUnit.LibraryReferences.append(contextItem)
+
+		return libraryUnit
+
+	# def visitRule_ContextDeclaration(self, ctx: VHDLParser.Rule_ContextDeclarationContext):
+
+	def visitRule_EntityDeclaration(self, ctx: VHDLParser.Rule_EntityDeclarationContext):
+		entityName = self.checkRepeatedName(ctx.name, ctx.name2, "entity")
+
+		generics = self.visit(ctx.genericClause) if ctx.genericClause is not None else []
+		ports = self.visit(ctx.portClause) if ctx.portClause is not None else []
+
+		entity = Entity(identifier=entityName, genericItems=generics, portItems=ports)
+		entity.docstring = self.getDocString(ctx)
+		return entity
+
+	def getDocString(self, ctx):
+		start = ctx.start
+		ts = ctx.parser.getTokenStream()
+		i = 1
+		r = []
+		while i <= start.tokenIndex:
+			t: Token = ts.get(start.tokenIndex-i)
+			if t.channel == VHDLLexer.COMMENT_CHANNEL:
+				r.append(t.text)
+			elif t.channel != VHDLLexer.WHITESPACE_CHANNEL:
+				break
+			i += 1
+		return tuple(reversed(r))
+
+
+	def visitRule_Architecture(self, ctx:VHDLParser.Rule_ArchitectureContext):
+		architectureName = self.checkRepeatedName(ctx.name, ctx.name2, "architecture")
+		entityName: str = ctx.entityName.text  # TODO: needs a Name
+
+		context = []
+		declaredItems = []
+		statements = []
+
+		return Architecture(architectureName, entityName, context, declaredItems, statements)
+
+	def visitRule_ConfigurationDeclaration(self, ctx:VHDLParser.Rule_ConfigurationDeclarationContext):
+		configurationName = self.checkRepeatedName(ctx.name, ctx.name2, "configuration")
+		entityName: str = ctx.entityName.getText
+
+		context = []
+
+		return Configuration(configurationName, context)
+
+	def visitRule_PackageDeclaration(self, ctx:VHDLParser.Rule_PackageDeclarationContext):
+		packageName = self.checkRepeatedName(ctx.name, ctx.name2, "package")
+
+		return Package(packageName)
+
+	def visitRule_PackageBody(self, ctx:VHDLParser.Rule_PackageBodyContext):
+		packageName = self.checkRepeatedName(ctx.name, ctx.name2, "package body")
+		packageSymbol = PackageSymbol(packageName)
+
+		return PackageBody(packageSymbol)
+
+	def visitRule_GenericClause(self, ctx: VHDLParser.Rule_GenericClauseContext):
+		generics = []
+		for element in ctx.elements:
+			const = self.visit(element)
+			generics.append(const)
+
+		return generics
+
+	def visitRule_InterfaceConstantDeclaration(self, ctx: VHDLParser.Rule_InterfaceConstantDeclarationContext):
+		constantNames = self.visit(ctx.constantNames)
+		if ctx.modeName is not None:
+			mode = Mode(ctx.modeName.text)
+		else:
+			mode = Mode.Default
+
+		subtypeIndication = self.visit(ctx.subtypeIndication)
+		defaultExpression = self.visit(ctx.defaultValue) if ctx.defaultValue is not None else None
+
+		return GenericConstantInterfaceItem(constantNames, mode, subtypeIndication, defaultExpression)
+
+	def visitRule_PortClause(self, ctx: VHDLParser.Rule_PortClauseContext):
+		return [self.visit(port) for port in ctx.ports]
+
+	def visitRule_InterfacePortDeclaration(self, ctx:VHDLParser.Rule_InterfaceSignalDeclarationContext):
+		signalNames = self.visit(ctx.names)
+		if ctx.modeName is not None:
+			modeToken:Token = ctx.modeName.name
+			modeType = modeToken.type
+
+			if modeType == VHDLParser.KW_IN:
+				mode = Mode.In
+			elif modeType == VHDLParser.KW_OUT:
+				mode = Mode.Out
+			elif modeType == VHDLParser.KW_INOUT:
+				mode = Mode.InOut
+			elif modeType == VHDLParser.KW_BUFFER:
+				mode = Mode.Buffer
+			elif modeType == VHDLParser.KW_LINKAGE:
+				mode = Mode.Linkage
+			else:
+				raise Exception()
+		else:
+			mode = Mode.Default
+
+		subtype = None
+		defaultExpression = None
+
+		return PortSignalInterfaceItem(signalNames, mode, subtype, defaultExpression)
+
+	def visitRule_IdentifierList(self, ctx: VHDLParser.Rule_IdentifierListContext):
+		return [identifier.text for identifier in ctx.identifiers]
+
+ + diff --git a/typing/html/pyVHDLParser/ANTLR4/__init__.py.html b/typing/html/pyVHDLParser/ANTLR4/__init__.py.html new file mode 100644 index 000000000..0feb7dfcb --- /dev/null +++ b/typing/html/pyVHDLParser/ANTLR4/__init__.py.html @@ -0,0 +1,575 @@ + + + + + + +

pyVHDLParser.ANTLR4

+ + + + + + +
pyVHDLParser/ANTLR4/__init__.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+
from typing import Dict, List
+
+from antlr4 import CommonTokenStream, Token as antlrToken
+
+from .. import SourceCodePosition
+from ..Token import Token, StartOfDocumentToken, EndOfDocumentToken, FusedCharacterToken, IntegerLiteralToken, \
+	IndentationToken, LinebreakToken, SpaceToken, SingleLineCommentToken, MultiLineCommentToken, CharacterToken, \
+	StringLiteralToken, BitStringLiteralToken
+from ..Token.Keywords import *
+
+from .VHDLLexer import VHDLLexer
+
+
+class ANTLR2Token:
+	TRANSLATE: Dict[int, type(KeywordToken)] = {
+		VHDLLexer.OP_ABS: AbsOperator,
+		# VHDLLexer.KW_ACROSS: AcrossKeyword,
+		VHDLLexer.KW_ACCESS: AccessKeyword,
+		VHDLLexer.KW_AFTER: AfterKeyword,
+		VHDLLexer.KW_ALIAS: AliasKeyword,
+		VHDLLexer.KW_ALL: AllKeyword,
+		VHDLLexer.OP_AND: AndOperator,
+		VHDLLexer.KW_ARCHITECTURE: ArchitectureKeyword,
+		VHDLLexer.KW_ARRAY: ArrayKeyword,
+		VHDLLexer.KW_ASSERT: AssertKeyword,
+		VHDLLexer.KW_ATTRIBUTE: AttributeKeyword,
+		# VHDLLexer.KW_PSL_ASSUME: AssumeKeyword,
+		# VHDLLexer.KW_AMS_ACROSS: AcrossKeyword,
+		VHDLLexer.KW_BEGIN: BeginKeyword,
+		VHDLLexer.KW_BLOCK: BlockKeyword,
+		VHDLLexer.KW_BODY: BodyKeyword,
+		VHDLLexer.KW_BUFFER: BufferKeyword,
+		VHDLLexer.KW_BUS: BusKeyword,
+		# VHDLLexer.KW_BREAK: BreakKeyword,
+		VHDLLexer.KW_CASE: CaseKeyword,
+		VHDLLexer.KW_COMPONENT: ComponentKeyword,
+		VHDLLexer.KW_CONFIGURATION: ConfigurationKeyword,
+		VHDLLexer.KW_CONSTANT: ConstantKeyword,
+		VHDLLexer.KW_CONTEXT: ContextKeyword,
+		# VHDLLexer.KW_PSL_COVER: CoverKeyword,
+		VHDLLexer.KW_DEFAULT: DefaultKeyword,
+		VHDLLexer.KW_DISCONNECT: DisconnectKeyword,
+		VHDLLexer.KW_DOWNTO: DowntoKeyword,
+		VHDLLexer.KW_ELSE: ElseKeyword,
+		VHDLLexer.KW_ELSIF: ElsIfKeyword,
+		VHDLLexer.KW_END: EndKeyword,
+		VHDLLexer.KW_ENTITY: EntityKeyword,
+		VHDLLexer.KW_EXIT: ExitKeyword,
+		VHDLLexer.KW_FILE: FileKeyword,
+		VHDLLexer.KW_FOR: ForKeyword,
+		VHDLLexer.KW_FORCE: ForceKeyword,
+		VHDLLexer.KW_FUNCTION: FunctionKeyword,
+		VHDLLexer.KW_GENERATE: GenerateKeyword,
+		VHDLLexer.KW_GENERIC: GenericKeyword,
+		# VHDLLexer.KW_GROUP: GroupKeyword,
+		VHDLLexer.KW_GUARDED: GuardedKeyword,
+		VHDLLexer.KW_IF: IfKeyword,
+		VHDLLexer.KW_IMPURE: ImpureKeyword,
+		VHDLLexer.KW_IN: InKeyword,
+		VHDLLexer.KW_INERTIAL: InertialKeyword,
+		VHDLLexer.KW_INOUT: InoutKeyword,
+		VHDLLexer.KW_IS: IsKeyword,
+		VHDLLexer.KW_LABEL: LabelKeyword,
+		VHDLLexer.KW_LIBRARY: LibraryKeyword,
+		VHDLLexer.KW_LINKAGE: LinkageKeyword,
+		VHDLLexer.KW_LOOP: LoopKeyword,
+		VHDLLexer.KW_PSL_LITERAL: LiteralKeyword,
+		# VHDLLexer.KW_LIMIT: LimitKeyword,
+		VHDLLexer.KW_MAP: MapKeyword,
+		VHDLLexer.OP_MOD: ModuloOperator,
+		VHDLLexer.OP_NAND: NandOperator,
+		VHDLLexer.KW_NEW: NewKeyword,
+		VHDLLexer.KW_NEXT: NextKeyword,
+		VHDLLexer.OP_NOR: NorOperator,
+		VHDLLexer.OP_NOT: NotOperator,
+		VHDLLexer.KW_NULL: NullKeyword,
+		# VHDLLexer.KW_NATURE: NatureKeyword,
+		# VHDLLexer.KW_NOISE: NoiseKeyword,
+		VHDLLexer.KW_OF: OfKeyword,
+		VHDLLexer.KW_ON: OnKeyword,
+		VHDLLexer.KW_OPEN: OpenKeyword,
+		VHDLLexer.OP_OR: OrOperator,
+		VHDLLexer.KW_OTHERS: OthersKeyword,
+		VHDLLexer.KW_OUT: OutKeyword,
+		VHDLLexer.KW_PACKAGE: PackageKeyword,
+		VHDLLexer.KW_PARAMETER: ParameterKeyword,
+		VHDLLexer.KW_PORT: PortKeyword,
+		VHDLLexer.KW_POSTPONED: PostponedKeyword,
+		VHDLLexer.KW_PRIVATE: PrivateKeyword,
+		VHDLLexer.KW_PROCEDURE: ProcedureKeyword,
+		VHDLLexer.KW_PROCESS: ProcessKeyword,
+		VHDLLexer.KW_PROTECTED: ProtectedKeyword,
+		VHDLLexer.KW_PURE: PureKeyword,
+		# VHDLLexer.KW_PROCEDURAL: ProceduralKeyword,
+		# VHDLLexer.KW_QUANTITY: 'quantityKeyword,
+		VHDLLexer.KW_RANGE: RangeKeyword,
+		VHDLLexer.KW_RECORD: RecordKeyword,
+		VHDLLexer.KW_REGISTER: RegisterKeyword,
+		VHDLLexer.KW_REJECT: RejectKeyword,
+		VHDLLexer.KW_RELEASE: ReleaseKeyword,
+		VHDLLexer.OP_REM: RemainderOperator,
+		VHDLLexer.KW_REPORT: ReportKeyword,
+		VHDLLexer.KW_RETURN: ReturnKeyword,
+		VHDLLexer.OP_ROL: RolOperator,
+		VHDLLexer.OP_ROR: RorOperator,
+		# VHDLLexer.KW_PSL_RESTRICT: RestrictKeyword,
+		# VHDLLexer.KW_REFERENCE: ReferenceKeyword,
+		VHDLLexer.KW_SELECT: SelectKeyword,
+		VHDLLexer.KW_SEVERITY: SeverityKeyword,
+		VHDLLexer.KW_SHARED: SharedKeyword,
+		VHDLLexer.KW_SIGNAL: SignalKeyword,
+		VHDLLexer.OP_SLA: SlaOperator,
+		VHDLLexer.OP_SLL: SllOperator,
+		VHDLLexer.OP_SRA: SraOperator,
+		VHDLLexer.OP_SRL: SrlOperator,
+		VHDLLexer.KW_SUBTYPE: SubtypeKeyword,
+		# VHDLLexer.KW_PSL_STRONG: StrongKeyword,
+		# VHDLLexer.KW_PSL_SEQUENCE: SequenceKeyword,
+		# VHDLLexer.KW_SPECTRUM: SpectrumKeyword,
+		# VHDLLexer.KW_SUBNATURE: SubnatureKeyword,
+		VHDLLexer.KW_THEN: ThenKeyword,
+		VHDLLexer.KW_TO: ToKeyword,
+		VHDLLexer.KW_TRANSPORT: TransportKeyword,
+		VHDLLexer.KW_TYPE: TypeKeyword,
+		# VHDLLexer.KW_TERMINAL: TerminalKeyword,
+		# VHDLLexer.KW_THROUGH: ThroughKeyword,
+		# VHDLLexer.KW_TOLERANCE: ToleranceKeyword,
+		VHDLLexer.KW_UNAFFECTED: UnaffectedKeyword,
+		VHDLLexer.KW_UNITS: UnitsKeyword,
+		VHDLLexer.KW_UNTIL: UntilKeyword,
+		VHDLLexer.KW_USE: UseKeyword,
+		VHDLLexer.KW_VARIABLE: VariableKeyword,
+		VHDLLexer.KW_VIEW: ViewKeyword,
+		# VHDLLexer.KW_PSL_VMODE: VModeKeyword,
+		# VHDLLexer.KW_PSL_VPKG: VPackageKeyword,
+		# VHDLLexer.KW_PSL_VPROP: VPropertyKeyword,,
+		# VHDLLexer.KW_PSL_VUNIT: VunitKeyword,
+		VHDLLexer.KW_WAIT: WaitKeyword,
+		VHDLLexer.KW_WITH: WithKeyword,
+		VHDLLexer.KW_WHEN: WhenKeyword,
+		VHDLLexer.KW_WHILE: WhileKeyword,
+		VHDLLexer.OP_XNOR: XnorOperator,
+		VHDLLexer.OP_XOR: XorOperator,
+	}
+
+	def ConvertToTokenChain(self, tokenStream: CommonTokenStream) -> List[Token]:
+		allTokens: List[Token] = []
+		tokenIndex: int = -1
+
+		lastToken = StartOfDocumentToken()
+		while True:
+			allTokens.append(lastToken)
+			tokenIndex += 1
+
+			aToken: antlrToken = tokenStream.get(tokenIndex)
+			start = SourceCodePosition(aToken.line, aToken.column, -1)
+
+			if aToken.type == antlrToken.EOF:
+				allTokens.append(EndOfDocumentToken(lastToken, start))
+				return allTokens
+
+			try:
+				tokenType = self.TRANSLATE[aToken.type]
+				lastToken = tokenType(lastToken, aToken.text, start)
+				continue
+
+			except KeyError:
+				pass
+
+			if aToken.type in (
+				VHDLLexer.TOK_SEMICOL, VHDLLexer.TOK_COMMA, VHDLLexer.TOK_COLON, VHDLLexer.TOK_DOT, VHDLLexer.TOK_LP,
+				VHDLLexer.TOK_RP, VHDLLexer.TOK_LB, VHDLLexer.TOK_RB, VHDLLexer.OP_MINUS, VHDLLexer.OP_PLUS, VHDLLexer.OP_MUL,
+				VHDLLexer.OP_DIV, VHDLLexer.TOK_BAR, VHDLLexer.TOK_TICK, VHDLLexer.OP_CONCAT, VHDLLexer.OP_CONDITION):
+				lastToken = CharacterToken(lastToken, aToken.text, start)
+			elif aToken.type in (
+				VHDLLexer.TOK_SIG_ASSIGN, VHDLLexer.TOK_VAR_ASSIGN, VHDLLexer.TOK_BOX, VHDLLexer.OP_POW, VHDLLexer.OP_EQ,
+				VHDLLexer.OP_NE, VHDLLexer.OP_LT, VHDLLexer.OP_LT, VHDLLexer.OP_GT, VHDLLexer.OP_GE, VHDLLexer.OP_IEQ,
+				VHDLLexer.OP_INE, VHDLLexer.OP_ILT, VHDLLexer.OP_ILE, VHDLLexer.OP_IGT, VHDLLexer.OP_IGE, VHDLLexer.TOK_RARROW):
+				lastToken = FusedCharacterToken(lastToken, aToken.text, start, start)
+			elif aToken.type == VHDLLexer.LIT_IDENTIFIER:
+				lastToken = IdentifierToken(lastToken, aToken.text, start)
+			elif aToken.type == VHDLLexer.LIT_ABSTRACT:
+				lastToken = IntegerLiteralToken(lastToken, aToken.text, start)
+			elif aToken.type == VHDLLexer.LIT_CHARACTER:
+				lastToken = CharacterToken(lastToken, aToken.text, start)
+			elif aToken.type == VHDLLexer.LIT_STRING:
+				lastToken = StringLiteralToken(lastToken, aToken.text, start, start)
+			elif aToken.type == VHDLLexer.LIT_BIT_STRING:
+				lastToken = BitStringLiteralToken(lastToken, aToken.text, start, start)
+			elif aToken.type == VHDLLexer.WHITESPACE:
+				tokenType = IndentationToken if isinstance(lastToken, LinebreakToken) else SpaceToken
+				lastToken = tokenType(lastToken, aToken.text, start)
+			elif aToken.type == VHDLLexer.LINEBREAK:
+				lastToken = LinebreakToken(lastToken, aToken.text, start)
+			elif aToken.type == VHDLLexer.COMMENT_LINE:
+				lastToken = SingleLineCommentToken(lastToken, aToken.text, start)
+			elif aToken.type == VHDLLexer.COMMENT_BLOCK:
+				lastToken = MultiLineCommentToken(lastToken, aToken.text, start)
+			else:
+				raise Exception(
+					f"Unknown ANTLR4 token type '{VHDLLexer.symbolicNames[aToken.type]}' ({aToken.type}) with value '{aToken.text}'.")
+
+ + diff --git a/typing/html/pyVHDLParser/Base.py.html b/typing/html/pyVHDLParser/Base.py.html new file mode 100644 index 000000000..fcb4957f7 --- /dev/null +++ b/typing/html/pyVHDLParser/Base.py.html @@ -0,0 +1,106 @@ + + + + + + +

pyVHDLParser.Base

+ + + + + + +
pyVHDLParser/Base.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators import export
+
+
+@export
+class ExceptionBase(Exception):
+	def __init__(self, message: str):
+		self._message = message
+
+	def __str__(self) -> str:
+		return self._message
+
+
+@export
+class ParserException(ExceptionBase):
+	pass
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/Assignment/SignalAssignment.py.html b/typing/html/pyVHDLParser/Blocks/Assignment/SignalAssignment.py.html new file mode 100644 index 000000000..b79528635 --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/Assignment/SignalAssignment.py.html @@ -0,0 +1,440 @@ + + + + + + +

pyVHDLParser.Blocks.Assignment.SignalAssignment

+ + + + + + +
pyVHDLParser/Blocks/Assignment/SignalAssignment.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators              import export
+
+from pyVHDLParser.Token                import CharacterToken, SpaceToken, WordToken, LinebreakToken
+from pyVHDLParser.Token.Keywords       import BoundaryToken, IdentifierToken, EndToken
+from pyVHDLParser.Blocks               import BlockParserException, Block, TokenToBlockParser
+from pyVHDLParser.Blocks.Common        import LinebreakBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Comment       import SingleLineCommentBlock, MultiLineCommentBlock
+
+
+@export
+class SignalAssignmentBlock(Block):
+	@classmethod
+	def stateSignalAssignmentKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected whitespace after keyword SignalAssignment."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewBlock =    SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				_ =                       LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateWhitespace1
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected signalAssignment name (identifier)."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				if not isinstance(parserState.LastBlock, MultiLineCommentBlock):
+					parserState.NewBlock =  SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+					_ =                     LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				else:
+					parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateSignalAssignmentName
+			return
+		elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateSignalAssignmentName(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected ';' after signalAssignment name."
+		if isinstance(token, CharacterToken):
+			if token == ";":
+				parserState.NewToken =    EndToken(fromExistingToken=token)
+				parserState.NewBlock =    SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+				parserState.Pop()
+				return
+			elif token == "\n":
+				parserState.NewBlock =    SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				_ =                       LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace2
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace2
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace2
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NextState =     cls.stateWhitespace2
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhitespace2(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected ';'."
+		if isinstance(token, CharacterToken):
+			if token == ";":
+				parserState.NewToken =    EndToken(fromExistingToken=token)
+				parserState.NewBlock =    SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+				parserState.Pop()
+				return
+			elif token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				if not isinstance(parserState.LastBlock, MultiLineCommentBlock):
+					parserState.NewBlock =  SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+					_ =                     LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				else:
+					parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/Assignment/VariableAssignment.py.html b/typing/html/pyVHDLParser/Blocks/Assignment/VariableAssignment.py.html new file mode 100644 index 000000000..4ae77df24 --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/Assignment/VariableAssignment.py.html @@ -0,0 +1,440 @@ + + + + + + +

pyVHDLParser.Blocks.Assignment.VariableAssignment

+ + + + + + +
pyVHDLParser/Blocks/Assignment/VariableAssignment.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators              import export
+
+from pyVHDLParser.Token                import CharacterToken, SpaceToken, WordToken, LinebreakToken
+from pyVHDLParser.Token.Keywords       import BoundaryToken, IdentifierToken, EndToken
+from pyVHDLParser.Blocks               import BlockParserException, Block, TokenToBlockParser
+from pyVHDLParser.Blocks.Common        import LinebreakBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Comment       import SingleLineCommentBlock, MultiLineCommentBlock
+
+
+@export
+class SignalAssignmentBlock(Block):
+	@classmethod
+	def stateSignalAssignmentKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected whitespace after keyword SignalAssignment."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewBlock =    SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				_ =                       LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateWhitespace1
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected signalAssignment name (identifier)."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				if not isinstance(parserState.LastBlock, MultiLineCommentBlock):
+					parserState.NewBlock =  SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+					_ =                     LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				else:
+					parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateSignalAssignmentName
+			return
+		elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateSignalAssignmentName(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected ';' after signalAssignment name."
+		if isinstance(token, CharacterToken):
+			if token == ";":
+				parserState.NewToken =    EndToken(fromExistingToken=token)
+				parserState.NewBlock =    SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+				parserState.Pop()
+				return
+			elif token == "\n":
+				parserState.NewBlock =    SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				_ =                       LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace2
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace2
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace2
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NextState =     cls.stateWhitespace2
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhitespace2(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected ';'."
+		if isinstance(token, CharacterToken):
+			if token == ";":
+				parserState.NewToken =    EndToken(fromExistingToken=token)
+				parserState.NewBlock =    SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+				parserState.Pop()
+				return
+			elif token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				if not isinstance(parserState.LastBlock, MultiLineCommentBlock):
+					parserState.NewBlock =  SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+					_ =                     LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				else:
+					parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    SignalAssignmentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/Assignment/__init__.py.html b/typing/html/pyVHDLParser/Blocks/Assignment/__init__.py.html new file mode 100644 index 000000000..9eef38e11 --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/Assignment/__init__.py.html @@ -0,0 +1,74 @@ + + + + + + +

pyVHDLParser.Blocks.Assignment

+ + + + + + +
pyVHDLParser/Blocks/Assignment/__init__.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/Attribute/AttributeDeclaration.py.html b/typing/html/pyVHDLParser/Blocks/Attribute/AttributeDeclaration.py.html new file mode 100644 index 000000000..ee640a158 --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/Attribute/AttributeDeclaration.py.html @@ -0,0 +1,1043 @@ + + + + + + +

pyVHDLParser.Blocks.Attribute.AttributeDeclaration

+ + + + + + +
pyVHDLParser/Blocks/Attribute/AttributeDeclaration.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+380
+381
+382
+383
+384
+385
+386
+387
+388
+389
+390
+391
+392
+393
+394
+395
+396
+397
+398
+399
+400
+401
+402
+403
+404
+405
+406
+407
+408
+409
+410
+411
+412
+413
+414
+415
+416
+417
+418
+419
+420
+421
+422
+423
+424
+425
+426
+427
+428
+429
+430
+431
+432
+433
+434
+435
+436
+437
+438
+439
+440
+441
+442
+443
+444
+445
+446
+447
+448
+449
+450
+451
+452
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators         import export
+
+from pyVHDLParser.Token           import CharacterToken, LinebreakToken, SpaceToken, WordToken
+from pyVHDLParser.Token.Keywords  import BoundaryToken, IdentifierToken, VariableAssignmentKeyword, EndToken
+from pyVHDLParser.Blocks          import Block, TokenToBlockParser
+from pyVHDLParser.Blocks.Comment  import SingleLineCommentBlock, MultiLineCommentBlock
+from pyVHDLParser.Blocks.Common   import LinebreakBlock, WhitespaceBlock
+
+
+@export
+class AttributeDeclarationBlock(Block):
+	@classmethod
+	def stateAttributeDeclarationKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected whitespace after keyword ATTRIBUTE."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewBlock =    AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				_ =                       LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateWhitespace1
+			return
+
+		raise TokenParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected attribute name (identifier)."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				if not isinstance(parserState.LastBlock, MultiLineCommentBlock):
+					parserState.NewBlock =  AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True)
+					_ =                     LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				else:
+					parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateAttributeDeclarationName
+			return
+		elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise TokenParserException(errorMessage, token)
+
+	@classmethod
+	def stateAttributeDeclarationName(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected ';' after library name."
+		if isinstance(token, CharacterToken):
+			if token == ":":
+				parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+				parserState.NextState =   cls.stateColon1
+				return
+			elif token == "\n":
+				parserState.NewBlock =    AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				_ =                       LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace2
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace2
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace2
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NextState =     cls.stateWhitespace2
+			return
+
+		raise TokenParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhitespace2(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected attribute name (identifier)."
+		if isinstance(token, CharacterToken):
+			if token == ":":
+				parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+				parserState.NextState =   cls.stateColon1
+				return
+			if token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				if not isinstance(parserState.LastBlock, MultiLineCommentBlock):
+					parserState.NewBlock =  AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True)
+					_ =                     LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				else:
+					parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, WordToken):
+			parserState.NewToken = IdentifierToken(fromExistingToken=token)
+			parserState.NextState = cls.stateColon1()
+			return
+		elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise TokenParserException(errorMessage, token)
+
+	@classmethod
+	def stateColon1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected type mark or whitespace after ':'."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewBlock =    AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				_ =                       LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace3
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace3
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace3
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateWhitespace3
+			return
+		elif isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateTypeMarkName
+			return
+
+		raise TokenParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhitespace3(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected type mark (identifier)."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				if not isinstance(parserState.LastBlock, MultiLineCommentBlock):
+					parserState.NewBlock =  AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True)
+					_ =                     LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				else:
+					parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, WordToken):
+			parserState.NewToken = IdentifierToken(fromExistingToken=token)
+			parserState.NextState = cls.stateTypeMarkName
+			return
+		elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise TokenParserException(errorMessage, token)
+
+	@classmethod
+	def stateTypeMarkName(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected ':=' or whitespace after type mark."
+		if isinstance(token, CharacterToken):
+			if token == ":":
+				parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+				parserState.NextState =   cls.statePossibleVariableAssignment
+				return
+			elif token == "\n":
+				parserState.NewBlock =    AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				_ =                       LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace4
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace4
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace4
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NextState =     cls.stateWhitespace4
+			return
+
+		raise TokenParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhitespace4(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected ':=' after type mark."
+		if isinstance(token, CharacterToken):
+			if token == ":":
+				parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+				parserState.NextState =   cls.statePossibleVariableAssignment
+				return
+			elif token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				if not isinstance(parserState.LastBlock, MultiLineCommentBlock):
+					parserState.NewBlock =  AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True)
+					_ =                     LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				else:
+					parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise TokenParserException(errorMessage, token)
+
+	@classmethod
+	def statePossibleVariableAssignment(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken) and (token == "="):
+			parserState.NewToken =      VariableAssignmentKeyword(parserState.TokenMarker)
+			parserState.TokenMarker =   parserState.NewToken
+			parserState.NextState =     cls.stateVariableAssignment
+			return
+
+		raise NotImplementedError("State=PossibleCommentStart: {0!r}".format(token))
+
+	@classmethod
+	def stateVariableAssignment(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected ':=' or whitespace after attributeDeclaration mark."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewBlock =    AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				_ =                       LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace5
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState = cls.stateWhitespace5
+				parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock = AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState = cls.stateWhitespace5
+				parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NextState = cls.stateWhitespace5
+			return
+
+		raise TokenParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhitespace5(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected expression after ':='."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				if not isinstance(parserState.LastBlock, MultiLineCommentBlock):
+					parserState.NewBlock =  AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True)
+					_ =                     LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				else:
+					parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, WordToken):
+			parserState.NextState = cls.stateExpressionEnd
+			return
+		elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise TokenParserException(errorMessage, token)
+
+	@classmethod
+	def stateExpressionEnd(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected ';'."
+		if isinstance(token, CharacterToken):
+			if token == ";":
+				parserState.NewToken =    EndToken(fromExistingToken=token)
+				parserState.NewBlock =    AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+				parserState.Pop()
+				return
+			elif token == "-":
+				parserState.NewBlock =    AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    AttributeDeclarationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+
+		raise TokenParserException(errorMessage, token)
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/Attribute/AttributeSpecification.py.html b/typing/html/pyVHDLParser/Blocks/Attribute/AttributeSpecification.py.html new file mode 100644 index 000000000..19c3415d0 --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/Attribute/AttributeSpecification.py.html @@ -0,0 +1,1043 @@ + + + + + + +

pyVHDLParser.Blocks.Attribute.AttributeSpecification

+ + + + + + +
pyVHDLParser/Blocks/Attribute/AttributeSpecification.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+380
+381
+382
+383
+384
+385
+386
+387
+388
+389
+390
+391
+392
+393
+394
+395
+396
+397
+398
+399
+400
+401
+402
+403
+404
+405
+406
+407
+408
+409
+410
+411
+412
+413
+414
+415
+416
+417
+418
+419
+420
+421
+422
+423
+424
+425
+426
+427
+428
+429
+430
+431
+432
+433
+434
+435
+436
+437
+438
+439
+440
+441
+442
+443
+444
+445
+446
+447
+448
+449
+450
+451
+452
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators         import export
+
+from pyVHDLParser.Token           import CharacterToken, LinebreakToken, SpaceToken, WordToken
+from pyVHDLParser.Token.Keywords  import BoundaryToken, IdentifierToken, VariableAssignmentKeyword, EndToken
+from pyVHDLParser.Blocks          import Block, TokenToBlockParser
+from pyVHDLParser.Blocks.Common   import LinebreakBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Comment  import SingleLineCommentBlock, MultiLineCommentBlock
+
+
+@export
+class AttributeSpecificationBlock(Block):
+	@classmethod
+	def stateAttributeSpecificationKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected whitespace after keyword ATTRIBUTE."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewBlock =    AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				_ =                       LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateWhitespace1
+			return
+
+		raise TokenParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected attribute name (identifier)."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				if not isinstance(parserState.LastBlock, MultiLineCommentBlock):
+					parserState.NewBlock =  AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True)
+					_ =                     LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				else:
+					parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateAttributeSpecificationName
+			return
+		elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise TokenParserException(errorMessage, token)
+
+	@classmethod
+	def stateAttributeSpecificationName(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected ';' after library name."
+		if isinstance(token, CharacterToken):
+			if token == ":":
+				parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+				parserState.NextState =   cls.stateColon1
+				return
+			elif token == "\n":
+				parserState.NewBlock =    AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				_ =                       LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace2
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace2
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace2
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NextState =     cls.stateWhitespace2
+			return
+
+		raise TokenParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhitespace2(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected attribute name (identifier)."
+		if isinstance(token, CharacterToken):
+			if token == ":":
+				parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+				parserState.NextState =   cls.stateColon1
+				return
+			if token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				if not isinstance(parserState.LastBlock, MultiLineCommentBlock):
+					parserState.NewBlock =  AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True)
+					_ =                     LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				else:
+					parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, WordToken):
+			parserState.NewToken = IdentifierToken(fromExistingToken=token)
+			parserState.NextState = cls.stateColon1()
+			return
+		elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise TokenParserException(errorMessage, token)
+
+	@classmethod
+	def stateColon1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected type mark or whitespace after ':'."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewBlock =    AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				_ =                       LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace3
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace3
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace3
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateWhitespace3
+			return
+		elif isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateTypeMarkName
+			return
+
+		raise TokenParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhitespace3(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected type mark (identifier)."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				if not isinstance(parserState.LastBlock, MultiLineCommentBlock):
+					parserState.NewBlock =  AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True)
+					_ =                     LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				else:
+					parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, WordToken):
+			parserState.NewToken = IdentifierToken(fromExistingToken=token)
+			parserState.NextState = cls.stateTypeMarkName
+			return
+		elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise TokenParserException(errorMessage, token)
+
+	@classmethod
+	def stateTypeMarkName(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected ':=' or whitespace after type mark."
+		if isinstance(token, CharacterToken):
+			if token == ":":
+				parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+				parserState.NextState =   cls.statePossibleVariableAssignment
+				return
+			elif token == "\n":
+				parserState.NewBlock =    AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				_ =                       LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace4
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace4
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace4
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NextState =     cls.stateWhitespace4
+			return
+
+		raise TokenParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhitespace4(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected ':=' after type mark."
+		if isinstance(token, CharacterToken):
+			if token == ":":
+				parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+				parserState.NextState =   cls.statePossibleVariableAssignment
+				return
+			elif token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				if not isinstance(parserState.LastBlock, MultiLineCommentBlock):
+					parserState.NewBlock =  AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True)
+					_ =                     LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				else:
+					parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise TokenParserException(errorMessage, token)
+
+	@classmethod
+	def statePossibleVariableAssignment(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken) and (token == "="):
+			parserState.NewToken =      VariableAssignmentKeyword(parserState.TokenMarker)
+			parserState.TokenMarker =   parserState.NewToken
+			parserState.NextState =     cls.stateVariableAssignment
+			return
+
+		raise NotImplementedError("State=PossibleCommentStart: {0!r}".format(token))
+
+	@classmethod
+	def stateVariableAssignment(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected ':=' or whitespace after attributeSpecification mark."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewBlock =    AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				_ =                       LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace5
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState = cls.stateWhitespace5
+				parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock = AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState = cls.stateWhitespace5
+				parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NextState = cls.stateWhitespace5
+			return
+
+		raise TokenParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhitespace5(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected expression after ':='."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				if not isinstance(parserState.LastBlock, MultiLineCommentBlock):
+					parserState.NewBlock =  AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True)
+					_ =                     LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				else:
+					parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, WordToken):
+			parserState.NextState = cls.stateExpressionEnd
+			return
+		elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise TokenParserException(errorMessage, token)
+
+	@classmethod
+	def stateExpressionEnd(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected ';'."
+		if isinstance(token, CharacterToken):
+			if token == ";":
+				parserState.NewToken =    EndToken(fromExistingToken=token)
+				parserState.NewBlock =    AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+				parserState.Pop()
+				return
+			elif token == "-":
+				parserState.NewBlock =    AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    AttributeSpecificationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+
+		raise TokenParserException(errorMessage, token)
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/Attribute/__init__.py.html b/typing/html/pyVHDLParser/Blocks/Attribute/__init__.py.html new file mode 100644 index 000000000..f9a009471 --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/Attribute/__init__.py.html @@ -0,0 +1,74 @@ + + + + + + +

pyVHDLParser.Blocks.Attribute

+ + + + + + +
pyVHDLParser/Blocks/Attribute/__init__.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/Comment.py.html b/typing/html/pyVHDLParser/Blocks/Comment.py.html new file mode 100644 index 000000000..cb531a4d4 --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/Comment.py.html @@ -0,0 +1,258 @@ + + + + + + +

pyVHDLParser.Blocks.Comment

+ + + + + + +
pyVHDLParser/Blocks/Comment.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators             import export
+
+from pyVHDLParser.Token               import CharacterToken, SpaceToken, IndentationToken
+from pyVHDLParser.Token.Keywords      import SingleLineCommentKeyword, MultiLineCommentStartKeyword, MultiLineCommentEndKeyword
+from pyVHDLParser.Blocks              import CommentBlock, TokenToBlockParser
+from pyVHDLParser.Blocks.Common       import IndentationBlock
+
+
+@export
+class SingleLineCommentBlock(CommentBlock):
+	@classmethod
+	def statePossibleCommentStart(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken) and (token == "-"):
+			parserState.NewToken =    SingleLineCommentKeyword(parserState.TokenMarker)
+			parserState.TokenMarker = parserState.NewToken
+			parserState.NextState =   cls.stateConsumeComment
+			return
+
+		raise NotImplementedError("State=PossibleCommentStart: {0!r}".format(token))
+
+	@classmethod
+	def stateConsumeComment(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken)and (token == "\n"):
+			parserState.NewBlock =    SingleLineCommentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.Token)
+			parserState.NextState =   cls.stateLinebreak
+			return
+		else:
+			pass	# consume everything until "\n"
+
+	@classmethod
+	def stateLinebreak(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, SpaceToken):
+			parserState.NewToken = IndentationToken(fromExistingToken=token)
+			parserState.NewBlock = IndentationBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.Pop()
+		else:
+			parserState.Pop()
+			if parserState.TokenMarker is None:
+				# print("  new marker: None -> {0!s}".format(token))
+				parserState.TokenMarker = token
+				# print("  {DARK_GREEN}re-issue: {GREEN}{state!s}     {DARK_GREEN}token={GREEN}{token}{NOCOLOR}".format(state=parserState, token=parserState.Token, **Console.Foreground))
+			parserState.NextState(parserState)
+
+
+@export
+class MultiLineCommentBlock(CommentBlock):
+	@classmethod
+	def statePossibleCommentStart(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken) and (token == "*"):
+			parserState.NewToken =    MultiLineCommentStartKeyword(parserState.TokenMarker)
+			parserState.TokenMarker = parserState.NewToken
+			parserState.NextState =   cls.stateConsumeComment
+			return
+		else:
+			parserState.Pop()
+			# print("  {DARK_GREEN}re-issue: {GREEN}{state!s}     {DARK_GREEN}token={GREEN}{token}{NOCOLOR}".format(state=parserState, token=parserState.Token, **Console.Foreground))
+			parserState.NextState(parserState)
+
+	@classmethod
+	def stateConsumeComment(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken) and (token == "*"):
+			parserState.PushState =   cls.statePossibleCommentEnd
+			parserState.TokenMarker = token
+			return
+		else:
+			pass  # consume everything until "*/"
+
+	@classmethod
+	def statePossibleCommentEnd(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken) and (token == "/"):
+			parserState.NewToken = MultiLineCommentEndKeyword(parserState.TokenMarker)
+			parserState.Pop()
+			parserState.NewBlock = MultiLineCommentBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.Pop()
+			return
+		else:
+			parserState.Pop()
+			parserState.NextState(parserState)
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/Common.py.html b/typing/html/pyVHDLParser/Blocks/Common.py.html new file mode 100644 index 000000000..b65e2354a --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/Common.py.html @@ -0,0 +1,221 @@ + + + + + + +

pyVHDLParser.Blocks.Common

+ + + + + + +
pyVHDLParser/Blocks/Common.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators     import export
+
+from pyVHDLParser.Token       import SpaceToken, IndentationToken
+from pyVHDLParser.Blocks      import TokenToBlockParser, SkipableBlock
+
+
+@export
+class WhitespaceBlock(SkipableBlock):
+	def __init__(self, previousBlock, startToken):
+		super().__init__(previousBlock, startToken, startToken)
+
+	def __repr__(self):
+		return "[{blockName: <50s}  {stream} at {start!s} .. {end!s}]".format(
+			blockName=type(self).__name__,
+			stream=" "*61,
+			start=self.StartToken.Start,
+			end=self.EndToken.End
+		)
+
+
+@export
+class LinebreakBlock(WhitespaceBlock):
+	@classmethod
+	def stateLinebreak(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, SpaceToken):
+			parserState.NewToken = IndentationToken(fromExistingToken=token)
+			parserState.NewBlock = IndentationBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.Pop()
+			# print("  {GREEN}continue: {0!s}{NOCOLOR}".format(parserState, **Console.Foreground))
+		else:
+			parserState.Pop()
+			if parserState.TokenMarker is None:
+				# print("  {DARK_GREEN}set marker: {GREEN}LinebreakBlock.stateLinebreak    {DARK_GREEN}marker {GREEN}{0!s}{NOCOLOR}".format(token, **Console.Foreground))
+				parserState.TokenMarker = token
+			# print("  {DARK_GREEN}re-issue:   {GREEN}{state!s: <20s}    {DARK_GREEN}token  {GREEN}{token}{NOCOLOR}".format(state=parserState, token=parserState.Token, **Console.Foreground))
+			parserState.NextState(parserState)
+
+
+@export
+class EmptyLineBlock(LinebreakBlock):
+	pass
+
+
+@export
+class IndentationBlock(WhitespaceBlock):
+	__TABSIZE__ = 2
+
+	def __repr__(self):
+		length = len(self.StartToken.Value)
+		actual = sum([(self.__TABSIZE__ if (c == "\t") else 1) for c in self.StartToken.Value])
+
+		return "[{blockName: <50s}  length={len: <53}  at {start!s} .. {end!s}]".format(
+				blockName=type(self).__name__,
+				len="{len} ({actual}) ".format(
+					len=length,
+					actual=actual
+				),
+				start=self.StartToken.Start,
+				end=self.EndToken.End
+			)
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/ControlStructure/Case.py.html b/typing/html/pyVHDLParser/Blocks/ControlStructure/Case.py.html new file mode 100644 index 000000000..163b06190 --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/ControlStructure/Case.py.html @@ -0,0 +1,619 @@ + + + + + + +

pyVHDLParser.Blocks.ControlStructure.Case

+ + + + + + +
pyVHDLParser/Blocks/ControlStructure/Case.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators             import export
+
+from pyVHDLParser.Token               import CharacterToken, LinebreakToken, SpaceToken, IndentationToken, CommentToken, MultiLineCommentToken, SingleLineCommentToken
+from pyVHDLParser.Token.Keywords      import WordToken, BoundaryToken, CaseKeyword, WhenKeyword, IsKeyword, EndKeyword, MapAssociationKeyword
+from pyVHDLParser.Blocks              import BlockParserException, Block, CommentBlock, TokenToBlockParser
+from pyVHDLParser.Blocks.Common       import LinebreakBlock, IndentationBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Generic      import SequentialBeginBlock
+from pyVHDLParser.Blocks.Generic1     import EndBlock as EndBlockBase
+from pyVHDLParser.Blocks.Expression   import ExpressionBlockEndedByCharORClosingRoundBracket, ExpressionBlockEndedByKeywordORClosingRoundBracket
+
+
+@export
+class EndBlock(EndBlockBase):
+	KEYWORD =       CaseKeyword
+	EXPECTED_NAME = KEYWORD.__KEYWORD__
+
+
+@export
+class ArrowBlock(SequentialBeginBlock):
+	END_BLOCK = EndBlock
+
+	@classmethod
+	def stateArrowKeyword(cls, parserState: TokenToBlockParser):
+		cls.stateSequentialRegion(parserState)
+
+	@classmethod
+	def stateSequentialRegion(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken) and (token <= "when"):
+			newToken =                WhenKeyword(fromExistingToken=token)
+			parserState.NewToken =    newToken
+			parserState.TokenMarker = newToken
+			parserState.NextState =   WhenBlock.stateWhenKeyword
+			return
+
+		super().stateSequentialRegion(parserState)
+
+
+@export
+class WhenExpressionBlock(ExpressionBlockEndedByCharORClosingRoundBracket):
+	EXIT_CHAR =    "=>"
+	EXIT_TOKEN =   MapAssociationKeyword
+	EXIT_BLOCK =   ArrowBlock
+
+
+@export
+class WhenBlock(SequentialBeginBlock):
+	END_BLOCK = EndBlock
+
+	@classmethod
+	def stateWhenKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken) and (token == "("):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+			parserState.TokenMarker = parserState.NewToken
+			parserState.NextState =   ArrowBlock.stateArrowKeyword
+			parserState.PushState =   WhenExpressionBlock.stateExpression
+			return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace1
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace1
+			return
+		else:
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken)
+			parserState.NextState =   ArrowBlock.stateArrowKeyword
+			parserState.PushState =   WhenExpressionBlock.stateExpression
+			parserState.TokenMarker = parserState.Token
+			parserState.NextState(parserState)
+			return
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =  cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                     LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker = None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =    WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker = None
+			return
+		else:
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken)
+			parserState.NextState =   ArrowBlock.stateArrowKeyword
+			parserState.PushState =   WhenExpressionBlock.stateExpression
+			parserState.TokenMarker = parserState.Token
+			parserState.NextState(parserState)
+			return
+
+
+@export
+class IsBlock(SequentialBeginBlock):
+	END_BLOCK = None
+
+	@classmethod
+	def stateIsKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, SpaceToken):
+			blockType =               IndentationBlock if isinstance(token, IndentationToken) else WhitespaceBlock
+			parserState.NewBlock =    blockType(parserState.LastBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace1
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    block(parserState.LastBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace1
+			return
+
+		raise BlockParserException("Expected whitespace after keyword IS.", token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken):
+			tokenValue = token.Value.lower()
+			if tokenValue == "when":
+				newToken =                WhenKeyword(fromExistingToken=token)
+				parserState.NewToken =    newToken
+				parserState.TokenMarker = newToken
+				parserState.NextState =   WhenBlock.stateWhenKeyword
+				return
+			elif tokenValue == "end":
+				parserState.NewToken =    EndKeyword(fromExistingToken=token)
+				parserState.NextState =   cls.END_BLOCK.stateEndKeyword
+				return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected one of these keywords: WHEN or END. Found: '{tokenValue}'.".format(tokenValue=token.Value), token)
+
+
+@export
+class CaseExpressionBlock(ExpressionBlockEndedByKeywordORClosingRoundBracket):
+	EXIT_KEYWORD = IsKeyword
+	EXIT_BLOCK =   IsBlock
+
+
+@export
+class CaseBlock(Block):
+	@classmethod
+	def stateCaseKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken) and (token == "("):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+			parserState.TokenMarker = parserState.NewToken
+			parserState.NextState =   IsBlock.stateIsKeyword
+			parserState.PushState =   CaseExpressionBlock.stateExpression
+			return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace1
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace1
+			return
+		else:
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken)
+			parserState.NextState =   IsBlock.stateIsKeyword
+			parserState.PushState =   CaseExpressionBlock.stateExpression
+			parserState.TokenMarker = parserState.Token
+			parserState.NextState(parserState)
+			return
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+		else:
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken)
+			parserState.NextState =   IsBlock.stateIsKeyword
+			parserState.PushState =   CaseExpressionBlock.stateExpression
+			parserState.TokenMarker = parserState.Token
+			parserState.NextState(parserState)
+			return
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/ControlStructure/Exit.py.html b/typing/html/pyVHDLParser/Blocks/ControlStructure/Exit.py.html new file mode 100644 index 000000000..5b5091582 --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/ControlStructure/Exit.py.html @@ -0,0 +1,532 @@ + + + + + + +

pyVHDLParser.Blocks.ControlStructure.Exit

+ + + + + + +
pyVHDLParser/Blocks/ControlStructure/Exit.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators           import export
+
+from pyVHDLParser.Token             import SpaceToken, LinebreakToken, CommentToken, IndentationToken, SingleLineCommentToken, MultiLineCommentToken
+from pyVHDLParser.Token             import WordToken, ExtendedIdentifier, CharacterToken
+from pyVHDLParser.Token.Keywords    import BoundaryToken, IdentifierToken, EndToken, WhenKeyword
+from pyVHDLParser.Blocks            import Block, TokenToBlockParser, CommentBlock, BlockParserException
+from pyVHDLParser.Blocks.Common     import LinebreakBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Generic1   import EndOfStatementBlock
+from pyVHDLParser.Blocks.Expression import ExpressionBlockEndedBySemicolon
+
+
+@export
+class EndBlock(EndOfStatementBlock):
+	pass
+
+
+@export
+class ExitConditionBlock(ExpressionBlockEndedBySemicolon):
+	END_BLOCK = EndBlock
+
+
+@export
+class ExitBlock(Block):
+	@classmethod
+	def stateExitKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken) and (token == ";"):
+			parserState.NewToken =    EndToken(fromExistingToken=token)
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.Pop()
+			return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			# parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken, multiPart=True)
+			# parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace1
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace1
+			return
+
+		raise BlockParserException("Expected ';' or whitespace after keyword EXIT.", token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken) and (token == ";"):
+			parserState.NewToken =    EndToken(fromExistingToken=token)
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.Pop()
+			return
+		elif isinstance(token, WordToken):
+			if token <= "when":
+				parserState.NewToken =    WhenKeyword(fromExistingToken=token)
+				parserState.NextState =   cls.stateWhenKeyword
+				return
+			else:
+				parserState.NewToken =    IdentifierToken(fromExistingToken=token)
+				# parserState.TokenMarker = parserState.NewToken
+				parserState.NextState =   cls.stateExitLoopLabel
+				return
+		elif isinstance(token, ExtendedIdentifier):
+			parserState.NextState =   cls.stateExitLoopLabel
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    block(parserState.LastBlock, token)
+			parserState.TokenMarker = None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =    WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker = None
+			return
+
+		raise BlockParserException("Expected ';', keyword WHEN or loop label.", token)
+
+	@classmethod
+	def stateExitLoopLabel(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken) and (token == ";"):
+			parserState.NewToken =    EndToken(fromExistingToken=token)
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.Pop()
+			return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			# parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token, multiPart=True)
+			# parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace2
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace2
+			return
+
+		raise BlockParserException("Expected ';' or whitespace after loop label.", token)
+
+	@classmethod
+	def stateWhitespace2(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken) and (token == ";"):
+			parserState.NewToken =    EndToken(fromExistingToken=token)
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.Pop()
+			return
+		elif isinstance(token, WordToken) and (token <= "when"):
+			parserState.NewToken =    WhenKeyword(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhenKeyword
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    block(parserState.LastBlock, token)
+			parserState.TokenMarker = None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =    WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker = None
+			return
+
+		raise BlockParserException("Expected ';' or keyword WHEN.", token)
+
+	@classmethod
+	def stateWhenKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken):
+			if  (token == ";"):
+				parserState.NewToken =    EndToken(fromExistingToken=token)
+				parserState.NewBlock =    EndBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+				parserState.Pop()
+				return
+			elif  (token == "("):
+				parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+				parserState.TokenMarker = parserState.NewToken
+				parserState.NextState =   EndBlock.stateError
+				parserState.PushState =   ExitConditionBlock.stateExpression
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace3
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace3
+			return
+
+		raise BlockParserException("Expected ';' or whitespace after keyword RETURN.", token)
+
+	@classmethod
+	def stateWhitespace3(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken) and  (token == ";"):
+			parserState.NewToken =    EndToken(fromExistingToken=token)
+			parserState.NewBlock =    EndBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+			parserState.Pop()
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =  cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                     LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker = None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif (isinstance(token, SpaceToken) and (
+			isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken))):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =    WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker = None
+			return
+		else:
+			parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken)
+			parserState.NextState =   EndBlock.stateError
+			parserState.PushState =   ExitConditionBlock.stateExpression
+			parserState.TokenMarker = parserState.Token
+			parserState.NextState(parserState)
+			return
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/ControlStructure/ForLoop.py.html b/typing/html/pyVHDLParser/Blocks/ControlStructure/ForLoop.py.html new file mode 100644 index 000000000..39f78da56 --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/ControlStructure/ForLoop.py.html @@ -0,0 +1,534 @@ + + + + + + +

pyVHDLParser.Blocks.ControlStructure.ForLoop

+ + + + + + +
pyVHDLParser/Blocks/ControlStructure/ForLoop.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators             import export
+
+from pyVHDLParser.Token               import LinebreakToken, CommentToken, MultiLineCommentToken, IndentationToken, SingleLineCommentToken, ExtendedIdentifier, CharacterToken, SpaceToken
+from pyVHDLParser.Token.Keywords      import InKeyword, ForKeyword, LoopKeyword, BoundaryToken, IdentifierToken, WordToken
+from pyVHDLParser.Blocks              import BlockParserException, Block, CommentBlock, TokenToBlockParser
+from pyVHDLParser.Blocks.Common       import LinebreakBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Generic      import SequentialBeginBlock
+from pyVHDLParser.Blocks.Generic1     import EndBlock as EndBlockBase
+from pyVHDLParser.Blocks.Expression   import ExpressionBlockEndedByKeywordORClosingRoundBracket, ExpressionBlockEndedByKeywordOrToOrDownto
+
+
+@export
+class IteratorBlock(Block):
+	@classmethod
+	def stateForKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace1
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace1
+			return
+
+		raise BlockParserException("Expected whitespace after keyword FOR.", token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateIteratorName
+			return
+		elif isinstance(token, ExtendedIdentifier):
+			parserState.NextState =     cls.stateIteratorName
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected iterator name (identifier).", token)
+
+	@classmethod
+	def stateIteratorName(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace2
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace2
+			return
+
+		raise BlockParserException("Expected whitespace after iterator name.", token)
+
+	@classmethod
+	def stateWhitespace2(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken) and (token <= "in"):
+			parserState.NewToken =      InKeyword(fromExistingToken=token)
+			# parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			# parserState.TokenMarker =   None
+			parserState.NextState =     cls.stateInKeyword
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected keyword IN after iterator name.", token)
+
+	@classmethod
+	def stateInKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken) and (token == "("):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+			parserState.TokenMarker = parserState.NewToken
+			parserState.NextState =   LoopBlock.stateSequentialRegion
+			parserState.PushState =   ExpressionBlockEndedByLoopORToORDownto.stateExpression
+			return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace3
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace3
+			return
+
+		raise BlockParserException("Expected '(' or whitespace after keyword IN.", token)
+
+	@classmethod
+	def stateWhitespace3(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+		else:
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken)
+			parserState.NextState =     LoopBlock.stateLoopKeyword
+			parserState.PushState =     ExpressionBlockEndedByLoop.stateExpression
+			parserState.PushState =     ExpressionBlockEndedByLoopORToORDownto.stateExpression
+			parserState.TokenMarker =   parserState.Token
+			parserState.NextState(parserState)
+			return
+
+
+@export
+class EndBlock(EndBlockBase):
+	KEYWORD =             ForKeyword
+	KEYWORD_IS_OPTIONAL = False
+	EXPECTED_NAME =       KEYWORD.__KEYWORD__
+
+
+@export
+class LoopBlock(SequentialBeginBlock):
+	END_BLOCK = EndBlock
+
+	@classmethod
+	def stateLoopKeyword(cls, parserState: TokenToBlockParser):
+		parserState.NextState = cls.stateSequentialRegion
+		parserState.NextState(parserState)
+
+
+@export
+class ExpressionBlockEndedByLoopORToORDownto(ExpressionBlockEndedByKeywordOrToOrDownto):
+	EXIT_KEYWORD =  LoopKeyword
+	EXIT_BLOCK =    LoopBlock
+
+
+@export
+class ExpressionBlockEndedByLoop(ExpressionBlockEndedByKeywordORClosingRoundBracket):
+	EXIT_KEYWORD = LoopKeyword
+	EXIT_BLOCK =   LoopBlock
+
+
+@export
+class LoopIterationDirectionBlock(Block):
+	pass
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/ControlStructure/If.py.html b/typing/html/pyVHDLParser/Blocks/ControlStructure/If.py.html new file mode 100644 index 000000000..88e45d907 --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/ControlStructure/If.py.html @@ -0,0 +1,502 @@ + + + + + + +

pyVHDLParser.Blocks.ControlStructure.If

+ + + + + + +
pyVHDLParser/Blocks/ControlStructure/If.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators             import export
+
+from pyVHDLParser.Token               import CharacterToken, LinebreakToken, SpaceToken, IndentationToken, CommentToken, MultiLineCommentToken, SingleLineCommentToken
+from pyVHDLParser.Token.Keywords      import WordToken, BoundaryToken, IfKeyword, ThenKeyword, ElsIfKeyword, ElseKeyword
+from pyVHDLParser.Blocks              import Block, CommentBlock, TokenToBlockParser
+from pyVHDLParser.Blocks.Common       import LinebreakBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Generic      import SequentialBeginBlock
+from pyVHDLParser.Blocks.Generic1     import EndBlock as EndBlockBase
+from pyVHDLParser.Blocks.Expression   import ExpressionBlockEndedByKeywordORClosingRoundBracket
+
+
+@export
+class EndBlock(EndBlockBase):
+	KEYWORD =       IfKeyword
+	EXPECTED_NAME = KEYWORD.__KEYWORD__
+
+
+@export
+class ThenBlock(SequentialBeginBlock):
+	END_BLOCK = EndBlock
+
+	@classmethod
+	def stateThenKeyword(cls, parserState: TokenToBlockParser):
+		cls.stateSequentialRegion(parserState)
+
+	@classmethod
+	def stateSequentialRegion(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken):
+			tokenValue = token.Value.lower()
+
+			if tokenValue == "elsif":
+				newToken =                ElsIfKeyword(fromExistingToken=token)
+				parserState.NewToken =    newToken
+				parserState.TokenMarker = newToken
+				parserState.NextState =   ElsIfConditionBlock.stateElsIfKeyword
+				return
+			elif tokenValue == "else":
+				newToken =                ElseKeyword(fromExistingToken=token)
+				parserState.NewToken =    newToken
+				parserState.NewBlock =    ElseBlock(parserState.LastBlock, newToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   ElseBlock.stateElseKeyword
+				return
+
+		super().stateSequentialRegion(parserState)
+
+
+@export
+class ElseBlock(SequentialBeginBlock):
+	END_BLOCK = EndBlock
+
+	@classmethod
+	def stateElseKeyword(cls, parserState: TokenToBlockParser):
+		cls.stateSequentialRegion(parserState)
+
+
+@export
+class ExpressionBlockEndedByThen(ExpressionBlockEndedByKeywordORClosingRoundBracket):
+	EXIT_KEYWORD = ThenKeyword
+	EXIT_BLOCK =   ThenBlock
+
+
+@export
+class IfConditionBlock(Block):
+	@classmethod
+	def stateIfKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken) and (token == "("):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+			parserState.TokenMarker = parserState.NewToken
+			parserState.NextState =   ThenBlock.stateThenKeyword
+			parserState.PushState =   ExpressionBlockEndedByThen.stateExpression
+			return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace1
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace1
+			return
+		else:
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken)
+			parserState.NextState =   ThenBlock.stateThenKeyword
+			parserState.PushState =   ExpressionBlockEndedByThen.stateExpression
+			parserState.TokenMarker = parserState.Token
+			parserState.NextState(parserState)
+			return
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+		else:
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken)
+			parserState.NextState =   ThenBlock.stateThenKeyword
+			parserState.PushState =   ExpressionBlockEndedByThen.stateExpression
+			parserState.TokenMarker = parserState.Token
+			parserState.NextState(parserState)
+			return
+
+
+@export
+class ElsIfConditionBlock(Block):
+	@classmethod
+	def stateElsIfKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken) and (token == "("):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+			parserState.TokenMarker = parserState.NewToken
+			parserState.NextState =   ThenBlock.stateThenKeyword
+			parserState.PushState =   ExpressionBlockEndedByThen.stateExpression
+			return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace1
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace1
+			return
+		else:
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken)
+			parserState.NextState =   ThenBlock.stateThenKeyword
+			parserState.PushState =   ExpressionBlockEndedByThen.stateExpression
+			parserState.TokenMarker = parserState.Token
+			parserState.NextState(parserState)
+			return
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+		else:
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken)
+			parserState.NextState =   ThenBlock.stateThenKeyword
+			parserState.PushState =   ExpressionBlockEndedByThen.stateExpression
+			parserState.TokenMarker = parserState.Token
+			parserState.NextState(parserState)
+			return
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/ControlStructure/Next.py.html b/typing/html/pyVHDLParser/Blocks/ControlStructure/Next.py.html new file mode 100644 index 000000000..c9fd2b41c --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/ControlStructure/Next.py.html @@ -0,0 +1,532 @@ + + + + + + +

pyVHDLParser.Blocks.ControlStructure.Next

+ + + + + + +
pyVHDLParser/Blocks/ControlStructure/Next.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators           import export
+
+from pyVHDLParser.Token             import SpaceToken, LinebreakToken, CommentToken, IndentationToken, SingleLineCommentToken, MultiLineCommentToken
+from pyVHDLParser.Token             import WordToken, ExtendedIdentifier, CharacterToken
+from pyVHDLParser.Token.Keywords    import BoundaryToken, IdentifierToken, EndToken, WhenKeyword
+from pyVHDLParser.Blocks            import Block, TokenToBlockParser, CommentBlock, BlockParserException
+from pyVHDLParser.Blocks.Common     import LinebreakBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Generic1   import EndOfStatementBlock
+from pyVHDLParser.Blocks.Expression import ExpressionBlockEndedBySemicolon
+
+
+@export
+class EndBlock(EndOfStatementBlock):
+	pass
+
+
+@export
+class NextConditionBlock(ExpressionBlockEndedBySemicolon):
+	END_BLOCK = EndBlock
+
+
+@export
+class NextBlock(Block):
+	@classmethod
+	def stateNextKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken) and (token == ";"):
+			parserState.NewToken =    EndToken(fromExistingToken=token)
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.Pop()
+			return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			# parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken, multiPart=True)
+			# parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace1
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace1
+			return
+
+		raise BlockParserException("Expected ';' or whitespace after keyword EXIT.", token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken) and (token == ";"):
+			parserState.NewToken =    EndToken(fromExistingToken=token)
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.Pop()
+			return
+		elif isinstance(token, WordToken):
+			if token <= "when":
+				parserState.NewToken =    WhenKeyword(fromExistingToken=token)
+				parserState.NextState =   cls.stateWhenKeyword
+				return
+			else:
+				parserState.NewToken =    IdentifierToken(fromExistingToken=token)
+				# parserState.TokenMarker = parserState.NewToken
+				parserState.NextState =   cls.stateNextLoopLabel
+				return
+		elif isinstance(token, ExtendedIdentifier):
+			parserState.NextState =   cls.stateNextLoopLabel
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    block(parserState.LastBlock, token)
+			parserState.TokenMarker = None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =    WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker = None
+			return
+
+		raise BlockParserException("Expected ';', keyword WHEN or loop label.", token)
+
+	@classmethod
+	def stateNextLoopLabel(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken) and (token == ";"):
+			parserState.NewToken =    EndToken(fromExistingToken=token)
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.Pop()
+			return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			# parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token, multiPart=True)
+			# parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace2
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace2
+			return
+
+		raise BlockParserException("Expected ';' or whitespace after loop label.", token)
+
+	@classmethod
+	def stateWhitespace2(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken) and (token == ";"):
+			parserState.NewToken =    EndToken(fromExistingToken=token)
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.Pop()
+			return
+		elif isinstance(token, WordToken) and (token <= "when"):
+			parserState.NewToken =    WhenKeyword(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhenKeyword
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    block(parserState.LastBlock, token)
+			parserState.TokenMarker = None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =    WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker = None
+			return
+
+		raise BlockParserException("Expected ';' or keyword WHEN.", token)
+
+	@classmethod
+	def stateWhenKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken):
+			if  (token == ";"):
+				parserState.NewToken =    EndToken(fromExistingToken=token)
+				parserState.NewBlock =    EndBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+				parserState.Pop()
+				return
+			elif  (token == "("):
+				parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+				parserState.TokenMarker = parserState.NewToken
+				parserState.NextState =   EndBlock.stateError
+				parserState.PushState =   NextConditionBlock.stateExpression
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace3
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace3
+			return
+
+		raise BlockParserException("Expected ';' or whitespace after keyword RETURN.", token)
+
+	@classmethod
+	def stateWhitespace3(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken) and  (token == ";"):
+			parserState.NewToken =      EndToken(fromExistingToken=token)
+			parserState.NewBlock =      EndBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+			parserState.Pop()
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif (isinstance(token, SpaceToken) and (
+			isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken))):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+		else:
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken)
+			parserState.NextState =     EndBlock.stateError
+			parserState.PushState =     NextConditionBlock.stateExpression
+			parserState.TokenMarker =   parserState.Token
+			parserState.NextState(parserState)
+			return
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/ControlStructure/Null.py.html b/typing/html/pyVHDLParser/Blocks/ControlStructure/Null.py.html new file mode 100644 index 000000000..e32f08dfb --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/ControlStructure/Null.py.html @@ -0,0 +1,210 @@ + + + + + + +

pyVHDLParser.Blocks.ControlStructure.Null

+ + + + + + +
pyVHDLParser/Blocks/ControlStructure/Null.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators           import export
+
+from pyVHDLParser.Token             import SpaceToken, LinebreakToken, CommentToken, IndentationToken, SingleLineCommentToken, MultiLineCommentToken
+from pyVHDLParser.Token             import CharacterToken
+from pyVHDLParser.Token.Keywords    import BoundaryToken, EndToken
+from pyVHDLParser.Blocks            import Block, TokenToBlockParser, CommentBlock, BlockParserException
+from pyVHDLParser.Blocks.Common     import LinebreakBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Generic1   import EndOfStatementBlock
+
+
+@export
+class EndBlock(EndOfStatementBlock):
+	pass
+
+
+@export
+class NullBlock(Block):
+	@classmethod
+	def stateNullKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken) and (token == ";"):
+			parserState.NewToken =    EndToken(fromExistingToken=token)
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.Pop()
+			return
+		elif isinstance(token, SpaceToken):
+			parserState.NextState =   cls.stateWhitespace1
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace1
+			return
+
+		raise BlockParserException("Expected ';' or whitespace after keyword NULL.", token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken) and (token == ";"):
+			parserState.NewToken =    EndToken(fromExistingToken=token)
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.Pop()
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    block(parserState.LastBlock, token)
+			parserState.TokenMarker = None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =    WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker = None
+			return
+
+		raise BlockParserException("Expected ';'.", token)
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/ControlStructure/Return.py.html b/typing/html/pyVHDLParser/Blocks/ControlStructure/Return.py.html new file mode 100644 index 000000000..d750bafd5 --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/ControlStructure/Return.py.html @@ -0,0 +1,273 @@ + + + + + + +

pyVHDLParser.Blocks.ControlStructure.Return

+ + + + + + +
pyVHDLParser/Blocks/ControlStructure/Return.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators             import export
+
+from pyVHDLParser.Token               import CommentToken, CharacterToken, SpaceToken, LinebreakToken, IndentationToken, SingleLineCommentToken, MultiLineCommentToken
+from pyVHDLParser.Token.Keywords      import BoundaryToken, EndToken
+from pyVHDLParser.Blocks              import Block, TokenToBlockParser, BlockParserException, CommentBlock
+from pyVHDLParser.Blocks.Generic1     import EndOfStatementBlock
+from pyVHDLParser.Blocks.Common       import LinebreakBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Expression   import ExpressionBlockEndedBySemicolon
+
+
+@export
+class EndBlock(EndOfStatementBlock):
+	pass
+
+
+@export
+class ReturnExpressionBlock(ExpressionBlockEndedBySemicolon):
+	END_BLOCK = EndBlock
+
+
+@export
+class ReturnBlock(Block):
+	@classmethod
+	def stateReturnKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken):
+			if  (token == ";"):
+				parserState.NewToken =    EndToken(fromExistingToken=token)
+				parserState.NewBlock =    EndBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+				parserState.Pop()
+				return
+			elif  (token == "("):
+				parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+				parserState.TokenMarker = parserState.NewToken
+				parserState.NextState =   EndBlock.stateError
+				parserState.PushState =   ReturnExpressionBlock.stateExpression
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace1
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace1
+			return
+
+		raise BlockParserException("Expected ';' or whitespace after keyword RETURN.", token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken) and  (token == ";"):
+			parserState.NewToken =      EndToken(fromExistingToken=token)
+			parserState.NewBlock =      EndBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+			parserState.Pop()
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif (isinstance(token, SpaceToken) and (
+			isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken))):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+		else:
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken)
+			parserState.NextState =     EndBlock.stateError
+			parserState.PushState =     ReturnExpressionBlock.stateExpression
+			parserState.TokenMarker =   parserState.Token
+			parserState.NextState(parserState)
+			return
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/ControlStructure/WhileLoop.py.html b/typing/html/pyVHDLParser/Blocks/ControlStructure/WhileLoop.py.html new file mode 100644 index 000000000..c51c4dc8d --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/ControlStructure/WhileLoop.py.html @@ -0,0 +1,544 @@ + + + + + + +

pyVHDLParser.Blocks.ControlStructure.WhileLoop

+ + + + + + +
pyVHDLParser/Blocks/ControlStructure/WhileLoop.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators             import export
+
+from pyVHDLParser.Token               import CharacterToken, LinebreakToken, IndentationToken
+from pyVHDLParser.Token.Keywords      import BoundaryToken, IdentifierToken, LoopKeyword
+from pyVHDLParser.Token.Keywords      import IsKeyword, EndKeyword, GenericKeyword, PortKeyword
+from pyVHDLParser.Token.Parser        import SpaceToken, WordToken
+from pyVHDLParser.Blocks              import BlockParserException, Block, TokenToBlockParser
+from pyVHDLParser.Blocks.Common       import LinebreakBlock, IndentationBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Comment      import SingleLineCommentBlock, MultiLineCommentBlock
+from pyVHDLParser.Blocks.Generic      import EndBlock as EndBlockBase
+from pyVHDLParser.Blocks.List         import GenericList, PortList
+
+
+@export
+class ConditionBlock(Block):
+	@classmethod
+	def stateWhileKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected whitespace after keyword WHILE."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewBlock =    ConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				_ =                       LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    ConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    ConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateWhitespace1
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected while name (identifier)."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				if not isinstance(parserState.LastBlock, MultiLineCommentBlock):
+					parserState.NewBlock =  ConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True)
+					_ =                     LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				else:
+					parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    ConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    ConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateWhileName
+			return
+		elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhileName(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected whitespace after keyword WHILE."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewBlock =    ConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				_ =                       LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    ConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace2
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    ConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace2
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NextState =     cls.stateWhitespace2
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhitespace2(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected keyword IS after while name."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				if not isinstance(parserState.LastBlock, MultiLineCommentBlock):
+					parserState.NewBlock =  ConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True)
+					_ =                     LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				else:
+					parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    ConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    ConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, WordToken) and (token <= "is"):
+			parserState.NewToken =      IsKeyword(fromExistingToken=token)
+			parserState.NewBlock =      ConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.NextState =     cls.stateDeclarativeRegion
+			return
+		elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateDeclarativeRegion(cls, parserState: TokenToBlockParser):
+		errorMessage = "Expected one of these keywords: generic, port, begin, end."
+		token = parserState.Token
+		if isinstance(parserState.Token, CharacterToken):
+			if token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = parserState.NewToken
+				return
+			elif token == "-":
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =      IndentationToken(fromExistingToken=token)
+			parserState.NewBlock =      IndentationBlock(parserState.LastBlock, parserState.NewToken)
+			return
+		elif isinstance(token, WordToken):
+			keyword = token.Value.lower()
+			if keyword == "generic":
+				newToken =              GenericKeyword(fromExistingToken=token)
+				parserState.PushState = GenericList.OpenBlock.stateGenericKeyword
+			elif keyword == "port":
+				newToken =              PortKeyword(fromExistingToken=token)
+				parserState.PushState = PortList.OpenBlock.statePortKeyword
+			elif keyword == "end":
+				newToken =              EndKeyword(fromExistingToken=token)
+				parserState.NextState = EndBlock.stateEndKeyword
+			else:
+				raise BlockParserException(errorMessage, token)
+
+			parserState.NewToken =      newToken
+			parserState.TokenMarker =   newToken
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+
+@export
+class EndBlock(EndBlockBase):
+	KEYWORD =       LoopKeyword
+	EXPECTED_NAME = KEYWORD.__KEYWORD__
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/ControlStructure/__init__.py.html b/typing/html/pyVHDLParser/Blocks/ControlStructure/__init__.py.html new file mode 100644 index 000000000..00a41f77f --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/ControlStructure/__init__.py.html @@ -0,0 +1,74 @@ + + + + + + +

pyVHDLParser.Blocks.ControlStructure

+ + + + + + +
pyVHDLParser/Blocks/ControlStructure/__init__.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/Exception.py.html b/typing/html/pyVHDLParser/Blocks/Exception.py.html new file mode 100644 index 000000000..5895f5742 --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/Exception.py.html @@ -0,0 +1,74 @@ + + + + + + +

pyVHDLParser.Blocks.Exception

+ + + + + + +
pyVHDLParser/Blocks/Exception.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/Expression.py.html b/typing/html/pyVHDLParser/Blocks/Expression.py.html new file mode 100644 index 000000000..0cc437bf5 --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/Expression.py.html @@ -0,0 +1,1865 @@ + + + + + + +

pyVHDLParser.Blocks.Expression

+ + + + + + +
pyVHDLParser/Blocks/Expression.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+380
+381
+382
+383
+384
+385
+386
+387
+388
+389
+390
+391
+392
+393
+394
+395
+396
+397
+398
+399
+400
+401
+402
+403
+404
+405
+406
+407
+408
+409
+410
+411
+412
+413
+414
+415
+416
+417
+418
+419
+420
+421
+422
+423
+424
+425
+426
+427
+428
+429
+430
+431
+432
+433
+434
+435
+436
+437
+438
+439
+440
+441
+442
+443
+444
+445
+446
+447
+448
+449
+450
+451
+452
+453
+454
+455
+456
+457
+458
+459
+460
+461
+462
+463
+464
+465
+466
+467
+468
+469
+470
+471
+472
+473
+474
+475
+476
+477
+478
+479
+480
+481
+482
+483
+484
+485
+486
+487
+488
+489
+490
+491
+492
+493
+494
+495
+496
+497
+498
+499
+500
+501
+502
+503
+504
+505
+506
+507
+508
+509
+510
+511
+512
+513
+514
+515
+516
+517
+518
+519
+520
+521
+522
+523
+524
+525
+526
+527
+528
+529
+530
+531
+532
+533
+534
+535
+536
+537
+538
+539
+540
+541
+542
+543
+544
+545
+546
+547
+548
+549
+550
+551
+552
+553
+554
+555
+556
+557
+558
+559
+560
+561
+562
+563
+564
+565
+566
+567
+568
+569
+570
+571
+572
+573
+574
+575
+576
+577
+578
+579
+580
+581
+582
+583
+584
+585
+586
+587
+588
+589
+590
+591
+592
+593
+594
+595
+596
+597
+598
+599
+600
+601
+602
+603
+604
+605
+606
+607
+608
+609
+610
+611
+612
+613
+614
+615
+616
+617
+618
+619
+620
+621
+622
+623
+624
+625
+626
+627
+628
+629
+630
+631
+632
+633
+634
+635
+636
+637
+638
+639
+640
+641
+642
+643
+644
+645
+646
+647
+648
+649
+650
+651
+652
+653
+654
+655
+656
+657
+658
+659
+660
+661
+662
+663
+664
+665
+666
+667
+668
+669
+670
+671
+672
+673
+674
+675
+676
+677
+678
+679
+680
+681
+682
+683
+684
+685
+686
+687
+688
+689
+690
+691
+692
+693
+694
+695
+696
+697
+698
+699
+700
+701
+702
+703
+704
+705
+706
+707
+708
+709
+710
+711
+712
+713
+714
+715
+716
+717
+718
+719
+720
+721
+722
+723
+724
+725
+726
+727
+728
+729
+730
+731
+732
+733
+734
+735
+736
+737
+738
+739
+740
+741
+742
+743
+744
+745
+746
+747
+748
+749
+750
+751
+752
+753
+754
+755
+756
+757
+758
+759
+760
+761
+762
+763
+764
+765
+766
+767
+768
+769
+770
+771
+772
+773
+774
+775
+776
+777
+778
+779
+780
+781
+782
+783
+784
+785
+786
+787
+788
+789
+790
+791
+792
+793
+794
+795
+796
+797
+798
+799
+800
+801
+802
+803
+804
+805
+806
+807
+808
+809
+810
+811
+812
+813
+814
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators         import export
+
+from pyVHDLParser.Token           import FusedCharacterToken, CharacterToken, WordToken, LiteralToken, SpaceToken, LinebreakToken
+from pyVHDLParser.Token           import CommentToken, Token, MultiLineCommentToken, IndentationToken, SingleLineCommentToken
+from pyVHDLParser.Token.Keywords  import EqualOperator, PlusOperator, MinusOperator, MultiplyOperator, DivideOperator, ConcatOperator, LessThanOperator
+from pyVHDLParser.Token.Keywords  import GreaterThanOperator, DelimiterToken, PowerOperator, UnequalOperator, LessThanOrEqualOperator
+from pyVHDLParser.Token.Keywords  import GreaterThanOrEqualOperator, MatchingEqualOperator, MatchingUnequalOperator, MatchingLessThanOperator
+from pyVHDLParser.Token.Keywords  import MatchingLessThanOrEqualOperator, MatchingGreaterThanOperator, MatchingGreaterThanOrEqualOperator, OrOperator
+from pyVHDLParser.Token.Keywords  import NorOperator, AndOperator, NandOperator, XorOperator, XnorOperator, SlaOperator, SllOperator, SraOperator, SrlOperator
+from pyVHDLParser.Token.Keywords  import NotOperator, AbsOperator, OpeningRoundBracketToken, BoundaryToken, ClosingRoundBracketToken, IdentifierToken
+from pyVHDLParser.Token.Keywords  import LoopKeyword, ToKeyword, DowntoKeyword, EndToken
+from pyVHDLParser.Blocks          import Block, TokenToBlockParser, BlockParserException, CommentBlock
+from pyVHDLParser.Blocks.Common   import LinebreakBlock, WhitespaceBlock
+
+
+@export
+class ExpressionBlock(Block):
+	CHARACTER_TRANSLATION = {
+		"=":    EqualOperator,
+		"+":    PlusOperator,
+		"-":    MinusOperator,
+		"*":    MultiplyOperator,
+		"/":    DivideOperator,
+		"&":    ConcatOperator,
+		"<":    LessThanOperator,
+		">":    GreaterThanOperator,
+		",":    DelimiterToken
+		# ";":    EndToken
+	}
+	FUSED_CHARACTER_TRANSLATION = {
+		"**":   PowerOperator,
+		"/=":   UnequalOperator,
+		"<=":   LessThanOrEqualOperator,
+		">=":   GreaterThanOrEqualOperator,
+		"?=":   MatchingEqualOperator,
+		"?/=":  MatchingUnequalOperator,
+		"?<":   MatchingLessThanOperator,
+		"?<=":  MatchingLessThanOrEqualOperator,
+		"?>":   MatchingGreaterThanOperator,
+		"?>=":  MatchingGreaterThanOrEqualOperator
+		# "=>":   MapAssociationKeyword,
+		# "<=>":  SignalAssociationKeyword
+	}
+	OPERATOR_TRANSLATIONS = {
+		"or":    OrOperator,
+		"nor":   NorOperator,
+		"and":   AndOperator,
+		"nand":  NandOperator,
+		"xor":   XorOperator,
+		"xnor":  XnorOperator,
+		"sla":   SlaOperator,
+		"sll":   SllOperator,
+		"sra":   SraOperator,
+		"srl":   SrlOperator,
+		"not":   NotOperator,
+		"abs":   AbsOperator
+	}
+
+
+@export
+class ExpressionBlockEndedByCharORClosingRoundBracket(ExpressionBlock):
+	EXIT_CHAR:  str
+	EXIT_TOKEN: Token
+	EXIT_BLOCK: Block
+
+	@classmethod
+	def stateBeforeExpression(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken):
+			if token == "(":
+				parserState.NewToken =    OpeningRoundBracketToken(fromExistingToken=token)
+				parserState.Counter +=    1
+				parserState.NextState =   cls.stateExpression
+				return
+			else:
+				parserState.NewToken =    cls.CHARACTER_TRANSLATION[token.Value](fromExistingToken=token)
+				parserState.NextState =   cls.stateExpression
+				return
+		elif isinstance(token, WordToken):
+			try:
+				parserState.NewToken =    cls.OPERATOR_TRANSLATIONS[token.Value](fromExistingToken=token)
+			except KeyError:
+				parserState.NewToken =    IdentifierToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateExpression
+			return
+		elif isinstance(token, LiteralToken):
+			parserState.NextState =     cls.stateExpression
+			return
+		elif isinstance(token, LinebreakToken):
+			parserState.NewBlock =      LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken):
+			parserState.NextState =     cls.stateWhitespace1
+			return
+
+		raise BlockParserException("Expected '(', unary operator, identifier, literal or whitespace.", token)
+
+	@classmethod
+	def stateExpression(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, FusedCharacterToken):
+			try:
+				parserState.NewToken = cls.FUSED_CHARACTER_TRANSLATION[token.Value](fromExistingToken=token)
+				return
+			except KeyError:
+				if token == cls.EXIT_CHAR:
+					if parserState.Counter == 0:
+						parserState.NewToken = cls.EXIT_TOKEN(fromExistingToken=token)
+						parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+						_ =                    cls.EXIT_BLOCK(parserState.NewBlock, parserState.NewToken, endToken=parserState.NewToken)
+						parserState.Pop(2)
+						return
+					else:
+						raise BlockParserException("Mismatch in opening and closing parenthesis. Counter={0}".format(parserState.Counter), token)
+		elif isinstance(token, CharacterToken):
+			if token == cls.EXIT_CHAR:
+				if parserState.Counter == 0:
+					parserState.NewToken =  cls.EXIT_TOKEN(fromExistingToken=token)
+					parserState.NewBlock =  cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+					_ =                     cls.EXIT_BLOCK(parserState.NewBlock, parserState.NewToken, endToken=parserState.NewToken)
+					parserState.Pop(2)
+					return
+				else:
+					raise BlockParserException("Mismatch in opening and closing parenthesis. Counter={0}".format(parserState.Counter), token)
+			elif token == "(":
+				parserState.NewToken =    OpeningRoundBracketToken(fromExistingToken=token)
+				parserState.Counter +=    1
+				return
+			elif token == ")":
+				if parserState.Counter == 0:
+					parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+					parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+					parserState.Pop(3, parserState.NewToken)
+					return
+				else:
+					parserState.NewToken =    ClosingRoundBracketToken(fromExistingToken=token)
+					parserState.Counter -=    1
+					return
+			else:
+				parserState.NewToken =    cls.CHARACTER_TRANSLATION[token.Value](fromExistingToken=token)
+				return
+		elif isinstance(token, WordToken):
+			try:
+				parserState.NewToken =    cls.OPERATOR_TRANSLATIONS[token.Value](fromExistingToken=token)
+			except KeyError:
+				parserState.NewToken =    IdentifierToken(fromExistingToken=token)
+			return
+		elif isinstance(token, LiteralToken):
+			return
+		elif isinstance(token, SpaceToken):
+			parserState.NextState =     cls.stateWhitespace1
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                     LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         block(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			parserState.NextState =     cls.stateWhitespace1
+			return
+
+		raise BlockParserException("Expected ?????????????.", token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, FusedCharacterToken):
+			try:
+				parserState.NewToken =    cls.FUSED_CHARACTER_TRANSLATION[token.Value](fromExistingToken=token)
+				parserState.NextState =   cls.stateExpression
+				return
+			except KeyError:
+				if token == cls.EXIT_CHAR:
+					if parserState.Counter == 0:
+						parserState.NewToken =  cls.EXIT_TOKEN(fromExistingToken=token)
+						parserState.NewBlock =  cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+						_ =                     cls.EXIT_BLOCK(parserState.NewBlock, parserState.NewToken, endToken=parserState.NewToken)
+						parserState.Pop(1)
+						return
+					else:
+						raise BlockParserException("Mismatch in opening and closing parenthesis. Counter={0}".format(parserState.Counter), token)
+		elif isinstance(token, CharacterToken):
+			if token == cls.EXIT_CHAR:
+				if parserState.Counter == 0:
+					parserState.NewToken =  cls.EXIT_TOKEN(fromExistingToken=token)
+					parserState.NewBlock =  cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+					_ =                     cls.EXIT_BLOCK(parserState.NewBlock, parserState.NewToken, endToken=parserState.NewToken)
+					parserState.Pop(2)
+					return
+				else:
+					raise BlockParserException("Mismatch in opening and closing parenthesis. Counter={0}".format(parserState.Counter), token)
+			elif token == "(":
+				parserState.NewToken =    OpeningRoundBracketToken(fromExistingToken=token)
+				parserState.Counter +=    1
+				parserState.NextState =   cls.stateExpression
+				return
+			elif token == ")":
+				if parserState.Counter == 0:
+					parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+					parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+
+					parserState.Pop(3, tokenMarker=parserState.NewToken)
+					return
+				else:
+					parserState.NewToken =    ClosingRoundBracketToken(fromExistingToken=token)
+					parserState.Counter -=    1
+					parserState.NextState =   cls.stateExpression
+					return
+			else:
+				parserState.NewToken =    cls.CHARACTER_TRANSLATION[token.Value](fromExistingToken=token)
+				parserState.NextState =   cls.stateExpression
+				return
+		elif isinstance(token, WordToken):
+			try:
+				parserState.NewToken =    cls.OPERATOR_TRANSLATIONS[token.Value](fromExistingToken=token)
+			except KeyError:
+				parserState.NewToken =    IdentifierToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateExpression
+			return
+		elif isinstance(token, LiteralToken):
+			parserState.NextState =     cls.stateExpression
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			if not isinstance(parserState.LastBlock, LinebreakBlock):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       CommentBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    CommentBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected ????????????.", token)
+
+
+@export
+class ExpressionBlockEndedByKeywordORClosingRoundBracket(ExpressionBlock):
+	EXIT_KEYWORD =  None
+	EXIT_BLOCK =    None
+
+	@classmethod
+	def stateExpression(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, FusedCharacterToken):
+			parserState.NewToken = cls.FUSED_CHARACTER_TRANSLATION[token.Value](fromExistingToken=token)
+			return
+		elif isinstance(token, CharacterToken):
+			if token == "(":
+				parserState.NewToken =    OpeningRoundBracketToken(fromExistingToken=token)
+				parserState.Counter +=    1
+				return
+			elif token == ")":
+				parserState.NewToken =  ClosingRoundBracketToken(fromExistingToken=token)
+				parserState.Counter -=  1
+				return
+			else:
+				parserState.NewToken =    cls.CHARACTER_TRANSLATION[token.Value](fromExistingToken=token)
+				return
+		elif isinstance(token, WordToken):
+			if token <= cls.EXIT_KEYWORD.__KEYWORD__:
+				parserState.NewToken =    cls.EXIT_KEYWORD(token)
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+				_ =                       cls.EXIT_BLOCK(parserState.NewBlock, parserState.NewToken)
+				parserState.Pop()
+				return
+			else:
+				try:
+					parserState.NewToken =    cls.OPERATOR_TRANSLATIONS[token.Value](fromExistingToken=token)
+				except KeyError:
+					parserState.NewToken =    IdentifierToken(fromExistingToken=token)
+				return
+		elif isinstance(token, LiteralToken):
+			return
+		elif isinstance(token, SpaceToken):
+			parserState.NextState =     cls.stateWhitespace1
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                     LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         block(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			parserState.NextState =     cls.stateWhitespace1
+			return
+
+		raise BlockParserException("Expected '(' or whitespace after keyword GENERIC.", token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, FusedCharacterToken):
+			parserState.NewToken =    cls.FUSED_CHARACTER_TRANSLATION[token.Value](fromExistingToken=token)
+			parserState.NextState =   cls.stateExpression
+			return
+		elif isinstance(token, CharacterToken):
+			if token == "(":
+				parserState.NewToken =    OpeningRoundBracketToken(fromExistingToken=token)
+				parserState.Counter +=    1
+				parserState.NextState =   cls.stateExpression
+				return
+			elif token == ")":
+				parserState.NewToken =    ClosingRoundBracketToken(fromExistingToken=token)
+				parserState.Counter -=    1
+				parserState.NextState =   cls.stateExpression
+				return
+			else:
+				parserState.NewToken =    cls.CHARACTER_TRANSLATION[token.Value](fromExistingToken=token)
+				parserState.NextState =   cls.stateExpression
+				return
+		elif isinstance(token, WordToken):
+			if token <= cls.EXIT_KEYWORD.__KEYWORD__:
+				parserState.NewToken =    cls.EXIT_KEYWORD(fromExistingToken=token)
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+				_ =                       cls.EXIT_BLOCK(parserState.NewBlock, parserState.NewToken)
+				parserState.Pop()
+				return
+			else:
+				try:
+					parserState.NewToken =  cls.OPERATOR_TRANSLATIONS[token.Value](fromExistingToken=token)
+				except KeyError:
+					parserState.NewToken =  IdentifierToken(fromExistingToken=token)
+				parserState.NextState =   cls.stateExpression
+				return
+		elif isinstance(token, LiteralToken):
+			parserState.NextState =     cls.stateExpression
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			if not isinstance(parserState.LastBlock, LinebreakBlock):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       CommentBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    CommentBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected ????????????.", token)
+
+
+@export
+class ExpressionBlockEndedByToOrDownto(ExpressionBlock):
+	EXIT_BLOCK =    None
+
+	@classmethod
+	def stateExpression(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, FusedCharacterToken):
+			parserState.NewToken = cls.FUSED_CHARACTER_TRANSLATION[token.Value](fromExistingToken=token)
+			return
+		elif isinstance(token, CharacterToken):
+			if token == "(":
+				parserState.NewToken =    OpeningRoundBracketToken(fromExistingToken=token)
+				parserState.Counter +=    1
+				return
+			elif token == ")":
+				parserState.NewToken =  ClosingRoundBracketToken(fromExistingToken=token)
+				parserState.Counter -=  1
+				return
+			else:
+				parserState.NewToken =    cls.CHARACTER_TRANSLATION[token.Value](fromExistingToken=token)
+				return
+		elif isinstance(token, WordToken):
+			tokenValue = token.Value.lower()
+			if tokenValue == "to":
+				from pyVHDLParser.Blocks.ControlStructure.ForLoop import LoopIterationDirectionBlock
+
+				parserState.NewToken =    ToKeyword(fromExistingToken=token)
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+				_ =                       LoopIterationDirectionBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.Pop(1, parserState.NewToken)
+				return
+			elif tokenValue == "downto":
+				from pyVHDLParser.Blocks.ControlStructure.ForLoop import LoopIterationDirectionBlock
+
+				parserState.NewToken =    DowntoKeyword(fromExistingToken=token)
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+				_ =                       LoopIterationDirectionBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.Pop(1, parserState.NewToken)
+				return
+			else:
+				try:
+					parserState.NewToken =    cls.OPERATOR_TRANSLATIONS[token.Value](fromExistingToken=token)
+				except KeyError:
+					parserState.NewToken =    IdentifierToken(fromExistingToken=token)
+				return
+		elif isinstance(token, LiteralToken):
+			return
+		elif isinstance(token, SpaceToken):
+			parserState.NextState =     cls.stateWhitespace1
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                     LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         block(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			parserState.NextState =     cls.stateWhitespace1
+			return
+
+		raise BlockParserException("Expected '(' or whitespace after keyword GENERIC.", token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, FusedCharacterToken):
+			parserState.NewToken =    cls.FUSED_CHARACTER_TRANSLATION[token.Value](fromExistingToken=token)
+			parserState.NextState =   cls.stateExpression
+			return
+		elif isinstance(token, CharacterToken):
+			if token == "(":
+				parserState.NewToken =    OpeningRoundBracketToken(fromExistingToken=token)
+				parserState.Counter +=    1
+				parserState.NextState =   cls.stateExpression
+				return
+			elif token == ")":
+				parserState.NewToken =  ClosingRoundBracketToken(fromExistingToken=token)
+				parserState.Counter -=  1
+				parserState.NextState = cls.stateExpression
+				return
+			else:
+				parserState.NewToken =    cls.CHARACTER_TRANSLATION[token.Value](fromExistingToken=token)
+				parserState.NextState =   cls.stateExpression
+				return
+		elif isinstance(token, WordToken):
+			tokenValue = token.Value.lower()
+			if tokenValue == "to":
+				from pyVHDLParser.Blocks.ControlStructure.ForLoop import LoopIterationDirectionBlock
+
+				parserState.NewToken =    ToKeyword(fromExistingToken=token)
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+				_ =                       LoopIterationDirectionBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.Pop()
+				return
+			elif tokenValue == "downto":
+				from pyVHDLParser.Blocks.ControlStructure.ForLoop import LoopIterationDirectionBlock
+
+				parserState.NewToken =    DowntoKeyword(fromExistingToken=token)
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+				_ =                       LoopIterationDirectionBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.Pop()
+				return
+			else:
+				try:
+					parserState.NewToken =  cls.OPERATOR_TRANSLATIONS[token.Value](fromExistingToken=token)
+				except KeyError:
+					parserState.NewToken =  IdentifierToken(fromExistingToken=token)
+				parserState.NextState =   cls.stateExpression
+				return
+		elif isinstance(token, LiteralToken):
+			parserState.NextState =     cls.stateExpression
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			if not isinstance(parserState.LastBlock, LinebreakBlock):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       CommentBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    CommentBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected ????????????.", token)
+
+
+@export
+class ExpressionBlockEndedByKeywordOrToOrDownto(ExpressionBlock):
+	EXIT_KEYWORD =  None
+	EXIT_BLOCK =    None
+
+	@classmethod
+	def stateExpression(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, FusedCharacterToken):
+			parserState.NewToken = cls.FUSED_CHARACTER_TRANSLATION[token.Value](fromExistingToken=token)
+			return
+		elif isinstance(token, CharacterToken):
+			if token == "(":
+				parserState.NewToken =    OpeningRoundBracketToken(fromExistingToken=token)
+				parserState.Counter +=    1
+				return
+			elif token == ")":
+				parserState.NewToken =  ClosingRoundBracketToken(fromExistingToken=token)
+				parserState.Counter -=  1
+				return
+			else:
+				parserState.NewToken =    cls.CHARACTER_TRANSLATION[token.Value](fromExistingToken=token)
+				return
+		elif isinstance(token, WordToken):
+			tokenValue = token.Value.lower()
+			if tokenValue == cls.EXIT_KEYWORD.__KEYWORD__:
+				parserState.NewToken =    LoopKeyword(fromExistingToken=token)
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+				_ =                       cls.EXIT_BLOCK(parserState.NewBlock, parserState.NewToken)
+				parserState.Pop(2, parserState.NewToken)
+				return
+			elif tokenValue == "to":
+				from pyVHDLParser.Blocks.ControlStructure.ForLoop import LoopIterationDirectionBlock
+
+				parserState.NewToken =    ToKeyword(fromExistingToken=token)
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+				_ =                       LoopIterationDirectionBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.Pop(1, parserState.NewToken)
+				return
+			elif tokenValue == "downto":
+				from pyVHDLParser.Blocks.ControlStructure.ForLoop import LoopIterationDirectionBlock
+
+				parserState.NewToken =    DowntoKeyword(fromExistingToken=token)
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+				_ =                       LoopIterationDirectionBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.Pop(1, parserState.NewToken)
+				return
+			else:
+				try:
+					parserState.NewToken =    cls.OPERATOR_TRANSLATIONS[token.Value](fromExistingToken=token)
+				except KeyError:
+					parserState.NewToken =    IdentifierToken(fromExistingToken=token)
+				return
+		elif isinstance(token, LiteralToken):
+			return
+		elif isinstance(token, SpaceToken):
+			parserState.NextState =     cls.stateWhitespace1
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                     LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         block(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			parserState.NextState =     cls.stateWhitespace1
+			return
+
+		raise BlockParserException("Expected '(' or whitespace after keyword GENERIC.", token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, FusedCharacterToken):
+			parserState.NewToken =    cls.FUSED_CHARACTER_TRANSLATION[token.Value](fromExistingToken=token)
+			parserState.NextState =   cls.stateExpression
+			return
+		elif isinstance(token, CharacterToken):
+			if token == "(":
+				parserState.NewToken =    OpeningRoundBracketToken(fromExistingToken=token)
+				parserState.Counter +=    1
+				parserState.NextState =   cls.stateExpression
+				return
+			elif token == ")":
+				parserState.NewToken =  ClosingRoundBracketToken(fromExistingToken=token)
+				parserState.Counter -=  1
+				parserState.NextState = cls.stateExpression
+				return
+			else:
+				parserState.NewToken =    cls.CHARACTER_TRANSLATION[token.Value](fromExistingToken=token)
+				parserState.NextState =   cls.stateExpression
+				return
+		elif isinstance(token, WordToken):
+			tokenValue = token.Value.lower()
+			if tokenValue == cls.EXIT_KEYWORD.__KEYWORD__:
+				parserState.NewToken =    LoopKeyword(fromExistingToken=token)
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+				_ =                       cls.EXIT_BLOCK(parserState.NewBlock, parserState.NewToken)
+				parserState.Pop(1, parserState.NewToken)
+				return
+			elif tokenValue == "to":
+				from pyVHDLParser.Blocks.ControlStructure.ForLoop import LoopIterationDirectionBlock
+
+				parserState.NewToken =    ToKeyword(fromExistingToken=token)
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+				_ =                       LoopIterationDirectionBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.Pop()
+				return
+			elif tokenValue == "downto":
+				from pyVHDLParser.Blocks.ControlStructure.ForLoop import LoopIterationDirectionBlock
+
+				parserState.NewToken =    DowntoKeyword(fromExistingToken=token)
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+				_ =                       LoopIterationDirectionBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.Pop()
+				return
+			else:
+				try:
+					parserState.NewToken =  cls.OPERATOR_TRANSLATIONS[token.Value](fromExistingToken=token)
+				except KeyError:
+					parserState.NewToken =  IdentifierToken(fromExistingToken=token)
+				parserState.NextState =   cls.stateExpression
+				return
+		elif isinstance(token, LiteralToken):
+			parserState.NextState =     cls.stateExpression
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			if not isinstance(parserState.LastBlock, LinebreakBlock):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       CommentBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    CommentBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected ????????????.", token)
+
+
+@export
+class ExpressionBlockEndedBySemicolon(ExpressionBlock):
+	END_BLOCK = None
+
+	@classmethod
+	def stateExpression(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, FusedCharacterToken):
+			parserState.NewToken = cls.FUSED_CHARACTER_TRANSLATION[token.Value](fromExistingToken=token)
+			return
+		elif isinstance(token, CharacterToken):
+			if token == ";":
+				if parserState.Counter == 0:
+					parserState.NewToken =  EndToken(fromExistingToken=token)
+					parserState.NewBlock =  cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+					_ =                     cls.END_BLOCK(parserState.NewBlock, parserState.NewToken, endToken=parserState.NewToken)
+					parserState.Pop(2)
+					return
+				else:
+					raise BlockParserException("Mismatch in opening and closing parenthesis. Counter={0}".format(parserState.Counter), token)
+			elif token == "(":
+				parserState.NewToken =    OpeningRoundBracketToken(fromExistingToken=token)
+				parserState.Counter +=    1
+				return
+			elif token == ")":
+				if parserState.Counter == -1:
+					raise BlockParserException("Mismatch in opening and closing parenthesis. Counter={0}".format(parserState.Counter), token)
+				else:
+					parserState.NewToken =  ClosingRoundBracketToken(fromExistingToken=token)
+					parserState.Counter -=  1
+					return
+			else:
+				parserState.NewToken =    cls.CHARACTER_TRANSLATION[token.Value](fromExistingToken=token)
+				return
+		elif isinstance(token, WordToken):
+			try:
+				parserState.NewToken =    cls.OPERATOR_TRANSLATIONS[token.Value](fromExistingToken=token)
+			except KeyError:
+				parserState.NewToken =    IdentifierToken(fromExistingToken=token)
+			return
+		elif isinstance(token, LiteralToken):
+			return
+		elif isinstance(token, SpaceToken):
+			parserState.NextState =     cls.stateWhitespace1
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                     LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         block(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			parserState.NextState =     cls.stateWhitespace1
+			return
+
+		raise BlockParserException("Expected operator, '(', ')', ';' or whitespace.", token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, FusedCharacterToken):
+			parserState.NewToken =    cls.FUSED_CHARACTER_TRANSLATION[token.Value](fromExistingToken=token)
+			parserState.NextState =   cls.stateExpression
+			return
+		elif isinstance(token, CharacterToken):
+			if token == ";":
+				if parserState.Counter == 0:
+					parserState.NewToken =  EndToken(fromExistingToken=token)
+					parserState.NewBlock =  cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+					_ =                     cls.END_BLOCK(parserState.NewBlock, parserState.NewToken, endToken=parserState.NewToken)
+					parserState.Pop(2)
+					return
+				else:
+					raise BlockParserException("Mismatch in opening and closing parenthesis. Counter={0}".format(parserState.Counter), token)
+			elif token == "(":
+				parserState.NewToken =    OpeningRoundBracketToken(fromExistingToken=token)
+				parserState.Counter +=    1
+				parserState.NextState =   cls.stateExpression
+				return
+			elif token == ")":
+				if parserState.Counter == -1:
+					raise BlockParserException("Mismatch in opening and closing parenthesis. Counter={0}".format(parserState.Counter), token)
+				else:
+					parserState.NewToken =  ClosingRoundBracketToken(fromExistingToken=token)
+					parserState.Counter -=  1
+					parserState.NextState = cls.stateExpression
+					return
+			else:
+				parserState.NewToken =    cls.CHARACTER_TRANSLATION[token.Value](fromExistingToken=token)
+				parserState.NextState =   cls.stateExpression
+				return
+		elif isinstance(token, WordToken):
+			try:
+				parserState.NewToken =    cls.OPERATOR_TRANSLATIONS[token.Value](fromExistingToken=token)
+			except KeyError:
+				parserState.NewToken =    IdentifierToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateExpression
+			return
+		elif isinstance(token, LiteralToken):
+			parserState.NextState =     cls.stateExpression
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			if not isinstance(parserState.LastBlock, LinebreakBlock):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       CommentBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    CommentBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected identifier, literal, operator, '(', ')' or ';'.", token)
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/Generate/CaseGenerate.py.html b/typing/html/pyVHDLParser/Blocks/Generate/CaseGenerate.py.html new file mode 100644 index 000000000..784d60dc7 --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/Generate/CaseGenerate.py.html @@ -0,0 +1,562 @@ + + + + + + +

pyVHDLParser.Blocks.Generate.CaseGenerate

+ + + + + + +
pyVHDLParser/Blocks/Generate/CaseGenerate.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators             import export
+
+from pyVHDLParser.Token.Keywords      import BoundaryToken, IdentifierToken, BeginKeyword
+from pyVHDLParser.Token.Keywords      import IsKeyword, EndKeyword, GenericKeyword, PortKeyword
+from pyVHDLParser.Token               import CharacterToken, SpaceToken, WordToken, LinebreakToken, IndentationToken
+from pyVHDLParser.Blocks              import Block, BlockParserException, TokenToBlockParser
+from pyVHDLParser.Blocks.Common       import LinebreakBlock, IndentationBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Comment      import SingleLineCommentBlock, MultiLineCommentBlock
+from pyVHDLParser.Blocks.Generate     import EndGenerateBlock as EndGenerateBlockBase
+from pyVHDLParser.Blocks.List         import GenericList, PortList
+
+
+@export
+class CaseBlock(Block):
+	@classmethod
+	def stateGenerateKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected whitespace after keyword GENERATE."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewBlock =    CaseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				_ =                       LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    CaseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    CaseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateWhitespace1
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected generate name (identifier)."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				if not isinstance(parserState.LastBlock, MultiLineCommentBlock):
+					parserState.NewBlock =  CaseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True)
+					_ =                     LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				else:
+					parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    CaseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    CaseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateGenerateName
+			return
+		elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateGenerateName(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected whitespace after keyword GENERATE."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewBlock =    CaseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				_ =                       LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace2
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    CaseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace2
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    CaseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace2
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NextState =     cls.stateWhitespace2
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhitespace2(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected keyword IS after generate name."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				if not isinstance(parserState.LastBlock, MultiLineCommentBlock):
+					parserState.NewBlock =  CaseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True)
+					_ =                     LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				else:
+					parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    CaseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    CaseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, WordToken) and (token <= "is"):
+			parserState.NewToken =      IsKeyword(fromExistingToken=token)
+			parserState.NewBlock =      CaseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.NextState =     cls.stateDeclarativeRegion
+			return
+		elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateDeclarativeRegion(cls, parserState: TokenToBlockParser):
+		errorMessage = "Expected one of these keywords: generic, port, begin, end."
+		token = parserState.Token
+		if isinstance(parserState.Token, CharacterToken):
+			if token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = parserState.NewToken
+				return
+			elif token == "-":
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =      IndentationToken(fromExistingToken=token)
+			parserState.NewBlock =      IndentationBlock(parserState.LastBlock, parserState.NewToken)
+			return
+		elif isinstance(token, WordToken):
+			keyword = token.Value.lower()
+			if keyword == "generic":
+				newToken =              GenericKeyword(fromExistingToken=token)
+				parserState.PushState = GenericList.OpenBlock.stateGenericKeyword
+			elif keyword == "port":
+				newToken =              PortKeyword(fromExistingToken=token)
+				parserState.PushState = PortList.OpenBlock.statePortKeyword
+			elif keyword == "end":
+				newToken =              EndKeyword(fromExistingToken=token)
+				parserState.NextState = EndGenerateBlock.stateEndKeyword
+			elif keyword == "begin":
+				parserState.NewToken =  BeginKeyword(fromExistingToken=token)
+				parserState.NewBlock =  BeginBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.NextState = BeginBlock.stateBeginKeyword
+				return
+			else:
+				raise BlockParserException(errorMessage, token)
+
+			parserState.NewToken =      newToken
+			parserState.TokenMarker =   newToken
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+
+@export
+class BeginBlock(Block):
+	pass
+
+
+@export
+class EndGenerateBlock(EndGenerateBlockBase):
+	pass
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/Generate/ForGenerate.py.html b/typing/html/pyVHDLParser/Blocks/Generate/ForGenerate.py.html new file mode 100644 index 000000000..643974c1b --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/Generate/ForGenerate.py.html @@ -0,0 +1,657 @@ + + + + + + +

pyVHDLParser.Blocks.Generate.ForGenerate

+ + + + + + +
pyVHDLParser/Blocks/Generate/ForGenerate.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators                   import export
+
+from pyVHDLParser.Token                     import CharacterToken, SpaceToken, WordToken, LinebreakToken, IndentationToken
+from pyVHDLParser.Token.Keywords            import BoundaryToken, IdentifierToken, BeginKeyword, ProcessKeyword, AssertKeyword
+from pyVHDLParser.Token.Keywords            import IsKeyword, EndKeyword, GenericKeyword, PortKeyword
+from pyVHDLParser.Blocks                    import Block, BlockParserException, TokenToBlockParser
+from pyVHDLParser.Blocks.Common             import LinebreakBlock, IndentationBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Comment            import SingleLineCommentBlock, MultiLineCommentBlock
+from pyVHDLParser.Blocks.Generate           import EndGenerateBlock as EndGenerateBlockBase
+from pyVHDLParser.Blocks.List               import GenericList, PortList
+from pyVHDLParser.Blocks.Reporting.Assert   import AssertBlock
+from pyVHDLParser.Blocks.Sequential         import Process
+
+
+@export
+class RangeBlock(Block):
+	@classmethod
+	def stateGenerateKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected whitespace after keyword GENERATE."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewBlock =    RangeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				_ =                       LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    RangeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    RangeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateWhitespace1
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected generate name (identifier)."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				if not isinstance(parserState.LastBlock, MultiLineCommentBlock):
+					parserState.NewBlock =  RangeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True)
+					_ =                     LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				else:
+					parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    RangeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    RangeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateGenerateName
+			return
+		elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateGenerateName(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected whitespace after keyword GENERATE."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewBlock =    RangeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				_ =                       LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace2
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    RangeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace2
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    RangeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace2
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NextState =     cls.stateWhitespace2
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhitespace2(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected keyword IS after generate name."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				if not isinstance(parserState.LastBlock, MultiLineCommentBlock):
+					parserState.NewBlock =  RangeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True)
+					_ =                     LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				else:
+					parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    RangeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    RangeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, WordToken) and (token <= "is"):
+			parserState.NewToken =      IsKeyword(fromExistingToken=token)
+			parserState.NewBlock =      RangeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.NextState =     cls.stateDeclarativeRegion
+			return
+		elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateDeclarativeRegion(cls, parserState: TokenToBlockParser):
+		errorMessage = "Expected one of these keywords: generic, port, begin, end."
+		token = parserState.Token
+		if isinstance(parserState.Token, CharacterToken):
+			if token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = parserState.NewToken
+				return
+			elif token == "-":
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =      IndentationToken(fromExistingToken=token)
+			parserState.NewBlock =      IndentationBlock(parserState.LastBlock, parserState.NewToken)
+			return
+		elif isinstance(token, WordToken):
+			keyword = token.Value.lower()
+			if keyword == "generic":
+				newToken =              GenericKeyword(fromExistingToken=token)
+				parserState.PushState = GenericList.OpenBlock.stateGenericKeyword
+			elif keyword == "port":
+				newToken =              PortKeyword(fromExistingToken=token)
+				parserState.PushState = PortList.OpenBlock.statePortKeyword
+			elif keyword == "end":
+				newToken =              EndKeyword(fromExistingToken=token)
+				parserState.NextState = EndGenerateBlock.stateEndKeyword
+			elif keyword == "begin":
+				parserState.NewToken =  BeginKeyword(fromExistingToken=token)
+				parserState.NewBlock =  BeginBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.NextState = BeginBlock.stateBeginKeyword
+				return
+			else:
+				raise BlockParserException(errorMessage, token)
+
+			parserState.NewToken =      newToken
+			parserState.TokenMarker =   newToken
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+
+@export
+class BeginBlock(Block):
+	@classmethod
+	def stateBeginKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected label or one of these keywords: assert, process."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewToken = LinebreakToken(fromExistingToken=token)
+				parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = parserState.NewToken
+				return
+			elif token == "-":
+				parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			return
+		# 	parserState.NewToken = IndentationToken(fromExistingToken=token)
+		# 	parserState.NewBlock = IndentationBlock(parserState.LastBlock, parserState.NewToken)
+		# 	return
+		elif isinstance(token, WordToken):
+			keyword = token.Value.lower()
+			if keyword == "process":
+				newToken =                ProcessKeyword(fromExistingToken=token)
+				parserState.PushState =   Process.OpenBlock.stateProcessKeyword
+			elif keyword == "assert":
+				newToken =                AssertKeyword(fromExistingToken=token)
+				parserState.PushState =   AssertBlock.stateAssertKeyword
+			elif keyword == "end":
+				newToken =                EndKeyword(fromExistingToken=token)
+				parserState.NextState =   EndGenerateBlock.stateEndKeyword
+			else:
+				raise BlockParserException(errorMessage, token)
+
+			parserState.NewToken =      newToken
+			parserState.TokenMarker =   newToken
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+
+@export
+class EndGenerateBlock(EndGenerateBlockBase):
+	pass
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/Generate/IfGenerate.py.html b/typing/html/pyVHDLParser/Blocks/Generate/IfGenerate.py.html new file mode 100644 index 000000000..ddb82d030 --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/Generate/IfGenerate.py.html @@ -0,0 +1,1755 @@ + + + + + + +

pyVHDLParser.Blocks.Generate.IfGenerate

+ + + + + + +
pyVHDLParser/Blocks/Generate/IfGenerate.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+380
+381
+382
+383
+384
+385
+386
+387
+388
+389
+390
+391
+392
+393
+394
+395
+396
+397
+398
+399
+400
+401
+402
+403
+404
+405
+406
+407
+408
+409
+410
+411
+412
+413
+414
+415
+416
+417
+418
+419
+420
+421
+422
+423
+424
+425
+426
+427
+428
+429
+430
+431
+432
+433
+434
+435
+436
+437
+438
+439
+440
+441
+442
+443
+444
+445
+446
+447
+448
+449
+450
+451
+452
+453
+454
+455
+456
+457
+458
+459
+460
+461
+462
+463
+464
+465
+466
+467
+468
+469
+470
+471
+472
+473
+474
+475
+476
+477
+478
+479
+480
+481
+482
+483
+484
+485
+486
+487
+488
+489
+490
+491
+492
+493
+494
+495
+496
+497
+498
+499
+500
+501
+502
+503
+504
+505
+506
+507
+508
+509
+510
+511
+512
+513
+514
+515
+516
+517
+518
+519
+520
+521
+522
+523
+524
+525
+526
+527
+528
+529
+530
+531
+532
+533
+534
+535
+536
+537
+538
+539
+540
+541
+542
+543
+544
+545
+546
+547
+548
+549
+550
+551
+552
+553
+554
+555
+556
+557
+558
+559
+560
+561
+562
+563
+564
+565
+566
+567
+568
+569
+570
+571
+572
+573
+574
+575
+576
+577
+578
+579
+580
+581
+582
+583
+584
+585
+586
+587
+588
+589
+590
+591
+592
+593
+594
+595
+596
+597
+598
+599
+600
+601
+602
+603
+604
+605
+606
+607
+608
+609
+610
+611
+612
+613
+614
+615
+616
+617
+618
+619
+620
+621
+622
+623
+624
+625
+626
+627
+628
+629
+630
+631
+632
+633
+634
+635
+636
+637
+638
+639
+640
+641
+642
+643
+644
+645
+646
+647
+648
+649
+650
+651
+652
+653
+654
+655
+656
+657
+658
+659
+660
+661
+662
+663
+664
+665
+666
+667
+668
+669
+670
+671
+672
+673
+674
+675
+676
+677
+678
+679
+680
+681
+682
+683
+684
+685
+686
+687
+688
+689
+690
+691
+692
+693
+694
+695
+696
+697
+698
+699
+700
+701
+702
+703
+704
+705
+706
+707
+708
+709
+710
+711
+712
+713
+714
+715
+716
+717
+718
+719
+720
+721
+722
+723
+724
+725
+726
+727
+728
+729
+730
+731
+732
+733
+734
+735
+736
+737
+738
+739
+740
+741
+742
+743
+744
+745
+746
+747
+748
+749
+750
+751
+752
+753
+754
+755
+756
+757
+758
+759
+760
+761
+762
+763
+764
+765
+766
+767
+768
+769
+770
+771
+772
+773
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators                   import export
+
+from pyVHDLParser.Token                     import CharacterToken, SpaceToken, WordToken, LinebreakToken, IndentationToken
+from pyVHDLParser.Token.Keywords            import BoundaryToken, IdentifierToken
+from pyVHDLParser.Token.Keywords            import BeginKeyword, ProcessKeyword, AssertKeyword
+from pyVHDLParser.Token.Keywords            import IsKeyword, EndKeyword, GenericKeyword, PortKeyword
+from pyVHDLParser.Blocks                    import Block, BlockParserException, TokenToBlockParser
+from pyVHDLParser.Blocks.Common             import LinebreakBlock, IndentationBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Comment            import SingleLineCommentBlock, MultiLineCommentBlock
+from pyVHDLParser.Blocks.Generate           import EndGenerateBlock as EndGenerateBlockBase
+from pyVHDLParser.Blocks.List               import GenericList, PortList
+from pyVHDLParser.Blocks.Reporting.Assert   import AssertBlock
+from pyVHDLParser.Blocks.Sequential         import Process
+
+
+@export
+class IfConditionBlock(Block):
+	@classmethod
+	def stateGenerateKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected whitespace after keyword GENERATE."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewBlock =    IfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				_ =                       LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    IfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    IfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateWhitespace1
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected generate name (identifier)."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				if not isinstance(parserState.LastBlock, MultiLineCommentBlock):
+					parserState.NewBlock =  IfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True)
+					_ =                     LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				else:
+					parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    IfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    IfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateGenerateName
+			return
+		elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateGenerateName(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected whitespace after keyword GENERATE."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewBlock =    IfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				_ =                       LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace2
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    IfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace2
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    IfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace2
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NextState =     cls.stateWhitespace2
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhitespace2(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected keyword IS after generate name."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				if not isinstance(parserState.LastBlock, MultiLineCommentBlock):
+					parserState.NewBlock =  IfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True)
+					_ =                     LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				else:
+					parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    IfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    IfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, WordToken) and (token <= "is"):
+			parserState.NewToken =      IsKeyword(fromExistingToken=token)
+			parserState.NewBlock =      IfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.NextState =     cls.stateDeclarativeRegion
+			return
+		elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateDeclarativeRegion(cls, parserState: TokenToBlockParser):
+		errorMessage = "Expected one of these keywords: generic, port, begin, end."
+		token = parserState.Token
+		if isinstance(parserState.Token, CharacterToken):
+			if token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = parserState.NewToken
+				return
+			elif token == "-":
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =      IndentationToken(fromExistingToken=token)
+			parserState.NewBlock =      IndentationBlock(parserState.LastBlock, parserState.NewToken)
+			return
+		elif isinstance(token, WordToken):
+			keyword = token.Value.lower()
+			if keyword == "generic":
+				newToken =              GenericKeyword(fromExistingToken=token)
+				parserState.PushState = GenericList.OpenBlock.stateGenericKeyword
+			elif keyword == "port":
+				newToken =              PortKeyword(fromExistingToken=token)
+				parserState.PushState = PortList.OpenBlock.statePortKeyword
+			elif keyword == "end":
+				newToken =              EndKeyword(fromExistingToken=token)
+				parserState.NextState = EndGenerateBlock.stateEndKeyword
+			elif keyword == "begin":
+				parserState.NewToken =  BeginKeyword(fromExistingToken=token)
+				parserState.NewBlock =  BeginBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.NextState = BeginBlock.stateBeginKeyword
+				return
+			else:
+				raise BlockParserException(errorMessage, token)
+
+			parserState.NewToken =      newToken
+			parserState.TokenMarker =   newToken
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+
+@export
+class BeginBlock(Block):
+	@classmethod
+	def stateBeginKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected label or one of these keywords: assert, process."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewToken = LinebreakToken(fromExistingToken=token)
+				parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = parserState.NewToken
+				return
+			elif token == "-":
+				parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			return
+		# 	parserState.NewToken = IndentationToken(fromExistingToken=token)
+		# 	parserState.NewBlock = IndentationBlock(parserState.LastBlock, parserState.NewToken)
+		# 	return
+		elif isinstance(token, WordToken):
+			keyword = token.Value.lower()
+			if keyword == "process":
+				newToken =                ProcessKeyword(fromExistingToken=token)
+				parserState.PushState =   Process.OpenBlock.stateProcessKeyword
+			elif keyword == "assert":
+				newToken =                AssertKeyword(fromExistingToken=token)
+				parserState.PushState =   AssertBlock.stateAssertKeyword
+			elif keyword == "end":
+				newToken =                EndKeyword(fromExistingToken=token)
+				parserState.NextState =   EndGenerateBlock.stateEndKeyword
+			else:
+				raise BlockParserException(errorMessage, token)
+
+			parserState.NewToken =      newToken
+			parserState.TokenMarker =   newToken
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+
+@export
+class ElsIfConditionBlock(Block):
+	@classmethod
+	def stateGenerateKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected whitespace after keyword GENERATE."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewBlock =    ElsIfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				_ =                       LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    ElsIfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    ElsIfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateWhitespace1
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected generate name (identifier)."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				if not isinstance(parserState.LastBlock, MultiLineCommentBlock):
+					parserState.NewBlock =  ElsIfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True)
+					_ =                     LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				else:
+					parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    ElsIfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    ElsIfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateGenerateName
+			return
+		elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateGenerateName(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected whitespace after keyword GENERATE."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewBlock =    ElsIfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				_ =                       LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace2
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    ElsIfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace2
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    ElsIfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace2
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NextState =     cls.stateWhitespace2
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhitespace2(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected keyword IS after generate name."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				if not isinstance(parserState.LastBlock, MultiLineCommentBlock):
+					parserState.NewBlock =  ElsIfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True)
+					_ =                     LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				else:
+					parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    ElsIfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    ElsIfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, WordToken) and (token <= "is"):
+			parserState.NewToken =      IsKeyword(fromExistingToken=token)
+			parserState.NewBlock =      ElsIfConditionBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.NextState =     cls.stateDeclarativeRegion
+			return
+		elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateDeclarativeRegion(cls, parserState: TokenToBlockParser):
+		errorMessage = "Expected one of these keywords: generic, port, begin, end."
+		token = parserState.Token
+		if isinstance(parserState.Token, CharacterToken):
+			if token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = parserState.NewToken
+				return
+			elif token == "-":
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =      IndentationToken(fromExistingToken=token)
+			parserState.NewBlock =      IndentationBlock(parserState.LastBlock, parserState.NewToken)
+			return
+		elif isinstance(token, WordToken):
+			keyword = token.Value.lower()
+			if keyword == "generic":
+				newToken =              GenericKeyword(fromExistingToken=token)
+				parserState.PushState = GenericList.OpenBlock.stateGenericKeyword
+			elif keyword == "port":
+				newToken =              PortKeyword(fromExistingToken=token)
+				parserState.PushState = PortList.OpenBlock.statePortKeyword
+			elif keyword == "end":
+				newToken =              EndKeyword(fromExistingToken=token)
+				parserState.NextState = EndGenerateBlock.stateEndKeyword
+			elif keyword == "begin":
+				parserState.NewToken =  BeginKeyword(fromExistingToken=token)
+				parserState.NewBlock =  ElsIfBeginBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.NextState = ElsIfBeginBlock.stateBeginKeyword
+				return
+			else:
+				raise BlockParserException(errorMessage, token)
+
+			parserState.NewToken =      newToken
+			parserState.TokenMarker =   newToken
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+
+@export
+class ElsIfBeginBlock(Block):
+	@classmethod
+	def stateBeginKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected label or one of these keywords: assert, process."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewToken = LinebreakToken(fromExistingToken=token)
+				parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = parserState.NewToken
+				return
+			elif token == "-":
+				parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			return
+		# 	parserState.NewToken = IndentationToken(fromExistingToken=token)
+		# 	parserState.NewBlock = IndentationBlock(parserState.LastBlock, parserState.NewToken)
+		# 	return
+		elif isinstance(token, WordToken):
+			keyword = token.Value.lower()
+			if keyword == "process":
+				newToken =                ProcessKeyword(fromExistingToken=token)
+				parserState.PushState =   Process.OpenBlock.stateProcessKeyword
+			elif keyword == "assert":
+				newToken =                AssertKeyword(fromExistingToken=token)
+				parserState.PushState =   AssertBlock.stateAssertKeyword
+			elif keyword == "end":
+				newToken =                EndKeyword(fromExistingToken=token)
+				parserState.NextState =   EndGenerateBlock.stateEndKeyword
+			else:
+				raise BlockParserException(errorMessage, token)
+
+			parserState.NewToken =      newToken
+			parserState.TokenMarker =   newToken
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+
+@export
+class ElseGenerateBlock(Block):
+	@classmethod
+	def stateGenerateKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected whitespace after keyword GENERATE."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewBlock =    ElseGenerateBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				_ =                       LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    ElseGenerateBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    ElseGenerateBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateWhitespace1
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected generate name (identifier)."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				if not isinstance(parserState.LastBlock, MultiLineCommentBlock):
+					parserState.NewBlock =  ElseGenerateBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True)
+					_ =                     LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				else:
+					parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    ElseGenerateBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    ElseGenerateBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateGenerateName
+			return
+		elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateGenerateName(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected whitespace after keyword GENERATE."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewBlock =    ElseGenerateBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				_ =                       LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace2
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    ElseGenerateBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace2
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    ElseGenerateBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace2
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NextState =     cls.stateWhitespace2
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhitespace2(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected keyword IS after generate name."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				if not isinstance(parserState.LastBlock, MultiLineCommentBlock):
+					parserState.NewBlock =  ElseGenerateBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True)
+					_ =                     LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				else:
+					parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    ElseGenerateBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    ElseGenerateBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, WordToken) and (token <= "is"):
+			parserState.NewToken =      IsKeyword(fromExistingToken=token)
+			parserState.NewBlock =      ElseGenerateBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.NextState =     cls.stateDeclarativeRegion
+			return
+		elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateDeclarativeRegion(cls, parserState: TokenToBlockParser):
+		errorMessage = "Expected one of these keywords: generic, port, begin, end."
+		token = parserState.Token
+		if isinstance(parserState.Token, CharacterToken):
+			if token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = parserState.NewToken
+				return
+			elif token == "-":
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =      IndentationToken(fromExistingToken=token)
+			parserState.NewBlock =      IndentationBlock(parserState.LastBlock, parserState.NewToken)
+			return
+		elif isinstance(token, WordToken):
+			keyword = token.Value.lower()
+			if keyword == "generic":
+				newToken =              GenericKeyword(fromExistingToken=token)
+				parserState.PushState = GenericList.OpenBlock.stateGenericKeyword
+			elif keyword == "port":
+				newToken =              PortKeyword(fromExistingToken=token)
+				parserState.PushState = PortList.OpenBlock.statePortKeyword
+			elif keyword == "end":
+				newToken =              EndKeyword(fromExistingToken=token)
+				parserState.NextState = EndGenerateBlock.stateEndKeyword
+			elif keyword == "begin":
+				parserState.NewToken =  BeginKeyword(fromExistingToken=token)
+				parserState.NewBlock =  ElseGenerateBeginBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.NextState = ElseGenerateBeginBlock.stateBeginKeyword
+				return
+			else:
+				raise BlockParserException(errorMessage, token)
+
+			parserState.NewToken =      newToken
+			parserState.TokenMarker =   newToken
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+
+@export
+class ElseGenerateBeginBlock(Block):
+	@classmethod
+	def stateBeginKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected label or one of these keywords: assert, process."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewToken = LinebreakToken(fromExistingToken=token)
+				parserState.NewBlock = LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = parserState.NewToken
+				return
+			elif token == "-":
+				parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			return
+		# 	parserState.NewToken = IndentationToken(fromExistingToken=token)
+		# 	parserState.NewBlock = IndentationBlock(parserState.LastBlock, parserState.NewToken)
+		# 	return
+		elif isinstance(token, WordToken):
+			keyword = token.Value.lower()
+			if keyword == "process":
+				newToken =                ProcessKeyword(fromExistingToken=token)
+				parserState.PushState =   Process.OpenBlock.stateProcessKeyword
+			elif keyword == "assert":
+				newToken =                AssertKeyword(fromExistingToken=token)
+				parserState.PushState =   AssertBlock.stateAssertKeyword
+			elif keyword == "end":
+				newToken =                EndKeyword(fromExistingToken=token)
+				parserState.NextState =   EndGenerateBlock.stateEndKeyword
+			else:
+				raise BlockParserException(errorMessage, token)
+
+			parserState.NewToken =      newToken
+			parserState.TokenMarker =   newToken
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+
+@export
+class EndGenerateBlock(EndGenerateBlockBase):
+	pass
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/Generate/__init__.py.html b/typing/html/pyVHDLParser/Blocks/Generate/__init__.py.html new file mode 100644 index 000000000..c2ac69443 --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/Generate/__init__.py.html @@ -0,0 +1,97 @@ + + + + + + +

pyVHDLParser.Blocks.Generate

+ + + + + + +
pyVHDLParser/Blocks/Generate/__init__.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators         import export
+
+from pyVHDLParser.Token.Keywords  import GenerateKeyword
+from pyVHDLParser.Blocks.Generic  import EndBlock
+
+
+@export
+class EndGenerateBlock(EndBlock):
+	KEYWORD =             GenerateKeyword
+	KEYWORD_IS_OPTIONAL = True
+	EXPECTED_NAME =       KEYWORD.__KEYWORD__
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/Generic.py.html b/typing/html/pyVHDLParser/Blocks/Generic.py.html new file mode 100644 index 000000000..7f6a96287 --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/Generic.py.html @@ -0,0 +1,657 @@ + + + + + + +

pyVHDLParser.Blocks.Generic

+ + + + + + +
pyVHDLParser/Blocks/Generic.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from typing import Any
+
+from pyTooling.Decorators                 import export
+
+from pyVHDLParser.Token                   import LinebreakToken, WordToken, SpaceToken, CommentToken, IndentationToken
+from pyVHDLParser.Token.Keywords          import AssertKeyword, EndKeyword, ProcessKeyword, ReportKeyword, IfKeyword, ForKeyword, ReturnKeyword, NextKeyword, NullKeyword
+from pyVHDLParser.Token.Keywords          import ExitKeyword, UseKeyword, SignalKeyword, ConstantKeyword, SharedKeyword, FunctionKeyword, ProcedureKeyword
+from pyVHDLParser.Token.Keywords          import ImpureKeyword, PureKeyword, VariableKeyword, BeginKeyword, CaseKeyword
+from pyVHDLParser.Blocks                  import BlockParserException, CommentBlock, TokenToBlockParser, MetaBlock
+from pyVHDLParser.Blocks.Common           import LinebreakBlock, WhitespaceBlock, IndentationBlock
+from pyVHDLParser.Blocks.Object.Variable  import VariableDeclarationBlock
+from pyVHDLParser.Blocks.Generic1         import EndBlock, BeginBlock
+
+
+@export
+class DeclarativeRegion(metaclass=MetaBlock):
+	"""Base-class for all declarative region blocks."""
+
+	BEGIN_BLOCK: BeginBlock
+	END_BLOCK:   EndBlock
+
+	KEYWORDS: Any  # TODO: what type?
+
+	@classmethod
+	def __cls_init__(cls):
+		from pyVHDLParser.Blocks.Reference        import Use
+		from pyVHDLParser.Blocks.Object.Constant  import ConstantDeclarationBlock
+		from pyVHDLParser.Blocks.Sequential       import Procedure, Function
+
+		cls.KEYWORDS = {
+			# Keyword         Transition
+			UseKeyword:       Use.StartBlock.stateUseKeyword,
+			ConstantKeyword:  ConstantDeclarationBlock.stateConstantKeyword,
+			FunctionKeyword:  Function.NameBlock.stateFunctionKeyword,
+			ProcedureKeyword: Procedure.NameBlock.stateProcedureKeyword,
+			ImpureKeyword:    Function.NameBlock.stateImpureKeyword,
+			PureKeyword:      Function.NameBlock.statePureKeyword,
+			# AliasKeyword:     Alias.NameBlock.stateAliasKeyword
+		}
+
+
+	@classmethod
+	def stateDeclarativeRegion(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, SpaceToken):
+			blockType =                 IndentationBlock if isinstance(token, IndentationToken) else WhitespaceBlock
+			parserState.NewBlock =      blockType(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, LinebreakToken):
+			parserState.NewBlock =      LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      CommentBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, WordToken):
+			tokenValue = token.Value.lower()
+
+			for keyword in cls.KEYWORDS:
+				if tokenValue == keyword.__KEYWORD__:
+					newToken =                keyword(fromExistingToken=token)
+					parserState.PushState =   cls.KEYWORDS[keyword]
+					parserState.NewToken =    newToken
+					parserState.TokenMarker = newToken
+					return
+
+			if tokenValue == "begin":
+				parserState.NewToken =  BeginKeyword(fromExistingToken=token)
+				parserState.NewBlock =  cls.BEGIN_BLOCK(parserState.LastBlock, parserState.NewToken)
+				parserState.NextState = cls.BEGIN_BLOCK.stateStatementRegion
+				return
+			elif tokenValue == "end":
+				parserState.NewToken =  EndKeyword(fromExistingToken=token)
+				parserState.NextState = cls.END_BLOCK.stateEndKeyword
+				return
+
+		raise BlockParserException(
+			"Expected one of these keywords: BEGIN, END, {keywords}. Found: '{tokenValue}'.".format(
+				keywords=", ".join(
+					[kw.__KEYWORD__.upper() for kw in cls.KEYWORDS]
+				),
+				tokenValue=token.Value
+			), token)
+
+
+@export
+class ConcurrentDeclarativeRegion(DeclarativeRegion):
+	"""Base-class for all concurrent declarative region blocks."""
+
+	@classmethod
+	def __cls_init__(cls):
+		super().__cls_init__()
+
+		from pyVHDLParser.Blocks.Object.Signal         import SignalDeclarationBlock
+		from pyVHDLParser.Blocks.Object.SharedVariable import SharedVariableDeclarationBlock
+
+		cls.KEYWORDS.update({
+			# Keyword         Transition
+			SignalKeyword:    SignalDeclarationBlock.stateSignalKeyword,
+			SharedKeyword:    SharedVariableDeclarationBlock.stateSharedKeyword
+		})
+
+
+@export
+class SequentialDeclarativeRegion(DeclarativeRegion):
+	"""Base-class for all sequential declarative region blocks."""
+
+	@classmethod
+	def __cls_init__(cls):
+		super().__cls_init__()
+
+		# TODO: use key assignment: a[b] = c
+		cls.KEYWORDS.update({
+			# Keyword         Transition
+			VariableKeyword:  VariableDeclarationBlock.stateVariableKeyword
+		})
+
+
+@export
+class ConcurrentBeginBlock(BeginBlock):
+	@classmethod
+	def __cls_init__(cls):
+		from pyVHDLParser.Blocks.Sequential       import Process
+		from pyVHDLParser.Blocks.Reporting.Assert import AssertBlock
+
+		cls.KEYWORDS = {
+			# Keyword           Transition
+			AssertKeyword:      AssertBlock.stateAssertKeyword,
+			ProcessKeyword:     Process.OpenBlock.stateProcessKeyword,
+		}
+
+	@classmethod
+	def stateStatementRegion(cls, parserState: TokenToBlockParser):
+		parserState.NextState = cls.stateConcurrentRegion
+		parserState.NextState(parserState)
+
+	@classmethod
+	def stateConcurrentRegion(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, SpaceToken):
+			blockType =               IndentationBlock if isinstance(token, IndentationToken) else WhitespaceBlock
+			parserState.NewBlock =    blockType(parserState.LastBlock, token)
+			parserState.TokenMarker = None
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    block(parserState.LastBlock, token)
+			parserState.TokenMarker = None
+			return
+		elif isinstance(token, WordToken):
+			tokenValue = token.Value.lower()
+
+			for keyword in cls.KEYWORDS:
+				if tokenValue == keyword.__KEYWORD__:
+					newToken = keyword(fromExistingToken=token)
+					parserState.PushState = cls.KEYWORDS[keyword]
+					parserState.NewToken = newToken
+					parserState.TokenMarker = newToken
+					return
+
+			if tokenValue == "end":
+				parserState.NewToken =  EndKeyword(fromExistingToken=token)
+				parserState.NextState = cls.END_BLOCK.stateEndKeyword
+				return
+
+		raise BlockParserException(
+			"Expected one of these keywords: END, {keywords}. Found: '{tokenValue}'.".format(
+				keywords=", ".join(
+					[kw.__KEYWORD__.upper() for kw in cls.KEYWORDS]
+				),
+				tokenValue=token.Value
+			), token)
+
+
+@export
+class SequentialBeginBlock(BeginBlock):
+	@classmethod
+	def __cls_init__(cls):
+		from pyVHDLParser.Blocks.ControlStructure.If        import IfConditionBlock
+		from pyVHDLParser.Blocks.ControlStructure.Case      import CaseBlock
+		from pyVHDLParser.Blocks.ControlStructure.Exit      import ExitBlock
+		from pyVHDLParser.Blocks.ControlStructure.Next      import NextBlock
+		from pyVHDLParser.Blocks.ControlStructure.Return    import ReturnBlock
+		from pyVHDLParser.Blocks.ControlStructure.ForLoop   import IteratorBlock
+		# from pyVHDLParser.Blocks.ControlStructure.WhileLoop import ConditionBlock
+		from pyVHDLParser.Blocks.Reporting.Report           import ReportBlock
+		from pyVHDLParser.Blocks.ControlStructure.Null      import NullBlock
+
+		cls.KEYWORDS = {
+			# Keyword       Transition
+			IfKeyword:      IfConditionBlock.stateIfKeyword,
+			CaseKeyword:    CaseBlock.stateCaseKeyword,
+			ForKeyword:     IteratorBlock.stateForKeyword,
+			# WhileKeyword:   ConditionBlock.stateWhileKeyword,
+			ReturnKeyword:  ReturnBlock.stateReturnKeyword,
+			NextKeyword:    NextBlock.stateNextKeyword,
+			ExitKeyword:    ExitBlock.stateExitKeyword,
+			ReportKeyword:  ReportBlock.stateReportKeyword,
+			NullKeyword:    NullBlock.stateNullKeyword
+		}
+
+	@classmethod
+	def stateStatementRegion(cls, parserState: TokenToBlockParser):
+		cls.stateAnyRegion(parserState)
+
+	@classmethod
+	def stateSequentialRegion(cls, parserState: TokenToBlockParser):
+		cls.stateAnyRegion(parserState)
+
+	@classmethod
+	def stateAnyRegion(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, SpaceToken):
+			blockType =               IndentationBlock if isinstance(token, IndentationToken) else WhitespaceBlock
+			parserState.NewBlock =    blockType(parserState.LastBlock, token)
+			parserState.TokenMarker = None
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    block(parserState.LastBlock, token)
+			parserState.TokenMarker = None
+			return
+		elif isinstance(token, WordToken):
+			tokenValue = token.Value.lower()
+
+			for keyword in cls.KEYWORDS:
+				if tokenValue == keyword.__KEYWORD__:
+					newToken =                keyword(fromExistingToken=token)
+					parserState.PushState =   cls.KEYWORDS[keyword]
+					parserState.NewToken =    newToken
+					parserState.TokenMarker = newToken
+					return
+
+			if tokenValue == "end":
+				parserState.NewToken =  EndKeyword(fromExistingToken=token)
+				parserState.NextState = cls.END_BLOCK.stateEndKeyword
+				return
+
+		raise BlockParserException(
+			"Expected one of these keywords: END, {keywords}. Found: '{tokenValue}' at line {tokenPositionRow}:{tokenPositionColumn}.".format(
+				keywords=", ".join(
+					[kw.__KEYWORD__.upper() for kw in cls.KEYWORDS]
+				),
+				tokenValue=token.Value,
+				tokenPositionRow=token.Start.Row,
+				tokenPositionColumn=token.Start.Column
+			), token)
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/Generic1.py.html b/typing/html/pyVHDLParser/Blocks/Generic1.py.html new file mode 100644 index 000000000..9e3ee427d --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/Generic1.py.html @@ -0,0 +1,900 @@ + + + + + + +

pyVHDLParser.Blocks.Generic1

+ + + + + + +
pyVHDLParser/Blocks/Generic1.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+380
+381
+382
+383
+384
+385
+386
+387
+388
+389
+390
+391
+392
+393
+394
+395
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from typing import Any
+
+from pyTooling.Decorators         import export
+
+from pyVHDLParser.Token           import CharacterToken, SpaceToken, LinebreakToken, CommentToken, WordToken, MultiLineCommentToken, IndentationToken
+from pyVHDLParser.Token           import SingleLineCommentToken, ExtendedIdentifier
+from pyVHDLParser.Token.Keywords  import EndToken, BoundaryToken, LabelToken, IdentifierToken
+from pyVHDLParser.Blocks          import FinalBlock, TokenToBlockParser, CommentBlock, BlockParserException, Block
+from pyVHDLParser.Blocks.Common   import LinebreakBlock, WhitespaceBlock
+
+
+@export
+class EndBlock(FinalBlock):
+	KEYWORD =             None
+	KEYWORD_IS_OPTIONAL = False
+	EXPECTED_NAME =       ""
+	EXPECTED_NAME_KIND =  "keyword"  # keyword label
+
+	@classmethod
+	def stateEndKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken):
+			if (cls.KEYWORD_IS_OPTIONAL is True) and (token == ";"):
+				parserState.NewToken =    EndToken(fromExistingToken=token)
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+				parserState.Pop()
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateWhitespace1
+			return
+		elif isinstance(token, LinebreakToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token, multiPart=True)
+			parserState.TokenMarker =   None
+			parserState.NextState =     cls.stateWhitespace1
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			parserState.NextState =     cls.stateWhitespace1
+			return
+
+		raise BlockParserException("Expected ';' or whitespace.", token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken):
+			if (cls.KEYWORD_IS_OPTIONAL is True) and (token == ";"):
+				parserState.NewToken =    EndToken(fromExistingToken=token)
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+				parserState.Pop()
+				return
+		elif isinstance(token, WordToken):
+			IS_SINGLE_KEYWORD = isinstance(cls.KEYWORD, tuple)
+			KW = cls.KEYWORD[0] if IS_SINGLE_KEYWORD else cls.KEYWORD
+			if token <= KW.__KEYWORD__:
+				parserState.NewToken =    KW(fromExistingToken=token)
+				parserState.NextState =   cls.stateKeyword1
+			elif cls.EXPECTED_NAME_KIND == "label":
+				parserState.NewToken =    LabelToken(fromExistingToken=token)
+				parserState.NextState =   cls.stateSimpleName
+			else:
+				parserState.NewToken =    IdentifierToken(fromExistingToken=token)
+				parserState.NextState =   cls.stateSimpleName
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		if cls.KEYWORD_IS_OPTIONAL is True:
+			if cls.EXPECTED_NAME_KIND == "label":
+				errorMessage = "Expected ';', {0} keyword or {1} label.".format(cls.EXPECTED_NAME.upper(), cls.EXPECTED_NAME)
+			else:
+				errorMessage = "Expected ';', {0} keyword or {1} name.".format(cls.EXPECTED_NAME.upper(), cls.EXPECTED_NAME)
+		else:
+			if cls.EXPECTED_NAME_KIND == "label":
+				errorMessage = "Expected {0} keyword or {1} label.".format(cls.EXPECTED_NAME.upper(), cls.EXPECTED_NAME)
+			else:
+				errorMessage = "Expected {0} keyword or {1} name.".format(cls.EXPECTED_NAME.upper(), cls.EXPECTED_NAME)
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateKeyword1(cls, parserState: TokenToBlockParser):
+		IS_DOUBLE_KEYWORD = isinstance(cls.KEYWORD, tuple)
+		nextState = cls.stateWhitespace2 if IS_DOUBLE_KEYWORD else cls.stateWhitespace3;
+		token = parserState.Token
+		if isinstance(token, CharacterToken):
+			if not isinstance(cls.KEYWORD, tuple) and (token == ";"):
+				parserState.NewToken =    EndToken(fromExistingToken=token)
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+				parserState.Pop()
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NextState =     nextState
+			return
+		elif isinstance(token, LinebreakToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token, multiPart=True)
+			parserState.TokenMarker =   None
+			parserState.NextState =     cls.stateWhitespace3
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			parserState.NextState =     cls.stateWhitespace3
+			return
+
+		raise BlockParserException("Expected ';' or whitespace.", token)
+
+	@classmethod
+	def stateWhitespace2(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken):
+			if (cls.KEYWORD_IS_OPTIONAL is True) and (not isinstance(cls.KEYWORD, tuple)) and (token == ";"):
+				parserState.NewToken =    EndToken(fromExistingToken=token)
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+				parserState.Pop()
+				return
+		elif isinstance(token, WordToken) and (token <= cls.KEYWORD[1].__KEYWORD__):
+			parserState.NewToken =    cls.KEYWORD[1](fromExistingToken=token)
+			parserState.NextState =   cls.stateKeyword2
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		if cls.KEYWORD_IS_OPTIONAL is True:
+			if cls.EXPECTED_NAME_KIND == "label":
+				errorMessage = "Expected ';', {0} keyword or {1} label.".format(cls.EXPECTED_NAME.upper(), cls.EXPECTED_NAME)
+			else:
+				errorMessage = "Expected ';', {0} keyword or {1} name.".format(cls.EXPECTED_NAME.upper(), cls.EXPECTED_NAME)
+		else:
+			if cls.EXPECTED_NAME_KIND == "label":
+				errorMessage = "Expected {0} keyword or {1} label.".format(cls.EXPECTED_NAME.upper(), cls.EXPECTED_NAME)
+			else:
+				errorMessage = "Expected {0} keyword or {1} name.".format(cls.EXPECTED_NAME.upper(), cls.EXPECTED_NAME)
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateKeyword2(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken)and (token == ";"):
+			parserState.NewToken =      EndToken(fromExistingToken=token)
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.Pop()
+			return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateWhitespace3
+			return
+		elif isinstance(token, LinebreakToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token, multiPart=True)
+			parserState.TokenMarker =   None
+			parserState.NextState =     cls.stateWhitespace3
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			parserState.NextState =     cls.stateWhitespace3
+			return
+
+		raise BlockParserException("Expected ';' or whitespace.", token)
+
+	@classmethod
+	def stateWhitespace3(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken):
+			if token == ";":
+				parserState.NewToken =    EndToken(fromExistingToken=token)
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+				parserState.Pop()
+				return
+		elif isinstance(token, WordToken):
+			parserState.NewToken =    IdentifierToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateSimpleName
+			return
+		elif isinstance(token, ExtendedIdentifier):
+			parserState.NextState =   cls.stateSimpleName
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =  cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                     LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker = None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected ';' or {0} name.".format(cls.EXPECTED_NAME), token)
+
+	@classmethod
+	def stateSimpleName(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken) and (token == ";"):
+			parserState.NewToken =      EndToken(fromExistingToken=token)
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.Pop()
+			return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateWhitespace4
+			return
+		elif isinstance(token, LinebreakToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token, multiPart=True)
+			parserState.TokenMarker =   None
+			parserState.NextState =     cls.stateWhitespace4
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			parserState.NextState =     cls.stateWhitespace4
+			return
+
+		raise BlockParserException("Expected ';' or whitespace.", token)
+
+	@classmethod
+	def stateWhitespace4(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken):
+			if token == ";":
+				parserState.NewToken =    EndToken(fromExistingToken=token)
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+				parserState.Pop()
+				return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected ';'.", token)
+
+
+@export
+class BeginBlock(Block):
+	END_BLOCK: EndBlock
+
+	KEYWORDS: Any  # TODO: what type?
+
+	@classmethod
+	def stateStatementRegion(cls, parserState: TokenToBlockParser):
+		pass
+
+
+@export
+class CloseBlock(Block):
+	@classmethod
+	def stateClosingParenthesis(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken) and (token == ";"):
+			parserState.NewToken =    EndToken(fromExistingToken=token)
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.Pop()
+			return
+		elif isinstance(token, SpaceToken):
+			parserState.NextState =   cls.stateWhitespace1
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace1
+			return
+
+		raise BlockParserException("Expected ';' or whitespace.", token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken)and (token == ";"):
+			parserState.NewToken =    EndToken(fromExistingToken=token)
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.Pop()
+			return
+		elif isinstance(token, LinebreakToken):
+			# TODO: review this linebreak case
+			parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker = None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =    CommentBlock(parserState.LastBlock, token)
+			parserState.TokenMarker = token
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =    WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker = None
+			return
+
+		raise BlockParserException("Expected ';'.", token)
+
+
+@export
+class EndOfStatementBlock(Block):
+	pass
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/Instantiation/EntityInstantiation.py.html b/typing/html/pyVHDLParser/Blocks/Instantiation/EntityInstantiation.py.html new file mode 100644 index 000000000..cf0eb7a1f --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/Instantiation/EntityInstantiation.py.html @@ -0,0 +1,451 @@ + + + + + + +

pyVHDLParser.Blocks.Instantiation.EntityInstantiation

+ + + + + + +
pyVHDLParser/Blocks/Instantiation/EntityInstantiation.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators             import export
+
+from pyVHDLParser.Token               import CharacterToken, SpaceToken, WordToken, LinebreakToken
+from pyVHDLParser.Token.Keywords      import BoundaryToken, IdentifierToken, EndToken
+from pyVHDLParser.Blocks              import BlockParserException, Block, TokenToBlockParser, FinalBlock
+from pyVHDLParser.Blocks.Common       import LinebreakBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Comment      import SingleLineCommentBlock, MultiLineCommentBlock
+
+
+@export
+class EntityInstantiationBlock(Block):
+	@classmethod
+	def stateEntityInstantiationKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected whitespace after keyword EntityInstantiation."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewBlock =    EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				_ =                       LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateWhitespace1
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected entityInstantiation name (identifier)."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				if not isinstance(parserState.LastBlock, MultiLineCommentBlock):
+					parserState.NewBlock =  EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True)
+					_ =                     LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				else:
+					parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateEntityInstantiationName
+			return
+		elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateEntityInstantiationName(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected ';' after entityInstantiation name."
+		if isinstance(token, CharacterToken):
+			if token == ";":
+				parserState.NewToken =    EndToken(fromExistingToken=token)
+				parserState.NewBlock =    EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+				parserState.Pop()
+				return
+			elif token == "\n":
+				parserState.NewBlock =    EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				_ =                       LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace2
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace2
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace2
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NextState =     cls.stateWhitespace2
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhitespace2(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected ';'."
+		if isinstance(token, CharacterToken):
+			if token == ";":
+				parserState.NewToken =    EndToken(fromExistingToken=token)
+				parserState.NewBlock =    EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+				parserState.Pop()
+				return
+			elif token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				if not isinstance(parserState.LastBlock, MultiLineCommentBlock):
+					parserState.NewBlock =  EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True)
+					_ =                     LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				else:
+					parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+
+@export
+class EndBlock(FinalBlock):
+	pass
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/Instantiation/FunctionInstantiation.py.html b/typing/html/pyVHDLParser/Blocks/Instantiation/FunctionInstantiation.py.html new file mode 100644 index 000000000..b7c73d685 --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/Instantiation/FunctionInstantiation.py.html @@ -0,0 +1,523 @@ + + + + + + +

pyVHDLParser.Blocks.Instantiation.FunctionInstantiation

+ + + + + + +
pyVHDLParser/Blocks/Instantiation/FunctionInstantiation.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators             import export
+
+from pyVHDLParser.Token               import CharacterToken, SpaceToken, WordToken, LinebreakToken
+from pyVHDLParser.Token.Keywords      import BoundaryToken, IdentifierToken, EndToken
+from pyVHDLParser.Blocks              import BlockParserException, Block, TokenToBlockParser, FinalBlock, SkipableBlock
+from pyVHDLParser.Blocks.Common       import LinebreakBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Comment      import SingleLineCommentBlock, MultiLineCommentBlock
+
+
+@export
+class EntityInstantiationBlock(Block):
+	@classmethod
+	def stateEntityInstantiationKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected whitespace after keyword EntityInstantiation."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewBlock =    EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				_ =                       LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateWhitespace1
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected entityInstantiation name (identifier)."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				if not isinstance(parserState.LastBlock, MultiLineCommentBlock):
+					parserState.NewBlock =  EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True)
+					_ =                     LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				else:
+					parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateEntityInstantiationName
+			return
+		elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateEntityInstantiationName(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected ';' after entityInstantiation name."
+		if isinstance(token, CharacterToken):
+			if token == ";":
+				parserState.NewToken =    EndToken(fromExistingToken=token)
+				parserState.NewBlock =    EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+				parserState.Pop()
+				return
+			elif token == "\n":
+				parserState.NewBlock =    EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				_ =                       LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace2
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace2
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace2
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NextState =     cls.stateWhitespace2
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhitespace2(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected ';'."
+		if isinstance(token, CharacterToken):
+			if token == ";":
+				parserState.NewToken =    EndToken(fromExistingToken=token)
+				parserState.NewBlock =    EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+				parserState.Pop()
+				return
+			elif token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				if not isinstance(parserState.LastBlock, MultiLineCommentBlock):
+					parserState.NewBlock =  EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True)
+					_ =                     LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				else:
+					parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+
+@export
+class GenericMapBeginBlock(Block):
+	pass
+
+@export
+class GenericMapItemBlock(Block):
+	pass
+
+@export
+class GenericMapDelimiterBlock(SkipableBlock):
+	pass
+
+@export
+class GenericMapEndBlock(FinalBlock):
+	pass
+
+@export
+class PortMapBeginBlock(Block):
+	pass
+
+@export
+class PortMapItemBlock(Block):
+	pass
+
+@export
+class PortMapDelimiterBlock(SkipableBlock):
+	pass
+
+@export
+class PortMapEndBlock(FinalBlock):
+	pass
+
+@export
+class EndBlock(FinalBlock):
+	pass
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/Instantiation/PackageInstantiation.py.html b/typing/html/pyVHDLParser/Blocks/Instantiation/PackageInstantiation.py.html new file mode 100644 index 000000000..032e80b61 --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/Instantiation/PackageInstantiation.py.html @@ -0,0 +1,523 @@ + + + + + + +

pyVHDLParser.Blocks.Instantiation.PackageInstantiation

+ + + + + + +
pyVHDLParser/Blocks/Instantiation/PackageInstantiation.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators             import export
+
+from pyVHDLParser.Token               import CharacterToken, SpaceToken, WordToken, LinebreakToken
+from pyVHDLParser.Token.Keywords      import BoundaryToken, IdentifierToken, EndToken
+from pyVHDLParser.Blocks              import BlockParserException, Block, TokenToBlockParser, FinalBlock, SkipableBlock
+from pyVHDLParser.Blocks.Common       import LinebreakBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Comment      import SingleLineCommentBlock, MultiLineCommentBlock
+
+
+@export
+class EntityInstantiationBlock(Block):
+	@classmethod
+	def stateEntityInstantiationKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected whitespace after keyword EntityInstantiation."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewBlock =    EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				_ =                       LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateWhitespace1
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected entityInstantiation name (identifier)."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				if not isinstance(parserState.LastBlock, MultiLineCommentBlock):
+					parserState.NewBlock =  EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True)
+					_ =                     LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				else:
+					parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateEntityInstantiationName
+			return
+		elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateEntityInstantiationName(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected ';' after entityInstantiation name."
+		if isinstance(token, CharacterToken):
+			if token == ";":
+				parserState.NewToken =    EndToken(fromExistingToken=token)
+				parserState.NewBlock =    EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+				parserState.Pop()
+				return
+			elif token == "\n":
+				parserState.NewBlock =    EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				_ =                       LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace2
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace2
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace2
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NextState =     cls.stateWhitespace2
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhitespace2(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected ';'."
+		if isinstance(token, CharacterToken):
+			if token == ";":
+				parserState.NewToken =    EndToken(fromExistingToken=token)
+				parserState.NewBlock =    EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+				parserState.Pop()
+				return
+			elif token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				if not isinstance(parserState.LastBlock, MultiLineCommentBlock):
+					parserState.NewBlock =  EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True)
+					_ =                     LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				else:
+					parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+
+@export
+class GenericMapBeginBlock(Block):
+	pass
+
+@export
+class GenericMapItemBlock(Block):
+	pass
+
+@export
+class GenericMapDelimiterBlock(SkipableBlock):
+	pass
+
+@export
+class GenericMapEndBlock(FinalBlock):
+	pass
+
+@export
+class PortMapBeginBlock(Block):
+	pass
+
+@export
+class PortMapItemBlock(Block):
+	pass
+
+@export
+class PortMapDelimiterBlock(SkipableBlock):
+	pass
+
+@export
+class PortMapEndBlock(FinalBlock):
+	pass
+
+@export
+class EndBlock(FinalBlock):
+	pass
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/Instantiation/ProcedureInstantiation.py.html b/typing/html/pyVHDLParser/Blocks/Instantiation/ProcedureInstantiation.py.html new file mode 100644 index 000000000..9fec030fa --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/Instantiation/ProcedureInstantiation.py.html @@ -0,0 +1,523 @@ + + + + + + +

pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation

+ + + + + + +
pyVHDLParser/Blocks/Instantiation/ProcedureInstantiation.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators             import export
+
+from pyVHDLParser.Token               import CharacterToken, SpaceToken, WordToken, LinebreakToken
+from pyVHDLParser.Token.Keywords      import BoundaryToken, IdentifierToken, EndToken
+from pyVHDLParser.Blocks              import BlockParserException, Block, TokenToBlockParser, FinalBlock, SkipableBlock
+from pyVHDLParser.Blocks.Common       import LinebreakBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Comment      import SingleLineCommentBlock, MultiLineCommentBlock
+
+
+@export
+class EntityInstantiationBlock(Block):
+	@classmethod
+	def stateEntityInstantiationKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected whitespace after keyword EntityInstantiation."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewBlock =    EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				_ =                       LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateWhitespace1
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected entityInstantiation name (identifier)."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				if not isinstance(parserState.LastBlock, MultiLineCommentBlock):
+					parserState.NewBlock =  EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True)
+					_ =                     LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				else:
+					parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateEntityInstantiationName
+			return
+		elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateEntityInstantiationName(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected ';' after entityInstantiation name."
+		if isinstance(token, CharacterToken):
+			if token == ";":
+				parserState.NewToken =    EndToken(fromExistingToken=token)
+				parserState.NewBlock =    EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+				parserState.Pop()
+				return
+			elif token == "\n":
+				parserState.NewBlock =    EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				_ =                       LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace2
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace2
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace2
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NextState =     cls.stateWhitespace2
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhitespace2(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected ';'."
+		if isinstance(token, CharacterToken):
+			if token == ";":
+				parserState.NewToken =    EndToken(fromExistingToken=token)
+				parserState.NewBlock =    EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+				parserState.Pop()
+				return
+			elif token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				if not isinstance(parserState.LastBlock, MultiLineCommentBlock):
+					parserState.NewBlock =  EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True)
+					_ =                     LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				else:
+					parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    EntityInstantiationBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+
+@export
+class GenericMapBeginBlock(Block):
+	pass
+
+@export
+class GenericMapItemBlock(Block):
+	pass
+
+@export
+class GenericMapDelimiterBlock(SkipableBlock):
+	pass
+
+@export
+class GenericMapEndBlock(FinalBlock):
+	pass
+
+@export
+class PortMapBeginBlock(Block):
+	pass
+
+@export
+class PortMapItemBlock(Block):
+	pass
+
+@export
+class PortMapDelimiterBlock(SkipableBlock):
+	pass
+
+@export
+class PortMapEndBlock(FinalBlock):
+	pass
+
+@export
+class EndBlock(FinalBlock):
+	pass
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/Instantiation/__init__.py.html b/typing/html/pyVHDLParser/Blocks/Instantiation/__init__.py.html new file mode 100644 index 000000000..c86bb1672 --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/Instantiation/__init__.py.html @@ -0,0 +1,74 @@ + + + + + + +

pyVHDLParser.Blocks.Instantiation

+ + + + + + +
pyVHDLParser/Blocks/Instantiation/__init__.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/InterfaceObject.py.html b/typing/html/pyVHDLParser/Blocks/InterfaceObject.py.html new file mode 100644 index 000000000..bbb730535 --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/InterfaceObject.py.html @@ -0,0 +1,1240 @@ + + + + + + +

pyVHDLParser.Blocks.InterfaceObject

+ + + + + + +
pyVHDLParser/Blocks/InterfaceObject.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+380
+381
+382
+383
+384
+385
+386
+387
+388
+389
+390
+391
+392
+393
+394
+395
+396
+397
+398
+399
+400
+401
+402
+403
+404
+405
+406
+407
+408
+409
+410
+411
+412
+413
+414
+415
+416
+417
+418
+419
+420
+421
+422
+423
+424
+425
+426
+427
+428
+429
+430
+431
+432
+433
+434
+435
+436
+437
+438
+439
+440
+441
+442
+443
+444
+445
+446
+447
+448
+449
+450
+451
+452
+453
+454
+455
+456
+457
+458
+459
+460
+461
+462
+463
+464
+465
+466
+467
+468
+469
+470
+471
+472
+473
+474
+475
+476
+477
+478
+479
+480
+481
+482
+483
+484
+485
+486
+487
+488
+489
+490
+491
+492
+493
+494
+495
+496
+497
+498
+499
+500
+501
+502
+503
+504
+505
+506
+507
+508
+509
+510
+511
+512
+513
+514
+515
+516
+517
+518
+519
+520
+521
+522
+523
+524
+525
+526
+527
+528
+529
+530
+531
+532
+533
+534
+535
+536
+537
+538
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators             import export
+
+from pyVHDLParser.Blocks.Type.ResolutionIndication import RecordResolutionIndicationBlock, \
+	SimpleResolutionIndicationBlock
+from pyVHDLParser.Token               import SpaceToken, LinebreakToken, CommentToken, WordToken, ExtendedIdentifier, MultiLineCommentToken
+from pyVHDLParser.Token               import IndentationToken, SingleLineCommentToken, CharacterToken, FusedCharacterToken
+from pyVHDLParser.Token.Keywords      import InKeyword, VariableAssignmentKeyword, OutKeyword, InoutKeyword, BufferKeyword, LinkageKeyword
+from pyVHDLParser.Token.Keywords      import IdentifierToken, BoundaryToken, DelimiterToken
+from pyVHDLParser.Blocks              import Block, TokenToBlockParser, CommentBlock, BlockParserException
+from pyVHDLParser.Blocks.Common       import LinebreakBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Expression   import ExpressionBlockEndedByCharORClosingRoundBracket
+
+
+@export
+class InterfaceObjectBlock(Block):
+	OBJECT_KIND =     ""
+	MODES =           {}
+	EXPRESSION =      None
+	DELIMITER_BLOCK = None
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateObjectName
+			return
+		elif isinstance(token, ExtendedIdentifier):
+			parserState.NextState =     cls.stateObjectName
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      CommentBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected interface {0} name (identifier).".format(cls.OBJECT_KIND), token)
+
+	@classmethod
+	def stateObjectName(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace2
+			return
+		elif isinstance(token, CharacterToken) and (token == ":"):
+			parserState.NewToken =    DelimiterToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateColon1
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace2
+			return
+
+		raise BlockParserException("Expected whitespace after interface {0} name.".format(cls.OBJECT_KIND), token)
+
+	@classmethod
+	def stateWhitespace2(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken) and (token == ":"):
+			parserState.NewToken =      DelimiterToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateColon1
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      CommentBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected ':' after interface {0} name.".format(cls.OBJECT_KIND), token)
+
+	@classmethod
+	def stateColon1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken):
+			try:
+				parserState.NewToken =    cls.MODES[token.Value.lower()](fromExistingToken=token)
+				parserState.NextState =   cls.stateModeKeyword
+				return
+			except KeyError:
+				parserState.NewToken =    IdentifierToken(fromExistingToken=token)
+				parserState.NextState =   cls.stateSubtypeIndication
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace3
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace3
+			return
+
+		raise BlockParserException("Expected subtype indication or whitespace after colon.", token)
+
+	@classmethod
+	def stateWhitespace3(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken):
+			tokenValue = token.Value.lower()
+			try:
+				parserState.NewToken =    cls.MODES[tokenValue](fromExistingToken=token)
+				parserState.NextState =   cls.stateModeKeyword
+				return
+			except KeyError:
+				parserState.NewToken =    IdentifierToken(fromExistingToken=token)
+				parserState.NextState =   cls.stateSubtypeIndication
+				return
+		elif isinstance(token, ExtendedIdentifier):
+			parserState.NextState =     cls.stateSubtypeIndication
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      CommentBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected subtype indication or keyword IN.", token)
+
+	@classmethod
+	def stateModeKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, SpaceToken):
+			parserState.NextState =   cls.stateSubtypeIndication
+			parserState.PushState =   SimpleResolutionIndicationBlock.stateResolutionFunction
+			return
+		elif isinstance(token, CharacterToken) and (token == "("):
+			parserState.NextState =   cls.stateSubtypeIndication
+			parserState.PushState =   RecordResolutionIndicationBlock.stateOpeningParentesis
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace4
+			return
+
+		raise BlockParserException("Expected whitespace after keyword CONSTANT.", token)
+
+	@classmethod
+	def stateWhitespace4(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateSubtypeIndication
+			return
+		elif isinstance(token, ExtendedIdentifier):
+			parserState.NextState =     cls.stateSubtypeIndication
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      CommentBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected subtype indication (name).", token)
+
+	@classmethod
+	def stateSubtypeIndication(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, FusedCharacterToken) and (token == ":="):
+			parserState.NewToken =      VariableAssignmentKeyword(fromExistingToken=token)
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.NextState =     cls.DELIMITER_BLOCK.stateItemDelimiter
+			parserState.PushState =     cls.EXPRESSION.stateBeforeExpression
+			parserState.TokenMarker =   None
+			parserState.Counter =       0
+			return
+		elif isinstance(token, CharacterToken):
+			if token == '(':
+			# 	parserState.NewToken = BoundaryToken(fromExistingToken=token)
+			# 	parserState.NewBlock = cls(parserState.LastBlock, parserState.TokenMarker,
+			# 														 endToken=parserState.NewToken.PreviousToken)
+			# 	parserState.TokenMarker = parserState.NewToken
+			# 	parserState.NextState = LoopBlock.stateSequentialRegion
+			# 	parserState.PushState = ExpressionBlockEndedByLoopORToORDownto.stateExpression
+			# 	return
+			# elif token == ';':
+				parserState.NewToken =    DelimiterToken(fromExistingToken=token)
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+				_ =                       cls.DELIMITER_BLOCK(parserState.NewBlock, parserState.NewToken)
+				parserState.Pop()
+				return
+			elif token == ')':
+				parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+				parserState.Pop(2)
+				parserState.TokenMarker = parserState.NewToken
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace5
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace5
+			return
+
+		raise BlockParserException("Expected ';', ':=' or whitespace after subtype indication.", token)
+
+	@classmethod
+	def stateWhitespace5(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, FusedCharacterToken) and (token == ":="):
+			parserState.NewToken =      VariableAssignmentKeyword(fromExistingToken=token)
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.NextState =     cls.DELIMITER_BLOCK.stateItemDelimiter
+			parserState.PushState =     cls.EXPRESSION.stateBeforeExpression
+			parserState.Counter =       0
+			return
+		elif isinstance(token, CharacterToken):
+			if token == ';':
+				parserState.NewToken =    DelimiterToken(fromExistingToken=token)
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+				_ =                       cls.DELIMITER_BLOCK(parserState.NewBlock, parserState.NewToken)
+				parserState.Pop()
+				return
+			elif token == ')':
+				parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+				parserState.Pop(2)
+				parserState.TokenMarker = parserState.NewToken
+				return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected ';' or ':='.", token)
+
+
+@export
+class InterfaceConstantBlock(InterfaceObjectBlock):
+	OBJECT_KIND = "constant"
+	MODES =       {
+		"in": InKeyword
+	}
+
+	@classmethod
+	def stateConstantKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, SpaceToken):
+			parserState.NextState =   cls.stateWhitespace1
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace1
+			return
+
+		raise BlockParserException("Expected whitespace after keyword CONSTANT.", token)
+
+
+@export
+class InterfaceVariableBlock(InterfaceObjectBlock):
+	OBJECT_KIND = "variable"
+	MODES =       {
+		"in":    InKeyword,
+		"out":   OutKeyword,
+		"inout": InoutKeyword
+	}
+
+	@classmethod
+	def stateVariableKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, SpaceToken):
+			parserState.NextState =   cls.stateWhitespace1
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace1
+			return
+
+		raise BlockParserException("Expected whitespace after keyword VARIABLE.", token)
+
+
+@export
+class InterfaceSignalBlock(InterfaceObjectBlock):
+	OBJECT_KIND = "signal"
+	MODES =       {
+		"in":       InKeyword,
+		"out":      OutKeyword,
+		"inout":    InoutKeyword,
+		"buffer":   BufferKeyword,
+		"linkage":  LinkageKeyword
+	}
+
+	@classmethod
+	def stateSignalKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, SpaceToken):
+			parserState.NextState =   cls.stateWhitespace1
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace1
+			return
+
+		raise BlockParserException("Expected whitespace after keyword SIGNAL.", token)
+
+
+@export
+class InterfaceTypeBlock(Block):
+	DELIMITER_BLOCK = None
+
+	@classmethod
+	def stateTypeKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, SpaceToken):
+			parserState.NextState =   cls.stateWhitespace1
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace1
+			return
+
+		raise BlockParserException("Expected whitespace after keyword CONSTANT.", token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateTypeName
+			return
+		elif isinstance(token, ExtendedIdentifier):
+			parserState.NextState =     cls.stateTypeName
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      CommentBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected interface type name (identifier).", token)
+
+	@classmethod
+	def stateTypeName(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken):
+			if token == ';':
+				parserState.NewToken =    DelimiterToken(fromExistingToken=token)
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+				_ =                       cls.DELIMITER_BLOCK(parserState.NewBlock, parserState.NewToken)
+				parserState.Pop()
+				return
+			elif token == ')':
+				parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+				parserState.Pop(2)
+				parserState.TokenMarker = parserState.NewToken
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace2
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace2
+			return
+
+		raise BlockParserException("Expected ';', ')' or whitespace after interface type name.", token)
+
+	@classmethod
+	def stateWhitespace2(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken):
+			if token == ';':
+				parserState.NewToken =    DelimiterToken(fromExistingToken=token)
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+				_ =                       cls.DELIMITER_BLOCK(parserState.NewBlock, parserState.NewToken)
+				parserState.Pop()
+				return
+			elif token == ')':
+				parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+				parserState.Pop(2)
+				parserState.TokenMarker = parserState.NewToken
+				return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      CommentBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected ';' or ')'.", token)
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/List/GenericList.py.html b/typing/html/pyVHDLParser/Blocks/List/GenericList.py.html new file mode 100644 index 000000000..c649063fd --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/List/GenericList.py.html @@ -0,0 +1,516 @@ + + + + + + +

pyVHDLParser.Blocks.List.GenericList

+ + + + + + +
pyVHDLParser/Blocks/List/GenericList.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators                 import export
+
+from pyVHDLParser.Token                   import CharacterToken, LinebreakToken, IndentationToken, CommentToken, MultiLineCommentToken, SingleLineCommentToken, ExtendedIdentifier
+from pyVHDLParser.Token.Keywords          import BoundaryToken, ConstantKeyword, TypeKeyword, DelimiterToken
+from pyVHDLParser.Token.Keywords          import IdentifierToken
+from pyVHDLParser.Token.Parser            import SpaceToken, WordToken
+from pyVHDLParser.Blocks                  import BlockParserException, Block, CommentBlock, TokenToBlockParser, SkipableBlock
+from pyVHDLParser.Blocks.Common           import LinebreakBlock, IndentationBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Generic1         import CloseBlock as CloseBlockBase
+from pyVHDLParser.Blocks.Expression       import ExpressionBlockEndedByCharORClosingRoundBracket
+from pyVHDLParser.Blocks.InterfaceObject  import InterfaceConstantBlock, InterfaceTypeBlock
+
+
+@export
+class CloseBlock(CloseBlockBase):
+	pass
+
+
+@export
+class DelimiterBlock(SkipableBlock):
+	@classmethod
+	def stateItemDelimiter(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken):
+			if token <= "constant":
+				parserState.NewToken =    ConstantKeyword(fromExistingToken=token)
+				parserState.PushState =   GenericListInterfaceConstantBlock.stateConstantKeyword
+				parserState.TokenMarker = parserState.NewToken
+				return
+			elif token <= "type":
+				parserState.NewToken =    TypeKeyword(fromExistingToken=token)
+				parserState.PushState =   GenericListInterfaceTypeBlock.stateTypeKeyword
+				parserState.TokenMarker = parserState.NewToken
+				return
+			elif token <= "procedure":
+				raise NotImplementedError("Generic procedures are not supported.")
+			elif token <= "function":
+				raise NotImplementedError("Generic functions are not supported.")
+			elif token <= "impure":
+				raise NotImplementedError("Generic impure functions are not supported.")
+			elif token <= "pure":
+				raise NotImplementedError("Generic pure functions are not supported.")
+			else:
+				parserState.NewToken =    IdentifierToken(fromExistingToken=token)
+				parserState.PushState =   GenericListInterfaceConstantBlock.stateObjectName
+				parserState.TokenMarker = parserState.NewToken
+				return
+		elif isinstance(token, ExtendedIdentifier):
+			parserState.NextState =   GenericListInterfaceConstantBlock.stateObjectName
+			return
+		elif isinstance(token, SpaceToken):
+			parserState.NextState =   OpenBlock.stateOpeningParenthesis
+			return
+		elif isinstance(token, LinebreakToken):
+			parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker = token
+			parserState.NextState =   OpenBlock.stateOpeningParenthesis
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			# parserState.NextState =   cls.stateWhitespace1
+			return
+
+		raise BlockParserException("Expected generic name (identifier).", token)
+
+
+@export
+class DefaultValueExpressionBlock(ExpressionBlockEndedByCharORClosingRoundBracket):
+	EXIT_CHAR =  ";"
+	EXIT_TOKEN = DelimiterToken
+	EXIT_BLOCK = DelimiterBlock
+
+
+@export
+class GenericListInterfaceConstantBlock(InterfaceConstantBlock):
+	DELIMITER_BLOCK = DelimiterBlock
+	EXPRESSION =      DefaultValueExpressionBlock
+
+
+@export
+class GenericListInterfaceTypeBlock(InterfaceTypeBlock):
+	DELIMITER_BLOCK = DelimiterBlock
+
+
+@export
+class OpenBlock(Block):
+	@classmethod
+	def stateGenericKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken)and (token == "("):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.NextState =   CloseBlock.stateClosingParenthesis
+			parserState.PushState =   cls.stateOpeningParenthesis
+			return
+		elif isinstance(token, SpaceToken):
+			parserState.NextState =   cls.stateWhitespace1
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace1
+			return
+
+		raise BlockParserException("Expected '(' or whitespace after keyword GENERIC.", token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken)and (token == "("):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.NextState =     CloseBlock.stateClosingParenthesis
+			parserState.PushState =     cls.stateOpeningParenthesis
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected '(' after keyword GENERIC.", token)
+
+	@classmethod
+	def stateOpeningParenthesis(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken) and (token == ")"):
+			# if parserState.TokenMarker != token:
+			# 	parserState.NewBlock = IndentationBlock(parserState.LastBlock, parserState.TokenMarker, token.PreviousToken)
+			parserState.Pop(1, token)
+			return
+		elif isinstance(token, WordToken):
+			if token <= "constant":
+				parserState.NewToken =    ConstantKeyword(fromExistingToken=token)
+				parserState.NextState =   DelimiterBlock.stateItemDelimiter
+				parserState.PushState =   GenericListInterfaceConstantBlock.stateConstantKeyword
+				parserState.TokenMarker = parserState.NewToken
+				return
+			elif token <= "type":
+				parserState.NewToken =    TypeKeyword(fromExistingToken=token)
+				parserState.NextState =   DelimiterBlock.stateItemDelimiter
+				parserState.PushState =   GenericListInterfaceTypeBlock.stateTypeKeyword
+				parserState.TokenMarker = parserState.NewToken
+				return
+			elif token <= "procedure":
+				raise NotImplementedError("Generic procedures are not supported.")
+			elif token <= "function":
+				raise NotImplementedError("Generic functions are not supported.")
+			elif token <= "impure":
+				raise NotImplementedError("Generic impure functions are not supported.")
+			elif token <= "pure":
+				raise NotImplementedError("Generic pure functions are not supported.")
+			else:
+				parserState.NewToken =    IdentifierToken(fromExistingToken=token)
+				parserState.NextState =   DelimiterBlock.stateItemDelimiter
+				parserState.PushState =   GenericListInterfaceConstantBlock.stateObjectName
+				parserState.TokenMarker = parserState.NewToken
+				return
+		elif isinstance(token, ExtendedIdentifier):
+			parserState.NextState =   GenericListInterfaceConstantBlock.stateObjectName
+			return
+		elif isinstance(token, SpaceToken):
+			blockType =               IndentationBlock if isinstance(token, IndentationToken) else WhitespaceBlock
+			parserState.NewBlock =    blockType(parserState.LastBlock, token)
+			return
+		elif isinstance(token, LinebreakToken):
+			parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker = token
+			# parserState.NextState =   cls.stateWhitespace1
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			# parserState.NextState =   cls.stateWhitespace1
+			return
+
+		raise BlockParserException("Expected interface constant name (identifier) or keyword: CONSTANT, TYPE, PROCEDURE, FUNCTION, PURE, IMPURE.", token)
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/List/GenericMapList.py.html b/typing/html/pyVHDLParser/Blocks/List/GenericMapList.py.html new file mode 100644 index 000000000..e8b858f11 --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/List/GenericMapList.py.html @@ -0,0 +1,677 @@ + + + + + + +

pyVHDLParser.Blocks.List.GenericMapList

+ + + + + + +
pyVHDLParser/Blocks/List/GenericMapList.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators             import export
+
+from pyVHDLParser.Token               import CharacterToken, SpaceToken, WordToken, LinebreakToken, IndentationToken
+from pyVHDLParser.Token.Keywords      import BoundaryToken, IdentifierToken, EndToken, DelimiterToken, OpeningRoundBracketToken, ClosingRoundBracketToken
+from pyVHDLParser.Blocks              import BlockParserException, Block, TokenToBlockParser, SkipableBlock
+from pyVHDLParser.Blocks.Common       import LinebreakBlock, IndentationBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Comment      import SingleLineCommentBlock, MultiLineCommentBlock
+
+
+@export
+class OpenBlock(Block):
+	@classmethod
+	def stateGenericKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected whitespace or '(' after keyword GENERIC."
+		if isinstance(token, CharacterToken):
+			if token == "(":
+				parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+				parserState.NewBlock =    OpenBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+				parserState.NextState =   CloseBlock.stateClosingParenthesis
+				parserState.PushState =   OpenBlock.stateOpeningParenthesis
+				parserState.Counter =     1
+				return
+			elif token == "\n":
+				parserState.NewBlock =    OpenBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				_ =                       LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    OpenBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    OpenBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NextState =     cls.stateWhitespace1
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected  '(' after keyword GENERIC."
+		if isinstance(token, CharacterToken):
+			if token == "(":
+				parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+				parserState.NewBlock =    OpenBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+				parserState.NextState =   CloseBlock.stateClosingParenthesis
+				parserState.PushState =   OpenBlock.stateOpeningParenthesis
+				parserState.Counter =     1
+				return
+			elif token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				if not isinstance(parserState.LastBlock, MultiLineCommentBlock):
+					parserState.NewBlock =  OpenBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True)
+					_ =                     LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				else:
+					parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    OpenBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    OpenBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateOpeningParenthesis(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected generic name (identifier)."
+		if isinstance(token, CharacterToken):
+			if token == ")":
+				# if parserState.TokenMarker != token:
+				# 	parserState.NewBlock = IndentationBlock(parserState.LastBlock, parserState.TokenMarker, token.PreviousToken)
+				parserState.Pop()
+				parserState.TokenMarker = token
+				return
+			elif token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =      IndentationToken(fromExistingToken=token)
+			parserState.NewBlock =      IndentationBlock(parserState.LastBlock, parserState.NewToken)
+			return
+		elif isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.TokenMarker =   parserState.NewToken
+			parserState.NextState =     ItemBlock.stateItemRemainder
+
+			# if parserState.TokenMarker != token:
+			# 	parserState.NewBlock = IndentationBlock(parserState.LastBlock, parserState.TokenMarker, token)
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+
+@export
+class ItemBlock(Block):
+	@classmethod
+	def stateItemRemainder(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken):
+			if token == "(":
+				parserState.NewToken =      OpeningRoundBracketToken(fromExistingToken=token)
+				parserState.Counter += 1
+			elif token == ")":
+				parserState.Counter -= 1
+				if parserState.Counter == 0:
+					parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+					parserState.NewBlock =    ItemBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+					parserState.Pop()
+					parserState.TokenMarker = parserState.NewToken
+				else:
+					parserState.NewToken =    ClosingRoundBracketToken(fromExistingToken=token)
+			elif token == ";":
+				if parserState.Counter == 1:
+					parserState.NewToken =    DelimiterToken(fromExistingToken=token)
+					parserState.NewBlock =    ItemBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+					_ =                       DelimiterBlock(parserState.NewBlock, parserState.NewToken)
+					parserState.NextState =   DelimiterBlock.stateItemDelimiter
+				else:
+					raise BlockParserException("Mismatch in opening and closing parenthesis: open={0}".format(parserState.Counter), token)
+
+
+@export
+class DelimiterBlock(SkipableBlock):
+	@classmethod
+	def stateItemDelimiter(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected generic name (identifier)."
+
+		if isinstance(token, CharacterToken) and (token == "\n"):
+			parserState.NewToken =      LinebreakToken(fromExistingToken=token)
+			parserState.NewBlock =      LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			parserState.NextState =     OpenBlock.stateOpeningParenthesis
+			parserState.PushState =     LinebreakBlock.stateLinebreak
+			return
+		elif isinstance(token, SpaceToken):
+			parserState.NextState =     OpenBlock.stateOpeningParenthesis
+			return
+		elif isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.TokenMarker =   parserState.NewToken
+			parserState.NextState =     ItemBlock.stateItemRemainder
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+
+@export
+class CloseBlock(Block):
+	@classmethod
+	def stateClosingParenthesis(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected ';' or whitespace."
+		if isinstance(token, CharacterToken):
+			if token == ";":
+				parserState.NewToken =    EndToken(fromExistingToken=token)
+				parserState.NewBlock =    CloseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+				parserState.Pop()
+				return
+			elif token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				parserState.TokenMarker = parserState.NewToken
+				return
+			elif token == "-":
+				parserState.NewBlock =    CloseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    CloseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NextState = cls.stateWhitespace1
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected ';'."
+		if isinstance(token, CharacterToken):
+			if token == ";":
+				parserState.NewToken =    EndToken(fromExistingToken=token)
+				parserState.NewBlock =    CloseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+				parserState.Pop()
+				return
+			elif token == "\n":
+				# TODO: review this linebreak case
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				parserState.TokenMarker = parserState.NewToken
+				return
+			elif token == "-":
+				parserState.NewBlock =    CloseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    CloseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/List/ParameterList.py.html b/typing/html/pyVHDLParser/Blocks/List/ParameterList.py.html new file mode 100644 index 000000000..7faa02d03 --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/List/ParameterList.py.html @@ -0,0 +1,590 @@ + + + + + + +

pyVHDLParser.Blocks.List.ParameterList

+ + + + + + +
pyVHDLParser/Blocks/List/ParameterList.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators                 import export
+
+from pyVHDLParser.Token                   import CharacterToken, WordToken, SpaceToken, LinebreakToken, IndentationToken, CommentToken, MultiLineCommentToken, SingleLineCommentToken, ExtendedIdentifier
+from pyVHDLParser.Token.Keywords          import BoundaryToken, DelimiterToken, ClosingRoundBracketToken, IdentifierToken
+from pyVHDLParser.Token.Keywords          import ConstantKeyword, SignalKeyword, VariableKeyword, TypeKeyword
+from pyVHDLParser.Blocks                  import BlockParserException, Block, CommentBlock, TokenToBlockParser, SkipableBlock
+from pyVHDLParser.Blocks.Common           import LinebreakBlock, IndentationBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Generic1         import CloseBlock as CloseBlockBase
+from pyVHDLParser.Blocks.InterfaceObject  import InterfaceSignalBlock, InterfaceConstantBlock, InterfaceVariableBlock
+
+
+@export
+class OpenBlock(Block):
+	@classmethod
+	def stateParameterKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken) and (token == "("):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.NextState =   CloseBlock.stateClosingParenthesis
+			parserState.PushState =   cls.stateOpeningParenthesis
+			parserState.Counter =     1
+			return
+		elif isinstance(token, SpaceToken):
+			parserState.NextState =   cls.stateWhitespace1
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace1
+			return
+
+		raise BlockParserException("Expected '(' or whitespace after keyword PARAMETER.", token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken) and (token == "("):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.PushState =   cls.stateOpeningParenthesis
+			parserState.Counter =     1
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected '(' after keyword PARAMETER.", token)
+
+	@classmethod
+	def stateOpeningParenthesis(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken):
+			if token <= "constant":
+				parserState.NewToken =    ConstantKeyword(fromExistingToken=token)
+				parserState.NextState =   DelimiterBlock.stateItemDelimiter
+				parserState.PushState =   ParameterListInterfaceConstantBlock.stateConstantKeyword
+				parserState.TokenMarker = parserState.NewToken
+				return
+			elif token <= "variable":
+				parserState.NewToken =    VariableKeyword(fromExistingToken=token)
+				parserState.NextState =   DelimiterBlock.stateItemDelimiter
+				parserState.PushState =   ParameterListInterfaceVariableBlock.stateVariableKeyword
+				parserState.TokenMarker = parserState.NewToken
+				return
+			elif token <= "signal":
+				parserState.NewToken =    SignalKeyword(fromExistingToken=token)
+				parserState.NextState =   DelimiterBlock.stateItemDelimiter
+				parserState.PushState =   ParameterListInterfaceSignalBlock.stateSignalKeyword
+				parserState.TokenMarker = parserState.NewToken
+				return
+			else:
+				parserState.NewToken =    IdentifierToken(fromExistingToken=token)
+				parserState.PushState =   ParameterListInterfaceConstantBlock.stateObjectName
+				parserState.TokenMarker = parserState.NewToken
+				return
+		elif isinstance(token, ExtendedIdentifier):
+			parserState.NextState =   ParameterListInterfaceConstantBlock.stateObjectName
+			return
+		elif isinstance(token, SpaceToken):
+			blockType =               IndentationBlock if isinstance(token, IndentationToken) else WhitespaceBlock
+			parserState.NewBlock =    blockType(parserState.LastBlock, token)
+			return
+		elif isinstance(token, LinebreakToken):
+			parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker = token
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			return
+
+		raise BlockParserException("Expected interface element name (identifier).", token)
+
+
+@export
+class ItemBlock(Block):
+	@classmethod
+	def stateItemRemainder(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken):
+			if token == "(":
+				parserState.Counter += 1
+			elif token == ")":
+				parserState.Counter -= 1
+				if parserState.Counter == 0:
+					parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+					parserState.NewBlock =    ItemBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+					_ =                       CloseBlock(parserState.NewBlock, parserState.NewToken)
+					parserState.Pop()
+					parserState.TokenMarker = None
+				else:
+					parserState.NewToken =    ClosingRoundBracketToken(fromExistingToken=token)
+					# parserState.NewBlock =    CloseBlock(parserState.LastBlock, parserState.NewToken)
+					# parserState.Pop()
+			elif token == ";":
+				if parserState.Counter == 1:
+					parserState.NewToken =    DelimiterToken(fromExistingToken=token)
+					parserState.NewBlock =    ItemBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+					_ =                       DelimiterBlock(parserState.NewBlock, parserState.NewToken)
+					parserState.NextState =   DelimiterBlock.stateItemDelimiter
+				else:
+					raise BlockParserException("Mismatch in opening and closing parenthesis: open={0}".format(parserState.Counter), token)
+
+
+@export
+class DelimiterBlock(SkipableBlock):
+	def __init__(self, previousBlock, startToken):
+		super().__init__(previousBlock, startToken, startToken)
+
+	@classmethod
+	def stateItemDelimiter(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken):
+			tokenValue = token.Value.lower()
+			if tokenValue == "constant":
+				parserState.NewToken =    ConstantKeyword(fromExistingToken=token)
+				parserState.PushState =   ParameterListInterfaceConstantBlock.stateConstantKeyword
+				parserState.TokenMarker = parserState.NewToken
+				return
+			elif tokenValue == "variable":
+				parserState.NewToken =    VariableKeyword(fromExistingToken=token)
+				parserState.PushState =   ParameterListInterfaceVariableBlock.stateVariableKeyword
+				parserState.TokenMarker = parserState.NewToken
+				return
+			elif tokenValue == "signal":
+				parserState.NewToken =    SignalKeyword(fromExistingToken=token)
+				parserState.PushState =   ParameterListInterfaceSignalBlock.stateSignalKeyword
+				parserState.TokenMarker = parserState.NewToken
+				return
+			elif tokenValue == "type":
+				parserState.NewToken =    TypeKeyword(fromExistingToken=token)
+				parserState.PushState =   ParameterListInterfaceTypeBlock.stateTypeKeyword
+				parserState.TokenMarker = parserState.NewToken
+				return
+			elif tokenValue == "procedure":
+				raise NotImplementedError("Generic procedures are not supported.")
+			elif tokenValue == "function":
+				raise NotImplementedError("Generic functions are not supported.")
+			elif tokenValue == "impure":
+				raise NotImplementedError("Generic impure functions are not supported.")
+			elif tokenValue == "pure":
+				raise NotImplementedError("Generic pure functions are not supported.")
+			else:
+				parserState.NewToken =    IdentifierToken(fromExistingToken=token)
+				parserState.PushState =   ParameterListInterfaceConstantBlock.stateObjectName
+				parserState.TokenMarker = parserState.NewToken
+				return
+		elif isinstance(token, ExtendedIdentifier):
+			parserState.NextState =   ParameterListInterfaceConstantBlock.stateObjectName
+			return
+		elif isinstance(token, SpaceToken):
+			parserState.TokenMarker = token
+			parserState.NextState =   ItemBlock.stateItemRemainder
+			return
+		elif isinstance(token, LinebreakToken):
+			parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker = token
+			parserState.NextState =   ItemBlock.stateItemRemainder
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			return
+
+		raise BlockParserException("Expected parameter name (identifier).", token)
+
+
+@export
+class CloseBlock(CloseBlockBase):
+	pass
+
+
+@export
+class ParameterListInterfaceConstantBlock(InterfaceConstantBlock):
+	DELIMITER_BLOCK = DelimiterBlock
+
+
+@export
+class ParameterListInterfaceVariableBlock(InterfaceVariableBlock):
+	DELIMITER_BLOCK = DelimiterBlock
+
+
+@export
+class ParameterListInterfaceSignalBlock(InterfaceSignalBlock):
+	DELIMITER_BLOCK = DelimiterBlock
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/List/PortList.py.html b/typing/html/pyVHDLParser/Blocks/List/PortList.py.html new file mode 100644 index 000000000..cb34cc4e6 --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/List/PortList.py.html @@ -0,0 +1,448 @@ + + + + + + +

pyVHDLParser.Blocks.List.PortList

+ + + + + + +
pyVHDLParser/Blocks/List/PortList.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators                 import export
+
+from pyVHDLParser.Token                   import CharacterToken, WordToken, SpaceToken, LinebreakToken, IndentationToken, CommentToken, MultiLineCommentToken, SingleLineCommentToken, ExtendedIdentifier
+from pyVHDLParser.Token.Keywords          import BoundaryToken, SignalKeyword, DelimiterToken
+from pyVHDLParser.Token.Keywords          import IdentifierToken
+from pyVHDLParser.Blocks                  import BlockParserException, Block, CommentBlock, TokenToBlockParser, SkipableBlock
+from pyVHDLParser.Blocks.Common           import LinebreakBlock, IndentationBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Generic1         import CloseBlock as CloseBlockBase
+from pyVHDLParser.Blocks.Expression       import ExpressionBlockEndedByCharORClosingRoundBracket
+from pyVHDLParser.Blocks.InterfaceObject  import InterfaceSignalBlock
+
+
+@export
+class CloseBlock(CloseBlockBase):
+	pass
+
+
+@export
+class DelimiterBlock(SkipableBlock):
+	@classmethod
+	def stateItemDelimiter(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken):
+			if token <= "signal":
+				parserState.NewToken =    SignalKeyword(fromExistingToken=token)
+				parserState.PushState =   PortListInterfaceSignalBlock.stateSignalKeyword
+				parserState.TokenMarker = parserState.NewToken
+				return
+			else:
+				parserState.NewToken =    IdentifierToken(fromExistingToken=token)
+				parserState.PushState =   PortListInterfaceSignalBlock.stateObjectName
+				parserState.TokenMarker = parserState.NewToken
+				return
+		elif isinstance(token, ExtendedIdentifier):
+			parserState.NextState =     PortListInterfaceSignalBlock.stateObjectName
+			return
+		elif isinstance(token, SpaceToken):
+			parserState.NextState =     OpenBlock.stateOpeningParenthesis
+			return
+		elif isinstance(token, LinebreakToken):
+			parserState.NewBlock =      LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   token
+			parserState.NextState =     OpenBlock.stateOpeningParenthesis
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			# parserState.NextState =     cls.stateWhitespace1
+			return
+
+		raise BlockParserException("Expected port name (identifier).", token)
+
+
+@export
+class DefaultValueExpressionBlock(ExpressionBlockEndedByCharORClosingRoundBracket):
+	EXIT_CHAR =  ";"
+	EXIT_TOKEN = DelimiterToken
+	EXIT_BLOCK = DelimiterBlock
+
+
+@export
+class PortListInterfaceSignalBlock(InterfaceSignalBlock):
+	DELIMITER_BLOCK = DelimiterBlock
+	EXPRESSION =      DefaultValueExpressionBlock
+
+
+@export
+class OpenBlock(Block):
+	@classmethod
+	def statePortKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken)and (token == "("):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.NextState =   CloseBlock.stateClosingParenthesis
+			parserState.PushState =   cls.stateOpeningParenthesis
+			return
+		elif isinstance(token, SpaceToken):
+			parserState.NextState =   cls.stateWhitespace1
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace1
+			return
+
+		raise BlockParserException("Expected '(' or whitespace after keyword PORT.", token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken)and (token == "("):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.NextState =   CloseBlock.stateClosingParenthesis
+			parserState.PushState =   cls.stateOpeningParenthesis
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected '(' after keyword PORT.", token)
+
+	@classmethod
+	def stateOpeningParenthesis(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken) and (token == ")"):
+			# if parserState.TokenMarker != token:
+			# 	parserState.NewBlock = IndentationBlock(parserState.LastBlock, parserState.TokenMarker, token.PreviousToken)
+			parserState.Pop()
+			parserState.TokenMarker = token
+			return
+		elif isinstance(token, WordToken):
+			if token <= "signal":
+				parserState.NewToken =    SignalKeyword(fromExistingToken=token)
+				parserState.NextState =   DelimiterBlock.stateItemDelimiter
+				parserState.PushState =   PortListInterfaceSignalBlock.stateSignalKeyword
+				parserState.TokenMarker = parserState.NewToken
+				return
+			else:
+				parserState.NewToken =    IdentifierToken(fromExistingToken=token)
+				parserState.NextState =   DelimiterBlock.stateItemDelimiter
+				parserState.PushState =   PortListInterfaceSignalBlock.stateObjectName
+				parserState.TokenMarker = parserState.NewToken
+				return
+		elif isinstance(token, ExtendedIdentifier):
+			parserState.NextState =   PortListInterfaceSignalBlock.stateObjectName
+			return
+		elif isinstance(token, SpaceToken):
+			blockType =               IndentationBlock if isinstance(token, IndentationToken) else WhitespaceBlock
+			parserState.NewBlock =    blockType(parserState.LastBlock, token)
+			return
+		elif isinstance(token, LinebreakToken):
+			parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker = token
+			# parserState.NextState =   cls.stateWhitespace1
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			# parserState.NextState =   cls.stateWhitespace1
+			return
+
+		raise BlockParserException("Expected interface signal name (identifier) or keyword: SIGNAL.", token)
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/List/PortMapList.py.html b/typing/html/pyVHDLParser/Blocks/List/PortMapList.py.html new file mode 100644 index 000000000..5932b11e5 --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/List/PortMapList.py.html @@ -0,0 +1,685 @@ + + + + + + +

pyVHDLParser.Blocks.List.PortMapList

+ + + + + + +
pyVHDLParser/Blocks/List/PortMapList.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators             import export
+
+from pyVHDLParser.Token               import CharacterToken, SpaceToken, WordToken, LinebreakToken, IndentationToken
+from pyVHDLParser.Token.Keywords      import BoundaryToken, IdentifierToken, EndToken, DelimiterToken, OpeningRoundBracketToken, ClosingRoundBracketToken
+from pyVHDLParser.Blocks              import BlockParserException, Block, TokenToBlockParser, SkipableBlock
+from pyVHDLParser.Blocks.Common       import LinebreakBlock, IndentationBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Comment      import SingleLineCommentBlock, MultiLineCommentBlock
+
+
+@export
+class OpenBlock(Block):
+	@classmethod
+	def statePortKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected whitespace or '(' after keyword PORT."
+		if isinstance(token, CharacterToken):
+			if token == "(":
+				parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+				parserState.NewBlock =    OpenBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+				parserState.NextState =   CloseBlock.stateClosingParenthesis
+				parserState.PushState =   OpenBlock.stateOpeningParenthesis
+				parserState.Counter =     1
+				return
+			elif token == "\n":
+				parserState.NewBlock =    OpenBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				_ =                       LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    OpenBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    OpenBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NextState =     cls.stateWhitespace1
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+
+		errorMessage = "Expected  '(' after keyword PORT."
+		if isinstance(token, CharacterToken):
+			if token == "(":
+				parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+				parserState.NewBlock =    OpenBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+				parserState.NextState =   CloseBlock.stateClosingParenthesis
+				parserState.PushState =   OpenBlock.stateOpeningParenthesis
+				parserState.Counter =     1
+				return
+			elif token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				if not isinstance(parserState.LastBlock, MultiLineCommentBlock):
+					parserState.NewBlock =  OpenBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True)
+					_ =                     LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				else:
+					parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    OpenBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    OpenBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateOpeningParenthesis(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected port name (identifier)."
+		if isinstance(token, CharacterToken):
+			if token == ")":
+				# if parserState.TokenMarker != token:
+				# 	parserState.NewBlock = IndentationBlock(parserState.LastBlock, parserState.TokenMarker, token.PreviousToken)
+				parserState.Pop(1, token)
+				return
+			elif token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =      IndentationToken(fromExistingToken=token)
+			parserState.NewBlock =      IndentationBlock(parserState.LastBlock, parserState.NewToken)
+			return
+		elif isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.TokenMarker =   parserState.NewToken
+			parserState.NextState =     ItemBlock.stateItemRemainder
+
+			# if parserState.TokenMarker != token:
+			# 	parserState.NewBlock = IndentationBlock(parserState.LastBlock, parserState.TokenMarker, token)
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+
+@export
+class ItemBlock(Block):
+	@classmethod
+	def stateItemRemainder(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken):
+			if token == "(":
+				parserState.NewToken =      OpeningRoundBracketToken(fromExistingToken=token)
+				parserState.Counter += 1
+			elif token == ")":
+				parserState.Counter -= 1
+				if parserState.Counter == 0:
+					parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+					parserState.NewBlock =    ItemBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+					parserState.Pop()
+					parserState.TokenMarker = parserState.NewToken
+				else:
+					parserState.NewToken =    ClosingRoundBracketToken(fromExistingToken=token)
+			elif token == ";":
+				if parserState.Counter == 1:
+					parserState.NewToken = DelimiterToken(fromExistingToken=token)
+					parserState.NewBlock = ItemBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+					_ = DelimiterBlock(parserState.NewBlock, parserState.NewToken)
+					parserState.NextState = DelimiterBlock.stateItemDelimiter
+				else:
+					raise BlockParserException("Mismatch in opening and closing parenthesis: open={0}".format(parserState.Counter), token)
+
+
+@export
+class DelimiterBlock(SkipableBlock):
+	def __init__(self, previousBlock, startToken):
+		super().__init__(previousBlock, startToken, startToken)
+
+	@classmethod
+	def stateItemDelimiter(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected port name (identifier)."
+
+		if isinstance(token, CharacterToken) and (token == "\n"):
+			parserState.NewToken =      LinebreakToken(fromExistingToken=token)
+			parserState.NewBlock =      LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			parserState.NextState =     OpenBlock.stateOpeningParenthesis
+			parserState.PushState =     LinebreakBlock.stateLinebreak
+			return
+		elif isinstance(token, SpaceToken):
+			parserState.NextState =     OpenBlock.stateOpeningParenthesis
+			return
+		elif isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.TokenMarker =   parserState.NewToken
+			parserState.NextState =     ItemBlock.stateItemRemainder
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+
+@export
+class CloseBlock(Block):
+	@classmethod
+	def stateClosingParenthesis(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected ';' or whitespace."
+		if isinstance(token, CharacterToken):
+			if token == ";":
+				parserState.NewToken =    EndToken(fromExistingToken=token)
+				parserState.NewBlock =    CloseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+				parserState.Pop()
+				return
+			elif token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				parserState.TokenMarker = parserState.NewToken
+				return
+			elif token == "-":
+				parserState.NewBlock =    CloseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    CloseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NextState = cls.stateWhitespace1
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected ';'."
+		if isinstance(token, CharacterToken):
+			if token == ";":
+				parserState.NewToken =    EndToken(fromExistingToken=token)
+				parserState.NewBlock =    CloseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+				parserState.Pop()
+				return
+			elif token == "\n":
+				# TODO: review this linebreak case
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				parserState.TokenMarker = parserState.NewToken
+				return
+			elif token == "-":
+				parserState.NewBlock =    CloseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    CloseBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/List/SensitivityList.py.html b/typing/html/pyVHDLParser/Blocks/List/SensitivityList.py.html new file mode 100644 index 000000000..bd5c10b7d --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/List/SensitivityList.py.html @@ -0,0 +1,443 @@ + + + + + + +

pyVHDLParser.Blocks.List.SensitivityList

+ + + + + + +
pyVHDLParser/Blocks/List/SensitivityList.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators         import export
+
+from pyVHDLParser.Token           import CharacterToken, WordToken, SpaceToken, LinebreakToken, IndentationToken, ExtendedIdentifier
+from pyVHDLParser.Token           import CommentToken, MultiLineCommentToken, SingleLineCommentToken
+from pyVHDLParser.Token.Keywords  import BoundaryToken, DelimiterToken, OpeningRoundBracketToken, ClosingRoundBracketToken
+from pyVHDLParser.Token.Keywords  import IdentifierToken, AllKeyword
+from pyVHDLParser.Blocks          import BlockParserException, Block, CommentBlock, TokenToBlockParser, SkipableBlock
+from pyVHDLParser.Blocks.Common   import LinebreakBlock, IndentationBlock, WhitespaceBlock
+
+
+@export
+class OpenBlock(Block):
+	@classmethod
+	def stateOpeningParenthesis(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken):
+			if token <= "all":
+				parserState.NewToken =    AllKeyword(fromExistingToken=token)
+				parserState.NewBlock =    ItemBlock(parserState.LastBlock, parserState.NewToken, endToken=parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   CloseBlock.stateAllKeyword
+			else:
+				parserState.NewToken =    IdentifierToken(fromExistingToken=token)
+				parserState.TokenMarker = parserState.NewToken
+				parserState.NextState =   ItemBlock.stateItemRemainder
+			return
+		elif isinstance(token, ExtendedIdentifier):
+			parserState.NextState =   ItemBlock.stateItemRemainder
+			return
+		elif isinstance(token, SpaceToken):
+			blockType =               IndentationBlock if isinstance(token, IndentationToken) else WhitespaceBlock
+			parserState.NewBlock =    blockType(parserState.LastBlock, token)
+			parserState.TokenMarker = None
+			return
+		elif isinstance(token, LinebreakToken):
+			parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker = None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			return
+
+		raise BlockParserException("Expected keyword ALL or signal name (identifier).", token)
+
+
+@export
+class ItemBlock(Block):
+	@classmethod
+	def stateItemRemainder(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken):
+			if token == "(":
+				parserState.Counter += 1
+			elif token == ")":
+				parserState.NewToken =      OpeningRoundBracketToken(fromExistingToken=token)
+				parserState.Counter -= 1
+				if parserState.Counter == 0:
+					parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+					parserState.NewBlock =    ItemBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+					parserState.Pop()
+					parserState.TokenMarker = parserState.NewToken
+				else:
+					parserState.NewToken =    ClosingRoundBracketToken(fromExistingToken=token)
+			elif token == ";":
+				if parserState.Counter == 1:
+					parserState.NewToken =    DelimiterToken(fromExistingToken=token)
+					parserState.NewBlock =    ItemBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+					_ =                       DelimiterBlock(parserState.NewBlock, parserState.NewToken)
+					parserState.NextState =   DelimiterBlock.stateItemDelimiter
+				else:
+					raise BlockParserException("Mismatch in opening and closing parenthesis: open={0}".format(parserState.Counter), token)
+
+
+@export
+class DelimiterBlock(SkipableBlock):
+	def __init__(self, previousBlock, startToken):
+		super().__init__(previousBlock, startToken, startToken)
+
+	@classmethod
+	def stateItemDelimiter(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken):
+			parserState.NewToken =    IdentifierToken(fromExistingToken=token)
+			parserState.TokenMarker = parserState.NewToken
+			parserState.NextState =   ItemBlock.stateItemRemainder
+			return
+		elif isinstance(token, ExtendedIdentifier):
+			parserState.NextState =   ItemBlock.stateItemRemainder
+			return
+		elif isinstance(token, SpaceToken):
+			parserState.NextState =   OpenBlock.stateOpeningParenthesis
+			return
+		elif isinstance(token, LinebreakToken):
+			parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker = token
+			parserState.NextState =   OpenBlock.stateOpeningParenthesis
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			return
+
+		raise BlockParserException("Expected signal name (identifier).", token)
+
+
+@export
+class CloseBlock(Block):
+	@classmethod
+	def stateAllKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken) and (token == ")"):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =    CloseBlock(parserState.LastBlock, parserState.NewToken, endToken=parserState.NewToken)
+			parserState.Pop()
+			return
+		elif isinstance(token, SpaceToken):
+			parserState.NextState =   cls.stateWhitespace1
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace1
+			return
+
+		raise BlockParserException("Expected ')' or whitespace after keyword ALL.", token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected  '(' after keyword PROCESS."
+		if isinstance(token, CharacterToken) and (token == ")"):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.NewToken, endToken=parserState.NewToken)
+			parserState.Pop()
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/List/__init__.py.html b/typing/html/pyVHDLParser/Blocks/List/__init__.py.html new file mode 100644 index 000000000..be7d745ee --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/List/__init__.py.html @@ -0,0 +1,74 @@ + + + + + + +

pyVHDLParser.Blocks.List

+ + + + + + +
pyVHDLParser/Blocks/List/__init__.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/Object/Constant.py.html b/typing/html/pyVHDLParser/Blocks/Object/Constant.py.html new file mode 100644 index 000000000..d172126f6 --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/Object/Constant.py.html @@ -0,0 +1,168 @@ + + + + + + +

pyVHDLParser.Blocks.Object.Constant

+ + + + + + +
pyVHDLParser/Blocks/Object/Constant.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators           import export
+
+from pyVHDLParser.Token             import SpaceToken, LinebreakToken, CommentToken
+from pyVHDLParser.Token.Keywords    import BoundaryToken
+from pyVHDLParser.Blocks            import TokenToBlockParser, CommentBlock, BlockParserException
+from pyVHDLParser.Blocks.Common     import LinebreakBlock
+from pyVHDLParser.Blocks.Expression import ExpressionBlockEndedBySemicolon
+from pyVHDLParser.Blocks.Object     import ObjectDeclarationEndMarkerBlock, ObjectDeclarationBlock
+
+
+@export
+class ConstantDeclarationEndMarkerBlock(ObjectDeclarationEndMarkerBlock):
+	pass
+
+
+@export
+class ConstantDeclarationDefaultExpressionBlock(ExpressionBlockEndedBySemicolon):
+	END_BLOCK = ConstantDeclarationEndMarkerBlock
+
+
+@export
+class ConstantDeclarationBlock(ObjectDeclarationBlock):
+	OBJECT_KIND =       "constant"
+	EXPRESSION_BLOCK =  ConstantDeclarationDefaultExpressionBlock
+	END_BLOCK =         ConstantDeclarationEndMarkerBlock
+
+	@classmethod
+	def stateConstantKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace1
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace1
+			return
+
+		raise BlockParserException("Expected whitespace after keyword CONSTANT.", token)
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/Object/File.py.html b/typing/html/pyVHDLParser/Blocks/Object/File.py.html new file mode 100644 index 000000000..643af6859 --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/Object/File.py.html @@ -0,0 +1,74 @@ + + + + + + +

pyVHDLParser.Blocks.Object.File

+ + + + + + +
pyVHDLParser/Blocks/Object/File.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/Object/SharedVariable.py.html b/typing/html/pyVHDLParser/Blocks/Object/SharedVariable.py.html new file mode 100644 index 000000000..2418dc370 --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/Object/SharedVariable.py.html @@ -0,0 +1,382 @@ + + + + + + +

pyVHDLParser.Blocks.Object.SharedVariable

+ + + + + + +
pyVHDLParser/Blocks/Object/SharedVariable.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators           import export
+
+from pyVHDLParser.Blocks            import TokenToBlockParser, CommentBlock, BlockParserException
+from pyVHDLParser.Blocks.Common     import LinebreakBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Object     import ObjectDeclarationEndMarkerBlock, ObjectDeclarationBlock
+from pyVHDLParser.Token             import SpaceToken, LinebreakToken, CommentToken, WordToken
+from pyVHDLParser.Token             import ExtendedIdentifier, MultiLineCommentToken, CharacterToken
+from pyVHDLParser.Token.Keywords    import BoundaryToken, IdentifierToken, EndToken
+
+
+@export
+class SharedVariableDeclarationEndMarkerBlock(ObjectDeclarationEndMarkerBlock):
+	pass
+
+
+@export
+class SharedVariableDeclarationBlock(ObjectDeclarationBlock):
+	OBJECT_KIND = "variable"
+	END_BLOCK =   SharedVariableDeclarationEndMarkerBlock
+
+	@classmethod
+	def stateSharedKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace0
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace0
+			return
+
+		raise BlockParserException("Expected whitespace after keyword SHARED.", token)
+
+	@classmethod
+	def stateWhitespace0(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken):
+			parserState.NewToken =    IdentifierToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateVariableKeyword
+			return
+		elif isinstance(token, ExtendedIdentifier):
+			parserState.NextState =   cls.stateVariableKeyword
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =  cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                     LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker = None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =    CommentBlock(parserState.LastBlock, token)
+			parserState.TokenMarker = None
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =    WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker = None
+			return
+
+		raise BlockParserException("Expected whitespace after keyword SHARED.", token)
+
+	@classmethod
+	def stateVariableKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace1
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace1
+			return
+
+		raise BlockParserException("Expected whitespace after keyword VARIABLE.", token)
+
+	@classmethod
+	def stateSubtypeIndication(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken) and (token == ';'):
+			parserState.NewToken =    EndToken(fromExistingToken=token)
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+			_ =                       cls.END_BLOCK(parserState.NewBlock, parserState.NewToken)
+			parserState.Pop()
+			return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace4
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace4
+			return
+
+		raise BlockParserException("Expected ';' or whitespace after subtype indication.", token)
+
+	@classmethod
+	def stateWhitespace4(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken) and (token == ";"):
+			parserState.NewToken =    EndToken(fromExistingToken=token)
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.Pop()
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =  cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                     LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker = None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =    CommentBlock(parserState.LastBlock, token)
+			parserState.TokenMarker = None
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =    WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker = None
+			return
+
+		raise BlockParserException("Expected ';' after subtype indication.", token)
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/Object/Signal.py.html b/typing/html/pyVHDLParser/Blocks/Object/Signal.py.html new file mode 100644 index 000000000..f879acea0 --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/Object/Signal.py.html @@ -0,0 +1,168 @@ + + + + + + +

pyVHDLParser.Blocks.Object.Signal

+ + + + + + +
pyVHDLParser/Blocks/Object/Signal.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators           import export
+
+from pyVHDLParser.Token             import SpaceToken, LinebreakToken, CommentToken
+from pyVHDLParser.Token.Keywords    import BoundaryToken
+from pyVHDLParser.Blocks            import TokenToBlockParser, CommentBlock, BlockParserException
+from pyVHDLParser.Blocks.Common     import LinebreakBlock
+from pyVHDLParser.Blocks.Expression import ExpressionBlockEndedBySemicolon
+from pyVHDLParser.Blocks.Object     import ObjectDeclarationEndMarkerBlock, ObjectDeclarationBlock
+
+
+@export
+class SignalDeclarationEndMarkerBlock(ObjectDeclarationEndMarkerBlock):
+	pass
+
+
+@export
+class SignalDeclarationDefaultExpressionBlock(ExpressionBlockEndedBySemicolon):
+	END_BLOCK = SignalDeclarationEndMarkerBlock
+
+
+@export
+class SignalDeclarationBlock(ObjectDeclarationBlock):
+	OBJECT_KIND =       "signal"
+	EXPRESSION_BLOCK =  SignalDeclarationDefaultExpressionBlock
+	END_BLOCK =         SignalDeclarationEndMarkerBlock
+
+	@classmethod
+	def stateSignalKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace1
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace1
+			return
+
+		raise BlockParserException("Expected whitespace after keyword SIGNAL.", token)
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/Object/Variable.py.html b/typing/html/pyVHDLParser/Blocks/Object/Variable.py.html new file mode 100644 index 000000000..f1dcb3f41 --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/Object/Variable.py.html @@ -0,0 +1,168 @@ + + + + + + +

pyVHDLParser.Blocks.Object.Variable

+ + + + + + +
pyVHDLParser/Blocks/Object/Variable.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators           import export
+
+from pyVHDLParser.Token             import SpaceToken, LinebreakToken, CommentToken
+from pyVHDLParser.Token.Keywords    import BoundaryToken
+from pyVHDLParser.Blocks            import TokenToBlockParser, CommentBlock, BlockParserException
+from pyVHDLParser.Blocks.Common     import LinebreakBlock
+from pyVHDLParser.Blocks.Expression import ExpressionBlockEndedBySemicolon
+from pyVHDLParser.Blocks.Object     import ObjectDeclarationEndMarkerBlock, ObjectDeclarationBlock
+
+
+@export
+class VariableDeclarationEndMarkerBlock(ObjectDeclarationEndMarkerBlock):
+	pass
+
+
+@export
+class VariableDeclarationDefaultExpressionBlock(ExpressionBlockEndedBySemicolon):
+	END_BLOCK = VariableDeclarationEndMarkerBlock
+
+
+@export
+class VariableDeclarationBlock(ObjectDeclarationBlock):
+	OBJECT_KIND =       "variable"
+	EXPRESSION_BLOCK =  VariableDeclarationDefaultExpressionBlock
+	END_BLOCK =         VariableDeclarationEndMarkerBlock
+
+	@classmethod
+	def stateVariableKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace1
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace1
+			return
+
+		raise BlockParserException("Expected whitespace after keyword VARIABLE.", token)
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/Object/__init__.py.html b/typing/html/pyVHDLParser/Blocks/Object/__init__.py.html new file mode 100644 index 000000000..f8e7ed08f --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/Object/__init__.py.html @@ -0,0 +1,561 @@ + + + + + + +

pyVHDLParser.Blocks.Object

+ + + + + + +
pyVHDLParser/Blocks/Object/__init__.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators         import export
+
+from pyVHDLParser.Token           import WordToken, ExtendedIdentifier, LinebreakToken, MultiLineCommentToken
+from pyVHDLParser.Token           import CommentToken, SpaceToken, CharacterToken, FusedCharacterToken
+from pyVHDLParser.Token.Keywords  import IdentifierToken, BoundaryToken, VariableAssignmentKeyword, EndToken
+from pyVHDLParser.Blocks          import Block, TokenToBlockParser, CommentBlock, BlockParserException
+from pyVHDLParser.Blocks.Common   import LinebreakBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Generic1 import EndOfStatementBlock
+
+
+@export
+class ObjectDeclarationBlock(Block):
+	OBJECT_KIND =       ""
+	EXPRESSION_BLOCK =  None
+	END_BLOCK =         None
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken):
+			parserState.NewToken =    IdentifierToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateObjectName
+			return
+		elif isinstance(token, ExtendedIdentifier):
+			parserState.NextState =   cls.stateObjectName
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =  cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                     LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker = None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =    CommentBlock(parserState.LastBlock, token)
+			parserState.TokenMarker = None
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =    WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker = None
+			return
+
+		raise BlockParserException("Expected {0} name (identifier).".format(cls.OBJECT_KIND), token)
+
+	@classmethod
+	def stateObjectName(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken) and (token == ":"):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateColon1
+			return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace2
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace2
+			return
+
+		raise BlockParserException("Expected ':' or whitespace after {0} name.".format(cls.OBJECT_KIND), token)
+
+	@classmethod
+	def stateWhitespace2(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken) and (token == ":"):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateColon1
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =  cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                     LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker = None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =    CommentBlock(parserState.LastBlock, token)
+			parserState.TokenMarker = None
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =    WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker = None
+			return
+
+		raise BlockParserException("Expected colon after {0} name.".format(cls.OBJECT_KIND), token)
+
+	@classmethod
+	def stateColon1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken):
+			parserState.NewToken =    IdentifierToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateSubtypeIndication
+			return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace3
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace3
+			return
+
+		raise BlockParserException("Expected subtype indication or whitespace after colon.", token)
+
+	@classmethod
+	def stateWhitespace3(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken):
+			parserState.NewToken =    IdentifierToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateSubtypeIndication
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =  cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                     LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker = None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =    CommentBlock(parserState.LastBlock, token)
+			parserState.TokenMarker = None
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =    WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker = None
+			return
+
+		raise BlockParserException("Expected subtype indication after colon.", token)
+
+	@classmethod
+	def stateSubtypeIndication(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, FusedCharacterToken) and (token == ":="):
+			parserState.NewToken =    VariableAssignmentKeyword(fromExistingToken=token)
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.PushState =   cls.EXPRESSION_BLOCK.stateExpression
+			parserState.TokenMarker = None
+			parserState.Counter =     0
+			return
+		elif isinstance(token, CharacterToken) and (token == ';'):
+			parserState.NewToken =    EndToken(fromExistingToken=token)
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+			_ =                       cls.END_BLOCK(parserState.NewBlock, parserState.NewToken)
+			parserState.Pop()
+			return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace4
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace4
+			return
+
+		raise BlockParserException("Expected ':=', ';' or whitespace after subtype indication.", token)
+
+	@classmethod
+	def stateWhitespace4(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, FusedCharacterToken) and (token == ":="):
+			parserState.NewToken =    VariableAssignmentKeyword(fromExistingToken=token)
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.PushState =   cls.EXPRESSION_BLOCK.stateExpression
+			parserState.TokenMarker = None
+			parserState.Counter =     0
+			return
+		elif isinstance(token, CharacterToken) and (token == ";"):
+			parserState.NewToken =    EndToken(fromExistingToken=token)
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.Pop()
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =  cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                     LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker = None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =    CommentBlock(parserState.LastBlock, token)
+			parserState.TokenMarker = None
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =    WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker = None
+			return
+
+		raise BlockParserException("Expected ':=' or ';' after subtype indication.", token)
+
+
+@export
+class ObjectDeclarationEndMarkerBlock(EndOfStatementBlock):
+	pass
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/Reference/Context.py.html b/typing/html/pyVHDLParser/Blocks/Reference/Context.py.html new file mode 100644 index 000000000..4e37bbe3c --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/Reference/Context.py.html @@ -0,0 +1,446 @@ + + + + + + +

pyVHDLParser.Blocks.Reference.Context

+ + + + + + +
pyVHDLParser/Blocks/Reference/Context.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators             import export
+
+from pyVHDLParser.Token               import CommentToken, SpaceToken, LinebreakToken, MultiLineCommentToken, IndentationToken, SingleLineCommentToken, ExtendedIdentifier
+from pyVHDLParser.Token.Keywords      import WordToken, BoundaryToken, IdentifierToken, IsKeyword, UseKeyword, EndKeyword, ContextKeyword, LibraryKeyword
+from pyVHDLParser.Blocks              import Block, CommentBlock, BlockParserException, TokenToBlockParser
+from pyVHDLParser.Blocks.Common       import LinebreakBlock, IndentationBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Generic      import EndBlock as EndBlockBase
+
+
+@export
+class NameBlock(Block):
+	KEYWORDS = None
+
+	@classmethod
+	def __cls_init__(cls):
+		from pyVHDLParser.Blocks.Reference     import Use, Library
+
+		cls.KEYWORDS = {
+			# Keyword       Transition
+			UseKeyword:     Use.StartBlock.stateUseKeyword,
+			LibraryKeyword: Library.StartBlock.stateLibraryKeyword
+		}
+	@classmethod
+	def stateContextKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace1
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace1
+			return
+
+		raise BlockParserException("Expected whitespace after keyword CONTEXT.", token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateContextName
+			return
+		elif isinstance(token, ExtendedIdentifier):
+			parserState.NextState =     cls.stateContextName
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected context name (identifier).", token)
+
+	@classmethod
+	def stateContextName(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, SpaceToken):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateWhitespace2
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                     LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         block(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			parserState.NextState =     cls.stateWhitespace2
+			return
+
+		raise BlockParserException("Expected whitespace after context name (identifier).", token)
+
+	@classmethod
+	def stateWhitespace2(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken) and (token <= "is"):
+			parserState.NewToken =      IsKeyword(fromExistingToken=token)
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.NextState =     cls.stateDeclarativeRegion
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected keyword IS after context name.", token)
+
+	@classmethod
+	def stateDeclarativeRegion(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, SpaceToken):
+			blockType =                 IndentationBlock if isinstance(token, IndentationToken) else WhitespaceBlock
+			parserState.NewBlock =      blockType(parserState.LastBlock, token)
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                     LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =      block(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, WordToken):
+			tokenValue = token.Value.lower()
+			for keyword in cls.KEYWORDS:
+				if tokenValue == keyword.__KEYWORD__:
+					newToken =                keyword(fromExistingToken=token)
+					parserState.PushState =   cls.KEYWORDS[keyword]
+					parserState.NewToken =    newToken
+					parserState.TokenMarker = newToken
+					return
+
+			if tokenValue == "end":
+				parserState.NewToken =    EndKeyword(fromExistingToken=token)
+				parserState.TokenMarker = parserState.NewToken
+				parserState.NextState =   EndBlock.stateEndKeyword
+				return
+
+		raise BlockParserException(
+			"Expected one of these keywords: END, {keywords}. Found: '{tokenValue}'.".format(
+				keywords=", ".join(
+					[kw.__KEYWORD__.upper() for kw in cls.KEYWORDS]
+				),
+				tokenValue=token.Value
+			), token)
+
+
+@export
+class EndBlock(EndBlockBase):
+	KEYWORD =       ContextKeyword
+	EXPECTED_NAME = KEYWORD.__KEYWORD__
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/Reference/Library.py.html b/typing/html/pyVHDLParser/Blocks/Reference/Library.py.html new file mode 100644 index 000000000..6b383c7ea --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/Reference/Library.py.html @@ -0,0 +1,493 @@ + + + + + + +

pyVHDLParser.Blocks.Reference.Library

+ + + + + + +
pyVHDLParser/Blocks/Reference/Library.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators             import export
+
+from pyVHDLParser.Token               import CharacterToken, SpaceToken, WordToken, LinebreakToken, CommentToken, IndentationToken, SingleLineCommentToken, MultiLineCommentToken, ExtendedIdentifier
+from pyVHDLParser.Token.Keywords      import BoundaryToken, IdentifierToken, EndToken, DelimiterToken
+from pyVHDLParser.Blocks              import BlockParserException, Block, CommentBlock, TokenToBlockParser, FinalBlock, SkipableBlock
+from pyVHDLParser.Blocks.Common       import LinebreakBlock, WhitespaceBlock
+
+
+@export
+class StartBlock(Block):
+	@classmethod
+	def stateLibraryKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace1
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace1
+			return
+
+		raise BlockParserException("Expected whitespace after keyword LIBRARY.", token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken):
+			parserState.NewToken =    IdentifierToken(fromExistingToken=token)
+			parserState.TokenMarker = parserState.NewToken
+			parserState.NextState =   LibraryNameBlock.stateLibraryName
+			return
+		elif isinstance(token, ExtendedIdentifier):
+			parserState.NextState =   LibraryNameBlock.stateLibraryName
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    block(parserState.LastBlock, token)
+			parserState.TokenMarker = None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =    WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker = None
+			return
+
+		raise BlockParserException("Expected library name (identifier).", token)
+
+
+@export
+class LibraryNameBlock(Block):
+	@classmethod
+	def stateLibraryName(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken):
+			if token == ",":
+				parserState.NewToken =  DelimiterToken(fromExistingToken=token)
+				parserState.NewBlock =  cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken)
+				_ =                     DelimiterBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.NextState = DelimiterBlock.stateDelimiter
+				return
+			elif token == ";":
+				parserState.NewToken =  EndToken(fromExistingToken=token)
+				parserState.NewBlock =  cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken)
+				_ =                     EndBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.Pop()
+				return
+		elif isinstance(token, SpaceToken):
+			#parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace1
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace1
+			return
+
+		raise BlockParserException("Expected ';' after library name.", token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken):
+			if token == ",":
+				parserState.NewToken =    DelimiterToken(fromExistingToken=token)
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken)
+				_ =                       DelimiterBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.NextState =   DelimiterBlock.stateDelimiter
+				return
+			elif token == ";":
+				parserState.NewToken =    EndToken(fromExistingToken=token)
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken)
+				_ =                       EndBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.Pop()
+				return
+		elif isinstance(token, LinebreakToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token, multiPart=True)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected ';'.", token)
+
+
+@export
+class DelimiterBlock(SkipableBlock):
+	@classmethod
+	def stateDelimiter(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.NextState =     LibraryNameBlock.stateLibraryName
+			parserState.TokenMarker =   parserState.NewToken
+			return
+		elif isinstance(token, ExtendedIdentifier):
+			parserState.NextState =     LibraryNameBlock.stateLibraryName
+			return
+		elif isinstance(token, LinebreakToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token, multiPart=True)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			# parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   parserState.NewToken
+			parserState.NextState =     cls.stateWhitespace1
+			return
+
+		raise BlockParserException("Expected library name (identifier).", token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.NextState =     LibraryNameBlock.stateLibraryName
+			return
+		elif isinstance(token, LinebreakToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token, multiPart=True)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected library name (identifier).", token)
+
+
+@export
+class EndBlock(FinalBlock):
+	pass
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/Reference/Use.py.html b/typing/html/pyVHDLParser/Blocks/Reference/Use.py.html new file mode 100644 index 000000000..b97422b8a --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/Reference/Use.py.html @@ -0,0 +1,1052 @@ + + + + + + +

pyVHDLParser.Blocks.Reference.Use

+ + + + + + +
pyVHDLParser/Blocks/Reference/Use.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+380
+381
+382
+383
+384
+385
+386
+387
+388
+389
+390
+391
+392
+393
+394
+395
+396
+397
+398
+399
+400
+401
+402
+403
+404
+405
+406
+407
+408
+409
+410
+411
+412
+413
+414
+415
+416
+417
+418
+419
+420
+421
+422
+423
+424
+425
+426
+427
+428
+429
+430
+431
+432
+433
+434
+435
+436
+437
+438
+439
+440
+441
+442
+443
+444
+445
+446
+447
+448
+449
+450
+451
+452
+453
+454
+455
+456
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators             import export
+
+from pyVHDLParser.Token               import CharacterToken, SpaceToken, WordToken, LinebreakToken, CommentToken, MultiLineCommentToken, IndentationToken, SingleLineCommentToken, ExtendedIdentifier
+from pyVHDLParser.Token.Keywords      import BoundaryToken, IdentifierToken, DelimiterToken, EndToken, AllKeyword
+from pyVHDLParser.Blocks              import BlockParserException, Block, CommentBlock, TokenToBlockParser, FinalBlock, SkipableBlock
+from pyVHDLParser.Blocks.Common       import LinebreakBlock, WhitespaceBlock
+
+
+@export
+class StartBlock(Block):
+	@classmethod
+	def stateUseKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace1
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace1
+			return
+
+		raise BlockParserException("Expected whitespace after keyword USE.", token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.TokenMarker =   parserState.NewToken
+			parserState.NextState =     ReferenceNameBlock.stateLibraryName
+			return
+		elif isinstance(token, ExtendedIdentifier):
+			parserState.NextState =     ReferenceNameBlock.stateLibraryName
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                     LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =      block(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected library name (identifier).", token)
+
+
+@export
+class ReferenceNameBlock(Block):
+	@classmethod
+	def stateLibraryName(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken) and (token == "."):
+			parserState.NewToken =    DelimiterToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateDot1
+			return
+		elif isinstance(token, SpaceToken):
+			#parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace1
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace1
+			return
+
+		raise BlockParserException("Expected '.' after library name.", token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken) and (token == "."):
+			parserState.NewToken =      DelimiterToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateDot1
+			return
+		elif isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.TokenMarker =   parserState.NewToken
+			parserState.NextState =     cls.stateDot1
+			return
+		elif isinstance(token, ExtendedIdentifier):
+			parserState.NextState =     cls.stateDot1
+			return
+		elif isinstance(token, LinebreakToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token, multiPart=True)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected '.'.", token)
+
+	@classmethod
+	def stateDot1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken):
+			parserState.NewToken =    IdentifierToken(fromExistingToken=token)
+			parserState.NextState =   cls.statePackageName
+			return
+		elif isinstance(token, ExtendedIdentifier):
+			parserState.NextState =   cls.statePackageName
+			return
+		elif isinstance(token, CharacterToken) and (token == "."):
+			parserState.NewToken =    DelimiterToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateDot1
+			return
+		elif isinstance(token, SpaceToken):
+			#parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace2
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace2
+			return
+
+		raise BlockParserException("Expected package name after '.'.", token)
+
+	@classmethod
+	def stateWhitespace2(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.NextState =     cls.statePackageName
+			return
+		elif isinstance(token, ExtendedIdentifier):
+			parserState.NextState =     cls.statePackageName
+			return
+		elif isinstance(token, CharacterToken) and (token == "."):
+			parserState.NewToken =      DelimiterToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateDot1
+			return
+		elif isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.TokenMarker =   parserState.NewToken
+			parserState.NextState =     cls.statePackageName
+			return
+		elif isinstance(token, LinebreakToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token, multiPart=True)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected package name (identifier).", token)
+
+	@classmethod
+	def statePackageName(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken) and (token == "."):
+			parserState.NewToken =    DelimiterToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateDot2
+			return
+		elif isinstance(token, SpaceToken):
+			#parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace3
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace3
+			return
+
+		raise BlockParserException("Expected '.' after package name.", token)
+
+	@classmethod
+	def stateWhitespace3(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken) and (token == "."):
+			parserState.NewToken =      DelimiterToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateDot2
+			return
+		elif isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.TokenMarker =   parserState.NewToken
+			parserState.NextState =     cls.stateDot2
+			return
+		elif isinstance(token, ExtendedIdentifier):
+			parserState.NextState =     cls.stateDot2
+			return
+		elif isinstance(token, LinebreakToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token, multiPart=True)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected '.'.", token)
+
+	@classmethod
+	def stateDot2(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken):
+			if token <= "all":
+				parserState.NewToken =  AllKeyword(fromExistingToken=token)
+			else:
+				parserState.NewToken =  IdentifierToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateObjectName
+			return
+		elif isinstance(token, ExtendedIdentifier):
+			parserState.NextState =   cls.stateObjectName
+			return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace4
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace4
+			return
+
+		raise BlockParserException("Expected object name after '.'.", token)
+
+	@classmethod
+	def stateWhitespace4(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken) and (token == "."):
+			parserState.NewToken =      DelimiterToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateDot1
+			return
+		elif isinstance(token, WordToken):
+			if token <= "all":
+				parserState.NewToken =    AllKeyword(fromExistingToken=token)
+			else:
+				parserState.NewToken =    IdentifierToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateObjectName
+			return
+		elif isinstance(token, ExtendedIdentifier):
+			parserState.NextState =     cls.stateObjectName
+			return
+		elif isinstance(token, LinebreakToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token, multiPart=True)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected object name (identifier) or keyword ALL.", token)
+
+	@classmethod
+	def stateObjectName(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken):
+			if token == ",":
+				parserState.NewToken =  DelimiterToken(fromExistingToken=token)
+				parserState.NewBlock =  cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken)
+				_ =                     DelimiterBlock(parserState.NewBlock, parserState.NewToken, endToken=parserState.NewToken)
+				parserState.NextState = DelimiterBlock.stateDelimiter
+				return
+			elif token == ";":
+				parserState.NewToken =  EndToken(fromExistingToken=token)
+				parserState.NewBlock =  cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken)
+				_ =                     EndBlock(parserState.NewBlock, parserState.NewToken, endToken=parserState.NewToken)
+				parserState.Pop()
+				return
+		elif isinstance(token, SpaceToken):
+			# parserState.NewToken =    WhitespaceBlock(parserState.LastBlock, token)
+			parserState.NextState =   cls.stateWhitespace5
+			return
+		elif isinstance(token, LinebreakToken):
+			parserState.NextState =   cls.stateWhitespace5
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace5
+			return
+
+		raise BlockParserException("Expected ',', ';' or whitespace.", token)
+
+	@classmethod
+	def stateWhitespace5(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken):
+			if token == ",":
+				parserState.NewToken =    DelimiterToken(fromExistingToken=token)
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken)
+				_ =                       DelimiterBlock(parserState.NewBlock, parserState.NewToken, endToken=parserState.NewToken)
+				parserState.NextState =   DelimiterBlock.stateDelimiter
+				return
+			elif token == ";":
+				parserState.NewToken =    EndToken(fromExistingToken=token)
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+				_ =                       EndBlock(parserState.NewBlock, parserState.NewToken, endToken=parserState.NewToken)
+				parserState.Pop()
+				parserState.TokenMarker = None
+				return
+		elif isinstance(token, LinebreakToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token, multiPart=True)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected ',' or ';'.", token)
+
+
+@export
+class DelimiterBlock(SkipableBlock):
+	@classmethod
+	def stateDelimiter(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.NextState =     ReferenceNameBlock.stateLibraryName
+			parserState.TokenMarker =   parserState.NewToken
+			return
+		elif isinstance(token, ExtendedIdentifier):
+			parserState.NextState =     ReferenceNameBlock.stateLibraryName
+			return
+		elif isinstance(token, LinebreakToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token, multiPart=True)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.TokenMarker =   parserState.NewToken
+			parserState.NextState =     cls.stateWhitespace1
+			return
+
+		raise BlockParserException("Expected library name (identifier) or whitespace.", token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.NextState =     ReferenceNameBlock.stateLibraryName
+			return
+		elif isinstance(token, ExtendedIdentifier):
+			parserState.NextState =     ReferenceNameBlock.stateLibraryName
+			return
+		elif isinstance(token, LinebreakToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token, multiPart=True)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected library name (identifier).", token)
+
+
+@export
+class EndBlock(FinalBlock):
+	pass
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/Reference/__init__.py.html b/typing/html/pyVHDLParser/Blocks/Reference/__init__.py.html new file mode 100644 index 000000000..e19b1e03e --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/Reference/__init__.py.html @@ -0,0 +1,74 @@ + + + + + + +

pyVHDLParser.Blocks.Reference

+ + + + + + +
pyVHDLParser/Blocks/Reference/__init__.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/Reporting/Assert.py.html b/typing/html/pyVHDLParser/Blocks/Reporting/Assert.py.html new file mode 100644 index 000000000..46166d692 --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/Reporting/Assert.py.html @@ -0,0 +1,781 @@ + + + + + + +

pyVHDLParser.Blocks.Reporting.Assert

+ + + + + + +
pyVHDLParser/Blocks/Reporting/Assert.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators         import export
+
+from pyVHDLParser.Token           import SpaceToken, LinebreakToken, WordToken, IndentationToken, CharacterToken
+from pyVHDLParser.Token           import CommentToken, SingleLineCommentToken, MultiLineCommentToken
+from pyVHDLParser.Token.Keywords  import BoundaryToken, IdentifierToken, ReportKeyword, EndToken, SeverityKeyword
+from pyVHDLParser.Blocks          import Block, CommentBlock, TokenToBlockParser, BlockParserException
+from pyVHDLParser.Blocks.Common   import LinebreakBlock, WhitespaceBlock
+
+
+@export
+class AssertBlock(Block):
+	@classmethod
+	def stateAssertKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace1
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace1
+			return
+
+		raise BlockParserException("Expected whitespace after keyword ASSERT.", token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateAssertion
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected assertion (expression).", token)
+
+	@classmethod
+	def stateAssertion(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace2
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace2
+			return
+
+		raise BlockParserException("Expected whitespace after assertion (expression).", token)
+
+	@classmethod
+	def stateWhitespace2(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken) and (token <= "report"):
+			parserState.NewToken =      ReportKeyword(fromExistingToken=token)
+			parserState.NextState =     cls.stateReportKeyword
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected keyword REPORT after assertion (expression).", token)
+
+	@classmethod
+	def stateReportKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace3
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace3
+			return
+
+		raise BlockParserException("Expected whitespace after keyword REPORT.", token)
+
+	@classmethod
+	def stateWhitespace3(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateMessage
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected report message (expression) after keyword REPORT.", token)
+
+	@classmethod
+	def stateMessage(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken)and (token == ";"):
+			parserState.NewToken =    EndToken(fromExistingToken=token)
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.Pop()
+			return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace4
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace4
+			return
+
+		raise BlockParserException("Expected whitespace after report message (expression).", token)
+
+	@classmethod
+	def stateWhitespace4(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken)and (token == ";"):
+			parserState.NewToken =    EndToken(fromExistingToken=token)
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.Pop()
+			return
+		elif isinstance(token, WordToken) and (token <= "severity"):
+			parserState.NewToken =    SeverityKeyword(fromExistingToken=token)
+			parserState.NextState =   cls.stateSeverityKeyword
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =  cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                     LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker = None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =    WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker = None
+			return
+
+		raise BlockParserException("Expected keyword SEVERITY after report message (expression).", token)
+
+	@classmethod
+	def stateSeverityKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace5
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace5
+			return
+
+		raise BlockParserException("Expected whitespace after keyword SEVERITY.", token)
+
+	@classmethod
+	def stateWhitespace5(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateSeverityLevel
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected severity level (expression) after keyword SEVERITY.", token)
+
+	@classmethod
+	def stateSeverityLevel(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken) and (token == ";"):
+			parserState.NewToken =    EndToken(fromExistingToken=token)
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.Pop()
+			return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace6
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace6
+			return
+
+		raise BlockParserException("Expected ';' or whitespace after severity level (expression).", token)
+
+	@classmethod
+	def stateWhitespace6(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken)and (token == ";"):
+			parserState.NewToken =      EndToken(fromExistingToken=token)
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.Pop()
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected ';'.", token)
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/Reporting/Report.py.html b/typing/html/pyVHDLParser/Blocks/Reporting/Report.py.html new file mode 100644 index 000000000..0b5119563 --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/Reporting/Report.py.html @@ -0,0 +1,566 @@ + + + + + + +

pyVHDLParser.Blocks.Reporting.Report

+ + + + + + +
pyVHDLParser/Blocks/Reporting/Report.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators         import export
+
+from pyVHDLParser.Token           import SpaceToken, LinebreakToken, WordToken, IndentationToken, CharacterToken
+from pyVHDLParser.Token           import CommentToken, SingleLineCommentToken, MultiLineCommentToken
+from pyVHDLParser.Token.Keywords  import BoundaryToken, IdentifierToken, EndToken, SeverityKeyword
+from pyVHDLParser.Blocks          import Block, CommentBlock, TokenToBlockParser, BlockParserException
+from pyVHDLParser.Blocks.Common   import LinebreakBlock, WhitespaceBlock
+
+
+@export
+class ReportBlock(Block):
+	@classmethod
+	def stateReportKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace3
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace3
+			return
+
+		raise BlockParserException("Expected whitespace after keyword ARCHITECTURE.", token)
+
+	@classmethod
+	def stateWhitespace3(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateMessage
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected keyword REPORT after assertion.", token)
+
+	@classmethod
+	def stateMessage(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken)and (token == ";"):
+			parserState.NewToken =    EndToken(fromExistingToken=token)
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.Pop()
+			return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace4
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace4
+			return
+
+		raise BlockParserException("Expected whitespace after assertion.", token)
+
+	@classmethod
+	def stateWhitespace4(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken)and (token == ";"):
+			parserState.NewToken =    EndToken(fromExistingToken=token)
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.Pop()
+			return
+		elif isinstance(token, WordToken) and (token <= "severity"):
+			parserState.NewToken =    SeverityKeyword(fromExistingToken=token)
+			parserState.NextState =   cls.stateSeverityKeyword
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =  cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                     LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker = None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =    WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker = None
+			return
+
+		raise BlockParserException("Expected keyword SEVERITY after message.", token)
+
+	@classmethod
+	def stateSeverityKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace5
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace5
+			return
+
+		raise BlockParserException("Expected whitespace after keyword SEVERITY.", token)
+
+	@classmethod
+	def stateWhitespace5(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateSeverityLevel
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected keyword REPORT after assertion.", token)
+
+	@classmethod
+	def stateSeverityLevel(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken) and (token == ";"):
+			parserState.NewToken =    EndToken(fromExistingToken=token)
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.Pop()
+			return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace6
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace6
+			return
+
+		raise BlockParserException("Expected ';' or whitespace after severity level.", token)
+
+	@classmethod
+	def stateWhitespace6(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken):
+			if token == ";":
+				parserState.NewToken =    EndToken(fromExistingToken=token)
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+				parserState.Pop()
+				return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected ';'.", token)
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/Reporting/__init__.py.html b/typing/html/pyVHDLParser/Blocks/Reporting/__init__.py.html new file mode 100644 index 000000000..38b5f8aa3 --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/Reporting/__init__.py.html @@ -0,0 +1,74 @@ + + + + + + +

pyVHDLParser.Blocks.Reporting

+ + + + + + +
pyVHDLParser/Blocks/Reporting/__init__.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/Sequential/Function.py.html b/typing/html/pyVHDLParser/Blocks/Sequential/Function.py.html new file mode 100644 index 000000000..1a80517c6 --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/Sequential/Function.py.html @@ -0,0 +1,942 @@ + + + + + + +

pyVHDLParser.Blocks.Sequential.Function

+ + + + + + +
pyVHDLParser/Blocks/Sequential/Function.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+380
+381
+382
+383
+384
+385
+386
+387
+388
+389
+390
+391
+392
+393
+394
+395
+396
+397
+398
+399
+400
+401
+402
+403
+404
+405
+406
+407
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators                   import export
+
+from pyVHDLParser.Token                     import SpaceToken, LinebreakToken, CommentToken, CharacterToken, IndentationToken, MultiLineCommentToken
+from pyVHDLParser.Token.Keywords            import WordToken, BoundaryToken, IdentifierToken, PureKeyword, ImpureKeyword
+from pyVHDLParser.Token.Keywords            import ReturnKeyword, GenericKeyword, ParameterKeyword, FunctionKeyword, EndKeyword
+from pyVHDLParser.Token.Keywords            import UseKeyword, ConstantKeyword, VariableKeyword, IsKeyword, EndToken, BeginKeyword, ProcedureKeyword, ReportKeyword
+from pyVHDLParser.Blocks                    import Block, BlockParserException, CommentBlock, TokenToBlockParser
+from pyVHDLParser.Blocks.Common             import LinebreakBlock, IndentationBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Generic            import SequentialBeginBlock, SequentialDeclarativeRegion
+from pyVHDLParser.Blocks.Generic1           import EndBlock as EndBlockBase
+from pyVHDLParser.Blocks.List               import GenericList, ParameterList
+
+
+@export
+class EndBlock(EndBlockBase):
+	KEYWORD =             FunctionKeyword
+	KEYWORD_IS_OPTIONAL = True
+	EXPECTED_NAME =       KEYWORD.__KEYWORD__
+
+
+@export
+class BeginBlock(SequentialBeginBlock):
+	END_BLOCK =   EndBlock
+
+
+@export
+class DeclarativeRegion(SequentialDeclarativeRegion):
+	BEGIN_BLOCK = BeginBlock
+	END_BLOCK =   EndBlock
+
+
+@export
+class NameBlock(Block):
+	@classmethod
+	def statePureKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace0
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace0
+			return
+
+		raise BlockParserException("Expected whitespace after keyword PURE.", token)
+
+	@classmethod
+	def stateImpureKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace0
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace0
+			return
+
+		raise BlockParserException("Expected whitespace after keyword IMPURE.", token)
+
+	@classmethod
+	def stateWhitespace0(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateFunctionName
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected keyword FUNCTION.", token)
+
+	@classmethod
+	def stateFunctionKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace1
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace1
+			return
+
+		raise BlockParserException("Expected whitespace after keyword FUNCTION.", token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateFunctionName
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected function name (designator).", token)
+
+	@classmethod
+	def stateFunctionName(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken) and (token == "("):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+			_ =                       ParameterList.OpenBlock(parserState.NewBlock, parserState.NewToken)
+			parserState.TokenMarker = None
+			parserState.NextState =   ReturnTypeBlock.stateAfterParameterList
+			parserState.PushState =   ParameterList.OpenBlock.stateOpeningParenthesis
+			parserState.Counter =     1
+			return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace2
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace2
+			return
+
+		raise BlockParserException("Expected '(' or whitespace after function name.", token)
+
+	@classmethod
+	def stateWhitespace2(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken) and (token == "("):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+			_ =                       ParameterList.OpenBlock(parserState.NewBlock, parserState.NewToken)
+			parserState.TokenMarker = None
+			parserState.NextState =   ReturnTypeBlock.stateAfterParameterList
+			parserState.PushState =   ParameterList.OpenBlock.stateOpeningParenthesis
+			parserState.Counter =     1
+			return
+		elif isinstance(token, WordToken):
+			keyword = token.Value.lower()
+			if keyword == "return":
+				parserState.NewToken =    ReturnKeyword(fromExistingToken=token)
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+				parserState.TokenMarker = parserState.NewToken
+				parserState.NextState =   ReturnTypeBlock.stateReturnKeyword
+				return
+			elif keyword == "generic":
+				parserState.NewToken =    GenericKeyword(fromExistingToken=token)
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+				parserState.NextState =   GenericList.OpenBlock.stateGenericKeyword
+				parserState.TokenMarker = parserState.NewToken
+				return
+			elif keyword == "parameter":
+				parserState.NewToken =    ParameterKeyword(fromExistingToken=token)
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+				parserState.NextState =   ParameterList.OpenBlock.stateParameterKeyword
+				parserState.TokenMarker = parserState.NewToken
+				return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected '(' or keywords GENERIC, PARAMETER or RETURN after function name.", token)
+
+
+@export
+class ReturnTypeBlock(Block):
+	@classmethod
+	def stateAfterParameterList(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken):
+			if token <= "return":
+				parserState.NewToken =    ReturnKeyword(fromExistingToken=token)
+				# parserState.NewBlock =    NameBlock2(parserState.LastBlock, parserState.TokenMarker, parserState.NewToken)
+				parserState.NextState =   cls.stateReturnKeyword
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace1
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    block(parserState.LastBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace1
+			return
+
+		raise BlockParserException("Expected keyword RETURN.", token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken) and (token <= "return"):
+			parserState.NewToken =      ReturnKeyword(fromExistingToken=token)
+			parserState.NextState =     cls.stateReturnKeyword
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected function name (designator).", token)
+
+	@classmethod
+	def stateReturnKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected whitespace after keyword RETURN."
+		if isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace2
+			return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace2
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace2
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhitespace2(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateReturnType
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected return type (type mark).", token)
+
+	@classmethod
+	def stateReturnType(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected ';' or whitespace after type mark (return type)."
+		if isinstance(token, CharacterToken) and (token == ";"):
+			parserState.NewToken =    EndToken(fromExistingToken=token)
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.Pop()
+			return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace3
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace3
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhitespace3(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken) and (token == ";"):
+			parserState.NewToken =      EndToken(fromExistingToken=token)
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.Pop()
+			return
+		elif isinstance(token, WordToken) and (token <= "is"):
+			parserState.NewToken =      IsKeyword(fromExistingToken=token)
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.NextState =     DeclarativeRegion.stateDeclarativeRegion
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected function name (designator).", token)
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/Sequential/Package.py.html b/typing/html/pyVHDLParser/Blocks/Sequential/Package.py.html new file mode 100644 index 000000000..66039030d --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/Sequential/Package.py.html @@ -0,0 +1,376 @@ + + + + + + +

pyVHDLParser.Blocks.Sequential.Package

+ + + + + + +
pyVHDLParser/Blocks/Sequential/Package.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators           import export
+
+from pyVHDLParser.Token             import LinebreakToken, WordToken, SpaceToken, CommentToken, MultiLineCommentToken
+from pyVHDLParser.Token.Keywords    import PackageKeyword, IsKeyword, EndKeyword, GenericKeyword, BodyKeyword, UseKeyword, VariableKeyword, SignalKeyword
+from pyVHDLParser.Token.Keywords    import BoundaryToken, IdentifierToken
+from pyVHDLParser.Token.Keywords    import ConstantKeyword, SharedKeyword, ProcedureKeyword, FunctionKeyword, PureKeyword, ImpureKeyword
+from pyVHDLParser.Blocks            import BlockParserException, Block, CommentBlock, TokenToBlockParser
+from pyVHDLParser.Blocks.Common     import LinebreakBlock, IndentationBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Generic    import SequentialDeclarativeRegion
+from pyVHDLParser.Blocks.Generic1   import EndBlock as EndBlockBase
+from pyVHDLParser.Blocks.Sequential import PackageBody
+from pyVHDLParser.Blocks.List       import GenericList
+
+
+@export
+class EndBlock(EndBlockBase):
+	KEYWORD =             PackageKeyword
+	KEYWORD_IS_OPTIONAL = True
+	EXPECTED_NAME =       KEYWORD.__KEYWORD__
+
+
+@export
+class DeclarativeRegion(SequentialDeclarativeRegion):
+	END_BLOCK = EndBlock
+
+	@classmethod
+	def __cls_init__(cls):
+		super().__cls_init__()
+
+		# TODO: use key assignment: a[b] = c
+		cls.KEYWORDS.update({
+			# Keyword         Transition
+			GenericKeyword:  GenericList.OpenBlock.stateGenericKeyword
+		})
+
+@export
+class NameBlock(Block):
+	@classmethod
+	def statePackageKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace1
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace1
+			return
+
+		raise BlockParserException("Expected whitespace after keyword PACKAGE.", token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken):
+			if token <= "body":
+				parserState.NewToken =    BodyKeyword(fromExistingToken=token)
+				parserState.NextState =   PackageBody.NameBlock.stateBodyKeyword
+				return
+			else:
+				parserState.NewToken =    IdentifierToken(fromExistingToken=token)
+				parserState.NextState =   cls.statePackageName
+				return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected package name (identifier).", token)
+
+	@classmethod
+	def statePackageName(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace2
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace2
+			return
+
+		raise BlockParserException("Expected whitespace after package name.", token)
+
+	@classmethod
+	def stateWhitespace2(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken) and (token <= "is"):
+			parserState.NewToken =      IsKeyword(fromExistingToken=token)
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.TokenMarker =   None
+			parserState.NextState =     DeclarativeRegion.stateDeclarativeRegion
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected keyword IS after package name.", token)
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/Sequential/PackageBody.py.html b/typing/html/pyVHDLParser/Blocks/Sequential/PackageBody.py.html new file mode 100644 index 000000000..757f0d9c6 --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/Sequential/PackageBody.py.html @@ -0,0 +1,340 @@ + + + + + + +

pyVHDLParser.Blocks.Sequential.PackageBody

+ + + + + + +
pyVHDLParser/Blocks/Sequential/PackageBody.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators                   import export
+
+from pyVHDLParser.Token                     import LinebreakToken, WordToken, SpaceToken, CommentToken, MultiLineCommentToken, IndentationToken
+from pyVHDLParser.Token.Keywords            import PackageKeyword, IsKeyword, EndKeyword, BodyKeyword, FunctionKeyword, SignalKeyword
+from pyVHDLParser.Token.Keywords            import BoundaryToken, IdentifierToken
+from pyVHDLParser.Token.Keywords            import ConstantKeyword, SharedKeyword, ProcedureKeyword, FunctionKeyword, PureKeyword, ImpureKeyword
+from pyVHDLParser.Blocks                    import BlockParserException, Block, CommentBlock, TokenToBlockParser
+from pyVHDLParser.Blocks.Common             import LinebreakBlock, IndentationBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Generic            import SequentialDeclarativeRegion
+from pyVHDLParser.Blocks.Generic1           import EndBlock as EndBlockBase
+
+
+@export
+class EndBlock(EndBlockBase):
+	KEYWORD =             (PackageKeyword, BodyKeyword)
+	KEYWORD_IS_OPTIONAL = True
+	EXPECTED_NAME =       " ".join(kw.__KEYWORD__ for kw in KEYWORD)
+
+
+@export
+class DeclarativeRegion(SequentialDeclarativeRegion):
+	END_BLOCK = EndBlock
+
+
+@export
+class NameBlock(Block):
+	@classmethod
+	def stateBodyKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace1
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace1
+			return
+
+		raise BlockParserException("Expected whitespace after keyword ", token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.NextState =     cls.statePackageName
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    NameBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected package name (identifier).", token)
+
+	@classmethod
+	def statePackageName(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace2
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace2
+			return
+
+		raise BlockParserException("Expected whitespace after package name.", token)
+
+	@classmethod
+	def stateWhitespace2(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken) and (token <= "is"):
+			parserState.NewToken =      IsKeyword(fromExistingToken=token)
+			parserState.NewBlock =      NameBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.TokenMarker =   None
+			parserState.NextState =     DeclarativeRegion.stateDeclarativeRegion
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    NameBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected keyword IS after package name.", token)
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/Sequential/Procedure.py.html b/typing/html/pyVHDLParser/Blocks/Sequential/Procedure.py.html new file mode 100644 index 000000000..3c9b687f2 --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/Sequential/Procedure.py.html @@ -0,0 +1,592 @@ + + + + + + +

pyVHDLParser.Blocks.Sequential.Procedure

+ + + + + + +
pyVHDLParser/Blocks/Sequential/Procedure.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators                   import export
+
+from pyVHDLParser.Token                     import SpaceToken, LinebreakToken, CommentToken, CharacterToken, IndentationToken, MultiLineCommentToken
+from pyVHDLParser.Token.Keywords            import WordToken, BoundaryToken, IdentifierToken, GenericKeyword, ParameterKeyword, ProcedureKeyword, EndKeyword, ImpureKeyword, PureKeyword
+from pyVHDLParser.Token.Keywords            import UseKeyword, ConstantKeyword, VariableKeyword, IsKeyword, EndToken, BeginKeyword, FunctionKeyword, ReportKeyword
+from pyVHDLParser.Blocks                    import Block, BlockParserException, CommentBlock, TokenToBlockParser
+from pyVHDLParser.Blocks.Common             import LinebreakBlock, IndentationBlock, WhitespaceBlock
+# from pyVHDLParser.Blocks.ControlStructure   import If, Case, ForLoop, WhileLoop, Return
+from pyVHDLParser.Blocks.Generic            import SequentialBeginBlock, SequentialDeclarativeRegion
+from pyVHDLParser.Blocks.Generic1           import EndBlock as EndBlockBase
+from pyVHDLParser.Blocks.List               import GenericList, ParameterList
+
+
+@export
+class EndBlock(EndBlockBase):
+	KEYWORD =             ProcedureKeyword
+	KEYWORD_IS_OPTIONAL = True
+	EXPECTED_NAME =       KEYWORD.__KEYWORD__
+
+
+@export
+class BeginBlock(SequentialBeginBlock):
+	END_BLOCK =   EndBlock
+
+
+@export
+class DeclarativeRegion(SequentialDeclarativeRegion):
+	BEGIN_BLOCK = BeginBlock
+	END_BLOCK =   EndBlock
+
+
+@export
+class NameBlock(Block):
+	@classmethod
+	def stateProcedureKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, SpaceToken):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateWhitespace1
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                     LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         block(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			parserState.NextState =     cls.stateWhitespace1
+			return
+
+		raise BlockParserException("Expected whitespace after keyword PROCEDURE.", token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateProcedureName
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected procedure name (designator).", token)
+
+	@classmethod
+	def stateProcedureName(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken):
+			if token == "(":
+				parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+				_ =                       ParameterList.OpenBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   VoidBlock.stateAfterParameterList
+				parserState.PushState =   ParameterList.OpenBlock.stateOpeningParenthesis
+				parserState.Counter =     1
+				return
+			elif token == ";":
+				parserState.NewToken =    EndToken(fromExistingToken=token)
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) # .PreviousToken)
+#				_ =                       EndBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+				parserState.Pop()
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateWhitespace2
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                     LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         block(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			parserState.NextState =     cls.stateWhitespace2
+			return
+
+		raise BlockParserException("Expected ';', '(' or whitespace after procedure name.", token)
+
+	@classmethod
+	def stateWhitespace2(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken):
+			if token == "(":
+				parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+				_ =                       ParameterList.OpenBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   VoidBlock.stateAfterParameterList
+				parserState.PushState =   ParameterList.OpenBlock.stateOpeningParenthesis
+				parserState.Counter =     1
+				return
+			elif token == ";":
+				parserState.NewToken =    EndToken(fromExistingToken=token)
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken) # .PreviousToken)
+#				_ =                       EndBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+				parserState.Pop()
+				return
+		elif isinstance(token, WordToken):
+			keyword = token.Value.lower()
+			if keyword == "is":
+				parserState.NewToken =    IsKeyword(fromExistingToken=token)
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+				_ =                       VoidBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = parserState.NewToken
+				parserState.NextState =   VoidBlock.stateDeclarativeRegion
+				return
+			elif keyword == "generic":
+				parserState.NewToken =    GenericKeyword(fromExistingToken=token)
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+				parserState.NextState =   GenericList.OpenBlock.stateGenericKeyword
+				parserState.TokenMarker = parserState.NewToken
+				return
+			elif keyword == "parameter":
+				parserState.NewToken =    ParameterKeyword(fromExistingToken=token)
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken)
+				parserState.NextState =   ParameterList.OpenBlock.stateParameterKeyword
+				parserState.TokenMarker = parserState.NewToken
+				return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected ';', '(' or keywords GENERIC, PARAMETER or RETURN after procedure name.", token)
+
+
+@export
+class VoidBlock(Block):
+	@classmethod
+	def stateAfterParameterList(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken) and (token == ";"):
+			parserState.NewToken =      EndToken(fromExistingToken=token)
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.Pop()
+			return
+		elif isinstance(token, WordToken):
+			if token <= "is":
+				parserState.NewToken =    IsKeyword(fromExistingToken=token)
+				parserState.NewBlock =    VoidBlock(parserState.LastBlock, parserState.TokenMarker, parserState.NewToken)
+				parserState.NextState =   DeclarativeRegion.stateDeclarativeRegion
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateWhitespace1
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                     LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =      block(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			parserState.NextState =     cls.stateWhitespace1
+			return
+
+		raise BlockParserException("Expected keyword RETURN.", token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken) and (token <= "is"):
+			parserState.NewToken =      IsKeyword(fromExistingToken=token)
+			parserState.NextState =     DeclarativeRegion.stateDeclarativeRegion
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected procedure name (designator).", token)
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/Sequential/Process.py.html b/typing/html/pyVHDLParser/Blocks/Sequential/Process.py.html new file mode 100644 index 000000000..e37d71ee3 --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/Sequential/Process.py.html @@ -0,0 +1,590 @@ + + + + + + +

pyVHDLParser.Blocks.Sequential.Process

+ + + + + + +
pyVHDLParser/Blocks/Sequential/Process.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators                   import export
+
+from pyVHDLParser.Token                     import CharacterToken, SpaceToken, LinebreakToken, CommentToken, IndentationToken, MultiLineCommentToken, SingleLineCommentToken
+from pyVHDLParser.Token.Keywords            import WordToken, BoundaryToken, IsKeyword, UseKeyword, ConstantKeyword, ImpureKeyword, PureKeyword
+from pyVHDLParser.Token.Keywords            import VariableKeyword, ProcessKeyword, BeginKeyword, FunctionKeyword, ProcedureKeyword
+from pyVHDLParser.Blocks                    import Block, CommentBlock, BlockParserException, TokenToBlockParser
+from pyVHDLParser.Blocks.Common             import LinebreakBlock, IndentationBlock, WhitespaceBlock
+# from pyVHDLParser.Blocks.ControlStructure   import If, Case, ForLoop, WhileLoop
+from pyVHDLParser.Blocks.Generic            import SequentialBeginBlock, SequentialDeclarativeRegion
+from pyVHDLParser.Blocks.Generic1           import EndBlock as EndBlockBase
+from pyVHDLParser.Blocks.List               import SensitivityList
+
+
+@export
+class EndBlock(EndBlockBase):
+	KEYWORD =             ProcessKeyword
+	KEYWORD_IS_OPTIONAL = True
+	EXPECTED_NAME =       KEYWORD.__KEYWORD__
+
+
+@export
+class BeginBlock(SequentialBeginBlock):
+	END_BLOCK =   EndBlock
+
+
+@export
+class DeclarativeRegion(SequentialDeclarativeRegion):
+	BEGIN_BLOCK = BeginBlock
+	END_BLOCK =   EndBlock
+
+
+@export
+class OpenBlock(Block):
+	@classmethod
+	def stateProcessKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken)and (token == "("):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.NextState =   OpenBlock2.stateAfterSensitivityList
+			parserState.PushState =   SensitivityList.OpenBlock.stateOpeningParenthesis
+			parserState.Counter =     1
+			return
+		elif isinstance(token, SpaceToken):
+			parserState.NextState =   cls.stateWhitespace1
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace1
+			return
+
+		raise BlockParserException("Expected '(' or whitespace after keyword PROCESS.", token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken)and (token == "("):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.NextState =   OpenBlock2.stateAfterSensitivityList
+			parserState.PushState =   SensitivityList.OpenBlock.stateOpeningParenthesis
+			parserState.Counter =     1
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      CommentBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, WordToken):
+			tokenValue = token.Value.lower()
+
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken)
+
+			for keyword in OpenBlock2.KEYWORDS:
+				if tokenValue == keyword.__KEYWORD__:
+					newToken = keyword(fromExistingToken=token)
+					parserState.NextState =  DeclarativeRegion.stateDeclarativeRegion
+					parserState.PushState =   cls.KEYWORDS[keyword]
+					parserState.NewToken =    newToken
+					parserState.TokenMarker = newToken
+					return
+
+			if tokenValue == "begin":
+				parserState.NewToken =    BeginKeyword(fromExistingToken=token)
+				_ =                       BeginBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   BeginBlock.stateSequentialRegion
+				return
+
+		raise BlockParserException("Expected '(' after keyword PROCESS.", token)
+
+# TODO: Find a better name
+@export
+class OpenBlock2(Block):
+	KEYWORDS = None
+
+	# TODO: Merge with OpenBlock.KEYWORDS ??
+	@classmethod
+	def __cls_init__(cls):
+		from pyVHDLParser.Blocks.Object.Variable    import VariableDeclarationBlock, VariableDeclarationEndMarkerBlock
+		from pyVHDLParser.Blocks.Object.Constant    import ConstantDeclarationBlock, ConstantDeclarationEndMarkerBlock
+		from pyVHDLParser.Blocks.Reference          import Use
+		from pyVHDLParser.Blocks.Reporting          import Report
+		from pyVHDLParser.Blocks.Sequential         import Procedure, Function
+
+		cls.KEYWORDS = {
+			# Keyword     Transition
+			UseKeyword:       Use.StartBlock.stateUseKeyword,
+			ConstantKeyword:  ConstantDeclarationBlock.stateConstantKeyword,
+			VariableKeyword:  VariableDeclarationBlock.stateVariableKeyword,
+			FunctionKeyword:  Function.NameBlock.stateFunctionKeyword,
+			ProcedureKeyword: Procedure.NameBlock.stateProcedureKeyword,
+			ImpureKeyword:    Function.NameBlock.stateImpureKeyword,
+			PureKeyword:      Function.NameBlock.statePureKeyword
+		}
+
+	@classmethod
+	def stateAfterSensitivityList(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken):
+			tokenValue = token.Value.lower()
+
+			for keyword in OpenBlock2.KEYWORDS:
+				if tokenValue == keyword.__KEYWORD__:
+					newToken =                keyword(fromExistingToken=token)
+					parserState.NextState =   DeclarativeRegion.stateDeclarativeRegion
+					parserState.PushState =   OpenBlock2.KEYWORDS[keyword]
+					parserState.NewToken =    newToken
+					parserState.TokenMarker = newToken
+					return
+
+			if tokenValue == "begin":
+				parserState.NewToken =    BeginKeyword(fromExistingToken=token)
+				parserState.NewBlock =    BeginBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   BeginBlock.stateSequentialRegion
+				return
+			elif tokenValue == "is":
+				parserState.NewToken =    IsKeyword(fromExistingToken=token)
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   DeclarativeRegion.stateDeclarativeRegion
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.TokenMarker = parserState.NewToken
+			parserState.NextState =   cls.stateWhitespace1
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    block(parserState.LastBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace1
+			return
+
+		raise BlockParserException("Expected whitespace after keyword ENTITY.", token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken):
+			tokenValue = token.Value.lower()
+
+			for keyword in cls.KEYWORDS:
+				if tokenValue == keyword.__KEYWORD__:
+					newToken =                keyword(fromExistingToken=token)
+					parserState.NextState =   DeclarativeRegion.stateDeclarativeRegion
+					parserState.PushState =   cls.KEYWORDS[keyword]
+					parserState.NewToken =    newToken
+					parserState.TokenMarker = newToken
+					return
+
+			if tokenValue == "begin":
+				parserState.NewToken =    BeginKeyword(fromExistingToken=token)
+				parserState.NewBlock =    BeginBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   BeginBlock.stateSequentialRegion
+				return
+			elif tokenValue == "is":
+				parserState.NewToken =    IsKeyword(fromExistingToken=token)
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   DeclarativeRegion.stateDeclarativeRegion
+				return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected declarations or keyword IS after sensitivity list.", token)
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/Sequential/__init__.py.html b/typing/html/pyVHDLParser/Blocks/Sequential/__init__.py.html new file mode 100644 index 000000000..6f2fbdff4 --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/Sequential/__init__.py.html @@ -0,0 +1,74 @@ + + + + + + +

pyVHDLParser.Blocks.Sequential

+ + + + + + +
pyVHDLParser/Blocks/Sequential/__init__.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/Structural/Architecture.py.html b/typing/html/pyVHDLParser/Blocks/Structural/Architecture.py.html new file mode 100644 index 000000000..6fe0cb882 --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/Structural/Architecture.py.html @@ -0,0 +1,588 @@ + + + + + + +

pyVHDLParser.Blocks.Structural.Architecture

+ + + + + + +
pyVHDLParser/Blocks/Structural/Architecture.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators             import export
+
+from pyVHDLParser.Token               import LinebreakToken, WordToken, SpaceToken, CommentToken, MultiLineCommentToken, IndentationToken, SingleLineCommentToken, ExtendedIdentifier
+from pyVHDLParser.Token.Keywords      import ArchitectureKeyword, IsKeyword, OfKeyword, BoundaryToken, IdentifierToken
+from pyVHDLParser.Blocks              import BlockParserException, Block, CommentBlock, TokenToBlockParser
+from pyVHDLParser.Blocks.Common       import LinebreakBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Generic      import ConcurrentBeginBlock, ConcurrentDeclarativeRegion
+from pyVHDLParser.Blocks.Generic1     import EndBlock as EndBlockBase
+
+
+@export
+class EndBlock(EndBlockBase):
+	KEYWORD =             ArchitectureKeyword
+	KEYWORD_IS_OPTIONAL = True
+	EXPECTED_NAME =       KEYWORD.__KEYWORD__
+
+
+@export
+class BeginBlock(ConcurrentBeginBlock):
+	END_BLOCK =   EndBlock
+
+
+@export
+class DeclarativeRegion(ConcurrentDeclarativeRegion):
+	BEGIN_BLOCK = BeginBlock
+	END_BLOCK =   EndBlock
+
+
+@export
+class NameBlock(Block):
+	@classmethod
+	def stateArchitectureKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace1
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace1
+			return
+
+		raise BlockParserException("Expected whitespace after keyword ARCHITECTURE.", token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateArchitectureName
+			return
+		elif isinstance(token, ExtendedIdentifier):
+			parserState.NextState =     cls.stateArchitectureName
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected architecture name (identifier).", token)
+
+	@classmethod
+	def stateArchitectureName(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace2
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace2
+			return
+
+		raise BlockParserException("Expected whitespace after architecture name.", token)
+
+	@classmethod
+	def stateWhitespace2(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken) and (token <= "of"):
+			parserState.NewToken =      OfKeyword(fromExistingToken=token)
+			parserState.NextState =     cls.stateOfKeyword
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected keyword IS after architecture name.", token)
+
+	@classmethod
+	def stateOfKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace3
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace3
+			return
+
+		raise BlockParserException("Expected whitespace after keyword ARCHITECTURE.", token)
+
+	@classmethod
+	def stateWhitespace3(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken):
+			parserState.NewToken =    IdentifierToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateEntityName
+			return
+		elif isinstance(token, ExtendedIdentifier):
+			parserState.NextState =     cls.stateEntityName
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =  cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                     LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker = None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =    WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker = None
+			return
+
+		raise BlockParserException("Expected architecture name (identifier).", token)
+
+	@classmethod
+	def stateEntityName(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace4
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace4
+			return
+
+		raise BlockParserException("Expected whitespace after architecture name.", token)
+
+	@classmethod
+	def stateWhitespace4(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken) and (token <= "is"):
+			parserState.NewToken =      IsKeyword(fromExistingToken=token)
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.TokenMarker =   None
+			parserState.NextState =     DeclarativeRegion.stateDeclarativeRegion
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected keyword IS after architecture name.", token)
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/Structural/Block.py.html b/typing/html/pyVHDLParser/Blocks/Structural/Block.py.html new file mode 100644 index 000000000..4a45c1225 --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/Structural/Block.py.html @@ -0,0 +1,481 @@ + + + + + + +

pyVHDLParser.Blocks.Structural.Block

+ + + + + + +
pyVHDLParser/Blocks/Structural/Block.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators                  import export
+
+from pyVHDLParser.Token                    import CharacterToken, SpaceToken, WordToken, LinebreakToken, IndentationToken
+from pyVHDLParser.Token.Keywords           import BoundaryToken, IdentifierToken, EndToken
+from pyVHDLParser.Token.Keywords           import SignalKeyword, ConstantKeyword, VariableKeyword, SharedKeyword, ProcessKeyword, AssertKeyword, BlockKeyword
+from pyVHDLParser.Token.Keywords           import IsKeyword, EndKeyword, BlockKeyword, BeginKeyword
+from pyVHDLParser.Blocks                   import Block, BlockParserException, TokenToBlockParser
+from pyVHDLParser.Blocks.Common            import LinebreakBlock, IndentationBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Comment           import SingleLineCommentBlock, MultiLineCommentBlock
+from pyVHDLParser.Blocks.Generic           import EndBlock as EndBlockBase, ConcurrentDeclarativeRegion, ConcurrentBeginBlock
+from pyVHDLParser.Blocks.List              import PortList
+from pyVHDLParser.Blocks.Reporting         import Assert
+from pyVHDLParser.Blocks.Sequential        import Process
+
+
+@export
+class EndBlock(EndBlockBase):
+	KEYWORD =       BlockKeyword
+	EXPECTED_NAME = KEYWORD.__KEYWORD__
+
+
+@export
+class BeginBlock(ConcurrentBeginBlock):
+	END_BLOCK =   EndBlock
+
+
+@export
+class DeclarativeRegion(ConcurrentDeclarativeRegion):
+	BEGIN_BLOCK = BeginBlock
+	END_BLOCK =   EndBlock
+
+
+@export
+class NameBlock(Block):
+	@classmethod
+	def stateBlockKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected whitespace after keyword "
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewBlock =    NameBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				_ =                       LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    NameBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    NameBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateWhitespace1
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected block name (identifier)."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				if not isinstance(parserState.LastBlock, MultiLineCommentBlock):
+					parserState.NewBlock =  NameBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True)
+					_ =                     LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				else:
+					parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    NameBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				_ =                       LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "/":
+				parserState.NewBlock =    NameBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateBlockName
+			return
+		elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateBlockName(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected whitespace after keyword "
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewBlock =    NameBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				_ =                       LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace2
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    NameBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace2
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    NameBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace2
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NextState =     cls.stateWhitespace2
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhitespace2(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected keyword IS after block name."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				if not isinstance(parserState.LastBlock, MultiLineCommentBlock):
+					parserState.NewBlock =  NameBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True)
+					_ =                     LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				else:
+					parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    NameBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    NameBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, WordToken) and (token <= "is"):
+			parserState.NewToken =      IsKeyword(fromExistingToken=token)
+			parserState.NewBlock =      NameBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.NextState =     DeclarativeRegion.stateDeclarativeRegion
+			return
+		elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException(errorMessage, token)
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/Structural/Component.py.html b/typing/html/pyVHDLParser/Blocks/Structural/Component.py.html new file mode 100644 index 000000000..17754252e --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/Structural/Component.py.html @@ -0,0 +1,454 @@ + + + + + + +

pyVHDLParser.Blocks.Structural.Component

+ + + + + + +
pyVHDLParser/Blocks/Structural/Component.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators                   import export
+
+from pyVHDLParser.Token                     import LinebreakToken, WordToken, SpaceToken, CommentToken, MultiLineCommentToken, IndentationToken, SingleLineCommentToken, ExtendedIdentifier
+from pyVHDLParser.Token.Keywords            import ComponentKeyword, IsKeyword, EndKeyword, GenericKeyword, PortKeyword, UseKeyword, BeginKeyword
+from pyVHDLParser.Token.Keywords            import BoundaryToken, IdentifierToken
+from pyVHDLParser.Blocks                    import BlockParserException, Block, CommentBlock, TokenToBlockParser
+from pyVHDLParser.Blocks.Common             import LinebreakBlock, IndentationBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Generic            import EndBlock as EndBlockBase
+
+
+@export
+class NameBlock(Block):
+	KEYWORDS = None
+
+	@classmethod
+	def __cls_init__(cls):
+		from pyVHDLParser.Blocks.List           import GenericList, PortList
+
+		cls.KEYWORDS = {
+			# Keyword         Transition
+			GenericKeyword:   GenericList.OpenBlock.stateGenericKeyword,
+			PortKeyword:      PortList.OpenBlock.statePortKeyword
+		}
+
+	@classmethod
+	def stateComponentKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace1
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace1
+			return
+
+		raise BlockParserException("Expected whitespace after keyword COMPONENT.", token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateComponentName
+			return
+		elif isinstance(token, ExtendedIdentifier):
+			parserState.NextState =     cls.stateComponentName
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      CommentBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected component name (identifier).", token)
+
+	@classmethod
+	def stateComponentName(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace2
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace2
+			return
+
+		raise BlockParserException("Expected whitespace after component name.", token)
+
+	@classmethod
+	def stateWhitespace2(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken) and (token <= "is"):
+			parserState.NewToken =      IsKeyword(fromExistingToken=token)
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.TokenMarker =   None
+			parserState.NextState =     cls.stateDeclarativeRegion
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected keyword IS after component name.", token)
+
+	@classmethod
+	def stateDeclarativeRegion(cls, parserState: TokenToBlockParser):
+
+		token = parserState.Token
+		if isinstance(token, SpaceToken):
+			blockType =                 IndentationBlock if isinstance(token, IndentationToken) else WhitespaceBlock
+			parserState.NewBlock =      blockType(parserState.LastBlock, token)
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                     LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =      block(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, WordToken):
+			tokenValue = token.Value.lower()
+
+			for keyword in cls.__KEYWORDS__:
+				if tokenValue == keyword.__KEYWORD__:
+					newToken =                keyword(fromExistingToken=token)
+					parserState.PushState =   cls.__KEYWORDS__[keyword]
+					parserState.NewToken =    newToken
+					parserState.TokenMarker = newToken
+					return
+
+			if tokenValue == "end":
+				parserState.NewToken =  EndKeyword(fromExistingToken=token)
+				parserState.NextState = EndBlock.stateEndKeyword
+				return
+
+		raise BlockParserException(
+			"Expected one of these keywords: END, {keywords}. Found: '{tokenValue}'.".format(
+				keywords=", ".join(
+					[kw.__KEYWORD__.upper() for kw in cls.__KEYWORDS__]
+				),
+				tokenValue=token.Value
+			), token)
+
+
+@export
+class EndBlock(EndBlockBase):
+	KEYWORD =             ComponentKeyword
+	KEYWORD_IS_OPTIONAL = False
+	EXPECTED_NAME =       KEYWORD.__KEYWORD__
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/Structural/Configuration.py.html b/typing/html/pyVHDLParser/Blocks/Structural/Configuration.py.html new file mode 100644 index 000000000..1899b32b3 --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/Structural/Configuration.py.html @@ -0,0 +1,479 @@ + + + + + + +

pyVHDLParser.Blocks.Structural.Configuration

+ + + + + + +
pyVHDLParser/Blocks/Structural/Configuration.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators                   import export
+
+from pyVHDLParser.Token                     import LinebreakToken, WordToken, SpaceToken, CommentToken, MultiLineCommentToken, IndentationToken, SingleLineCommentToken, ExtendedIdentifier
+from pyVHDLParser.Token.Keywords            import ConfigurationKeyword, IsKeyword, EndKeyword, GenericKeyword, PortKeyword, UseKeyword, BeginKeyword
+from pyVHDLParser.Token.Keywords            import BoundaryToken, IdentifierToken
+from pyVHDLParser.Blocks                    import BlockParserException, Block, CommentBlock, TokenToBlockParser
+from pyVHDLParser.Blocks.Common             import LinebreakBlock, IndentationBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Generic            import ConcurrentBeginBlock, EndBlock as EndBlockBase
+
+
+@export
+class NameBlock(Block):
+	KEYWORDS = None
+
+	@classmethod
+	def __cls_init__(cls):
+		from pyVHDLParser.Blocks.Reference          import Use
+		from pyVHDLParser.Blocks.List               import GenericList, PortList
+
+		cls.KEYWORDS = {
+		# Keyword           Transition
+			UseKeyword:       Use.StartBlock.stateUseKeyword,
+			GenericKeyword:   GenericList.OpenBlock.stateGenericKeyword,
+			PortKeyword:      PortList.OpenBlock.statePortKeyword
+		}
+
+	@classmethod
+	def stateConfigurationKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace1
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace1
+			return
+
+		raise BlockParserException("Expected whitespace after keyword CONFIGURATION.", token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateConfigurationName
+			return
+		elif isinstance(token, ExtendedIdentifier):
+			parserState.NextState =     cls.stateConfigurationName
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      CommentBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected configuration name (identifier).", token)
+
+	@classmethod
+	def stateConfigurationName(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace2
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace2
+			return
+
+		raise BlockParserException("Expected whitespace after configuration name.", token)
+
+	@classmethod
+	def stateWhitespace2(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken) and (token <= "is"):
+			parserState.NewToken =      IsKeyword(fromExistingToken=token)
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.TokenMarker =   None
+			parserState.NextState =     cls.stateDeclarativeRegion
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected keyword IS after configuration name.", token)
+
+	@classmethod
+	def stateDeclarativeRegion(cls, parserState: TokenToBlockParser):
+
+		token = parserState.Token
+		if isinstance(token, SpaceToken):
+			blockType =                 IndentationBlock if isinstance(token, IndentationToken) else WhitespaceBlock
+			parserState.NewBlock =      blockType(parserState.LastBlock, token)
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                     LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =      block(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, WordToken):
+			tokenValue = token.Value.lower()
+
+			for keyword in cls.KEYWORDS:
+				if tokenValue == keyword.KEYWORDS:
+					newToken =                keyword(fromExistingToken=token)
+					parserState.PushState =   cls.KEYWORDS[keyword]
+					parserState.NewToken =    newToken
+					parserState.TokenMarker = newToken
+					return
+
+			if tokenValue == "begin":
+				parserState.NewToken =  BeginKeyword(fromExistingToken=token)
+				parserState.NextState = BeginBlock.stateBeginKeyword
+				return
+			elif tokenValue == "end":
+				parserState.NewToken =  EndKeyword(fromExistingToken=token)
+				parserState.NextState = EndBlock.stateEndKeyword
+				return
+
+		raise BlockParserException(
+			"Expected one of these keywords: END, {keywords}. Found: '{tokenValue}'.".format(
+				keywords=", ".join(
+					[kw.__KEYWORD__.upper() for kw in cls.KEYWORDS]
+				),
+				tokenValue=token.Value
+			), token)
+
+
+@export
+class EndBlock(EndBlockBase):
+	KEYWORD =             ConfigurationKeyword
+	KEYWORD_IS_OPTIONAL = True
+	EXPECTED_NAME =       KEYWORD.__KEYWORD__
+
+
+@export
+class BeginBlock(ConcurrentBeginBlock):
+	END_BLOCK = EndBlock
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/Structural/Entity.py.html b/typing/html/pyVHDLParser/Blocks/Structural/Entity.py.html new file mode 100644 index 000000000..c7c5f02fb --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/Structural/Entity.py.html @@ -0,0 +1,396 @@ + + + + + + +

pyVHDLParser.Blocks.Structural.Entity

+ + + + + + +
pyVHDLParser/Blocks/Structural/Entity.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators         import export
+
+from pyVHDLParser.Token           import LinebreakToken, WordToken, SpaceToken, CommentToken, MultiLineCommentToken, IndentationToken, SingleLineCommentToken, ExtendedIdentifier
+from pyVHDLParser.Token.Keywords  import EntityKeyword, IsKeyword, GenericKeyword, PortKeyword
+from pyVHDLParser.Token.Keywords  import BoundaryToken, IdentifierToken
+from pyVHDLParser.Blocks          import BlockParserException, Block, CommentBlock, TokenToBlockParser
+from pyVHDLParser.Blocks.Common   import LinebreakBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Generic  import ConcurrentBeginBlock, ConcurrentDeclarativeRegion
+from pyVHDLParser.Blocks.Generic1 import EndBlock as EndBlockBase
+
+
+@export
+class EndBlock(EndBlockBase):
+	KEYWORD =             EntityKeyword
+	KEYWORD_IS_OPTIONAL = True
+	EXPECTED_NAME =       KEYWORD.__KEYWORD__
+
+
+@export
+class BeginBlock(ConcurrentBeginBlock):
+	END_BLOCK =   EndBlock
+
+
+@export
+class DeclarativeRegion(ConcurrentDeclarativeRegion):
+	BEGIN_BLOCK = BeginBlock
+	END_BLOCK =   EndBlock
+
+	@classmethod
+	def __cls_init__(cls):
+		super().__cls_init__()
+
+		from pyVHDLParser.Blocks.List.GenericList import OpenBlock as GenericListOpenBlock
+		from pyVHDLParser.Blocks.List.PortList    import OpenBlock as PortListOpenBlock
+
+		cls.KEYWORDS.update({
+			# Keyword         Transition
+			GenericKeyword:   GenericListOpenBlock.stateGenericKeyword,
+			PortKeyword:      PortListOpenBlock.statePortKeyword
+		})
+
+
+@export
+class NameBlock(Block):
+	@classmethod
+	def stateEntityKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace1
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace1
+			return
+
+		raise BlockParserException("Expected whitespace after keyword ENTITY.", token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateEntityName
+			return
+		elif isinstance(token, ExtendedIdentifier):
+			parserState.NextState =     cls.stateEntityName
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected entity name (identifier).", token)
+
+	@classmethod
+	def stateEntityName(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, SpaceToken):
+			parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+			parserState.NextState =   cls.stateWhitespace2
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                       block(parserState.NewBlock, token)
+			parserState.TokenMarker = None
+			parserState.NextState =   cls.stateWhitespace2
+			return
+
+		raise BlockParserException("Expected whitespace after entity name.", token)
+
+	@classmethod
+	def stateWhitespace2(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, WordToken) and (token <= "is"):
+			parserState.NewToken =      IsKeyword(fromExistingToken=token)
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+			parserState.TokenMarker =   None
+			parserState.NextState =     DeclarativeRegion.stateDeclarativeRegion
+			return
+		elif isinstance(token, LinebreakToken):
+			if not (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+				parserState.NewBlock =    cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				_ =                       LinebreakBlock(parserState.NewBlock, token)
+			else:
+				parserState.NewBlock =    LinebreakBlock(parserState.LastBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, CommentToken):
+			parserState.NewBlock =      cls(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+			_ =                         CommentBlock(parserState.NewBlock, token)
+			parserState.TokenMarker =   None
+			return
+		elif isinstance(token, IndentationToken) and isinstance(token.PreviousToken, (LinebreakToken, SingleLineCommentToken)):
+			return
+		elif isinstance(token, SpaceToken) and (isinstance(parserState.LastBlock, CommentBlock) and isinstance(parserState.LastBlock.StartToken, MultiLineCommentToken)):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise BlockParserException("Expected keyword IS after entity name.", token)
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/Structural/__init__.py.html b/typing/html/pyVHDLParser/Blocks/Structural/__init__.py.html new file mode 100644 index 000000000..9a864339c --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/Structural/__init__.py.html @@ -0,0 +1,74 @@ + + + + + + +

pyVHDLParser.Blocks.Structural

+ + + + + + +
pyVHDLParser/Blocks/Structural/__init__.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/Type/ResolutionIndication.py.html b/typing/html/pyVHDLParser/Blocks/Type/ResolutionIndication.py.html new file mode 100644 index 000000000..d252f7f5a --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/Type/ResolutionIndication.py.html @@ -0,0 +1,117 @@ + + + + + + +

pyVHDLParser.Blocks.Type.ResolutionIndication

+ + + + + + +
pyVHDLParser/Blocks/Type/ResolutionIndication.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators import export
+
+from pyVHDLParser.Blocks import Block
+
+
+@export
+class SimpleResolutionIndicationBlock(Block):
+	def stateResolutionFunction(self):
+		pass
+
+
+@export
+class ArrayResolutionIndicationBlock(Block):
+	pass
+
+
+@export
+class RecordResolutionIndicationBlock(Block):
+	def stateOpeningParentesis(self):
+		pass
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/Type/Subtype.py.html b/typing/html/pyVHDLParser/Blocks/Type/Subtype.py.html new file mode 100644 index 000000000..9d26812e1 --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/Type/Subtype.py.html @@ -0,0 +1,1043 @@ + + + + + + +

pyVHDLParser.Blocks.Type.Subtype

+ + + + + + +
pyVHDLParser/Blocks/Type/Subtype.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+380
+381
+382
+383
+384
+385
+386
+387
+388
+389
+390
+391
+392
+393
+394
+395
+396
+397
+398
+399
+400
+401
+402
+403
+404
+405
+406
+407
+408
+409
+410
+411
+412
+413
+414
+415
+416
+417
+418
+419
+420
+421
+422
+423
+424
+425
+426
+427
+428
+429
+430
+431
+432
+433
+434
+435
+436
+437
+438
+439
+440
+441
+442
+443
+444
+445
+446
+447
+448
+449
+450
+451
+452
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators         import export
+
+from pyVHDLParser.Token           import CharacterToken, LinebreakToken, SpaceToken, WordToken
+from pyVHDLParser.Token.Keywords  import BoundaryToken, IdentifierToken, VariableAssignmentKeyword, EndToken
+from pyVHDLParser.Blocks          import Block, TokenToBlockParser
+from pyVHDLParser.Blocks.Common   import LinebreakBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Comment  import SingleLineCommentBlock, MultiLineCommentBlock
+
+
+@export
+class SubtypeBlock(Block):
+	@classmethod
+	def stateSubtypeKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected whitespace after keyword SUBTYPE."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewBlock =    SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				_ =                       LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateWhitespace1
+			return
+
+		raise TokenParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected subtype name (identifier)."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				if not isinstance(parserState.LastBlock, MultiLineCommentBlock):
+					parserState.NewBlock =  SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True)
+					_ =                     LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				else:
+					parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateSubtypeName
+			return
+		elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise TokenParserException(errorMessage, token)
+
+	@classmethod
+	def stateSubtypeName(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected ';' after library name."
+		if isinstance(token, CharacterToken):
+			if token == ":":
+				parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+				parserState.NextState =   cls.stateColon1
+				return
+			elif token == "\n":
+				parserState.NewBlock =    SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				_ =                       LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace2
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace2
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace2
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NextState =     cls.stateWhitespace2
+			return
+
+		raise TokenParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhitespace2(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected subtype name (identifier)."
+		if isinstance(token, CharacterToken):
+			if token == ":":
+				parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+				parserState.NextState =   cls.stateColon1
+				return
+			if token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				if not isinstance(parserState.LastBlock, MultiLineCommentBlock):
+					parserState.NewBlock =  SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True)
+					_ =                     LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				else:
+					parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, WordToken):
+			parserState.NewToken = IdentifierToken(fromExistingToken=token)
+			parserState.NextState = cls.stateColon1()
+			return
+		elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise TokenParserException(errorMessage, token)
+
+	@classmethod
+	def stateColon1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected typemark or whitespace after ':'."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewBlock =    SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				_ =                       LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace3
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace3
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace3
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateWhitespace3
+			return
+		elif isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateTypeMarkName
+			return
+
+		raise TokenParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhitespace3(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected subtype name (identifier)."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				if not isinstance(parserState.LastBlock, MultiLineCommentBlock):
+					parserState.NewBlock =  SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True)
+					_ =                     LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				else:
+					parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, WordToken):
+			parserState.NewToken = IdentifierToken(fromExistingToken=token)
+			parserState.NextState = cls.stateTypeMarkName
+			return
+		elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise TokenParserException(errorMessage, token)
+
+	@classmethod
+	def stateTypeMarkName(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected ':=' or whitespace after type mark."
+		if isinstance(token, CharacterToken):
+			if token == ":":
+				parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+				parserState.NextState =   cls.statePossibleVariableAssignment
+				return
+			elif token == "\n":
+				parserState.NewBlock =    SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				_ =                       LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace4
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace4
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace4
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NextState =     cls.stateWhitespace4
+			return
+
+		raise TokenParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhitespace4(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected ':=' after type mark."
+		if isinstance(token, CharacterToken):
+			if token == ":":
+				parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+				parserState.NextState =   cls.statePossibleVariableAssignment
+				return
+			elif token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				if not isinstance(parserState.LastBlock, MultiLineCommentBlock):
+					parserState.NewBlock =  SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True)
+					_ =                     LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				else:
+					parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise TokenParserException(errorMessage, token)
+
+	@classmethod
+	def statePossibleVariableAssignment(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken) and (token == "="):
+			parserState.NewToken =      VariableAssignmentKeyword(parserState.TokenMarker)
+			parserState.TokenMarker =   parserState.NewToken
+			parserState.NextState =     cls.stateVariableAssignment
+			return
+
+		raise NotImplementedError("State=PossibleCommentStart: {0!r}".format(token))
+
+	@classmethod
+	def stateVariableAssignment(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected ':=' or whitespace after type mark."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewBlock =    SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				_ =                       LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace5
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState = cls.stateWhitespace5
+				parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock = SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState = cls.stateWhitespace5
+				parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NextState = cls.stateWhitespace5
+			return
+
+		raise TokenParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhitespace5(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected expression after ':='."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				if not isinstance(parserState.LastBlock, MultiLineCommentBlock):
+					parserState.NewBlock =  SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True)
+					_ =                     LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				else:
+					parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, WordToken):
+			parserState.NextState = cls.stateExpressionEnd
+			return
+		elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise TokenParserException(errorMessage, token)
+
+	@classmethod
+	def stateExpressionEnd(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected ';'."
+		if isinstance(token, CharacterToken):
+			if token == ";":
+				parserState.NewToken =    EndToken(fromExistingToken=token)
+				parserState.NewBlock =    SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+				parserState.Pop()
+				return
+			elif token == "-":
+				parserState.NewBlock =    SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    SubtypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+
+		raise TokenParserException(errorMessage, token)
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/Type/SubtypeIndication.py.html b/typing/html/pyVHDLParser/Blocks/Type/SubtypeIndication.py.html new file mode 100644 index 000000000..c3e7a047e --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/Type/SubtypeIndication.py.html @@ -0,0 +1,113 @@ + + + + + + +

pyVHDLParser.Blocks.Type.SubtypeIndication

+ + + + + + +
pyVHDLParser/Blocks/Type/SubtypeIndication.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators import export
+
+from pyVHDLParser.Blocks import Block
+
+
+@export
+class SubtypeIndicationBlock(Block):
+	pass
+
+
+@export
+class ArrayConstrainedSubtypeIndicationBlock(Block):
+	pass
+
+
+@export
+class RecordConstrainedSubtypeIndicationBlock(Block):
+	pass
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/Type/Type.py.html b/typing/html/pyVHDLParser/Blocks/Type/Type.py.html new file mode 100644 index 000000000..53b5e99ca --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/Type/Type.py.html @@ -0,0 +1,1043 @@ + + + + + + +

pyVHDLParser.Blocks.Type.Type

+ + + + + + +
pyVHDLParser/Blocks/Type/Type.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+380
+381
+382
+383
+384
+385
+386
+387
+388
+389
+390
+391
+392
+393
+394
+395
+396
+397
+398
+399
+400
+401
+402
+403
+404
+405
+406
+407
+408
+409
+410
+411
+412
+413
+414
+415
+416
+417
+418
+419
+420
+421
+422
+423
+424
+425
+426
+427
+428
+429
+430
+431
+432
+433
+434
+435
+436
+437
+438
+439
+440
+441
+442
+443
+444
+445
+446
+447
+448
+449
+450
+451
+452
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators         import export
+
+from pyVHDLParser.Token           import CharacterToken, LinebreakToken, SpaceToken, WordToken
+from pyVHDLParser.Token.Keywords  import BoundaryToken, IdentifierToken, VariableAssignmentKeyword, EndToken
+from pyVHDLParser.Blocks          import Block, TokenToBlockParser
+from pyVHDLParser.Blocks.Common   import LinebreakBlock, WhitespaceBlock
+from pyVHDLParser.Blocks.Comment  import SingleLineCommentBlock, MultiLineCommentBlock
+
+
+@export
+class TypeBlock(Block):
+	@classmethod
+	def stateTypeKeyword(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected whitespace after keyword TYPE."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewBlock =    TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				_ =                       LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace1
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateWhitespace1
+			return
+
+		raise TokenParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhitespace1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected type name (identifier)."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				if not isinstance(parserState.LastBlock, MultiLineCommentBlock):
+					parserState.NewBlock =  TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True)
+					_ =                     LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				else:
+					parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateTypeName
+			return
+		elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise TokenParserException(errorMessage, token)
+
+	@classmethod
+	def stateTypeName(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected ';' after library name."
+		if isinstance(token, CharacterToken):
+			if token == ":":
+				parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+				parserState.NextState =   cls.stateColon1
+				return
+			elif token == "\n":
+				parserState.NewBlock =    TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				_ =                       LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace2
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace2
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace2
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NextState =     cls.stateWhitespace2
+			return
+
+		raise TokenParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhitespace2(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected type name (identifier)."
+		if isinstance(token, CharacterToken):
+			if token == ":":
+				parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+				parserState.NextState =   cls.stateColon1
+				return
+			if token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				if not isinstance(parserState.LastBlock, MultiLineCommentBlock):
+					parserState.NewBlock =  TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True)
+					_ =                     LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				else:
+					parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, WordToken):
+			parserState.NewToken = IdentifierToken(fromExistingToken=token)
+			parserState.NextState = cls.stateColon1()
+			return
+		elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise TokenParserException(errorMessage, token)
+
+	@classmethod
+	def stateColon1(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected typemark or whitespace after ':'."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewBlock =    TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				_ =                       LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace3
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace3
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace3
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateWhitespace3
+			return
+		elif isinstance(token, WordToken):
+			parserState.NewToken =      IdentifierToken(fromExistingToken=token)
+			parserState.NextState =     cls.stateTypeMarkName
+			return
+
+		raise TokenParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhitespace3(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected type name (identifier)."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				if not isinstance(parserState.LastBlock, MultiLineCommentBlock):
+					parserState.NewBlock =  TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True)
+					_ =                     LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				else:
+					parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, WordToken):
+			parserState.NewToken = IdentifierToken(fromExistingToken=token)
+			parserState.NextState = cls.stateTypeMarkName
+			return
+		elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise TokenParserException(errorMessage, token)
+
+	@classmethod
+	def stateTypeMarkName(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected ':=' or whitespace after type mark."
+		if isinstance(token, CharacterToken):
+			if token == ":":
+				parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+				parserState.NextState =   cls.statePossibleVariableAssignment
+				return
+			elif token == "\n":
+				parserState.NewBlock =    TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				_ =                       LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace4
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace4
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace4
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NextState =     cls.stateWhitespace4
+			return
+
+		raise TokenParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhitespace4(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected ':=' after type mark."
+		if isinstance(token, CharacterToken):
+			if token == ":":
+				parserState.NewToken =    BoundaryToken(fromExistingToken=token)
+				parserState.NextState =   cls.statePossibleVariableAssignment
+				return
+			elif token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				if not isinstance(parserState.LastBlock, MultiLineCommentBlock):
+					parserState.NewBlock =  TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True)
+					_ =                     LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				else:
+					parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise TokenParserException(errorMessage, token)
+
+	@classmethod
+	def statePossibleVariableAssignment(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		if isinstance(token, CharacterToken) and (token == "="):
+			parserState.NewToken =      VariableAssignmentKeyword(parserState.TokenMarker)
+			parserState.TokenMarker =   parserState.NewToken
+			parserState.NextState =     cls.stateVariableAssignment
+			return
+
+		raise NotImplementedError("State=PossibleCommentStart: {0!r}".format(token))
+
+	@classmethod
+	def stateVariableAssignment(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected ':=' or whitespace after type mark."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewBlock =    TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				_ =                       LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.NextState =   cls.stateWhitespace5
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState = cls.stateWhitespace5
+				parserState.PushState = SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock = TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.NextState = cls.stateWhitespace5
+				parserState.PushState = MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, SpaceToken):
+			parserState.NextState = cls.stateWhitespace5
+			return
+
+		raise TokenParserException(errorMessage, token)
+
+	@classmethod
+	def stateWhitespace5(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected expression after ':='."
+		if isinstance(token, CharacterToken):
+			if token == "\n":
+				parserState.NewToken =    LinebreakToken(fromExistingToken=token)
+				if not isinstance(parserState.LastBlock, MultiLineCommentBlock):
+					parserState.NewBlock =  TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken.PreviousToken, multiPart=True)
+					_ =                     LinebreakBlock(parserState.NewBlock, parserState.NewToken)
+				else:
+					parserState.NewBlock =  LinebreakBlock(parserState.LastBlock, parserState.NewToken)
+				parserState.TokenMarker = None
+				parserState.PushState =   LinebreakBlock.stateLinebreak
+				return
+			elif token == "-":
+				parserState.NewBlock =    TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+		elif isinstance(token, WordToken):
+			parserState.NextState = cls.stateExpressionEnd
+			return
+		elif isinstance(token, SpaceToken) and isinstance(parserState.LastBlock, MultiLineCommentBlock):
+			parserState.NewToken =      BoundaryToken(fromExistingToken=token)
+			parserState.NewBlock =      WhitespaceBlock(parserState.LastBlock, parserState.NewToken)
+			parserState.TokenMarker =   None
+			return
+
+		raise TokenParserException(errorMessage, token)
+
+	@classmethod
+	def stateExpressionEnd(cls, parserState: TokenToBlockParser):
+		token = parserState.Token
+		errorMessage = "Expected ';'."
+		if isinstance(token, CharacterToken):
+			if token == ";":
+				parserState.NewToken =    EndToken(fromExistingToken=token)
+				parserState.NewBlock =    TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=parserState.NewToken)
+				parserState.Pop()
+				return
+			elif token == "-":
+				parserState.NewBlock =    TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   SingleLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+			elif token == "/":
+				parserState.NewBlock =    TypeBlock(parserState.LastBlock, parserState.TokenMarker, endToken=token.PreviousToken, multiPart=True)
+				parserState.TokenMarker = None
+				parserState.PushState =   MultiLineCommentBlock.statePossibleCommentStart
+				parserState.TokenMarker = token
+				return
+
+		raise TokenParserException(errorMessage, token)
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/Type/__init__.py.html b/typing/html/pyVHDLParser/Blocks/Type/__init__.py.html new file mode 100644 index 000000000..821891bd1 --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/Type/__init__.py.html @@ -0,0 +1,74 @@ + + + + + + +

pyVHDLParser.Blocks.Type

+ + + + + + +
pyVHDLParser/Blocks/Type/__init__.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+
+ + diff --git a/typing/html/pyVHDLParser/Blocks/__init__.py.html b/typing/html/pyVHDLParser/Blocks/__init__.py.html new file mode 100644 index 000000000..29e221f47 --- /dev/null +++ b/typing/html/pyVHDLParser/Blocks/__init__.py.html @@ -0,0 +1,1192 @@ + + + + + + +

pyVHDLParser.Blocks

+ + + + + + +
pyVHDLParser/Blocks/__init__.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+380
+381
+382
+383
+384
+385
+386
+387
+388
+389
+390
+391
+392
+393
+394
+395
+396
+397
+398
+399
+400
+401
+402
+403
+404
+405
+406
+407
+408
+409
+410
+411
+412
+413
+414
+415
+416
+417
+418
+419
+420
+421
+422
+423
+424
+425
+426
+427
+428
+429
+430
+431
+432
+433
+434
+435
+436
+437
+438
+439
+440
+441
+442
+443
+444
+445
+446
+447
+448
+449
+450
+451
+452
+453
+454
+455
+456
+457
+458
+459
+460
+461
+462
+463
+464
+465
+466
+467
+468
+469
+470
+471
+472
+473
+474
+475
+476
+477
+478
+479
+480
+481
+482
+483
+484
+485
+486
+487
+488
+489
+490
+491
+492
+493
+494
+495
+496
+497
+498
+499
+500
+501
+502
+503
+504
+505
+506
+507
+508
+509
+510
+511
+512
+513
+514
+515
+516
+517
+518
+519
+520
+521
+522
+523
+524
+525
+526
+527
+528
+529
+530
+531
+532
+533
+534
+535
+536
+537
+538
+539
+540
+541
+542
+543
+544
+545
+546
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from types                          import FunctionType
+from typing import List, Callable, Iterator, Generator, Tuple, Any
+
+from pyTooling.Decorators           import export
+from pyTooling.MetaClasses import ExtendedType
+from pyTooling.TerminalUI           import LineTerminal
+
+from pyVHDLParser                   import StartOfDocument, EndOfDocument, StartOfSnippet, EndOfSnippet
+from pyVHDLParser.Base              import ParserException
+from pyVHDLParser.Token             import CharacterToken, Token, SpaceToken, IndentationToken, LinebreakToken, CommentToken, TokenIterator
+from pyVHDLParser.Token             import WordToken, EndOfDocumentToken, StartOfDocumentToken
+from pyVHDLParser.Token.Keywords    import LibraryKeyword, UseKeyword, ContextKeyword, EntityKeyword, ArchitectureKeyword, PackageKeyword
+
+
+@export
+class BlockParserException(ParserException):
+	"""Base-class for exceptions when reading tokens and generating blocks."""
+
+	_token: Token   #: Token that was involved in an exception situation
+
+	def __init__(self, message, token):
+		super().__init__(message)
+		self._token = token
+
+	@property
+	def Token(self) -> Token:
+		"""Returns the token involved in an exception situation."""
+		return self._token
+
+
+@export
+class TokenToBlockParser(metaclass=ExtendedType, useSlots=True):
+	"""Represents the current state of a token-to-block parser."""
+
+	_iterator:     Iterator[Token]
+	_stack:        List[Tuple[Callable[['TokenToBlockParser'], None], int]]
+	_tokenMarker:  Token
+
+	Token:         Token
+	NextState:     Callable[['TokenToBlockParser'], None]
+	# ReIssue:       bool
+	NewToken:      Token
+	NewBlock:      'Block'
+	LastBlock:     'Block'
+	Counter:       int
+
+	def __init__(self, tokenGenerator: Iterator[Token]):
+		"""Initializes the parser state."""
+
+		self._iterator =    iter(tokenGenerator)
+		self._stack =       []
+		self._tokenMarker = None
+
+		startToken =        next(self._iterator)
+
+		if not isinstance(startToken, StartOfDocumentToken):
+			raise BlockParserException("First token is not a StartOfDocumentToken.", startToken)
+
+		startBlock =        StartOfDocumentBlock(startToken)
+
+		self.Token =        startBlock.StartToken
+		self.NextState =    StartOfDocumentBlock.stateDocument
+		# self.ReIssue =      False
+		self.NewToken =     None
+		self.NewBlock =     startBlock
+		self.LastBlock =    None
+		self.Counter =      0
+
+	@property
+	def PushState(self) -> Callable[['TokenToBlockParser'], None]:
+		return self.NextState
+
+	@PushState.setter
+	def PushState(self, value: Callable[['TokenToBlockParser'], None]):
+		self._stack.append((
+			self.NextState,
+			self.Counter
+		))
+		LineTerminal().WriteDebug("  pushed: " + str(self.NextState))
+		self.NextState =    value
+		self._tokenMarker =  None
+
+	@property
+	def TokenMarker(self) -> Token:
+		if (self.NewToken is not None) and (self._tokenMarker is self.Token):
+			LineTerminal().WriteDebug("  {DARK_GREEN}@TokenMarker: {0!s} => {GREEN}{1!s}{NOCOLOR}".format(self._tokenMarker, self.NewToken, **LineTerminal.Foreground))
+			self._tokenMarker = self.NewToken
+		return self._tokenMarker
+
+	@TokenMarker.setter
+	def TokenMarker(self, value: Token):
+		self._tokenMarker = value
+
+	def __eq__(self, other: Any) -> bool:
+		"""Implement a '==' operator for the current state."""
+		return self.NextState is other
+
+	def __ne__(self, other: Any) -> bool:
+		"""Implement a '!=' operator for the current state."""
+		return self.NextState is not other
+
+	def __str__(self) -> str:
+		"""Returns the current state (function name) as str."""
+		return f"{self.NextState.__func__.__qualname__}"
+
+	def __repr__(self) -> str:
+		"""Returns the current state (full) as str."""
+		return "{state}\n  token:   {token}\n  Marker: {marker}\n  NewToken: {newToken}\n  newBlock: {newBlock}".format(
+			state=self.NextState.__func__.__qualname__,
+			token=self.Token,
+			marker=self.TokenMarker,
+			newToken=self.NewToken,
+			newBlock=self.NewBlock,
+		)
+
+	def Pop(self, n: int = 1, tokenMarker: Token = None) -> None:
+		for i in range(n):
+			top = self._stack.pop()
+			LineTerminal().WriteDebug("popped: " + str(top[0]))
+		self.NextState, self.Counter = top
+		self._tokenMarker = tokenMarker
+
+	def __call__(self) -> Generator['Block', Token, None]:
+		from pyVHDLParser.Token             import EndOfDocumentToken
+		from pyVHDLParser.Blocks.Common     import LinebreakBlock, EmptyLineBlock
+
+		for token in self._iterator:
+			# set parserState.Token to current token
+			self.Token = token
+
+			# overwrite an existing token and connect the next token with the new one
+			if self.NewToken is not None:
+				# print("{MAGENTA}NewToken: {token}{NOCOLOR}".format(token=self.NewToken, **Console.Foreground))
+				# update topmost TokenMarker
+				if self._tokenMarker is token.PreviousToken:
+					# XXX: LineTerminal().WriteDebug("  update token marker: {0!s} -> {1!s}".format(self._tokenMarker, self.NewToken))
+					self._tokenMarker = self.NewToken
+
+				token.PreviousToken = self.NewToken
+				self.NewToken =       None
+
+			# an empty marker means: fill on next yield run
+			if self._tokenMarker is None:
+				LineTerminal().WriteDebug("  new token marker: None -> {0!s}".format(token))
+				self._tokenMarker = token
+
+			# a new block is assembled
+			while self.NewBlock is not None:
+				if isinstance(self.NewBlock, LinebreakBlock) and isinstance(self.LastBlock, (LinebreakBlock, EmptyLineBlock)):
+					self.LastBlock = EmptyLineBlock(self.LastBlock, self.NewBlock.StartToken)
+					self.LastBlock.NextBlock = self.NewBlock.NextBlock
+				else:
+					self.LastBlock = self.NewBlock
+
+				self.NewBlock = self.NewBlock.NextBlock
+				yield self.LastBlock
+
+			# if self.debug: print("{MAGENTA}------ iteration end ------{NOCOLOR}".format(**Console.Foreground))
+			# XXX: LineTerminal().WriteDebug("    {DARK_GRAY}state={state!s: <50}  token={token!s: <40}{NOCOLOR}   ".format(state=self, token=token, **LineTerminal.Foreground))
+			# execute a state
+			self.NextState(self)
+
+		else:
+			if isinstance(self.Token, EndOfDocumentToken) and isinstance(self.NewBlock, EndOfDocumentBlock):
+				yield self.NewBlock
+			else:
+				raise BlockParserException("Unexpected end of document.", self.Token)
+
+
+@export
+class MetaBlock(ExtendedType):
+	"""
+	A :term:`meta-class` to construct *Block* classes.
+
+	Modifications done by this meta-class:
+
+	* Register all classes of type :class:`Block` or derived variants in a class field :attr:`Block.BLOCKS` in this meta-class.
+	* Register all method of name `state....` in the constructed class' attribute :attr:`Block.__STATES__`.
+	"""
+
+	BLOCKS: List['Block'] = []     #: List of all classes of type :class:`Block` or derived variants
+
+	def __new__(cls, className, baseClasses, classMembers: dict):
+		# """Register all state*** methods in a list called `__STATES__`."""
+		states = []
+		for memberName, memberObject in classMembers.items():
+			if isinstance(memberObject, FunctionType) and (memberName[:5] == "state"):
+				states.append(memberObject)
+
+		block = super().__new__(cls, className, baseClasses, classMembers, useSlots=True)
+		block.__STATES__ = states
+
+		cls.BLOCKS.append(block)
+
+		return block
+
+
+@export
+class BlockIterator:
+	_startBlock:         'Block'
+	_currentBlock:       'Block'
+	_stopBlock:          'Block'
+	_inclusiveStopBlock: bool
+
+	_state:              int     #: internal states: 0 = normal, 1 = reached stopBlock, 2 = reached EndOfBlock
+
+	def __init__(self, startBlock: 'Block', inclusiveStartBlock: bool=False, inclusiveStopBlock: bool=True, stopBlock: 'Block'=None):
+		self._startBlock =         startBlock if inclusiveStartBlock else startBlock.NextBlock
+		self._currentBlock =       self._startBlock
+		self._stopBlock =          stopBlock
+		self._inclusiveStopBlock = inclusiveStopBlock
+
+		self._state =              0
+
+	def __iter__(self) -> 'BlockIterator':
+		return self
+
+	def __next__(self) -> 'Block':
+		# in last call of '__next__', the last block in the sequence was returned
+		if self._state > 0:
+			raise StopIteration(self._state)
+
+		block = self._currentBlock
+		if block is self._stopBlock:
+			if not self._inclusiveStopBlock:
+				raise StopIteration(1)
+			else:
+				self._currentBlock = None
+				self._state = 1
+		elif isinstance(self._currentBlock, EndOfBlock):
+			if not self._inclusiveStopBlock:
+				raise StopIteration(2)
+			else:
+				self._currentBlock = None
+				self._state = 2
+		else:
+			self._currentBlock = block.NextBlock
+			if self._currentBlock is None:
+				raise ParserException("Found open end while iterating block sequence.")  # FIXME: how to append last block?
+
+		return block
+
+	@property
+	def StartBlock(self) -> 'Block':
+		return self._startBlock
+
+	@property
+	def CurrentBlock(self) -> 'Block':
+		return self._currentBlock
+
+	@property
+	def StopBlock(self) -> 'Block':
+		return self._stopBlock
+
+	def Reset(self):
+		self._currentBlock = self._startBlock
+
+
+@export
+class BlockReverseIterator:
+	startBlock:   'Block'
+	currentBlock: 'Block'
+	stopBlock:    'Block'
+
+	state:        int     #: internal states: 0 = normal, 1 = reached stopBlock, 2 = reached StartOfBlock
+
+	def __init__(self, startBlock: 'Block', inclusiveStartBlock: bool=False, stopBlock: 'Block'=None):
+		self.startBlock =   startBlock
+		self.currentBlock = startBlock if inclusiveStartBlock else startBlock.NextBlock
+		self.stopBlock =    stopBlock
+
+		self.state =        0
+
+	def __iter__(self) -> 'BlockReverseIterator':
+		return self
+
+	def __next__(self) -> 'Block':
+		# in last call of '__next__', the last block in the sequence was returned
+		if self.state > 0:
+			raise StopIteration(self.state)
+
+		block = self.currentBlock
+		if block is self.stopToken:
+			self.currentBlock = None
+			self.state =        1
+		elif isinstance(self.currentBlock, EndOfBlock):
+			self.currentBlock = None
+			self.state =        2
+		else:
+			self.currentBlock = block.PreviousBlock
+			if self.currentBlock is None:
+				raise ParserException("Found open end while iterating block sequence.")  # FIXME: how to append last block?
+
+		return block
+
+
+@export
+class Block(metaclass=MetaBlock):
+	"""
+	Base-class for all :term:`block` classes.
+	"""
+
+	__STATES__:      List    #: List of all `state...` methods in this class.
+
+	_previousBlock: 'Block'  #: Reference to the previous block.
+	NextBlock:      'Block'  #: Reference to the next block.
+	StartToken:     Token    #: Reference to the first token in the scope of this block.
+	EndToken:       Token    #: Reference to the last token in the scope of this block.
+	MultiPart:      bool     #: True, if this block has multiple parts.
+
+	def __init__(self, previousBlock: 'Block', startToken: Token, endToken: Token = None, multiPart: bool = False):
+		"""Base-class constructor for a new block instance."""
+
+		previousBlock.NextBlock =       self
+		self._previousBlock = previousBlock
+		self.NextBlock =      None
+		self.StartToken =     startToken
+		self.EndToken =       startToken if (endToken is None) else endToken
+		self.MultiPart =      multiPart
+
+	def __len__(self) -> int:
+		"""Returns the length of a block in characters from :attr:`~Block.StartToken` to :attr:`~Block.EndToken`."""
+		return self.EndToken.End.Absolute - self.StartToken.Start.Absolute + 1
+
+	def __iter__(self) -> TokenIterator:
+		"""Returns a token iterator that iterates from :attr:`~Block.StartToken` to :attr:`~Block.EndToken`."""
+		return TokenIterator(self.StartToken, inclusiveStartToken=True, stopToken=self.EndToken)
+
+	def GetIterator(self, inclusiveStartBlock: bool = False, inclusiveStopBlock: bool = True, stopBlock: 'Block'=None) -> BlockIterator:
+		return BlockIterator(self, inclusiveStartBlock=inclusiveStartBlock, inclusiveStopBlock=inclusiveStopBlock, stopBlock=stopBlock)
+
+	def GetReverseIterator(self, inclusiveStartBlock: bool = False, inclusiveStopBlock: bool = True, stopBlock: 'Block'=None) -> BlockReverseIterator:
+		return BlockReverseIterator(self, inclusiveStartBlock=inclusiveStartBlock, inclusiveStopBlock=inclusiveStopBlock, stopBlock=stopBlock)
+
+	def __str__(self) -> str:
+		buffer = ""
+		for token in self:
+			if isinstance(token, CharacterToken):
+				buffer += repr(token)
+			else:
+				try:
+					buffer += token.Value
+				except AttributeError:
+					pass
+
+		return buffer
+
+	def __repr__(self) -> str:
+		return "[{blockName: <50s} {stream: <62s} at {start!s} .. {end!s}]".format(
+			blockName="{module}.{classname}{multiparted}".format(
+				module=self.__module__.rpartition(".")[2],
+				classname=self.__class__.__name__,
+				multiparted=("*" if self.MultiPart else "")
+			),
+			stream="'" + self.__str__() + "'",
+			start=self.StartToken.Start,
+			end=self.EndToken.End
+		)
+
+	@property
+	def PreviousBlock(self) -> 'Block':
+		return self._previousBlock
+	@PreviousBlock.setter
+	def PreviousBlock(self, value: 'Block'):
+		self._previousBlock = value
+		value.NextBlock = self
+
+	@property
+	def Length(self) -> int:
+		"""Returns the length of a block in characters from :attr:`~Block.StartToken` to :attr:`~Block.EndToken`."""
+		return len(self)
+
+	@property
+	def States(self) -> List[Callable]:
+		"""Returns a list of all `state...` methods in this class."""
+		return self.__STATES__
+
+	@classmethod
+	def stateError(cls, parserState: TokenToBlockParser):
+		"""Predefined state to catch error situations."""
+		raise BlockParserException("Reached unreachable state!")
+
+
+@export
+class SkipableBlock(Block):
+	"""Base-class for blocks that can be skipped in fast-forward scanning."""
+	pass
+
+@export
+class FinalBlock(Block):
+	"""Base-class for blocks that are final in a fast-forward scanning."""
+	pass
+
+@export
+class CommentBlock(SkipableBlock):
+	"""Base-class for all comment blocks."""
+	pass
+
+
+@export
+class StartOfBlock(Block):
+	"""Base-class for a first block in a sequence of double-linked blocks."""
+
+	def __init__(self, startToken):
+		self._previousBlock =     None
+		self.NextBlock =          None
+		self.StartToken =         startToken
+		self.EndToken =           None
+		self.MultiPart =          False
+
+	# TODO: needs review: should TokenIterator be used?
+	def __iter__(self):
+		yield self.StartToken
+
+	def __len__(self) -> int:
+		return 0
+
+	def __repr__(self) -> str:
+		return "[{name}]".format(
+			name=self.__class__.__name__
+		)
+
+
+@export
+class EndOfBlock(Block):
+	"""Base-class for a last block in a sequence of double-linked blocks."""
+
+	def __init__(self, previousBlock, endToken):
+		super().__init__(previousBlock, endToken)
+
+	# TODO: needs review: should TokenIterator be used?
+	def __iter__(self) -> Iterator[Token]:
+		yield self.StartToken
+
+	def __len__(self) -> int:
+		return 0
+
+	def __repr__(self) -> str:
+		return "[{name}]".format(
+			name=self.__class__.__name__
+		)
+
+
+@export
+class StartOfDocumentBlock(StartOfBlock, StartOfDocument):
+	"""First block in a sequence of double-linked blocks."""
+
+	KEYWORDS = None
+
+	@classmethod
+	def __cls_init__(cls):
+		from pyVHDLParser.Blocks.Common     import IndentationBlock, WhitespaceBlock, LinebreakBlock
+		from pyVHDLParser.Blocks.Reference  import Library, Use, Context
+		from pyVHDLParser.Blocks.Sequential import Package
+		from pyVHDLParser.Blocks.Structural import Entity, Architecture
+
+		cls.KEYWORDS = {
+			# Keyword             Transition
+			LibraryKeyword:       Library.StartBlock.stateLibraryKeyword,
+			UseKeyword:           Use.StartBlock.stateUseKeyword,
+			ContextKeyword:       Context.NameBlock.stateContextKeyword,
+			EntityKeyword:        Entity.NameBlock.stateEntityKeyword,
+			ArchitectureKeyword:  Architecture.NameBlock.stateArchitectureKeyword,
+			PackageKeyword:       Package.NameBlock.statePackageKeyword
+		}
+
+	@classmethod
+	def stateDocument(cls, parserState: TokenToBlockParser):
+		from pyVHDLParser.Blocks.Common     import IndentationBlock, WhitespaceBlock, LinebreakBlock
+
+		token = parserState.Token
+		if isinstance(token, SpaceToken):
+			blockType =               IndentationBlock if isinstance(token, IndentationToken) else WhitespaceBlock
+			parserState.NewBlock =    blockType(parserState.LastBlock, token)
+			parserState.TokenMarker = None
+			return
+		elif isinstance(token, (LinebreakToken, CommentToken)):
+			block =                   LinebreakBlock if isinstance(token, LinebreakToken) else CommentBlock
+			parserState.NewBlock =    block(parserState.LastBlock, token)
+			parserState.TokenMarker = None
+			return
+		elif isinstance(token, WordToken):
+			tokenValue = token.Value.lower()
+
+			for keyword in cls.KEYWORDS:
+				if tokenValue == keyword.__KEYWORD__:
+					newToken =                keyword(fromExistingToken=token)
+					parserState.PushState =   cls.KEYWORDS[keyword]
+					parserState.NewToken =    newToken
+					parserState.TokenMarker = newToken
+					return
+
+		elif isinstance(token, EndOfDocumentToken):
+			parserState.NewBlock = EndOfDocumentBlock(parserState.LastBlock, token)
+			return
+
+		raise BlockParserException(
+			"Expected one of these keywords: {keywords}. Found: '{tokenValue}'.".format(
+				keywords=", ".join(
+					[kw.__KEYWORD__.upper() for kw in cls.KEYWORDS]
+				),
+				tokenValue=token.Value
+			), token)
+
+
+@export
+class EndOfDocumentBlock(EndOfBlock, EndOfDocument):
+	"""Last block in a sequence of double-linked blocks."""
+	pass
+
+@export
+class StartOfSnippetBlock(StartOfBlock, StartOfSnippet):
+	pass
+
+@export
+class EndOfSnippetBlock(EndOfBlock, EndOfSnippet):
+	pass
+
+ + diff --git a/typing/html/pyVHDLParser/CLI/ANTLR.py.html b/typing/html/pyVHDLParser/CLI/ANTLR.py.html new file mode 100644 index 000000000..3dcd4906d --- /dev/null +++ b/typing/html/pyVHDLParser/CLI/ANTLR.py.html @@ -0,0 +1,381 @@ + + + + + + +

pyVHDLParser.CLI.ANTLR

+ + + + + + +
pyVHDLParser/CLI/ANTLR.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2022 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+import time
+from pathlib        import Path
+
+from antlr4 import CommonTokenStream, InputStream
+from pyAttributes.ArgParseAttributes import CommandAttribute
+
+from ..LanguageModel import Document
+from ..LanguageModel.Reference import UseClause, LibraryClause
+from ..LanguageModel.DesignUnit import Entity, Architecture, Package, PackageBody
+from ..LanguageModel.InterfaceItem import GenericConstantInterfaceItem, PortSignalInterfaceItem
+
+from ..ANTLR4 import ANTLR2Token
+from ..ANTLR4.VHDLLexer import VHDLLexer
+from ..ANTLR4.VHDLParser import VHDLParser
+from ..ANTLR4.Visitor import VHDLVisitor
+
+from . import FrontEndProtocol, FilenameAttribute
+
+
+class ANTLRHandlers:
+	# ----------------------------------------------------------------------------
+	# create the sub-parser for the "token-stream" command
+	# ----------------------------------------------------------------------------
+	@CommandAttribute("antlr", help="Create DOM from ANTLR4 grammar.", description="Create DOM from ANTLR4 grammar.")
+	@FilenameAttribute()
+	def HandleANTLR(self: FrontEndProtocol, args):
+		self.PrintHeadline()
+
+		file = Path(args.Filename)
+
+		if not file.exists():
+			print(f"File '{file}' does not exist.")
+
+		startTime = time.perf_counter()
+		with file.open('r') as fileHandle:
+			content = fileHandle.read()
+		print(f"Load file: {(time.perf_counter() - startTime):.6f}")
+
+		lexer = VHDLLexer(InputStream(content))
+		print(f"Lexer:     {(time.perf_counter() - startTime):.6f}")
+		stream = CommonTokenStream(lexer)
+		parser = VHDLParser(stream)
+		print(f"Parser:    {(time.perf_counter() - startTime):.6f}")
+		parserTree = parser.rule_DesignFile()
+		print(f"ParseTree: {(time.perf_counter() - startTime):.6f}")
+		visitor = VHDLVisitor()
+		designUnits = visitor.visit(parserTree)
+		print(f"Visitor:   {(time.perf_counter() - startTime):.6f}")
+
+		print(f"{'-' * 40}")
+		conv = ANTLR2Token()
+		converted = conv.ConvertToTokenChain(stream)
+		print(f"ANTLR2Token: {(time.perf_counter() - startTime):.6f}")
+		# for token in converted:
+		# 	print(f"{token!r}")
+		print(f"{'-' * 40}")
+
+		document = Document(file, converted[0], converted[-1])
+		for designUnit in designUnits:
+			if isinstance(designUnit, Entity):
+				document.Entities.append(designUnit)
+			elif isinstance(designUnit, Architecture):
+				document.Architectures.append(designUnit)
+			elif isinstance(designUnit, Package):
+				document.Packages.append(designUnit)
+			elif isinstance(designUnit, PackageBody):
+				document.PackageBodies.append(designUnit)
+
+		print("=" * 80)
+		print(f"Sourcefile: {document.Path}")
+		print(f"  Entities:")
+		for entity in document.Entities:
+			print(f"    {entity.Identifier}")
+			print(f"      Doc-String:")
+			for line in entity.docstring:
+				print(f"        {line}")
+			print(f"      Context:")
+			for item in entity.ContextItems:
+				if isinstance(item, LibraryClause):
+					print(f"        library: {', '.join(item.Names)}")
+				elif isinstance(item, UseClause):
+					print(f"        use: {', '.join(item.Names)}")
+			print(f"      Generics:")
+			for generic in entity.GenericItems:
+				if isinstance(generic, GenericConstantInterfaceItem):
+					print(f"        constant {', '.join(generic.Identifiers)} : {generic.Mode} {generic.Subtype}")
+			print(f"      Ports:")
+			for port in entity.PortItems:
+				if isinstance(port, PortSignalInterfaceItem):
+					print(f"        signal {', '.join(port.Identifiers)} : {port.Mode} {port.Subtype}")
+
+			print(f"  Architectures:")
+			for arch in document.Architectures:
+				print(f"    {arch.Identifier}")
+				print(f"      Context:")
+				for item in arch.ContextItems:
+					if isinstance(item, LibraryClause):
+						print(f"        library: {', '.join(item.Names)}")
+					elif isinstance(item, UseClause):
+						print(f"        use: {', '.join(item.Names)}")
+
+		print(f"  Packages:")
+		for package in document.Packages:
+			print(f"    {package.Identifier}")
+			print(f"      Context:")
+			for item in package.ContextItems:
+				if isinstance(item, LibraryClause):
+					print(f"        library: {', '.join(item.Names)}")
+				elif isinstance(item, UseClause):
+					print(f"        use: {', '.join(item.Names)}")
+			print(f"      Generics:")
+			for generic in package.GenericItems:
+				if isinstance(generic, GenericConstantInterfaceItem):
+					print(f"        constant {', '.join(generic.Identifiers)} : {generic.Subtype}")
+
+		print(f"  Package bodies:")
+		for packageBody in document.PackageBodies:
+			print(f"    {packageBody.Identifier}")
+			print(f"      Context:")
+			for item in packageBody.ContextItems:
+				if isinstance(item, LibraryClause):
+					print(f"        library: {', '.join(item.Names)}")
+				elif isinstance(item, UseClause):
+					print(f"        use: {', '.join(item.Names)}")
+
+		self.exit()
+
+
+ + diff --git a/typing/html/pyVHDLParser/CLI/Block.py.html b/typing/html/pyVHDLParser/CLI/Block.py.html new file mode 100644 index 000000000..7de8de87d --- /dev/null +++ b/typing/html/pyVHDLParser/CLI/Block.py.html @@ -0,0 +1,524 @@ + + + + + + +

pyVHDLParser.CLI.Block

+ + + + + + +
pyVHDLParser/CLI/Block.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pathlib import Path
+
+from pyAttributes.ArgParseAttributes import CommandAttribute
+
+from .GraphML import GraphML
+from ..Base                   import ParserException
+from ..Token                  import Token, StartOfDocumentToken, EndOfDocumentToken
+from ..Token.Parser           import Tokenizer
+from ..Blocks                 import Block, TokenToBlockParser, StartOfDocumentBlock, EndOfDocumentBlock, CommentBlock
+from ..Blocks.Common          import LinebreakBlock, IndentationBlock
+from ..Blocks.List            import GenericList, PortList
+from ..Blocks.InterfaceObject import InterfaceConstantBlock, InterfaceSignalBlock
+from ..Blocks.Structural      import Entity
+
+from .                        import FrontEndProtocol, FilenameAttribute, WithTokensAttribute
+
+
+class BlockStreamHandlers:
+	# ----------------------------------------------------------------------------
+	# create the sub-parser for the "block-stream" command
+	# ----------------------------------------------------------------------------
+	@CommandAttribute("block-stream", help="Create a stream of block objects.", description="Create a stream of block objects.")
+	@WithTokensAttribute()
+	@FilenameAttribute()
+	def HandleBlockStreaming(self: FrontEndProtocol, args):
+		self.PrintHeadline()
+
+		# self._writeLevel = Severity.Verbose
+
+		file = Path(args.Filename)
+
+		if not file.exists():
+			print("File '{0!s}' does not exist.".format(file))
+
+		with file.open('r') as fileHandle:
+			content = fileHandle.read()
+
+		tokenStream = Tokenizer.GetVHDLTokenizer(content)
+		blockStream = TokenToBlockParser(tokenStream)()
+
+		blockIterator = iter(blockStream)
+		firstBlock = next(blockIterator)
+
+		try:
+			while next(blockIterator):
+				pass
+		except StopIteration:
+			pass
+
+		if isinstance(firstBlock, StartOfDocumentBlock):
+			print("{YELLOW}{block!r}{NOCOLOR}".format(block=firstBlock, **self.Foreground))
+			print("  {YELLOW}{token!r}{NOCOLOR}".format(token=firstBlock.StartToken, **self.Foreground))
+
+		try:
+			blockIterator = firstBlock.GetIterator(inclusiveStopBlock=False)
+			for block in blockIterator:
+				if isinstance(block, (LinebreakBlock, IndentationBlock)):
+					self.WriteNormal("{DARK_GRAY}{block!r}{NOCOLOR}".format(block=block, **self.Foreground))
+				elif isinstance(block, CommentBlock):
+					self.WriteNormal("{DARK_GREEN}{block!r}{NOCOLOR}".format(block=block, **self.Foreground))
+				elif isinstance(block, (Entity.NameBlock, Entity.NameBlock, Entity.EndBlock)):
+					self.WriteNormal("{DARK_RED}{block!r}{NOCOLOR}".format(block=block, **self.Foreground))
+				elif isinstance(block, (GenericList.OpenBlock, GenericList.DelimiterBlock, GenericList.CloseBlock)):
+					self.WriteNormal("{DARK_BLUE}{block!r}{NOCOLOR}".format(block=block, **self.Foreground))
+				elif isinstance(block, (PortList.OpenBlock, PortList.DelimiterBlock, PortList.CloseBlock)):
+					self.WriteNormal("{DARK_CYAN}{block!r}{NOCOLOR}".format(block=block, **self.Foreground))
+				elif isinstance(block, (InterfaceConstantBlock, InterfaceSignalBlock)):
+					self.WriteNormal("{BLUE}{block!r}{NOCOLOR}".format(block=block, **self.Foreground))
+				else:
+					self.WriteNormal("{YELLOW}{block!r}{NOCOLOR}".format(block=block, **self.Foreground))
+
+				for token in block:
+					self.WriteVerbose(repr(token))
+
+			blockIterator = block.GetIterator()
+			lastBlock = next(blockIterator)
+			if isinstance(lastBlock, EndOfDocumentBlock):
+				print("{YELLOW}{block!r}{NOCOLOR}".format(block=lastBlock, **self.Foreground))
+				print("  {YELLOW}{token!r}{NOCOLOR}".format(token=lastBlock.StartToken, **self.Foreground))
+
+		except ParserException as ex:
+			print("{RED}ERROR: {0!s}{NOCOLOR}".format(ex, **self.Foreground))
+		except NotImplementedError as ex:
+			print("{RED}NotImplementedError: {0!s}{NOCOLOR}".format(ex, **self.Foreground))
+
+		exporter = GraphML()
+		tokenStreamSubgraph = exporter.AddTokenStream(firstBlock.StartToken)
+		blockStreamSubgraph = exporter.AddBlockStream(firstBlock, tokenStreamSubgraph)
+		exporter.WriteDocument(Path.cwd() / "temp/BlockStream.graphml")
+
+		self.exit()
+
+	# ----------------------------------------------------------------------------
+	# create the sub-parser for the "block-check" command
+	# ----------------------------------------------------------------------------
+	@CommandAttribute("block-check", help="Check a stream of block objects.", description="Check a stream of block objects.")
+	@WithTokensAttribute()
+	@FilenameAttribute()
+	def HandleCheckBlockStreaming(self: FrontEndProtocol, args):
+		self.PrintHeadline()
+
+		file = Path(args.Filename)
+
+		if not file.exists():
+			print("File '{0!s}' does not exist.".format(file))
+
+		with file.open('r') as fileHandle:
+			content = fileHandle.read()
+
+		vhdlTokenStream = Tokenizer.GetVHDLTokenizer(content)
+		vhdlBlockStream = TokenToBlockParser(vhdlTokenStream)()
+
+		try:
+			blockIterator = iter(vhdlBlockStream)
+			firstBlock = next(blockIterator)
+			self.WriteVerbose(str(firstBlock))
+
+			if not isinstance(firstBlock, StartOfDocumentBlock):
+				self.WriteError("{RED}First block is not StartOfDocumentBlock: {block}{NOCOLOR}".format(block=firstBlock, **self.Foreground))
+				self.WriteError("{YELLOW}  Block:  {block}{NOCOLOR}".format(block=firstBlock, **self.Foreground))
+			startToken = firstBlock.StartToken
+			self.WriteDebug(str(startToken))
+			if not isinstance(startToken, StartOfDocumentToken):
+				self.WriteError("{RED}First token is not StartOfDocumentToken: {token}{NOCOLOR}".format(token=startToken, **self.Foreground))
+				self.WriteError("{YELLOW}  Token:  {token}{NOCOLOR}".format(token=startToken, **self.Foreground))
+
+			lastBlock: Block = firstBlock
+			endBlock: Block = None
+			lastToken: Token = startToken
+
+			for vhdlBlock in blockIterator:
+				self.WriteNormal(str(vhdlBlock))
+
+				if isinstance(vhdlBlock, EndOfDocumentBlock):
+					self.WriteDebug("{GREEN}Found EndOfDocumentBlock...{NOCOLOR}".format(**self.Foreground))
+					endBlock = vhdlBlock
+					break
+
+				tokenIterator = iter(vhdlBlock)
+
+				for token in tokenIterator:
+					self.WriteVerbose(str(token))
+
+					#					if token.NextToken is None:
+					#						self.WriteError("{RED}Token has an open end (NextToken).{NOCOLOR}".format(**self.Foreground))
+					#						self.WriteError("{YELLOW}  Token:  {token}{NOCOLOR}".format(token=token, **self.Foreground))
+					#					el
+					if lastToken.NextToken is not token:
+						self.WriteError("{RED}Last token is not connected to the current token.{NOCOLOR}".format(**self.Foreground))
+						self.WriteError("{YELLOW}  Last:   {token!s}{NOCOLOR}".format(token=lastToken, **self.Foreground))
+						self.WriteError("{YELLOW}    Next: {token!s}{NOCOLOR}".format(token=lastToken.NextToken, **self.Foreground))
+						self.WriteError("")
+						self.WriteError("{YELLOW}  Cur.:   {token!s}{NOCOLOR}".format(token=token, **self.Foreground))
+						self.WriteError("")
+
+					if token.PreviousToken is None:
+						self.WriteError("{RED}Token has an open end (PreviousToken).{NOCOLOR}".format(**self.Foreground))
+						self.WriteError("{YELLOW}  Token:  {token}{NOCOLOR}".format(token=token, **self.Foreground))
+					elif token.PreviousToken is not lastToken:
+						print("{RED}Current token is not connected to lastToken.{NOCOLOR}".format(**self.Foreground))
+						# print("{RED}  Block:  {block}{NOCOLOR}".format(block=vhdlBlock, **self.Foreground))
+						print("{YELLOW}  Cur.:   {token}{NOCOLOR}".format(token=token, **self.Foreground))
+						print("{YELLOW}    Prev: {token}{NOCOLOR}".format(token=token.PreviousToken, **self.Foreground))
+						self.WriteError("")
+						print("{YELLOW}  Last:   {token}{NOCOLOR}".format(token=lastToken, **self.Foreground))
+						print("{YELLOW}    Next: {token}{NOCOLOR}".format(token=lastToken.NextToken, **self.Foreground))
+						self.WriteError("")
+
+					lastToken = token
+
+				lastBlock = vhdlBlock
+			else:
+				self.WriteError("{RED}No EndOfDocumentBlock found.{NOCOLOR}".format(**self.Foreground))
+
+			if not isinstance(endBlock, EndOfDocumentBlock):
+				self.WriteError("{RED}Last block is not EndOfDocumentBlock: {block}{NOCOLOR}".format(block=endBlock, **self.Foreground))
+				self.WriteError("{YELLOW}  Block:  {block}{NOCOLOR}".format(block=firstBlock, **self.Foreground))
+			elif not isinstance(endBlock.EndToken, EndOfDocumentToken):
+				self.WriteError("{RED}Last token is not EndOfDocumentToken: {token}{NOCOLOR}".format(token=endBlock.EndToken, **self.Foreground))
+				self.WriteError("{YELLOW}  Token:  {token}{NOCOLOR}".format(token=endBlock.EndToken, **self.Foreground))
+
+		except ParserException as ex:
+			print("{RED}ERROR: {0!s}{NOCOLOR}".format(ex, **self.Foreground))
+		except NotImplementedError as ex:
+			print("{RED}NotImplementedError: {0!s}{NOCOLOR}".format(ex, **self.Foreground))
+
+		self.WriteNormal("")
+		self.WriteNormal("{CYAN}All checks are done.{NOCOLOR}".format(**self.Foreground))
+		self.exit()
+
+ + diff --git a/typing/html/pyVHDLParser/CLI/CodeDOM.py.html b/typing/html/pyVHDLParser/CLI/CodeDOM.py.html new file mode 100644 index 000000000..6e7f8d7ad --- /dev/null +++ b/typing/html/pyVHDLParser/CLI/CodeDOM.py.html @@ -0,0 +1,160 @@ + + + + + + +

pyVHDLParser.CLI.CodeDOM

+ + + + + + +
pyVHDLParser/CLI/CodeDOM.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pathlib import Path
+
+from pyAttributes.ArgParseAttributes import CommandAttribute
+
+from ..Base                   import ParserException
+from ..DocumentModel          import Document
+
+from .                        import FrontEndProtocol, FilenameAttribute
+
+
+class CodeDOMHandlers:
+	# ----------------------------------------------------------------------------
+	# create the sub-parser for the "DOM" command
+	# ----------------------------------------------------------------------------
+	@CommandAttribute("CodeDOM", help="Create a CodeDOM.", description="Create a code document object model (CodeDOM).")
+	@FilenameAttribute()
+	def HandleCodeDOM(self : FrontEndProtocol, args):
+		self.PrintHeadline()
+
+		file =         Path(args.Filename)
+
+		if not file.exists():
+			print("File '{0!s}' does not exist.".format(file)) # raise error
+
+		with file.open('r') as fileHandle:
+			content = fileHandle.read()
+
+		try:
+			document = Document(file)
+			document.Parse()
+			document.Print(0)
+
+		except ParserException as ex:
+			print("{RED}ERROR: {0!s}{NOCOLOR}".format(ex, **self.Foreground))
+		except NotImplementedError as ex:
+			print("{RED}NotImplementedError: {0!s}{NOCOLOR}".format(ex, **self.Foreground))
+
+		self.exit()
+
+ + diff --git a/typing/html/pyVHDLParser/CLI/GraphML.py.html b/typing/html/pyVHDLParser/CLI/GraphML.py.html new file mode 100644 index 000000000..b75bfa8f8 --- /dev/null +++ b/typing/html/pyVHDLParser/CLI/GraphML.py.html @@ -0,0 +1,416 @@ + + + + + + +

pyVHDLParser.CLI.GraphML

+ + + + + + +
pyVHDLParser/CLI/GraphML.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+
from pyTooling.Graph import Graph, Subgraph, Vertex
+from pyTooling.Graph.GraphML import GraphMLDocument
+from pyVHDLParser.Groups import Group
+
+from pyVHDLParser.Blocks import Block
+
+from pyVHDLParser.Token import Token
+
+
+class GraphML:
+	_graph: Graph
+
+	def __init__(self):
+		self._graph = Graph(name="Streams")
+
+	def AddTokenStream(self, firstToken: Token):
+		tokenStreamSubgraph = Subgraph(name="TokenStream", graph=self._graph)
+
+		firstVertex = Vertex(vertexID=id(firstToken), value=f"{firstToken!s}", subgraph=tokenStreamSubgraph)
+		firstVertex["order"] = 0
+		firstVertex["kind"] = type(firstToken).__name__
+
+		tokenIterator = firstToken.GetIterator(inclusiveStopToken=False)
+		for tokenID, token in enumerate(tokenIterator, start=1):
+			vertex = Vertex(vertexID=id(token), value=f"{token!s}", subgraph=tokenStreamSubgraph)
+			vertex["order"] = tokenID
+			vertex["kind"] = type(token).__name__
+
+		tokenIterator = token.GetIterator()
+		lastToken = next(tokenIterator)
+		lastVertex = Vertex(vertexID=id(lastToken), value=f"{lastToken!s}", subgraph=tokenStreamSubgraph)
+		lastVertex["order"] = tokenID + 1
+		lastVertex["kind"] = type(lastToken).__name__
+
+		firstVertex.EdgeToVertex(tokenStreamSubgraph._verticesWithID[id(firstToken.NextToken)], edgeID=f"n0_next")
+		tokenIterator = firstToken.GetIterator(inclusiveStopToken=False)
+		for tokenID, token in enumerate(tokenIterator, start=1):
+			vertex = tokenStreamSubgraph._verticesWithID[id(token)]
+			vertex.EdgeToVertex(tokenStreamSubgraph._verticesWithID[id(token.PreviousToken)], edgeID=f"n{tokenID}_prev")
+			vertex.EdgeToVertex(tokenStreamSubgraph._verticesWithID[id(token.NextToken)], edgeID=f"n{tokenID}_next")
+		tokenIterator = token.GetIterator()
+		lastToken = next(tokenIterator)
+		lastVertex = tokenStreamSubgraph._verticesWithID[id(lastToken)]
+		lastVertex.EdgeToVertex(tokenStreamSubgraph._verticesWithID[id(lastToken.PreviousToken)], edgeID=f"n{tokenID + 1}_prev")
+
+		return tokenStreamSubgraph
+
+	def AddBlockStream(self, firstBlock: Block, tokenStreamSubgraph: Subgraph):
+		blockStreamSubgraph = Subgraph(name="BlockStream", graph=self._graph)
+
+		firstVertex = Vertex(vertexID=id(firstBlock), value=f"{firstBlock}", subgraph=blockStreamSubgraph)
+		firstVertex["order"] = 0
+		firstVertex["kind"] = type(firstBlock).__name__
+		firstLink = firstVertex.LinkToVertex(tokenStreamSubgraph._verticesWithID[id(firstBlock.StartToken)])
+		firstLink["kind"] = "block2token"
+
+		blockIterator = firstBlock.GetIterator(inclusiveStopBlock=False)
+		for blockID, block in enumerate(blockIterator, start=1):
+			vertex = Vertex(vertexID=id(block), value=f"{block!s}", subgraph=blockStreamSubgraph)
+			vertex["order"] = blockID
+			vertex["kind"] = type(block).__name__
+			startTokenLink = vertex.LinkToVertex(tokenStreamSubgraph._verticesWithID[id(block.StartToken)])
+			startTokenLink["kind"] = "block2token"
+			if block.EndToken is not block.StartToken:
+				endTokenLink = vertex.LinkToVertex(tokenStreamSubgraph._verticesWithID[id(block.EndToken)])
+				endTokenLink["kind"] = "block2token"
+
+		blockIterator = block.GetIterator()
+		lastBlock = next(blockIterator)
+		lastVertex = Vertex(vertexID=id(lastBlock), value=f"{lastBlock}", subgraph=blockStreamSubgraph)
+		lastVertex["order"] = blockID + 1
+		lastVertex["kind"] = type(lastBlock).__name__
+		lastLink = lastVertex.LinkToVertex(tokenStreamSubgraph._verticesWithID[id(lastBlock.StartToken)])
+		lastLink["kind"] = "block2token"
+
+		firstVertex.EdgeToVertex(blockStreamSubgraph._verticesWithID[id(firstBlock.NextBlock)], edgeID=f"n0_next")
+		blockIterator = firstBlock.GetIterator(inclusiveStopBlock=False)
+		for blockID, block in enumerate(blockIterator, start=1):
+			vertex = blockStreamSubgraph._verticesWithID[id(block)]
+			vertex.EdgeToVertex(blockStreamSubgraph._verticesWithID[id(block.PreviousBlock)], edgeID=f"n{blockID}_prev")
+			vertex.EdgeToVertex(blockStreamSubgraph._verticesWithID[id(block.NextBlock)], edgeID=f"n{blockID}_next")
+		blockIterator = block.GetIterator()
+		lastBlock = next(blockIterator)
+		lastVertex = blockStreamSubgraph._verticesWithID[id(lastBlock)]
+		lastVertex.EdgeToVertex(blockStreamSubgraph._verticesWithID[id(lastBlock.PreviousBlock)], edgeID=f"n{blockID + 1}_prev")
+
+		return blockStreamSubgraph
+
+	def AddGroupStream(self, firstGroup: Group, blockStreamSubgraph: Subgraph):
+		groupStreamSubgraph = Subgraph(name="GroupStream", graph=self._graph)
+
+		firstVertex = Vertex(vertexID=id(firstGroup), value=f"{firstGroup}", subgraph=groupStreamSubgraph)
+		firstVertex["order"] = 0
+		firstVertex["kind"] = type(firstGroup).__name__
+		firstLink = firstVertex.LinkToVertex(blockStreamSubgraph._verticesWithID[id(firstGroup.StartToken)])
+		firstLink["kind"] = "group2block"
+
+		groupIterator = firstGroup.GetIterator(inclusiveStopBlock=False)
+		for groupID, group in enumerate(groupIterator, start=1):
+			vertex = Vertex(vertexID=id(group), value=f"{group!s}", subgraph=groupStreamSubgraph)
+			vertex["order"] = groupID
+			vertex["kind"] = type(group).__name__
+			startBlockLink = vertex.LinkToVertex(blockStreamSubgraph._verticesWithID[id(group.StartToken)])
+			startBlockLink["kind"] = "group2block"
+			if group.EndToken is not group.StartToken:
+				endBlockLink = vertex.LinkToVertex(blockStreamSubgraph._verticesWithID[id(group.EndToken)])
+				endBlockLink["kind"] = "group2block"
+
+		groupIterator = group.GetIterator()
+		lastGroup = next(groupIterator)
+		lastVertex = Vertex(vertexID=id(lastGroup), value=f"{lastGroup}", subgraph=groupStreamSubgraph)
+		lastVertex["order"] = groupID + 1
+		lastVertex["kind"] = type(lastGroup).__name__
+		lastLink = lastVertex.LinkToVertex(blockStreamSubgraph._verticesWithID[id(lastGroup.StartToken)])
+		lastLink["kind"] = "group2block"
+
+		firstVertex.EdgeToVertex(groupStreamSubgraph._verticesWithID[id(firstGroup.NextBlock)], edgeID=f"n0_next")
+		groupIterator = firstGroup.GetIterator(inclusiveStopBlock=False)
+		for groupID, group in enumerate(groupIterator, start=1):
+			vertex = groupStreamSubgraph._verticesWithID[id(group)]
+			vertex.EdgeToVertex(groupStreamSubgraph._verticesWithID[id(group.PreviousBlock)], edgeID=f"n{groupID}_prev")
+			vertex.EdgeToVertex(groupStreamSubgraph._verticesWithID[id(group.NextBlock)], edgeID=f"n{groupID}_next")
+		groupIterator = group.GetIterator()
+		lastGroup = next(groupIterator)
+		lastVertex = groupStreamSubgraph._verticesWithID[id(lastGroup)]
+		lastVertex.EdgeToVertex(groupStreamSubgraph._verticesWithID[id(lastGroup.PreviousBlock)], edgeID=f"n{groupID + 1}_prev")
+
+		return groupStreamSubgraph
+
+	def WriteDocument(self, path):
+		graphMLDocument = GraphMLDocument("Streams")
+		graphMLDocument.FromGraph(self._graph)
+		graphMLDocument.WriteToFile(path)
+
+ + diff --git a/typing/html/pyVHDLParser/CLI/Group.py.html b/typing/html/pyVHDLParser/CLI/Group.py.html new file mode 100644 index 000000000..ff9280d82 --- /dev/null +++ b/typing/html/pyVHDLParser/CLI/Group.py.html @@ -0,0 +1,330 @@ + + + + + + +

pyVHDLParser.CLI.Group

+ + + + + + +
pyVHDLParser/CLI/Group.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pathlib import Path
+
+from pyAttributes.ArgParseAttributes import CommandAttribute
+
+from .GraphML import GraphML
+from ..Base                   import ParserException
+from ..Token                  import CharacterToken, SpaceToken, WordToken, LinebreakToken, CommentToken, IndentationToken
+from ..Token.Parser           import Tokenizer
+from ..Token.Keywords         import BoundaryToken, EndToken, KeywordToken, DelimiterToken
+from ..Blocks                 import TokenToBlockParser
+from ..Groups import BlockToGroupParser, StartOfDocumentGroup
+
+from .                        import FrontEndProtocol, WithTokensAttribute, WithBlocksAttribute, FilenameAttribute
+
+
+class GroupStreamHandlers:
+	# ----------------------------------------------------------------------------
+	# create the sub-parser for the "groupstreaming" command
+	# ----------------------------------------------------------------------------
+	@CommandAttribute("group-stream", help="Create a stream of group objects.", description="Create a stream of group objects.")
+	@WithTokensAttribute()
+	@WithBlocksAttribute()
+	@FilenameAttribute()
+	def HandleGroupStreaming(self : FrontEndProtocol, args):
+		self.PrintHeadline()
+
+		file = Path(args.Filename)
+
+		if not file.exists():
+			print("File '{0!s}' does not exist.".format(file))
+
+		with file.open('r') as fileHandle:
+			content = fileHandle.read()
+
+		tokenStream = Tokenizer.GetVHDLTokenizer(content)
+		blockStream = TokenToBlockParser(tokenStream)()
+		groupStream = BlockToGroupParser(blockStream)()
+
+		groupIterator = iter(groupStream)
+		firstGroup = next(groupIterator)
+
+		try:
+			while next(groupIterator):
+				pass
+		except StopIteration:
+			pass
+
+		if isinstance(firstGroup, StartOfDocumentGroup):
+			print("{YELLOW}{group!r}{NOCOLOR}".format(block=firstGroup, **self.Foreground))
+			print("  {YELLOW}{block!r}{NOCOLOR}".format(block=firstGroup.StartBlock, **self.Foreground))
+			print("    {YELLOW}{token!r}{NOCOLOR}".format(token=firstGroup.StartBlock.StartToken, **self.Foreground))
+
+		buffered = True
+		if buffered:
+			self.WriteVerbose("Reading and buffering tokens...")
+			try:
+				tokenStream = [token for token in Tokenizer.GetVHDLTokenizer(content)]
+			except ParserException as ex:
+				self.WriteError("{RED}ERROR: {0!s}{NOCOLOR}".format(ex, **self.Foreground))
+			except NotImplementedError as ex:
+				print("{RED}NotImplementedError: {0!s}{NOCOLOR}".format(ex, **self.Foreground))
+
+			self.WriteVerbose("Reading and buffering blocks...")
+			try:
+				blockStream = [block for block in TokenToBlockParser(tokenStream)()]
+			except ParserException as ex:
+				print("{RED}ERROR: {0!s}{NOCOLOR}".format(ex, **self.Foreground))
+			except NotImplementedError as ex:
+				print("{RED}NotImplementedError: {0!s}{NOCOLOR}".format(ex, **self.Foreground))
+		else:
+			tokenStream = Tokenizer.GetVHDLTokenizer(content)
+			blockStream = TokenToBlockParser(tokenStream)()
+
+		self.WriteVerbose("Transforming blocks to groups...")
+		groupStream = BlockToGroupParser(blockStream)()
+
+		try:
+			for group in groupStream:
+				print("{CYAN}{group}{NOCOLOR}".format(group=group, **self.Foreground))
+				for block in group:
+					if isinstance(block, (IndentationToken, LinebreakToken, BoundaryToken, DelimiterToken, EndToken)):
+						print("{DARK_GRAY}  {block}{NOCOLOR}".format(block=block, **self.Foreground))
+					elif isinstance(block, (CommentToken)):
+						print("{DARK_GREEN}  {block}{NOCOLOR}".format(block=block, **self.Foreground))
+					elif isinstance(block, KeywordToken):
+						print("{DARK_CYAN}  {block}{NOCOLOR}".format(block=block, **self.Foreground))
+					elif isinstance(block, (WordToken, SpaceToken, CharacterToken)):
+						print("{DARK_GREEN}  {block}{NOCOLOR}".format(block=block, **self.Foreground))
+					else:
+						print("{YELLOW}  {block}{NOCOLOR}".format(block=block, **self.Foreground))
+
+		except ParserException as ex:
+			print("{RED}ERROR: {0!s}{NOCOLOR}".format(ex, **self.Foreground))
+		except NotImplementedError as ex:
+			print("{RED}NotImplementedError: {0!s}{NOCOLOR}".format(ex, **self.Foreground))
+
+		exporter = GraphML()
+		tokenStreamSubgraph = exporter.AddTokenStream(firstBlock.StartToken)
+		blockStreamSubgraph = exporter.AddBlockStream(firstBlock, tokenStreamSubgraph)
+		blockStreamSubgraph = exporter.AddGroupStream(firstBlock, blockStreamSubgraph)
+		exporter.WriteDocument(Path.cwd() / "temp/BlockStream.graphml")
+
+		self.exit()
+
+ + diff --git a/typing/html/pyVHDLParser/CLI/Token.py.html b/typing/html/pyVHDLParser/CLI/Token.py.html new file mode 100644 index 000000000..8a6d7f5b7 --- /dev/null +++ b/typing/html/pyVHDLParser/CLI/Token.py.html @@ -0,0 +1,472 @@ + + + + + + +

pyVHDLParser.CLI.Token

+ + + + + + +
pyVHDLParser/CLI/Token.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pathlib        import Path
+
+from pyAttributes.ArgParseAttributes import CommandAttribute
+from pyTooling.Graph import Graph, Vertex, Subgraph
+from pyTooling.Graph.GraphML         import GraphMLDocument
+
+from pyVHDLParser.Base         import ParserException
+from pyVHDLParser.CLI.GraphML import GraphML
+from pyVHDLParser.Token        import StartOfDocumentToken, EndOfDocumentToken, CharacterToken, SpaceToken, WordToken, LinebreakToken, CommentToken, IndentationToken
+from pyVHDLParser.Token        import CharacterTranslation, SingleLineCommentToken
+from pyVHDLParser.Token.Parser import Tokenizer
+
+from pyVHDLParser.CLI              import FrontEndProtocol, FilenameAttribute, translate
+
+
+class TokenStreamHandlers:
+	# ----------------------------------------------------------------------------
+	# create the sub-parser for the "token-stream" command
+	# ----------------------------------------------------------------------------
+	@CommandAttribute("token-stream", help="Create a stream of token objects.", description="Create a stream of token objects.")
+	@FilenameAttribute()
+	def HandleTokenize(self: FrontEndProtocol, args):
+		self.PrintHeadline()
+
+		file = Path(args.Filename)
+
+		if not file.exists():
+			print(f"File '{file}' does not exist.")
+
+		with file.open('r') as fileHandle:
+			content = fileHandle.read()
+
+		tokenStream =   Tokenizer.GetVHDLTokenizer(content)
+		tokenIterator = iter(tokenStream)
+		firstToken =    next(tokenIterator)
+
+		try:
+			while next(tokenIterator):
+				pass
+		except StopIteration:
+			pass
+
+		if isinstance(firstToken, StartOfDocumentToken):
+			print("{YELLOW}{token!r}{NOCOLOR}".format(token=firstToken, **self.Foreground))
+
+		try:
+			tokenIterator = firstToken.GetIterator(inclusiveStopToken=False)
+			for token in tokenIterator:
+				if isinstance(token, (LinebreakToken, SpaceToken, IndentationToken)):
+					print("{DARK_GRAY}{token!r}{NOCOLOR}".format(token=token, **self.Foreground))
+				elif isinstance(token, CommentToken):
+					print("{DARK_GREEN}{token!r}{NOCOLOR}".format(token=token, **self.Foreground))
+				elif isinstance(token, CharacterToken):
+					print("{DARK_CYAN}{token!r}{NOCOLOR}".format(token=token, **self.Foreground))
+				elif isinstance(token, WordToken):
+					print("{WHITE}{token!r}{NOCOLOR}".format(token=token, **self.Foreground))
+				else:
+					print("{RED}{token!r}{NOCOLOR}".format(token=token, **self.Foreground))
+
+			tokenIterator = token.GetIterator()
+			lastToken = next(tokenIterator)
+			if isinstance(lastToken, EndOfDocumentToken):
+				print("{YELLOW}{token!r}{NOCOLOR}".format(token=lastToken, **self.Foreground))
+
+		except ParserException as ex:
+			print("{RED}ERROR: {0!s}{NOCOLOR}".format(ex, **self.Foreground))
+		except NotImplementedError as ex:
+			print("{RED}NotImplementedError: {0!s}{NOCOLOR}".format(ex, **self.Foreground))
+
+		exporter = GraphML()
+		exporter.AddTokenStream(firstToken)
+		exporter.WriteDocument(Path.cwd() / "temp/TokenStream.graphml")
+
+		self.exit()
+
+	# ----------------------------------------------------------------------------
+	# create the sub-parser for the "token-check" command
+	# ----------------------------------------------------------------------------
+	@CommandAttribute("token-check", help="Check a stream of token objects.", description="Generates and checks a stream of token objects for correct double-pointers.")
+	@FilenameAttribute()
+	def HandleCheckTokenize(self: FrontEndProtocol, args):
+		self.PrintHeadline()
+
+		file = Path(args.Filename)
+
+		if not file.exists():
+			print("File '{0!s}' does not exist.".format(file))
+
+		with file.open('r') as fileHandle:
+			content = fileHandle.read()
+
+		vhdlTokenStream = Tokenizer.GetVHDLTokenizer(content)
+
+		try:
+			tokenIterator = iter(vhdlTokenStream)
+			firstToken = next(tokenIterator)
+
+			try:
+				while next(tokenIterator):
+					pass
+			except StopIteration:
+				pass
+
+			if not isinstance(firstToken, StartOfDocumentToken):
+				print("{RED}First token is not StartOfDocumentToken: {token}{NOCOLOR}".format(token=firstToken, **self.Foreground))
+			if firstToken.NextToken is None:
+				print("{RED}First token has an open end.{NOCOLOR}".format(**self.Foreground))
+
+			tokenIterator = firstToken.GetIterator()
+			lastToken =     None
+			token =     firstToken
+
+			for newToken in tokenIterator:
+				if token.NextToken is None:
+					print("{RED}Token has an open end.{NOCOLOR}".format(**self.Foreground))
+					print("{RED}  Token:  {token}{NOCOLOR}".format(token=token, **self.Foreground))
+				elif (token is not firstToken) and (lastToken.NextToken is not token):
+					print("{RED}Last token is not connected to the current token.{NOCOLOR}".format(**self.Foreground))
+					print("{RED}  Curr:   {token}{NOCOLOR}".format(token=token, **self.Foreground))
+					print("{DARK_RED}    Prev: {token}{NOCOLOR}".format(token=token.PreviousToken, **self.Foreground))
+					print("{RED}  Last:   {token}{NOCOLOR}".format(token=lastToken, **self.Foreground))
+					print("{RED}    Next: {token}{NOCOLOR}".format(token=lastToken.NextToken, **self.Foreground))
+					if lastToken.NextToken is None:
+						print("{DARK_RED}    Next: {token}{NOCOLOR}".format(token="--------", **self.Foreground))
+					else:
+						print(
+							"{DARK_RED}    Next: {token}{NOCOLOR}".format(token=lastToken.NextToken.NextToken, **self.Foreground))
+					if token.PreviousToken is None:
+						print("{DARK_RED}    Prev: {token}{NOCOLOR}".format(token="--------", **self.Foreground))
+					else:
+						print("{DARK_RED}    Prev: {token}{NOCOLOR}".format(token=token.PreviousToken.PreviousToken,
+						                                                    **self.Foreground))
+				elif token.PreviousToken is not lastToken:
+					print("{RED}Current token is not connected to lastToken.{NOCOLOR}".format(**self.Foreground))
+					print("{RED}  Curr:   {token}{NOCOLOR}".format(token=token, **self.Foreground))
+					print("{RED}    Prev: {token}{NOCOLOR}".format(token=token.PreviousToken, **self.Foreground))
+					print("{RED}  Last:   {token}{NOCOLOR}".format(token=lastToken, **self.Foreground))
+					print("{DARK_RED}    Next: {token}{NOCOLOR}".format(token=lastToken.NextToken, **self.Foreground))
+
+				lastToken = token
+				token = newToken
+
+				if isinstance(newToken, EndOfDocumentToken):
+					print("{GREEN}No double-linking errors in token stream found.{NOCOLOR}".format(**self.Foreground))
+					break
+			else:
+				print("{RED}No EndOfDocumentToken found.{NOCOLOR}".format(**self.Foreground))
+
+			if not isinstance(token, EndOfDocumentToken):
+				print(
+					"{RED}Last token is not EndOfDocumentToken: {token}{NOCOLOR}".format(token=lastToken, **self.Foreground))
+			elif token.PreviousToken is not lastToken:
+				print("{RED}EndOfDocumentToken is not connected to lastToken.{NOCOLOR}".format(**self.Foreground))
+				print("{RED}  Curr:   {token}{NOCOLOR}".format(token=token, **self.Foreground))
+				print("{RED}    Prev: {token}{NOCOLOR}".format(token=token.PreviousToken, **self.Foreground))
+				print("{RED}  Last:   {token}{NOCOLOR}".format(token=lastToken, **self.Foreground))
+				print("{DARK_RED}    Next: {token}{NOCOLOR}".format(token=lastToken.NextToken, **self.Foreground))
+
+		except ParserException as ex:
+			print("{RED}ERROR: {0!s}{NOCOLOR}".format(ex, **self.Foreground))
+		except NotImplementedError as ex:
+			print("{RED}NotImplementedError: {0!s}{NOCOLOR}".format(ex, **self.Foreground))
+
+		self.exit()
+
+ + diff --git a/typing/html/pyVHDLParser/CLI/VHDLParser.py.html b/typing/html/pyVHDLParser/CLI/VHDLParser.py.html new file mode 100644 index 000000000..5f9f40261 --- /dev/null +++ b/typing/html/pyVHDLParser/CLI/VHDLParser.py.html @@ -0,0 +1,568 @@ + + + + + + +

pyVHDLParser.CLI.VHDLParser

+ + + + + + +
pyVHDLParser/CLI/VHDLParser.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from argparse       import RawDescriptionHelpFormatter
+from platform       import system as platform_system
+from textwrap       import dedent, wrap
+from typing         import NoReturn
+
+from pyTooling.Exceptions             import ExceptionBase
+from pyTooling.Decorators             import export
+from pyTooling.TerminalUI             import LineTerminal, Severity
+from pyAttributes.ArgParseAttributes  import ArgParseMixin, DefaultAttribute, CommandAttribute, ArgumentAttribute, CommonSwitchArgumentAttribute
+
+from pyVHDLParser                     import __author__, __license__, __version__, __copyright__
+from pyVHDLParser.Blocks              import MetaBlock
+
+from pyVHDLParser.CLI.Token           import TokenStreamHandlers
+from pyVHDLParser.CLI.Block           import BlockStreamHandlers
+from pyVHDLParser.CLI.Group           import GroupStreamHandlers
+from pyVHDLParser.CLI.CodeDOM         import CodeDOMHandlers
+from pyVHDLParser.CLI.ANTLR           import ANTLRHandlers
+
+
+@export
+def printImportError(ex) -> NoReturn:
+	# TODO: use pyTooling Platform
+	platform = platform_system()
+	print("IMPORT ERROR: One or more Python packages are not available in your environment.")
+	print("Missing package: '{0}'\n".format(ex.name))
+	if platform == "Windows":
+		print("Run: 'py.exe -3 -m pip install -r requirements.txt'\n")
+	elif platform == "Linux":
+		print("Run: 'python3 -m pip install -r requirements.txt'\n")
+
+	exit(1)
+
+
+@export
+class Application(LineTerminal, ArgParseMixin, TokenStreamHandlers, BlockStreamHandlers, GroupStreamHandlers, CodeDOMHandlers, ANTLRHandlers):
+	HeadLine =    "pyVHDLParser - Test Application"
+
+	# load platform information (Windows, Linux, Darwin, ...)
+	# TODO: use pyTooling Platform
+	__PLATFORM =  platform_system()
+
+	def __init__(self):
+		super().__init__()
+
+		# Late-initialize Block classes
+		# --------------------------------------------------------------------------
+		for block in MetaBlock.BLOCKS:
+			try:
+				block.__cls_init__()
+			except AttributeError:
+				pass
+
+		# Call the constructor of the ArgParseMixin
+		# --------------------------------------------------------------------------
+		textWidth = min(self.Width, 160)
+		description = dedent("""\
+			Test application to test pyVHDLParser capabilities.
+			""")
+		epilog = "\n".join(wrap(dedent("""\
+			pyVHDLParser is a streaming parser to read and understand VHDL code equipped with comments for documentation extraction.
+			"""), textWidth, replace_whitespace=False))
+
+		class HelpFormatter(RawDescriptionHelpFormatter):
+			def __init__(self, *args, **kwargs):
+				kwargs['max_help_position'] = 30
+				kwargs['width'] = textWidth
+				super().__init__(*args, **kwargs)
+
+		ArgParseMixin.__init__(
+			self,
+			description=description,
+			epilog=epilog,
+			formatter_class=HelpFormatter,
+			add_help=False
+		)
+
+		# Change error and warning reporting
+		# --------------------------------------------------------------------------
+		self._LOG_MESSAGE_FORMAT__[Severity.Fatal]   = "{DARK_RED}[FATAL] {message}{NOCOLOR}"
+		self._LOG_MESSAGE_FORMAT__[Severity.Error]   = "{RED}[ERROR] {message}{NOCOLOR}"
+		self._LOG_MESSAGE_FORMAT__[Severity.Warning] = "{YELLOW}[WARNING] {message}{NOCOLOR}"
+		self._LOG_MESSAGE_FORMAT__[Severity.Normal]  = "{GRAY}{message}{NOCOLOR}"
+
+	# class properties
+	# ============================================================================
+	@property
+	def Platform(self):
+		return self.__PLATFORM
+
+	def PrintHeadline(self):
+		self.WriteNormal(dedent("""\
+			{HEADLINE}{line}
+			{headline: ^80s}
+			{line}""").format(line="=" * 80, headline=self.HeadLine, **LineTerminal.Foreground))
+
+	# ============================================================================
+	# Common commands
+	# ============================================================================
+	# common arguments valid for all commands
+	# ----------------------------------------------------------------------------
+	@CommonSwitchArgumentAttribute("-d", "--debug",   dest="debug",   help="Enable debug mode.")
+	@CommonSwitchArgumentAttribute("-v", "--verbose", dest="verbose", help="Print out detailed messages.")
+	@CommonSwitchArgumentAttribute("-q", "--quiet",   dest="quiet",   help="Reduce messages to a minimum.")
+	def Run(self):
+		ArgParseMixin.Run(self)
+
+	@DefaultAttribute()
+	def HandleDefault(self, _):
+		self.PrintHeadline()
+		self.MainParser.print_help()
+
+		self.WriteNormal("")
+		self.exit()
+
+	# ----------------------------------------------------------------------------
+	# create the sub-parser for the "help" command
+	# ----------------------------------------------------------------------------
+	@CommandAttribute("help", help="Display help page(s) for the given command name.")
+	@ArgumentAttribute(metavar="Command", dest="Command", type=str, nargs="?", help="Print help page(s) for a command.")
+	def HandleHelp(self, args):
+		self.PrintHeadline()
+
+		if args.Command is None:
+			self.MainParser.print_help()
+		elif args.Command == "help":
+			self.WriteError("This is a recursion ...")
+		else:
+			try:
+				self.SubParsers[args.Command].print_help()
+			except KeyError:
+				self.WriteError("Command {0} is unknown.".format(args.Command))
+
+		self.WriteNormal("")
+		self.exit()
+
+	# ----------------------------------------------------------------------------
+	# create the sub-parser for the "version" command
+	# ----------------------------------------------------------------------------
+	@CommandAttribute("version", help="Display tool and version information.")
+	def HandleInfo(self, args):
+		self.PrintHeadline()
+
+		copyrights = __copyright__.split("\n", 1)
+		self.WriteNormal("Copyright:  {0}".format(copyrights[0]))
+		for copyright in copyrights[1:]:
+			self.WriteNormal("            {0}".format(copyright))
+		self.WriteNormal("License:    {0}".format(__license__))
+		authors = __author__.split(", ")
+		self.WriteNormal("Authors:    {0}".format(authors[0]))
+		for author in authors[1:]:
+			self.WriteNormal("            {0}".format(author))
+		self.WriteNormal("Version:    {0}".format(__version__))
+		self.exit()
+
+
+# main program
+def main():  # mccabe:disable=MC0001
+	"""This is the entry point for pyVHDLParser written as a function.
+
+	1. It extracts common flags from the script's arguments list, before :py:class:`~argparse.ArgumentParser` is fully loaded.
+	2. It creates an instance of VHDLParser and hands over to a class based execution.
+	   All is wrapped in a big ``try..except`` block to catch every unhandled exception.
+	3. Shutdown the script and return its exit code.
+	"""
+	from sys import argv as sys_argv
+
+	try:
+		# handover to a class instance
+		app = Application()  # debug, verbose, quiet)
+		app.Configure(
+			verbose="-v" in sys_argv,
+			debug="-d" in sys_argv,
+			quiet="-q" in sys_argv
+		)
+		app.Run()
+		app.exit()
+
+	# except (CommonException, ConfigurationException) as ex:
+	# 	print("{RED}ERROR:{NOCOLOR} {message}".format(message=ex.message, **Init.Foreground))
+	# 	cause = ex.__cause__
+	# 	if isinstance(cause, FileNotFoundError):
+	# 		print("{YELLOW}  FileNotFound:{NOCOLOR} '{cause}'".format(cause=str(cause), **Init.Foreground))
+	# 	elif isinstance(cause, NotADirectoryError):
+	# 		print("{YELLOW}  NotADirectory:{NOCOLOR} '{cause}'".format(cause=str(cause), **Init.Foreground))
+	# 	elif isinstance(cause, ParserException):
+	# 		print("{YELLOW}  ParserException:{NOCOLOR} {cause}".format(cause=str(cause), **Init.Foreground))
+	# 		cause = cause.__cause__
+	# 		if cause is not None:
+	# 			print("{YELLOW}    {name}:{NOCOLOR} {cause}".format(name=cause.__class__.__name__, cause= str(cause), **Init.Foreground))
+	#
+	# 	if not (verbose or debug):
+	# 		print()
+	# 		print("{CYAN}  Use '-v' for verbose or '-d' for debug to print out extended messages.{NOCOLOR}".format(**Init.Foreground))
+	# 	LineTerminal.exit(1)
+
+	except ExceptionBase as ex:
+		LineTerminal.printExceptionBase(ex)
+	except NotImplementedError as ex:
+		LineTerminal.printNotImplementedError(ex)
+	# except ImportError as ex:
+	# 	printImportError(ex)
+	except Exception as ex:
+		LineTerminal.printException(ex)
+
+
+# entry point
+if __name__ == "__main__":
+	LineTerminal.versionCheck((3,8,0))
+	main()
+
+ + diff --git a/typing/html/pyVHDLParser/CLI/__init__.py.html b/typing/html/pyVHDLParser/CLI/__init__.py.html new file mode 100644 index 000000000..801d2bb5d --- /dev/null +++ b/typing/html/pyVHDLParser/CLI/__init__.py.html @@ -0,0 +1,231 @@ + + + + + + +

pyVHDLParser.CLI

+ + + + + + +
pyVHDLParser/CLI/__init__.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from typing                           import Protocol, Callable, Dict
+
+from pyAttributes                     import Attribute
+from pyAttributes.ArgParseAttributes  import ArgumentAttribute, SwitchArgumentAttribute
+
+from pyVHDLParser.Token               import LinebreakToken, IndentationToken, CommentToken, StringLiteralToken
+from pyVHDLParser.Token               import IntegerLiteralToken, WordToken, Token, SpaceToken, CharacterToken
+from pyVHDLParser.Token.Keywords      import KeywordToken
+
+
+class FilenameAttribute(Attribute):
+	def __call__(self, func):
+		self._AppendAttribute(func, ArgumentAttribute(metavar="filename", dest="Filename", type=str, help="The filename to parse."))
+		return func
+
+
+class WithTokensAttribute(Attribute):
+	def __call__(self, func):
+		self._AppendAttribute(func, SwitchArgumentAttribute("-T", "--with-tokens",  dest="withTokens",    help="Display tokens in between."))
+		return func
+
+
+class WithBlocksAttribute(Attribute):
+	def __call__(self, func):
+		self._AppendAttribute(func, SwitchArgumentAttribute("-B", "--with-blocks",  dest="withBlocks",    help="Display blocks in between."))
+		return func
+
+
+class FrontEndProtocol(Protocol):
+	# TerminalUI
+	Foreground:    Dict
+	WriteError:    Callable[[str], None]
+	WriteWarning:  Callable[[str], None]
+	WriteQuiet:    Callable[[str], None]
+	WriteNormal:   Callable[[str], None]
+	WriteVerbose:  Callable[[str], None]
+	WriteDebug:    Callable[[str], None]
+	exit:          Callable[[int], None]
+
+	# Frontend
+	PrintHeadline: Callable
+
+
+TOKENTYPE_TO_COLOR_TRANSLATION = {
+	LinebreakToken:       "black",
+	IndentationToken:     "grey",
+	SpaceToken:           "lightblue1",
+	CharacterToken:       "darkorange",
+	CommentToken:         "forestgreen",
+	StringLiteralToken:   "chocolate1",
+	IntegerLiteralToken:  "deepskyblue3",
+	WordToken:            "aquamarine3",
+	KeywordToken:         "dodgerblue4",
+}
+
+
+def translate(token: Token) -> str:
+	return "crimson"
+
+	print(Token)
+	if isinstance(token, Token):
+		tokenCls = token.__class__
+	else:
+		tokenCls = token
+
+	try:
+		return TOKENTYPE_TO_COLOR_TRANSLATION[tokenCls]
+	except KeyError:
+		for key, color in TOKENTYPE_TO_COLOR_TRANSLATION.items():
+			if issubclass(tokenCls, key):
+				return color
+		else:
+			return "crimson"
+
+ + diff --git a/typing/html/pyVHDLParser/Decorators.py.html b/typing/html/pyVHDLParser/Decorators.py.html new file mode 100644 index 000000000..9246045ae --- /dev/null +++ b/typing/html/pyVHDLParser/Decorators.py.html @@ -0,0 +1,278 @@ + + + + + + +

pyVHDLParser.Decorators

+ + + + + + +
pyVHDLParser/Decorators.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+import functools
+import time
+from typing import Dict
+
+
+class ExecutionTimer:
+	_times: Dict = None
+
+	def __init__(self):
+		self._times = {}
+
+	def AddExecutionTime(self, function, executionTime):
+		try:
+			self._times[function].append(executionTime)
+		except ValueError:
+			self._times[function] = [ executionTime ]
+
+
+class ExecutionCounter:
+	_counts: Dict = None
+
+	def __init__(self):
+		self._counts = {}
+
+	def IncrementCallCounter(self, function):
+		try:
+			self._counts[function] += 1
+		except ValueError:
+			self._counts[function] = 1
+
+
+def LogExecutionTime(function):
+	"""Measure the runtime execution time of functions and methods."""
+
+	@functools.wraps(function)
+	def wrapper(*args, **kwargs):
+		start_time = time.perf_counter()
+		value = function(*args, **kwargs)
+		end_time = time.perf_counter()
+
+		__TIMER__.AddExecutionTime(function, end_time - start_time)
+
+		return value
+
+	return wrapper
+
+def LogExecutionCount(function):
+	"""Count how often a functions or methods was called."""
+
+	@functools.wraps(function)
+	def wrapper(*args, **kwargs):
+		value = function(*args, **kwargs)
+
+		__COUNTER__.IncrementCallCounter(function)
+
+		return value
+
+	return wrapper
+
+__TIMER__ =   ExecutionTimer()
+__COUNTER__ = ExecutionCounter()
+
+# def debug(func):
+# 	"""Print the function signature and return value"""
+# 	@functools.wraps(func)
+# 	def wrapper_debug(*args, **kwargs):
+# 		args_repr = [repr(a) for a in args]                      # 1
+# 		kwargs_repr = [f"{k}={v!r}" for k, v in kwargs.items()]  # 2
+# 		signature = ", ".join(args_repr + kwargs_repr)           # 3
+# 		print(f"Calling {func.__name__}({signature})")
+# 		value = func(*args, **kwargs)
+# 		print(f"{func.__name__!r} returned {value!r}")           # 4
+# 		return value
+# 	return wrapper_debug
+
+# class CountCalls:
+# 	def __init__(self, func):
+# 		functools.update_wrapper(self, func)
+# 		self.func = func
+# 		self.num_calls = 0
+#
+# 	def __call__(self, *args, **kwargs):
+# 		self.num_calls += 1
+# 		print(f"Call {self.num_calls} of {self.func.__name__!r}")
+# 		return self.func(*args, **kwargs)
+#
+# def set_unit(unit):
+#     """Register a unit on a function"""
+#     def decorator_set_unit(func):
+#         func.unit = unit
+#         return func
+#     return decorator_set_unit
+
+ + diff --git a/typing/html/pyVHDLParser/DocumentModel/DesignUnit/Architecture.py.html b/typing/html/pyVHDLParser/DocumentModel/DesignUnit/Architecture.py.html new file mode 100644 index 000000000..3105f2d76 --- /dev/null +++ b/typing/html/pyVHDLParser/DocumentModel/DesignUnit/Architecture.py.html @@ -0,0 +1,299 @@ + + + + + + +

pyVHDLParser.DocumentModel.DesignUnit.Architecture

+ + + + + + +
pyVHDLParser/DocumentModel/DesignUnit/Architecture.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators                   import export
+from typing                                 import List
+
+from pyVHDLModel.DesignUnit                 import Architecture as ArchitectureVHDLModel
+
+from pyVHDLParser.Token.Keywords            import IdentifierToken
+from pyVHDLParser.Blocks                    import BlockParserException
+from pyVHDLParser.Blocks.Object.Constant    import ConstantDeclarationBlock
+from pyVHDLParser.Blocks.Structural         import Architecture as ArchitectureBlocks
+from pyVHDLParser.Groups                    import BlockToGroupParser
+from pyVHDLParser.DocumentModel.Reference   import LibraryClause, PackageReference
+
+
+DEBUG = True
+
+@export
+class Architecture(ArchitectureVHDLModel):
+	def __init__(self, architectureName, entityName):
+		super().__init__()
+		self._name =    architectureName
+		self._entity =  entityName
+
+	@classmethod
+	def stateParse(cls, parserState: BlockToGroupParser): #document, group):
+		# cls.stateParseArchitectureName(parserState)
+		#
+		# for block in parserState.GroupIterator:
+		# 	if isinstance(block, Constant.ConstantBlock):
+		# 		raise NotImplementedError()
+		# 	# elif isinstance(block, ArchitectureBlock.ConcurrentBeginBlock):
+		# 	# 	raise NotImplementedError()
+		# 	elif isinstance(block, ArchitectureBlock.EndBlock):
+		# 		break
+		# else:
+		# 	raise BlockParserException("", None)
+
+		parserState.Pop()
+		# parserState.CurrentBlock = None
+
+	@classmethod
+	def stateParseArchitectureName(cls, parserState: BlockToGroupParser): #document, group):
+		assert isinstance(parserState.CurrentGroup, ArchitectureBlock.NameBlock)
+
+		tokenIterator = iter(parserState)
+
+		# iterate architetures NameBlock to find the architecture name
+		for token in tokenIterator:
+			if isinstance(token, IdentifierToken):
+				architectureName = token.Value
+				break
+		else:
+			raise BlockParserException("", None)  # FIXME: change to DOMParserException
+
+		for token in tokenIterator:
+			if isinstance(token, IdentifierToken):
+				entityName = token.Value
+				break
+		else:
+			raise BlockParserException("", None)  # FIXME: change to DOMParserException
+
+		oldNode = parserState.CurrentNode
+		architecture = cls(architectureName, entityName)
+
+		parserState.CurrentNode.AddArchitecture(architecture)
+		parserState.CurrentNode = architecture
+		parserState.CurrentNode.AddLibraryReferences(oldNode.Libraries)
+		parserState.CurrentNode.AddUses(oldNode.PackageReferences)
+
+		oldNode.Libraries.clear()
+		oldNode.PackageReferences.clear()
+
+	def AddLibraries(self, libraries):
+		for library in libraries:
+			self._libraryReferences.append(library)
+
+	def AddUses(self, uses):
+		for use in uses:
+			self._packageReferences.append(use)
+
+
+	def Print(self, indent=0):
+		indentation = "  "*indent
+		for lib in self._libraryReferences:
+			print("{indent}{DARK_CYAN}LIBRARY{NOCOLOR} {GREEN}{lib}{NOCOLOR};".format(indent=indentation, lib=lib, **Console.Foreground))
+		for lib, pack, obj in self._packageReferences:
+			print("{indent}{DARK_CYAN}USE {GREEN}{lib}{NOCOLOR}.{GREEN}{pack}{NOCOLOR}.{GREEN}{obj}{NOCOLOR};".format(indent=indentation, lib=lib, pack=pack, obj=obj, **Console.Foreground))
+		print()
+		print("{indent}{DARK_CYAN}ARCHITECTURE {YELLOW}{name}{NOCOLOR} {DARK_CYAN}OF{NOCOLOR} {GREEN}{entity}{NOCOLOR} {DARK_CYAN}IS{NOCOLOR}".format(indent=indentation, name=self._name, entity=self._entity, **Console.Foreground))
+		print("{indent}{DARK_CYAN}BEGIN{NOCOLOR}".format(indent=indentation, **Console.Foreground))
+		print("{indent}{DARK_CYAN}END ARCHITECTURE{NOCOLOR};".format(indent=indentation, name=self._name, **Console.Foreground))
+
+ + diff --git a/typing/html/pyVHDLParser/DocumentModel/DesignUnit/Context.py.html b/typing/html/pyVHDLParser/DocumentModel/DesignUnit/Context.py.html new file mode 100644 index 000000000..1908cc961 --- /dev/null +++ b/typing/html/pyVHDLParser/DocumentModel/DesignUnit/Context.py.html @@ -0,0 +1,453 @@ + + + + + + +

pyVHDLParser.DocumentModel.DesignUnit.Context

+ + + + + + +
pyVHDLParser/DocumentModel/DesignUnit/Context.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators                   import export
+
+from pyVHDLModel.DesignUnit                 import Context as ContextVHDLModel
+
+from pyVHDLParser.Token.Keywords            import IdentifierToken
+from pyVHDLParser.Blocks                    import BlockParserException
+from pyVHDLParser.Blocks.Reference          import Context as ContextBlocks
+from pyVHDLParser.Groups                    import BlockToGroupParser
+from pyVHDLParser.DocumentModel.Reference   import LibraryClause, PackageReference
+
+
+DEBUG = True
+
+@export
+class Context(ContextVHDLModel):
+	def __init__(self, contextName):
+		super().__init__(contextName)
+
+	@classmethod
+	def stateParse(cls, document, group):
+		# iterate blocks to find the contexts name
+		for block in group:
+			if isinstance(block, ContextBlocks.NameBlock):
+				for token in block:
+					if isinstance(token, IdentifierToken):
+						contextName = token.Value
+						break
+				else:
+					raise BlockParserException("ContextName not found.", None)  # FIXME: change to DOMParserException
+
+				if len(document.Libraries) != 0:
+					raise BlockParserException("A context (library statements) is not allowed for a context declaration.", None)  # FIXME: change to DOMParserException
+				if len(document.PackageReferences) != 0:
+					raise BlockParserException("A context (use statements) is not allowed for a context declaration.", None)  # FIXME: change to DOMParserException
+
+				context = cls(contextName)
+				print("Found context '{name}'. Adding to current node '{node!s}'.".format(name=contextName, node=document))
+				document.AddContext(context)
+				break
+
+
+		subGroupIterator = iter(group.GetSubGroups())
+		# subGroup =         next(subGroupIterator)
+		#
+		# if isinstance(subGroup, GenericListGroup):
+		# 	cls.stateParseGenericList(document, subGroup)
+		# 	subGroup = next(subGroupIterator)
+		#
+		# if isinstance(subGroup, PortListGroup):
+		# 	cls.stateParsePortList(document, subGroup)
+		# 	subGroup = next(subGroupIterator)
+
+		# FIXME: how to check if everthing is consumed?
+
+
+	@classmethod
+	def stateParseGenericList(cls, parserState: BlockToGroupParser): #document, group):
+		assert isinstance(parserState.CurrentGroup, GenericListBlocks.OpenBlock)
+
+		for block in parserState.GroupIterator:
+			if isinstance(block, pyVHDLParser.Blocks.InterfaceObject.InterfaceConstantBlock):
+				cls.stateParseGeneric(parserState)
+			elif isinstance(block, GenericListBlocks.CloseBlock):
+				break
+		else:
+			raise BlockParserException("", None)  # FIXME: change to DOMParserException
+
+		parserState.Pop()
+
+	@classmethod
+	def stateParseGeneric(cls, parserState: BlockToGroupParser): #document, group):
+		assert isinstance(parserState.CurrentGroup, pyVHDLParser.Blocks.InterfaceObject.InterfaceConstantBlock)
+
+		tokenIterator = iter(parserState)
+
+		for token in tokenIterator:
+			if isinstance(token, IdentifierToken):
+				genericName = token.Value
+				break
+		else:
+			raise BlockParserException("", None)  # FIXME: change to DOMParserException
+
+		parserState.CurrentNode.AddGeneric(genericName)
+
+	@classmethod
+	def stateParsePortList(cls, parserState: BlockToGroupParser): #document, group):
+		assert isinstance(parserState.CurrentGroup, PortListBlocks.OpenBlock)
+
+		for block in parserState.GroupIterator:
+			if isinstance(block, pyVHDLParser.Blocks.InterfaceObject.InterfaceSignalBlock):
+				cls.stateParsePort(parserState)
+			elif isinstance(block, PortListBlocks.CloseBlock):
+				break
+		else:
+			raise BlockParserException("", None)  # FIXME: change to DOMParserException
+
+		parserState.Pop()
+
+	@classmethod
+	def stateParsePort(cls, parserState: BlockToGroupParser): #document, group):
+		assert isinstance(parserState.CurrentGroup, pyVHDLParser.Blocks.InterfaceObject.InterfaceSignalBlock)
+
+		tokenIterator = iter(parserState)
+
+		for token in tokenIterator:
+			if isinstance(token, IdentifierToken):
+				portName = token.Value
+				break
+		else:
+			raise BlockParserException("", None)  # FIXME: change to DOMParserException
+
+		parserState.CurrentNode.AddPort(portName)
+
+	def AddLibraries(self, libraries):
+		for library in libraries:
+			self._libraries.append(library)
+
+	def AddUses(self, uses):
+		for use in uses:
+			self._packageReferences.append(use)
+
+	def AddGeneric(self, generic):
+		self._genericItems.append(generic)
+
+	def AddPort(self, port):
+		self._portItems.append(port)
+
+	def Print(self, indent=0):
+		indentation = "  "*indent
+		for lib in self._libraries:
+			print("{indent}{DARK_CYAN}LIBRARY{NOCOLOR} {GREEN}{lib}{NOCOLOR};".format(indent=indentation, lib=lib, **Console.Foreground))
+		for lib, pack, obj in self._packageReferences:
+			print("{indent}{DARK_CYAN}USE {GREEN}{lib}{NOCOLOR}.{GREEN}{pack}{NOCOLOR}.{GREEN}{obj}{NOCOLOR};".format(indent=indentation, lib=lib, pack=pack, obj=obj, **Console.Foreground))
+		print()
+		print("{indent}{DARK_CYAN}ENTITY{NOCOLOR} {YELLOW}{name}{NOCOLOR} {DARK_CYAN}IS{NOCOLOR}".format(name=self._name, indent=indentation, **Console.Foreground))
+		if len(self._genericItems) > 0:
+			print("{indent}  {DARK_CYAN}GENERIC{NOCOLOR} (".format(indent=indentation, **Console.Foreground))
+			for generic in self._genericItems:
+				print("{indent}    {YELLOW}{name}{NOCOLOR} : {GREEN}{type}{NOCOLOR}".format(indent=indentation, name=generic, type="", **Console.Foreground))
+			print("{indent}  );".format(indent=indentation, **Console.Foreground))
+		if len(self._portItems) > 0:
+			print("{indent}  {DARK_CYAN}PORT{NOCOLOR} (".format(indent=indentation, **Console.Foreground))
+			for port in self._portItems:
+				print("{indent}    {YELLOW}{name}{NOCOLOR} : {GREEN}{type}{NOCOLOR}".format(indent=indentation, name=port, type="", **Console.Foreground))
+			print("{indent}  );".format(indent=indentation, **Console.Foreground))
+		print("{indent}{DARK_CYAN}END ENTITY{NOCOLOR};".format(name=self._name, indent=indentation, **Console.Foreground))
+
+ + diff --git a/typing/html/pyVHDLParser/DocumentModel/DesignUnit/Entity.py.html b/typing/html/pyVHDLParser/DocumentModel/DesignUnit/Entity.py.html new file mode 100644 index 000000000..44dd987f6 --- /dev/null +++ b/typing/html/pyVHDLParser/DocumentModel/DesignUnit/Entity.py.html @@ -0,0 +1,486 @@ + + + + + + +

pyVHDLParser.DocumentModel.DesignUnit.Entity

+ + + + + + +
pyVHDLParser/DocumentModel/DesignUnit/Entity.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators                   import export
+from typing                                 import List
+
+from pyVHDLModel.DesignUnit                 import Entity as EntityVHDLModel
+
+from pyVHDLParser.Token.Keywords            import IdentifierToken
+from pyVHDLParser.Blocks                    import BlockParserException
+from pyVHDLParser.Blocks.List               import GenericList as GenericListBlocks, PortList as PortListBlocks
+from pyVHDLParser.Blocks.Object.Constant    import ConstantDeclarationBlock
+import pyVHDLParser.Blocks.InterfaceObject
+from pyVHDLParser.Blocks.Structural         import Entity as EntityBlocks
+from pyVHDLParser.Groups                    import BlockToGroupParser
+from pyVHDLParser.Groups.List               import GenericListGroup, PortListGroup
+from pyVHDLParser.DocumentModel.Reference   import LibraryClause, PackageReference
+
+
+DEBUG = True
+
+@export
+class Entity(EntityVHDLModel):
+	def __init__(self, entityName):
+		super().__init__(entityName)
+
+	@classmethod
+	def stateParse(cls, parserState: BlockToGroupParser): #document, group):
+		for block in parserState.CurrentGroup:
+			if isinstance(block, EntityBlocks.NameBlock):
+				for token in block:
+					if isinstance(token, IdentifierToken):
+						entityName = token.Value
+						break
+				else:
+					raise BlockParserException("EntityName not found.", None)  # FIXME: change to DOMParserException
+
+				entity = cls(entityName)
+				entity.AddLibraryReferences(document.Libraries)
+				entity.AddUses(document.PackageReferences)
+
+				print("Found library '{0}'. Adding to current node '{1!s}'.".format(entityName, document))
+				document.AddEntity(entity)
+				break
+
+		subGroupIterator = iter(parserState.CurrentGroup.GetSubGroups())
+		subGroup =         next(subGroupIterator)
+
+		if isinstance(subGroup, GenericListGroup):
+			cls.stateParseGenericList(document, subGroup)
+			subGroup = next(subGroupIterator)
+
+		if isinstance(subGroup, PortListGroup):
+			cls.stateParsePortList(document, subGroup)
+			subGroup = next(subGroupIterator)
+
+		# FIXME entity declarative region
+		# if isinstance(subGroup, ):
+		# 	cls.stateParsePortList(document, subGroup)
+		# 	subGroup = next(subGroupIterator)
+
+		# FIXME entity statements
+		# if isinstance(subGroup, ):
+		# 	cls.stateParsePortList(document, subGroup)
+		# 	subGroup = next(subGroupIterator)
+
+		# FIXME: how to check if everthing is consumed?
+
+
+	@classmethod
+	def stateParseGenericList(cls, parserState: BlockToGroupParser): #document, group):
+		assert isinstance(parserState.CurrentGroup, GenericListBlocks.OpenBlock)
+
+		for block in parserState.GroupIterator:
+			if isinstance(block, pyVHDLParser.Blocks.InterfaceObject.InterfaceConstantBlock):
+				cls.stateParseGeneric(parserState)
+			elif isinstance(block, GenericListBlocks.CloseBlock):
+				break
+		else:
+			raise BlockParserException("", None)  # FIXME: change to DOMParserException
+
+		parserState.Pop()
+
+	@classmethod
+	def stateParseGeneric(cls, parserState: BlockToGroupParser): #document, group):
+		assert isinstance(parserState.CurrentGroup, pyVHDLParser.Blocks.InterfaceObject.InterfaceConstantBlock)
+
+		tokenIterator = iter(parserState)
+
+		for token in tokenIterator:
+			if isinstance(token, IdentifierToken):
+				genericName = token.Value
+				break
+		else:
+			raise BlockParserException("", None)  # FIXME: change to DOMParserException
+
+		parserState.CurrentNode.AddGeneric(genericName)
+
+	@classmethod
+	def stateParsePortList(cls, parserState: BlockToGroupParser): #document, group):
+		assert isinstance(parserState.CurrentGroup, PortListBlocks.OpenBlock)
+
+		for block in parserState.GroupIterator:
+			if isinstance(block, pyVHDLParser.Blocks.InterfaceObject.InterfaceSignalBlock):
+				cls.stateParsePort(parserState)
+			elif isinstance(block, PortListBlocks.CloseBlock):
+				break
+		else:
+			raise BlockParserException("", None)  # FIXME: change to DOMParserException
+
+		parserState.Pop()
+
+	@classmethod
+	def stateParsePort(cls, parserState: BlockToGroupParser): #document, group):
+		assert isinstance(parserState.CurrentGroup, pyVHDLParser.Blocks.InterfaceObject.InterfaceSignalBlock)
+
+		tokenIterator = iter(parserState)
+
+		for token in tokenIterator:
+			if isinstance(token, IdentifierToken):
+				portName = token.Value
+				break
+		else:
+			raise BlockParserException("", None)  # FIXME: change to DOMParserException
+
+		parserState.CurrentNode.AddPort(portName)
+
+	def AddLibraries(self, libraries):
+		for library in libraries:
+			self._libraries.append(library)
+
+	def AddUses(self, uses):
+		for use in uses:
+			self._packageReferences.append(use)
+
+	def AddGeneric(self, generic):
+		self._genericItems.append(generic)
+
+	def AddPort(self, port):
+		self._portItems.append(port)
+
+	def Print(self, indent=0):
+		indentation = "  "*indent
+		for lib in self._libraries:
+			print("{indent}{DARK_CYAN}LIBRARY{NOCOLOR} {GREEN}{lib}{NOCOLOR};".format(indent=indentation, lib=lib, **Console.Foreground))
+		for lib, pack, obj in self._packageReferences:
+			print("{indent}{DARK_CYAN}USE {GREEN}{lib}{NOCOLOR}.{GREEN}{pack}{NOCOLOR}.{GREEN}{obj}{NOCOLOR};".format(indent=indentation, lib=lib, pack=pack, obj=obj, **Console.Foreground))
+		print()
+		print("{indent}{DARK_CYAN}ENTITY{NOCOLOR} {YELLOW}{name}{NOCOLOR} {DARK_CYAN}IS{NOCOLOR}".format(name=self._name, indent=indentation, **Console.Foreground))
+		if len(self._genericItems) > 0:
+			print("{indent}  {DARK_CYAN}GENERIC{NOCOLOR} (".format(indent=indentation, **Console.Foreground))
+			for generic in self._genericItems:
+				print("{indent}    {YELLOW}{name}{NOCOLOR} : {GREEN}{type}{NOCOLOR}".format(indent=indentation, name=generic, type="", **Console.Foreground))
+			print("{indent}  );".format(indent=indentation, **Console.Foreground))
+		if len(self._portItems) > 0:
+			print("{indent}  {DARK_CYAN}PORT{NOCOLOR} (".format(indent=indentation, **Console.Foreground))
+			for port in self._portItems:
+				print("{indent}    {YELLOW}{name}{NOCOLOR} : {GREEN}{type}{NOCOLOR}".format(indent=indentation, name=port, type="", **Console.Foreground))
+			print("{indent}  );".format(indent=indentation, **Console.Foreground))
+		print("{indent}{DARK_CYAN}END ENTITY{NOCOLOR};".format(name=self._name, indent=indentation, **Console.Foreground))
+
+ + diff --git a/typing/html/pyVHDLParser/DocumentModel/DesignUnit/Package.py.html b/typing/html/pyVHDLParser/DocumentModel/DesignUnit/Package.py.html new file mode 100644 index 000000000..db9c9cbf9 --- /dev/null +++ b/typing/html/pyVHDLParser/DocumentModel/DesignUnit/Package.py.html @@ -0,0 +1,472 @@ + + + + + + +

pyVHDLParser.DocumentModel.DesignUnit.Package

+ + + + + + +
pyVHDLParser/DocumentModel/DesignUnit/Package.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators                   import export
+from typing                                 import List
+
+from pyVHDLModel.DesignUnit                 import Package as PackageVHDLModel
+
+import pyVHDLParser.Blocks.InterfaceObject
+from pyVHDLParser.Token.Keywords            import IdentifierToken
+from pyVHDLParser.Blocks                    import BlockParserException
+from pyVHDLParser.Blocks.List               import GenericList as GenericListBlocks
+from pyVHDLParser.Blocks.Object.Constant    import ConstantDeclarationBlock
+from pyVHDLParser.Blocks.Sequential         import Package as PackageBlock
+from pyVHDLParser.Groups                    import BlockToGroupParser
+from pyVHDLParser.Groups.List               import GenericListGroup
+from pyVHDLParser.DocumentModel.Reference   import LibraryClause, PackageReference
+
+
+DEBUG = True
+
+@export
+class Package(PackageVHDLModel):
+	def __init__(self, packageName):
+		super().__init__()
+		self._name = packageName
+
+	@classmethod
+	def stateParse(cls, document, group):
+		assert isinstance(group, PackageBlock.NameBlock)
+		cls.stateParsePackageName(parserState)
+
+		for block in group:
+			if isinstance(block, GenericListBlocks.OpenBlock):
+				parserState.PushState = cls.stateParseGenericList
+				parserState.ReIssue()
+			elif isinstance(block, ConstantBlock):
+				parserState.PushState = Constant.stateParse
+				parserState.ReIssue()
+			elif isinstance(block, FunctionBlock.NameBlock):
+				parserState.PushState = Function.stateParse
+				parserState.ReIssue()
+			elif isinstance(block, PackageBlock.EndBlock):
+				break
+			else:
+				raise BlockParserException("Block '{0!r}' not supported in a package.".format(block), block)  # FIXME: change to DOMParserException
+		else:
+			raise BlockParserException("", None)  # FIXME: change to DOMParserException
+
+		parserState.Pop()
+		# parserState.CurrentBlock = None
+
+	@classmethod
+	def stateParsePackageName(cls, parserState: BlockToGroupParser): #document, group):
+		assert isinstance(parserState.CurrentGroup, PackageBlock.NameBlock)
+
+		tokenIterator = iter(parserState)
+		for token in tokenIterator:
+			if isinstance(token, IdentifierToken):
+				packageName = token.Value
+				break
+		else:
+			raise BlockParserException("", None)  # FIXME: change to DOMParserException
+
+		oldNode = parserState.CurrentNode
+		package = cls(packageName)
+
+		parserState.CurrentNode.AddPackage(package)
+		parserState.CurrentNode = package
+		parserState.CurrentNode.AddLibraryReferences(oldNode.Libraries)
+		parserState.CurrentNode.AddUses(oldNode.PackageReferences)
+
+		oldNode.Libraries.clear()
+		oldNode.PackageReferences.clear()
+
+	@classmethod
+	def stateParseGenericList(cls, parserState: BlockToGroupParser): #document, group):
+		assert isinstance(parserState.CurrentGroup, GenericListBlocks.OpenBlock)
+
+		for block in parserState.GroupIterator:
+			if isinstance(block, pyVHDLParser.Blocks.InterfaceObject.InterfaceConstantBlock):
+				cls.stateParseGeneric(parserState)
+			elif isinstance(block, GenericListBlocks.CloseBlock):
+				break
+		else:
+			raise BlockParserException("", None)  # FIXME: change to DOMParserException
+
+		parserState.Pop()
+
+	@classmethod
+	def stateParseGeneric(cls, parserState: BlockToGroupParser): #document, group):
+		assert isinstance(parserState.CurrentGroup, pyVHDLParser.Blocks.InterfaceObject.InterfaceConstantBlock)
+
+		tokenIterator = iter(parserState)
+		for token in tokenIterator:
+			if isinstance(token, IdentifierToken):
+				genericName = token.Value
+				break
+		else:
+			raise BlockParserException("", None)  # FIXME: change to DOMParserException
+
+		parserState.CurrentNode.AddGeneric(genericName)
+
+	def AddLibraryReferences(self, libraries : List[LibraryClause]):
+		if (DEBUG is True) and (len(libraries) > 0): print("{DARK_CYAN}Adding libraries to package {GREEN}{0}{NOCOLOR}:".format(self._name, **Console.Foreground))
+		for library in libraries:
+			if DEBUG: print("  {GREEN}{0!s}{NOCOLOR}".format(library, **Console.Foreground))
+			self._libraryReferences.append(library._library)
+
+	def AddUses(self, uses : List[PackageReference]):
+		if (DEBUG is True) and (len(uses) > 0): print("{DARK_CYAN}Adding uses to package {GREEN}{0}{NOCOLOR}:".format(self._name, **Console.Foreground))
+		for use in uses:
+			if DEBUG: print("  {GREEN}{0!s}{NOCOLOR}".format(use, **Console.Foreground))
+			self._packageReferences.append(use)
+
+	def AddGeneric(self, generic):
+		if DEBUG: print("{DARK_CYAN}Adding generic to package {GREEN}{0}{NOCOLOR}:\n  {YELLOW}{1}{NOCOLOR} : {2}".format(self._name, generic, "", **Console.Foreground))
+		self._genericItems.append(generic)
+
+	def AddConstant(self, constant):
+		if DEBUG: print("{DARK_CYAN}Adding constant to package {GREEN}{0}{NOCOLOR}:\n  {1!s}".format(self._name, constant, **Console.Foreground))
+		self._declaredItems.append(constant)
+
+	def AddFunction(self, function):
+		if DEBUG: print("{DARK_CYAN}Adding function to package {GREEN}{0}{NOCOLOR}:\n  {1!s}".format(self._name, function, **Console.Foreground))
+		self._declaredItems.append(function)
+
+	def AddProcedure(self, procedure):
+		if DEBUG: print("{DARK_CYAN}Adding procedure to package {GREEN}{0}{NOCOLOR}:\n  {1!s}".format(self._name, procedure, **Console.Foreground))
+		self._declaredItems.append(procedure)
+
+	def Print(self, indent=0):
+		indentation = "  "*indent
+		for lib in self._libraries:
+			print("{indent}{DARK_CYAN}LIBRARY{NOCOLOR} {GREEN}{lib}{NOCOLOR};".format(indent=indentation, lib=lib, **Console.Foreground))
+		for use in self._packageReferences:
+			print("{indent}{DARK_CYAN}USE {GREEN}{lib}{NOCOLOR}.{GREEN}{pack}{NOCOLOR}.{GREEN}{item}{NOCOLOR};".format(indent=indentation, lib=use._library, pack=use._package, item=use._item, **Console.Foreground))
+		print()
+		print("{indent}{DARK_CYAN}PACKAGE{NOCOLOR} {YELLOW}{name}{NOCOLOR} {DARK_CYAN}IS{NOCOLOR}".format(indent=indentation, name=self._name, **Console.Foreground))
+		if len(self._genericItems) > 0:
+			print("{indent}  {DARK_CYAN}GENERIC{NOCOLOR} (".format(indent=indentation, **Console.Foreground))
+			for generic in self._genericItems:
+				print("{indent}    {YELLOW}{name}{NOCOLOR} : {GREEN}{type}{NOCOLOR}".format(indent=indentation, name=generic, type="", **Console.Foreground))
+			print("{indent}  );".format(indent=indentation))
+		if len(self._declaredItems) > 0:
+			for item in self._declaredItems:
+				item.Print(indent+1)
+		print("{indent}{DARK_CYAN}END PACKAGE{NOCOLOR};".format(indent=indentation, name=self._name, **Console.Foreground))
+
+ + diff --git a/typing/html/pyVHDLParser/DocumentModel/DesignUnit/PackageBody.py.html b/typing/html/pyVHDLParser/DocumentModel/DesignUnit/PackageBody.py.html new file mode 100644 index 000000000..87dd81bd8 --- /dev/null +++ b/typing/html/pyVHDLParser/DocumentModel/DesignUnit/PackageBody.py.html @@ -0,0 +1,499 @@ + + + + + + +

pyVHDLParser.DocumentModel.DesignUnit.PackageBody

+ + + + + + +
pyVHDLParser/DocumentModel/DesignUnit/PackageBody.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from typing                                 import List
+
+from pyTooling.Decorators                   import export
+from pyVHDLModel.DesignUnit                 import PackageBody as PackageBodyVHDLModel
+
+import pyVHDLParser.Blocks.InterfaceObject
+from pyVHDLParser.Token.Keywords            import IdentifierToken
+from pyVHDLParser.Blocks                    import BlockParserException
+from pyVHDLParser.Blocks.List               import GenericList as GenericListBlocks, PortList as PortListBlocks
+from pyVHDLParser.Blocks.Object.Constant    import ConstantDeclarationBlock
+from pyVHDLParser.Blocks.Sequential         import PackageBody as PackageBodyBlock
+from pyVHDLParser.Groups                    import BlockToGroupParser
+from pyVHDLParser.DocumentModel.Reference   import LibraryClause, PackageReference
+
+
+DEBUG = True
+
+@export
+class PackageBody(PackageBodyVHDLModel):
+	def __init__(self, packageBodyName):
+		super().__init__()
+		self._name = packageBodyName
+
+	@classmethod
+	def stateParse(cls, parserState: BlockToGroupParser): #document, group):
+		assert isinstance(parserState.CurrentGroup, PackageBodyBlock.NameBlock)
+		cls.stateParsePackageBodyName(parserState)
+
+		for block in parserState.GroupIterator:
+			if isinstance(block, GenericListBlocks.OpenBlock):
+				parserState.PushState = cls.stateParseGenericList
+				parserState.ReIssue()
+			elif isinstance(block, PortListBlocks.OpenBlock):
+				parserState.PushState = cls.stateParsePortList
+				parserState.ReIssue()
+			elif isinstance(block, ConstantBlock):
+				parserState.PushState = Constant.stateParse
+				parserState.ReIssue()
+			elif isinstance(block, Function.BeginBlock):
+				parserState.PushState = Function.stateParse
+				parserState.ReIssue()
+			elif isinstance(block, PackageBodyBlock.EndBlock):
+				break
+			else:
+				raise BlockParserException("Block '{0!r}' not supported in a package body.".format(block), block)  # FIXME: change to DOMParserException
+		else:
+			raise BlockParserException("", None)  # FIXME: change to DOMParserException
+
+		parserState.Pop()
+		# parserState.CurrentBlock = None
+
+	@classmethod
+	def stateParsePackageBodyName(cls, parserState: BlockToGroupParser): #document, group):
+		assert isinstance(parserState.CurrentGroup, PackageBodyBlock.NameBlock)
+
+		tokenIterator = iter(parserState)
+
+		for token in tokenIterator:
+			if isinstance(token, IdentifierToken):
+				packageName = token.Value
+				break
+		else:
+			raise BlockParserException("", None)  # FIXME: change to DOMParserException
+
+		oldNode = parserState.CurrentNode
+		packageBody = cls(packageName)
+
+		parserState.CurrentNode.AddPackageBody(packageBody)
+		parserState.CurrentNode = packageBody
+		parserState.CurrentNode.AddLibraryReferences(oldNode.Libraries)
+		parserState.CurrentNode.AddUses(oldNode.PackageReferences)
+
+		oldNode.Libraries.clear()
+		oldNode.PackageReferences.clear()
+
+	@classmethod
+	def stateParseGenericList(cls, parserState: BlockToGroupParser): #document, group):
+		assert isinstance(parserState.CurrentGroup, GenericListBlocks.OpenBlock)
+
+		for block in parserState.GroupIterator:
+			if isinstance(block, pyVHDLParser.Blocks.InterfaceObject.InterfaceConstantBlock):
+				cls.stateParseGeneric(parserState)
+			elif isinstance(block, GenericListBlocks.CloseBlock):
+				break
+		else:
+			raise BlockParserException("", None)  # FIXME: change to DOMParserException
+
+		parserState.Pop()
+
+	@classmethod
+	def stateParseGeneric(cls, parserState: BlockToGroupParser): #document, group):
+		assert isinstance(parserState.CurrentGroup, pyVHDLParser.Blocks.InterfaceObject.InterfaceConstantBlock)
+
+		tokenIterator = iter(parserState)
+
+		for token in tokenIterator:
+			if isinstance(token, IdentifierToken):
+				genericName = token.Value
+				break
+		else:
+			raise BlockParserException("", None)  # FIXME: change to DOMParserException
+
+		parserState.CurrentNode.AddGeneric(genericName)
+
+	@classmethod
+	def stateParsePortList(cls, parserState: BlockToGroupParser): #document, group):
+		assert isinstance(parserState.CurrentGroup, PortListBlocks.OpenBlock)
+
+		for block in parserState.GroupIterator:
+			if isinstance(block, pyVHDLParser.Blocks.InterfaceObject.InterfaceSignalBlock):
+				cls.stateParsePort(parserState)
+			elif isinstance(block, PortListBlocks.CloseBlock):
+				break
+		else:
+			raise BlockParserException("", None)  # FIXME: change to DOMParserException
+
+		parserState.Pop()
+
+	@classmethod
+	def stateParsePort(cls, parserState: BlockToGroupParser): #document, group):
+		assert isinstance(parserState.CurrentGroup, pyVHDLParser.Blocks.InterfaceObject.InterfaceSignalBlock)
+
+		tokenIterator = iter(parserState)
+
+		for token in tokenIterator:
+			if isinstance(token, IdentifierToken):
+				portName = token.Value
+				break
+		else:
+			raise BlockParserException("", None)  # FIXME: change to DOMParserException
+
+		parserState.CurrentNode.AddPort(portName)
+
+	def AddLibraries(self, libraries: List[LibraryClause]):
+		if (DEBUG is True) and (len(libraries) > 0): print("{DARK_CYAN}Adding libraries to package body {GREEN}{0}{NOCOLOR}:".format(self._name, **Console.Foreground))
+		for library in libraries:
+			if DEBUG: print("  {GREEN}{0!s}{NOCOLOR}".format(library, **Console.Foreground))
+			self._libraries.append(library._library)
+
+	def AddUses(self, uses: List[PackageReference]):
+		if (DEBUG is True) and (len(uses) > 0): print("{DARK_CYAN}Adding uses to package body {GREEN}{0}{NOCOLOR}:".format(self._name, **Console.Foreground))
+		for use in uses:
+			if DEBUG: print("  {GREEN}{0!s}{NOCOLOR}".format(use, **Console.Foreground))
+			self._packageReferences.append(use)
+
+	def AddConstant(self, constant):
+		if DEBUG: print("{DARK_CYAN}Adding constant to package body {GREEN}{0}{NOCOLOR}:\n  {1!s}".format(self._name, constant, **Console.Foreground))
+		self._declaredItems.append(constant)
+
+	def Print(self, indent=0):
+		indentation = "  "*indent
+		for lib in self._libraries:
+			print("{indent}{DARK_CYAN}LIBRARY{NOCOLOR} {GREEN}{lib}{NOCOLOR};".format(indent=indentation, lib=lib, **Console.Foreground))
+		for lib, pack, obj in self._packageReferences:
+			print("{indent}{DARK_CYAN}USE {GREEN}{lib}{NOCOLOR}.{GREEN}{pack}{NOCOLOR}.{GREEN}{obj}{NOCOLOR};".format(indent=indentation, lib=lib, pack=pack, obj=obj, **Console.Foreground))
+		print()
+		print("{indent}{DARK_CYAN}PACKAGE BODY{NOCOLOR} {GREEN}{name}{NOCOLOR} {DARK_CYAN}IS{NOCOLOR}".format(indent=indentation, name=self._name, **Console.Foreground))
+		if len(self._declaredItems) > 0:
+			for item in self._declaredItems:
+				item.Print(indent+1)
+		print("{indent}{DARK_CYAN}END PACKAGE BODY{NOCOLOR};".format(indent=indentation, name=self._name, **Console.Foreground))
+
+ + diff --git a/typing/html/pyVHDLParser/DocumentModel/DesignUnit/__init__.py.html b/typing/html/pyVHDLParser/DocumentModel/DesignUnit/__init__.py.html new file mode 100644 index 000000000..78ef6307e --- /dev/null +++ b/typing/html/pyVHDLParser/DocumentModel/DesignUnit/__init__.py.html @@ -0,0 +1,74 @@ + + + + + + +

pyVHDLParser.DocumentModel.DesignUnit

+ + + + + + +
pyVHDLParser/DocumentModel/DesignUnit/__init__.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+
+ + diff --git a/typing/html/pyVHDLParser/DocumentModel/ObjectDeclaration/__init__.py.html b/typing/html/pyVHDLParser/DocumentModel/ObjectDeclaration/__init__.py.html new file mode 100644 index 000000000..786943370 --- /dev/null +++ b/typing/html/pyVHDLParser/DocumentModel/ObjectDeclaration/__init__.py.html @@ -0,0 +1,197 @@ + + + + + + +

pyVHDLParser.DocumentModel.ObjectDeclaration

+ + + + + + +
pyVHDLParser/DocumentModel/ObjectDeclaration/__init__.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.TerminalUI                           import LineTerminal
+
+from pyVHDLModel.Object                             import Constant as ConstantBase
+
+from pyVHDLParser.Token.Keywords                    import IdentifierToken
+from pyVHDLParser.Blocks                            import BlockParserException
+from pyVHDLParser.Blocks.Object.Constant            import ConstantDeclarationBlock
+# from pyVHDLParser.DocumentModel.Parser              import GroupToModelParser
+
+# Type alias for type hinting
+class ParserState:
+	pass
+# ParserState = GroupToModelParser.GroupParserState
+
+
+class Constant(ConstantBase):
+	def __init__(self, constantName):
+		super().__init__()
+		self._name = constantName
+
+	@classmethod
+	def stateParse(cls, parserState: ParserState):
+		assert isinstance(parserState.CurrentGroup, ConstantDeclarationBlock)
+
+		cls.stateParseConstantName(parserState)
+
+		parserState.Pop()
+
+	@classmethod
+	def stateParseConstantName(cls, parserState: ParserState):
+		assert isinstance(parserState.CurrentGroup, ConstantDeclarationBlock)
+
+		tokenIterator = iter(parserState)
+		for token in tokenIterator:
+			if isinstance(token, IdentifierToken):
+				constantName = token.Value
+				break
+		else:
+			raise BlockParserException("Constant name (identifier) not found.", None)
+
+		constant = cls(constantName)
+
+		parserState.CurrentNode.AddConstant(constant)
+		parserState.CurrentNode = constant
+
+	def __str__(self):
+		return "{GREEN}{0}{NOCOLOR} : {YELLOW}{1}{NOCOLOR}".format(self._name, self._subtype, **LineTerminal().Foreground)
+
+	def Print(self, indent=0):
+		indentation = "  " * indent
+		print("{indent}{DARK_CYAN}CONSTANT {GREEN}{name}{NOCOLOR} : {GREEN}{type}{NOCOLOR} := xxx;".format(indent=indentation, name=self._name, type="", **LineTerminal().Foreground))
+
+ + diff --git a/typing/html/pyVHDLParser/DocumentModel/Reference/__init__.py.html b/typing/html/pyVHDLParser/DocumentModel/Reference/__init__.py.html new file mode 100644 index 000000000..8303d96c6 --- /dev/null +++ b/typing/html/pyVHDLParser/DocumentModel/Reference/__init__.py.html @@ -0,0 +1,299 @@ + + + + + + +

pyVHDLParser.DocumentModel.Reference

+ + + + + + +
pyVHDLParser/DocumentModel/Reference/__init__.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyVHDLModel.DesignUnit                 import LibraryClause as VHDLModel_LibraryClause, UseClause as VHDLModel_UseClause
+
+from pyVHDLParser.Token.Keywords            import IdentifierToken, AllKeyword
+from pyVHDLParser.Blocks                    import BlockParserException
+from pyVHDLParser.Blocks.Reference          import Library as LibraryBlocks, Use as UseBlocks
+
+
+class LibraryClause(VHDLModel_LibraryClause):
+	def __init__(self, libraryName):
+		super().__init__()
+		self._library = libraryName
+
+	@classmethod
+	def stateParse(cls, currentNode, group):
+		from pyVHDLParser.DocumentModel import DOMParserException
+
+		for block in group:
+			if isinstance(block, LibraryBlocks.StartBlock):
+				pass
+			elif isinstance(block, LibraryBlocks.LibraryNameBlock):
+				libraryName = block.StartToken.Value
+				library = cls(libraryName)
+				print("Found library '{0}'. Adding to current node '{1!s}'.".format(libraryName, currentNode))
+				currentNode.AddLibrary(library)
+			elif isinstance(block, LibraryBlocks.DelimiterBlock):
+				pass
+			elif isinstance(block, LibraryBlocks.EndBlock):
+				return
+			else:
+				raise DOMParserException("Unexpected block type in LibraryGroup.")
+
+		raise DOMParserException("End of use clause not found.")
+
+	def __str__(self):
+		return self._library
+
+
+class PackageReference(VHDLModel_UseClause):
+	def __init__(self, libraryName, packageName, itemName):
+		super().__init__()
+		self._library = libraryName
+		self._package = packageName
+		self._item =    itemName
+
+	@classmethod
+	def stateParse(cls, currentNode, group):
+		from pyVHDLParser.DocumentModel import DOMParserException
+
+		for block in group:
+			if isinstance(block, UseBlocks.StartBlock):
+				pass
+			elif isinstance(block, UseBlocks.ReferenceNameBlock):
+				tokenIterator = iter(block)
+
+				for token in tokenIterator:
+					if isinstance(token, IdentifierToken):
+						libraryName = token.Value
+						break
+				else:
+					raise BlockParserException("", None)  # FIXME: change to DOMParserException
+
+				for token in tokenIterator:
+					if isinstance(token, IdentifierToken):
+						packageName = token.Value
+						break
+				else:
+					raise BlockParserException("", None)  # FIXME: change to DOMParserException
+
+				for token in tokenIterator:
+					if isinstance(token, IdentifierToken):
+						objectName = token.Value
+						break
+					elif isinstance(token, AllKeyword):
+						objectName = "ALL"
+						break
+				else:
+					raise BlockParserException("", None)  # FIXME: change to DOMParserException
+
+				use = cls(libraryName, packageName, objectName)
+				currentNode.AddUse(use)
+			elif isinstance(block, UseBlocks.EndBlock):
+				return
+			else:
+				raise DOMParserException("Unexpected block type in LibraryGroup.")
+
+		raise DOMParserException("End of use clause not found.")
+
+	def __str__(self):
+		return "{0}.{1}".format(self._library, self._package)
+
+ + diff --git a/typing/html/pyVHDLParser/DocumentModel/Sequential/Function.py.html b/typing/html/pyVHDLParser/DocumentModel/Sequential/Function.py.html new file mode 100644 index 000000000..87dc9437f --- /dev/null +++ b/typing/html/pyVHDLParser/DocumentModel/Sequential/Function.py.html @@ -0,0 +1,412 @@ + + + + + + +

pyVHDLParser.DocumentModel.Sequential.Function

+ + + + + + +
pyVHDLParser/DocumentModel/Sequential/Function.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from typing                                         import List
+
+from pyTooling.TerminalUI                           import LineTerminal
+from pyVHDLModel.Subprogram                         import Function as FunctionModel
+
+from pyVHDLParser.Token.Keywords                    import IdentifierToken
+from pyVHDLParser.Blocks                            import BlockParserException
+from pyVHDLParser.Blocks.List                       import GenericList as GenericListBlocks
+from pyVHDLParser.Blocks.Object.Constant            import ConstantDeclarationBlock
+import pyVHDLParser.Blocks.InterfaceObject
+from pyVHDLParser.Blocks.Sequential                 import Function as FunctionBlock
+from pyVHDLParser.DocumentModel.ObjectDeclaration   import Constant
+from pyVHDLParser.DocumentModel.Reference           import LibraryClause, PackageReference
+
+# Type alias for type hinting
+class ParserState:
+	pass
+# ParserState = GroupToModelParser.GroupParserState
+
+
+class Function(FunctionModel):
+	def __init__(self, functionName):
+		super().__init__()
+		self._name = functionName
+
+	@classmethod
+	def stateParse(cls, parserState: ParserState):
+		assert isinstance(parserState.CurrentGroup, FunctionBlock.NameBlock)
+		cls.stateParseFunctionName(parserState)
+
+		# if isinstance(block, GenericListBlocks.OpenBlock):
+		# 	parserState.PushState = cls.stateParseGenericList
+		# 	parserState.ReIssue()
+		# el
+		for block in parserState.CurrentGroup:
+			if isinstance(block, ConstantDeclarationBlock):
+				parserState.PushState = Constant.stateParse
+				parserState.ReIssue()
+			elif isinstance(block, FunctionBlock.NameBlock):
+				parserState.PushState = Function.stateParse
+				parserState.ReIssue()
+			elif isinstance(block, FunctionBlock.EndBlock):
+				break
+			else:
+				raise BlockParserException("Block '{0!r}' not supported in a function.".format(block), block)
+		else:
+			raise BlockParserException("", None)
+
+		parserState.Pop()
+
+	@classmethod
+	def stateParseFunctionName(cls, parserState: ParserState):
+		assert isinstance(parserState.CurrentGroup, FunctionBlock.NameBlock)
+
+		tokenIterator = iter(parserState)
+		for token in tokenIterator:
+			if isinstance(token, IdentifierToken):
+				functionName = token.Value
+				break
+		else:
+			raise BlockParserException("", None)
+
+		function = cls(functionName)
+		parserState.CurrentNode.AddFunction(function)
+		parserState.CurrentNode = function
+
+	@classmethod
+	def stateParseGenericList(cls, parserState: ParserState):
+		assert isinstance(parserState.CurrentGroup, GenericListBlocks.OpenBlock)
+
+		for block in parserState.GroupIterator:
+			if isinstance(block, pyVHDLParser.Blocks.InterfaceObject.InterfaceConstantBlock):
+				cls.stateParseGeneric(parserState)
+			elif isinstance(block, GenericListBlocks.CloseBlock):
+				break
+		else:
+			raise BlockParserException("", None)
+
+		parserState.Pop()
+
+	@classmethod
+	def stateParseGeneric(cls, parserState: ParserState):
+		assert isinstance(parserState.CurrentGroup, pyVHDLParser.Blocks.InterfaceObject.InterfaceConstantBlock)
+
+		tokenIterator = iter(parserState)
+		for token in tokenIterator:
+			if isinstance(token, IdentifierToken):
+				genericName = token.Value
+				break
+		else:
+			raise BlockParserException("", None)
+
+		parserState.CurrentNode.AddGeneric(genericName)
+
+	def AddLibraries(self, libraries: List[LibraryClause]):
+		if (DEBUG is True) and (len(libraries) > 0): print("{DARK_CYAN}Adding libraries to function {GREEN}{0}{NOCOLOR}:".format(self._name, **LineTerminal().Foreground))
+		for library in libraries:
+			if DEBUG: print("  {GREEN}{0!s}{NOCOLOR}".format(library, **LineTerminal().Foreground))
+			self._libraries.append(library._library)
+
+	def AddUses(self, uses: List[PackageReference]):
+		if (DEBUG is True) and (len(uses) > 0): print("{DARK_CYAN}Adding uses to function {GREEN}{0}{NOCOLOR}:".format(self._name, **LineTerminal().Foreground))
+		for use in uses:
+			if DEBUG: print("  {GREEN}{0!s}{NOCOLOR}".format(use, **LineTerminal().Foreground))
+			self._uses.append(use)
+
+	def AddGeneric(self, generic):
+		if DEBUG: print("{DARK_CYAN}Adding generic to function {GREEN}{0}{NOCOLOR}:\n  {YELLOW}{1}{NOCOLOR} : {2}".format(self._name, generic, "", **LineTerminal().Foreground))
+		self._genericItems.append(generic)
+
+	def AddConstant(self, constant):
+		if DEBUG: print("{DARK_CYAN}Adding constant to function {GREEN}{0}{NOCOLOR}:\n  {1!s}".format(self._name, constant, **LineTerminal().Foreground))
+		self._declaredItems.append(constant)
+
+	def Print(self, indent=0):
+		indentation = "  "*indent
+		for lib in self._libraries:
+			print("{indent}{DARK_CYAN}LIBRARY{NOCOLOR} {GREEN}{lib}{NOCOLOR};".format(indent=indentation, lib=lib, **LineTerminal().Foreground))
+		for use in self._uses:
+			print("{indent}{DARK_CYAN}USE {GREEN}{lib}{NOCOLOR}.{GREEN}{pack}{NOCOLOR}.{GREEN}{item}{NOCOLOR};".format(indent=indentation, lib=use._configuration, pack=use._function, item=use._item, **LineTerminal().Foreground))
+		print()
+		print("{indent}{DARK_CYAN}FUNCTION{NOCOLOR} {YELLOW}{name}{NOCOLOR} {DARK_CYAN}IS{NOCOLOR}".format(indent=indentation, name=self._name, **LineTerminal().Foreground))
+		if len(self._genericItems) > 0:
+			print("{indent}  {DARK_CYAN}GENERIC{NOCOLOR} (".format(indent=indentation, **LineTerminal().Foreground))
+			for generic in self._genericItems:
+				print("{indent}    {YELLOW}{name}{NOCOLOR} : {GREEN}{type}{NOCOLOR}".format(indent=indentation, name=generic, type="", **LineTerminal().Foreground))
+			print("{indent}  );".format(indent=indentation))
+		if len(self._declaredItems) > 0:
+			for item in self._declaredItems:
+				item.Print(indent+1)
+		print("{indent}{DARK_CYAN}END FUNCTION{NOCOLOR};".format(indent=indentation, name=self._name, **LineTerminal().Foreground))
+
+
+ + diff --git a/typing/html/pyVHDLParser/DocumentModel/Sequential/__init__.py.html b/typing/html/pyVHDLParser/DocumentModel/Sequential/__init__.py.html new file mode 100644 index 000000000..f853bfe6e --- /dev/null +++ b/typing/html/pyVHDLParser/DocumentModel/Sequential/__init__.py.html @@ -0,0 +1,74 @@ + + + + + + +

pyVHDLParser.DocumentModel.Sequential

+ + + + + + +
pyVHDLParser/DocumentModel/Sequential/__init__.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+
+ + diff --git a/typing/html/pyVHDLParser/DocumentModel/__init__.py.html b/typing/html/pyVHDLParser/DocumentModel/__init__.py.html new file mode 100644 index 000000000..328adcf88 --- /dev/null +++ b/typing/html/pyVHDLParser/DocumentModel/__init__.py.html @@ -0,0 +1,440 @@ + + + + + + +

pyVHDLParser.DocumentModel

+ + + + + + +
pyVHDLParser/DocumentModel/__init__.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pathlib                              import Path
+from typing                               import List, Union
+
+from pyTooling.Decorators                 import export
+from pyVHDLModel                          import Document as DocumentModel
+
+from pyVHDLParser.Base                    import ParserException
+from pyVHDLParser.Token.Parser            import Tokenizer
+from pyVHDLParser.Blocks                  import TokenToBlockParser, BlockParserException
+from pyVHDLParser.Groups                  import StartOfDocumentGroup, EndOfDocumentGroup, BlockToGroupParser, Group, GroupParserException
+from pyVHDLParser.Groups.Comment          import WhitespaceGroup
+from pyVHDLParser.Groups.DesignUnit       import ContextGroup, EntityGroup, ArchitectureGroup, PackageBodyGroup, PackageGroup
+from pyVHDLParser.Groups.Reference        import LibraryGroup, UseGroup
+from pyVHDLParser.DocumentModel.Reference import LibraryClause, PackageReference
+
+
+@export
+class DOMParserException(ParserException):
+	def __init__(self, message, group):
+		super().__init__(message)
+		self._group = group
+
+
+@export
+class Document(DocumentModel):
+	__libraries:  List[LibraryClause]
+	__uses:       List[PackageReference]
+
+	def __init__(self, file: Union[Path, str]):  # FIXME: parameter type
+		if isinstance(file, Path):
+			filePath = file
+		elif isinstance(file, str):
+			filePath = Path(file)
+		else:
+			raise ValueError("Unsupported type for parameter 'file'.")
+
+		super().__init__(filePath)
+
+		self.__libraries =  []
+		self.__uses  =      []
+
+	def Parse(self, content=None):  # FIXME: parameter type
+		if content is None:
+			if not self._path.exists():
+				raise DOMParserException("File '{0!s}' does not exist.".format(self._path))\
+					from FileNotFoundError(str(self._path))
+
+			with self._path.open('r') as fileHandle:
+				content = fileHandle.read()
+
+		vhdlTokenStream = Tokenizer.GetVHDLTokenizer(content)
+		vhdlBlockStream = TokenToBlockParser(vhdlTokenStream)()
+		vhdlGroupStream = BlockToGroupParser(vhdlBlockStream)()
+		try:
+			groups =          [group for group in vhdlGroupStream]
+		except BlockParserException as ex:
+			raise DOMParserException("Error while parsing and indexing the source code.", ex.Group) from ex
+		except GroupParserException as ex:
+			raise DOMParserException("Unexpected ParserException.", ex.Block) from ex
+		except ParserException as ex:
+			raise DOMParserException("Unexpected ParserException.", ex.Position) from ex
+		except Exception as ex:
+			raise DOMParserException("Unexpected exception.", None) from ex
+
+		firstGroup =      groups[0]
+		lastGroup =       groups[-1]
+
+		if not isinstance(firstGroup, StartOfDocumentGroup):
+			raise DOMParserException("Expected group is not a StartOfDocumentGroup.", firstGroup)
+		elif not isinstance(lastGroup, EndOfDocumentGroup):
+			raise DOMParserException("Expected group is not an EndOfDocumentGroup.", lastGroup)
+
+		# run recursively (node, group)
+		self.stateParse(self, firstGroup)
+
+	@classmethod
+	def stateParse(cls, document, startOfDocumentGroup: Group):
+		from pyVHDLParser.DocumentModel.Reference               import LibraryClause as LibraryModel, PackageReference as UseModel
+		from pyVHDLParser.DocumentModel.DesignUnit.Context      import Context as ContextModel
+		from pyVHDLParser.DocumentModel.DesignUnit.Entity       import Entity as EntityModel
+		from pyVHDLParser.DocumentModel.DesignUnit.Architecture import Architecture as ArchitectureModel
+		from pyVHDLParser.DocumentModel.DesignUnit.Package      import Package as PackageModel
+		from pyVHDLParser.DocumentModel.DesignUnit.PackageBody  import PackageBody as PackageBodyModel
+
+		GROUP_TO_MODEL = {
+			LibraryGroup:       LibraryModel,
+			UseGroup:           UseModel,
+			ContextGroup:       ContextModel,
+			EntityGroup:        EntityModel,
+			ArchitectureGroup:  ArchitectureModel,
+			PackageGroup:       PackageModel,
+			PackageBodyGroup:   PackageBodyModel,
+			# ConfigurationModel
+		}
+
+		for subGroup in startOfDocumentGroup.GetSubGroups():
+			if isinstance(subGroup, (WhitespaceGroup)):
+				pass
+			for group in GROUP_TO_MODEL:
+				# TODO: compare to a direct dictionary match with exception fallback on whitespace
+				if isinstance(subGroup, group):
+					GROUP_TO_MODEL[group].stateParse(document, subGroup)
+					break
+
+	def AddLibrary(self, library):  # FIXME: parameter type
+		self.__libraries.append(library)
+
+	def AddUse(self, use):  # FIXME: parameter type
+		self.__uses.append(use)
+
+	@property
+	def Libraries(self):
+		return self.__libraries
+
+	@property
+	def Uses(self):
+		return self.__uses
+
+	def AddContext(self, context):  # FIXME: parameter type
+		self._contexts.append(context)
+
+	def AddEntity(self, entity):  # FIXME: parameter type
+		self._entities.append(entity)
+
+	def AddArchitecture(self, architecture):  # FIXME: parameter type
+		self._architectures.append(architecture)
+
+	def AddPackage(self, package):  # FIXME: parameter type
+		self._packages.append(package)
+
+	def AddPackageBody(self, packageBody):  # FIXME: parameter type
+		self._packageBodies.append(packageBody)
+
+	def Print(self, indent: int=0):
+		_indent = "  " * indent
+		if len(self.__libraries) > 0:
+			for library in self.__libraries:
+				print("{indent}-- unused LIBRARY {lib};".format(indent=_indent, lib=library))
+		if len(self.__uses) > 0:
+			for use in self.__uses:
+				print("{indent}-- unused USE {lib}.{pack}.{obj};".format(indent=_indent, lib=use.Library, pack=use.Package, obj=use.Item))
+		print()
+		for entity in self._entities:
+			entity.Print()
+		print()
+		for architecture in self._architectures:
+			architecture.Print()
+		print()
+		for package in self._packages:
+			package.Print()
+		print()
+		for packageBody in self._packageBodies:
+			packageBody.Print()
+
+ + diff --git a/typing/html/pyVHDLParser/Filters/Comment.py.html b/typing/html/pyVHDLParser/Filters/Comment.py.html new file mode 100644 index 000000000..99e2c636e --- /dev/null +++ b/typing/html/pyVHDLParser/Filters/Comment.py.html @@ -0,0 +1,186 @@ + + + + + + +

pyVHDLParser.Filters.Comment

+ + + + + + +
pyVHDLParser/Filters/Comment.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from typing import Generator, Any
+
+from pyVHDLParser.Blocks           import BlockParserException, CommentBlock, Block
+from pyVHDLParser.Blocks.Common    import IndentationBlock, LinebreakBlock, WhitespaceBlock
+# from pyVHDLParser.Blocks.Document  import CommentBlock
+
+
+def StripAndFuse(generator: Generator[Block, Any, None]) -> Generator[Block, Any, None]:
+	iterator =  iter(generator)
+	lastBlock = next(iterator)
+
+	# don't filter the first block
+	yield lastBlock
+
+	for block in iterator:
+		if isinstance(block, (IndentationBlock, CommentBlock, LinebreakBlock)):
+			continue
+		else:
+			if block.MultiPart == True:
+				while True:
+					nextBlock = next(iterator)
+					if isinstance(nextBlock, (WhitespaceBlock, CommentBlock)):
+						continue
+					if type(block) is not type(nextBlock):
+						raise BlockParserException("Error in multipart blocks. {0} <-> {1}".format(type(block), type(nextBlock)), None)   # TODO: review exception type
+
+					nextBlock.StartToken.PreviousToken = block.EndToken
+					block.EndToken = nextBlock.EndToken
+					if nextBlock.MultiPart == False:
+						break
+
+			block.PreviousBlock = lastBlock
+			block.StartToken.PreviousToken = lastBlock.EndToken
+			yield block
+			lastBlock = block
+
+def FastForward(generator: Generator[Block, Any, None]) -> Generator[Block, Any, None]:
+	iterator =  iter(generator)
+	# don't filter the first block
+	yield next(iterator)
+
+	for block in iterator:
+		if isinstance(block, (IndentationBlock, CommentBlock, LinebreakBlock)):
+			continue
+		else:
+			yield block
+
+ + diff --git a/typing/html/pyVHDLParser/Filters/__init__.py.html b/typing/html/pyVHDLParser/Filters/__init__.py.html new file mode 100644 index 000000000..2a32b18ef --- /dev/null +++ b/typing/html/pyVHDLParser/Filters/__init__.py.html @@ -0,0 +1,74 @@ + + + + + + +

pyVHDLParser.Filters

+ + + + + + +
pyVHDLParser/Filters/__init__.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+
+ + diff --git a/typing/html/pyVHDLParser/Groups/Comment.py.html b/typing/html/pyVHDLParser/Groups/Comment.py.html new file mode 100644 index 000000000..943cf8aa9 --- /dev/null +++ b/typing/html/pyVHDLParser/Groups/Comment.py.html @@ -0,0 +1,148 @@ + + + + + + +

pyVHDLParser.Groups.Comment

+ + + + + + +
pyVHDLParser/Groups/Comment.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators         import export
+
+from pyVHDLParser.Blocks          import CommentBlock
+from pyVHDLParser.Blocks.Common   import WhitespaceBlock, LinebreakBlock, IndentationBlock
+from pyVHDLParser.Groups          import BlockToGroupParser, GroupParserException, Group
+
+
+@export
+class CommentGroup(Group):
+	@classmethod
+	def stateParse(cls, parserState: BlockToGroupParser):
+		for block in parserState.GetBlockIterator:
+			if not isinstance(block, CommentBlock):
+				parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, block)
+				parserState.Pop()
+				return True
+
+		raise GroupParserException("End of library clause not found.", block)
+
+
+@export
+class WhitespaceGroup(Group):
+	@classmethod
+	def stateParse(cls, parserState: BlockToGroupParser):
+		for block in parserState.GetBlockIterator:
+			if not isinstance(block, (WhitespaceBlock, LinebreakBlock, IndentationBlock)):
+				parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, block.PreviousBlock)
+				parserState.Pop()
+				return True
+
+		raise GroupParserException("End of library clause not found.", block)
+
+ + diff --git a/typing/html/pyVHDLParser/Groups/Concurrent.py.html b/typing/html/pyVHDLParser/Groups/Concurrent.py.html new file mode 100644 index 000000000..cf2ce9295 --- /dev/null +++ b/typing/html/pyVHDLParser/Groups/Concurrent.py.html @@ -0,0 +1,194 @@ + + + + + + +

pyVHDLParser.Groups.Concurrent

+ + + + + + +
pyVHDLParser/Groups/Concurrent.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators                 import export
+
+from pyVHDLParser.Blocks.Reporting.Assert import AssertBlock
+from pyVHDLParser.Blocks.Reporting.Report import ReportBlock
+from pyVHDLParser.Groups                  import BlockToGroupParser, Group, GroupParserException
+
+
+@export
+class AssertGroup(Group):
+	@classmethod
+	def stateParse(cls, parserState: BlockToGroupParser):
+		marker = parserState.Block
+		if parserState.Block.MultiPart:
+			for block in parserState.GetBlockIterator:
+				if isinstance(block, AssertBlock) and not block.MultiPart:
+					marker2 = block
+					break
+			else:
+				raise GroupParserException("End of multi parted constant declaration not found.", block)
+		else:
+			marker2 = marker
+
+		parserState.NextGroup = cls(parserState.LastGroup, marker, marker2)
+		parserState.Pop()
+		return
+
+
+@export
+class ReportGroup(Group):
+	@classmethod
+	def stateParse(cls, parserState: BlockToGroupParser):
+		marker = parserState.Block
+		if parserState.Block.MultiPart:
+			for block in parserState.GetBlockIterator:
+				if isinstance(block, ReportBlock) and not block.MultiPart:
+					marker2 = block
+					break
+			else:
+				raise GroupParserException("End of multi parted constant declaration not found.", block)
+		else:
+			marker2 = marker
+
+		parserState.NextGroup = cls(parserState.LastGroup, marker, marker2)
+		parserState.Pop()
+		return
+
+
+@export
+class SignalAssignmentGroup(Group):
+	@classmethod
+	def stateParse(cls, parserState: BlockToGroupParser):
+		block = parserState.Block
+
+		raise NotImplementedError("State=Parse: {0!r}".format(block))
+
+ + diff --git a/typing/html/pyVHDLParser/Groups/DesignUnit.py.html b/typing/html/pyVHDLParser/Groups/DesignUnit.py.html new file mode 100644 index 000000000..4da201092 --- /dev/null +++ b/typing/html/pyVHDLParser/Groups/DesignUnit.py.html @@ -0,0 +1,1634 @@ + + + + + + +

pyVHDLParser.Groups.DesignUnit

+ + + + + + +
pyVHDLParser/Groups/DesignUnit.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+380
+381
+382
+383
+384
+385
+386
+387
+388
+389
+390
+391
+392
+393
+394
+395
+396
+397
+398
+399
+400
+401
+402
+403
+404
+405
+406
+407
+408
+409
+410
+411
+412
+413
+414
+415
+416
+417
+418
+419
+420
+421
+422
+423
+424
+425
+426
+427
+428
+429
+430
+431
+432
+433
+434
+435
+436
+437
+438
+439
+440
+441
+442
+443
+444
+445
+446
+447
+448
+449
+450
+451
+452
+453
+454
+455
+456
+457
+458
+459
+460
+461
+462
+463
+464
+465
+466
+467
+468
+469
+470
+471
+472
+473
+474
+475
+476
+477
+478
+479
+480
+481
+482
+483
+484
+485
+486
+487
+488
+489
+490
+491
+492
+493
+494
+495
+496
+497
+498
+499
+500
+501
+502
+503
+504
+505
+506
+507
+508
+509
+510
+511
+512
+513
+514
+515
+516
+517
+518
+519
+520
+521
+522
+523
+524
+525
+526
+527
+528
+529
+530
+531
+532
+533
+534
+535
+536
+537
+538
+539
+540
+541
+542
+543
+544
+545
+546
+547
+548
+549
+550
+551
+552
+553
+554
+555
+556
+557
+558
+559
+560
+561
+562
+563
+564
+565
+566
+567
+568
+569
+570
+571
+572
+573
+574
+575
+576
+577
+578
+579
+580
+581
+582
+583
+584
+585
+586
+587
+588
+589
+590
+591
+592
+593
+594
+595
+596
+597
+598
+599
+600
+601
+602
+603
+604
+605
+606
+607
+608
+609
+610
+611
+612
+613
+614
+615
+616
+617
+618
+619
+620
+621
+622
+623
+624
+625
+626
+627
+628
+629
+630
+631
+632
+633
+634
+635
+636
+637
+638
+639
+640
+641
+642
+643
+644
+645
+646
+647
+648
+649
+650
+651
+652
+653
+654
+655
+656
+657
+658
+659
+660
+661
+662
+663
+664
+665
+666
+667
+668
+669
+670
+671
+672
+673
+674
+675
+676
+677
+678
+679
+680
+681
+682
+683
+684
+685
+686
+687
+688
+689
+690
+691
+692
+693
+694
+695
+696
+697
+698
+699
+700
+701
+702
+703
+704
+705
+706
+707
+708
+709
+710
+711
+712
+713
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from collections                              import ChainMap
+from itertools                                import chain
+
+from pyTooling.Decorators                     import export
+
+from pyVHDLParser.Blocks                      import CommentBlock, EndOfDocumentBlock
+from pyVHDLParser.Blocks.Common               import LinebreakBlock, IndentationBlock
+from pyVHDLParser.Blocks.List                 import GenericList, ParameterList, PortList
+from pyVHDLParser.Blocks.Object.Signal        import SignalDeclarationBlock
+from pyVHDLParser.Blocks.Object.Constant      import ConstantDeclarationBlock
+from pyVHDLParser.Blocks.Reference            import Context, Library, Use
+from pyVHDLParser.Blocks.Reporting.Assert     import AssertBlock
+from pyVHDLParser.Blocks.Sequential           import Package, PackageBody, Function, Procedure, Process
+from pyVHDLParser.Blocks.Structural           import Entity, Architecture, Component, Configuration
+from pyVHDLParser.Groups                      import GroupParserException, Group, EndOfDocumentGroup, BlockToGroupParser
+from pyVHDLParser.Groups.Comment              import CommentGroup, WhitespaceGroup
+from pyVHDLParser.Groups.Concurrent           import AssertGroup
+from pyVHDLParser.Groups.List                 import GenericListGroup, ParameterListGroup, PortListGroup
+from pyVHDLParser.Groups.Object               import ConstantGroup, SignalGroup
+from pyVHDLParser.Groups.Reference            import LibraryGroup, UseGroup
+from pyVHDLParser.Groups.Sequential.Function  import FunctionGroup
+from pyVHDLParser.Groups.Sequential.Procedure import ProcedureGroup
+from pyVHDLParser.Groups.Sequential.Process   import ProcessGroup
+
+
+@export
+class ContextGroup(Group):
+	SIMPLE_BLOCKS = {
+		Library.StartBlock:    LibraryGroup,
+		Use.StartBlock:        UseGroup
+	}
+
+	def __init__(self, previousGroup, startBlock, endBlock=None):
+		super().__init__(previousGroup, startBlock, endBlock)
+
+		self._subGroups = {
+			CommentGroup:       [],
+			WhitespaceGroup:    [],
+			LibraryGroup:       [],
+			UseGroup:           []
+		}
+
+	@classmethod
+	def stateParse(cls, parserState: BlockToGroupParser):
+		currentBlock = parserState.Block
+
+		if isinstance(currentBlock, Context.NameBlock):
+			parserState.NextGroup =   cls(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			#parserState.NextState =   cls.stateParseGenerics
+			return
+		elif isinstance(currentBlock, Context.EndBlock):
+			#parserState.NextGroup =   cls(parserState.LastGroup, parserState.BlockMarker, parserState.Block)
+			#parserState.Pop()
+			#parserState.BlockMarker = None
+			return
+		elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)):
+			parserState.PushState =   WhitespaceGroup.stateParse
+			parserState.NextGroup =   WhitespaceGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		elif isinstance(currentBlock, CommentBlock):
+			parserState.PushState =   CommentGroup.stateParse
+			parserState.NextGroup =   CommentGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		else:
+			for block in cls.SIMPLE_BLOCKS:
+				if isinstance(currentBlock, block):
+					group = cls.SIMPLE_BLOCKS[block]
+					parserState.PushState =   group.stateParse
+					parserState.BlockMarker = currentBlock
+					return True
+
+		if isinstance(currentBlock, EndOfDocumentBlock):
+			parserState.NextGroup = EndOfDocumentGroup(currentBlock)
+			return
+
+		raise GroupParserException("End of context declaration not found.".format(
+			block=currentBlock.__class__.__qualname__
+		), currentBlock)
+
+
+@export
+class EntityGroup(Group):
+	DECLARATION_SIMPLE_BLOCKS = {
+		GenericList.OpenBlock:    GenericListGroup,
+		PortList.OpenBlock:       PortListGroup,
+		Use.StartBlock:           UseGroup,
+		ConstantDeclarationBlock: ConstantGroup
+	}
+	DECLARATION_COMPOUND_BLOCKS = {}
+	STATEMENT_SIMPLE_BLOCKS = {
+		AssertBlock:             AssertGroup
+	}
+	STATEMENT_COMPOUND_BLOCKS = {
+		Process.OpenBlock:       ProcessGroup,
+	}
+
+	def __init__(self, previousGroup, startBlock, endBlock=None):
+		super().__init__(previousGroup, startBlock, endBlock)
+
+		self._subGroups = dict(ChainMap(
+			{v: [] for v in chain(
+				self.DECLARATION_SIMPLE_BLOCKS.values(),
+				self.DECLARATION_COMPOUND_BLOCKS.values(),
+				self.STATEMENT_SIMPLE_BLOCKS.values(),
+				self.STATEMENT_COMPOUND_BLOCKS.values()
+			)},
+			{CommentGroup: [],
+			 WhitespaceGroup: []
+			 }
+		))
+
+	@classmethod
+	def stateParse(cls, parserState: BlockToGroupParser):
+		currentBlock = parserState.Block
+
+		# consume OpenBlock
+		if isinstance(currentBlock, Entity.NameBlock):
+			parserState.NextGroup =   cls(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			parserState.NextState =   cls.stateParseGenerics
+			return
+		else:
+			raise GroupParserException("Begin of entity expected.", currentBlock)
+
+	@classmethod
+	def stateParseGenerics(cls, parserState: BlockToGroupParser):
+		currentBlock = parserState.Block
+
+		if isinstance(currentBlock, GenericList.OpenBlock):
+			parserState.NextState =   cls.stateParsePorts
+			parserState.PushState =   GenericListGroup.stateParse
+			parserState.NextGroup =   GenericListGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		elif isinstance(currentBlock, PortList.OpenBlock):
+			parserState.NextState =   cls.stateParseDeclarations
+			parserState.PushState =   PortListGroup.stateParse
+			parserState.NextGroup =   PortListGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)):
+			parserState.PushState =   WhitespaceGroup.stateParse
+			parserState.NextGroup =   WhitespaceGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		elif isinstance(currentBlock, CommentBlock):
+			parserState.PushState =   CommentGroup.stateParse
+			parserState.NextGroup =   CommentGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+
+		if isinstance(currentBlock, EndOfDocumentBlock):
+			parserState.NextGroup = EndOfDocumentGroup(currentBlock)
+			return
+
+		raise GroupParserException("End of generic clause not found.", currentBlock)
+
+	@classmethod
+	def stateParsePorts(cls, parserState: BlockToGroupParser):
+		currentBlock = parserState.Block
+
+		if isinstance(currentBlock, PortList.OpenBlock):
+			parserState.NextState =   cls.stateParseDeclarations
+			parserState.PushState =   PortListGroup.stateParse
+			parserState.NextGroup =   PortListGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)):
+			parserState.PushState =   WhitespaceGroup.stateParse
+			parserState.NextGroup =   WhitespaceGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		elif isinstance(currentBlock, CommentBlock):
+			parserState.PushState =   CommentGroup.stateParse
+			parserState.NextGroup =   CommentGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+
+		if isinstance(currentBlock, EndOfDocumentBlock):
+			parserState.NextGroup = EndOfDocumentGroup(currentBlock)
+			return
+
+		raise GroupParserException("End of port clause not found.", currentBlock)
+
+	@classmethod
+	def stateParseDeclarations(cls, parserState: BlockToGroupParser):
+		currentBlock = parserState.Block
+
+		if isinstance(currentBlock, Entity.BeginBlock):
+			parserState.NextState =   cls.stateParseStatements
+			return
+		elif isinstance(currentBlock, Entity.EndBlock):
+			parserState.NextGroup =   cls(parserState.LastGroup, parserState.BlockMarker, parserState.Block)
+			parserState.Pop()
+			parserState.BlockMarker = None
+			return
+		elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)):
+			parserState.PushState =   WhitespaceGroup.stateParse
+			parserState.NextGroup =   WhitespaceGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		elif isinstance(currentBlock, CommentBlock):
+			parserState.PushState =   CommentGroup.stateParse
+			parserState.NextGroup =   CommentGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		else:
+			for block in cls.DECLARATION_SIMPLE_BLOCKS:
+				if isinstance(currentBlock, block):
+					group = cls.DECLARATION_SIMPLE_BLOCKS[block]
+					parserState.PushState =   group.stateParse
+					parserState.BlockMarker = currentBlock
+					return True
+
+			for block in cls.DECLARATION_COMPOUND_BLOCKS:
+				if isinstance(currentBlock, block):
+					group =                   cls.DECLARATION_COMPOUND_BLOCKS[block]
+					parserState.PushState =   group.stateParse
+					parserState.BlockMarker = currentBlock
+					return True
+
+		if isinstance(currentBlock, EndOfDocumentBlock):
+			parserState.NextGroup = EndOfDocumentGroup(currentBlock)
+			return
+
+		raise GroupParserException("End of entity declarative region not found.", currentBlock)
+
+	@classmethod
+	def stateParseStatements(cls, parserState: BlockToGroupParser):
+		currentBlock = parserState.Block
+
+		if isinstance(currentBlock, Entity.EndBlock):
+			parserState.NextGroup =   cls(parserState.LastGroup, parserState.BlockMarker, parserState.Block)
+			parserState.Pop()
+			parserState.BlockMarker = None
+			return
+		elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)):
+			parserState.PushState =   WhitespaceGroup.stateParse
+			parserState.NextGroup =   WhitespaceGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		elif isinstance(currentBlock, CommentBlock):
+			parserState.PushState =   CommentGroup.stateParse
+			parserState.NextGroup =   CommentGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		else:
+			for block in cls.STATEMENT_SIMPLE_BLOCKS:
+				if isinstance(currentBlock, block):
+					group = cls.STATEMENT_SIMPLE_BLOCKS[block]
+					parserState.PushState =   group.stateParse
+					parserState.BlockMarker = currentBlock
+					return True
+
+			for block in cls.STATEMENT_COMPOUND_BLOCKS:
+				if isinstance(currentBlock, block):
+					group =                   cls.STATEMENT_COMPOUND_BLOCKS[block]
+					parserState.PushState =   group.stateParse
+					parserState.BlockMarker = currentBlock
+					return True
+
+		if isinstance(currentBlock, EndOfDocumentBlock):
+			parserState.NextGroup = EndOfDocumentGroup(currentBlock)
+			return
+
+		raise GroupParserException("End of entity declaration not found.", currentBlock)
+
+
+@export
+class ArchitectureGroup(Group):
+	DECLARATION_SIMPLE_BLOCKS = {
+		Use.StartBlock:           UseGroup,
+		ConstantDeclarationBlock: ConstantGroup,
+		# SharedVariableBlock:            VariableGroup,
+		SignalDeclarationBlock:   SignalGroup
+	}
+	DECLARATION_COMPOUND_BLOCKS = {
+		Function.NameBlock:       FunctionGroup,
+		Procedure.NameBlock:      ProcedureGroup
+	}
+	STATEMENT_SIMPLE_BLOCKS = {
+		AssertBlock:              AssertGroup
+	}
+	STATEMENT_COMPOUND_BLOCKS = {
+		Process.OpenBlock:        ProcessGroup
+	}
+
+	def __init__(self, previousGroup, startBlock, endBlock=None):
+		super().__init__(previousGroup, startBlock, endBlock)
+
+		self._subGroups = dict(ChainMap(
+			{v: [] for v in chain(
+				self.DECLARATION_SIMPLE_BLOCKS.values(),
+				self.DECLARATION_COMPOUND_BLOCKS.values(),
+				self.STATEMENT_SIMPLE_BLOCKS.values(),
+				self.STATEMENT_COMPOUND_BLOCKS.values()
+			)},
+			{CommentGroup: [],
+			 WhitespaceGroup: []
+			 }
+		))
+
+	@classmethod
+	def stateParse(cls, parserState: BlockToGroupParser):
+		currentBlock = parserState.Block
+
+		if isinstance(currentBlock, Architecture.NameBlock):
+			parserState.NextState =   cls.stateParseDeclarations
+			return
+		elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)):
+			parserState.PushState =   WhitespaceGroup.stateParse
+			parserState.NextGroup =   WhitespaceGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		elif isinstance(currentBlock, CommentBlock):
+			parserState.PushState =   CommentGroup.stateParse
+			parserState.NextGroup =   CommentGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		elif isinstance(currentBlock, EndOfDocumentBlock):
+			parserState.NextGroup =   EndOfDocumentGroup(currentBlock)
+			return
+
+		raise GroupParserException("End of architecture declaration not found.".format(
+			block=currentBlock.__class__.__qualname__
+		), currentBlock)
+
+	@classmethod
+	def stateParseDeclarations(cls, parserState: BlockToGroupParser):
+		currentBlock = parserState.Block
+
+		if isinstance(currentBlock, Architecture.BeginBlock):
+			parserState.NextState =   cls.stateParseStatements
+			return
+		elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)):
+			parserState.PushState =   WhitespaceGroup.stateParse
+			parserState.NextGroup =   WhitespaceGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		elif isinstance(currentBlock, CommentBlock):
+			parserState.PushState =   CommentGroup.stateParse
+			parserState.NextGroup =   CommentGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		else:
+			for block in cls.DECLARATION_SIMPLE_BLOCKS:
+				if isinstance(currentBlock, block):
+					group = cls.DECLARATION_SIMPLE_BLOCKS[block]
+					parserState.PushState =   group.stateParse
+					parserState.BlockMarker = currentBlock
+					return True
+
+			for block in cls.DECLARATION_COMPOUND_BLOCKS:
+				if isinstance(currentBlock, block):
+					group =                   cls.DECLARATION_COMPOUND_BLOCKS[block]
+					parserState.PushState =   group.stateParse
+					parserState.BlockMarker = currentBlock
+					return True
+
+		if isinstance(currentBlock, EndOfDocumentBlock):
+			parserState.NextGroup = EndOfDocumentGroup(currentBlock)
+			return
+
+		raise GroupParserException("End of architecture declaration not found.".format(
+			block=currentBlock.__class__.__qualname__
+		), currentBlock)
+
+	@classmethod
+	def stateParseStatements(cls, parserState: BlockToGroupParser):
+		currentBlock = parserState.Block
+
+		if isinstance(currentBlock, Architecture.EndBlock):
+			parserState.NextGroup =   cls(parserState.LastGroup, parserState.BlockMarker, parserState.Block)
+			parserState.Pop()
+			parserState.BlockMarker = None
+			return
+		elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)):
+			parserState.PushState =   WhitespaceGroup.stateParse
+			parserState.NextGroup =   WhitespaceGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		elif isinstance(currentBlock, CommentBlock):
+			parserState.PushState =   CommentGroup.stateParse
+			parserState.NextGroup =   CommentGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		else:
+			for block in cls.STATEMENT_SIMPLE_BLOCKS:
+				if isinstance(currentBlock, block):
+					group = cls.STATEMENT_SIMPLE_BLOCKS[block]
+					parserState.PushState =   group.stateParse
+					parserState.BlockMarker = currentBlock
+					return True
+
+			for block in cls.STATEMENT_COMPOUND_BLOCKS:
+				if isinstance(currentBlock, block):
+					group =                   cls.STATEMENT_COMPOUND_BLOCKS[block]
+					parserState.PushState =   group.stateParse
+					parserState.BlockMarker = currentBlock
+					return True
+
+		if isinstance(currentBlock, EndOfDocumentBlock):
+			parserState.NextGroup = EndOfDocumentGroup(currentBlock)
+			return
+
+		raise GroupParserException("End of architecture declaration not found.".format(
+			block=currentBlock.__class__.__qualname__
+		), currentBlock)
+
+
+@export
+class PackageGroup(Group):
+	DECLARATION_SIMPLE_BLOCKS = {
+		Library.StartBlock:       LibraryGroup,
+		Use.StartBlock:           UseGroup,
+		ConstantDeclarationBlock: ConstantGroup,
+		# SharedVariableBlock:            VariableGroup,
+		SignalDeclarationBlock:   SignalGroup
+	}
+	DECLARATION_COMPOUND_BLOCKS = {
+		Function.NameBlock:       FunctionGroup,
+		Procedure.NameBlock:      ProcedureGroup
+	}
+
+	def __init__(self, previousGroup, startBlock, endBlock=None):
+		super().__init__(previousGroup, startBlock, endBlock)
+
+		self._subGroups = dict(ChainMap(
+			{v: [] for v in chain(
+				self.DECLARATION_SIMPLE_BLOCKS.values(),
+				self.DECLARATION_COMPOUND_BLOCKS.values()
+			)},
+			{CommentGroup: [],
+			 WhitespaceGroup: []
+			 }
+		))
+
+	@classmethod
+	def stateParse(cls, parserState: BlockToGroupParser):
+		currentBlock = parserState.Block
+
+		if isinstance(currentBlock, Package.NameBlock):
+			return
+		elif isinstance(currentBlock, Package.EndBlock):
+			parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, parserState.Block)
+			parserState.Pop()
+			parserState.BlockMarker = None
+			return
+		elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)):
+			parserState.PushState = WhitespaceGroup.stateParse
+			parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		elif isinstance(currentBlock, CommentBlock):
+			parserState.PushState = CommentGroup.stateParse
+			parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		else:
+			for block in cls.DECLARATION_SIMPLE_BLOCKS:
+				if isinstance(currentBlock, block):
+					group = cls.DECLARATION_SIMPLE_BLOCKS[block]
+					parserState.PushState =   group.stateParse
+					parserState.BlockMarker = currentBlock
+					return True
+
+			for block in cls.DECLARATION_COMPOUND_BLOCKS:
+				if isinstance(currentBlock, block):
+					group =                   cls.DECLARATION_COMPOUND_BLOCKS[block]
+					parserState.PushState =   group.stateParse
+					parserState.BlockMarker = currentBlock
+					return True
+
+		if isinstance(currentBlock, EndOfDocumentBlock):
+			parserState.NextGroup = EndOfDocumentGroup(currentBlock)
+			return
+
+		raise GroupParserException("End of package declaration not found.".format(
+			block=currentBlock.__class__.__qualname__
+		), currentBlock)
+
+
+@export
+class PackageBodyGroup(Group):
+	DECLARATION_SIMPLE_BLOCKS = {
+		Library.StartBlock:       LibraryGroup,
+		Use.StartBlock:           UseGroup,
+		ConstantDeclarationBlock: ConstantGroup,
+		# SharedVariableBlock:            VariableGroup,
+		SignalDeclarationBlock:   SignalGroup
+	}
+	DECLARATION_COMPOUND_BLOCKS = {
+		Function.NameBlock:       FunctionGroup,
+		Procedure.NameBlock:      ProcedureGroup
+	}
+
+	def __init__(self, previousGroup, startBlock, endBlock=None):
+		super().__init__(previousGroup, startBlock, endBlock)
+
+		self._subGroups = dict(ChainMap(
+			{v: [] for v in chain(
+				self.DECLARATION_SIMPLE_BLOCKS.values(),
+				self.DECLARATION_COMPOUND_BLOCKS.values()
+			)},
+			{CommentGroup: [],
+			 WhitespaceGroup: []
+			 }
+		))
+
+	@classmethod
+	def stateParse(cls, parserState: BlockToGroupParser):
+		currentBlock = parserState.Block
+
+		if isinstance(currentBlock, PackageBody.NameBlock):
+			return
+		elif isinstance(currentBlock, PackageBody.EndBlock):
+			parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, parserState.Block)
+			parserState.Pop()
+			parserState.BlockMarker = None
+			return
+		elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)):
+			parserState.PushState = WhitespaceGroup.stateParse
+			parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		elif isinstance(currentBlock, CommentBlock):
+			parserState.PushState = CommentGroup.stateParse
+			parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		else:
+			for block in cls.DECLARATION_SIMPLE_BLOCKS:
+				if isinstance(currentBlock, block):
+					group = cls.DECLARATION_SIMPLE_BLOCKS[block]
+					parserState.PushState =   group.stateParse
+					parserState.BlockMarker = currentBlock
+					return True
+
+			for block in cls.DECLARATION_COMPOUND_BLOCKS:
+				if isinstance(currentBlock, block):
+					group =                   cls.DECLARATION_COMPOUND_BLOCKS[block]
+					parserState.PushState =   group.stateParse
+					parserState.NextGroup =   group(parserState.LastGroup, parserState.BlockMarker, currentBlock)
+					parserState.BlockMarker = currentBlock
+					return True
+
+		if isinstance(currentBlock, EndOfDocumentBlock):
+			parserState.NextGroup = EndOfDocumentGroup(currentBlock)
+			return
+
+		raise GroupParserException("End of package body declaration not found.".format(
+			block=currentBlock.__class__.__qualname__
+		), currentBlock)
+
+
+@export
+class ComponentGroup(Group):
+	SIMPLE_BLOCKS = {
+		# LibraryBlock:             LibraryGroup,
+		# UseBlock:                 UseGroup
+	}
+	COMPOUND_BLOCKS = {
+		# Function.NameBlock:       FunctionGroup,
+		# Procedure.NameBlock:      ProcedureGroup
+	}
+
+	def __init__(self, previousGroup, startBlock, endBlock=None):
+		super().__init__(previousGroup, startBlock, endBlock)
+
+		self._subGroups = {
+			CommentGroup:       [],
+			WhitespaceGroup:    []
+		}
+
+	@classmethod
+	def stateParse(cls, parserState: BlockToGroupParser):
+		currentBlock = parserState.Block
+
+		if isinstance(currentBlock, Component.NameBlock):
+			return
+		elif isinstance(currentBlock, Component.EndBlock):
+			parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, parserState.Block)
+			parserState.Pop()
+			parserState.BlockMarker = None
+			return
+		elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)):
+			parserState.PushState = WhitespaceGroup.stateParse
+			parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		elif isinstance(currentBlock, CommentBlock):
+			parserState.PushState = CommentGroup.stateParse
+			parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		else:
+			for block in cls.SIMPLE_BLOCKS:
+				if isinstance(currentBlock, block):
+					group = cls.SIMPLE_BLOCKS[block]
+					parserState.PushState =   group.stateParse
+					parserState.BlockMarker = currentBlock
+					return True
+
+			for block in cls.COMPOUND_BLOCKS:
+				if isinstance(currentBlock, block):
+					group =                   cls.COMPOUND_BLOCKS[block]
+					parserState.PushState =   group.stateParse
+					parserState.BlockMarker = currentBlock
+					return True
+
+		if isinstance(currentBlock, EndOfDocumentBlock):
+			parserState.NextGroup = EndOfDocumentGroup(currentBlock)
+			return
+
+		raise GroupParserException("End of component declaration not found.".format(
+			block=currentBlock.__class__.__qualname__
+		), currentBlock)
+
+
+@export
+class ConfigurationGroup(Group):
+	SIMPLE_BLOCKS = {
+		# LibraryBlock: LibraryGroup,
+		# UseBlock: UseGroup
+	}
+	COMPOUND_BLOCKS = {
+		# Function.NameBlock: FunctionGroup,
+		# Procedure.NameBlock: ProcedureGroup
+	}
+
+	def __init__(self, previousGroup, startBlock, endBlock=None):
+		super().__init__(previousGroup, startBlock, endBlock)
+
+		self._subGroups = {
+			CommentGroup:       [],
+			WhitespaceGroup:    []
+		}
+
+	@classmethod
+	def stateParse(cls, parserState: BlockToGroupParser):
+		currentBlock = parserState.Block
+
+		if isinstance(currentBlock, Configuration.NameBlock):
+			return
+		elif isinstance(currentBlock, Configuration.EndBlock):
+			parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, parserState.Block)
+			parserState.Pop()
+			parserState.BlockMarker = None
+			return
+		elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)):
+			parserState.PushState = WhitespaceGroup.stateParse
+			parserState.NextGroup = WhitespaceGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		elif isinstance(currentBlock, CommentBlock):
+			parserState.PushState = CommentGroup.stateParse
+			parserState.NextGroup = CommentGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		else:
+			for block in cls.SIMPLE_BLOCKS:
+				if isinstance(currentBlock, block):
+					group = cls.SIMPLE_BLOCKS[block]
+					parserState.PushState = group.stateParse
+					parserState.BlockMarker = currentBlock
+					return True
+
+			for block in cls.COMPOUND_BLOCKS:
+				if isinstance(currentBlock, block):
+					group = cls.COMPOUND_BLOCKS[block]
+					parserState.PushState = group.stateParse
+					parserState.BlockMarker = currentBlock
+					return True
+
+		if isinstance(currentBlock, EndOfDocumentBlock):
+			parserState.NextGroup = EndOfDocumentGroup(currentBlock)
+			return
+
+		raise GroupParserException("End of configuration declaration not found.".format(
+			block=currentBlock.__class__.__qualname__
+		), currentBlock)
+
+ + diff --git a/typing/html/pyVHDLParser/Groups/List.py.html b/typing/html/pyVHDLParser/Groups/List.py.html new file mode 100644 index 000000000..2adbfcabd --- /dev/null +++ b/typing/html/pyVHDLParser/Groups/List.py.html @@ -0,0 +1,705 @@ + + + + + + +

pyVHDLParser.Groups.List

+ + + + + + +
pyVHDLParser/Groups/List.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators           import export
+
+from pyVHDLParser.Blocks            import CommentBlock, EndOfDocumentBlock
+from pyVHDLParser.Blocks.Common     import LinebreakBlock, IndentationBlock
+import pyVHDLParser.Blocks.InterfaceObject
+from pyVHDLParser.Blocks.List       import GenericList, ParameterList, PortList, SensitivityList
+from pyVHDLParser.Groups            import BlockToGroupParser, GroupParserException, Group, EndOfDocumentGroup
+from pyVHDLParser.Groups.Comment    import WhitespaceGroup, CommentGroup
+
+
+@export
+class GenericListGroup(Group):
+	def __init__(self, previousGroup, startBlock, endBlock=None):
+		super().__init__(previousGroup, startBlock, endBlock)
+
+		self._subGroups = {
+			CommentGroup:         [],
+			WhitespaceGroup:      [],
+			GenericListItemGroup: []
+		}
+
+	@classmethod
+	def stateParse(cls, parserState: BlockToGroupParser):
+		currentBlock = parserState.Block
+
+		if isinstance(currentBlock, GenericList.OpenBlock):
+			return
+		elif isinstance(currentBlock, pyVHDLParser.Blocks.InterfaceObject.InterfaceConstantBlock):
+			parserState.PushState =   GenericListItemGroup.stateParse
+			parserState.NextGroup =   GenericListItemGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		elif isinstance(currentBlock, GenericList.CloseBlock):
+			parserState.Pop()
+			return
+		elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)):
+			parserState.PushState =   WhitespaceGroup.stateParse
+			parserState.NextGroup =   WhitespaceGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		elif isinstance(currentBlock, CommentBlock):
+			parserState.PushState =   CommentGroup.stateParse
+			parserState.NextGroup =   CommentGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+
+		if isinstance(currentBlock, EndOfDocumentBlock):
+			parserState.NextGroup = EndOfDocumentGroup(currentBlock)
+			return
+
+		raise GroupParserException("End of generic list not found.", currentBlock)
+
+
+@export
+class GenericListItemGroup(Group):
+	@classmethod
+	def stateParse(cls, parserState: BlockToGroupParser):
+		for block in parserState.GetBlockIterator:
+			if isinstance(block, GenericList.DelimiterBlock):
+				parserState.Pop()
+				return
+			elif isinstance(block, GenericList.CloseBlock):
+				# parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, block)
+				parserState.Pop()
+				return True
+
+		raise GroupParserException("End of generic not found.", block)
+
+
+@export
+class GenericMapGroup(Group):
+	@classmethod
+	def stateParse(cls, parserState: BlockToGroupParser):
+		block = parserState.Block
+
+		raise NotImplementedError("State=Parse: {0!r}".format(block))
+
+
+@export
+class GenericMapItemGroup(Group):
+	@classmethod
+	def stateParse(cls, parserState: BlockToGroupParser):
+		block = parserState.Block
+
+		raise NotImplementedError("State=Parse: {0!r}".format(block))
+
+
+@export
+class PortListGroup(Group):
+	def __init__(self, previousGroup, startBlock, endBlock=None):
+		super().__init__(previousGroup, startBlock, endBlock)
+
+		self._subGroups = {
+			CommentGroup:       [],
+			WhitespaceGroup:    [],
+			PortListItemGroup:  []
+		}
+
+	@classmethod
+	def stateParse(cls, parserState: BlockToGroupParser):
+		currentBlock = parserState.Block
+
+		if isinstance(currentBlock, PortList.OpenBlock):
+			return
+		elif isinstance(currentBlock, (pyVHDLParser.Blocks.InterfaceObject.InterfaceSignalBlock, PortList.DelimiterBlock)):
+			return
+		elif isinstance(currentBlock, PortList.CloseBlock):
+			parserState.Pop()
+			return
+		elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)):
+			parserState.PushState =   WhitespaceGroup.stateParse
+			parserState.NextGroup =   WhitespaceGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		elif isinstance(currentBlock, CommentBlock):
+			parserState.PushState =   CommentGroup.stateParse
+			parserState.NextGroup =   CommentGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+
+		if isinstance(currentBlock, EndOfDocumentBlock):
+			parserState.NextGroup = EndOfDocumentGroup(currentBlock)
+			return
+
+		raise GroupParserException("End of generic list not found.", currentBlock)
+
+
+@export
+class PortListItemGroup(Group):
+	@classmethod
+	def stateParse(cls, parserState: BlockToGroupParser):
+		for block in parserState.GetBlockIterator:
+			if isinstance(block, PortList.DelimiterBlock):
+				parserState.Pop()
+				return
+			elif isinstance(block, PortList.CloseBlock):
+				# parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, block)
+				parserState.Pop()
+				return True
+
+		raise GroupParserException("End of port not found.", block)
+
+
+@export
+class PortMapGroup(Group):
+	@classmethod
+	def stateParse(cls, parserState: BlockToGroupParser):
+		block = parserState.Block
+
+		raise NotImplementedError("State=Parse: {0!r}".format(block))
+
+
+@export
+class PortMapItemGroup(Group):
+	@classmethod
+	def stateParse(cls, parserState: BlockToGroupParser):
+		block = parserState.Block
+
+		raise NotImplementedError("State=Parse: {0!r}".format(block))
+
+
+@export
+class ParameterListGroup(Group):
+	def __init__(self, previousGroup, startBlock, endBlock=None):
+		super().__init__(previousGroup, startBlock, endBlock)
+
+		self._subGroups = {
+			CommentGroup:           [],
+			WhitespaceGroup:        [],
+			ParameterListItemGroup: []
+		}
+
+	@classmethod
+	def stateParse(cls, parserState: BlockToGroupParser):
+		currentBlock = parserState.Block
+
+		if isinstance(currentBlock, ParameterList.OpenBlock):
+			return
+		elif isinstance(currentBlock, (ParameterList.ItemBlock, ParameterList.DelimiterBlock)):
+			return
+		elif isinstance(currentBlock, ParameterList.CloseBlock):
+			parserState.Pop()
+			return
+		elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)):
+			parserState.PushState =   WhitespaceGroup.stateParse
+			parserState.NextGroup =   WhitespaceGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		elif isinstance(currentBlock, CommentBlock):
+			parserState.PushState =   CommentGroup.stateParse
+			parserState.NextGroup =   CommentGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+
+		if isinstance(currentBlock, EndOfDocumentBlock):
+			parserState.NextGroup = EndOfDocumentGroup(currentBlock)
+			return
+
+		raise GroupParserException("End of generic list not found.", currentBlock)
+
+
+@export
+class ParameterListItemGroup(Group):
+	@classmethod
+	def stateParse(cls, parserState: BlockToGroupParser):
+		for block in parserState.GetBlockIterator:
+			if isinstance(block, ParameterList.DelimiterBlock):
+				parserState.Pop()
+				return
+			elif isinstance(block, ParameterList.CloseBlock):
+				# parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, block)
+				parserState.Pop()
+				return True
+
+		raise GroupParserException("End of parameter not found.", block)
+
+
+@export
+class ParameterMapGroup(Group):
+	@classmethod
+	def stateParse(cls, parserState: BlockToGroupParser):
+		block = parserState.Block
+
+		raise NotImplementedError("State=Parse: {0!r}".format(block))
+
+
+@export
+class ParameterMapItemGroup(Group):
+	@classmethod
+	def stateParse(cls, parserState: BlockToGroupParser):
+		block = parserState.Block
+
+		raise NotImplementedError("State=Parse: {0!r}".format(block))
+
+
+@export
+class SensitivityListGroup(Group):
+	def __init__(self, previousGroup, startBlock, endBlock=None):
+		super().__init__(previousGroup, startBlock, endBlock)
+
+		self._subGroups = {
+			CommentGroup:             [],
+			WhitespaceGroup:          [],
+			SensitivityListItemGroup: []
+		}
+
+	@classmethod
+	def stateParse(cls, parserState: BlockToGroupParser):
+		currentBlock = parserState.Block
+
+		if isinstance(currentBlock, SensitivityList.OpenBlock):
+			return
+		elif isinstance(currentBlock, (SensitivityList.ItemBlock, SensitivityList.DelimiterBlock)):
+			return
+		elif isinstance(currentBlock, SensitivityList.CloseBlock):
+			parserState.Pop()
+			return
+		elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)):
+			parserState.PushState =   WhitespaceGroup.stateParse
+			parserState.NextGroup =   WhitespaceGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		elif isinstance(currentBlock, CommentBlock):
+			parserState.PushState =   CommentGroup.stateParse
+			parserState.NextGroup =   CommentGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+
+		if isinstance(currentBlock, EndOfDocumentBlock):
+			parserState.NextGroup = EndOfDocumentGroup(currentBlock)
+			return
+
+		raise GroupParserException("End of generic list not found.", currentBlock)
+
+
+@export
+class SensitivityListItemGroup(Group):
+	@classmethod
+	def stateParse(cls, parserState: BlockToGroupParser):
+		block = parserState.Block
+
+		raise NotImplementedError("State=Parse: {0!r}".format(block))
+
+ + diff --git a/typing/html/pyVHDLParser/Groups/Object.py.html b/typing/html/pyVHDLParser/Groups/Object.py.html new file mode 100644 index 000000000..0db1a673c --- /dev/null +++ b/typing/html/pyVHDLParser/Groups/Object.py.html @@ -0,0 +1,225 @@ + + + + + + +

pyVHDLParser.Groups.Object

+ + + + + + +
pyVHDLParser/Groups/Object.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators                   import export
+
+from pyVHDLParser.Blocks.Object.Variable    import VariableDeclarationBlock
+from pyVHDLParser.Blocks.Object.Signal      import SignalDeclarationBlock
+from pyVHDLParser.Blocks.Object.Constant    import ConstantDeclarationBlock
+from pyVHDLParser.Blocks.Reference.Library  import EndBlock, StartBlock
+from pyVHDLParser.Blocks.Reference.Use      import EndBlock, StartBlock
+from pyVHDLParser.Groups                    import BlockToGroupParser, GroupParserException, Group
+
+
+@export
+class ConstantGroup(Group):
+	@classmethod
+	def stateParse(cls, parserState: BlockToGroupParser):
+		marker = parserState.Block
+		if parserState.Block.MultiPart:
+			for block in parserState.GetBlockIterator:
+				if isinstance(block, ConstantDeclarationBlock) and not block.MultiPart:
+					marker2 = block
+					break
+			else:
+				raise GroupParserException("End of multi parted constant declaration not found.", block)
+		else:
+			marker2 = marker
+
+		parserState.NextGroup = cls(parserState.LastGroup, marker, marker2)
+		parserState.Pop()
+		return
+
+
+@export
+class VariableGroup(Group):
+	@classmethod
+	def stateParse(cls, parserState: BlockToGroupParser):
+		marker = parserState.Block
+		if parserState.Block.MultiPart:
+			for block in parserState.GetBlockIterator:
+				if isinstance(block, VariableDeclarationBlock) and not block.MultiPart:
+					marker2 = block
+					break
+			else:
+				raise GroupParserException("End of multi parted variable declaration not found.", block)
+		else:
+			marker2 = marker
+
+		parserState.NextGroup = cls(parserState.LastGroup, marker, marker2)
+		parserState.Pop()
+		return
+
+
+@export
+class SignalGroup(Group):
+	@classmethod
+	def stateParse(cls, parserState: BlockToGroupParser):
+		marker = parserState.Block
+		if parserState.Block.MultiPart:
+			for block in parserState.GetBlockIterator:
+				if isinstance(block, SignalDeclarationBlock) and not block.MultiPart:
+					marker2 = block
+					break
+			else:
+				raise GroupParserException("End of multi parted signal declaration not found.", block)
+		else:
+			marker2 = marker
+
+		parserState.NextGroup = cls(parserState.LastGroup, marker, marker2)
+		parserState.Pop()
+		return
+
+ + diff --git a/typing/html/pyVHDLParser/Groups/Reference.py.html b/typing/html/pyVHDLParser/Groups/Reference.py.html new file mode 100644 index 000000000..d15690fc1 --- /dev/null +++ b/typing/html/pyVHDLParser/Groups/Reference.py.html @@ -0,0 +1,144 @@ + + + + + + +

pyVHDLParser.Groups.Reference

+ + + + + + +
pyVHDLParser/Groups/Reference.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators             import export
+
+from pyVHDLParser.Blocks.Reference    import Library, Use
+from pyVHDLParser.Groups              import BlockToGroupParser, GroupParserException, Group
+
+
+@export
+class LibraryGroup(Group):
+	@classmethod
+	def stateParse(cls, parserState: BlockToGroupParser):
+		for block in parserState.GetBlockIterator:
+			if isinstance(block, Library.EndBlock):
+				parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, block)
+				parserState.Pop()
+				return
+
+		raise GroupParserException("End of library clause not found.", block)
+
+
+@export
+class UseGroup(Group):
+	@classmethod
+	def stateParse(cls, parserState: BlockToGroupParser):
+		for block in parserState.GetBlockIterator:
+			if isinstance(block, Use.EndBlock):
+				parserState.NextGroup = cls(parserState.LastGroup, parserState.BlockMarker, block)
+				parserState.Pop()
+				return
+
+		raise GroupParserException("End of library clause not found.", block)
+
+ + diff --git a/typing/html/pyVHDLParser/Groups/Sequential/Function.py.html b/typing/html/pyVHDLParser/Groups/Sequential/Function.py.html new file mode 100644 index 000000000..f1d4545ac --- /dev/null +++ b/typing/html/pyVHDLParser/Groups/Sequential/Function.py.html @@ -0,0 +1,606 @@ + + + + + + +

pyVHDLParser.Groups.Sequential.Function

+ + + + + + +
pyVHDLParser/Groups/Sequential/Function.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from collections                          import ChainMap
+from itertools                            import chain
+
+from pyTooling.Decorators                 import export
+
+from pyVHDLParser.Token.Keywords          import EndToken
+from pyVHDLParser.Blocks                  import CommentBlock, EndOfDocumentBlock
+from pyVHDLParser.Blocks.Common           import LinebreakBlock, IndentationBlock
+from pyVHDLParser.Blocks.List             import GenericList, ParameterList
+from pyVHDLParser.Blocks.Object.Variable  import VariableDeclarationBlock
+from pyVHDLParser.Blocks.Object.Constant  import ConstantDeclarationBlock
+from pyVHDLParser.Blocks.Reference        import Use
+from pyVHDLParser.Blocks.Reporting.Report import ReportBlock
+from pyVHDLParser.Blocks.Sequential       import Function
+from pyVHDLParser.Groups                  import BlockToGroupParser, Group, GroupParserException, EndOfDocumentGroup
+from pyVHDLParser.Groups.Comment          import WhitespaceGroup, CommentGroup
+from pyVHDLParser.Groups.Concurrent       import ReportGroup
+from pyVHDLParser.Groups.List             import GenericListGroup, ParameterListGroup
+from pyVHDLParser.Groups.Object           import ConstantGroup, VariableGroup
+from pyVHDLParser.Groups.Reference        import UseGroup
+
+
+@export
+class FunctionGroup(Group):
+	DECLARATION_SIMPLE_BLOCKS = {
+		Use.StartBlock:           UseGroup,
+		ConstantDeclarationBlock: ConstantGroup,
+		VariableDeclarationBlock: VariableGroup
+	}
+	DECLARATION_COMPOUND_BLOCKS = {
+		# Function.NameBlock:       FunctionGroup,  # FIXME: unresolvable reference
+		# Procedure.NameBlock:      ProcedureGroup  # FIXME: unresolvable reference
+	}
+	STATEMENT_SIMPLE_BLOCKS = {
+		ReportBlock:              ReportGroup
+	}
+	STATEMENT_COMPOUND_BLOCKS = {
+		# If.OpenBlock:        IfGroup
+	}
+
+	def __init__(self, previousGroup, startBlock, endBlock=None):
+		super().__init__(previousGroup, startBlock, endBlock)
+
+		self._subGroups = dict(ChainMap(
+			{v: [] for v in chain(
+				self.DECLARATION_SIMPLE_BLOCKS.values(),
+				self.DECLARATION_COMPOUND_BLOCKS.values(),
+				self.STATEMENT_SIMPLE_BLOCKS.values(),
+				self.STATEMENT_COMPOUND_BLOCKS.values()
+			)},
+			{CommentGroup:    [],
+			 WhitespaceGroup: [],
+			 ReturnTypeGroup:  []
+			 }
+		))
+
+	@classmethod
+	def stateParse(cls, parserState: BlockToGroupParser):
+		currentBlock = parserState.Block
+
+		# consume OpenBlock
+		if isinstance(currentBlock, Function.NameBlock):
+			parserState.NextGroup =   cls(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			parserState.NextState =   cls.stateParseGenerics
+			return
+		else:
+			raise GroupParserException("Begin of function expected.", currentBlock)
+
+	@classmethod
+	def stateParseGenerics(cls, parserState: BlockToGroupParser):
+		currentBlock = parserState.Block
+
+		if isinstance(currentBlock, GenericList.OpenBlock):
+			parserState.NextState =   cls.stateParseParameters
+			parserState.PushState =   GenericListGroup.stateParse
+			parserState.NextGroup =   GenericListGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		elif isinstance(currentBlock, ParameterList.OpenBlock):
+			parserState.NextState =   cls.stateParseDeclarations
+			parserState.PushState =   ParameterListGroup.stateParse
+			parserState.NextGroup =   ParameterListGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		elif isinstance(currentBlock, Function.ReturnTypeBlock):
+			if isinstance(currentBlock.EndToken, EndToken):
+				parserState.Pop()
+			else:
+				parserState.NextState =   cls.stateParse2
+				return True
+		elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)):
+			parserState.PushState =   WhitespaceGroup.stateParse
+			parserState.NextGroup =   WhitespaceGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		elif isinstance(currentBlock, CommentBlock):
+			parserState.PushState =   CommentGroup.stateParse
+			parserState.NextGroup =   CommentGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+
+		if isinstance(currentBlock, EndOfDocumentBlock):
+			parserState.NextGroup = EndOfDocumentGroup(currentBlock)
+			return
+
+		raise GroupParserException("End of generic clause not found.", currentBlock)
+
+	@classmethod
+	def stateParseParameters(cls, parserState: BlockToGroupParser):
+		currentBlock = parserState.Block
+
+		if isinstance(currentBlock, GenericList.OpenBlock):
+			parserState.NextState =   cls.stateParse2
+			parserState.PushState =   ParameterListGroup.stateParse
+			parserState.NextGroup =   ParameterListGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)):
+			parserState.PushState =   WhitespaceGroup.stateParse
+			parserState.NextGroup =   WhitespaceGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		elif isinstance(currentBlock, CommentBlock):
+			parserState.PushState =   CommentGroup.stateParse
+			parserState.NextGroup =   CommentGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+
+		if isinstance(currentBlock, EndOfDocumentBlock):
+			parserState.NextGroup = EndOfDocumentGroup(currentBlock)
+			return
+
+		raise GroupParserException("End of parameters not found.", currentBlock)
+
+	# FIXME move to FunctionGroup2 as stateParse
+	@classmethod
+	def stateParse2(cls, parserState: BlockToGroupParser):
+		currentBlock = parserState.Block
+
+		# consume OpenBlock
+		if isinstance(currentBlock, Function.ReturnTypeBlock):
+			parserState.NextState =   cls.stateParseDeclarations
+			parserState.PushState =   cls.stateParse2
+			parserState.NextGroup =   ReturnTypeGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return
+		else:
+			parserState.Pop()
+			return True
+
+	@classmethod
+	def stateParseDeclarations(cls, parserState: BlockToGroupParser):
+		currentBlock = parserState.Block
+
+		if isinstance(currentBlock, Function.BeginBlock):
+			parserState.NextState =   cls.stateParseStatements
+			return
+		elif isinstance(currentBlock, Function.EndBlock):
+			parserState.NextGroup =   cls(parserState.LastGroup, parserState.BlockMarker, parserState.Block)
+			parserState.Pop()
+			parserState.BlockMarker = None
+			return
+		elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)):
+			parserState.PushState =   WhitespaceGroup.stateParse
+			parserState.NextGroup =   WhitespaceGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		elif isinstance(currentBlock, CommentBlock):
+			parserState.PushState =   CommentGroup.stateParse
+			parserState.NextGroup =   CommentGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		else:
+			for block in cls.DECLARATION_SIMPLE_BLOCKS:
+				if isinstance(currentBlock, block):
+					group = cls.DECLARATION_SIMPLE_BLOCKS[block]
+					parserState.PushState =   group.stateParse
+					parserState.BlockMarker = currentBlock
+					return True
+
+			for block in cls.DECLARATION_COMPOUND_BLOCKS:
+				if isinstance(currentBlock, block):
+					group =                   cls.DECLARATION_COMPOUND_BLOCKS[block]
+					parserState.PushState =   group.stateParse
+					parserState.BlockMarker = currentBlock
+					return True
+
+		if isinstance(currentBlock, EndOfDocumentBlock):
+			parserState.NextGroup = EndOfDocumentGroup(currentBlock)
+			return
+
+		raise GroupParserException("End of function declarative region not found.", currentBlock)
+
+	@classmethod
+	def stateParseStatements(cls, parserState: BlockToGroupParser):
+		currentBlock = parserState.Block
+
+		if isinstance(currentBlock, Function.EndBlock):
+			# parserState.NextGroup =   cls(parserState.LastGroup, parserState.BlockMarker, parserState.Block)
+			parserState.Pop()
+			return
+		elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)):
+			parserState.PushState =   WhitespaceGroup.stateParse
+			parserState.NextGroup =   WhitespaceGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		elif isinstance(currentBlock, CommentBlock):
+			parserState.PushState =   CommentGroup.stateParse
+			parserState.NextGroup =   CommentGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		else:
+			for block in cls.STATEMENT_SIMPLE_BLOCKS:
+				if isinstance(currentBlock, block):
+					group = cls.STATEMENT_SIMPLE_BLOCKS[block]
+					parserState.PushState =   group.stateParse
+					parserState.BlockMarker = currentBlock
+					return True
+
+			for block in cls.STATEMENT_COMPOUND_BLOCKS:
+				if isinstance(currentBlock, block):
+					group =                   cls.STATEMENT_COMPOUND_BLOCKS[block]
+					parserState.PushState =   group.stateParse
+					parserState.BlockMarker = currentBlock
+					return True
+
+		if isinstance(currentBlock, EndOfDocumentBlock):
+			parserState.NextGroup = EndOfDocumentGroup(currentBlock)
+			return
+
+		raise GroupParserException("End of function declaration not found.", currentBlock)
+
+
+@export
+class ReturnTypeGroup(Group):
+	pass
+
+ + diff --git a/typing/html/pyVHDLParser/Groups/Sequential/Procedure.py.html b/typing/html/pyVHDLParser/Groups/Sequential/Procedure.py.html new file mode 100644 index 000000000..8e96a09de --- /dev/null +++ b/typing/html/pyVHDLParser/Groups/Sequential/Procedure.py.html @@ -0,0 +1,558 @@ + + + + + + +

pyVHDLParser.Groups.Sequential.Procedure

+ + + + + + +
pyVHDLParser/Groups/Sequential/Procedure.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from collections                          import ChainMap
+from itertools                            import chain
+
+from pyTooling.Decorators                 import export
+
+from pyVHDLParser.Blocks                  import CommentBlock, EndOfDocumentBlock
+from pyVHDLParser.Blocks.Common           import LinebreakBlock, IndentationBlock
+from pyVHDLParser.Blocks.List             import GenericList, ParameterList
+from pyVHDLParser.Blocks.Object.Variable  import VariableDeclarationBlock
+from pyVHDLParser.Blocks.Object.Constant  import ConstantDeclarationBlock
+from pyVHDLParser.Blocks.Reference        import Use
+from pyVHDLParser.Blocks.Reporting.Report import ReportBlock
+from pyVHDLParser.Blocks.Sequential       import Procedure
+from pyVHDLParser.Groups                  import BlockToGroupParser, Group, GroupParserException, EndOfDocumentGroup
+from pyVHDLParser.Groups.Comment          import WhitespaceGroup, CommentGroup
+from pyVHDLParser.Groups.List             import GenericListGroup, ParameterListGroup
+from pyVHDLParser.Groups.Object           import ConstantGroup, VariableGroup
+from pyVHDLParser.Groups.Reference        import UseGroup
+
+
+@export
+class ProcedureGroup(Group):
+	DECLARATION_SIMPLE_BLOCKS = {
+		Use.StartBlock:           UseGroup,
+		ConstantDeclarationBlock: ConstantGroup,
+		VariableDeclarationBlock: VariableGroup
+	}
+	DECLARATION_COMPOUND_BLOCKS = {
+		# Procedure.NameBlock:       ProcedureGroup,
+		# Procedure.NameBlock:      ProcedureGroup
+	}
+	STATEMENT_SIMPLE_BLOCKS = {
+		# ReportBlock:              ReportGroup
+	}
+	STATEMENT_COMPOUND_BLOCKS = {
+		# If.OpenBlock:        IfGroup
+	}
+
+	def __init__(self, previousGroup, startBlock, endBlock=None):
+		super().__init__(previousGroup, startBlock, endBlock)
+
+		self._subGroups = dict(ChainMap(
+			{v: [] for v in chain(
+				self.DECLARATION_SIMPLE_BLOCKS.values(),
+				self.DECLARATION_COMPOUND_BLOCKS.values(),
+				self.STATEMENT_SIMPLE_BLOCKS.values(),
+				self.STATEMENT_COMPOUND_BLOCKS.values()
+			)},
+			{CommentGroup: [],
+			 WhitespaceGroup: []
+			 }
+		))
+
+	@classmethod
+	def stateParse(cls, parserState: BlockToGroupParser):
+		currentBlock = parserState.Block
+
+		# consume OpenBlock
+		if isinstance(currentBlock, Procedure.NameBlock):
+			parserState.NextGroup =   cls(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			parserState.NextState =   cls.stateParseGenerics
+			return
+		else:
+			raise GroupParserException("Begin of procedure expected.", currentBlock)
+
+	@classmethod
+	def stateParseGenerics(cls, parserState: BlockToGroupParser):
+		currentBlock = parserState.Block
+
+		if isinstance(currentBlock, GenericList.OpenBlock):
+			parserState.NextState =   cls.stateParseParameters
+			parserState.PushState =   GenericListGroup.stateParse
+			parserState.NextGroup =   GenericListGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		elif isinstance(currentBlock, ParameterList.OpenBlock):
+			parserState.NextState =   cls.stateParseDeclarations
+			parserState.PushState =   ParameterListGroup.stateParse
+			parserState.NextGroup =   ParameterListGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		elif isinstance(currentBlock, Procedure.VoidBlock):
+			parserState.NextState =   cls.stateParseDeclarations
+			return
+		elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)):
+			parserState.PushState =   WhitespaceGroup.stateParse
+			parserState.NextGroup =   WhitespaceGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		elif isinstance(currentBlock, CommentBlock):
+			parserState.PushState =   CommentGroup.stateParse
+			parserState.NextGroup =   CommentGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+
+		if isinstance(currentBlock, EndOfDocumentBlock):
+			parserState.NextGroup = EndOfDocumentGroup(currentBlock)
+			return
+
+		raise GroupParserException("End of generic clause not found.", currentBlock)
+
+
+	@classmethod
+	def stateParseParameters(cls, parserState: BlockToGroupParser):
+		currentBlock = parserState.Block
+
+		if isinstance(currentBlock, GenericList.OpenBlock):
+			parserState.NextState =   cls.stateParseDeclarations
+			parserState.PushState =   ParameterListGroup.stateParse
+			parserState.NextGroup =   ParameterListGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)):
+			parserState.PushState =   WhitespaceGroup.stateParse
+			parserState.NextGroup =   WhitespaceGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		elif isinstance(currentBlock, CommentBlock):
+			parserState.PushState =   CommentGroup.stateParse
+			parserState.NextGroup =   CommentGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+
+		if isinstance(currentBlock, EndOfDocumentBlock):
+			parserState.NextGroup = EndOfDocumentGroup(currentBlock)
+			return
+
+		raise GroupParserException("End of parameters not found.", currentBlock)
+
+	@classmethod
+	def stateParseDeclarations(cls, parserState: BlockToGroupParser):
+		currentBlock = parserState.Block
+
+		if isinstance(currentBlock, Procedure.BeginBlock):
+			parserState.NextState =   cls.stateParseStatements
+			return
+		elif isinstance(currentBlock, Procedure.EndBlock):
+			parserState.NextGroup =   cls(parserState.LastGroup, parserState.BlockMarker, parserState.Block)
+			parserState.Pop()
+			parserState.BlockMarker = None
+			return
+		elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)):
+			parserState.PushState =   WhitespaceGroup.stateParse
+			parserState.NextGroup =   WhitespaceGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		elif isinstance(currentBlock, CommentBlock):
+			parserState.PushState =   CommentGroup.stateParse
+			parserState.NextGroup =   CommentGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		else:
+			for block in cls.DECLARATION_SIMPLE_BLOCKS:
+				if isinstance(currentBlock, block):
+					group = cls.DECLARATION_SIMPLE_BLOCKS[block]
+					parserState.PushState =   group.stateParse
+					parserState.BlockMarker = currentBlock
+					return True
+
+			for block in cls.DECLARATION_COMPOUND_BLOCKS:
+				if isinstance(currentBlock, block):
+					group =                   cls.DECLARATION_COMPOUND_BLOCKS[block]
+					parserState.PushState =   group.stateParse
+					parserState.BlockMarker = currentBlock
+					return True
+
+		if isinstance(currentBlock, EndOfDocumentBlock):
+			parserState.NextGroup = EndOfDocumentGroup(currentBlock)
+			return
+
+		raise GroupParserException("End of procedure declarative region not found.", currentBlock)
+
+	@classmethod
+	def stateParseStatements(cls, parserState: BlockToGroupParser):
+		currentBlock = parserState.Block
+
+		if isinstance(currentBlock, Procedure.EndBlock):
+			parserState.NextGroup =   cls(parserState.LastGroup, parserState.BlockMarker, parserState.Block)
+			parserState.Pop()
+			parserState.BlockMarker = None
+			return
+		elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)):
+			parserState.PushState =   WhitespaceGroup.stateParse
+			parserState.NextGroup =   WhitespaceGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		elif isinstance(currentBlock, CommentBlock):
+			parserState.PushState =   CommentGroup.stateParse
+			parserState.NextGroup =   CommentGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		else:
+			for block in cls.STATEMENT_SIMPLE_BLOCKS:
+				if isinstance(currentBlock, block):
+					group = cls.STATEMENT_SIMPLE_BLOCKS[block]
+					parserState.PushState =   group.stateParse
+					parserState.BlockMarker = currentBlock
+					return True
+
+			for block in cls.STATEMENT_COMPOUND_BLOCKS:
+				if isinstance(currentBlock, block):
+					group =                   cls.STATEMENT_COMPOUND_BLOCKS[block]
+					parserState.PushState =   group.stateParse
+					parserState.BlockMarker = currentBlock
+					return True
+
+		if isinstance(currentBlock, EndOfDocumentBlock):
+			parserState.NextGroup = EndOfDocumentGroup(currentBlock)
+			return
+
+		raise GroupParserException("End of procedure declaration not found.", currentBlock)
+
+ + diff --git a/typing/html/pyVHDLParser/Groups/Sequential/Process.py.html b/typing/html/pyVHDLParser/Groups/Sequential/Process.py.html new file mode 100644 index 000000000..199241123 --- /dev/null +++ b/typing/html/pyVHDLParser/Groups/Sequential/Process.py.html @@ -0,0 +1,734 @@ + + + + + + +

pyVHDLParser.Groups.Sequential.Process

+ + + + + + +
pyVHDLParser/Groups/Sequential/Process.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from collections                          import ChainMap
+from itertools                            import chain
+
+from pyTooling.Decorators                 import export
+
+from pyVHDLParser.Blocks                  import CommentBlock, EndOfDocumentBlock
+from pyVHDLParser.Blocks.Common           import LinebreakBlock, IndentationBlock
+from pyVHDLParser.Blocks.List             import SensitivityList, GenericList, ParameterList
+from pyVHDLParser.Blocks.Object.Variable  import VariableDeclarationBlock
+from pyVHDLParser.Blocks.Object.Constant  import ConstantDeclarationBlock
+from pyVHDLParser.Blocks.Reference        import Use
+from pyVHDLParser.Blocks.Reporting.Report import ReportBlock
+from pyVHDLParser.Blocks.Sequential       import Process
+from pyVHDLParser.Groups                  import BlockToGroupParser, Group, GroupParserException, EndOfDocumentGroup
+from pyVHDLParser.Groups.Comment          import WhitespaceGroup, CommentGroup
+from pyVHDLParser.Groups.List             import GenericListGroup, ParameterListGroup, SensitivityListGroup
+from pyVHDLParser.Groups.Object           import ConstantGroup, VariableGroup
+from pyVHDLParser.Groups.Reference        import UseGroup
+
+
+@export
+class ProcessGroup(Group):
+	DECLARATION_SIMPLE_BLOCKS = {
+		Use.StartBlock:           UseGroup,
+		ConstantDeclarationBlock: ConstantGroup,
+		VariableDeclarationBlock: VariableGroup
+	}
+	DECLARATION_COMPOUND_BLOCKS = {
+		# Process.NameBlock:       ProcessGroup,
+		# Procedure.NameBlock:      ProcedureGroup
+	}
+	STATEMENT_SIMPLE_BLOCKS = {
+		# ReportBlock:              ReportGroup
+	}
+	STATEMENT_COMPOUND_BLOCKS = {
+		# If.OpenBlock:        IfGroup
+	}
+
+	def __init__(self, previousGroup, startBlock, endBlock=None):
+		super().__init__(previousGroup, startBlock, endBlock)
+
+		self._subGroups = dict(ChainMap(
+			{v: [] for v in chain(
+				self.DECLARATION_SIMPLE_BLOCKS.values(),
+				self.DECLARATION_COMPOUND_BLOCKS.values(),
+				self.STATEMENT_SIMPLE_BLOCKS.values(),
+				self.STATEMENT_COMPOUND_BLOCKS.values()
+			)},
+			{CommentGroup: [],
+			 WhitespaceGroup: []
+			 }
+		))
+
+	@classmethod
+	def stateParse(cls, parserState: BlockToGroupParser):
+		currentBlock = parserState.Block
+
+		# consume OpenBlock
+		if isinstance(currentBlock, Process.OpenBlock):
+			parserState.NextGroup =   cls(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			parserState.NextState =   cls.stateParseSensitivityList
+			return
+		else:
+			raise GroupParserException("Begin of process expected.", currentBlock)
+
+	@classmethod
+	def stateParseSensitivityList(cls, parserState: BlockToGroupParser):
+		currentBlock = parserState.Block
+
+		if isinstance(currentBlock, SensitivityList.OpenBlock):
+			parserState.NextState =   cls.stateParseDeclarations
+			parserState.PushState =   SensitivityListGroup.stateParse
+			parserState.NextGroup =   SensitivityListGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)):
+			parserState.PushState =   WhitespaceGroup.stateParse
+			parserState.NextGroup =   WhitespaceGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		elif isinstance(currentBlock, CommentBlock):
+			parserState.PushState =   CommentGroup.stateParse
+			parserState.NextGroup =   CommentGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+
+		if isinstance(currentBlock, EndOfDocumentBlock):
+			parserState.NextGroup = EndOfDocumentGroup(currentBlock)
+			return
+
+		raise GroupParserException("End of process sensitivity list not found.", currentBlock)
+
+	@classmethod
+	def stateParseDeclarations(cls, parserState: BlockToGroupParser):
+		currentBlock = parserState.Block
+
+		if isinstance(currentBlock, Process.BeginBlock):
+			parserState.NextState =   cls.stateParseStatements
+			return
+		elif isinstance(currentBlock, Process.EndBlock):
+			parserState.NextGroup =   cls(parserState.LastGroup, parserState.BlockMarker, parserState.Block)
+			parserState.Pop()
+			parserState.BlockMarker = None
+			return
+		elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)):
+			parserState.PushState =   WhitespaceGroup.stateParse
+			parserState.NextGroup =   WhitespaceGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		elif isinstance(currentBlock, CommentBlock):
+			parserState.PushState =   CommentGroup.stateParse
+			parserState.NextGroup =   CommentGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		else:
+			for block in cls.DECLARATION_SIMPLE_BLOCKS:
+				if isinstance(currentBlock, block):
+					group = cls.DECLARATION_SIMPLE_BLOCKS[block]
+					parserState.PushState =   group.stateParse
+					parserState.BlockMarker = currentBlock
+					return True
+
+			for block in cls.DECLARATION_COMPOUND_BLOCKS:
+				if isinstance(currentBlock, block):
+					group =                   cls.DECLARATION_COMPOUND_BLOCKS[block]
+					parserState.PushState =   group.stateParse
+					parserState.BlockMarker = currentBlock
+					return True
+
+		if isinstance(currentBlock, EndOfDocumentBlock):
+			parserState.NextGroup = EndOfDocumentGroup(currentBlock)
+			return
+
+		raise GroupParserException("End of process declarative region not found.", currentBlock)
+
+	@classmethod
+	def stateParseStatements(cls, parserState: BlockToGroupParser):
+		currentBlock = parserState.Block
+
+		if isinstance(currentBlock, Process.EndBlock):
+			parserState.NextGroup =   cls(parserState.LastGroup, parserState.BlockMarker, parserState.Block)
+			parserState.Pop()
+			parserState.BlockMarker = None
+			return
+		elif isinstance(currentBlock, (LinebreakBlock, IndentationBlock)):
+			parserState.PushState =   WhitespaceGroup.stateParse
+			parserState.NextGroup =   WhitespaceGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		elif isinstance(currentBlock, CommentBlock):
+			parserState.PushState =   CommentGroup.stateParse
+			parserState.NextGroup =   CommentGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		else:
+			for block in cls.STATEMENT_SIMPLE_BLOCKS:
+				if isinstance(currentBlock, block):
+					group = cls.STATEMENT_SIMPLE_BLOCKS[block]
+					parserState.PushState =   group.stateParse
+					parserState.BlockMarker = currentBlock
+					return True
+
+			for block in cls.STATEMENT_COMPOUND_BLOCKS:
+				if isinstance(currentBlock, block):
+					group =                   cls.STATEMENT_COMPOUND_BLOCKS[block]
+					parserState.PushState =   group.stateParse
+					parserState.BlockMarker = currentBlock
+					return True
+
+		if isinstance(currentBlock, EndOfDocumentBlock):
+			parserState.NextGroup = EndOfDocumentGroup(currentBlock)
+			return
+
+		raise GroupParserException("End of process declaration not found.", currentBlock)
+
+
+
+@export
+class IfGroup(Group):
+	@classmethod
+	def stateParse(cls, parserState: BlockToGroupParser):
+		block = parserState.Block
+
+		raise NotImplementedError("State=Parse: {0!r}".format(block))
+
+
+@export
+class IfBranchGroup(Group):
+	@classmethod
+	def stateParse(cls, parserState: BlockToGroupParser):
+		block = parserState.Block
+
+		raise NotImplementedError("State=Parse: {0!r}".format(block))
+
+
+@export
+class ElsIfBranchGroup(Group):
+	@classmethod
+	def stateParse(cls, parserState: BlockToGroupParser):
+		block = parserState.Block
+
+		raise NotImplementedError("State=Parse: {0!r}".format(block))
+
+
+@export
+class ElseBranchGroup(Group):
+	@classmethod
+	def stateParse(cls, parserState: BlockToGroupParser):
+		block = parserState.Block
+
+		raise NotImplementedError("State=Parse: {0!r}".format(block))
+
+
+@export
+class CaseGroup(Group):
+	@classmethod
+	def stateParse(cls, parserState: BlockToGroupParser):
+		block = parserState.Block
+
+		raise NotImplementedError("State=Parse: {0!r}".format(block))
+
+
+@export
+class ChoiceGroup(Group):
+	@classmethod
+	def stateParse(cls, parserState: BlockToGroupParser):
+		block = parserState.Block
+
+		raise NotImplementedError("State=Parse: {0!r}".format(block))
+
+
+@export
+class ForLoopGroup(Group):
+	@classmethod
+	def stateParse(cls, parserState: BlockToGroupParser):
+		block = parserState.Block
+
+		raise NotImplementedError("State=Parse: {0!r}".format(block))
+
+
+@export
+class WhileLoopGroup(Group):
+	@classmethod
+	def stateParse(cls, parserState: BlockToGroupParser):
+		block = parserState.Block
+
+		raise NotImplementedError("State=Parse: {0!r}".format(block))
+
+
+@export
+class NextGroup(Group):
+	@classmethod
+	def stateParse(cls, parserState: BlockToGroupParser):
+		block = parserState.Block
+
+		raise NotImplementedError("State=Parse: {0!r}".format(block))
+
+
+@export
+class ExitGroup(Group):
+	@classmethod
+	def stateParse(cls, parserState: BlockToGroupParser):
+		block = parserState.Block
+
+		raise NotImplementedError("State=Parse: {0!r}".format(block))
+
+
+@export
+class ReturnGroup(Group):
+	@classmethod
+	def stateParse(cls, parserState: BlockToGroupParser):
+		block = parserState.Block
+
+		raise NotImplementedError("State=Parse: {0!r}".format(block))
+
+
+@export
+class VariableAssignmentGroup(Group):
+	@classmethod
+	def stateParse(cls, parserState: BlockToGroupParser):
+		block = parserState.Block
+
+		raise NotImplementedError("State=Parse: {0!r}".format(block))
+
+
+@export
+class SignalAssignmentGroup(Group):
+	@classmethod
+	def stateParse(cls, parserState: BlockToGroupParser):
+		block = parserState.Block
+
+		raise NotImplementedError("State=Parse: {0!r}".format(block))
+
+ + diff --git a/typing/html/pyVHDLParser/Groups/Sequential/__init__.py.html b/typing/html/pyVHDLParser/Groups/Sequential/__init__.py.html new file mode 100644 index 000000000..7015f7e64 --- /dev/null +++ b/typing/html/pyVHDLParser/Groups/Sequential/__init__.py.html @@ -0,0 +1,74 @@ + + + + + + +

pyVHDLParser.Groups.Sequential

+ + + + + + +
pyVHDLParser/Groups/Sequential/__init__.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+
+ + diff --git a/typing/html/pyVHDLParser/Groups/__init__.py.html b/typing/html/pyVHDLParser/Groups/__init__.py.html new file mode 100644 index 000000000..d3ac7e69e --- /dev/null +++ b/typing/html/pyVHDLParser/Groups/__init__.py.html @@ -0,0 +1,1012 @@ + + + + + + +

pyVHDLParser.Groups

+ + + + + + +
pyVHDLParser/Groups/__init__.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+380
+381
+382
+383
+384
+385
+386
+387
+388
+389
+390
+391
+392
+393
+394
+395
+396
+397
+398
+399
+400
+401
+402
+403
+404
+405
+406
+407
+408
+409
+410
+411
+412
+413
+414
+415
+416
+417
+418
+419
+420
+421
+422
+423
+424
+425
+426
+427
+428
+429
+430
+431
+432
+433
+434
+435
+436
+437
+438
+439
+440
+441
+442
+443
+444
+445
+446
+447
+448
+449
+450
+451
+452
+453
+454
+455
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from types                                  import FunctionType
+from typing import Iterator, Callable, List, Generator, Any, Dict, Tuple
+
+from pyTooling.MetaClasses import ExtendedType
+from pyTooling.TerminalUI                   import LineTerminal
+
+from pyTooling.Decorators                   import export
+
+from pyVHDLParser                           import StartOfDocument, EndOfDocument, StartOfSnippet, EndOfSnippet
+from pyVHDLParser.Base                      import ParserException
+from pyVHDLParser.Blocks                    import Block, CommentBlock, StartOfDocumentBlock, EndOfDocumentBlock
+from pyVHDLParser.Blocks.Common             import LinebreakBlock, IndentationBlock
+from pyVHDLParser.Blocks.Reference          import Context, Library, Use
+from pyVHDLParser.Blocks.Sequential         import Package, PackageBody
+from pyVHDLParser.Blocks.Structural         import Entity, Architecture, Configuration
+
+
+@export
+class GroupParserException(ParserException):
+	def __init__(self, message: str, block: Block):
+		super().__init__(message)
+		self._block = block
+
+
+# @export
+# class BlockToGroupParser:
+# 	"""Wrapping class to offer some class methods."""
+#
+# 	@staticmethod
+# 	def Transform(blockGenerator: Generator[Block, Any, None]) -> Generator['Group', Any, None]:
+# 		"""Returns a generator, that reads from a token generator and emits a chain of blocks."""
+#
+# 		state = ParserState(blockGenerator)
+# 		return state.GetGenerator()
+
+
+@export
+class BlockIterator:
+	def __init__(self, parserState, blockGenerator: Iterator):
+		self._parserState: BlockToGroupParser = parserState
+		#self._blockIterator             = iter(FastForward(groupGenerator))
+		self._blockIterator             = iter(blockGenerator)
+
+	def __iter__(self) -> 'BlockIterator':
+		return self
+
+	def __next__(self) -> 'Block':
+		nextBlock = self._blockIterator.__next__()
+		self._parserState.Block = nextBlock
+		return nextBlock
+
+
+@export
+class BlockToGroupParser(metaclass=ExtendedType, useSlots=True):
+	"""Represents the current state of a block-to-group parser."""
+
+	_iterator:    Iterator
+	_stack:       List[Tuple[Callable[['BlockToGroupParser'], bool], Block, 'Group']]
+	_blockMarker: Block
+
+	Block:        Block
+	NextState:    Callable[['BlockToGroupParser'], bool]
+
+	NewBlock:     Block
+	NewGroup:     'Group'
+	LastGroup:    'Group'
+	NextGroup:    'Group'
+
+	def __init__(self, blockGenerator: Generator[Block, Any, None]):
+		"""Initializes the parser state."""
+
+		self._iterator =    iter(BlockIterator(self, blockGenerator))   # XXX: review iterator vs. generator
+		self._stack =       []
+		self._blockMarker = None
+
+		startBlock =        next(self._iterator)
+		startGroup =        StartOfDocumentGroup(startBlock)
+
+		if not isinstance(startBlock, StartOfDocumentBlock):
+			raise GroupParserException("First block is not a StartOfDocumentBlock.", startBlock)
+
+		self.Block =        None
+		self.NextState =    StartOfDocumentGroup.stateDocument
+		self.NewBlock =     None
+		self.NewGroup =     None
+		self.LastGroup =    None
+		self.NextGroup =    startGroup
+
+	@property
+	def PushState(self) -> Callable[['BlockToGroupParser'], bool]:
+		return self.NextState
+
+	@PushState.setter
+	def PushState(self, value: Callable[['BlockToGroupParser'], bool]):
+		assert (self.NextGroup is not None)
+		self._stack.append((
+			self.NextState,
+			self._blockMarker,
+			self.NextGroup
+		))
+		self.NextState =    value
+		self._blockMarker = None
+		self.NextGroup =    None
+
+	@property
+	def GetBlockIterator(self):    # FIXME: what return type?
+		return self._iterator
+
+	# XXX: implement this method
+	# def __iter__(self):
+	# 	return self._iterator
+
+	# def __iter__(self):
+	# 	if self.Block.MultiPart:
+	# 		return iter(BlockToGroupParser._TokenGenerator(self.Block, self.BlockIterator))
+	# 	else:
+	# 		return iter(self.Block)
+
+	@property
+	def BlockMarker(self) -> 'Block':
+		if (self.NewBlock is not None) and (self._blockMarker is self.Block):
+			# if self.debug: print("  {DARK_GREEN}@BlockMarker: {0!s} => {GREEN}{1!s}{NOCOLOR}".format(self._blockMarker, self.NewBlock, **Console.Foreground))
+			self._blockMarker = self.NewBlock
+		return self._blockMarker
+
+	@BlockMarker.setter
+	def BlockMarker(self, value: Block):
+		# if self.debug: print("  {DARK_GREEN}@BlockMarker: {0!s} --> {GREEN}{1!s}{NOCOLOR}".format(self._blockMarker, value, **Console.Foreground))
+		self._blockMarker = value
+
+	def __eq__(self, other: Callable[['ParserState'], bool]) -> bool:
+		"""Return true if parser state is equal to the second operand."""
+		return self.NextState is other
+
+	def __ne__(self, other: Callable[['ParserState'], bool]) -> bool:
+		"""Return true if parser state is not equal to the second operand."""
+		return self.NextState is not other
+
+	def __str__(self) -> str:
+		return self.NextState.__func__.__qualname__
+
+	def Pop(self, n: int = 1) -> None:
+		self.NewGroup = self.NextGroup
+
+		for i in range(n):
+			top = self._stack.pop()
+		self.NextState, self._blockMarker, self.NextGroup = top
+
+		# print("{MAGENTA}appending {0!s} to {1!s}{NOCOLOR}".format(self.NewGroup.__class__.__qualname__, self.NextGroup.__class__,**Console.Foreground))
+		if self.NextGroup.InnerGroup is None:
+			self.NextGroup.InnerGroup = self.NewGroup
+		if self.NewGroup.__class__ not in self.NextGroup._subGroups:
+			raise GroupParserException("Group '{group1}' not supported in {group2}.".format(
+				group1=self.NewGroup.__class__,
+				group2=self.NextGroup.__class__.__qualname__
+			), self.Block)
+
+		self.NextGroup._subGroups[self.NewGroup.__class__].append(self.NewGroup)
+
+	def __call__(self) -> Generator['Group', None, None]:
+		# yield StartOfDocumentGroup
+		self.LastGroup = self.NextGroup
+		yield self.LastGroup
+
+		for block in self._iterator:
+			# an empty marker means: set on next yield run
+			if self._blockMarker is None:
+				# if self.debug: print("  new block marker: None -> {0!s}".format(block))
+				self._blockMarker = block
+
+			# if self.debug: print("{MAGENTA}------ iteration end ------{NOCOLOR}".format(**Console.Foreground))
+			# execute a state and reissue execution if needed
+			reissue = True
+			while reissue:
+				LineTerminal().WriteDryRun("{DARK_GRAY}reissue state={state!s: <50}  block={block!s: <40}     {NOCOLOR}".format(state=self, block=self.Block, **LineTerminal.Foreground))
+				reissue = self.NextState(self)
+
+				# yield a new group
+				if self.NewGroup is not None:
+					yield self.NewGroup
+					self.LastGroup = self.NewGroup
+					self.NewGroup = None
+
+					if isinstance(self.Block, EndOfDocumentBlock) and isinstance(self.LastGroup, EndOfDocumentGroup):
+						return
+
+		else:
+			raise GroupParserException("Unexpected end of document.", self.Block)
+
+
+@export
+class MetaGroup(ExtendedType):
+	"""Register all state*** methods in an array called '__STATES__'"""
+	def __new__(cls, className, baseClasses, classMembers: dict):
+		states = []
+		for memberName, memberObject in classMembers.items():
+			if isinstance(memberObject, FunctionType) and (memberName[:5] == "state"):
+				states.append(memberObject)
+
+		group = super().__new__(cls, className, baseClasses, classMembers, useSlots=True)
+		group.__STATES__ = states
+		return group
+
+
+@export
+class Group(metaclass=MetaGroup):
+	__STATES__ = None
+
+	_previousGroup:  'Group'                   #: Reference to the previous group.
+	NextGroup:       'Group'                   #: Reference to the next group.
+	InnerGroup:      'Group'                   #: Reference to the first inner group.
+	_subGroups:      Dict[MetaGroup, 'Group']  #: References to all inner groups by group type.
+
+	StartBlock:      Block                     #: Reference to the first block in the scope of this group.
+	EndBlock:        Block                     #: Reference to the last block in the scope of this group.
+	MultiPart:       bool                      #: True, if this group has multiple parts.
+
+	def __init__(self, previousGroup: 'Group', startBlock: Block, endBlock: Block=None):
+		previousGroup.NextGroup = self
+		self._previousGroup =     previousGroup
+		self.NextGroup =          None
+		self.InnerGroup =         None
+		self._subGroups =         {}
+
+		self.StartBlock =         startBlock
+		self.EndBlock =           startBlock if (endBlock is None) else endBlock
+		self.MultiPart =          False
+
+	def __len__(self) -> int:
+		return self.EndBlock.EndToken.End.Absolute - self.StartBlock.StartToken.Start.Absolute + 1
+
+	def __iter__(self):   # XXX: return type; iterator vs. generator
+		block = self.StartBlock
+		print("group={0}({1})  start={2!s}  end={3!s}".format(self.__class__.__name__, self.__class__.__module__, self.StartBlock.StartToken, self.EndBlock.EndToken))
+		while block is not self.EndBlock:
+			yield block
+			if block.NextBlock is None:
+				raise GroupParserException("Token after {0!r} <- {1!r} <- {2!r} is empty (None).".format(block, block.PreviousToken, block.PreviousToken.PreviousToken), block)
+			block = block.NextBlock
+
+		yield self.EndBlock
+
+	def __repr__(self) -> str:
+		buffer = "undefined block content"
+		# buffer = buffer.replace("\t", "\\t")
+		# buffer = buffer.replace("\n", "\\n")
+		return buffer
+
+	def __str__(self) -> str:
+		return "{{{groupName:.<156s}  at {start!s} .. {end!s}}}".format(
+			groupName="{module}.{classname}  ".format(
+				module=self.__module__.rpartition(".")[2],
+				classname=self.__class__.__name__
+			),
+			start=self.StartBlock.StartToken.Start,
+			end=self.EndBlock.EndToken.End
+		)
+
+	def GetSubGroups(self, groupTypes=None):  # XXX: return type
+		group = self.InnerGroup
+		while group is not None:
+			yield group
+			group = group.NextGroup
+
+	@property
+	def PreviousGroup(self) -> 'Group':
+		return self._previousGroup
+	@PreviousGroup.setter
+	def PreviousGroup(self, value: 'Group'):
+		self._previousGroup = value
+		value.NextGroup = self
+
+	@property
+	def Length(self) -> int:
+		return len(self)
+
+	@property
+	def States(self) -> List[Callable]:
+		return self.__STATES__
+
+
+@export
+class StartOfGroup(Group):
+	def __init__(self, startBlock: Block):
+		self._previousGroup = None
+		self.NextGroup =      None
+		self.InnerGroup =     None
+		self._subGroups =     {}
+
+		self.StartBlock =     startBlock
+		self.EndBlock =       None
+		self.MultiPart =      False
+
+	# TODO: needs review: should TokenIterator be used?
+	def __iter__(self):
+		yield self.StartBlock
+
+	def __len__(self) -> int:
+		return 0
+
+	def __str__(self) -> str:
+		return "{{{groupName:.<156s}  at {start!s}}}".format(
+			groupName="{module}.{classname}  ".format(
+				module=self.__module__.rpartition(".")[2],
+				classname=self.__class__.__name__
+			),
+			start=self.StartBlock.StartToken.Start
+		)
+
+
+@export
+class EndOfGroup(Group):
+	def __init__(self, endBlock: Block):
+		self._previousGroup = None
+		self.NextGroup =      None
+		self.StartBlock =     None
+		self.EndBlock =       endBlock
+		self.MultiPart =      False
+
+	# TODO: needs review: should TokenIterator be used?
+	def __iter__(self):
+		yield self.EndBlock
+
+	def __len__(self) -> int:
+		return 0
+
+	def __str__(self) -> str:
+		return "{{{groupName:.<156s}  at                      .. {end!s}}}".format(
+			groupName="{module}.{classname}  ".format(
+				module=self.__module__.rpartition(".")[2],
+				classname=self.__class__.__name__
+			),
+			end=self.EndBlock.EndToken.Start
+		)
+
+
+@export
+class StartOfDocumentGroup(StartOfGroup, StartOfDocument):
+	def __init__(self, startBlock: Block):
+		from pyVHDLParser.Groups.Comment      import CommentGroup, WhitespaceGroup
+		from pyVHDLParser.Groups.DesignUnit   import ContextGroup, EntityGroup, ArchitectureGroup, PackageGroup, PackageBodyGroup, ConfigurationGroup
+		from pyVHDLParser.Groups.Reference    import LibraryGroup, UseGroup
+
+		super().__init__(startBlock)
+
+		self._subGroups = {
+			CommentGroup:       [],
+			WhitespaceGroup:    [],
+			LibraryGroup:       [],
+			UseGroup:           [],
+			ContextGroup:       [],
+			EntityGroup:        [],
+			ArchitectureGroup:  [],
+			PackageGroup:       [],
+			PackageBodyGroup:   [],
+			ConfigurationGroup: []
+		}
+
+	@classmethod
+	def stateDocument(cls, parserState: BlockToGroupParser):
+		from pyVHDLParser.Groups.DesignUnit     import ContextGroup, EntityGroup, ArchitectureGroup, PackageGroup, PackageBodyGroup, ConfigurationGroup
+		from pyVHDLParser.Groups.Reference      import LibraryGroup, UseGroup
+		from pyVHDLParser.Groups.Comment import CommentGroup, WhitespaceGroup
+
+		SIMPLE_BLOCKS = {
+			Library.StartBlock:       LibraryGroup,
+			Use.StartBlock:           UseGroup
+		}
+		COMPOUND_BLOCKS = {
+			Context.NameBlock:        ContextGroup,
+			Entity.NameBlock:         EntityGroup,
+			Architecture.NameBlock:   ArchitectureGroup,
+			Package.NameBlock:        PackageGroup,
+			PackageBody.NameBlock:    PackageBodyGroup,
+			Configuration.NameBlock:  ConfigurationGroup
+		}
+
+		currentBlock = parserState.Block
+
+		if isinstance(currentBlock, (LinebreakBlock, IndentationBlock)):
+			parserState.PushState =   WhitespaceGroup.stateParse
+			parserState.NextGroup =   WhitespaceGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		elif isinstance(currentBlock, CommentBlock):
+			parserState.PushState =   CommentGroup.stateParse
+			parserState.NextGroup =   CommentGroup(parserState.LastGroup, currentBlock)
+			parserState.BlockMarker = currentBlock
+			return True
+		else:
+			for blk in SIMPLE_BLOCKS:
+				if isinstance(currentBlock, blk):
+					group =                   SIMPLE_BLOCKS[blk]
+					parserState.PushState =   group.stateParse
+					parserState.NextGroup =   group(parserState.LastGroup, currentBlock)
+					parserState.BlockMarker = currentBlock
+					return True
+
+			for blk in COMPOUND_BLOCKS:
+				if isinstance(currentBlock, blk):
+					group =                   COMPOUND_BLOCKS[blk]
+					parserState.PushState =   group.stateParse
+					parserState.NextGroup =   group(parserState.LastGroup, currentBlock)
+					parserState.BlockMarker = currentBlock
+					return True
+
+			if isinstance(currentBlock, EndOfDocumentBlock):
+				parserState.NewGroup = EndOfDocumentGroup(currentBlock)
+				return
+
+		raise GroupParserException("Expected keywords: architecture, context, entity, library, package, use. Found '{block!s}'.".format(
+			block=currentBlock.__class__.__qualname__
+		), currentBlock)
+
+
+@export
+class EndOfDocumentGroup(EndOfGroup, EndOfDocument):
+	pass
+
+@export
+class StartOfSnippetGroup(StartOfGroup, StartOfSnippet):
+	pass
+
+@export
+class EndOfSnippetGroup(EndOfGroup, EndOfSnippet):
+	pass
+
+ + diff --git a/typing/html/pyVHDLParser/LanguageModel/DesignUnit.py.html b/typing/html/pyVHDLParser/LanguageModel/DesignUnit.py.html new file mode 100644 index 000000000..fcb149e3e --- /dev/null +++ b/typing/html/pyVHDLParser/LanguageModel/DesignUnit.py.html @@ -0,0 +1,152 @@ + + + + + + +

pyVHDLParser.LanguageModel.DesignUnit

+ + + + + + +
pyVHDLParser/LanguageModel/DesignUnit.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2022 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators import export
+
+from pyVHDLModel.DesignUnit import Context as ModelContext,	Entity as ModelEntity, Architecture as ModelArchitecture
+from pyVHDLModel.DesignUnit import Configuration as ModelConfiguration,	Package as ModelPackage, PackageBody as ModelPackageBody
+
+from ..Token import Token
+
+
+@export
+class Context(ModelContext):
+	pass
+
+
+@export
+class Entity(ModelEntity):
+	_startToken: Token
+
+
+@export
+class Architecture(ModelArchitecture):
+	pass
+
+
+@export
+class Configuration(ModelConfiguration):
+	pass
+
+
+@export
+class Package(ModelPackage):
+	pass
+
+
+@export
+class PackageBody(ModelPackageBody):
+	pass
+
+ + diff --git a/typing/html/pyVHDLParser/LanguageModel/Expression.py.html b/typing/html/pyVHDLParser/LanguageModel/Expression.py.html new file mode 100644 index 000000000..7f1d2a7a8 --- /dev/null +++ b/typing/html/pyVHDLParser/LanguageModel/Expression.py.html @@ -0,0 +1,88 @@ + + + + + + +

pyVHDLParser.LanguageModel.Expression

+ + + + + + +
pyVHDLParser/LanguageModel/Expression.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2022 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyVHDLModel.Expression import (
+	AndExpression as ModelAndExpression
+)
+
+
+class AndExpression(ModelAndExpression):
+	pass
+
+ + diff --git a/typing/html/pyVHDLParser/LanguageModel/InterfaceItem.py.html b/typing/html/pyVHDLParser/LanguageModel/InterfaceItem.py.html new file mode 100644 index 000000000..0e442bf46 --- /dev/null +++ b/typing/html/pyVHDLParser/LanguageModel/InterfaceItem.py.html @@ -0,0 +1,138 @@ + + + + + + +

pyVHDLParser.LanguageModel.InterfaceItem

+ + + + + + +
pyVHDLParser/LanguageModel/InterfaceItem.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2022 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyVHDLModel.Interface import (
+	GenericConstantInterfaceItem as ModelGenericConstantInterfaceItem,
+	GenericTypeInterfaceItem as ModelGenericTypeInterfaceItem,
+	GenericPackageInterfaceItem as ModelGenericPackageInterfaceItem,
+	GenericFunctionInterfaceItem as ModelGenericFunctionInterfaceItem,
+	GenericProcedureInterfaceItem as ModelGenericProcedureInterfaceItem,
+	PortSignalInterfaceItem as ModelPortSignalInterfaceItem
+)
+
+
+class GenericConstantInterfaceItem(ModelGenericConstantInterfaceItem):
+	pass
+
+
+class GenericTypeInterfaceItem(ModelGenericTypeInterfaceItem):
+	pass
+
+
+class GenericPackageInterfaceItem(ModelGenericPackageInterfaceItem):
+	pass
+
+
+class GenericFunctionInterfaceItem(ModelGenericFunctionInterfaceItem):
+	pass
+
+
+class GenericProcedureInterfaceItem(ModelGenericProcedureInterfaceItem):
+	pass
+
+
+class PortSignalInterfaceItem(ModelPortSignalInterfaceItem):
+	pass
+
+ + diff --git a/typing/html/pyVHDLParser/LanguageModel/Reference.py.html b/typing/html/pyVHDLParser/LanguageModel/Reference.py.html new file mode 100644 index 000000000..3ce9997fe --- /dev/null +++ b/typing/html/pyVHDLParser/LanguageModel/Reference.py.html @@ -0,0 +1,102 @@ + + + + + + +

pyVHDLParser.LanguageModel.Reference

+ + + + + + +
pyVHDLParser/LanguageModel/Reference.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2022 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyVHDLModel.DesignUnit import LibraryClause as ModelLibraryClause,	UseClause as ModelUseClause
+from pyVHDLModel.DesignUnit import ContextReference as ModelContextReference
+
+
+class LibraryClause(ModelLibraryClause):
+	pass
+
+
+class UseClause(ModelUseClause):
+	pass
+
+
+class ContextReference(ModelContextReference):
+	pass
+
+ + diff --git a/typing/html/pyVHDLParser/LanguageModel/__init__.py.html b/typing/html/pyVHDLParser/LanguageModel/__init__.py.html new file mode 100644 index 000000000..b7f4ef3eb --- /dev/null +++ b/typing/html/pyVHDLParser/LanguageModel/__init__.py.html @@ -0,0 +1,104 @@ + + + + + + +

pyVHDLParser.LanguageModel

+ + + + + + +
pyVHDLParser/LanguageModel/__init__.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pathlib import Path
+
+from pyVHDLModel        import Document as ModelDocument
+from pyVHDLParser.Token import StartOfDocumentToken, EndOfDocumentToken
+
+
+class Document(ModelDocument):
+	_startOfTokenStream: StartOfDocumentToken
+	_endOfTokenStream: EndOfDocumentToken
+
+	def __init__(self, path: Path, startOfTokenStream: StartOfDocumentToken, endOfTokenStream: EndOfDocumentToken):
+		super().__init__(path)
+
+		self._startOfTokenStream = startOfTokenStream
+		self._endOfTokenStream = endOfTokenStream
+
+ + diff --git a/typing/html/pyVHDLParser/NetlistModel/NetlistModel.py.html b/typing/html/pyVHDLParser/NetlistModel/NetlistModel.py.html new file mode 100644 index 000000000..7f1f5aa88 --- /dev/null +++ b/typing/html/pyVHDLParser/NetlistModel/NetlistModel.py.html @@ -0,0 +1,120 @@ + + + + + + +

pyVHDLParser.NetlistModel.NetlistModel

+ + + + + + +
pyVHDLParser/NetlistModel/NetlistModel.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators             import export
+
+
+@export
+class ModelBase:
+	pass
+
+
+@export
+class Netlist(ModelBase):
+	pass
+
+
+@export
+class Wire(ModelBase):
+	pass
+
+
+@export
+class Primitive(ModelBase):
+	pass
+
+ + diff --git a/typing/html/pyVHDLParser/NetlistModel/__init__.py.html b/typing/html/pyVHDLParser/NetlistModel/__init__.py.html new file mode 100644 index 000000000..2d78992e9 --- /dev/null +++ b/typing/html/pyVHDLParser/NetlistModel/__init__.py.html @@ -0,0 +1,74 @@ + + + + + + +

pyVHDLParser.NetlistModel

+ + + + + + +
pyVHDLParser/NetlistModel/__init__.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+
+ + diff --git a/typing/html/pyVHDLParser/SimulationModel/EventSystem.py.html b/typing/html/pyVHDLParser/SimulationModel/EventSystem.py.html new file mode 100644 index 000000000..9958383bd --- /dev/null +++ b/typing/html/pyVHDLParser/SimulationModel/EventSystem.py.html @@ -0,0 +1,229 @@ + + + + + + +

pyVHDLParser.SimulationModel.EventSystem

+ + + + + + +
pyVHDLParser/SimulationModel/EventSystem.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators             import export
+
+
+@export
+class Scheduler:
+	def __init__(self):
+		self._now =             0
+		self._globalTimeLine =  TimeLine()
+
+	def AddEvent(self, relTime):
+		pass
+
+	def GetNextTime(self):
+		return None
+
+
+@export
+class Event:
+	def __init__(self, time, process):
+		self._previous =  None
+		self._next =      None
+		self._time =      time
+		self.WakeList =   [process]
+
+	def AddProcess(self, process):
+		self.WakeList.append(process)
+
+
+@export
+class Transaction:
+	def __init__(self, time, value):
+		self._time =  time
+		self._value = value
+
+	def __str__(self):
+		return "({time}, {value})".format(time=self._time, value=self._value)
+
+	__repr__ = __str__
+
+
+@export
+class TimeLine:
+	def __init__(self):
+		self._transactions =    []
+
+	def AddTransaction(self, transaction):
+		pass
+
+
+@export
+class Waveform:
+	def __init__(self, signal):
+		self._signal =          signal
+		self._transactions =    []
+
+	def Initialize(self, value):
+		self._transactions.append(Transaction(0, value))
+
+	def AddEvent(self, time, value):
+		self._transactions.append(Transaction(time, value))
+
+
+@export
+class ProjectedWaveform(TimeLine):
+	def __init__(self, signal):
+		self._signal =          signal
+
+ + diff --git a/typing/html/pyVHDLParser/SimulationModel/SimulationModel.py.html b/typing/html/pyVHDLParser/SimulationModel/SimulationModel.py.html new file mode 100644 index 000000000..fcafb255c --- /dev/null +++ b/typing/html/pyVHDLParser/SimulationModel/SimulationModel.py.html @@ -0,0 +1,385 @@ + + + + + + +

pyVHDLParser.SimulationModel.SimulationModel

+ + + + + + +
pyVHDLParser/SimulationModel/SimulationModel.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators                     import export
+
+from pyVHDLParser.SimulationModel.EventSystem import ProjectedWaveform, Waveform, Scheduler, Event
+
+
+@export
+class Simulation:
+	def __init__(self):
+		self._signals =     []
+		self._processes =   []
+		self._scheduler =   Scheduler()
+
+	def AddSignal(self, signal):
+		self._signals.append(signal)
+		signal.Simulator = self
+
+	def AddProcess(self, process):
+		self._processes.append(process)
+
+	def Initialize(self):
+		for signal in self._signals:
+			signal.Initialize()
+		for process in self._processes:
+			process.Initialize()
+
+	def Run(self):
+		iterators = [(p,iter(p._generator())) for p in self._processes]
+
+		for process,iterator in iterators:
+			signalChanges,time = next(iterator)
+			for signal,value in signalChanges:
+				signal.SetValue(value)
+
+			self._scheduler.AddEvent(Event(self._scheduler._now + time, process))
+
+
+			print(time)
+
+
+
+		for signal in self._signals:
+			print("{signal!s}: {wave}".format(signal=signal, wave=signal._waveform._transactions))
+
+	@property
+	def Now(self):
+		return self._scheduler._now
+
+
+	def ExportVCD(self, filename):
+		pass
+
+
+@export
+class Path:
+	def __init__(self, name, path):
+		self._name =    name
+		self._path =    path
+
+	def __repr__(self):
+		return self._path
+
+	def __str__(self):
+		return self._name
+
+
+@export
+class Signal:
+	def __init__(self, path, subtype, initializer=None):
+		self._path =              path
+		self._subtype =           subtype
+		self._initializer =       initializer
+		self._drivingValue =      None
+		self._projectedWaveform = ProjectedWaveform(self)
+		self._waveform =          Waveform(self)
+		self.Simulator =          None
+
+	def Initialize(self):
+		if self._initializer is not None:
+			result = self._initializer()
+		else:
+			result = self._subtype.Attributes.Low()
+		self._waveform.Initialize(result)
+
+	def SetValue(self, value):
+		self._waveform.AddEvent(self.Simulator.Now, value)
+
+	def __repr__(self):
+		return "{path!r}: {value}".format(path=self._path, value="------")
+
+	def __str__(self):
+		return "{path!s}: {value}".format(path=self._path, value="------")
+
+
+@export
+class Process:
+	def __init__(self, path, generator, sensitivityList=None):
+		self._path =            path
+		self._sensitivityList = sensitivityList
+		self._generator =       generator
+		self._constants =       []
+		self._variables =       []
+		self._outputs =         []
+		self._instructions =    []
+
+	def Initialize(self):
+		pass
+
+
+@export
+class Source:
+	pass
+
+
+@export
+class Driver(Source):
+	pass
+
+
+@export
+class ResolutionFunction:
+	def __init__(self):
+		self._function =  None
+
+
+@export
+class DrivingValue:
+	pass
+
+ + diff --git a/typing/html/pyVHDLParser/SimulationModel/__init__.py.html b/typing/html/pyVHDLParser/SimulationModel/__init__.py.html new file mode 100644 index 000000000..f02828706 --- /dev/null +++ b/typing/html/pyVHDLParser/SimulationModel/__init__.py.html @@ -0,0 +1,74 @@ + + + + + + +

pyVHDLParser.SimulationModel

+ + + + + + +
pyVHDLParser/SimulationModel/__init__.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+
+ + diff --git a/typing/html/pyVHDLParser/StyleChecks/__init__.py.html b/typing/html/pyVHDLParser/StyleChecks/__init__.py.html new file mode 100644 index 000000000..c51b8640d --- /dev/null +++ b/typing/html/pyVHDLParser/StyleChecks/__init__.py.html @@ -0,0 +1,74 @@ + + + + + + +

pyVHDLParser.StyleChecks

+ + + + + + +
pyVHDLParser/StyleChecks/__init__.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+
+ + diff --git a/typing/html/pyVHDLParser/Token/Keywords.py.html b/typing/html/pyVHDLParser/Token/Keywords.py.html new file mode 100644 index 000000000..d6a7094b6 --- /dev/null +++ b/typing/html/pyVHDLParser/Token/Keywords.py.html @@ -0,0 +1,2186 @@ + + + + + + +

pyVHDLParser.Token.Keywords

+ + + + + + +
pyVHDLParser/Token/Keywords.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+380
+381
+382
+383
+384
+385
+386
+387
+388
+389
+390
+391
+392
+393
+394
+395
+396
+397
+398
+399
+400
+401
+402
+403
+404
+405
+406
+407
+408
+409
+410
+411
+412
+413
+414
+415
+416
+417
+418
+419
+420
+421
+422
+423
+424
+425
+426
+427
+428
+429
+430
+431
+432
+433
+434
+435
+436
+437
+438
+439
+440
+441
+442
+443
+444
+445
+446
+447
+448
+449
+450
+451
+452
+453
+454
+455
+456
+457
+458
+459
+460
+461
+462
+463
+464
+465
+466
+467
+468
+469
+470
+471
+472
+473
+474
+475
+476
+477
+478
+479
+480
+481
+482
+483
+484
+485
+486
+487
+488
+489
+490
+491
+492
+493
+494
+495
+496
+497
+498
+499
+500
+501
+502
+503
+504
+505
+506
+507
+508
+509
+510
+511
+512
+513
+514
+515
+516
+517
+518
+519
+520
+521
+522
+523
+524
+525
+526
+527
+528
+529
+530
+531
+532
+533
+534
+535
+536
+537
+538
+539
+540
+541
+542
+543
+544
+545
+546
+547
+548
+549
+550
+551
+552
+553
+554
+555
+556
+557
+558
+559
+560
+561
+562
+563
+564
+565
+566
+567
+568
+569
+570
+571
+572
+573
+574
+575
+576
+577
+578
+579
+580
+581
+582
+583
+584
+585
+586
+587
+588
+589
+590
+591
+592
+593
+594
+595
+596
+597
+598
+599
+600
+601
+602
+603
+604
+605
+606
+607
+608
+609
+610
+611
+612
+613
+614
+615
+616
+617
+618
+619
+620
+621
+622
+623
+624
+625
+626
+627
+628
+629
+630
+631
+632
+633
+634
+635
+636
+637
+638
+639
+640
+641
+642
+643
+644
+645
+646
+647
+648
+649
+650
+651
+652
+653
+654
+655
+656
+657
+658
+659
+660
+661
+662
+663
+664
+665
+666
+667
+668
+669
+670
+671
+672
+673
+674
+675
+676
+677
+678
+679
+680
+681
+682
+683
+684
+685
+686
+687
+688
+689
+690
+691
+692
+693
+694
+695
+696
+697
+698
+699
+700
+701
+702
+703
+704
+705
+706
+707
+708
+709
+710
+711
+712
+713
+714
+715
+716
+717
+718
+719
+720
+721
+722
+723
+724
+725
+726
+727
+728
+729
+730
+731
+732
+733
+734
+735
+736
+737
+738
+739
+740
+741
+742
+743
+744
+745
+746
+747
+748
+749
+750
+751
+752
+753
+754
+755
+756
+757
+758
+759
+760
+761
+762
+763
+764
+765
+766
+767
+768
+769
+770
+771
+772
+773
+774
+775
+776
+777
+778
+779
+780
+781
+782
+783
+784
+785
+786
+787
+788
+789
+790
+791
+792
+793
+794
+795
+796
+797
+798
+799
+800
+801
+802
+803
+804
+805
+806
+807
+808
+809
+810
+811
+812
+813
+814
+815
+816
+817
+818
+819
+820
+821
+822
+823
+824
+825
+826
+827
+828
+829
+830
+831
+832
+833
+834
+835
+836
+837
+838
+839
+840
+841
+842
+843
+844
+845
+846
+847
+848
+849
+850
+851
+852
+853
+854
+855
+856
+857
+858
+859
+860
+861
+862
+863
+864
+865
+866
+867
+868
+869
+870
+871
+872
+873
+874
+875
+876
+877
+878
+879
+880
+881
+882
+883
+884
+885
+886
+887
+888
+889
+890
+891
+892
+893
+894
+895
+896
+897
+898
+899
+900
+901
+902
+903
+904
+905
+906
+907
+908
+909
+910
+911
+912
+913
+914
+915
+916
+917
+918
+919
+920
+921
+922
+923
+924
+925
+926
+927
+928
+929
+930
+931
+932
+933
+934
+935
+936
+937
+938
+939
+940
+941
+942
+943
+944
+945
+946
+947
+948
+949
+950
+951
+952
+953
+954
+955
+956
+957
+958
+959
+960
+961
+962
+963
+964
+965
+966
+967
+968
+969
+970
+971
+972
+973
+974
+975
+976
+977
+978
+979
+980
+981
+982
+983
+984
+985
+986
+987
+988
+989
+990
+991
+992
+993
+994
+995
+996
+997
+998
+999
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from typing import Any
+
+from pyTooling.Decorators       import export
+
+from pyVHDLParser               import SourceCodePosition
+from pyVHDLParser.Token         import Token, WordToken, VHDLToken, CharacterToken
+from pyVHDLParser.Token.Parser  import TokenizerException
+
+
+@export
+class SpecificVHDLToken(VHDLToken):
+	"""Base-class for all specific tokens.
+
+	Simple token will be converted to specific tokens while parsing.
+	The internal data is copied, and the original token is replaced by this token.
+	"""
+
+	def __init__(self, previousToken: Token = None, value: Any = None, start: SourceCodePosition = None, end: SourceCodePosition = None, fromExistingToken: Token = None):
+		"""
+		Initialize a specific token, by copying the simple token's data and link
+		this new token to the previous token as a replacement.
+		"""
+		if fromExistingToken is None:
+			super().__init__(previousToken, value, start, end)
+		else:
+			super().__init__(fromExistingToken.PreviousToken, fromExistingToken.Value, fromExistingToken.Start, fromExistingToken.End)
+
+
+@export
+class BoundaryToken(SpecificVHDLToken):
+	"""
+	Token representing a boundary between (reserved) words.
+
+	In many cases, a :class:`SpaceToken`, :class:`CommentToken`,
+	:class:`LinebreakToken` or :class:`CharacterToken` becomes a BoundaryToken.
+	"""
+
+
+# ==============================================================================
+# Bracket tokens: (), [], {}, <>
+# ==============================================================================
+@export
+class BracketToken(SpecificVHDLToken):
+	"""Base-class for all bracket tokens: ``(``, ``)``, ``[``, ``]``, ``{``, ``}``, ``<`` and ``>``."""
+
+
+# Round bracket / parenthesis / ()
+# ----------------------------------------------------------
+@export
+class RoundBracketToken(BracketToken):
+	"""Base-class for all round bracket tokens: ``(`` and ``)``."""
+
+
+@export
+class OpeningRoundBracketToken(RoundBracketToken):
+	"""Token representing an opening round bracket: ``(``."""
+
+
+@export
+class ClosingRoundBracketToken(RoundBracketToken):
+	"""Token representing a closing round bracket: ``)``."""
+
+
+# Square bracket / []
+# ----------------------------------------------------------
+@export
+class SquareBracketToken(BracketToken):
+	"""Base-class for all square bracket tokens: ``[`` and ``]``."""
+
+
+@export
+class OpeningSquareBracketToken(SquareBracketToken):
+	"""Token representing an square round bracket: ``[``."""
+
+
+@export
+class ClosingSquareBracketToken(SquareBracketToken):
+	"""Token representing a closing square bracket: ``]``."""
+
+
+# Curly bracket / brace / curved bracket / {}
+# ----------------------------------------------------------
+@export
+class CurlyBracketToken(BracketToken):
+	"""Base-class for all curly bracket tokens: ``{`` and ``}``."""
+
+
+@export
+class OpeningCurlyBracketToken(CurlyBracketToken):
+	"""Token representing an opening curly bracket: ``{``."""
+
+
+@export
+class ClosingCurlyBracketToken(CurlyBracketToken):
+	"""Token representing a closing curly bracket: ``}``."""
+
+
+# Angle bracket / arrow bracket / <>
+# ----------------------------------------------------------
+@export
+class AngleBracketToken(BracketToken):
+	"""Base-class for all angle bracket tokens: ``<`` and ``>``."""
+
+
+@export
+class OpeningAngleBracketToken(AngleBracketToken):
+	"""Token representing an opening angle bracket: ``<``."""
+
+
+@export
+class ClosingAngleBracketToken(AngleBracketToken):
+	"""Token representing a closing angle bracket: ``>``."""
+
+
+# ==============================================================================
+# Operator tokens: +, -, *, /, **, &
+# ==============================================================================
+@export
+class OperatorToken(SpecificVHDLToken):
+	"""Base-class for all operator tokens."""
+
+
+@export
+class PlusOperator(OperatorToken):
+	"""Token representing a plus operator: ``+``."""
+	__KEYWORD__ = "+"
+
+
+@export
+class MinusOperator(OperatorToken):
+	"""Token representing a minus operator: ``-``."""
+	__KEYWORD__ = "-"
+
+
+@export
+class MultiplyOperator(OperatorToken):
+	"""Token representing a multiply operator: ``*``."""
+	__KEYWORD__ = "*"
+
+
+@export
+class DivideOperator(OperatorToken):
+	"""Token representing a divide operator: ``/``."""
+	__KEYWORD__ = "/"
+
+
+@export
+class ModuloOperator(OperatorToken):
+	__KEYWORD__ = "mod"
+
+
+@export
+class RemainderOperator(OperatorToken):
+	__KEYWORD__ = "rem"
+
+
+@export
+class PowerOperator(OperatorToken):
+	"""Token representing a power operator: ``**``."""
+	__KEYWORD__ = "**"
+
+
+@export
+class ConcatOperator(OperatorToken):
+	"""Token representing a concat operator: ``&``."""
+	__KEYWORD__ = "&"
+
+
+# Relational operatrors
+# ----------------------------------------------------------
+@export
+class RelationalOperator(OperatorToken):
+	"""Base-class for all relational operator tokens."""
+
+
+@export
+class EqualOperator(RelationalOperator):
+	__KEYWORD__ = "="
+
+
+@export
+class UnequalOperator(RelationalOperator):
+	__KEYWORD__ = "/="
+
+
+@export
+class LessThanOperator(RelationalOperator):
+	__KEYWORD__ = "<"
+
+
+@export
+class LessThanOrEqualOperator(RelationalOperator):
+	__KEYWORD__ = "<="
+
+
+@export
+class GreaterThanOperator(RelationalOperator):
+	__KEYWORD__ = ">"
+
+
+@export
+class GreaterThanOrEqualOperator(RelationalOperator):
+	__KEYWORD__ = ">="
+
+
+@export
+class MatchingEqualOperator(RelationalOperator):
+	__KEYWORD__ = "?="
+
+
+@export
+class MatchingUnequalOperator(RelationalOperator):
+	__KEYWORD__ = "?/="
+
+
+@export
+class MatchingLessThanOperator(RelationalOperator):
+	__KEYWORD__ = "?<"
+
+
+@export
+class MatchingLessThanOrEqualOperator(RelationalOperator):
+	__KEYWORD__ = "?<="
+
+
+@export
+class MatchingGreaterThanOperator(RelationalOperator):
+	__KEYWORD__ = "?>"
+
+
+@export
+class MatchingGreaterThanOrEqualOperator(RelationalOperator):
+	__KEYWORD__ = "?>="
+
+
+@export
+class DelimiterToken(SpecificVHDLToken):
+	"""
+	Token representing a delimiter sign in between list items.
+
+	This token is usually created from a :class:`CharacterToken` with values ``,``
+	or ``;``.
+	"""
+
+
+@export
+class EndToken(SpecificVHDLToken):
+	"""
+	Token representing an end of a statement.
+
+	This token is usually created from a :class:`CharacterToken` with value ``;``.
+	"""
+
+
+@export
+class IdentifierToken(SpecificVHDLToken):
+	"""
+	Token representing an identifier.
+
+	This token is usually created from a :class:`WordToken` or :class:`ExtendedIdentifierToken`.
+	"""
+
+
+@export
+class RepeatedIdentifierToken(IdentifierToken):
+	"""
+	Token representing a repeated identifier.
+
+	This token is usually created from a :class:`WordToken` or :class:`ExtendedIdentifierToken`.
+	"""
+
+
+@export
+class SimpleNameToken(SpecificVHDLToken):
+	pass
+
+
+@export
+class LabelToken(SpecificVHDLToken):
+	"""
+	Token representing a label.
+
+	This token is usually created from a :class:`WordToken` or :class:`ExtendedIdentifierToken`.
+	"""
+
+
+@export
+class RepeatedLabelToken(LabelToken):
+	"""
+	Token representing a repeated label.
+
+	This token is usually created from a :class:`WordToken` or :class:`ExtendedIdentifierToken`.
+	"""
+
+
+@export
+class MultiCharKeyword(VHDLToken):
+	__KEYWORD__: str
+
+	def __init__(self, previousToken: Token = None, value: Any = None, start: SourceCodePosition = None, end: SourceCodePosition = None, fromExistingToken: CharacterToken = None):
+		if fromExistingToken is None:
+			super().__init__(previousToken, self.__KEYWORD__, start, end)
+		else:
+			super().__init__(fromExistingToken.PreviousToken, self.__KEYWORD__, fromExistingToken.Start, fromExistingToken.End)
+
+	def __str__(self) -> str:
+		return "<{name: <50} '{value}' at {pos!r}>".format(
+			name=self.__class__.__name__[:-7],
+			value=self.__KEYWORD__,
+			pos=self.Start
+		)
+
+
+@export
+class CommentKeyword(MultiCharKeyword):
+	"""Base-class for all comment keywords: ``--``, ``/*`` and ``*/``."""
+
+
+@export
+class SingleLineCommentKeyword(CommentKeyword):
+	"""Token representing a starting sequence for a single-line comment: ``--``."""
+	__KEYWORD__ = "--"
+
+
+@export
+class MultiLineCommentKeyword(CommentKeyword):
+	"""Base-class for all tokens related to multi-line comments: ``/*`` and ``*/``."""
+
+
+@export
+class MultiLineCommentStartKeyword(MultiLineCommentKeyword):
+	"""Token representing a starting sequence for a multi-line comment: ``/*``."""
+	__KEYWORD__ = "/*"
+
+
+@export
+class MultiLineCommentEndKeyword(MultiLineCommentKeyword):
+	"""Token representing a closing sequence for a multi-line comment: ``*/``."""
+	__KEYWORD__ = "*/"
+
+
+@export
+class AssignmentKeyword(MultiCharKeyword):
+	"""Base-class for all assignment keywords: ``:=`` and ``<=``."""
+
+
+@export
+class VariableAssignmentKeyword(AssignmentKeyword):
+	"""Token representing a variable assignment: ``:=``."""
+	__KEYWORD__ = ":="
+
+
+@export
+class SignalAssignmentKeyword(AssignmentKeyword):
+	"""Token representing a signal assignment: ``<=``."""
+	__KEYWORD__ = "<="
+
+
+@export
+class AssociationKeyword(MultiCharKeyword):
+	pass
+
+
+@export
+class MapAssociationKeyword(AssociationKeyword):
+	__KEYWORD__ = "=>"
+
+
+@export
+class SignalAssociationKeyword(AssociationKeyword):
+	__KEYWORD__ = "<=>"
+
+
+@export
+class KeywordToken(VHDLToken):
+	__KEYWORD__ : str
+
+	def __init__(self, previousToken: Token = None, value: str = None, start: SourceCodePosition = None, end: SourceCodePosition = None, fromExistingToken: WordToken = None):
+		if fromExistingToken is None:
+			if value.lower() != self.__KEYWORD__:
+				raise TokenizerException("Expected keyword {0}.".format(self.__KEYWORD__.upper()), None)
+
+			super().__init__(previousToken, value, str, end)
+		else:
+			if not (isinstance(fromExistingToken, WordToken) and (fromExistingToken <= self.__KEYWORD__)):
+				raise TokenizerException("Expected keyword {0}.".format(self.__KEYWORD__.upper()), fromExistingToken)
+
+			super().__init__(fromExistingToken.PreviousToken, self.__KEYWORD__, fromExistingToken.Start, fromExistingToken.End)
+
+	def __str__(self) -> str:
+		return "<{name: <50}  {value:.<59} at {pos!r}>".format(
+				name=self.__class__.__name__,
+				value="'" + self.Value + "'  ",
+				pos=self.Start
+			)
+
+
+@export
+class DirectionKeyword(KeywordToken):
+	pass
+
+
+@export
+class Operator(KeywordToken):
+	pass
+
+
+@export
+class LogicalOperator(Operator):
+	pass
+
+
+@export
+class MiscellaneousOperator(Operator):
+	pass
+
+
+@export
+class ShiftOperator(Operator):
+	pass
+
+
+@export
+class AbsOperator(KeywordToken):
+	"""Reserved word 'abs' for unary operator *absolute value*."""
+	__KEYWORD__ = "abs"
+
+
+@export
+class AccessKeyword(KeywordToken):
+	"""Reserved word 'access' to defined access types."""
+	__KEYWORD__ = "access"
+
+
+@export
+class AfterKeyword(KeywordToken):
+	"""Reserved word 'after'."""
+	__KEYWORD__ = "after"
+
+
+@export
+class AliasKeyword(KeywordToken):
+	"""Reserved word 'alias' to declare aliases."""
+	__KEYWORD__ = "alias"
+
+
+@export
+class AllKeyword(KeywordToken):
+	"""Reserved word 'all'."""
+	__KEYWORD__ = "all"
+
+
+@export
+class AndOperator(LogicalOperator):
+	"""Reserved word 'and' for binary logical operator *and*."""
+	__KEYWORD__ = "and"
+
+
+@export
+class ArchitectureKeyword(KeywordToken):
+	"""Reserved word 'architecture' to define architectures."""
+	__KEYWORD__ = "architecture"
+
+
+@export
+class ArrayKeyword(KeywordToken):
+	"""Reserved word 'array' to define array types."""
+	__KEYWORD__ = "array"
+
+
+@export
+class AssertKeyword(KeywordToken):
+	"""Reserved word 'assert' for *assert*-statements."""
+	__KEYWORD__ = "assert"
+
+
+@export
+class AttributeKeyword(KeywordToken):
+	"""Reserved word 'attribute'."""
+	__KEYWORD__ = "attribute"
+
+
+@export
+class BeginKeyword(KeywordToken):
+	"""Reserved word 'begin' to distinguish declarative regions from statements regions."""
+	__KEYWORD__ = "begin"
+
+
+@export
+class BlockKeyword(KeywordToken):
+	"""Reserved word 'block' for *block*-statements."""
+	__KEYWORD__ = "block"
+
+
+@export
+class BodyKeyword(KeywordToken):
+	"""Reserved word 'body' to distinguish declarations from implementations (bodies)."""
+	__KEYWORD__ = "body"
+
+
+@export
+class BufferKeyword(KeywordToken):
+	"""Reserved word 'buffer' for mode *buffer*."""
+	__KEYWORD__ = "buffer"
+
+
+@export
+class BusKeyword(KeywordToken):
+	"""Reserved word 'bus'."""
+	__KEYWORD__ = "bus"
+
+
+@export
+class CaseKeyword(KeywordToken):
+	__KEYWORD__ = "case"
+
+
+@export
+class ComponentKeyword(KeywordToken):
+	__KEYWORD__ = "component"
+
+
+@export
+class ConfigurationKeyword(KeywordToken):
+	__KEYWORD__ = "configuration"
+
+
+@export
+class ConstantKeyword(KeywordToken):
+	__KEYWORD__ = "constant"
+
+
+@export
+class ContextKeyword(KeywordToken):
+	__KEYWORD__ = "context"
+
+
+@export
+class DefaultKeyword(KeywordToken):
+	__KEYWORD__ = "default"
+
+
+@export
+class DisconnectKeyword(KeywordToken):
+	__KEYWORD__ = "disconnect"
+
+
+@export
+class DowntoKeyword(DirectionKeyword):
+	__KEYWORD__ = "downto"
+
+
+@export
+class ElseKeyword(KeywordToken):
+	__KEYWORD__ = "else"
+
+
+@export
+class ElsIfKeyword(KeywordToken):
+	__KEYWORD__ = "elsif"
+
+
+@export
+class EndKeyword(KeywordToken):
+	__KEYWORD__ = "end"
+
+
+@export
+class EntityKeyword(KeywordToken):
+	__KEYWORD__ = "entity"
+
+
+@export
+class ExitKeyword(KeywordToken):
+	__KEYWORD__ = "exit"
+
+
+@export
+class FileKeyword(KeywordToken):
+	__KEYWORD__ = "file"
+
+
+@export
+class ForKeyword(KeywordToken):
+	__KEYWORD__ = "for"
+
+
+@export
+class ForceKeyword(KeywordToken):
+	__KEYWORD__ = "force"
+
+
+@export
+class FunctionKeyword(KeywordToken):
+	__KEYWORD__ = "function"
+
+
+@export
+class GenerateKeyword(KeywordToken):
+	__KEYWORD__ = "generate"
+
+
+@export
+class GenericKeyword(KeywordToken):
+	__KEYWORD__ = "generic"
+
+
+@export
+class GroupKeyword(KeywordToken):
+	__KEYWORD__ = "group"
+
+
+@export
+class GuardedKeyword(KeywordToken):
+	__KEYWORD__ = "guarded"
+
+
+@export
+class IfKeyword(KeywordToken):
+	__KEYWORD__ = "if"
+
+
+@export
+class IsKeyword(KeywordToken):
+	__KEYWORD__ = "is"
+
+
+@export
+class InKeyword(KeywordToken):
+	__KEYWORD__ = "in"
+
+
+@export
+class InoutKeyword(KeywordToken):
+	__KEYWORD__ = "inout"
+
+
+@export
+class ImpureKeyword(KeywordToken):
+	__KEYWORD__ = "impure"
+
+
+@export
+class InertialKeyword(KeywordToken):
+	__KEYWORD__ = "inertial"
+
+
+@export
+class LabelKeyword(KeywordToken):
+	__KEYWORD__ = "lable"
+
+
+@export
+class LibraryKeyword(KeywordToken):
+	__KEYWORD__ = "library"
+
+
+@export
+class LinkageKeyword(KeywordToken):
+	__KEYWORD__ = "linkage"
+
+
+@export
+class LiteralKeyword(KeywordToken):
+	__KEYWORD__ = "literal"
+
+
+@export
+class LoopKeyword(KeywordToken):
+	__KEYWORD__ = "loop"
+
+
+@export
+class MapKeyword(KeywordToken):
+	__KEYWORD__ = "map"\
+
+
+@export
+class NandOperator(LogicalOperator):
+	__KEYWORD__ = "nand"
+
+
+@export
+class NewKeyword(KeywordToken):
+	__KEYWORD__ = "new"
+
+
+@export
+class NextKeyword(KeywordToken):
+	__KEYWORD__ = "next"
+
+
+@export
+class NorOperator(LogicalOperator):
+	__KEYWORD__ = "nor"
+
+
+@export
+class NotOperator(LogicalOperator):
+	__KEYWORD__ = "not"
+
+
+@export
+class NullKeyword(KeywordToken):
+	__KEYWORD__ = "null"
+
+
+@export
+class OfKeyword(KeywordToken):
+	__KEYWORD__ = "of"
+
+
+@export
+class OnKeyword(KeywordToken):
+	__KEYWORD__ = "on"
+
+
+@export
+class OpenKeyword(KeywordToken):
+	__KEYWORD__ = "open"
+
+
+@export
+class OrOperator(LogicalOperator):
+	__KEYWORD__ = "or"
+
+
+@export
+class OthersKeyword(KeywordToken):
+	__KEYWORD__ = "others"
+
+
+@export
+class OutKeyword(KeywordToken):
+	__KEYWORD__ = "out"
+
+
+@export
+class PackageKeyword(KeywordToken):
+	__KEYWORD__ = "package"
+
+
+@export
+class ParameterKeyword(KeywordToken):
+	__KEYWORD__ = "parameter"
+
+
+@export
+class PortKeyword(KeywordToken):
+	__KEYWORD__ = "port"
+
+
+@export
+class PostponedKeyword(KeywordToken):
+	__KEYWORD__ = "postponed"
+
+
+@export
+class PrivateKeyword(KeywordToken):
+	__KEYWORD__ = "private"
+
+
+@export
+class ProcedureKeyword(KeywordToken):
+	__KEYWORD__ = "procedure"
+
+
+@export
+class ProcessKeyword(KeywordToken):
+	__KEYWORD__ = "process"
+
+
+@export
+class PropertyKeyword(KeywordToken):
+	__KEYWORD__ = "property"
+
+
+@export
+class ProtectedKeyword(KeywordToken):
+	__KEYWORD__ = "protected"
+
+
+@export
+class PureKeyword(KeywordToken):
+	__KEYWORD__ = "pure"
+
+
+@export
+class RangeKeyword(KeywordToken):
+	__KEYWORD__ = "range"
+
+
+@export
+class RecordKeyword(KeywordToken):
+	__KEYWORD__ = "record"
+
+
+@export
+class RegisterKeyword(KeywordToken):
+	__KEYWORD__ = "register"
+
+
+@export
+class RejectKeyword(KeywordToken):
+	__KEYWORD__ = "reject"
+
+
+@export
+class ReleaseKeyword(KeywordToken):
+	__KEYWORD__ = "release"
+
+
+@export
+class ReportKeyword(KeywordToken):
+	__KEYWORD__ = "report"
+
+
+@export
+class ReturnKeyword(KeywordToken):
+	__KEYWORD__ = "return"
+
+
+@export
+class RolOperator(ShiftOperator):
+	__KEYWORD__ = "rol"
+
+
+@export
+class RorOperator(ShiftOperator):
+	__KEYWORD__ = "ror"
+
+
+@export
+class SelectKeyword(KeywordToken):
+	__KEYWORD__ = "select"
+
+
+@export
+class SequenceKeyword(KeywordToken):
+	__KEYWORD__ = "sequence"
+
+
+@export
+class SeverityKeyword(KeywordToken):
+	__KEYWORD__ = "severity"
+
+
+@export
+class SharedKeyword(KeywordToken):
+	__KEYWORD__ = "shared"
+
+
+@export
+class SignalKeyword(KeywordToken):
+	__KEYWORD__ = "signal"
+
+
+@export
+class SlaOperator(ShiftOperator):
+	__KEYWORD__ = "sla"
+
+
+@export
+class SllOperator(ShiftOperator):
+	__KEYWORD__ = "sll"
+
+
+@export
+class SraOperator(ShiftOperator):
+	__KEYWORD__ = "sra"
+
+
+@export
+class SrlOperator(ShiftOperator):
+	__KEYWORD__ = "srl"
+
+
+@export
+class SubtypeKeyword(KeywordToken):
+	__KEYWORD__ = "subtype"
+
+
+@export
+class ThenKeyword(KeywordToken):
+	__KEYWORD__ = "then"
+
+
+@export
+class ToKeyword(DirectionKeyword):
+	__KEYWORD__ = "to"
+
+
+@export
+class TransportKeyword(KeywordToken):
+	__KEYWORD__ = "transport"
+
+
+@export
+class TypeKeyword(KeywordToken):
+	__KEYWORD__ = "type"
+
+
+@export
+class UnaffectedKeyword(KeywordToken):
+	__KEYWORD__ = "unaffected"
+
+
+@export
+class UnitsKeyword(KeywordToken):
+	__KEYWORD__ = "units"
+
+
+@export
+class UntilKeyword(KeywordToken):
+	__KEYWORD__ = "until"
+
+
+@export
+class UseKeyword(KeywordToken):
+	__KEYWORD__ = "use"
+
+
+@export
+class UnbufferedKeyword(KeywordToken):
+	__KEYWORD__ = "unbuffered"
+
+
+@export
+class VariableKeyword(KeywordToken):
+	__KEYWORD__ = "variable"
+
+
+@export
+class ViewKeyword(KeywordToken):
+	__KEYWORD__ = "view"
+
+
+@export
+class VunitKeyword(KeywordToken):
+	__KEYWORD__ = "vunit"
+
+
+@export
+class WaitKeyword(KeywordToken):
+	__KEYWORD__ = "wait"
+
+
+@export
+class WhenKeyword(KeywordToken):
+	__KEYWORD__ = "when"
+
+
+@export
+class WhileKeyword(KeywordToken):
+	__KEYWORD__ = "while"
+
+
+@export
+class WithKeyword(KeywordToken):
+	__KEYWORD__ = "with"
+
+
+@export
+class XorOperator(LogicalOperator):
+	__KEYWORD__ = "xor"
+
+
+@export
+class XnorOperator(LogicalOperator):
+	__KEYWORD__ = "xnor"
+
+ + diff --git a/typing/html/pyVHDLParser/Token/Parser.py.html b/typing/html/pyVHDLParser/Token/Parser.py.html new file mode 100644 index 000000000..7dce5c79c --- /dev/null +++ b/typing/html/pyVHDLParser/Token/Parser.py.html @@ -0,0 +1,1045 @@ + + + + + + +

pyVHDLParser.Token.Parser

+ + + + + + +
pyVHDLParser/Token/Parser.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+380
+381
+382
+383
+384
+385
+386
+387
+388
+389
+390
+391
+392
+393
+394
+395
+396
+397
+398
+399
+400
+401
+402
+403
+404
+405
+406
+407
+408
+409
+410
+411
+412
+413
+414
+415
+416
+417
+418
+419
+420
+421
+422
+423
+424
+425
+426
+427
+428
+429
+430
+431
+432
+433
+434
+435
+436
+437
+438
+439
+440
+441
+442
+443
+444
+445
+446
+447
+448
+449
+450
+451
+452
+453
+454
+455
+456
+457
+458
+459
+460
+461
+462
+463
+464
+465
+466
+467
+468
+469
+470
+471
+472
+473
+474
+475
+476
+477
+478
+479
+480
+481
+482
+483
+484
+485
+486
+487
+488
+489
+490
+491
+492
+493
+494
+495
+496
+497
+498
+499
+500
+501
+502
+503
+504
+505
+506
+507
+508
+509
+510
+511
+512
+513
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from enum                     import IntEnum
+from typing                   import Iterator
+
+from pyTooling.Decorators     import export
+
+from pyVHDLParser             import SourceCodePosition
+from pyVHDLParser.Base        import ParserException
+from pyVHDLParser.Token       import StartOfDocumentToken, EndOfDocumentToken, IndentationToken, FusedCharacterToken
+from pyVHDLParser.Token       import CharacterLiteralToken, StringLiteralToken, ExtendedIdentifier, DirectiveToken, IntegerLiteralToken, RealLiteralToken
+from pyVHDLParser.Token       import CharacterToken, SpaceToken, WordToken, SingleLineCommentToken, MultiLineCommentToken, LinebreakToken
+
+
+@export
+class TokenizerException(ParserException):
+	"""A :exc:`~pyVHDLParser.Base.ParserException` generated by the :class:`~pyVHDLParser.Token.Parser.Tokenizer`."""
+
+	def __init__(self, message: str, position: SourceCodePosition):
+		super().__init__(message)
+		self.Position = position
+
+	def __str__(self) -> str:
+		return "{0!s}: {1}".format(self.Position, self._message)
+
+
+@export
+class Tokenizer:
+	class TokenKind(IntEnum):
+		"""Enumeration of all Tokenizer states."""
+
+		SpaceChars =                      0   #: Last char was a space
+		IntegerChars =                    1   #: Last char was a digit
+		RealChars =                       2   #: Last char was a digit
+		AlphaChars =                      3   #: Last char was a letter
+		DelimiterChars =                  4   #: Last char was a delimiter character
+		PossibleSingleLineCommentStart =  5   #: Last char was a dash
+		PossibleLinebreak =               6   #: Last char was a ``\r``
+		PossibleRealLiteral =             7   #: Last char was a ``.``
+		PossibleCharacterLiteral =        8   #: Last char was a ``'``
+		PossibleStringLiteralStart =      9   #: Last char was a ``"``
+		PossibleExtendedIdentifierStart = 10  #: Last char was a ``\``
+		SingleLineComment =               11  #: Found ``--`` before
+		MultiLineComment =                12  #: Found ``/*`` before
+		Linebreak =                       13  #: Last char was a ``\n``
+		Directive =                       14  #: Last char was a `` ` ``
+		FuseableCharacter =               15  #: Last char was a character that could be fused
+		OtherChars =                      16  #: Anything else
+
+
+	@classmethod
+	def GetVHDLTokenizer(cls, iterable: Iterator[str]):
+		previousToken = StartOfDocumentToken()
+		tokenKind =     cls.TokenKind.OtherChars
+		start =         SourceCodePosition(1, 1, 1)
+		buffer =        ""
+		absolute =      0
+		column =        0
+		row =           1
+
+		__NUMBER_CHARACTERS__ =     "0123456789"
+		__ALPHA_CHARACTERS__ =      "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
+		__WHITESPACE_CHARACTERS__ = " \t"
+		__FUSEABLE_CHARS__ =        "=<:/*>?"
+
+		yield previousToken
+
+		for char in iterable:
+			absolute +=   1
+			column +=     1
+
+			# State: SpaceChars
+			if tokenKind is cls.TokenKind.SpaceChars:
+				if char in __WHITESPACE_CHARACTERS__:
+					buffer += char
+				else:
+					end = SourceCodePosition(row, column - 1, absolute - 1)
+					if isinstance(previousToken, (LinebreakToken, SingleLineCommentToken, StartOfDocumentToken)):
+						previousToken = IndentationToken(previousToken, buffer, start, end)
+					else:
+						previousToken = SpaceToken(previousToken, buffer, start, end)
+					yield previousToken
+
+					start =   SourceCodePosition(row, column, absolute)
+					buffer =  char
+					if char in __NUMBER_CHARACTERS__:   tokenKind = cls.TokenKind.IntegerChars
+					elif char in __ALPHA_CHARACTERS__:  tokenKind = cls.TokenKind.AlphaChars
+					elif char == "'":                   tokenKind = cls.TokenKind.PossibleCharacterLiteral
+					elif char == "\"":                  tokenKind = cls.TokenKind.PossibleStringLiteralStart
+					elif char == "-":                   tokenKind = cls.TokenKind.PossibleSingleLineCommentStart
+					elif char == "\r":                  tokenKind = cls.TokenKind.PossibleLinebreak
+					elif char == "\n":
+						previousToken = LinebreakToken(previousToken, char, start, start)
+						yield previousToken
+						tokenKind = cls.TokenKind.OtherChars
+					elif char in __FUSEABLE_CHARS__:
+						buffer =        char
+						tokenKind =     cls.TokenKind.FuseableCharacter
+					elif char == ".":                    tokenKind = cls.TokenKind.PossibleRealLiteral
+					elif char == "\\":                   tokenKind = cls.TokenKind.PossibleExtendedIdentifierStart
+					elif (char == "`") and isinstance(previousToken, (SpaceToken, LinebreakToken)):
+						tokenKind = cls.TokenKind.Directive
+					else:
+						previousToken = CharacterToken(previousToken, char, start)
+						yield previousToken
+						tokenKind =     cls.TokenKind.OtherChars
+
+			# State: IntegerChars
+			elif tokenKind is cls.TokenKind.IntegerChars:
+				if (char in __NUMBER_CHARACTERS__) or (char == "_"):
+					buffer += char
+				elif char == ".":
+					buffer += char
+					tokenKind = cls.TokenKind.RealChars
+				else:
+					previousToken = IntegerLiteralToken(previousToken, buffer, start, SourceCodePosition(row, column, absolute))
+					yield previousToken
+
+					start =   SourceCodePosition(row, column, absolute)
+					buffer =  char
+					if char in __WHITESPACE_CHARACTERS__: tokenKind = cls.TokenKind.SpaceChars
+					elif char in __ALPHA_CHARACTERS__:    tokenKind = cls.TokenKind.AlphaChars
+					elif char == "'":                     tokenKind = cls.TokenKind.PossibleCharacterLiteral
+					elif char == "\"":                    tokenKind = cls.TokenKind.PossibleStringLiteralStart
+					elif char == "-":                     tokenKind = cls.TokenKind.PossibleSingleLineCommentStart
+					elif char == "\r":                    tokenKind = cls.TokenKind.PossibleLinebreak
+					elif char == "\n":
+						previousToken = LinebreakToken(previousToken, char, start, start)
+						yield previousToken
+						tokenKind = cls.TokenKind.OtherChars
+					elif char in __FUSEABLE_CHARS__:
+						buffer =        char
+						tokenKind =     cls.TokenKind.FuseableCharacter
+					elif char == "\\":                    tokenKind = cls.TokenKind.PossibleExtendedIdentifierStart
+					elif (char == "`") and isinstance(previousToken, (SpaceToken, LinebreakToken)):
+						tokenKind = cls.TokenKind.Directive
+					else:
+						previousToken = CharacterToken(previousToken, char, start)
+						yield previousToken
+						tokenKind =     cls.TokenKind.OtherChars
+
+			# State: RealChars
+			elif tokenKind is cls.TokenKind.RealChars:
+				if (char in __NUMBER_CHARACTERS__) or (char == "_"):
+					buffer += char
+				else:
+					previousToken = RealLiteralToken(previousToken, buffer, start, SourceCodePosition(row, column, absolute))
+					yield previousToken
+
+					start =   SourceCodePosition(row, column, absolute)
+					buffer =  char
+					if char in __WHITESPACE_CHARACTERS__: tokenKind = cls.TokenKind.SpaceChars
+					elif char in __ALPHA_CHARACTERS__:    tokenKind = cls.TokenKind.AlphaChars
+					elif char == "'":                     tokenKind = cls.TokenKind.PossibleCharacterLiteral
+					elif char == "\"":                    tokenKind = cls.TokenKind.PossibleStringLiteralStart
+					elif char == "-":                     tokenKind = cls.TokenKind.PossibleSingleLineCommentStart
+					elif char == "\r":                    tokenKind = cls.TokenKind.PossibleLinebreak
+					elif char == "\n":
+						previousToken = LinebreakToken(previousToken, char, start, start)
+						yield previousToken
+						tokenKind = cls.TokenKind.OtherChars
+					elif char in __FUSEABLE_CHARS__:
+						buffer =        char
+						tokenKind =     cls.TokenKind.FuseableCharacter
+					elif char == "\\":                    tokenKind = cls.TokenKind.PossibleExtendedIdentifierStart
+					elif (char == "`") and isinstance(previousToken, (SpaceToken, LinebreakToken)):
+						tokenKind = cls.TokenKind.Directive
+					else:
+						previousToken = CharacterToken(previousToken, char, start)
+						yield previousToken
+						tokenKind =     cls.TokenKind.OtherChars
+
+			# State: AlphaChars
+			elif tokenKind is cls.TokenKind.AlphaChars:
+				if (char in __ALPHA_CHARACTERS__) or (char == "_"):
+					buffer += char
+				else:
+					previousToken = WordToken(previousToken, buffer, start, SourceCodePosition(row, column, absolute))
+					yield previousToken
+
+					start =   SourceCodePosition(row, column, absolute)
+					buffer =  char
+					if char in __WHITESPACE_CHARACTERS__: tokenKind = cls.TokenKind.SpaceChars
+					elif char == "'":                     tokenKind = cls.TokenKind.PossibleCharacterLiteral
+					elif char == "\"":                    tokenKind = cls.TokenKind.PossibleStringLiteralStart
+					elif char == "-":                     tokenKind = cls.TokenKind.PossibleSingleLineCommentStart
+					elif char == "\r":                    tokenKind = cls.TokenKind.PossibleLinebreak
+					elif char == "\n":
+						previousToken = LinebreakToken(previousToken, char, start, start)
+						yield previousToken
+						tokenKind = cls.TokenKind.OtherChars
+					elif char in __FUSEABLE_CHARS__:
+						buffer =        char
+						tokenKind =     cls.TokenKind.FuseableCharacter
+					elif char == "\\":                    tokenKind = cls.TokenKind.PossibleExtendedIdentifierStart
+					elif (char == "`") and isinstance(previousToken, (SpaceToken, LinebreakToken)):
+						tokenKind = cls.TokenKind.Directive
+					else:
+						previousToken = CharacterToken(previousToken, char, start)
+						yield previousToken
+						tokenKind =     cls.TokenKind.OtherChars
+
+			# State: PossibleSingleLineCommentStart
+			elif tokenKind is cls.TokenKind.PossibleSingleLineCommentStart:
+				if char == "-":
+					buffer =    "--"
+					tokenKind = cls.TokenKind.SingleLineComment
+				else:
+					previousToken = CharacterToken(previousToken, "-", start)
+					yield previousToken
+
+					buffer =        char
+					if char in __WHITESPACE_CHARACTERS__: tokenKind = cls.TokenKind.SpaceChars
+					elif char in __NUMBER_CHARACTERS__:   tokenKind = cls.TokenKind.IntegerChars
+					elif char in __ALPHA_CHARACTERS__:    tokenKind = cls.TokenKind.AlphaChars
+					elif char == "'":                     tokenKind = cls.TokenKind.PossibleCharacterLiteral
+					elif char == "\"":                    tokenKind = cls.TokenKind.PossibleStringLiteralStart
+					elif char == "/r":                    tokenKind = cls.TokenKind.PossibleLinebreak
+					elif char == "/n":
+						previousToken = LinebreakToken(previousToken, char, start, start)
+						yield previousToken
+						tokenKind =     cls.TokenKind.OtherChars
+					elif char in __FUSEABLE_CHARS__:
+						buffer =        char
+						tokenKind =     cls.TokenKind.FuseableCharacter
+					elif char == "\\":                     tokenKind = cls.TokenKind.PossibleExtendedIdentifierStart
+					elif (char == "`") and isinstance(previousToken, (SpaceToken, LinebreakToken)):
+						tokenKind =     cls.TokenKind.Directive
+					else:
+						previousToken = CharacterToken(previousToken, char, start)
+						yield previousToken
+						tokenKind = cls.TokenKind.OtherChars
+
+			# State: PossibleLinebreak
+			elif tokenKind is cls.TokenKind.PossibleLinebreak:
+				end = SourceCodePosition(row, column, absolute)
+				if char == "\n":
+					tokenKind = cls.TokenKind.OtherChars
+					if buffer[:2] == "--":
+						buffer += char
+						previousToken = SingleLineCommentToken(previousToken, buffer, start, end)
+					else:
+						previousToken = LinebreakToken(previousToken, "\r\n", start, end)
+					buffer = "\r\n"
+					yield previousToken
+				else:
+					previousToken = LinebreakToken(previousToken, "\r", start, end)
+					yield previousToken
+
+					start =   end
+					buffer =  char
+					if char in __WHITESPACE_CHARACTERS__: tokenKind = cls.TokenKind.SpaceChars
+					elif char in __NUMBER_CHARACTERS__:   tokenKind = cls.TokenKind.IntegerChars
+					elif char in __ALPHA_CHARACTERS__:    tokenKind = cls.TokenKind.AlphaChars
+					elif char == "'":                     tokenKind = cls.TokenKind.PossibleCharacterLiteral
+					elif char == "\"":                    tokenKind = cls.TokenKind.PossibleStringLiteralStart
+					elif char == "-":                     tokenKind = cls.TokenKind.PossibleSingleLineCommentStart
+					elif char == "/r":                    tokenKind = cls.TokenKind.PossibleLinebreak
+					elif char == "/n":
+						previousToken = LinebreakToken(previousToken, char, start, start)
+						yield previousToken
+						tokenKind =     cls.TokenKind.OtherChars
+					elif char in __FUSEABLE_CHARS__:
+						buffer =        char
+						tokenKind =     cls.TokenKind.FuseableCharacter
+					elif char == "\\":                     tokenKind = cls.TokenKind.PossibleExtendedIdentifierStart
+					elif (char == "`") and isinstance(previousToken, (SpaceToken, LinebreakToken)):
+						tokenKind =     cls.TokenKind.Directive
+					else:
+						previousToken = CharacterToken(previousToken, char, start)
+						yield previousToken
+						tokenKind =     cls.TokenKind.OtherChars
+
+			# State: PossibleRealLiteral
+			elif tokenKind is cls.TokenKind.PossibleRealLiteral:
+				if char in __NUMBER_CHARACTERS__:
+					buffer +=   char
+					tokenKind = cls.TokenKind.RealChars
+				else:
+					previousToken = CharacterToken(previousToken, ".", start)
+					yield previousToken
+
+					start = SourceCodePosition(row, column, absolute)
+					buffer = char
+
+					if char in __WHITESPACE_CHARACTERS__: tokenKind = cls.TokenKind.SpaceChars
+					elif char in __NUMBER_CHARACTERS__:   tokenKind = cls.TokenKind.IntegerChars
+					elif char in __ALPHA_CHARACTERS__:    tokenKind = cls.TokenKind.AlphaChars
+					elif char == "'":                     tokenKind = cls.TokenKind.PossibleCharacterLiteral
+					elif char == "\"":                    tokenKind = cls.TokenKind.PossibleStringLiteralStart
+					elif char == "-":                     tokenKind = cls.TokenKind.PossibleSingleLineCommentStart
+					elif char == "/r":                    tokenKind = cls.TokenKind.PossibleLinebreak
+					elif char == "/n":
+						previousToken = LinebreakToken(previousToken, char, start, start)
+						yield previousToken
+						tokenKind =     cls.TokenKind.OtherChars
+					elif char in __FUSEABLE_CHARS__:
+						buffer =        char
+						tokenKind =     cls.TokenKind.FuseableCharacter
+					elif char == "\\":                     tokenKind = cls.TokenKind.PossibleExtendedIdentifierStart
+					elif (char == "`") and isinstance(previousToken, (SpaceToken, LinebreakToken)):
+						tokenKind =     cls.TokenKind.Directive
+					else:
+						previousToken = CharacterToken(previousToken, char, start)
+						yield previousToken
+						tokenKind =     cls.TokenKind.OtherChars
+
+			# State: PossibleCharacterLiteral
+			elif tokenKind is cls.TokenKind.PossibleCharacterLiteral:
+				buffer += char
+				if len(buffer) == 2:
+					if buffer[1] == "'":
+						previousToken =   CharacterToken(previousToken, "'", start)
+						yield previousToken
+						previousToken =   CharacterToken(previousToken, "'", SourceCodePosition(row, column, absolute))
+						yield previousToken
+						tokenKind =       cls.TokenKind.OtherChars
+					else:
+						continue
+				elif (len(buffer) == 3) and (buffer[2] == "'"):
+					previousToken =   CharacterLiteralToken(previousToken, buffer, start, SourceCodePosition(row, column, absolute))
+					yield previousToken
+					tokenKind = cls.TokenKind.OtherChars
+				else:
+					previousToken =   CharacterToken(previousToken, "'", start)
+					yield previousToken
+
+					start.Column +=   1
+					start.Absolute += 1
+					buffer =          buffer[:2]
+					if (buffer[0] in __ALPHA_CHARACTERS__) and (buffer[1] in __ALPHA_CHARACTERS__):
+						tokenKind =     cls.TokenKind.AlphaChars
+					elif (buffer[0] in __WHITESPACE_CHARACTERS__) and (buffer[1] in __WHITESPACE_CHARACTERS__):
+						tokenKind =     cls.TokenKind.SpaceChars
+					else:
+						raise TokenizerException("Ambiguous syntax detected. buffer: '{buffer}'".format(buffer=buffer), start)
+
+			# State: PossibleStringLiteralStart
+			elif tokenKind is cls.TokenKind.PossibleStringLiteralStart:
+				buffer += char
+				if char == "\"":
+					previousToken = StringLiteralToken(previousToken, buffer, start, SourceCodePosition(row, column, absolute))
+					yield previousToken
+					tokenKind = cls.TokenKind.OtherChars
+
+			# State: PossibleExtendedIdentifierStart
+			elif tokenKind is cls.TokenKind.PossibleExtendedIdentifierStart:
+				buffer += char
+				if char == "\\":
+					previousToken = ExtendedIdentifier(previousToken, buffer, start, SourceCodePosition(row, column, absolute))
+					yield previousToken
+					tokenKind =     cls.TokenKind.OtherChars
+
+			# State: Directive
+			elif tokenKind is cls.TokenKind.Directive:
+				buffer += char
+				if char == "\r":
+					tokenKind =     cls.TokenKind.PossibleLinebreak
+				elif char == "\n":
+					previousToken = DirectiveToken(previousToken, buffer, start, SourceCodePosition(row, column, absolute))
+					yield previousToken
+					tokenKind =     cls.TokenKind.OtherChars
+
+			# State: SingleLineComment
+			elif tokenKind is cls.TokenKind.SingleLineComment:
+				buffer += char
+				if char == "\r":
+					tokenKind =     cls.TokenKind.PossibleLinebreak
+				elif char == "\n":
+					previousToken = SingleLineCommentToken(previousToken, buffer, start, SourceCodePosition(row, column, absolute))
+					yield previousToken
+					tokenKind =     cls.TokenKind.OtherChars
+
+			# State: MultiLineComment
+			elif tokenKind is cls.TokenKind.MultiLineComment:
+				buffer += char
+				if buffer[-2:] == "*/":
+					previousToken = MultiLineCommentToken(previousToken, buffer, start, SourceCodePosition(row, column, absolute))
+					yield previousToken
+					tokenKind =     cls.TokenKind.OtherChars
+
+			# State: FuseableCharacter
+			elif tokenKind is cls.TokenKind.FuseableCharacter:
+				fused = buffer + char
+				if fused in ("=>", "**", ":=", "/=", "<=", ">=", "<>", "<<", ">>", "??", "?=", "?<", "?>", "?/=", "?<=", "?>="):
+					previousToken = FusedCharacterToken(previousToken, fused, start, SourceCodePosition(row, column, absolute))
+					yield previousToken
+					tokenKind = cls.TokenKind.OtherChars
+				elif fused in ("?/", "?<", "?>"):
+					buffer =    fused
+				elif fused == "/*":
+					buffer =    fused
+					tokenKind = cls.TokenKind.MultiLineComment
+				else:
+					previousToken = CharacterToken(previousToken, buffer[0], start)
+					yield previousToken
+					if len(buffer) == 2:
+						previousToken = CharacterToken(previousToken, buffer[1], start)
+						yield previousToken
+
+					buffer = char
+					if char in __WHITESPACE_CHARACTERS__:   tokenKind = cls.TokenKind.SpaceChars
+					elif char in __NUMBER_CHARACTERS__:     tokenKind = cls.TokenKind.IntegerChars
+					elif char in __ALPHA_CHARACTERS__:      tokenKind = cls.TokenKind.AlphaChars
+					elif char == "'":                       tokenKind = cls.TokenKind.PossibleCharacterLiteral
+					elif char == "\"":                      tokenKind = cls.TokenKind.PossibleStringLiteralStart
+					elif char == "-":                       tokenKind = cls.TokenKind.PossibleSingleLineCommentStart
+					elif char == "\r":                      tokenKind = cls.TokenKind.PossibleLinebreak
+					elif char == "\n":
+						previousToken = LinebreakToken(previousToken, char, start, start)
+						yield previousToken
+						tokenKind = cls.TokenKind.OtherChars
+					elif char in __FUSEABLE_CHARS__:
+						pass
+					elif char == "\\":                       tokenKind = cls.TokenKind.PossibleExtendedIdentifierStart
+					elif (char == "`") and isinstance(previousToken, (SpaceToken, LinebreakToken)):
+						tokenKind = cls.TokenKind.Directive
+					else:
+						previousToken = CharacterToken(previousToken, char, start)
+						yield previousToken
+
+			# State: OtherChars
+			elif tokenKind is cls.TokenKind.OtherChars:
+				start =     SourceCodePosition(row, column, absolute)
+				buffer =    char
+				if char in __WHITESPACE_CHARACTERS__:   tokenKind = cls.TokenKind.SpaceChars
+				elif char in __NUMBER_CHARACTERS__:     tokenKind = cls.TokenKind.IntegerChars
+				elif char in __ALPHA_CHARACTERS__:      tokenKind = cls.TokenKind.AlphaChars
+				elif char == "'":                       tokenKind = cls.TokenKind.PossibleCharacterLiteral
+				elif char == "\"":                      tokenKind = cls.TokenKind.PossibleStringLiteralStart
+				elif char == "-":                       tokenKind = cls.TokenKind.PossibleSingleLineCommentStart
+				elif char == "\r":                      tokenKind = cls.TokenKind.PossibleLinebreak
+				elif char == "\n":
+					previousToken = LinebreakToken(previousToken, char, start, start)
+					yield previousToken
+					tokenKind = cls.TokenKind.OtherChars
+				elif char in __FUSEABLE_CHARS__:
+					buffer =        char
+					tokenKind =     cls.TokenKind.FuseableCharacter
+				elif char == "\\":                       tokenKind = cls.TokenKind.PossibleExtendedIdentifierStart
+				elif (char == "`") and isinstance(previousToken, (SpaceToken, LinebreakToken)):
+					tokenKind =     cls.TokenKind.Directive
+				else:
+					tokenKind =     cls.TokenKind.OtherChars
+					previousToken = CharacterToken(previousToken, char, start)
+					yield previousToken
+
+			# State: unknown
+			else:
+				raise TokenizerException("Unknown state.", SourceCodePosition(row, column, absolute))
+
+			if char == "\n":
+				column =  0
+				row +=    1
+		# end for
+
+		if tokenKind is cls.TokenKind.MultiLineComment:
+			raise TokenizerException("End of document before end of multi line comment.", SourceCodePosition(row, column, absolute))
+
+		# close open token when input stream is empty
+		if tokenKind is cls.TokenKind.AlphaChars:
+			previousToken = WordToken(previousToken, buffer, start, SourceCodePosition(row, column, absolute))
+			yield previousToken
+		elif tokenKind is cls.TokenKind.IntegerChars:
+			previousToken = IntegerLiteralToken(previousToken, buffer, start, SourceCodePosition(row, column, absolute))
+			yield previousToken
+		elif tokenKind is cls.TokenKind.RealChars:
+			previousToken = RealLiteralToken(previousToken, buffer, start, SourceCodePosition(row, column, absolute))
+			yield previousToken
+		elif tokenKind is cls.TokenKind.SpaceChars:
+			end = SourceCodePosition(row, column - 1, absolute - 1)
+			if isinstance(previousToken, (LinebreakToken, SingleLineCommentToken, StartOfDocumentToken)):
+				previousToken = IndentationToken(previousToken, buffer, start, end)
+			else:
+				previousToken = SpaceToken(previousToken, buffer, start, end)
+			yield previousToken
+		elif tokenKind is cls.TokenKind.SingleLineComment:
+			previousToken = SingleLineCommentToken(previousToken, buffer, start, SourceCodePosition(row, column, absolute))
+			yield previousToken
+		elif tokenKind in (cls.TokenKind.OtherChars, cls.TokenKind.DelimiterChars):
+			pass
+		else:
+			raise TokenizerException("End of document before ...", SourceCodePosition(row, column, absolute))
+
+		# End of document
+		yield EndOfDocumentToken(previousToken, SourceCodePosition(row, column, absolute))
+
+ + diff --git a/typing/html/pyVHDLParser/Token/__init__.py.html b/typing/html/pyVHDLParser/Token/__init__.py.html new file mode 100644 index 000000000..482209652 --- /dev/null +++ b/typing/html/pyVHDLParser/Token/__init__.py.html @@ -0,0 +1,1098 @@ + + + + + + +

pyVHDLParser.Token

+ + + + + + +
pyVHDLParser/Token/__init__.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+380
+381
+382
+383
+384
+385
+386
+387
+388
+389
+390
+391
+392
+393
+394
+395
+396
+397
+398
+399
+400
+401
+402
+403
+404
+405
+406
+407
+408
+409
+410
+411
+412
+413
+414
+415
+416
+417
+418
+419
+420
+421
+422
+423
+424
+425
+426
+427
+428
+429
+430
+431
+432
+433
+434
+435
+436
+437
+438
+439
+440
+441
+442
+443
+444
+445
+446
+447
+448
+449
+450
+451
+452
+453
+454
+455
+456
+457
+458
+459
+460
+461
+462
+463
+464
+465
+466
+467
+468
+469
+470
+471
+472
+473
+474
+475
+476
+477
+478
+479
+480
+481
+482
+483
+484
+485
+486
+487
+488
+489
+490
+491
+492
+493
+494
+495
+496
+497
+498
+499
+500
+501
+502
+503
+504
+505
+506
+507
+508
+509
+510
+511
+512
+513
+514
+515
+516
+517
+518
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from typing                   import Iterator
+
+from pyTooling.Decorators     import export
+from pyTooling.MetaClasses import ExtendedType
+
+from pyVHDLParser             import SourceCodePosition, StartOfDocument, EndOfDocument, StartOfSnippet, EndOfSnippet
+from pyVHDLParser.Base        import ParserException
+
+
+@export
+def CharacterTranslation(value: str, oneLiner: bool = False) -> str:
+	buffer = ""
+	charIterator = iter(value)
+	try:
+		while char := next(charIterator):
+			if char == "\r":
+				nextChar = next(charIterator)
+				if nextChar == "\n":
+					buffer += "«\\r\\n»"
+					if not oneLiner:
+						buffer += "\n"
+				else:
+					buffer += "«\\n»"
+					if not oneLiner:
+						buffer += "\n"
+
+					if nextChar == "\t":
+						buffer += "«\\n»"
+					else:
+						buffer += nextChar
+			elif char == "\n":
+				buffer += "«\\n»"
+				if not oneLiner:
+					buffer += "\n"
+			elif char == "\t":
+				buffer += "«\\t»"
+			else:
+				buffer += char
+	except StopIteration:
+		pass
+
+	return buffer
+
+
+@export
+class TokenIterator(metaclass=ExtendedType, useSlots=True):
+	startToken:         'Token'
+	currentToken:       'Token'
+	stopToken:          'Token'
+	inclusiveStopToken: bool
+
+	state:              int     #: internal states: 0 = normal, 1 = reached stopToken, 2 = reached EndOfToken
+
+	def __init__(self, startToken: 'Token', inclusiveStartToken: bool=False, inclusiveStopToken: bool=True, stopToken: 'Token'=None):
+		self.startToken =         startToken
+		self.currentToken =       startToken if inclusiveStartToken else startToken.NextToken
+		self.stopToken =          stopToken
+		self.inclusiveStopToken = inclusiveStopToken
+
+		self.state =              0
+
+	def __iter__(self) -> 'TokenIterator':
+		return self
+
+	def __next__(self) -> 'Token':
+		# in last call of '__next__', the last token in the sequence was returned
+		if self.state > 0:
+			raise StopIteration(self.state)
+
+		token = self.currentToken
+		if token is self.stopToken:
+			if not self.inclusiveStopToken:
+				raise StopIteration(1)
+			else:
+				self.currentToken = None
+				self.state = 1
+		elif isinstance(self.currentToken, EndOfToken):
+			if not self.inclusiveStopToken:
+				raise StopIteration(2)
+			else:
+				self.currentToken = None
+				self.state = 2
+		else:
+			self.currentToken = token.NextToken
+			if self.currentToken is None:
+				raise ParserException("Found open end while iterating token sequence.")  # FIXME: how to append last token?
+
+		return token
+
+
+@export
+class TokenReverseIterator(metaclass=ExtendedType, useSlots=True):
+	startToken:         'Token'
+	currentToken:       'Token'
+	stopToken:          'Token'
+	inclusiveStopToken: bool
+
+	state:              int     #: internal states: 0 = normal, 1 = reached stopToken, 2 = reached StartOfToken
+
+	def __init__(self, startToken: 'Token', inclusiveStartToken: bool=False, inclusiveStopToken: bool=True, stopToken: 'Token'=None):
+		self.startToken =         startToken
+		self.currentToken =       startToken if inclusiveStartToken else startToken.PreviousToken
+		self.stopToken =          stopToken
+		self.inclusiveStopToken = inclusiveStopToken
+
+		self.state =              0
+
+	def __iter__(self) -> 'TokenReverseIterator':
+		return self
+
+	def __next__(self) -> 'Token':
+		# in last call of '__next__', the last token in the sequence was returned
+		if self.state > 0:
+			raise StopIteration(self.state)
+
+		token = self.currentToken
+		if token is self.stopToken:
+			self.state = 1
+			if not self.inclusiveStopToken:
+				raise StopIteration(self.state)
+			else:
+				self.currentToken = None
+		elif isinstance(self.currentToken, EndOfToken):
+			self.state = 2
+			if not self.inclusiveStopToken:
+				raise StopIteration(self.state)
+			else:
+				self.currentToken = None
+		else:
+			self.currentToken = token.PreviousToken
+			if self.currentToken is None:
+				raise ParserException("Found open end while iterating token sequence.")  # FIXME: how to append last token?
+
+		return token
+
+
+@export
+class Token(metaclass=ExtendedType, useSlots=True):
+	"""Base-class for all token classes."""
+
+	_previousToken:  'Token'              #: Reference to the previous token
+	NextToken:       'Token'              #: Reference to the next token
+	Start:           SourceCodePosition   #: Position for the token start
+	End:             SourceCodePosition   #: Position for the token end
+
+	def __init__(self, previousToken: 'Token', start: SourceCodePosition, end: SourceCodePosition = None):
+		"""
+		Initializes a token object.
+
+		While initialization, the following additional tasks are done:
+
+		* link this token to previous token.
+		* link previous token to this token.
+		"""
+		previousToken.NextToken = self
+		self._previousToken =     previousToken
+		self.NextToken =          None
+		self.Start =              start
+		self.End =                end
+
+	def __len__(self) -> int:
+		return self.End.Absolute - self.Start.Absolute + 1
+
+	def GetIterator(self, inclusiveStartToken: bool = False, inclusiveStopToken: bool = True, stopToken: 'Token' = None) -> Iterator['Token']:
+		return TokenIterator(self, inclusiveStartToken=inclusiveStartToken, inclusiveStopToken=inclusiveStopToken, stopToken=stopToken)
+
+	def GetReverseIterator(self, inclusiveStartToken: bool = False, inclusiveStopToken: bool = True, stopToken: 'Token' = None) -> Iterator['Token']:
+		return TokenReverseIterator(self, inclusiveStartToken=inclusiveStartToken, inclusiveStopToken=inclusiveStopToken, stopToken=stopToken)
+
+	@property
+	def PreviousToken(self) -> 'Token':
+		return self._previousToken
+
+	@PreviousToken.setter
+	def PreviousToken(self, value: 'Token'):
+		self._previousToken = value
+		value.NextToken =     self
+
+	@property
+	def Length(self) -> int:
+		return len(self)
+
+	def __str__(self) -> str:
+		return f"{self.__class__.__qualname__} at {self.Start!s}"
+
+	def __repr__(self) -> str:
+		return self.__str__()
+
+
+@export
+class ValuedToken(Token):
+	"""
+	Base-class for all *valued* token.
+
+	A ValuedToken contains a :attr:`Value` field for the underlying string from the source code file.
+	"""
+
+	Value: str  #: String value of this token.
+
+	def __init__(self, previousToken: Token, value: str, start: SourceCodePosition, end: SourceCodePosition = None):
+		"""Initializes a *valued* token object."""
+		super().__init__(previousToken, start, end)
+		self.Value = value
+
+	def __iter__(self) -> Iterator[str]:
+		return iter(self.Value)
+
+	def __eq__(self, other: str) -> bool:
+		"""Return true if the internal value is equal to the second operand."""
+		return self.Value == other
+
+	def __ne__(self, other: str) -> bool:
+		"""Return true if the internal value is unequal to the second operand."""
+		return self.Value != other
+
+	def __hash__(self):
+		return super().__hash__()
+
+	def __str__(self) -> str:
+		return self.Value
+
+	def __repr__(self) -> str:
+		value = "'" + CharacterTranslation(self.Value) + "'  "
+		return f"<{self.__class__.__name__: <50}  {value:.<59} at {self.Start!r}>"
+
+
+@export
+class StartOfToken(Token):
+	"""Base-class for meta-tokens representing the start of a token stream."""
+
+	def __init__(self):
+		"""Initializes a StartOfToken object."""
+		self._previousToken = None
+		self.NextToken =      None
+		self.Start =          SourceCodePosition(1, 1, 1)
+		self.End =            None
+
+	def __len__(self) -> int:
+		"""Returns always 0."""
+		return 0
+
+	def __str__(self) -> str:
+		return f"<{self.__class__.__name__}>"
+
+
+@export
+class EndOfToken(Token):
+	"""Base-class for meta-tokens representing the end of a token stream."""
+
+	def __init__(self, previousToken: Token, end: SourceCodePosition):
+		"""Initializes a EndOfToken object."""
+		super().__init__(previousToken, start=end, end=end)
+
+	def __len__(self) -> int:
+		"""Returns always 0."""
+		return 0
+
+	def __str__(self) -> str:
+		return f"<{self.__class__.__name__}>"
+
+
+@export
+class StartOfDocumentToken(StartOfToken, StartOfDocument):
+	pass
+
+
+@export
+class EndOfDocumentToken(EndOfToken, EndOfDocument):
+	pass
+
+
+@export
+class StartOfSnippetToken(StartOfToken, StartOfSnippet):
+	pass
+
+
+@export
+class EndOfSnippetToken(EndOfToken, EndOfSnippet):
+	pass
+
+
+@export
+class CharacterToken(ValuedToken):
+	"""Token representing a single character."""
+
+	def __init__(self, previousToken: Token, value: str, start: SourceCodePosition):
+		"""
+		Initializes a CharacterToken object.
+
+		This class is used for single characters, thus: :attr:`Start` = :attr:`End`.
+		"""
+		super().__init__(previousToken, value, start=start, end=start)
+
+	def __len__(self) -> int:
+		return 1
+
+	def __repr__(self) -> str:
+		char = "'" + CharacterTranslation(self.Value) + "'  "
+		return f"<{self.__class__.__name__: <50}  {char:.<59} at {self.Start!r}>"
+
+
+@export
+class FusedCharacterToken(CharacterToken):
+	"""Token representing a double (or triple) character."""
+
+	def __init__(self, previousToken: Token, value: str, start: SourceCodePosition, end: SourceCodePosition):
+		"""Initializes a FusedCharacterToken object."""
+		super().__init__(previousToken, value, start=start)
+		self.End = end
+
+	# FIXME: check if base-base class implementation could solve this question.
+	def __len__(self) -> int:
+		return len(self.Value)
+
+	def __repr__(self) -> str:
+		char = "'" + self.Value + "'  "
+		return f"<{self.__class__.__name__: <50}  {char:.<59} at {self.Start!r}>"
+
+
+@export
+class SpaceToken(ValuedToken):
+	"""Token representing a space (space or tab)."""
+
+	def __repr__(self) -> str:
+		value = "'" + self.Value + "'  "
+		return f"<{self.__class__.__name__: <50}  {value:.<59} at {self.Start!r}>"
+
+
+@export
+class WordToken(ValuedToken):
+	"""Token representing a string."""
+
+	def __eq__(self, other: str) -> bool:
+		"""Return true if the internal value is equal to the second operand."""
+		return self.Value == other
+
+	def __ne__(self, other: str) -> bool:
+		"""Return true if the internal value is unequal to the second operand."""
+		return self.Value != other
+
+	def __le__(self, other: str) -> bool:
+		"""Return true if the internal value is equivalent (lower case, string compare) to the second operand."""
+		return self.Value.lower() == other
+
+	def __ge__(self, other: str) -> bool:
+		"""Return true if the internal value is equivalent (upper case, string compare) to the second operand."""
+		return self.Value.upper() == other
+
+	def __hash__(self):
+		return super().__hash__()
+
+	def __repr__(self) -> str:
+		value = "'" + self.Value + "'  "
+		return f"<{self.__class__.__name__: <50}  {value:.<59} at {self.Start!r}>"
+
+
+@export
+class VHDLToken(ValuedToken):
+	"""Base-class for all VHDL specific tokens."""
+
+
+@export
+class CommentToken(VHDLToken):
+	"""Base-class for comment tokens."""
+
+	def __repr__(self) -> str:
+		value = self.Value
+		value = value.replace("\n", "\\n")
+		value = value.replace("\r", "\\r")
+		value = value.replace("\t", "\\t")
+		value = "'" + value + "'  "
+		return f"<{self.__class__.__name__: <50}  {value:.<59} at {self.Start!r}>"
+
+
+@export
+class SingleLineCommentToken(CommentToken):
+	"""Token representing a single-line comment."""
+
+
+@export
+class MultiLineCommentToken(CommentToken):
+	"""Token representing a multi-line comment."""
+
+
+@export
+class LiteralToken(VHDLToken):
+	"""Base-class for all literals in VHDL."""
+
+	def __eq__(self, other: str):
+		return self.Value == other
+
+	def __ne__(self, other: str):
+		return self.Value != other
+
+	def __hash__(self):
+		return super().__hash__()
+
+	def __repr__(self) -> str:
+		value = self.Value + "  "
+		return f"<{self.__class__.__name__: <50}  {value:.<59} at {self.Start!r}>"
+
+
+@export
+class IntegerLiteralToken(LiteralToken):
+	"""Token representing an integer literal."""
+
+
+@export
+class RealLiteralToken(LiteralToken):
+	"""Token representing a real literal."""
+
+
+@export
+class CharacterLiteralToken(LiteralToken):
+	"""Token representing a character literal in VHDL."""
+
+	def __init__(self, previousToken: Token, value: str, start: SourceCodePosition, end: SourceCodePosition):
+		"""
+		Initializes a CharacterLiteralToken object.
+
+		Single quotes are omitted in the :attr:`Value`.
+		"""
+		super().__init__(previousToken, value[1:-1], start=start, end=end)
+
+	def __repr__(self) -> str:
+		value = "'" + self.Value + "'  "
+		return f"<{self.__class__.__name__: <50}  {value:.<59} at {self.Start!r}>"
+
+
+@export
+class StringLiteralToken(LiteralToken):
+	"""Token representing a string literal in VHDL."""
+
+	def __init__(self, previousToken: Token, value: str, start: SourceCodePosition, end: SourceCodePosition):
+		"""
+		Initializes a CharacterLiteralToken object.
+
+		Double quotes are omitted in the :attr:`Value`.
+		"""
+		super().__init__(previousToken, value[1:-1], start=start, end=end)
+
+	def __repr__(self) -> str:
+		value = "\"" + self.Value + "\"  "
+		return f"<{self.__class__.__name__: <50}  {value:.<59} at {self.Start!r}>"
+
+
+@export
+class BitStringLiteralToken(LiteralToken):
+	"""Token representing a bit-string literal in VHDL."""
+
+	def __init__(self, previousToken: Token, value: str, start: SourceCodePosition, end: SourceCodePosition):
+		"""
+		Initializes a BitStringLiteralToken object.
+
+		Double quotes are omitted in the :attr:`Value`.
+		"""
+		super().__init__(previousToken, value[1:-1], start=start, end=end)
+
+	def __repr__(self) -> str:
+		value = "\"" + self.Value + "\"  "
+		return f"<{self.__class__.__name__: <50}  {value:.<59} at {self.Start!r}>"
+
+
+@export
+class ExtendedIdentifier(VHDLToken):
+	"""Token representing an extended identifier in VHDL."""
+
+
+@export
+class DirectiveToken(CommentToken):
+	pass
+
+
+@export
+class LinebreakToken(VHDLToken):
+	"""Token representing a linebreak in the source code file."""
+
+	def __repr__(self) -> str:
+		return f"<{self.__class__.__name__ + '  ':-<111} at {self.Start!r}>"
+
+
+@export
+class IndentationToken(SpaceToken):
+	"""Token representing an indentation in a source code line."""
+
+	def __repr__(self) -> str:
+		value = self.Value
+		value = value.replace("\t", "\\t")
+		return f"""<{self.__class__.__name__: <50}  {"'" + value + "'  ":.<59} at {self.Start!r}>"""
+
+ + diff --git a/typing/html/pyVHDLParser/TypeSystem/Package.py.html b/typing/html/pyVHDLParser/TypeSystem/Package.py.html new file mode 100644 index 000000000..25b12c58d --- /dev/null +++ b/typing/html/pyVHDLParser/TypeSystem/Package.py.html @@ -0,0 +1,235 @@ + + + + + + +

pyVHDLParser.TypeSystem.Package

+ + + + + + +
pyVHDLParser/TypeSystem/Package.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyTooling.Decorators             import export
+
+
+@export
+class Parameter:
+	def __init__(self, name, subtype):
+		self._name = name
+		self._subtype = subtype
+
+
+@export
+class SubProgramDeclaration:
+	def __init__(self, name, parameters):
+		self._name = name
+		self._parameters = parameters
+
+
+@export
+class ProcedureDeclaration(SubProgramDeclaration):
+	pass
+
+@export
+class FunctionDeclaration(SubProgramDeclaration):
+	def __init__(self, name, parameters, returnType):
+		super().__init__(name, parameters)
+		self._returnType = returnType
+
+
+@export
+class SubProgram:
+	def __init__(self, subprogramDeclaration):
+		self._subprogramDeclaration = subprogramDeclaration
+
+
+@export
+class Procedure(SubProgram):
+	def __init__(self, procedureDeclaration):
+		super().__init__(procedureDeclaration)
+
+
+@export
+class Function(SubProgram):
+	def __init__(self, functionDeclaration, function):
+		super().__init__(functionDeclaration)
+		self._function = function
+
+	def Call(self, arguments):
+		return self._function(arguments)
+
+
+@export
+class PackageDeclation:
+	def __init__(self, name, publicMembers):
+		self._name =            name
+		self._publicMembers =   publicMembers
+
+@export
+class PackageBody:
+	def __init__(self, declaration, privateMembers):
+		self._declaration =     declaration
+		self._privateMembers =  privateMembers
+
+@export
+class Package:
+	def __init__(self, declaration, body):
+		self._declaration =     declaration
+		self._body =            body
+
+ + diff --git a/typing/html/pyVHDLParser/TypeSystem/TypeSystem.py.html b/typing/html/pyVHDLParser/TypeSystem/TypeSystem.py.html new file mode 100644 index 000000000..5246767e7 --- /dev/null +++ b/typing/html/pyVHDLParser/TypeSystem/TypeSystem.py.html @@ -0,0 +1,611 @@ + + + + + + +

pyVHDLParser.TypeSystem.TypeSystem

+ + + + + + +
pyVHDLParser/TypeSystem/TypeSystem.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from enum                     import Enum, unique
+
+from pyTooling.Decorators     import export
+
+
+@export
+class _Attributes:
+	pass
+
+
+@export
+class Type:
+	def __init__(self, name):
+		self._name =      name
+
+
+@export
+class IntegerType(Type):
+	class _Attributes(_Attributes):
+		def __init__(self, integer):
+			self._int = integer
+
+		def Left(self):
+			return -2**31
+
+		def Right(self):
+			return 2**31 - 1
+
+
+	def __init__(self, name):
+		super().__init__(name)
+
+
+@export
+class RealType(Type):
+	def __init__(self, name):
+		super().__init__(name)
+
+
+@export
+class EnumerationLiteral:
+	def __init__(self, enum, name, pos):
+		self._enum =  enum
+		self.Name =   name
+		self.Pos =    pos
+
+	def __repr__(self):
+		return "{enum!r}.{name}".format(enum=self._enum, name=self.Name)
+
+	def __str__(self):
+		return self.Name
+
+
+@export
+class EnumerationType(Type):
+	class _Attributes(_Attributes):
+		def __init__(self, enum):
+			self._enum = enum
+
+		def Low(self):
+			return self._enum._range.Left
+
+		def High(self):
+			return self._enum._range.Right
+
+		def Pos(self, value):
+			for pos,enumValue in enumerate(self._enum._enumeration):
+				if enumValue == value:
+					return pos
+
+		def Val(self, pos):
+			return self._enum._enumeration[pos]
+
+		def Value(self, str):
+			for enumValue in self._enum._enumeration:
+				if enumValue.Name == str:
+					return enumValue
+
+
+	def __init__(self, name, enumerationValues):
+		super().__init__(name)
+		self._enumeration =   tuple([EnumerationLiteral(self, value, pos) for pos,value in enumerate(enumerationValues)])
+		self._range =         Range(self, Direction.To, self._enumeration[0], self._enumeration[-1])
+		self.Attributes =     self._Attributes(self)
+
+	def __repr__(self):
+		return self._name
+
+	def __str__(self):
+		return self._name
+
+
+@export
+class ArrayType(Type):
+	def __init__(self, name, ranges, elementType):
+		super().__init__(name)
+		self._ranges =        ranges
+		self._elementType =   elementType
+
+	@property
+	def IsConstrained(self):
+		for range in self._ranges:
+			if not range.IsConstrained:
+				return False
+		return self._elementType.IsConstrained
+
+@export
+class RecordMember:
+	def __init__(self, name, elementType):
+		self._name =          None
+		self._elementType =   elementType
+
+	@property
+	def IsConstrained(self):
+		return self._elementType.IsConstrained
+
+
+@export
+class RecordType(Type):
+	def __init__(self, name, members):
+		super().__init__(name)
+		self._members =       members
+
+	@property
+	def IsContrained(self):
+		for member in self._members:
+			if not member.IsConstrained:
+				return False
+		return True
+
+
+@export
+class Subtype:
+	class _Attributes(_Attributes):
+		def __init__(self, subtype):
+			self._subtype = subtype
+
+		def Low(self):
+			raise NotImplementedError()
+
+		def High(self):
+			raise NotImplementedError()
+
+
+	def __init__(self, name, subtype, range=None, resolutionFunction=None):
+		self._name =                name
+		self._subtype =             subtype
+		self._range =               range
+		self._resolutionFunction =  resolutionFunction
+		self.Attributes =           self._Attributes(self)
+
+	@property
+	def IsResolved(self):
+		return (self._resolutionFunction is not None)
+
+	@property
+	def IsConstrained(self):
+		return (self._range is not None)
+
+
+@export
+class IntegerSubtype(Subtype):
+	class _Attributes(Subtype._Attributes):
+		def Left(self):
+			return self._subtype._range.Left
+
+		def Right(self):
+			return self._subtype._range.Right
+
+
+@export
+class EnumerationSubtype(Subtype):
+	class _Attributes(Subtype._Attributes):
+		def Low(self):
+			return self._subtype._range.Left
+
+		def High(self):
+			return self._subtype._range.Right
+
+		def Value(self, str):
+			return self._subtype._subtype.Attributes.Value(str)
+
+
+	def __init__(self, name, subtype, range=None, resolutionFunction=None):
+		if range is None:
+			range = subtype._range
+		super().__init__(name, subtype, range, resolutionFunction)
+
+
+@export
+@unique
+class Direction(Enum):
+	To =      0
+	Downto =  1
+
+
+@export
+class Range:
+	def __init__(self, baseType, direction=None, left=None, right=None):
+		self._baseType =  baseType
+
+		if direction is None:
+			self.Direction = None
+			self.Left =      None
+			self.Right =     None
+		else:
+			self.Direction = direction
+			self.Left =      left
+			self.Right =     right
+
+	@property
+	def IsConstrained(self):
+		return (self.Direction is not None)
+
+
+@export
+class TypeInstance:
+	pass
+
+@export
+class Array(TypeInstance):
+	def __init__(self, arrayType):
+		self._arrayType = arrayType
+
+
+
+ + diff --git a/typing/html/pyVHDLParser/TypeSystem/__init__.py.html b/typing/html/pyVHDLParser/TypeSystem/__init__.py.html new file mode 100644 index 000000000..1a08a049c --- /dev/null +++ b/typing/html/pyVHDLParser/TypeSystem/__init__.py.html @@ -0,0 +1,74 @@ + + + + + + +

pyVHDLParser.TypeSystem

+ + + + + + +
pyVHDLParser/TypeSystem/__init__.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+
+ + diff --git a/typing/html/pyVHDLParser/TypeSystem/std.py.html b/typing/html/pyVHDLParser/TypeSystem/std.py.html new file mode 100644 index 000000000..15f08a3f7 --- /dev/null +++ b/typing/html/pyVHDLParser/TypeSystem/std.py.html @@ -0,0 +1,182 @@ + + + + + + +

pyVHDLParser.TypeSystem.std

+ + + + + + +
pyVHDLParser/TypeSystem/std.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyVHDLParser.TypeSystem.Package    import PackageDeclation, PackageBody, Package
+from pyVHDLParser.TypeSystem.TypeSystem import EnumerationType, ArrayType, IntegerType, RealType, Direction, Subtype, Range, IntegerSubtype
+
+
+Boolean_Values = [
+  "FALSE", #
+	"TRUE"   #
+]
+
+Boolean =               EnumerationType("boolean", Boolean_Values)
+
+
+UniversatInteger =      IntegerType("universat_integer")
+Integer =               IntegerSubtype("integer",  UniversatInteger, Range(UniversatInteger, Direction.To, -2**31, 2*31))
+Natural =               IntegerSubtype("natural",  Integer, Range(UniversatInteger, Direction.To, 0, Integer.Attributes.Right))
+Positive =              IntegerSubtype("positive", Integer, Range(UniversatInteger, Direction.To, 1, Integer.Attributes.Right))
+
+UniversatReal =         RealType("universat_real")
+Real =                  IntegerSubtype("real", UniversatReal, Range(UniversatReal, Direction.To, -10.0, 10.0))
+
+
+# if vhdlVersion < VHDLVersion.VHDL2008:
+# 	Std_Decl = PackageDeclation("std", [
+# 		Boolean,
+# 		Integer,
+# 		Positive,
+# 		Natural
+# 	])
+# 	Std_Body = PackageBody(Std_Decl, [])
+#
+# elif vhdlVersion >= VHDLVersion.VHDL2008:
+Boolean_Vector =      ArrayType("boolean_vector", Range(Natural), Boolean)
+Integer_Vector =      ArrayType("integer_vector", Range(Natural), Integer)
+
+
+Std_Decl =              PackageDeclation("std", [
+	Boolean,
+	Boolean_Vector,
+	Integer,
+	Positive,
+	Natural
+])
+Std_Body =              PackageBody(Std_Decl, [])
+
+
+
+Std =                   Package(Std_Decl, Std_Body)
+
+
+ + diff --git a/typing/html/pyVHDLParser/TypeSystem/std_logic_1164.py.html b/typing/html/pyVHDLParser/TypeSystem/std_logic_1164.py.html new file mode 100644 index 000000000..1780f59e4 --- /dev/null +++ b/typing/html/pyVHDLParser/TypeSystem/std_logic_1164.py.html @@ -0,0 +1,256 @@ + + + + + + +

pyVHDLParser.TypeSystem.std_logic_1164

+ + + + + + +
pyVHDLParser/TypeSystem/std_logic_1164.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+from pyVHDLParser.TypeSystem.Package    import Parameter, FunctionDeclaration, Function, PackageDeclation, PackageBody, Package
+from pyVHDLParser.TypeSystem.TypeSystem import EnumerationType, ArrayType, Range, Subtype, EnumerationSubtype
+from pyVHDLParser.TypeSystem.std        import Natural
+
+
+Std_ULogic_Values = [
+	"U",  # Uninitialized
+  "X",  # Forcing  Unknown
+  "0",  # Forcing  0
+  "1",  # Forcing  1
+  "Z",  # High Impedance
+  "W",  # Weak     Unknown
+  "L",  # Weak     0
+  "H",  # Weak     1
+  "-"   # Don't care
+]
+
+Std_ULogic =          EnumerationType("std_ulogic", Std_ULogic_Values)
+Std_ULogic_U =        Std_ULogic.Attributes.Value("U")
+Std_ULogic_Z =        Std_ULogic.Attributes.Value("Z")
+
+Std_ULogic_Vector =   ArrayType("std_ulogic_vector", Range(Natural), Std_ULogic)
+
+Func_Resolved_Decl =  FunctionDeclaration("resolved", [
+	Parameter("s", Std_ULogic_Vector)
+], Std_ULogic)
+
+RESOLUTION_TABLE = (
+	## ---------------------------------------------------------
+  ## |  U    X    0    1    Z    W    L    H    -        |   |
+  ## ---------------------------------------------------------
+			('U', 'U', 'U', 'U', 'U', 'U', 'U', 'U', 'U'),  ## | U |
+			('U', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X'),  ## | X |
+			('U', 'X', '0', 'X', '0', '0', '0', '0', 'X'),  ## | 0 |
+			('U', 'X', 'X', '1', '1', '1', '1', '1', 'X'),  ## | 1 |
+			('U', 'X', '0', '1', 'Z', 'W', 'L', 'H', 'X'),  ## | Z |
+			('U', 'X', '0', '1', 'W', 'W', 'W', 'W', 'X'),  ## | W |
+			('U', 'X', '0', '1', 'L', 'W', 'L', 'W', 'X'),  ## | L |
+			('U', 'X', '0', '1', 'H', 'W', 'W', 'H', 'X'),  ## | H |
+			('U', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X')   ## | - |
+	)
+
+def Resolution(arguments):
+	sources = arguments[0]
+	if sources.Attributes.Length == 1:
+		return sources[sources.Attributes.Low]
+	else:
+		result = Std_ULogic_Z.Pos
+		# result = Std_ULogic.Attributes.Pos(Std_ULogic_Z)
+		for source in sources:
+			idx2 =   source.Pos
+			# idx2 =   Std_ULogic.Attributes.Pos(source)
+			result = RESOLUTION_TABLE[result][idx2]
+
+		return Std_Logic.Attributes.Val(result)
+
+
+Func_Resolved =           Function(Func_Resolved_Decl, Resolution)
+
+Std_Logic =               EnumerationSubtype("std_logic", Std_ULogic, resolutionFunction=Func_Resolved)
+
+# if vhdlVersion < VHDLVersion.VHDL2008:
+Std_Logic_Vector =      ArrayType("std_logic_vector", Range(Natural), Std_Logic)
+# else:
+# 	pass
+# 	# Std_Logic_Vector =      ArraySubtype("std_logic_vector", Std_ULogic_Vector, resolutionFunction=Func_Resolved)
+
+
+
+Std_Logic_1164_Decl =     PackageDeclation("std_logic_1164", [
+	Std_ULogic,
+	Std_ULogic_Vector,
+	Func_Resolved_Decl,
+	Std_Logic,
+	Std_Logic_Vector
+])
+Std_Logic_1164_Body =     PackageBody(Std_Logic_1164_Decl, [
+	Func_Resolved
+])
+
+Std_Logic_1164 =          Package(Std_Logic_1164_Decl, Std_Logic_1164_Body)
+
+ + diff --git a/typing/html/pyVHDLParser/__init__.py.html b/typing/html/pyVHDLParser/__init__.py.html new file mode 100644 index 000000000..e0a6b346c --- /dev/null +++ b/typing/html/pyVHDLParser/__init__.py.html @@ -0,0 +1,209 @@ + + + + + + +

pyVHDLParser

+ + + + + + +
pyVHDLParser/__init__.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+
# ==================================================================================================================== #
+#            __     ___   _ ____  _     ____                                                                           #
+#  _ __  _   \ \   / / | | |  _ \| |   |  _ \ __ _ _ __ ___  ___ _ __                                                  #
+# | '_ \| | | \ \ / /| |_| | | | | |   | |_) / _` | '__/ __|/ _ \ '__|                                                 #
+# | |_) | |_| |\ V / |  _  | |_| | |___|  __/ (_| | |  \__ \  __/ |                                                    #
+# | .__/ \__, | \_/  |_| |_|____/|_____|_|   \__,_|_|  |___/\___|_|                                                    #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany                                                               #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+# ==================================================================================================================== #
+#
+"""\
+A streaming-based VHDL parser.
+"""
+__author__ =    "Patrick Lehmann"
+__email__ =     "Paebbels@gmail.com"
+__copyright__ = "Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany\nCopyright 2016-2017 Patrick Lehmann - Dresden, Germany"
+__license__ =   "Apache License, Version 2.0"
+__version__ =   "0.8.0"
+__keywords__ =  ["parser", "vhdl", "code generator", "hdl"]
+
+from pyTooling.Decorators import export
+from pyTooling.MetaClasses import ExtendedType
+
+
+@export
+class SourceCodePosition(metaclass=ExtendedType, useSlots=True):
+	"""Represent a position (row, column, absolute) in a source code file."""
+
+	Row:       int    #: Row in the source code file
+	Column:    int    #: Column (character) in the source code file's line
+	Absolute:  int    #: Absolute character position regardless of linebreaks.
+
+	def __init__(self, row: int, column: int, absolute: int):
+		"""Initializes a SourceCodePosition object."""
+
+		self.Row =      row
+		self.Column =   column
+		self.Absolute = absolute
+
+	def __repr__(self) -> str:
+		return "{0}:{1}".format(self.Row, self.Column)
+
+	def __str__(self) -> str:
+		return "(line: {0: >3}, col: {1: >2})".format(self.Row, self.Column)
+
+
+@export
+class StartOf(metaclass=ExtendedType, useSlots=True):
+	"""Base-class (mixin) for all StartOf*** classes."""
+
+
+@export
+class StartOfDocument(StartOf):
+	"""Base-class (mixin) for all StartOf***Document classes."""
+
+
+@export
+class StartOfSnippet(StartOf):
+	"""Base-class (mixin) for all StartOf***Snippet classes."""
+
+
+@export
+class EndOf(metaclass=ExtendedType, useSlots=True):
+	"""Base-class (mixin) for all EndOf*** classes."""
+
+
+@export
+class EndOfDocument(EndOf):
+	"""Base-class (mixin) for all EndOf***Document classes."""
+
+
+@export
+class EndOfSnippet(EndOf):
+	"""Base-class (mixin) for all EndOf***Snippet classes."""
+
+ + diff --git a/typing/index.html b/typing/index.html new file mode 100644 index 000000000..56b0553aa --- /dev/null +++ b/typing/index.html @@ -0,0 +1,674 @@ + + + + + + +

Mypy Type Check Coverage Summary

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary from index
FileImprecisionLines
Total38.31% imprecise47272 LOC
pyVHDLParser0.00% imprecise93 LOC
pyVHDLParser.ANTLR3.VHDLLexer0.00% imprecise130 LOC
pyVHDLParser.ANTLR3.VHDLParser0.00% imprecise3 LOC
pyVHDLParser.ANTLR415.92% imprecise201 LOC
pyVHDLParser.ANTLR4.VHDLLexer60.80% imprecise648 LOC
pyVHDLParser.ANTLR4.VHDLParser67.39% imprecise21110 LOC
pyVHDLParser.ANTLR4.VHDLParserVisitor24.75% imprecise1083 LOC
pyVHDLParser.ANTLR4.Visitor33.93% imprecise168 LOC
pyVHDLParser.Base0.00% imprecise44 LOC
pyVHDLParser.Blocks11.17% imprecise546 LOC
pyVHDLParser.Blocks.Assignment0.00% imprecise29 LOC
pyVHDLParser.Blocks.Assignment.SignalAssignment8.42% imprecise190 LOC
pyVHDLParser.Blocks.Assignment.VariableAssignment8.42% imprecise190 LOC
pyVHDLParser.Blocks.Attribute0.00% imprecise29 LOC
pyVHDLParser.Blocks.Attribute.AttributeDeclaration9.73% imprecise452 LOC
pyVHDLParser.Blocks.Attribute.AttributeSpecification9.73% imprecise452 LOC
pyVHDLParser.Blocks.Comment6.19% imprecise113 LOC
pyVHDLParser.Blocks.Common22.22% imprecise90 LOC
pyVHDLParser.Blocks.ControlStructure0.00% imprecise29 LOC
pyVHDLParser.Blocks.ControlStructure.Case10.86% imprecise267 LOC
pyVHDLParser.Blocks.ControlStructure.Exit9.61% imprecise229 LOC
pyVHDLParser.Blocks.ControlStructure.ForLoop11.30% imprecise230 LOC
pyVHDLParser.Blocks.ControlStructure.If10.19% imprecise216 LOC
pyVHDLParser.Blocks.ControlStructure.Next9.61% imprecise229 LOC
pyVHDLParser.Blocks.ControlStructure.Null7.87% imprecise89 LOC
pyVHDLParser.Blocks.ControlStructure.Return6.84% imprecise117 LOC
pyVHDLParser.Blocks.ControlStructure.WhileLoop8.86% imprecise237 LOC
pyVHDLParser.Blocks.Exception0.00% imprecise29 LOC
pyVHDLParser.Blocks.Expression9.46% imprecise814 LOC
pyVHDLParser.Blocks.Generate0.00% imprecise40 LOC
pyVHDLParser.Blocks.Generate.CaseGenerate8.98% imprecise245 LOC
pyVHDLParser.Blocks.Generate.ForGenerate8.68% imprecise288 LOC
pyVHDLParser.Blocks.Generate.IfGenerate9.70% imprecise773 LOC
pyVHDLParser.Blocks.Generic26.98% imprecise278 LOC
pyVHDLParser.Blocks.Generic110.63% imprecise395 LOC
pyVHDLParser.Blocks.Instantiation0.00% imprecise29 LOC
pyVHDLParser.Blocks.Instantiation.EntityInstantiation8.21% imprecise195 LOC
pyVHDLParser.Blocks.Instantiation.FunctionInstantiation7.05% imprecise227 LOC
pyVHDLParser.Blocks.Instantiation.PackageInstantiation7.05% imprecise227 LOC
pyVHDLParser.Blocks.Instantiation.ProcedureInstantiation7.05% imprecise227 LOC
pyVHDLParser.Blocks.InterfaceObject13.38% imprecise538 LOC
pyVHDLParser.Blocks.List0.00% imprecise29 LOC
pyVHDLParser.Blocks.List.GenericList6.64% imprecise226 LOC
pyVHDLParser.Blocks.List.GenericMapList7.48% imprecise294 LOC
pyVHDLParser.Blocks.List.ParameterList8.59% imprecise256 LOC
pyVHDLParser.Blocks.List.PortList7.73% imprecise194 LOC
pyVHDLParser.Blocks.List.PortMapList8.42% imprecise297 LOC
pyVHDLParser.Blocks.List.SensitivityList10.99% imprecise191 LOC
pyVHDLParser.Blocks.Object13.33% imprecise240 LOC
pyVHDLParser.Blocks.Object.Constant4.23% imprecise71 LOC
pyVHDLParser.Blocks.Object.File0.00% imprecise29 LOC
pyVHDLParser.Blocks.Object.SharedVariable11.66% imprecise163 LOC
pyVHDLParser.Blocks.Object.Signal4.23% imprecise71 LOC
pyVHDLParser.Blocks.Object.Variable4.23% imprecise71 LOC
pyVHDLParser.Blocks.Reference0.00% imprecise29 LOC
pyVHDLParser.Blocks.Reference.Context16.84% imprecise190 LOC
pyVHDLParser.Blocks.Reference.Library8.41% imprecise214 LOC
pyVHDLParser.Blocks.Reference.Use8.99% imprecise456 LOC
pyVHDLParser.Blocks.Reporting0.00% imprecise29 LOC
pyVHDLParser.Blocks.Reporting.Assert14.24% imprecise337 LOC
pyVHDLParser.Blocks.Reporting.Report13.11% imprecise244 LOC
pyVHDLParser.Blocks.Sequential0.00% imprecise29 LOC
pyVHDLParser.Blocks.Sequential.Function12.53% imprecise407 LOC
pyVHDLParser.Blocks.Sequential.Package12.35% imprecise162 LOC
pyVHDLParser.Blocks.Sequential.PackageBody10.96% imprecise146 LOC
pyVHDLParser.Blocks.Sequential.Procedure9.69% imprecise258 LOC
pyVHDLParser.Blocks.Sequential.Process17.06% imprecise252 LOC
pyVHDLParser.Blocks.Structural0.00% imprecise29 LOC
pyVHDLParser.Blocks.Structural.Architecture12.60% imprecise254 LOC
pyVHDLParser.Blocks.Structural.Block8.13% imprecise209 LOC
pyVHDLParser.Blocks.Structural.Component16.49% imprecise194 LOC
pyVHDLParser.Blocks.Structural.Configuration16.59% imprecise205 LOC
pyVHDLParser.Blocks.Structural.Entity12.28% imprecise171 LOC
pyVHDLParser.Blocks.Type0.00% imprecise29 LOC
pyVHDLParser.Blocks.Type.ResolutionIndication8.16% imprecise49 LOC
pyVHDLParser.Blocks.Type.Subtype9.73% imprecise452 LOC
pyVHDLParser.Blocks.Type.SubtypeIndication0.00% imprecise47 LOC
pyVHDLParser.Blocks.Type.Type9.73% imprecise452 LOC
pyVHDLParser.CLI11.76% imprecise102 LOC
pyVHDLParser.CLI.ANTLR30.77% imprecise156 LOC
pyVHDLParser.CLI.Block23.39% imprecise218 LOC
pyVHDLParser.CLI.CodeDOM13.43% imprecise67 LOC
pyVHDLParser.CLI.GraphML64.66% imprecise133 LOC
pyVHDLParser.CLI.Group28.03% imprecise132 LOC
pyVHDLParser.CLI.Token27.98% imprecise193 LOC
pyVHDLParser.CLI.VHDLParser34.31% imprecise239 LOC
pyVHDLParser.Decorators23.14% imprecise121 LOC
pyVHDLParser.DocumentModel31.87% imprecise182 LOC
pyVHDLParser.DocumentModel.DesignUnit0.00% imprecise29 LOC
pyVHDLParser.DocumentModel.DesignUnit.Architecture31.93% imprecise119 LOC
pyVHDLParser.DocumentModel.DesignUnit.Context43.43% imprecise175 LOC
pyVHDLParser.DocumentModel.DesignUnit.Entity40.86% imprecise186 LOC
pyVHDLParser.DocumentModel.DesignUnit.Package48.85% imprecise174 LOC
pyVHDLParser.DocumentModel.DesignUnit.PackageBody44.21% imprecise190 LOC
pyVHDLParser.DocumentModel.ObjectDeclaration26.25% imprecise80 LOC
pyVHDLParser.DocumentModel.Reference46.61% imprecise118 LOC
pyVHDLParser.DocumentModel.Sequential0.00% imprecise29 LOC
pyVHDLParser.DocumentModel.Sequential.Function39.13% imprecise161 LOC
pyVHDLParser.Filters0.00% imprecise29 LOC
pyVHDLParser.Filters.Comment13.33% imprecise75 LOC
pyVHDLParser.Groups10.77% imprecise455 LOC
pyVHDLParser.Groups.Comment16.67% imprecise60 LOC
pyVHDLParser.Groups.Concurrent10.84% imprecise83 LOC
pyVHDLParser.Groups.DesignUnit13.18% imprecise713 LOC
pyVHDLParser.Groups.List12.22% imprecise311 LOC
pyVHDLParser.Groups.Object12.37% imprecise97 LOC
pyVHDLParser.Groups.Reference13.56% imprecise59 LOC
pyVHDLParser.Groups.Sequential0.00% imprecise29 LOC
pyVHDLParser.Groups.Sequential.Function9.40% imprecise266 LOC
pyVHDLParser.Groups.Sequential.Procedure13.69% imprecise241 LOC
pyVHDLParser.Groups.Sequential.Process13.35% imprecise322 LOC
pyVHDLParser.LanguageModel0.00% imprecise44 LOC
pyVHDLParser.LanguageModel.DesignUnit0.00% imprecise65 LOC
pyVHDLParser.LanguageModel.Expression0.00% imprecise36 LOC
pyVHDLParser.LanguageModel.InterfaceItem0.00% imprecise61 LOC
pyVHDLParser.LanguageModel.Reference0.00% imprecise43 LOC
pyVHDLParser.NetlistModel0.00% imprecise29 LOC
pyVHDLParser.NetlistModel.NetlistModel0.00% imprecise50 LOC
pyVHDLParser.SimulationModel0.00% imprecise29 LOC
pyVHDLParser.SimulationModel.EventSystem33.68% imprecise95 LOC
pyVHDLParser.SimulationModel.SimulationModel42.31% imprecise156 LOC
pyVHDLParser.StyleChecks0.00% imprecise29 LOC
pyVHDLParser.Token2.90% imprecise518 LOC
pyVHDLParser.Token.Keywords0.30% imprecise999 LOC
pyVHDLParser.Token.Parser0.19% imprecise513 LOC
pyVHDLParser.TypeSystem0.00% imprecise29 LOC
pyVHDLParser.TypeSystem.Package28.12% imprecise96 LOC
pyVHDLParser.TypeSystem.TypeSystem43.31% imprecise254 LOC
pyVHDLParser.TypeSystem.std15.58% imprecise77 LOC
pyVHDLParser.TypeSystem.std_logic_116419.09% imprecise110 LOC
+ + diff --git a/typing/mypy-html.css b/typing/mypy-html.css new file mode 100644 index 000000000..ec2bdf9c9 --- /dev/null +++ b/typing/mypy-html.css @@ -0,0 +1,104 @@ +/* CSS for type check coverage reports */ + +/* + Used by both summary and file. +*/ +body { + font-family: "Helvetica Neue", sans-serif; +} + +/* + Used only by summary. +*/ + +h1 { + text-align: center; + font-size: 135%; + margin: 20px; +} + +table.summary { + border-collapse: collapse; + margin-left: 7%; + margin-right: 7%; + width: 85%; +} + +table caption { + margin: 1em; +} + +table.summary, tr.summary, th.summary, td.summary { + border: 1px solid #aaa; +} + +th.summary, td.summary { + padding: 0.4em; +} + +td.summary a { + text-decoration: none; +} + +.summary-quality-0 { + background-color: #dfd; +} + +.summary-quality-1 { + background-color: #ffa; +} + +.summary-quality-2 { + background-color: #faa; +} + +td.summary-filename, th.summary-filename { + text-align: left; +} + +td.summary-filename { + width: 50%; +} + +.summary-precision { + text-align: center; +} + +.summary-lines { + text-align: center; +} + +/* + Used only by file. +*/ + +td.table-lines { + text-align: right; + padding-right: 0.5em; +} + +td.table-code { } + +span.lineno { + text-align: right; +} + +a:link.lineno, a:visited.lineno { + color: #999; text-decoration: none; +} + +a:hover.lineno, a:active.lineno { + color: #000; text-decoration: underline; +} + +.line-empty, .line-precise { + background-color: #dfd; +} + +.line-imprecise { + background-color: #ffa; +} + +.line-any, .line-unanalyzed { + background-color: #faa; +}